@angular-eslint/eslint-plugin 20.5.2 → 20.5.3-alpha.1

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 (133) hide show
  1. package/dist/rules/component-class-suffix.d.ts +3 -0
  2. package/dist/rules/component-class-suffix.d.ts.map +1 -1
  3. package/dist/rules/component-class-suffix.js +4 -1
  4. package/dist/rules/component-max-inline-declarations.d.ts +3 -0
  5. package/dist/rules/component-max-inline-declarations.d.ts.map +1 -1
  6. package/dist/rules/component-max-inline-declarations.js +4 -1
  7. package/dist/rules/component-selector.d.ts +3 -0
  8. package/dist/rules/component-selector.d.ts.map +1 -1
  9. package/dist/rules/component-selector.js +4 -1
  10. package/dist/rules/consistent-component-styles.d.ts +3 -0
  11. package/dist/rules/consistent-component-styles.d.ts.map +1 -1
  12. package/dist/rules/consistent-component-styles.js +4 -1
  13. package/dist/rules/contextual-decorator.d.ts +3 -0
  14. package/dist/rules/contextual-decorator.d.ts.map +1 -1
  15. package/dist/rules/contextual-decorator.js +4 -1
  16. package/dist/rules/contextual-lifecycle.d.ts +3 -0
  17. package/dist/rules/contextual-lifecycle.d.ts.map +1 -1
  18. package/dist/rules/contextual-lifecycle.js +4 -1
  19. package/dist/rules/directive-class-suffix.d.ts +3 -0
  20. package/dist/rules/directive-class-suffix.d.ts.map +1 -1
  21. package/dist/rules/directive-class-suffix.js +4 -1
  22. package/dist/rules/directive-selector.d.ts +3 -0
  23. package/dist/rules/directive-selector.d.ts.map +1 -1
  24. package/dist/rules/directive-selector.js +4 -1
  25. package/dist/rules/no-async-lifecycle-method.d.ts +3 -0
  26. package/dist/rules/no-async-lifecycle-method.d.ts.map +1 -1
  27. package/dist/rules/no-async-lifecycle-method.js +4 -1
  28. package/dist/rules/no-attribute-decorator.d.ts +3 -0
  29. package/dist/rules/no-attribute-decorator.d.ts.map +1 -1
  30. package/dist/rules/no-attribute-decorator.js +4 -1
  31. package/dist/rules/no-conflicting-lifecycle.d.ts +3 -0
  32. package/dist/rules/no-conflicting-lifecycle.d.ts.map +1 -1
  33. package/dist/rules/no-conflicting-lifecycle.js +4 -1
  34. package/dist/rules/no-duplicates-in-metadata-arrays.d.ts +3 -0
  35. package/dist/rules/no-duplicates-in-metadata-arrays.d.ts.map +1 -1
  36. package/dist/rules/no-duplicates-in-metadata-arrays.js +4 -1
  37. package/dist/rules/no-empty-lifecycle-method.d.ts +3 -0
  38. package/dist/rules/no-empty-lifecycle-method.d.ts.map +1 -1
  39. package/dist/rules/no-empty-lifecycle-method.js +4 -1
  40. package/dist/rules/no-forward-ref.d.ts +3 -0
  41. package/dist/rules/no-forward-ref.d.ts.map +1 -1
  42. package/dist/rules/no-forward-ref.js +4 -1
  43. package/dist/rules/no-input-prefix.d.ts +3 -0
  44. package/dist/rules/no-input-prefix.d.ts.map +1 -1
  45. package/dist/rules/no-input-prefix.js +4 -1
  46. package/dist/rules/no-input-rename.d.ts +3 -0
  47. package/dist/rules/no-input-rename.d.ts.map +1 -1
  48. package/dist/rules/no-input-rename.js +4 -1
  49. package/dist/rules/no-inputs-metadata-property.d.ts +3 -0
  50. package/dist/rules/no-inputs-metadata-property.d.ts.map +1 -1
  51. package/dist/rules/no-inputs-metadata-property.js +4 -1
  52. package/dist/rules/no-lifecycle-call.d.ts +3 -0
  53. package/dist/rules/no-lifecycle-call.d.ts.map +1 -1
  54. package/dist/rules/no-lifecycle-call.js +4 -1
  55. package/dist/rules/no-output-native.d.ts +3 -0
  56. package/dist/rules/no-output-native.d.ts.map +1 -1
  57. package/dist/rules/no-output-native.js +4 -1
  58. package/dist/rules/no-output-on-prefix.d.ts +3 -0
  59. package/dist/rules/no-output-on-prefix.d.ts.map +1 -1
  60. package/dist/rules/no-output-on-prefix.js +4 -1
  61. package/dist/rules/no-output-rename.d.ts +3 -0
  62. package/dist/rules/no-output-rename.d.ts.map +1 -1
  63. package/dist/rules/no-output-rename.js +4 -1
  64. package/dist/rules/no-outputs-metadata-property.d.ts +3 -0
  65. package/dist/rules/no-outputs-metadata-property.d.ts.map +1 -1
  66. package/dist/rules/no-outputs-metadata-property.js +4 -1
  67. package/dist/rules/no-pipe-impure.d.ts +3 -0
  68. package/dist/rules/no-pipe-impure.d.ts.map +1 -1
  69. package/dist/rules/no-pipe-impure.js +4 -1
  70. package/dist/rules/no-queries-metadata-property.d.ts +3 -0
  71. package/dist/rules/no-queries-metadata-property.d.ts.map +1 -1
  72. package/dist/rules/no-queries-metadata-property.js +4 -1
  73. package/dist/rules/no-uncalled-signals.d.ts +3 -0
  74. package/dist/rules/no-uncalled-signals.d.ts.map +1 -1
  75. package/dist/rules/no-uncalled-signals.js +4 -1
  76. package/dist/rules/pipe-prefix.d.ts +3 -0
  77. package/dist/rules/pipe-prefix.d.ts.map +1 -1
  78. package/dist/rules/pipe-prefix.js +4 -1
  79. package/dist/rules/prefer-host-metadata-property.d.ts +3 -0
  80. package/dist/rules/prefer-host-metadata-property.d.ts.map +1 -1
  81. package/dist/rules/prefer-host-metadata-property.js +4 -1
  82. package/dist/rules/prefer-inject.d.ts +3 -0
  83. package/dist/rules/prefer-inject.d.ts.map +1 -1
  84. package/dist/rules/prefer-inject.js +4 -1
  85. package/dist/rules/prefer-on-push-component-change-detection.d.ts +3 -0
  86. package/dist/rules/prefer-on-push-component-change-detection.d.ts.map +1 -1
  87. package/dist/rules/prefer-on-push-component-change-detection.js +4 -1
  88. package/dist/rules/prefer-output-emitter-ref.d.ts +3 -0
  89. package/dist/rules/prefer-output-emitter-ref.d.ts.map +1 -1
  90. package/dist/rules/prefer-output-emitter-ref.js +4 -1
  91. package/dist/rules/prefer-output-readonly.d.ts +3 -0
  92. package/dist/rules/prefer-output-readonly.d.ts.map +1 -1
  93. package/dist/rules/prefer-output-readonly.js +4 -1
  94. package/dist/rules/prefer-signals.d.ts +3 -0
  95. package/dist/rules/prefer-signals.d.ts.map +1 -1
  96. package/dist/rules/prefer-signals.js +4 -1
  97. package/dist/rules/prefer-standalone.d.ts +3 -0
  98. package/dist/rules/prefer-standalone.d.ts.map +1 -1
  99. package/dist/rules/prefer-standalone.js +4 -1
  100. package/dist/rules/relative-url-prefix.d.ts +3 -0
  101. package/dist/rules/relative-url-prefix.d.ts.map +1 -1
  102. package/dist/rules/relative-url-prefix.js +4 -1
  103. package/dist/rules/require-lifecycle-on-prototype.d.ts +3 -0
  104. package/dist/rules/require-lifecycle-on-prototype.d.ts.map +1 -1
  105. package/dist/rules/require-lifecycle-on-prototype.js +4 -1
  106. package/dist/rules/require-localize-metadata.d.ts +3 -0
  107. package/dist/rules/require-localize-metadata.d.ts.map +1 -1
  108. package/dist/rules/require-localize-metadata.js +4 -1
  109. package/dist/rules/runtime-localize.d.ts +3 -0
  110. package/dist/rules/runtime-localize.d.ts.map +1 -1
  111. package/dist/rules/runtime-localize.js +4 -1
  112. package/dist/rules/sort-keys-in-type-decorator.d.ts +3 -0
  113. package/dist/rules/sort-keys-in-type-decorator.d.ts.map +1 -1
  114. package/dist/rules/sort-keys-in-type-decorator.js +4 -1
  115. package/dist/rules/sort-lifecycle-methods.d.ts +3 -0
  116. package/dist/rules/sort-lifecycle-methods.d.ts.map +1 -1
  117. package/dist/rules/sort-lifecycle-methods.js +4 -1
  118. package/dist/rules/use-component-selector.d.ts +3 -0
  119. package/dist/rules/use-component-selector.d.ts.map +1 -1
  120. package/dist/rules/use-component-selector.js +4 -1
  121. package/dist/rules/use-component-view-encapsulation.d.ts +3 -0
  122. package/dist/rules/use-component-view-encapsulation.d.ts.map +1 -1
  123. package/dist/rules/use-component-view-encapsulation.js +4 -1
  124. package/dist/rules/use-injectable-provided-in.d.ts +3 -0
  125. package/dist/rules/use-injectable-provided-in.d.ts.map +1 -1
  126. package/dist/rules/use-injectable-provided-in.js +4 -1
  127. package/dist/rules/use-lifecycle-interface.d.ts +3 -0
  128. package/dist/rules/use-lifecycle-interface.d.ts.map +1 -1
  129. package/dist/rules/use-lifecycle-interface.js +4 -1
  130. package/dist/rules/use-pipe-transform-interface.d.ts +3 -0
  131. package/dist/rules/use-pipe-transform-interface.d.ts.map +1 -1
  132. package/dist/rules/use-pipe-transform-interface.js +4 -1
  133. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  const DEFAULT_ORDER = {
@@ -186,3 +186,6 @@ function reportAndFix(context, node, messageId, data, properties, expectedOrder,
186
186
  },
187
187
  });
