/
githubmirror
/
components
Обзор
Документация
Войти
/
githubmirror
/
components
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v21.2.14
tslint.json
214 строк
7 KB
Kristiyan Kostadinov
build: set up harness integration test for vitest
18 дек 2025, 16:44
18 дек 2025, 16:44
7b1df64
Код
Авторство
О чём код?
{ "extends": ["rxjs-tslint-rules"], "rulesDirectory": ["./tools/tslint-rules/", "node_modules/vrsource-tslint-rules/rules"], "rules": { "ban-types": [true, ["ReadonlyArray<.+>", "Use 'readonly T[]' instead."]], // Disable this flag because of SHA tslint#48b0c597f9257712c7d1f04b55ed0aa60e333f6a // TSLint now shows warnings if types for properties are inferred. This rule needs to be // disabled because all properties need to have explicit types set to work for Dgeni. "no-inferrable-types": false, "comment-format": [true, "check-space"], "eofline": true, "no-construct": true, "prefer-literal": [true, "object"], "no-duplicate-variable": true, "no-eval": true, "no-arg": true, "no-internal-module": true, "no-trailing-whitespace": true, "no-shadowed-variable": false, // Disabled, because it breaks in TS 5.2 "no-unused-expression": true, "no-unused-variable": true, "no-var-keyword": true, "member-access": [true, "no-public"], "no-debugger": true, "variable-name": [ true, "ban-keywords", "check-format", "allow-leading-underscore", "allow-snake-case" ], // Bans jasmine helper functions that will prevent the CI from properly running tests. "ban": [ true, ["fit"], ["fdescribe"], ["xit"], ["xdescribe"], {"name": ["first"], "message": "Use take(1) instead."}, {"name": ["Object", "assign"], "message": "Use the spread operator instead."}, {"name": ["*", "asObservable"], "message": "Cast to Observable type instead."}, {"name": ["*", "removeChild"], "message": "Use `remove` instead instead."}, {"name": ["CommonModule"], "message": "Import the necessary symbols directly instead."}, {"name": ["*", "compileComponents"], "message": "`compileComponents` is not necessary."}, { "name": ["isDevMode"], "message": "Use `typeof ngDevMode === 'undefined' || ngDevMode` instead" } ], // Avoids inconsistent linebreak styles in source files. Forces developers to use LF linebreaks. "linebreak-style": [true, "LF"], // Namespaces are not allowed, because of Closure compiler. "no-namespace": true, "jsdoc-format": [true, "check-multiline-start"], "no-duplicate-imports": true, "await-promise": [true, "PromiseLike", "ElementArrayFinder"], "array-type": [true, "array"], // RxJS "rxjs-no-unsafe-takeuntil": true, "rxjs-no-unsafe-catch": true, // Custom Rules "ts-loader": true, "no-exposed-todo": true, "no-private-getters": [true, "^_"], "no-undecorated-base-class-di": true, "no-undecorated-class-with-angular-features": true, "setters-after-getters": true, "lifecycle-hook-interface": true, "require-breaking-change-version": true, "no-nested-ternary": true, "prefer-plain-enum": true, "no-lifecycle-invocation": [true, ["**/*.spec.ts"]], "lightweight-tokens": [ true, ["**/*.spec.ts"], // Directionality is always used in Angular Material and therefore does not // need a lightweight token. Date Adapter is not very significant and does not // need a dedicated token. ["Directionality", "DateAdapter"] ], "no-coercion-members": true, "no-host-decorator-in-concrete": [true, "HostBinding", "HostListener"], "member-naming": [ true, { "private": "^_" } ], "symbol-naming": [true, "^_?[A-Z][a-zA-Z0-9]*$"], "validate-decorators": [ true, { "Component": [ { "argument": 0, "properties": { "!preserveWhitespaces": ".*", "!moduleId": ".*", "!standalone": ".*" } }, // Don't require `ViewEncapsulation.None` and allow inline styles in non-production code. { "argument": 0, "properties": { "!styles": ".*", "encapsulation": "\\.None$" }, "excludeFiles": ["**/dev-app/**", "**/docs/**", "**/*.spec.ts"] }, // Enforce OnPush & standalone even in the dev-app. { "argument": 0, "properties": { "changeDetection": "\\.OnPush$" }, "excludeFiles": ["**/docs/**", "**/*.spec.ts"] } ], "Directive": [ // Enforce standalone even in the dev-app. { "argument": 0, "properties": { "!standalone": ".*" } } ], "NgModule": [ { "argument": 0, "properties": { "*": "^(?!\\s*$).+" }, "excludeFiles": ["**/dev-app/**"] } ], "ContentChildren": [ { "argument": 1, "required": true, "properties": { "descendants": "^(true|false)$" }, "excludeFiles": ["**/dev-app/**"] } ] }, [ // Internal code that doesn't need to follow the same standards. "**/+(e2e-app|components-examples|universal-app|integration)/**" ] ], "require-license-banner": [ true, [ // Internal files that don't need license banners. "**/+(e2e-app|components-examples|universal-app|dev-app|integration|tools|scripts)/**", "**/*.spec.ts" ] ], "file-name-casing": [ true, { // Exclude custom lint rule files since they have to always be camel-cased and end // with "Rule". "\\w+Rule.ts": "camel-case", ".*": "kebab-case" } ], "no-unescaped-html-tag": true, // Ensures that all rxjs imports come only from `rxjs` and `rxjs/operators`. "import-blacklist": [true, ["^rxjs(?!$|/operators$).*"]], "no-zone-dependencies": [ true, [ // Allow in tests that specficially test integration with Zone.js. "**/*.zone.spec.ts", // TODO: Test harnesses infrastructure still relies on Zone.js. "**/src/cdk/testing/testbed/task-state-zone-interceptor.ts", "**/src/cdk/testing/testbed/testbed-harness-environment.ts", "**/src/cdk/testing/tests/testbed.spec.ts", "**/integration/vitest/src/vitest.spec.ts", // TODO: Tooltip harness still relies on Zone.js. "**/src/material/tooltip/testing/tooltip-harness.spec.ts", // TODO: Migrate docs app to zoneless. "**/docs/**/*.ts", // TODO: Migrate e2e app to zoneless. "**/src/e2e-app/**/*.ts" ] ] }, "linterOptions": { "exclude": [ // Exclude golden files "goldens/**/*", // Exclude schematic template files and test cases that can't be linted. "src/material/schematics/ng-generate/*/files/**/*", "src/cdk/schematics/ng-generate/*/files/**/*", "src/cdk/schematics/ng-update/test-cases/**/*_input.ts", "src/cdk/schematics/ng-update/test-cases/**/*_expected_output.ts", "src/material/schematics/ng-update/test-cases/**/*_input.ts", "src/material/schematics/ng-update/test-cases/**/*_expected_output.ts", "src/material/schematics/ng-generate/theme-color/index.ts", // These CLI-generated projects are not necessarily compliant with the lint // rules and they should remain as unmodified as possible. "integration/ng-add/**/*", "integration/ng-add-standalone/**/*", "integration/ng-update-v13/**/*" ] } }