diff --git a/libraries/codemirror/eslint.js b/libraries/codemirror/eslint.js index 55f367884..403cb4e54 100644 --- a/libraries/codemirror/eslint.js +++ b/libraries/codemirror/eslint.js @@ -41,7 +41,7 @@ return []; } - const errors = await glob.linter(text); + const errors = await glob.linter(text, glob.getActiveContextNote().mime); console.log(errors); diff --git a/src/public/app/services/eslint.spec.ts b/src/public/app/services/eslint.spec.ts index cc21746bd..74e6edabd 100644 --- a/src/public/app/services/eslint.spec.ts +++ b/src/public/app/services/eslint.spec.ts @@ -45,4 +45,9 @@ describe("Linter", () => { } ]); }); + + it("supports JQuery global", async () => { + expect(await lint(`$("
");`, "application/javascript;env=backend")).toMatchObject([{ "ruleId": "no-undef" }]); + expect(await lint(`console.log($("
"));`, "application/javascript;env=frontend")).toStrictEqual([]); + }); }); diff --git a/src/public/app/services/eslint.ts b/src/public/app/services/eslint.ts index 33949b116..6ccb0c9bf 100644 --- a/src/public/app/services/eslint.ts +++ b/src/public/app/services/eslint.ts @@ -1,8 +1,19 @@ -export async function lint(code: string) { +export async function lint(code: string, mimeType: string) { const Linter = (await import("eslint-linter-browserify")).Linter; const js = (await import("@eslint/js")); - const globals = (await import("globals")); + const globalDefinitions = (await import("globals")); + + let globals: Record = { + ...globalDefinitions.browser, + api: "readonly" + }; + + if (mimeType === "application/javascript;env=frontend") { + globals = { ...globals, ...globalDefinitions.jquery }; + } else if (mimeType === "application/javascript;env=backend") { + + } return new Linter().verify(code, [ js.configs.recommended, @@ -11,10 +22,7 @@ export async function lint(code: string) { parserOptions: { ecmaVersion: 2024 }, - globals: { - ...globals.browser, - api: "readonly" - }, + globals }, rules: { "no-unused-vars": [ "warn", { vars: "local", args: "after-used" }]