188
188
  }
189
+ exports.RULE_DOCS_EXTENSION = {
190
+ rationale: 'Maintaining a consistent order for properties in Angular decorators (@Component, @Directive, @NgModule, @Pipe) makes code more predictable and easier to scan. When all components in a codebase follow the same property order, developers can quickly locate specific metadata without searching. For example, if selector always comes first and providers always comes before changeDetection, you develop muscle memory for where to look. This is especially helpful in large components with many properties. The recommended default order groups related properties logically: identification (selector, name) first, then dependencies (imports, providers), then templates/styles, then configuration options. Consistent ordering also makes code reviews easier, reduces merge conflicts when multiple developers edit decorators, and creates a professional, well-organized codebase.',
191
+ };
@@ -3,4 +3,7 @@ export type MessageIds = 'lifecycleMethodsNotSorted';
3
3
  export declare const RULE_NAME = "sort-lifecycle-methods";
4
4
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"lifecycleMethodsNotSorted", [], import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  export default _default;
6
+ export declare const RULE_DOCS_EXTENSION: {
7
+ rationale: string;
8
+ };
6
9
  //# sourceMappingURL=sort-lifecycle-methods.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-lifecycle-methods.d.ts","sourceRoot":"","sources":["../../src/rules/sort-lifecycle-methods.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,2BAA2B,CAAC;AACrD,eAAO,MAAM,SAAS,2BAA2B,CAAC;;AAElD,wBAyDG"}
