https://github.com/angular/angular
Tip revision: 0b95d141ab26171805582ea097543ee6f2de4017 authored by Andrew Kushnir on 14 February 2024, 18:50:07 UTC
release: cut the v17.2.0 release
release: cut the v17.2.0 release
Tip revision: 0b95d14
tslint.json
{
"rulesDirectory": [
"tools/tslint",
"node_modules/@angular/build-tooling/lint-rules/tslint",
"node_modules/vrsource-tslint-rules/rules",
"node_modules/tslint-eslint-rules/dist/rules",
"node_modules/tslint-no-toplevel-property-access/rules"
],
"rules": {
// The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
// that rules written in TypeScript can be loaded without needing to be transpiled.
"ts-node-loader": true,
// Custom rules written in TypeScript.
"require-internal-with-underscore": true,
"no-implicit-override-abstract": true,
"validate-import-for-esm-cjs-interop": [
true,
{
// The following CommonJS modules have type definitions that suggest the existence of
// named exports. This is not true at runtime when imported from an ES module (because
// the ESM interop only exposes statically-discoverable named exports). Instead
// default imports should be used to ensure compatibility with both ESM or CommonJS.
"noNamedExports": [
"typescript/lib/tsserverlibrary",
"typescript",
"minimist",
"magic-string",
"semver",
"yargs",
"glob",
"convert-source-map"
],
// The following CommonJS modules appear to have a default export available (due to the `esModuleInterop` flag),
// but at runtime with CJS (e.g. for devmode output/tests) there is no default export as these modules set
// `__esModule`. This does not match with what happens in ESM NodeJS runtime where NodeJS exposes
// `module.exports` as `export default`. Instead, named exports should be used for compat with CJS/ESM.
"noDefaultExport": [],
// List of modules which are incompatible and should never be imported at all.
"incompatibleModules": {}
}
],
"eofline": true,
"file-header": [
true,
{
"match": "Copyright Google LLC",
"allow-single-line-comments": false,
"default": "@license\nCopyright Google LLC All Rights Reserved.\n\nUse of this source code is governed by an MIT-style license that can be\nfound in the LICENSE file at https://angular.io/license"
}
],
"no-console": [true, "log"],
"no-construct": true,
"no-duplicate-imports": true,
"no-duplicate-variable": true,
"no-var-keyword": true,
"prefer-literal": [true, "object"],
"no-toplevel-property-access": [
true,
"packages/animations/src/",
"packages/animations/browser/",
"packages/common/src/",
"packages/core/src/",
"packages/elements/src/",
"packages/forms/src/",
"packages/platform-browser/src/",
"packages/router/src/"
],
"semicolon": [true],
"variable-name": [true, "ban-keywords"],
"no-inner-declarations": [true, "function"],
"no-debugger": true,
"ban": [
true,
{"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
{"name": "fit", "message": "Don't keep jasmine focus methods."},
{
"name": ["*", "getMutableClone"],
"message": "Use a ts.factory.update* or ts.factory.create* method instead."
},
{"name": ["performance", "mark"], "message": "`performance` methods aren't not fully supported in all environments like JSDOM and Cloudflare workers. Use 'performanceMark' from '@angular/core' instead."}
]
},
"jsRules": {
// The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
// that rules written in TypeScript can be loaded without needing to be transpiled.
"ts-node-loader": true,
// Custom rules written in TypeScript.
"require-internal-with-underscore": true,
"eofline": true,
"file-header": [
true,
{
"match": "Copyright Google LLC",
"allow-single-line-comments": false,
"default": "@license\nCopyright Google LLC All Rights Reserved.\n\nUse of this source code is governed by an MIT-style license that can be\nfound in the LICENSE file at https://angular.io/license"
}
],
"no-console": [true, "log"],
"no-duplicate-imports": true,
"no-duplicate-variable": true,
"semicolon": [true],
"variable-name": [true, "ban-keywords"],
"no-inner-declarations": [true, "function"],
"ban": [
true,
{"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
{"name": "fit", "message": "Don't keep jasmine focus methods."}
]
},
"linterOptions": {
"exclude": [
"**/node_modules/**/*",
// Ignore AIO and integration tests.
"./aio/**/*",
"./integration/**/*",
// Ignore output directories
"./built/**/*",
"./dist/**/*",
"./bazel-out/**/*",
// Ignore special files
"**/*.externs.js",
// Ignore test files
"./packages/compiler-cli/test/compliance/test_cases/**/*",
"./packages/localize/**/test_files/**/*",
"./tools/public_api_guard/**/*.d.ts",
"./modules/benchmarks_external/**/*",
// Ignore zone.js directory
// TODO(JiaLiPassion): add zone.js back later
"./packages/zone.js/**/*",
"./devtools/bazel-out/**/*",
"./devtools/projects/ng-devtools/src/lib/vendor/**/*",
// Ignore vendored code
"./third_party/**/*"
]
}
}