@ngrx/eslint-plugin 18.0.0-beta.1 → 18.0.0-rc.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 (205) hide show
  1. package/jest.config.d.ts +15 -0
  2. package/package.json +4 -5
  3. package/schematics/ng-add/index.d.ts +3 -0
  4. package/schematics/ng-add/index.js +32 -20
  5. package/schematics/ng-add/index.js.map +1 -1
  6. package/schematics/ng-add/schema.d.ts +3 -0
  7. package/schematics/ng-add/schema.js.map +1 -1
  8. package/schematics/ng-add/schema.json +16 -51
  9. package/scripts/generate-config.d.ts +1 -0
  10. package/scripts/generate-config.js +73 -73
  11. package/scripts/generate-config.js.map +1 -1
  12. package/scripts/generate-docs.d.ts +1 -0
  13. package/scripts/generate-docs.js +33 -65
  14. package/scripts/generate-docs.js.map +1 -1
  15. package/scripts/generate-overview.d.ts +1 -0
  16. package/scripts/generate-overview.js +43 -75
  17. package/scripts/generate-overview.js.map +1 -1
  18. package/spec/utils/from-fixture.d.ts +8 -0
  19. package/spec/utils/from-fixture.js +62 -0
  20. package/spec/utils/from-fixture.js.map +1 -0
  21. package/spec/utils/index.d.ts +2 -0
  22. package/spec/utils/index.js +16 -19
  23. package/spec/utils/index.js.map +1 -1
  24. package/spec/utils/rule-tester.d.ts +5 -0
  25. package/spec/utils/rule-tester.js +23 -0
  26. package/spec/utils/rule-tester.js.map +1 -0
  27. package/src/configs/all.d.ts +7 -0
  28. package/src/configs/all.js +56 -32
  29. package/src/configs/all.js.map +1 -1
  30. package/src/configs/all.json +42 -0
  31. package/src/configs/component-store.d.ts +7 -0
  32. package/src/configs/component-store.js +23 -8
  33. package/src/configs/component-store.js.map +1 -1
  34. package/src/configs/component-store.json +9 -0
  35. package/src/configs/effects.d.ts +7 -0
  36. package/src/configs/effects.js +32 -11
  37. package/src/configs/effects.js.map +1 -1
  38. package/src/configs/effects.json +18 -0
  39. package/src/configs/operators.d.ts +7 -0
  40. package/src/configs/operators.js +28 -0
  41. package/src/configs/operators.js.map +1 -0
  42. package/src/configs/operators.json +7 -0
  43. package/src/configs/signals.d.ts +7 -0
  44. package/src/configs/signals.js +34 -0
  45. package/src/configs/signals.js.map +1 -0
  46. package/src/configs/signals.json +13 -0
  47. package/src/configs/store.d.ts +7 -0
  48. package/src/configs/store.js +38 -23
  49. package/src/configs/store.js.map +1 -1
  50. package/src/configs/store.json +24 -0
  51. package/src/index.d.ts +153 -0
  52. package/src/index.js +18 -3
  53. package/src/index.js.map +1 -1
  54. package/src/rule-creator.d.ts +24 -0
  55. package/src/rule-creator.js +12 -58
  56. package/src/rule-creator.js.map +1 -1
  57. package/src/rules/component-store/avoid-combining-component-store-selectors.d.ts +3 -0
  58. package/src/rules/component-store/avoid-combining-component-store-selectors.js +22 -47
  59. package/src/rules/component-store/avoid-combining-component-store-selectors.js.map +1 -1
  60. package/src/rules/component-store/avoid-mapping-component-store-selectors.d.ts +3 -0
  61. package/src/rules/component-store/avoid-mapping-component-store-selectors.js +17 -20
  62. package/src/rules/component-store/avoid-mapping-component-store-selectors.js.map +1 -1
  63. package/src/rules/component-store/updater-explicit-return-type.d.ts +3 -0
  64. package/src/rules/component-store/updater-explicit-return-type.js +17 -20
  65. package/src/rules/component-store/updater-explicit-return-type.js.map +1 -1
  66. package/src/rules/effects/avoid-cyclic-effects.d.ts +4 -0
  67. package/src/rules/effects/avoid-cyclic-effects.js +47 -109
  68. package/src/rules/effects/avoid-cyclic-effects.js.map +1 -1
  69. package/src/rules/effects/no-dispatch-in-effects.d.ts +5 -0
  70. package/src/rules/effects/no-dispatch-in-effects.js +17 -21
  71. package/src/rules/effects/no-dispatch-in-effects.js.map +1 -1
  72. package/src/rules/effects/no-effects-in-providers.d.ts +3 -0
  73. package/src/rules/effects/no-effects-in-providers.js +18 -49
  74. package/src/rules/effects/no-effects-in-providers.js.map +1 -1
  75. package/src/rules/effects/no-multiple-actions-in-effects.d.ts +5 -0
  76. package/src/rules/effects/no-multiple-actions-in-effects.js +31 -24
  77. package/src/rules/effects/no-multiple-actions-in-effects.js.map +1 -1
  78. package/src/rules/effects/prefer-action-creator-in-of-type.d.ts +3 -0
  79. package/src/rules/effects/prefer-action-creator-in-of-type.js +10 -13
  80. package/src/rules/effects/prefer-action-creator-in-of-type.js.map +1 -1
  81. package/src/rules/effects/prefer-effect-callback-in-block-statement.d.ts +4 -0
  82. package/src/rules/effects/prefer-effect-callback-in-block-statement.js +24 -43
  83. package/src/rules/effects/prefer-effect-callback-in-block-statement.js.map +1 -1
  84. package/src/rules/effects/use-effects-lifecycle-interface.d.ts +3 -0
  85. package/src/rules/effects/use-effects-lifecycle-interface.js +21 -24
  86. package/src/rules/effects/use-effects-lifecycle-interface.js.map +1 -1
  87. package/src/rules/index.d.ts +35 -0
  88. package/src/rules/index.js +74 -53
  89. package/src/rules/index.js.map +1 -1
  90. package/src/rules/operators/prefer-concat-latest-from.d.ts +7 -0
  91. package/src/rules/operators/prefer-concat-latest-from.js +123 -0
  92. package/src/rules/operators/prefer-concat-latest-from.js.map +1 -0
  93. package/src/rules/signals/signal-state-no-arrays-at-root-level.d.ts +3 -0
  94. package/src/rules/signals/signal-state-no-arrays-at-root-level.js +59 -0
  95. package/src/rules/signals/signal-state-no-arrays-at-root-level.js.map +1 -0
  96. package/src/rules/signals/with-state-no-arrays-at-root-level.d.ts +4 -0
  97. package/src/rules/signals/with-state-no-arrays-at-root-level.js +72 -0
  98. package/src/rules/signals/with-state-no-arrays-at-root-level.js.map +1 -0
  99. package/src/rules/store/avoid-combining-selectors.d.ts +3 -0
  100. package/src/rules/store/avoid-combining-selectors.js +20 -45
  101. package/src/rules/store/avoid-combining-selectors.js.map +1 -1
  102. package/src/rules/store/avoid-dispatching-multiple-actions-sequentially.d.ts +3 -0
  103. package/src/rules/store/avoid-dispatching-multiple-actions-sequentially.js +20 -47
  104. package/src/rules/store/avoid-dispatching-multiple-actions-sequentially.js.map +1 -1
  105. package/src/rules/store/avoid-duplicate-actions-in-reducer.d.ts +5 -0
  106. package/src/rules/store/avoid-duplicate-actions-in-reducer.js +33 -101
  107. package/src/rules/store/avoid-duplicate-actions-in-reducer.js.map +1 -1
  108. package/src/rules/store/avoid-mapping-selectors.d.ts +3 -0
  109. package/src/rules/store/avoid-mapping-selectors.js +24 -30
  110. package/src/rules/store/avoid-mapping-selectors.js.map +1 -1
  111. package/src/rules/store/good-action-hygiene.d.ts +3 -0
  112. package/src/rules/store/good-action-hygiene.js +14 -34
  113. package/src/rules/store/good-action-hygiene.js.map +1 -1
  114. package/src/rules/store/no-multiple-global-stores.d.ts +6 -0
  115. package/src/rules/store/no-multiple-global-stores.js +34 -96
  116. package/src/rules/store/no-multiple-global-stores.js.map +1 -1
  117. package/src/rules/store/no-reducer-in-key-names.d.ts +5 -0
  118. package/src/rules/store/no-reducer-in-key-names.js +16 -20
  119. package/src/rules/store/no-reducer-in-key-names.js.map +1 -1
  120. package/src/rules/store/no-store-subscription.d.ts +3 -0
  121. package/src/rules/store/no-store-subscription.js +13 -16
  122. package/src/rules/store/no-store-subscription.js.map +1 -1
  123. package/src/rules/store/no-typed-global-store.d.ts +5 -0
  124. package/src/rules/store/no-typed-global-store.js +29 -70
  125. package/src/rules/store/no-typed-global-store.js.map +1 -1
  126. package/src/rules/store/on-function-explicit-return-type.d.ts +6 -0
  127. package/src/rules/store/on-function-explicit-return-type.js +23 -43
  128. package/src/rules/store/on-function-explicit-return-type.js.map +1 -1
  129. package/src/rules/store/prefer-action-creator-in-dispatch.d.ts +3 -0
  130. package/src/rules/store/prefer-action-creator-in-dispatch.js +15 -18
  131. package/src/rules/store/prefer-action-creator-in-dispatch.js.map +1 -1
  132. package/src/rules/store/prefer-action-creator.d.ts +3 -0
  133. package/src/rules/store/prefer-action-creator.js +10 -13
  134. package/src/rules/store/prefer-action-creator.js.map +1 -1
  135. package/src/rules/store/prefer-inline-action-props.d.ts +5 -0
  136. package/src/rules/store/prefer-inline-action-props.js +14 -18
  137. package/src/rules/store/prefer-inline-action-props.js.map +1 -1
  138. package/src/rules/store/prefer-one-generic-in-create-for-feature-selector.d.ts +5 -0
  139. package/src/rules/store/prefer-one-generic-in-create-for-feature-selector.js +16 -37
  140. package/src/rules/store/prefer-one-generic-in-create-for-feature-selector.js.map +1 -1
  141. package/src/rules/store/prefer-selector-in-select.d.ts +3 -0
  142. package/src/rules/store/prefer-selector-in-select.js +21 -46
  143. package/src/rules/store/prefer-selector-in-select.js.map +1 -1
  144. package/src/rules/store/prefix-selectors-with-select.d.ts +5 -0
  145. package/src/rules/store/prefix-selectors-with-select.js +26 -39
  146. package/src/rules/store/prefix-selectors-with-select.js.map +1 -1
  147. package/src/rules/store/select-style.d.ts +11 -0
  148. package/src/rules/store/select-style.js +53 -108
  149. package/src/rules/store/select-style.js.map +1 -1
  150. package/src/rules/store/use-consistent-global-store-name.d.ts +6 -0
  151. package/src/rules/store/use-consistent-global-store-name.js +24 -80
  152. package/src/rules/store/use-consistent-global-store-name.js.map +1 -1
  153. package/src/utils/helper-functions/docs.d.ts +1 -0
  154. package/src/utils/helper-functions/docs.js +1 -3
  155. package/src/utils/helper-functions/docs.js.map +1 -1
  156. package/src/utils/helper-functions/folder.d.ts +5 -0
  157. package/src/utils/helper-functions/folder.js +16 -88
  158. package/src/utils/helper-functions/folder.js.map +1 -1
  159. package/src/utils/helper-functions/guards.d.ts +97 -0
  160. package/src/utils/helper-functions/guards.js +27 -31
  161. package/src/utils/helper-functions/guards.js.map +1 -1
  162. package/src/utils/helper-functions/index.d.ts +6 -0
  163. package/src/utils/helper-functions/ngrx-modules.d.ts +8 -0
  164. package/src/utils/helper-functions/ngrx-modules.js +7 -6
  165. package/src/utils/helper-functions/ngrx-modules.js.map +1 -1
  166. package/src/utils/helper-functions/rules.d.ts +3 -0
  167. package/src/utils/helper-functions/rules.js +47 -0
  168. package/src/utils/helper-functions/rules.js.map +1 -0
  169. package/src/utils/helper-functions/utils.d.ts +48 -0
  170. package/src/utils/helper-functions/utils.js +68 -143
  171. package/src/utils/helper-functions/utils.js.map +1 -1
  172. package/src/utils/helper-functions/versions.d.ts +1 -0
  173. package/src/utils/helper-functions/versions.js +10 -11
  174. package/src/utils/helper-functions/versions.js.map +1 -1
  175. package/src/utils/index.d.ts +2 -0
  176. package/src/utils/selectors/index.d.ts +29 -0
  177. package/src/utils/selectors/index.js +30 -44
  178. package/src/utils/selectors/index.js.map +1 -1
  179. package/v9/index.d.ts +29 -0
  180. package/v9/index.js +38 -0
  181. package/v9/index.js.map +1 -0
  182. package/src/configs/all-requiring-type-checking.js +0 -46
  183. package/src/configs/all-requiring-type-checking.js.map +0 -1
  184. package/src/configs/component-store-strict.js +0 -15
  185. package/src/configs/component-store-strict.js.map +0 -1
  186. package/src/configs/effects-requiring-type-checking.js +0 -25
  187. package/src/configs/effects-requiring-type-checking.js.map +0 -1
  188. package/src/configs/effects-strict-requiring-type-checking.js +0 -25
  189. package/src/configs/effects-strict-requiring-type-checking.js.map +0 -1
  190. package/src/configs/effects-strict.js +0 -18
  191. package/src/configs/effects-strict.js.map +0 -1
  192. package/src/configs/index.js +0 -33
  193. package/src/configs/index.js.map +0 -1
  194. package/src/configs/recommended-requiring-type-checking.js +0 -46
  195. package/src/configs/recommended-requiring-type-checking.js.map +0 -1
  196. package/src/configs/recommended.js +0 -39
  197. package/src/configs/recommended.js.map +0 -1
  198. package/src/configs/store-strict.js +0 -30
  199. package/src/configs/store-strict.js.map +0 -1
  200. package/src/configs/strict-requiring-type-checking.js +0 -46
  201. package/src/configs/strict-requiring-type-checking.js.map +0 -1
  202. package/src/configs/strict.js +0 -39
  203. package/src/configs/strict.js.map +0 -1
  204. package/src/rules/effects/prefer-concat-latest-from.js +0 -153
  205. package/src/rules/effects/prefer-concat-latest-from.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ displayName: string;