1
+ {"version":3,"file":"sort-lifecycle-methods.d.ts","sourceRoot":"","sources":["../../src/rules/sort-lifecycle-methods.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,2BAA2B,CAAC;AACrD,eAAO,MAAM,SAAS,2BAA2B,CAAC;;AAElD,wBAyDG;AAEH,eAAO,MAAM,mBAAmB;;CAG/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'sort-lifecycle-methods';
@@ -40,3 +40,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
40
40
  };
41
41
  },
42
42
  });
43
+ exports.RULE_DOCS_EXTENSION = {
44
+ rationale: "Organizing lifecycle methods in the order they execute (ngOnChanges, ngOnInit, ngDoCheck, ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy) makes the component lifecycle easier to understand and follow. When methods appear in execution order, developers can mentally trace the component's lifecycle from initialization through destruction just by reading down the file. This natural ordering helps both when writing new code (you know where to add lifecycle logic) and when debugging (you can follow the execution path visually). Randomly ordered lifecycle methods force developers to jump around the file and mentally reconstruct the execution sequence. Consistent ordering is a simple organizational principle that significantly improves code readability.",
45
+ };
@@ -3,4 +3,7 @@ export type MessageIds = 'useComponentSelector';
3
3
  export declare const RULE_NAME = "use-component-selector";
