diff --git a/src/js/bun.lockb b/src/js/bun.lockb new file mode 100755 index 0000000000..a6a09a5d91 Binary files /dev/null and b/src/js/bun.lockb differ diff --git a/src/js/eslint.config.mjs b/src/js/eslint.config.mjs new file mode 100644 index 0000000000..0d29650326 --- /dev/null +++ b/src/js/eslint.config.mjs @@ -0,0 +1,11 @@ +import globals from "globals"; +import tseslint from "typescript-eslint"; + +export default [ + { files: ["internal/**/*.ts"] }, + { files: ["node/**/*.ts"] }, + { ignores: ["thirdparty"] }, + { languageOptions: { globals: globals.browser } }, + { languageOptions: { parser: tseslint.parser } }, + { rules: { "no-unused-vars": "error" } }, +]; diff --git a/src/js/eslint.fmt.mjs b/src/js/eslint.fmt.mjs new file mode 100644 index 0000000000..cc0d1598ab --- /dev/null +++ b/src/js/eslint.fmt.mjs @@ -0,0 +1,18 @@ +export default function (results) { + const sgr = c => "\x1b" + "[" + c + "m"; + const reset = sgr(0); + const gray = s => sgr(2) + s + reset; + const green = s => sgr(32) + s + reset; + const cyan = s => sgr(36) + s + reset; + + for (const item of results) { + if (item.messages.length === 0) { + continue; + } + for (const jtem of item.messages) { + console.log( + `.${item.filePath.substring(process.cwd().length)}:${green(jtem.line)}:${cyan(jtem.column)}: ${gray(jtem.ruleId)} ${jtem.message}`, + ); + } + } +} diff --git a/src/js/package.json b/src/js/package.json new file mode 100644 index 0000000000..52669bab5a --- /dev/null +++ b/src/js/package.json @@ -0,0 +1,8 @@ +{ + "scripts": { + "lint": "bun run eslint --format ./eslint.fmt.mjs" + }, + "dependencies": { + "typescript-eslint": "^8.8.0" + } +}