3
+ preset: string;
4
+ coverageDirectory: string;
5
+ setupFilesAfterEnv: string[];
6
+ transform: {
7
+ '^.+\\.(ts|mjs|js|html)$': (string | {
8
+ tsconfig: string;
9
+ stringifyContentPathRegex: string;
10
+ })[];
11
+ };
12
+ transformIgnorePatterns: string[];
13
+ snapshotSerializers: string[];
14
+ };
15
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngrx/eslint-plugin",
3
- "version": "18.0.0-beta.1",
3
+ "version": "18.0.0-rc.1",
4
4
  "description": "NgRx ESLint Plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,15 +40,14 @@
40
40
  },
41
41
  "sideEffects": false,
42
42
  "dependencies": {
43
- "@typescript-eslint/experimental-utils": "^5.4.0",
44
- "eslint-etc": "^5.1.0",
45
43
  "semver": "^7.3.5",
46
44
  "strip-json-comments": "3.1.1"
47
45
  },
48
46
  "peerDependencies": {
49
- "eslint": ">=8.0.0",
47
+ "eslint": "^8.57.0 || ^9.0.0",
48
+ "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20",
50
49
  "typescript": "*"
51
50
  },
52
51
  "main": "./src/index.js",
53
52
  "type": "commonjs"
