@angular-eslint/eslint-plugin 22.2.1-alpha.8 → 22.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +1 -0
  2. package/dist/index.d.ts +7 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/rules/component-class-suffix.js +5 -5
  6. package/dist/rules/component-max-inline-declarations.js +7 -7
  7. package/dist/rules/computed-must-return.js +1 -1
  8. package/dist/rules/consistent-component-styles.js +1 -1
  9. package/dist/rules/contextual-decorator.js +1 -1
  10. package/dist/rules/contextual-lifecycle.js +1 -1
  11. package/dist/rules/directive-class-suffix.js +1 -1
  12. package/dist/rules/inject-at-top.d.ts +6 -2
  13. package/dist/rules/inject-at-top.d.ts.map +1 -1
  14. package/dist/rules/inject-at-top.js +53 -22
  15. package/dist/rules/no-async-lifecycle-method.js +1 -1
  16. package/dist/rules/no-attribute-decorator.js +1 -1
  17. package/dist/rules/no-developer-preview.js +1 -1
  18. package/dist/rules/no-duplicates-in-metadata-arrays.js +1 -1
  19. package/dist/rules/no-empty-lifecycle-method.js +1 -1
  20. package/dist/rules/no-experimental.js +1 -1
  21. package/dist/rules/no-forward-ref.js +1 -1
  22. package/dist/rules/no-implicit-take-until-destroyed.js +1 -1
  23. package/dist/rules/no-input-prefix.js +1 -1
  24. package/dist/rules/no-input-rename.js +1 -1
  25. package/dist/rules/no-inputs-metadata-property.js +1 -1
  26. package/dist/rules/no-lifecycle-call.js +1 -1
  27. package/dist/rules/no-output-native.js +1 -1
  28. package/dist/rules/no-output-on-prefix.js +1 -1
  29. package/dist/rules/no-output-rename.js +1 -1
  30. package/dist/rules/no-outputs-metadata-property.js +1 -1
  31. package/dist/rules/no-pipe-impure.js +1 -1
  32. package/dist/rules/no-queries-metadata-property.js +1 -1
  33. package/dist/rules/no-uncalled-signals.js +1 -1
  34. package/dist/rules/pipe-prefix.js +5 -5
  35. package/dist/rules/prefer-host-metadata-property.js +1 -1
  36. package/dist/rules/prefer-inject.js +1 -1
  37. package/dist/rules/prefer-on-push-component-change-detection.js +1 -1
  38. package/dist/rules/prefer-output-emitter-ref.js +1 -1
  39. package/dist/rules/prefer-output-readonly.js +1 -1
  40. package/dist/rules/prefer-service-decorator.js +1 -1
  41. package/dist/rules/prefer-signal-model.d.ts +7 -1
  42. package/dist/rules/prefer-signal-model.d.ts.map +1 -1
  43. package/dist/rules/prefer-signal-model.js +116 -50
  44. package/dist/rules/prefer-signals.js +1 -1
  45. package/dist/rules/prefer-standalone.js +1 -1
  46. package/dist/rules/reactive-context-must-read-signal.d.ts +16 -0
  47. package/dist/rules/reactive-context-must-read-signal.d.ts.map +1 -0
  48. package/dist/rules/reactive-context-must-read-signal.js +357 -0
  49. package/dist/rules/relative-url-prefix.js +1 -1
  50. package/dist/rules/require-lifecycle-on-prototype.js +1 -1
  51. package/dist/rules/require-localize-metadata.js +1 -1
  52. package/dist/rules/runtime-localize.js +1 -1
  53. package/dist/rules/sort-keys-in-type-decorator.js +1 -1
  54. package/dist/rules/sort-lifecycle-methods.js +1 -1
  55. package/dist/rules/use-component-selector.js +1 -1
  56. package/dist/rules/use-component-view-encapsulation.js +1 -1
  57. package/dist/rules/use-injectable-provided-in.js +1 -1
  58. package/dist/rules/use-lifecycle-interface.js +1 -1
  59. package/dist/rules/use-pipe-transform-interface.js +1 -1
  60. package/dist/utils/create-eslint-rule.d.ts.map +1 -1
  61. package/dist/utils/create-eslint-rule.js +1 -24
  62. package/package.json +4 -4
@@ -15,8 +15,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
15
15
  messages: {
16
16
  lifecycleMethodsNotSorted: `Lifecycle Methods are not declared in order of execution`,
17
17
  },
18
+ defaultOptions: [],
18
19
  },