4
4
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useComponentSelector", [], import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  export default _default;
6
+ export declare const RULE_DOCS_EXTENSION: {
7
+ rationale: string;
8
+ };
6
9
  //# sourceMappingURL=use-component-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-component-selector.d.ts","sourceRoot":"","sources":["../../src/rules/use-component-selector.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAChD,eAAO,MAAM,SAAS,2BAA2B,CAAC;;AAElD,wBAiCG"}
1
+ {"version":3,"file":"use-component-selector.d.ts","sourceRoot":"","sources":["../../src/rules/use-component-selector.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAChD,eAAO,MAAM,SAAS,2BAA2B,CAAC;;AAElD,wBAiCG;AAEH,eAAO,MAAM,mBAAmB;;CAG/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'use-component-selector';
@@ -34,3 +34,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
34
34
  };
35
35
  },
36
36
  });
37
+ exports.RULE_DOCS_EXTENSION = {
38
+ rationale: "Every component should have a selector that defines how it's used in templates. Omitting the selector makes the component unusable in templates and can only be used with dynamic component loading or routing, which is rarely the intent. When debugging, components without selectors are harder to identify in the component tree and browser DevTools. If a component is truly only meant for dynamic loading (like a modal or route component), you can disable this rule for that component, but in most cases, every component should have a meaningful selector.",
39
+ };
@@ -3,4 +3,7 @@ export type MessageIds = 'useComponentViewEncapsulation' | 'suggestRemoveViewEnc
3
3
  export declare const RULE_NAME = "use-component-view-encapsulation";
4
4
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds, [], import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  export default _default;
6
+ export declare const RULE_DOCS_EXTENSION: {
7
+ rationale: string;
8
+ };
6
9
  //# sourceMappingURL=use-component-view-encapsulation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-component-view-encapsulation.d.ts","sourceRoot":"","sources":["../../src/rules/use-component-view-encapsulation.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAClB,+BAA+B,GAC/B,oCAAoC,CAAC;AACzC,eAAO,MAAM,SAAS,qCAAqC,CAAC;;AAG5D,wBAwDG"}