54
- }
53
+ }
@@ -0,0 +1,3 @@
1
+ import type { Rule } from '@angular-devkit/schematics';
2
+ import type { Schema } from './schema';
3
+ export default function addNgRxESLintPlugin(schema: Schema): Rule;
@@ -3,47 +3,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var strip_json_comments_1 = __importDefault(require("strip-json-comments"));
6
+ const strip_json_comments_1 = __importDefault(require("strip-json-comments"));
7
7
  function addNgRxESLintPlugin(schema) {
8
- return function (host, context) {
9
- var _a, _b;
10
- var eslintConfigPath = '.eslintrc.json';
11
- var docs = 'https://ngrx.io/guide/eslint-plugin';
12
- var eslint = (_a = host.read(eslintConfigPath)) === null || _a === void 0 ? void 0 : _a.toString('utf-8');
8
+ return (host, context) => {
9
+ const eslintConfigPath = '.eslintrc.json';
10
+ const docs = 'https://ngrx.io/guide/eslint-plugin';
11
+ const eslint = host.read(eslintConfigPath)?.toString('utf-8');
13
12
  if (!eslint) {
14
- context.logger.warn("\nCould not find the ESLint config at `".concat(eslintConfigPath, "`.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ").concat(docs, " to configure the NgRx ESLint Plugin.\n"));
13
+ context.logger.warn(`
14
+ Could not find the ESLint config at \`${eslintConfigPath}\`.
15
+ The NgRx ESLint Plugin is installed but not configured.
16
+
17
+ Please see ${docs} to configure the NgRx ESLint Plugin.
18
+ `);
15
19
  return host;
16
20
  }
17
21
  try {
18
- var json = JSON.parse((0, strip_json_comments_1.default)(eslint));
22
+ const json = JSON.parse((0, strip_json_comments_1.default)(eslint));
19
23
  if (json.overrides) {
20
- if (!json.overrides.some(function (override) {
21
- var _a;
22
- return (_a = override.extends) === null || _a === void 0 ? void 0 : _a.some(function (extend) {
23
- return extend.startsWith('plugin:@ngrx');
24
- });
25
- })) {
24
+ if (!json.overrides.some((override) => override.extends?.some((extend) => extend.startsWith('plugin:@ngrx')))) {
26
25
  json.overrides.push(configurePlugin(schema.config));
27
26
  }
28
27
  }
29
- else if (!((_b = json.extends) === null || _b === void 0 ? void 0 : _b.some(function (extend) { return extend.startsWith('plugin:@ngrx'); }))) {
28
+ else if (!json.extends?.some((extend) => extend.startsWith('plugin:@ngrx'))) {
30
29
  json.overrides = [configurePlugin(schema.config)];
31
30
  }
32
31
  host.overwrite(eslintConfigPath, JSON.stringify(json, null, 2));
33
- context.logger.info("\n The NgRx ESLint Plugin is installed and configured with the '".concat(schema.config, "' config.\n\n Take a look at the docs at ").concat(docs, " if you want to change the default configuration.\n "));
32
+ context.logger.info(`
33
+ The NgRx ESLint Plugin is installed and configured with the '${schema.config}' config.
34
+
35
+ Take a look at the docs at ${docs} if you want to change the default configuration.
36
+ `);
34
37
  return host;
35
38
  }
36
39
  catch (err) {
37
- var detailsContent = err instanceof Error
38
- ? "\nDetails:\n".concat(err.message, "\n")
40
+ const detailsContent = err instanceof Error
41
+ ? `
42
+ Details:
43
+ ${err.message}
44
+ `
39
45
  : '';
40
- context.logger.warn("\nSomething went wrong while adding the NgRx ESLint Plugin.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ".concat(docs, " to configure the NgRx ESLint Plugin.\n").concat(detailsContent, "\n"));
46
+ context.logger.warn(`
47
+ Something went wrong while adding the NgRx ESLint Plugin.
48
+ The NgRx ESLint Plugin is installed but not configured.
49
+
50
+ Please see ${docs} to configure the NgRx ESLint Plugin.
51
+ ${detailsContent}
52
+ `);
41
53
  }
42
54
  };
43
55
  function configurePlugin(config) {
44
56
  return {
45
57
  files: ['*.ts'],
46
- extends: ["plugin:@ngrx/".concat(config)],
58
+ extends: [`plugin:@ngrx/${config}`],
47
59
  };
48
60
  }
49
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/schematics/ng-add/index.ts"],"names":[],"mappings":";;;;;AACA,4EAAoD;AAGpD,SAAwB,mBAAmB,CAAC,MAAc;IACxD,OAAO,UAAC,IAAU,EAAE,OAAyB;;QAC3C,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;QAC1C,IAAM,IAAI,GAAG,qCAAqC,CAAC;QAEnD,IAAM,MAAM,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDACc,gBAAgB,uFAG3C,IAAI,4CAChB,CAAC,CAAC;YACG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IACE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,QAAa;;oBACjC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI,CAAC,UAAC,MAAW;wBACjC,OAAA,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;oBAAjC,CAAiC,CAClC,CAAA;iBAAA,CACF,EACD,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,UAAC,MAAW,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAjC,CAAiC,CAAC,CAAA,EACvE,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,2EACuC,MAAM,CAAC,MAAM,uDAE/C,IAAI,0DAChC,CAAC,CAAC;YACC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAM,cAAc,GAClB,GAAG,YAAY,KAAK;gBAClB,CAAC,CAAC,sBAEV,GAAG,CAAC,OAAO,OACZ;gBACS,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6IAIb,IAAI,oDACf,cAAc,OACf,CAAC,CAAC;QACC,CAAC;IACH,CAAC,CAAC;IACF,SAAS,eAAe,CAAC,MAAwB;QAC/C,OAAO;YACL,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,OAAO,EAAE,CAAC,uBAAgB,MAAM,CAAE,CAAC;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAjED,sCAiEC","sourcesContent":["import type { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport stripJsonComments from 'strip-json-comments';\nimport type { Schema } from './schema';\n\nexport default function addNgRxESLintPlugin(schema: Schema): Rule {\n return (host: Tree, context: SchematicContext) => {\n const eslintConfigPath = '.eslintrc.json';\n const docs = 'https://ngrx.io/guide/eslint-plugin';\n\n const eslint = host.read(eslintConfigPath)?.toString('utf-8');\n if (!eslint) {\n context.logger.warn(`\nCould not find the ESLint config at \\`${eslintConfigPath}\\`.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ${docs} to configure the NgRx ESLint Plugin.\n`);\n return host;\n }\n\n try {\n const json = JSON.parse(stripJsonComments(eslint));\n if (json.overrides) {\n if (\n !json.overrides.some((override: any) =>\n override.extends?.some((extend: any) =>\n extend.startsWith('plugin:@ngrx')\n )\n )\n ) {\n json.overrides.push(configurePlugin(schema.config));\n }\n } else if (\n !json.extends?.some((extend: any) => extend.startsWith('plugin:@ngrx'))\n ) {\n json.overrides = [configurePlugin(schema.config)];\n }\n\n host.overwrite(eslintConfigPath, JSON.stringify(json, null, 2));\n\n context.logger.info(`\n The NgRx ESLint Plugin is installed and configured with the '${schema.config}' config.\n\n Take a look at the docs at ${docs} if you want to change the default configuration.\n `);\n return host;\n } catch (err) {\n const detailsContent =\n err instanceof Error\n ? `\nDetails:\n${err.message}\n`\n : '';\n context.logger.warn(`\nSomething went wrong while adding the NgRx ESLint Plugin.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ${docs} to configure the NgRx ESLint Plugin.\n${detailsContent}\n`);\n }\n };\n function configurePlugin(config: Schema['config']): Record<string, unknown> {\n return {\n files: ['*.ts'],\n extends: [`plugin:@ngrx/${config}`],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/schematics/ng-add/index.ts"],"names":[],"mappings":";;;;;AACA,8EAAoD;AAGpD,SAAwB,mBAAmB,CAAC,MAAc;IACxD,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;QAC1C,MAAM,IAAI,GAAG,qCAAqC,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wCACc,gBAAgB;;;aAG3C,IAAI;CAChB,CAAC,CAAC;YACG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IACE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAa,EAAE,EAAE,CACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CACrC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAClC,CACF,EACD,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EACvE,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;iEACuC,MAAM,CAAC,MAAM;;+BAE/C,IAAI;GAChC,CAAC,CAAC;YACC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,cAAc,GAClB,GAAG,YAAY,KAAK;gBAClB,CAAC,CAAC;;EAEV,GAAG,CAAC,OAAO;CACZ;gBACS,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;;;;aAIb,IAAI;EACf,cAAc;CACf,CAAC,CAAC;QACC,CAAC;IACH,CAAC,CAAC;IACF,SAAS,eAAe,CAAC,MAAwB;QAC/C,OAAO;YACL,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,OAAO,EAAE,CAAC,gBAAgB,MAAM,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAjED,sCAiEC","sourcesContent":["import type { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport stripJsonComments from 'strip-json-comments';\nimport type { Schema } from './schema';\n\nexport default function addNgRxESLintPlugin(schema: Schema): Rule {\n return (host: Tree, context: SchematicContext) => {\n const eslintConfigPath = '.eslintrc.json';\n const docs = 'https://ngrx.io/guide/eslint-plugin';\n\n const eslint = host.read(eslintConfigPath)?.toString('utf-8');\n if (!eslint) {\n context.logger.warn(`\nCould not find the ESLint config at \\`${eslintConfigPath}\\`.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ${docs} to configure the NgRx ESLint Plugin.\n`);\n return host;\n }\n\n try {\n const json = JSON.parse(stripJsonComments(eslint));\n if (json.overrides) {\n if (\n !json.overrides.some((override: any) =>\n override.extends?.some((extend: any) =>\n extend.startsWith('plugin:@ngrx')\n )\n )\n ) {\n json.overrides.push(configurePlugin(schema.config));\n }\n } else if (\n !json.extends?.some((extend: any) => extend.startsWith('plugin:@ngrx'))\n ) {\n json.overrides = [configurePlugin(schema.config)];\n }\n\n host.overwrite(eslintConfigPath, JSON.stringify(json, null, 2));\n\n context.logger.info(`\n The NgRx ESLint Plugin is installed and configured with the '${schema.config}' config.\n\n Take a look at the docs at ${docs} if you want to change the default configuration.\n `);\n return host;\n } catch (err) {\n const detailsContent =\n err instanceof Error\n ? `\nDetails:\n${err.message}\n`\n : '';\n context.logger.warn(`\nSomething went wrong while adding the NgRx ESLint Plugin.\nThe NgRx ESLint Plugin is installed but not configured.\n\nPlease see ${docs} to configure the NgRx ESLint Plugin.\n${detailsContent}\n`);\n }\n };\n function configurePlugin(config: Schema['config']): Record<string, unknown> {\n return {\n files: ['*.ts'],\n extends: [`plugin:@ngrx/${config}`],\n };\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export interface Schema {
2
+ config: 'all' | 'store' | 'effects' | 'component-store' | 'signals';
3
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/schematics/ng-add/schema.ts"],"names":[],"mappings":"","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Schema {\n config:\n | 'recommended'\n | 'strict'\n | 'store'\n | 'effects'\n | 'component-store'\n | 'all';\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/schematics/ng-add/schema.ts"],"names":[],"mappings":"","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Schema {\n config: 'all' | 'store' | 'effects' | 'component-store' | 'signals';\n}\n"]}
@@ -7,77 +7,42 @@
7
7
  "config": {
8
8
  "description": "The config to be used.",
9
9
  "type": "string",
10
- "default": "recommended",
10
+ "default": "all",
11
11
  "enum": [
12
- "recommended",
13
- "recommended-requiring-type-checking",
14
- "strict",
15
- "strict-requiring-type-checking",
16
- "store",
17
- "store-strict",
18
- "effects",
19
- "effects-requiring-type-checking",
20
- "effects-strict",
21
- "component-store",
22
- "component-store-strict",
23
12
  "all",
24
- "all-requiring-type-checking"
13
+ "component-store",
14
+ "effects",
15
+ "operators",
16
+ "signals",
17
+ "store"
25
18
  ],
26
19
  "x-prompt": {
27
20
  "message": "Which ESLint configuration would you like to use?",
28
21
  "type": "list",
29
22
  "items": [
30
23
  {
31
- "value": "recommended",
32
- "label": "recommended"
33
- },
34
- {
35
- "value": "recommended-requiring-type-checking",
36
- "label": "recommended with type checking"
37
- },
38
- {
39
- "value": "strict",
40
- "label": "strict"
41
- },
42
- {
43
- "value": "strict-requiring-type-checking",
44
- "label": "strict with type checking"
45
- },
46
- {
47
- "value": "store",
48
- "label": "store"
24
+ "value": "all",
25
+ "label": "all"
49
26
  },
50
27
  {
51
- "value": "store-strict",
52
- "label": "strict store"
28
+ "value": "component-store",
29
+ "label": "component-store"
53
30
  },
54
31
  {
55
32
  "value": "effects",
56
33
  "label": "effects"
57
34
  },
58
35
  {
59
- "value": "effects-requiring-type-checking",
60
- "label": "effects with type checking"
61
- },
62
- {
63
- "value": "effects-strict",
64
- "label": "strict effects"
36
+ "value": "operators",
37
+ "label": "operators"
65
38
  },
66
39
  {
67
- "value": "component-store",
68
- "label": "component-store"
40
+ "value": "signals",
41
+ "label": "signals"
69
42
  },
70
43
  {
71
- "value": "component-store-strict",
72
- "label": "strict component-store"
73
- },
74
- {
75
- "value": "all",
76
- "label": "all"
77
- },
78
- {
79
- "value": "all-requiring-type-checking",
80
- "label": "all with type checking"
44
+ "value": "store",
45
+ "label": "store"
81
46
  }
82
47
  ]
83
48
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,85 +1,85 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
2
  Object.defineProperty(exports, "__esModule", { value: true });
30
- var fs_1 = require("fs");
31
- var path_1 = require("path");
32
- var prettier_1 = require("prettier");
33
- var rules_1 = require("../src/rules");
34
- var prettierConfig = prettier_1.resolveConfig.sync(__dirname);
35
- var RULE_MODULE = '@ngrx';
36
- var CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';
37
- writeConfig('recommended', function (rule) { var _a, _b; return !!((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended) && !((_b = rule.meta.docs) === null || _b === void 0 ? void 0 : _b.requiresTypeChecking); });
38
- writeConfig('all', function (rule) { var _a; return !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); });
39
- writeConfig('strict', function (rule) { var _a; return !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); }, function () { return 'error'; });
40
- writeConfig('recommended-requiring-type-checking', function (rule) { var _a; return !!((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended); });
41
- writeConfig('all-requiring-type-checking', function () { return true; });
42
- writeConfig('strict-requiring-type-checking', function () { return true; }, function () { return 'error'; });
43
- writeConfig('store', function (rule) { var _a; return rule.meta.ngrxModule === 'store' && !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); });
44
- writeConfig('store-strict', function (rule) { var _a; return rule.meta.ngrxModule === 'store' && !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); }, function () { return 'error'; });
45
- writeConfig('effects', function (rule) { var _a; return rule.meta.ngrxModule === 'effects' && !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); });
46
- writeConfig('effects-strict', function (rule) { var _a; return rule.meta.ngrxModule === 'effects' && !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking); }, function () { return 'error'; });
47
- writeConfig('effects-requiring-type-checking', function (rule) { return rule.meta.ngrxModule === 'effects'; });
48
- writeConfig('effects-strict-requiring-type-checking', function (rule) { return rule.meta.ngrxModule === 'effects'; }, function () { return 'error'; });
49
- writeConfig('component-store', function (rule) {
50
- var _a;
51
- return rule.meta.ngrxModule === 'component-store' &&
52
- !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking);
53
- });
54
- writeConfig('component-store-strict', function (rule) {
55
- var _a;
56
- return rule.meta.ngrxModule === 'component-store' &&
57
- !((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.requiresTypeChecking);
58
- }, function () { return 'error'; });
59
- function writeConfig(configName, predicate, setting) {
60
- if (setting === void 0) { setting = function (rule) { var _a; return ((_a = rule.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended) || 'warn'; }; }
61
- var rulesForConfig = Object.entries(rules_1.rules).filter(function (_a) {
62
- var _b = __read(_a, 2), _ = _b[0], rule = _b[1];
63
- return predicate(rule);
64
- });
65
- var configRules = rulesForConfig.reduce(function (rules, _a) {
66
- var _b = __read(_a, 2), ruleName = _b[0], rule = _b[1];
67
- rules["".concat(RULE_MODULE, "/").concat(ruleName)] = setting(rule);
3
+ const fs_1 = require("fs");
4
+ const path_1 = require("path");
5
+ const prettier_1 = require("prettier");
6
+ const rules_1 = require("../src/utils/helper-functions/rules");
7
+ const prettierConfig = prettier_1.resolveConfig.sync(__dirname);
8
+ const RULE_MODULE = '@ngrx';
9
+ const CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';
10
+ writeConfig('all', (_rule) => true);
11
+ writeConfig('store', (rule) => rule.meta.ngrxModule === 'store');
12
+ writeConfig('effects', (rule) => rule.meta.ngrxModule === 'effects');
13
+ writeConfig('component-store', (rule) => rule.meta.ngrxModule === 'component-store');
14
+ writeConfig('operators', (rule) => rule.meta.ngrxModule === 'operators');
15
+ writeConfig('signals', (rule) => rule.meta.ngrxModule === 'signals');
16
+ function writeConfig(configName, predicate) {
17
+ const rulesForConfig = Object.entries(rules_1.rulesForGenerate).filter(([_, rule]) => predicate(rule));
18
+ const configRules = rulesForConfig.reduce((rules, [ruleName, _rule]) => {
19
+ rules[`${RULE_MODULE}/${ruleName}`] = 'error';
68
20
  return rules;
69
21
  }, {});
70
- var parserOptions = rulesForConfig.some(function (_a) {
71
- var _b;
72
- var _c = __read(_a, 2), _ = _c[0], rule = _c[1];
73
- return (_b = rule.meta.docs) === null || _b === void 0 ? void 0 : _b.requiresTypeChecking;
74
- })
22
+ const requireParserOptions = rulesForConfig.some(([_, rule]) => rule.meta.docs?.requiresTypeChecking)
75
23
  ? {
76
24
  ecmaVersion: 2020,
77
25
  sourceType: 'module',
78
26
  project: './tsconfig.json',
79
27
  }
80
28
  : null;
81
- var code = "\n/**\n * DO NOT EDIT\n * This file is generated\n */\n\nexport = {\n parser: \"@typescript-eslint/parser\",\n ".concat(parserOptions ? "parserOptions: ".concat(JSON.stringify(parserOptions), ",") : '', "\n plugins: [\"").concat(RULE_MODULE, "\"],\n rules: ").concat(JSON.stringify(configRules), ",\n}\n");
82
- var config = (0, prettier_1.format)(code, __assign({ parser: 'typescript' }, prettierConfig));
83
- (0, fs_1.writeFileSync)((0, path_1.join)(CONFIG_DIRECTORY, "".concat(configName, ".ts")), config);
29
+ const tsCode = `
30
+ /**
31
+ * DO NOT EDIT
32
+ * This file is generated
33
+ */
34
+
35
+ import type { TSESLint } from '@typescript-eslint/utils';
36
+
37
+ export default (
38
+ plugin: TSESLint.FlatConfig.Plugin,
39
+ parser: TSESLint.FlatConfig.Parser,
40
+ ): TSESLint.FlatConfig.ConfigArray => [
41
+ {
42
+ name: 'ngrx/base',
43
+ languageOptions: {
44
+ parser,
45
+ sourceType: 'module',
46
+ },
47
+ plugins: {
48
+ '@ngrx': plugin,
49
+ },
50
+ },
51
+ {
52
+ name: 'ngrx/${configName}',
53
+ languageOptions: {
54
+ parser,
55
+ ${requireParserOptions
56
+ ? `parserOptions: ${JSON.stringify(requireParserOptions, null, 2)},`
57
+ : ''}
58
+ },
59
+ rules: ${JSON.stringify(configRules, null, 2)}
60
+ },
61
+ ];`;
62
+ const tsConfigFormatted = (0, prettier_1.format)(tsCode, {
63
+ parser: 'typescript',
64
+ ...prettierConfig,
65
+ });
66
+ (0, fs_1.writeFileSync)((0, path_1.join)(CONFIG_DIRECTORY, `${configName}.ts`), tsConfigFormatted);
67
+ const jsonConfig = {
68
+ parser: '@typescript-eslint/parser',
69
+ plugins: ['@ngrx'],
70
+ rules: configRules,
71
+ };
72
+ if (requireParserOptions) {
73
+ jsonConfig.parserOptions = {
74
+ ecmaVersion: 2020,
75
+ sourceType: 'module',
76
+ project: './tsconfig.json',
77
+ };
78
+ }
79
+ const jsonConfigFormatted = (0, prettier_1.format)(JSON.stringify(jsonConfig, null, 2), {
80
+ parser: 'json',
81
+ ...prettierConfig,
82
+ });
83
+ (0, fs_1.writeFileSync)((0, path_1.join)(CONFIG_DIRECTORY, `${configName}.json`), jsonConfigFormatted);
84
84
  }
85
85
  //# sourceMappingURL=generate-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-config.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeFileSync } from 'fs';\nimport { join } from 'path';\nimport { format, resolveConfig } from 'prettier';\nimport type { NgRxRuleModule } from '../src/rule-creator';\nimport { rules } from '../src/rules';\n\nconst prettierConfig = resolveConfig.sync(__dirname);\n\nconst RULE_MODULE = '@ngrx';\nconst CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';\n\nwriteConfig(\n 'recommended',\n (rule) =>\n !!rule.meta.docs?.recommended && !rule.meta.docs?.requiresTypeChecking\n);\n\nwriteConfig('all', (rule) => !rule.meta.docs?.requiresTypeChecking);\n\nwriteConfig(\n 'strict',\n (rule) => !rule.meta.docs?.requiresTypeChecking,\n () => 'error'\n);\n\nwriteConfig(\n 'recommended-requiring-type-checking',\n (rule) => !!rule.meta.docs?.recommended\n);\n\nwriteConfig('all-requiring-type-checking', () => true);\n\nwriteConfig(\n 'strict-requiring-type-checking',\n () => true,\n () => 'error'\n);\n\nwriteConfig(\n 'store',\n (rule) =>\n rule.meta.ngrxModule === 'store' && !rule.meta.docs?.requiresTypeChecking\n);\n\nwriteConfig(\n 'store-strict',\n (rule) =>\n rule.meta.ngrxModule === 'store' && !rule.meta.docs?.requiresTypeChecking,\n () => 'error'\n);\n\nwriteConfig(\n 'effects',\n (rule) =>\n rule.meta.ngrxModule === 'effects' && !rule.meta.docs?.requiresTypeChecking\n);\n\nwriteConfig(\n 'effects-strict',\n (rule) =>\n rule.meta.ngrxModule === 'effects' && !rule.meta.docs?.requiresTypeChecking,\n () => 'error'\n);\n\nwriteConfig(\n 'effects-requiring-type-checking',\n (rule) => rule.meta.ngrxModule === 'effects'\n);\n\nwriteConfig(\n 'effects-strict-requiring-type-checking',\n (rule) => rule.meta.ngrxModule === 'effects',\n () => 'error'\n);\n\nwriteConfig(\n 'component-store',\n (rule) =>\n rule.meta.ngrxModule === 'component-store' &&\n !rule.meta.docs?.requiresTypeChecking\n);\n\nwriteConfig(\n 'component-store-strict',\n (rule) =>\n rule.meta.ngrxModule === 'component-store' &&\n !rule.meta.docs?.requiresTypeChecking,\n () => 'error'\n);\n\nfunction writeConfig(\n configName:\n | 'all'\n | 'recommended'\n | 'strict'\n | 'all-requiring-type-checking'\n | 'recommended-requiring-type-checking'\n | 'strict-requiring-type-checking'\n | 'store'\n | 'store-strict'\n | 'effects'\n | 'effects-requiring-type-checking'\n | 'effects-strict'\n | 'effects-strict-requiring-type-checking'\n | 'component-store'\n | 'component-store-strict',\n predicate: (rule: NgRxRuleModule<[], string>) => boolean,\n setting = (rule: NgRxRuleModule<[], string>) =>\n rule.meta.docs?.recommended || 'warn'\n) {\n const rulesForConfig = Object.entries(rules).filter(([_, rule]) =>\n predicate(rule)\n );\n const configRules = rulesForConfig.reduce<Record<string, string>>(\n (rules, [ruleName, rule]) => {\n rules[`${RULE_MODULE}/${ruleName}`] = setting(rule);\n return rules;\n },\n {}\n );\n const parserOptions: null | Record<string, string | number> =\n rulesForConfig.some(([_, rule]) => rule.meta.docs?.requiresTypeChecking)\n ? {\n ecmaVersion: 2020,\n sourceType: 'module',\n project: './tsconfig.json',\n }\n : null;\n\n const code = `\n/**\n * DO NOT EDIT\n * This file is generated\n */\n\nexport = {\n parser: \"@typescript-eslint/parser\",\n ${parserOptions ? `parserOptions: ${JSON.stringify(parserOptions)},` : ''}\n plugins: [\"${RULE_MODULE}\"],\n rules: ${JSON.stringify(configRules)},\n}\n`;\n const config = format(code, {\n parser: 'typescript',\n ...prettierConfig,\n });\n writeFileSync(join(CONFIG_DIRECTORY, `${configName}.ts`), config);\n}\n"]}
1
+ {"version":3,"file":"generate-config.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeFileSync } from 'fs';\nimport { join } from 'path';\nimport { format, resolveConfig } from 'prettier';\nimport type { NgRxRuleModule } from '../src/rule-creator';\nimport { rulesForGenerate } from '../src/utils/helper-functions/rules';\n\nconst prettierConfig = resolveConfig.sync(__dirname);\n\nconst RULE_MODULE = '@ngrx';\nconst CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';\n\nwriteConfig('all', (_rule) => true);\nwriteConfig('store', (rule) => rule.meta.ngrxModule === 'store');\nwriteConfig('effects', (rule) => rule.meta.ngrxModule === 'effects');\nwriteConfig(\n 'component-store',\n (rule) => rule.meta.ngrxModule === 'component-store'\n);\nwriteConfig('operators', (rule) => rule.meta.ngrxModule === 'operators');\nwriteConfig('signals', (rule) => rule.meta.ngrxModule === 'signals');\n\nfunction writeConfig(\n configName:\n | 'all'\n | 'store'\n | 'effects'\n | 'component-store'\n | 'operators'\n | 'signals',\n predicate: (rule: NgRxRuleModule<[], string>) => boolean\n) {\n const rulesForConfig = Object.entries(rulesForGenerate).filter(([_, rule]) =>\n predicate(rule)\n );\n const configRules = rulesForConfig.reduce<Record<string, string>>(\n (rules, [ruleName, _rule]) => {\n rules[`${RULE_MODULE}/${ruleName}`] = 'error';\n return rules;\n },\n {}\n );\n const requireParserOptions: null | Record<string, string | number> =\n rulesForConfig.some(([_, rule]) => rule.meta.docs?.requiresTypeChecking)\n ? {\n ecmaVersion: 2020,\n sourceType: 'module',\n project: './tsconfig.json',\n }\n : null;\n\n const tsCode = `\n /**\n * DO NOT EDIT\n * This file is generated\n */\n\n import type { TSESLint } from '@typescript-eslint/utils';\n\n export default (\n plugin: TSESLint.FlatConfig.Plugin,\n parser: TSESLint.FlatConfig.Parser,\n ): TSESLint.FlatConfig.ConfigArray => [\n {\n name: 'ngrx/base',\n languageOptions: {\n parser,\n sourceType: 'module',\n },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/${configName}',\n languageOptions: {\n parser,\n ${\n requireParserOptions\n ? `parserOptions: ${JSON.stringify(\n requireParserOptions,\n null,\n 2\n )},`\n : ''\n }\n },\n rules: ${JSON.stringify(configRules, null, 2)}\n },\n ];`;\n const tsConfigFormatted = format(tsCode, {\n parser: 'typescript',\n ...prettierConfig,\n });\n writeFileSync(join(CONFIG_DIRECTORY, `${configName}.ts`), tsConfigFormatted);\n\n const jsonConfig: { [key: string]: any } = {\n parser: '@typescript-eslint/parser',\n plugins: ['@ngrx'],\n rules: configRules,\n };\n if (requireParserOptions) {\n jsonConfig.parserOptions = {\n ecmaVersion: 2020,\n sourceType: 'module',\n project: './tsconfig.json',\n };\n }\n const jsonConfigFormatted = format(JSON.stringify(jsonConfig, null, 2), {\n parser: 'json',\n ...prettierConfig,\n });\n\n writeFileSync(\n join(CONFIG_DIRECTORY, `${configName}.json`),\n jsonConfigFormatted\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -33,61 +22,40 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
22
  __setModuleDefault(result, mod);
34
23
  return result;
35
24
  };
36
- var __values = (this && this.__values) || function(o) {
37
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
38
- if (m) return m.call(o);
39
- if (o && typeof o.length === "number") return {
40
- next: function () {
41
- if (o && i >= o.length) o = void 0;
42
- return { value: o && o[i++], done: !o };
43
- }
44
- };
45
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
46
- };
47
- var __read = (this && this.__read) || function (o, n) {
48
- var m = typeof Symbol === "function" && o[Symbol.iterator];
49
- if (!m) return o;
50
- var i = m.call(o), r, ar = [], e;
51
- try {
52
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
53
- }
54
- catch (error) { e = { error: error }; }
55
- finally {
56
- try {
57
- if (r && !r.done && (m = i["return"])) m.call(i);
58
- }
59
- finally { if (e) throw e.error; }
60
- }
61
- return ar;
62
- };
63
- var e_1, _a;
64
- var _b, _c, _d;
65
25
  Object.defineProperty(exports, "__esModule", { value: true });
66
- var fs_1 = require("fs");
67
- var path = __importStar(require("path"));
68
- var prettier_1 = require("prettier");
69
- var rules_1 = require("../src/rules");
70
- var prettierConfig = prettier_1.resolveConfig.sync(__dirname);
71
- var PLACEHOLDER = '<!-- MANUAL-DOC:START -->';
72
- var RULES_PATH = './projects/ngrx.io/content/guide/eslint-plugin/rules';
73
- try {
74
- for (var _e = __values(Object.entries(rules_1.rules)), _f = _e.next(); !_f.done; _f = _e.next()) {
75
- var _g = __read(_f.value, 2), ruleName = _g[0], meta = _g[1].meta;
76
- var docPath = path.join(RULES_PATH, "".concat(ruleName, ".md"));
77
- if (!(0, fs_1.existsSync)(docPath)) {
78
- (0, fs_1.writeFileSync)(docPath, "");
79
- }
80
- var doc = (0, fs_1.readFileSync)(docPath, 'utf-8');
81
- var docContent = doc.substring(doc.indexOf(PLACEHOLDER) + PLACEHOLDER.length);
82
- var newDoc = (0, prettier_1.format)("# ".concat(ruleName, "\n\n").concat(meta.version ? '> Required NgRx Version Range: ${meta.version}' : '', " \n\n").concat((_b = meta.docs) === null || _b === void 0 ? void 0 : _b.description, "\n\n- **Type**: ").concat(meta.type, "\n- **Recommended**: ").concat(((_c = meta.docs) === null || _c === void 0 ? void 0 : _c.recommended) ? 'Yes' : 'No', "\n- **Fixable**: ").concat(meta.fixable ? 'Yes' : 'No', "\n- **Suggestion**: ").concat(meta.hasSuggestions ? 'Yes' : 'No', "\n- **Requires type checking**: ").concat(((_d = meta.docs) === null || _d === void 0 ? void 0 : _d.requiresTypeChecking) ? 'Yes' : 'No', "\n- **Configurable**: ").concat(meta.schema.length ? 'Yes' : 'No', "\n\n<!-- Everything above this generated, do not edit -->\n<!-- MANUAL-DOC:START -->\n\n").concat(docContent), __assign({ parser: 'markdown' }, prettierConfig));
83
- (0, fs_1.writeFileSync)(docPath, newDoc);
84
- }
85
- }
86
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
87
- finally {
88
- try {
89
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
26
+ const fs_1 = require("fs");
27
+ const path = __importStar(require("path"));
28
+ const prettier_1 = require("prettier");
29
+ const rules_1 = require("../src/utils/helper-functions/rules");
30
+ const prettierConfig = prettier_1.resolveConfig.sync(__dirname);
31
+ const PLACEHOLDER = '<!-- MANUAL-DOC:START -->';
32
+ const RULES_PATH = './projects/ngrx.io/content/guide/eslint-plugin/rules';
33
+ for (const [ruleName, { meta }] of Object.entries(rules_1.rulesForGenerate)) {
34
+ const docPath = path.join(RULES_PATH, `${ruleName}.md`);
35
+ if (!(0, fs_1.existsSync)(docPath)) {
36
+ (0, fs_1.writeFileSync)(docPath, ``);
90
37
  }
91
- finally { if (e_1) throw e_1.error; }
38
+ const doc = (0, fs_1.readFileSync)(docPath, 'utf-8');
39
+ const docContent = doc.substring(doc.indexOf(PLACEHOLDER) + PLACEHOLDER.length);
40
+ const newDoc = (0, prettier_1.format)(`# ${ruleName}
41
+
42
+ ${meta.version ? '> Required NgRx Version Range: ${meta.version}' : ''}
43
+
44
+ ${meta.docs?.description}
45
+
46
+ - **Type**: ${meta.type}
47
+ - **Fixable**: ${meta.fixable ? 'Yes' : 'No'}
48
+ - **Suggestion**: ${meta.hasSuggestions ? 'Yes' : 'No'}
49
+ - **Requires type checking**: ${meta.docs?.requiresTypeChecking ? 'Yes' : 'No'}
50
+ - **Configurable**: ${Array.isArray(meta.schema) && meta.schema.length ? 'Yes' : 'No'}
51
+
52
+ <!-- Everything above this generated, do not edit -->
53
+ <!-- MANUAL-DOC:START -->
54
+
55
+ ${docContent}`, {
56
+ parser: 'markdown',
57
+ ...prettierConfig,
58
+ });
59
+ (0, fs_1.writeFileSync)(docPath, newDoc);
92
60
  }
93
61
  //# sourceMappingURL=generate-docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-docs.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-docs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAA6D;AAC7D,yCAA6B;AAC7B,qCAAiD;AACjD,sCAAqC;AAErC,IAAM,cAAc,GAAG,wBAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,IAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,IAAM,UAAU,GAAG,sDAAsD,CAAC;;IAE1E,KAAmC,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,aAAK,CAAC,CAAA,gBAAA,4BAAE,CAAC;QAAhD,IAAA,KAAA,mBAAoB,EAAnB,QAAQ,QAAA,EAAI,IAAI,aAAA;QAC1B,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAG,QAAQ,QAAK,CAAC,CAAC;QACxD,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAA,kBAAa,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAC9B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,CAC9C,CAAC;QACF,IAAM,MAAM,GAAG,IAAA,iBAAM,EACnB,YAAK,QAAQ,iBAEf,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,EAAE,kBAEpE,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,6BAEV,IAAI,CAAC,IAAI,kCACF,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,8BACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iCACxB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,6CACtB,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,oBAAoB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,mCACxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,qGAKrD,UAAU,CAAE,aAER,MAAM,EAAE,UAAU,IACf,cAAc,EAEpB,CAAC;QAEF,IAAA,kBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC","sourcesContent":["import { readFileSync, writeFileSync, existsSync } from 'fs';\nimport * as path from 'path';\nimport { format, resolveConfig } from 'prettier';\nimport { rules } from '../src/rules';\n\nconst prettierConfig = resolveConfig.sync(__dirname);\nconst PLACEHOLDER = '<!-- MANUAL-DOC:START -->';\nconst RULES_PATH = './projects/ngrx.io/content/guide/eslint-plugin/rules';\n\nfor (const [ruleName, { meta }] of Object.entries(rules)) {\n const docPath = path.join(RULES_PATH, `${ruleName}.md`);\n if (!existsSync(docPath)) {\n writeFileSync(docPath, ``);\n }\n const doc = readFileSync(docPath, 'utf-8');\n const docContent = doc.substring(\n doc.indexOf(PLACEHOLDER) + PLACEHOLDER.length\n );\n const newDoc = format(\n `# ${ruleName}\n\n${meta.version ? '> Required NgRx Version Range: ${meta.version}' : ''} \n\n${meta.docs?.description}\n\n- **Type**: ${meta.type}\n- **Recommended**: ${meta.docs?.recommended ? 'Yes' : 'No'}\n- **Fixable**: ${meta.fixable ? 'Yes' : 'No'}\n- **Suggestion**: ${meta.hasSuggestions ? 'Yes' : 'No'}\n- **Requires type checking**: ${meta.docs?.requiresTypeChecking ? 'Yes' : 'No'}\n- **Configurable**: ${meta.schema.length ? 'Yes' : 'No'}\n\n<!-- Everything above this generated, do not edit -->\n<!-- MANUAL-DOC:START -->\n\n${docContent}`,\n {\n parser: 'markdown',\n ...prettierConfig,\n }\n );\n\n writeFileSync(docPath, newDoc);\n}\n"]}
1
+ {"version":3,"file":"generate-docs.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-docs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA6D;AAC7D,2CAA6B;AAC7B,uCAAiD;AACjD,+DAAuE;AAEvE,MAAM,cAAc,GAAG,wBAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,UAAU,GAAG,sDAAsD,CAAC;AAE1E,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,wBAAgB,CAAC,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,IAAA,kBAAa,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAC9B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,CAC9C,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,iBAAM,EACnB,KAAK,QAAQ;;EAEf,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,EAAE;;EAEpE,IAAI,CAAC,IAAI,EAAE,WAAW;;cAEV,IAAI,CAAC,IAAI;iBACN,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;oBACxB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gCACtB,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;sBAExE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAC7D;;;;;EAKF,UAAU,EAAE,EACV;QACE,MAAM,EAAE,UAAU;QAClB,GAAG,cAAc;KAClB,CACF,CAAC;IAEF,IAAA,kBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import { readFileSync, writeFileSync, existsSync } from 'fs';\nimport * as path from 'path';\nimport { format, resolveConfig } from 'prettier';\nimport { rulesForGenerate } from '../src/utils/helper-functions/rules';\n\nconst prettierConfig = resolveConfig.sync(__dirname);\nconst PLACEHOLDER = '<!-- MANUAL-DOC:START -->';\nconst RULES_PATH = './projects/ngrx.io/content/guide/eslint-plugin/rules';\n\nfor (const [ruleName, { meta }] of Object.entries(rulesForGenerate)) {\n const docPath = path.join(RULES_PATH, `${ruleName}.md`);\n if (!existsSync(docPath)) {\n writeFileSync(docPath, ``);\n }\n const doc = readFileSync(docPath, 'utf-8');\n const docContent = doc.substring(\n doc.indexOf(PLACEHOLDER) + PLACEHOLDER.length\n );\n const newDoc = format(\n `# ${ruleName}\n\n${meta.version ? '> Required NgRx Version Range: ${meta.version}' : ''} \n\n${meta.docs?.description}\n\n- **Type**: ${meta.type}\n- **Fixable**: ${meta.fixable ? 'Yes' : 'No'}\n- **Suggestion**: ${meta.hasSuggestions ? 'Yes' : 'No'}\n- **Requires type checking**: ${meta.docs?.requiresTypeChecking ? 'Yes' : 'No'}\n- **Configurable**: ${\n Array.isArray(meta.schema) && meta.schema.length ? 'Yes' : 'No'\n }\n\n<!-- Everything above this generated, do not edit -->\n<!-- MANUAL-DOC:START -->\n\n${docContent}`,\n {\n parser: 'markdown',\n ...prettierConfig,\n }\n );\n\n writeFileSync(docPath, newDoc);\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};