19
- defaultOptions: [],
20
20
  create(context) {
21
21
  const isBefore = (method1, method2) => {
22
22
  const methodIndex1 = utils_1.ASTUtils.angularLifecycleMethodsOrdered.indexOf(utils_1.ASTUtils.getMethodName(method1));
@@ -16,8 +16,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
16
16
  messages: {
17
17
  useComponentSelector: 'The selector of the component is mandatory',
18
18
  },
19
+ defaultOptions: [],
19
20
  },
20
- defaultOptions: [],
21
21
  create(context) {
22
22
  return {
23
23
  [utils_1.Selectors.COMPONENT_CLASS_DECORATOR](node) {
@@ -18,8 +18,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
18
18
  useComponentViewEncapsulation: `Using \`${VIEW_ENCAPSULATION_NONE}\` makes your styles global, which may have an unintended effect`,
19
19
  suggestRemoveViewEncapsulationNone: `Remove \`${VIEW_ENCAPSULATION_NONE}\``,
20
20
  },
21
+ defaultOptions: [],
21
22
  },
22
- defaultOptions: [],
23
23
  create(context) {
24
24
  const sourceCode = context.sourceCode;
25
25
  return {
@@ -35,8 +35,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
35
35
  useInjectableProvidedIn: `The \`${METADATA_PROPERTY_NAME}\` property is mandatory for \`Injectables\``,
36
36
  suggestInjector: `Use \`${METADATA_PROPERTY_NAME}: '{{injector}}'\``,
37
37
  },
38
+ defaultOptions: [DEFAULT_OPTIONS],
38
39
  },
39
- defaultOptions: [DEFAULT_OPTIONS],
40
40
  create(context, [{ ignoreClassNamePattern, allowProvidedInNull }]) {
41
41
  const injectableClassDecorator = `ClassDeclaration:not([id.name=${ignoreClassNamePattern}]):not(:has(TSClassImplements:matches([expression.property.name='HttpInterceptor'], [expression.name='HttpInterceptor']))) > Decorator[expression.callee.name="Injectable"]`;
42
42
  const providedInMetadataProperty = utils_1.Selectors.metadataProperty(METADATA_PROPERTY_NAME);
@@ -17,8 +17,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
17
17
  useLifecycleInterface: `Lifecycle interface '{{interfaceName}}' should be implemented for method '{{methodName}}'. (${STYLE_GUIDE_LINK})`,
18
18
  },
19
19
  fixable: 'code',
20
+ defaultOptions: [],
20
21
  },
21
- defaultOptions: [],
22
22
  create(context) {
23
23
  const angularLifecycleMethodsPattern = (0, utils_1.toPattern)([
24
24
  ...utils_1.ASTUtils.ANGULAR_LIFECYCLE_METHODS,
@@ -18,8 +18,8 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
18
18
  messages: {
19
19
  usePipeTransformInterface: `Pipes should implement \`${PIPE_TRANSFORM}\` interface`,
20
20
  },
21
+ defaultOptions: [],
21
22
  },
22
- defaultOptions: [],
23
23
  create(context) {
24
24
  return {
25
25
  [`ClassDeclaration:not(:has(TSClassImplements:matches([expression.name='${PIPE_TRANSFORM}'], [expression.property.name='${PIPE_TRANSFORM}']))) > Decorator[expression.callee.name='Pipe']`]({ parent: classDeclaration, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-eslint-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-eslint-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiCD,eAAO,MAAM,gBAAgB;;CAG5B,CAAC"}
1
+ {"version":3,"file":"create-eslint-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-eslint-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB;;CAG5B,CAAC"}
@@ -2,27 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createESLintRule = void 0;
4
4
  const utils_1 = require("@typescript-eslint/utils");
5
- /**
6
- * We need to patch the RuleCreator in order to preserve the defaultOptions
7
- * to use as part of documentation generation.
8
- */
9
- const patchedRuleCreator = (urlCreator) => {
10
- return function createRule({ name, meta, defaultOptions, create }) {
11
- const resolvedDefaultOptions = (defaultOptions ?? []);
12
- return {
13
- name,
14
- meta: Object.assign(Object.assign({}, meta), {
15
- docs: Object.assign(Object.assign({}, meta.docs), {
16
- url: urlCreator(name),
17
- }),
18
- }),
19
- defaultOptions: resolvedDefaultOptions,
20
- create(context) {
21
- const optionsWithDefault = utils_1.ESLintUtils.applyDefault(resolvedDefaultOptions, context.options);
22
- return create(context, optionsWithDefault);
23
- },
24
- };
25
- };
26
- };
27
- patchedRuleCreator.withoutDocs = utils_1.ESLintUtils.RuleCreator.withoutDocs;
28
- exports.createESLintRule = patchedRuleCreator((ruleName) => `https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/${ruleName}.md`);
5
+ exports.createESLintRule = utils_1.ESLintUtils.RuleCreator((ruleName) => `https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/${ruleName}.md`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-eslint/eslint-plugin",
3
- "version": "22.2.1-alpha.8",
3
+ "version": "22.3.0",
4
4
  "description": "ESLint plugin for Angular applications, following https://angular.dev/style-guide",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -19,12 +19,12 @@
19
19
  "LICENSE"
20
20
  ],
21
21
  "dependencies": {
22
- "@angular-eslint/bundled-angular-compiler": "22.2.1-alpha.8",
23
- "@angular-eslint/utils": "22.2.1-alpha.8",
22
+ "@angular-eslint/bundled-angular-compiler": "22.3.0",
23
+ "@angular-eslint/utils": "22.3.0",
24
24
  "ts-api-utils": "^2.1.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@angular-eslint/test-utils": "22.2.1-alpha.8"
27
+ "@angular-eslint/test-utils": "22.3.0"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@typescript-eslint/utils": "^8.0.0",