1
+ {"version":3,"file":"use-component-view-encapsulation.d.ts","sourceRoot":"","sources":["../../src/rules/use-component-view-encapsulation.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAClB,+BAA+B,GAC/B,oCAAoC,CAAC;AACzC,eAAO,MAAM,SAAS,qCAAqC,CAAC;;AAG5D,wBAwDG;AAEH,eAAO,MAAM,mBAAmB;;CAG/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'use-component-view-encapsulation';
@@ -44,3 +44,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
44
44
  };
45
45
  },
46
46
  });
47
+ exports.RULE_DOCS_EXTENSION = {
48
+ rationale: "Setting encapsulation to ViewEncapsulation.None disables Angular's view encapsulation, making the component's styles global and affecting the entire application. This breaks component isolation and can cause unexpected styling conflicts throughout your app. When multiple components use ViewEncapsulation.None, their styles can interfere with each other in unpredictable ways, making it extremely difficult to reason about styling. A style intended for one component might accidentally affect completely unrelated components. This defeats one of Angular's key benefits: component style isolation. ViewEncapsulation.None is occasionally necessary for specific edge cases (like styling dynamically inserted content), but it should be avoided in normal component development. Use the default Emulated encapsulation, or ShadowDom for native Shadow DOM, to keep component styles properly isolated.",
49
+ };
@@ -5,4 +5,7 @@ export type MessageIds = 'useInjectableProvidedIn' | 'suggestInjector';
5
5
  export declare const RULE_NAME = "use-injectable-provided-in";
6
6
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds, Options, import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
7
  export default _default;
8
+ export declare const RULE_DOCS_EXTENSION: {
9
+ rationale: string;
10
+ };
8
11
  //# sourceMappingURL=use-injectable-provided-in.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-injectable-provided-in.d.ts","sourceRoot":"","sources":["../../src/rules/use-injectable-provided-in.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,CAAC;IAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,yBAAyB,GAAG,iBAAiB,CAAC;AACvE,eAAO,MAAM,SAAS,+BAA+B,CAAC;;AAGtD,wBA2DG"}
1
+ {"version":3,"file":"use-injectable-provided-in.d.ts","sourceRoot":"","sources":["../../src/rules/use-injectable-provided-in.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,CAAC;IAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,yBAAyB,GAAG,iBAAiB,CAAC;AACvE,eAAO,MAAM,SAAS,+BAA+B,CAAC;;AAGtD,wBA2DG;AAEH,eAAO,MAAM,mBAAmB;;CAE/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'use-injectable-provided-in';
@@ -58,3 +58,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
58
58
  };
59
59
  },
60
60
  });
61
+ exports.RULE_DOCS_EXTENSION = {
62
+ rationale: `Using 'providedIn' in the @Injectable() decorator (like '@Injectable({ providedIn: "root" })') enables tree-shaking, which means Angular can remove the service from your production bundle if it's never actually used. Without 'providedIn', services must be registered in a module's providers array, and Angular must include them in the bundle even if they're unused. This can significantly increase bundle size. Additionally, 'providedIn' makes services easier to use (no need to add them to module providers) and makes circular dependencies less likely. The 'providedIn' syntax is the modern, recommended way to provide services.`,
63
+ };
@@ -3,4 +3,7 @@ export type MessageIds = 'useLifecycleInterface';
3
3
  export declare const RULE_NAME = "use-lifecycle-interface";
4
4
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useLifecycleInterface", [], import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  export default _default;
6
+ export declare const RULE_DOCS_EXTENSION: {
7
+ rationale: string;
8
+ };
6
9
  //# sourceMappingURL=use-lifecycle-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-lifecycle-interface.d.ts","sourceRoot":"","sources":["../../src/rules/use-lifecycle-interface.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC;AACjD,eAAO,MAAM,SAAS,4BAA4B,CAAC;;AAInD,wBAyEG"}
