diff --git a/extensions/ql-vscode/.eslintignore b/extensions/ql-vscode/.eslintignore new file mode 100644 index 00000000000..a362ef891c5 --- /dev/null +++ b/extensions/ql-vscode/.eslintignore @@ -0,0 +1,6 @@ +.vscode-test/ +node_modules/ +out/ + +# Include the Storybook config +!.storybook diff --git a/extensions/ql-vscode/.eslintrc.js b/extensions/ql-vscode/.eslintrc.js index ce147b0dcd7..b533e5b829f 100644 --- a/extensions/ql-vscode/.eslintrc.js +++ b/extensions/ql-vscode/.eslintrc.js @@ -3,7 +3,7 @@ module.exports = { parserOptions: { ecmaVersion: 2018, sourceType: "module", - project: ["tsconfig.json", "./src/**/tsconfig.json", "./gulpfile.ts/tsconfig.json"], + project: ["tsconfig.json", "./src/**/tsconfig.json", "./gulpfile.ts/tsconfig.json", "./scripts/tsconfig.json", "./.storybook/tsconfig.json"], }, plugins: ["@typescript-eslint"], env: { diff --git a/extensions/ql-vscode/.storybook/preview.ts b/extensions/ql-vscode/.storybook/preview.ts index ff23a9a0250..a48d45ece30 100644 --- a/extensions/ql-vscode/.storybook/preview.ts +++ b/extensions/ql-vscode/.storybook/preview.ts @@ -7,7 +7,7 @@ import '@vscode/codicons/dist/codicon.css'; // https://storybook.js.org/docs/react/configure/overview#configure-story-rendering export const parameters = { // All props starting with `on` will automatically receive an action as a prop - actions: { argTypesRegex: "^on[A-Z].*" }, + actions: { argTypesRegex: '^on[A-Z].*' }, // All props matching these names will automatically get the correct control controls: { matchers: { diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts index f007e6db556..4c5313f3e47 100644 --- a/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts @@ -1,7 +1,7 @@ export function config(entry = []) { - return [...entry, require.resolve("./preview.ts")]; + return [...entry, require.resolve('./preview.ts')]; } export function managerEntries(entry = []) { - return [...entry, require.resolve("./manager.tsx")]; + return [...entry, require.resolve('./manager.tsx')]; } diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts index 6a7d95f3bac..6b3d17e025b 100644 --- a/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts @@ -6,4 +6,4 @@ export enum VSCodeTheme { export const themeNames: { [key in VSCodeTheme]: string } = { [VSCodeTheme.Dark]: 'Dark+', [VSCodeTheme.Light]: 'Light+', -} +}; diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts index dffd355b84a..63def5341d9 100644 --- a/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts @@ -4,9 +4,11 @@ import type { AnyFramework, PartialStoryFn as StoryFunction, StoryContext } from import { VSCodeTheme } from './theme'; const themeFiles: { [key in VSCodeTheme]: string } = { + // eslint-disable-next-line @typescript-eslint/no-var-requires [VSCodeTheme.Dark]: require('!file-loader?modules!../../src/stories/vscode-theme-dark.css').default, + // eslint-disable-next-line @typescript-eslint/no-var-requires [VSCodeTheme.Light]: require('!file-loader?modules!../../src/stories/vscode-theme-light.css').default, -} +}; export const withTheme = ( StoryFn: StoryFunction, @@ -18,7 +20,7 @@ export const withTheme = ( const styleSelectorId = context.viewMode === 'docs' ? `addon-vscode-theme-docs-${context.id}` - : `addon-vscode-theme-theme`; + : 'addon-vscode-theme-theme'; const theme = Object.values(VSCodeTheme).includes(vscodeTheme) ? vscodeTheme as VSCodeTheme : VSCodeTheme.Dark; diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index bf77398bd5e..5ed37b27732 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -1254,8 +1254,8 @@ "integration": "node ./out/vscode-tests/run-integration-tests.js no-workspace,minimal-workspace", "cli-integration": "npm run preintegration && node ./out/vscode-tests/run-integration-tests.js cli-integration", "update-vscode": "node ./node_modules/vscode/bin/install", - "format": "tsfmt -r && eslint src test --ext .ts,.tsx --fix", - "lint": "eslint src test --ext .ts,.tsx --max-warnings=0", + "format": "tsfmt -r && eslint . --ext .ts,.tsx --fix", + "lint": "eslint . --ext .ts,.tsx --max-warnings=0", "format-staged": "lint-staged", "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook", diff --git a/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts b/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts index 28651008c51..44068e97c92 100644 --- a/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts +++ b/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts @@ -14,7 +14,7 @@ import * as fs from 'fs-extra'; import * as path from 'path'; if (process.argv.length !== 3) { - console.error('Expected 1 argument - the scenario name') + console.error('Expected 1 argument - the scenario name'); } const scenarioName = process.argv[2]; @@ -39,7 +39,7 @@ async function fixScenarioFiles() { }); let index = 0; - for (let file of orderedFiles) { + for (const file of orderedFiles) { const ext = path.extname(file); if (ext === '.json') { const fileName = path.basename(file, ext); @@ -66,7 +66,7 @@ async function fixScenarioFiles() { await fs.writeJSON(newFilePath, json); } } - + index++; } } diff --git a/extensions/ql-vscode/scripts/tsconfig.json b/extensions/ql-vscode/scripts/tsconfig.json new file mode 100644 index 00000000000..72d5062ce99 --- /dev/null +++ b/extensions/ql-vscode/scripts/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["**/*.ts"], + "exclude": [] +}