{ "env": { "browser": true, "es2021": true, "node": true }, "parser": "@typescript-eslint/parser", "parserOptions": { "project": [ "demo/tsconfig.json", "src/browser/tsconfig.json", "src/common/tsconfig.json", "src/headless/tsconfig.json", "src/vs/tsconfig.json", "test/benchmark/tsconfig.json", "test/playwright/tsconfig.json", "addons/addon-attach/src/tsconfig.json", "addons/addon-attach/test/tsconfig.json", "addons/addon-clipboard/src/tsconfig.json", "addons/addon-clipboard/test/tsconfig.json", "addons/addon-fit/src/tsconfig.json", "addons/addon-fit/test/tsconfig.json", "addons/addon-image/src/tsconfig.json", "addons/addon-image/test/tsconfig.json", "addons/addon-ligatures/src/tsconfig.json", "addons/addon-search/src/tsconfig.json", "addons/addon-search/test/tsconfig.json", "addons/addon-serialize/src/tsconfig.json", "addons/addon-serialize/test/tsconfig.json", "addons/addon-serialize/benchmark/tsconfig.json", "addons/addon-unicode11/src/tsconfig.json", "addons/addon-unicode11/test/tsconfig.json", "addons/addon-unicode-graphemes/src/tsconfig.json", "addons/addon-unicode-graphemes/test/tsconfig.json", "addons/addon-unicode-graphemes/benchmark/tsconfig.json", "addons/addon-web-links/src/tsconfig.json", "addons/addon-web-links/test/tsconfig.json", "addons/addon-webgl/src/tsconfig.json", "addons/addon-webgl/test/tsconfig.json" ], "sourceType": "module" }, "ignorePatterns": [ "addons/*/src/third-party/*.ts", "src/vs/*", "out/*", "out-test/*", "out-esbuild/*", "out-esbuild-test/*", "**/inwasm-sdks/*", "**/typings/*.d.ts", "**/node_modules", "**/*.js", "**/*.mjs" ], "plugins": [ "@stylistic/ts", "@typescript-eslint", "jsdoc" ], "rules": { "@stylistic/ts/indent": [ "warn", 2 ], "@stylistic/ts/semi": [ "warn", "always" ], "@stylistic/ts/quotes": [ "warn", "single", { "allowTemplateLiterals": true } ], "@typescript-eslint/array-type": [ "warn", { "default": "array", "readonly": "generic" } ], "@typescript-eslint/consistent-type-assertions": "warn", "@typescript-eslint/consistent-type-definitions": "warn", "@typescript-eslint/explicit-function-return-type": [ "warn", { "allowExpressions": true } ], "@typescript-eslint/explicit-member-accessibility": [ "warn", { "accessibility": "explicit", "overrides": { "constructors": "off" } } ], "@typescript-eslint/member-delimiter-style": [ "warn", { "multiline": { "delimiter": "semi", "requireLast": true }, "singleline": { "delimiter": "comma", "requireLast": false } } ], "@typescript-eslint/naming-convention": [ "warn", { "selector": "default", "format": ["camelCase"], "filter": { "regex": "^[a-z]", "match": true } }, // variableLike { "selector": "variable", "format": ["camelCase", "UPPER_CASE"] }, { "selector": "variable", "filter": "^I.+Service$", "format": ["PascalCase"], "prefix": ["I"] }, // memberLike { "selector": "memberLike", "modifiers": ["private"], "format": ["camelCase"], "leadingUnderscore": "require" }, { "selector": "memberLike", "modifiers": ["protected"], "format": ["camelCase"], "leadingUnderscore": "require" }, { "selector": "enumMember", "format": ["UPPER_CASE"] }, // memberLike - Allow enum-like objects to use UPPER_CASE { "selector": "property", "modifiers": ["public"], "format": ["camelCase", "UPPER_CASE"], "filter": { "regex": "^[a-z]", "match": true } }, // restrict on* naming for events only { "selector": "method", "modifiers": ["public"], "format": ["camelCase", "UPPER_CASE"], "custom": { "regex": "^on[A-Z].+", "match": false } }, { "selector": "method", "modifiers": ["private"], "format": ["camelCase"], "leadingUnderscore": "require", "custom": { "regex": "^on[A-Z].+", "match": false } }, { "selector": "method", "modifiers": ["protected"], "format": ["camelCase"], "leadingUnderscore": "require", "custom": { "regex": "^on[A-Z].+", "match": false } }, // typeLike { "selector": "typeLike", "format": ["PascalCase"] }, { "selector": "interface", "format": ["PascalCase"], "prefix": ["I"] } ], "@typescript-eslint/no-confusing-void-expression": [ "warn", { "ignoreArrowShorthand": true } ], "@typescript-eslint/no-useless-constructor": "warn", "@typescript-eslint/prefer-namespace-keyword": "warn", "@typescript-eslint/type-annotation-spacing": "warn", "comma-dangle": [ "warn", { "objects": "never", "arrays": "never", "functions": "never" } ], "curly": [ "warn", "multi-line" ], "eol-last": "warn", "eqeqeq": [ "warn", "always" ], "jsdoc/check-alignment": 1, "jsdoc/check-param-names": 1, "jsdoc/no-multi-asterisks": 1, "keyword-spacing": "warn", "max-len": [ "warn", { "code": 1000, // Don't enforce for code "comments": 100, "ignoreTrailingComments": true, "ignoreUrls": true, "ignorePattern": "^ *((?(//|\\*) @vt)|(?\\* \\| )|(?// ))" } ], "new-parens": "warn", "no-duplicate-imports": "warn", "no-else-return": [ "warn", { "allowElseIf": false } ], "no-eval": "warn", "no-extra-semi": "error", "no-irregular-whitespace": "warn", "no-restricted-imports": [ "warn", { "patterns": [ ".*\\/out\\/.*" ] } ], "no-restricted-syntax": [ "warn", { "selector": "CallExpression[callee.name='requestAnimationFrame']", "message": "The global requestAnimationFrame() should be avoided, call it on the parent window from ICoreBrowserService." }, { "selector": "CallExpression[callee.name='cancelAnimationFrame']", "message": "The global cancelAnimationFrame() should be avoided, call it on the parent window from ICoreBrowserService." }, { "selector": "CallExpression > MemberExpression[object.name='window'][property.name='requestAnimationFrame']", "message": "window.requestAnimationFrame() should be avoided, call it on the parent window from ICoreBrowserService." }, { "selector": "CallExpression > MemberExpression[object.name='window'][property.name='cancelAnimationFrame']", "message": "window.cancelAnimationFrame() should be avoided, call it on the parent window from ICoreBrowserService." }, { "selector": "MemberExpression[object.name='window'][property.name='devicePixelRatio']", "message": "window.devicePixelRatio should be avoided, get it from ICoreBrowserService." } ], "no-trailing-spaces": "warn", "no-unsafe-finally": "warn", "no-unused-vars": ["warn", { "vars": "all", "args": "none" }], "no-var": "warn", "one-var": [ "warn", "never" ], "object-curly-spacing": [ "warn", "always" ], "prefer-const": "warn", "spaced-comment": [ "warn", "always", { "markers": ["/"], "exceptions": ["-"] } ] }, "overrides": [ { "files": [ "**/*.api.ts", "**/*.test.ts" ], "rules": { "object-curly-spacing": "off", "max-len": "off", "no-unused-vars": "off" } } ] }