1
+ {"version":3,"file":"use-lifecycle-interface.d.ts","sourceRoot":"","sources":["../../src/rules/use-lifecycle-interface.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC;AACjD,eAAO,MAAM,SAAS,4BAA4B,CAAC;;AAInD,wBAyEG;AAEH,eAAO,MAAM,mBAAmB;;CAE/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'use-lifecycle-interface';
@@ -60,3 +60,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
60
60
  };
61
61
  },
62
62
  });
63
+ exports.RULE_DOCS_EXTENSION = {
64
+ rationale: `Implementing lifecycle interfaces (like OnInit, OnDestroy, AfterViewInit) provides TypeScript compile-time checking to ensure you've spelled the lifecycle method names correctly and used the right method signatures. For example, if you typo 'ngOnInit' as 'ngOninit', TypeScript will catch this error if your class implements OnInit. The interfaces also serve as self-documentation, making it immediately clear which lifecycle hooks a component uses. While Angular will still call correctly-named lifecycle methods even without the interface, using the interface leverages TypeScript's type safety to catch errors earlier in development.`,
65
+ };
@@ -3,4 +3,7 @@ export type MessageIds = 'usePipeTransformInterface';
3
3
  export declare const RULE_NAME = "use-pipe-transform-interface";
4
4
  declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"usePipeTransformInterface", [], import("../utils/create-eslint-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  export default _default;
6
+ export declare const RULE_DOCS_EXTENSION: {
7
+ rationale: string;
8
+ };
6
9
  //# sourceMappingURL=use-pipe-transform-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-pipe-transform-interface.d.ts","sourceRoot":"","sources":["../../src/rules/use-pipe-transform-interface.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,2BAA2B,CAAC;AACrD,eAAO,MAAM,SAAS,iCAAiC,CAAC;;AAGxD,wBAgDG"}
1
+ {"version":3,"file":"use-pipe-transform-interface.d.ts","sourceRoot":"","sources":["../../src/rules/use-pipe-transform-interface.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,2BAA2B,CAAC;AACrD,eAAO,MAAM,SAAS,iCAAiC,CAAC;;AAGxD,wBAgDG;AAEH,eAAO,MAAM,mBAAmB;;CAG/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RULE_NAME = void 0;
3
+ exports.RULE_DOCS_EXTENSION = exports.RULE_NAME = void 0;
4
4
  const utils_1 = require("@angular-eslint/utils");
5
5
  const create_eslint_rule_1 = require("../utils/create-eslint-rule");
6
6
  exports.RULE_NAME = 'use-pipe-transform-interface';
@@ -44,3 +44,6 @@ exports.default = (0, create_eslint_rule_1.createESLintRule)({
44
44
  };
45
45
  },
46
46
  });
47
+ exports.RULE_DOCS_EXTENSION = {
48
+ rationale: "Implementing the PipeTransform interface provides TypeScript compile-time checking to ensure your pipe has the correct transform() method signature. Without the interface, typos in the method name or incorrect parameters won't be caught until runtime. The interface also serves as self-documentation and enables better IDE support like autocomplete and inline documentation. While Angular requires pipes to have a transform() method, using the PipeTransform interface leverages TypeScript's type system to catch implementation errors during development rather than at runtime.",
49
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-eslint/eslint-plugin",
3
- "version": "20.5.2",
3
+ "version": "20.5.3-alpha.1",
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,11 +19,11 @@
19
19
  ],
20
20
  "dependencies": {
21
21
  "ts-api-utils": "^2.1.0",
22
- "@angular-eslint/bundled-angular-compiler": "20.5.2",
23
- "@angular-eslint/utils": "20.5.2"
22
+ "@angular-eslint/utils": "20.5.3-alpha.1",
23
+ "@angular-eslint/bundled-angular-compiler": "20.5.3-alpha.1"
24
24
  },
25
25
  "devDependencies": {
26
- "@angular-eslint/test-utils": "20.5.2"
26
+ "@angular-eslint/test-utils": "20.5.3-alpha.1"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@typescript-eslint/utils": "^7.11.0 || ^8.0.0",