@ngrx/eslint-plugin 21.0.0-beta.0 → 21.0.0-rc.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 (34) hide show
  1. package/package.json +1 -1
  2. package/scripts/generate-config.js +3 -3
  3. package/scripts/generate-config.js.map +1 -1
  4. package/src/configs/{allTypeChecked.js → all-type-checked.js} +2 -2
  5. package/src/configs/all-type-checked.js.map +1 -0
  6. package/src/configs/all.js +0 -1
  7. package/src/configs/all.js.map +1 -1
  8. package/src/configs/all.json +0 -1
  9. package/src/configs/{effectsTypeChecked.js → effects-type-checked.js} +2 -2
  10. package/src/configs/effects-type-checked.js.map +1 -0
  11. package/src/configs/{signalsTypeChecked.js → signals-type-checked.js} +2 -2
  12. package/src/configs/signals-type-checked.js.map +1 -0
  13. package/src/configs/signals.js +0 -1
  14. package/src/configs/signals.js.map +1 -1
  15. package/src/configs/signals.json +0 -1
  16. package/src/index.d.ts +3 -2
  17. package/src/index.js +6 -0
  18. package/src/index.js.map +1 -1
  19. package/src/rules/signals/signal-state-no-arrays-at-root-level.d.ts +2 -1
  20. package/src/rules/signals/signal-state-no-arrays-at-root-level.js +60 -3
  21. package/src/rules/signals/signal-state-no-arrays-at-root-level.js.map +1 -1
  22. package/src/rules/signals/with-state-no-arrays-at-root-level.js +46 -2
  23. package/src/rules/signals/with-state-no-arrays-at-root-level.js.map +1 -1
  24. package/v9/index.js +6 -6
  25. package/v9/index.js.map +1 -1
  26. package/src/configs/allTypeChecked.js.map +0 -1
  27. package/src/configs/effectsTypeChecked.js.map +0 -1
  28. package/src/configs/signalsTypeChecked.js.map +0 -1
  29. /package/src/configs/{allTypeChecked.d.ts → all-type-checked.d.ts} +0 -0
  30. /package/src/configs/{allTypeChecked.json → all-type-checked.json} +0 -0
  31. /package/src/configs/{effectsTypeChecked.d.ts → effects-type-checked.d.ts} +0 -0
  32. /package/src/configs/{effectsTypeChecked.json → effects-type-checked.json} +0 -0
  33. /package/src/configs/{signalsTypeChecked.d.ts → signals-type-checked.d.ts} +0 -0
  34. /package/src/configs/{signalsTypeChecked.json → signals-type-checked.json} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngrx/eslint-plugin",
3
- "version": "21.0.0-beta.0",
3
+ "version": "21.0.0-rc.0",
4
4
  "description": "NgRx ESLint Plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,14 +11,14 @@ const rules_1 = require("../src/utils/helper-functions/rules");
11
11
  const isModule = (rule, moduleName) => rule.meta.docs?.ngrxModule === moduleName;
12
12
  const isTypeChecked = (rule) => rule.meta.docs?.requiresTypeChecking === true;
13
13
  writeConfig('all', (rule) => !isTypeChecked(rule));
14
- writeConfig('allTypeChecked', (_rule) => true);
14
+ writeConfig('all-type-checked', (_rule) => true);
15
15
  writeConfig('store', (rule) => isModule(rule, 'store') && !isTypeChecked(rule));
16
16
  writeConfig('effects', (rule) => isModule(rule, 'effects') && !isTypeChecked(rule));
17
- writeConfig('effectsTypeChecked', (rule) => isModule(rule, 'effects'));
17
+ writeConfig('effects-type-checked', (rule) => isModule(rule, 'effects'));
18
18
  writeConfig('component-store', (rule) => isModule(rule, 'component-store') && !isTypeChecked(rule));
19
19
  writeConfig('operators', (rule) => isModule(rule, 'operators') && !isTypeChecked(rule));
20
20
  writeConfig('signals', (rule) => isModule(rule, 'signals') && !isTypeChecked(rule));
21
- writeConfig('signalsTypeChecked', (rule) => isModule(rule, 'signals'));
21
+ writeConfig('signals-type-checked', (rule) => isModule(rule, 'signals'));
22
22
  async function writeConfig(configName, predicate) {
23
23
  const rulesForConfig = Object.entries(rules_1.rulesForGenerate).filter(([_, rule]) => predicate(rule));
24
24
  const configRules = rulesForConfig.reduce((rules, [ruleName, _rule]) => {
@@ -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 { rulesForGenerate } from '../src/utils/helper-functions/rules';\nimport { NgRxRule } from '../src/rule-creator';\n\n(async () => {\n const prettierConfig = await resolveConfig(__dirname);\n const RULE_MODULE = '@ngrx';\n const CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';\n\n const isModule = (rule: NgRxRule, moduleName: string) =>\n rule.meta.docs?.ngrxModule === moduleName;\n const isTypeChecked = (rule: NgRxRule) =>\n rule.meta.docs?.requiresTypeChecking === true;\n\n writeConfig('all', (rule) => !isTypeChecked(rule));\n writeConfig('allTypeChecked', (_rule) => true);\n\n writeConfig(\n 'store',\n (rule) => isModule(rule, 'store') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'effects',\n (rule) => isModule(rule, 'effects') && !isTypeChecked(rule)\n );\n writeConfig('effectsTypeChecked', (rule) => isModule(rule, 'effects'));\n\n writeConfig(\n 'component-store',\n (rule) => isModule(rule, 'component-store') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'operators',\n (rule) => isModule(rule, 'operators') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'signals',\n (rule) => isModule(rule, 'signals') && !isTypeChecked(rule)\n );\n writeConfig('signalsTypeChecked', (rule) => isModule(rule, 'signals'));\n\n async function writeConfig(\n configName:\n | 'all'\n | 'allTypeChecked'\n | 'store'\n | 'effects'\n | 'effectsTypeChecked'\n | 'component-store'\n | 'operators'\n | 'signals'\n | 'signalsTypeChecked',\n predicate: (rule: NgRxRule) => boolean\n ) {\n const rulesForConfig = Object.entries(rulesForGenerate).filter(\n ([_, rule]) => 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\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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/${configName}',\n languageOptions: {\n parser,\n },\n rules: ${JSON.stringify(configRules, null, 2)}\n },\n ];`;\n const tsConfigFormatted = await format(tsCode, {\n parser: 'typescript',\n ...prettierConfig,\n });\n writeFileSync(\n join(CONFIG_DIRECTORY, `${configName}.ts`),\n tsConfigFormatted\n );\n\n const jsonConfig: { [key: string]: any } = {\n parser: '@typescript-eslint/parser',\n plugins: ['@ngrx'],\n rules: configRules,\n };\n const jsonConfigFormatted = await format(\n JSON.stringify(jsonConfig, null, 2),\n {\n parser: 'json',\n ...prettierConfig,\n }\n );\n\n writeFileSync(\n join(CONFIG_DIRECTORY, `${configName}.json`),\n jsonConfigFormatted\n );\n }\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 { rulesForGenerate } from '../src/utils/helper-functions/rules';\nimport { NgRxRule } from '../src/rule-creator';\n\n(async () => {\n const prettierConfig = await resolveConfig(__dirname);\n const RULE_MODULE = '@ngrx';\n const CONFIG_DIRECTORY = './modules/eslint-plugin/src/configs/';\n\n const isModule = (rule: NgRxRule, moduleName: string) =>\n rule.meta.docs?.ngrxModule === moduleName;\n const isTypeChecked = (rule: NgRxRule) =>\n rule.meta.docs?.requiresTypeChecking === true;\n\n writeConfig('all', (rule) => !isTypeChecked(rule));\n writeConfig('all-type-checked', (_rule) => true);\n\n writeConfig(\n 'store',\n (rule) => isModule(rule, 'store') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'effects',\n (rule) => isModule(rule, 'effects') && !isTypeChecked(rule)\n );\n writeConfig('effects-type-checked', (rule) => isModule(rule, 'effects'));\n\n writeConfig(\n 'component-store',\n (rule) => isModule(rule, 'component-store') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'operators',\n (rule) => isModule(rule, 'operators') && !isTypeChecked(rule)\n );\n\n writeConfig(\n 'signals',\n (rule) => isModule(rule, 'signals') && !isTypeChecked(rule)\n );\n writeConfig('signals-type-checked', (rule) => isModule(rule, 'signals'));\n\n async function writeConfig(\n configName:\n | 'all'\n | 'all-type-checked'\n | 'store'\n | 'effects'\n | 'effects-type-checked'\n | 'component-store'\n | 'operators'\n | 'signals'\n | 'signals-type-checked',\n predicate: (rule: NgRxRule) => boolean\n ) {\n const rulesForConfig = Object.entries(rulesForGenerate).filter(\n ([_, rule]) => 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\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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/${configName}',\n languageOptions: {\n parser,\n },\n rules: ${JSON.stringify(configRules, null, 2)}\n },\n ];`;\n const tsConfigFormatted = await format(tsCode, {\n parser: 'typescript',\n ...prettierConfig,\n });\n writeFileSync(\n join(CONFIG_DIRECTORY, `${configName}.ts`),\n tsConfigFormatted\n );\n\n const jsonConfig: { [key: string]: any } = {\n parser: '@typescript-eslint/parser',\n plugins: ['@ngrx'],\n rules: configRules,\n };\n const jsonConfigFormatted = await format(\n JSON.stringify(jsonConfig, null, 2),\n {\n parser: 'json',\n ...prettierConfig,\n }\n );\n\n writeFileSync(\n join(CONFIG_DIRECTORY, `${configName}.json`),\n jsonConfigFormatted\n );\n }\n})();\n"]}
@@ -15,7 +15,7 @@ exports.default = (plugin, parser) => [
15
15
  },
16
16
  },
17
17
  {
18
- name: 'ngrx/allTypeChecked',
18
+ name: 'ngrx/all-type-checked',
19
19
  languageOptions: {
20
20
  parser,
21
21
  },
@@ -58,4 +58,4 @@ exports.default = (plugin, parser) => [
58
58
  },
59
59
  },
60
60
  ];
61
- //# sourceMappingURL=allTypeChecked.js.map
61
+ //# sourceMappingURL=all-type-checked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-type-checked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/all-type-checked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,iDAAiD,EAAE,OAAO;YAC1D,+CAA+C,EAAE,OAAO;YACxD,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,sCAAsC,EAAE,OAAO;YAC/C,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;YAChD,iCAAiC,EAAE,OAAO;YAC1C,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;YAC7D,0CAA0C,EAAE,OAAO;YACnD,iCAAiC,EAAE,OAAO;YAC1C,uDAAuD,EAAE,OAAO;YAChE,0CAA0C,EAAE,OAAO;YACnD,+BAA+B,EAAE,OAAO;YACxC,2BAA2B,EAAE,OAAO;YACpC,iCAAiC,EAAE,OAAO;YAC1C,+BAA+B,EAAE,OAAO;YACxC,6BAA6B,EAAE,OAAO;YACtC,6BAA6B,EAAE,OAAO;YACtC,wCAAwC,EAAE,OAAO;YACjD,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,kCAAkC,EAAE,OAAO;YAC3C,yDAAyD,EAAE,OAAO;YAClE,iCAAiC,EAAE,OAAO;YAC1C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,wCAAwC,EAAE,OAAO;SAClD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/all-type-checked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-combining-component-store-selectors': 'error',\n '@ngrx/avoid-mapping-component-store-selectors': 'error',\n '@ngrx/require-super-ondestroy': 'error',\n '@ngrx/updater-explicit-return-type': 'error',\n '@ngrx/avoid-cyclic-effects': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/no-multiple-actions-in-effects': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n '@ngrx/prefer-concat-latest-from': 'error',\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/with-state-no-arrays-at-root-level': 'error',\n '@ngrx/avoid-combining-selectors': 'error',\n '@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',\n '@ngrx/avoid-duplicate-actions-in-reducer': 'error',\n '@ngrx/avoid-mapping-selectors': 'error',\n '@ngrx/good-action-hygiene': 'error',\n '@ngrx/no-multiple-global-stores': 'error',\n '@ngrx/no-reducer-in-key-names': 'error',\n '@ngrx/no-store-subscription': 'error',\n '@ngrx/no-typed-global-store': 'error',\n '@ngrx/on-function-explicit-return-type': 'error',\n '@ngrx/prefer-action-creator-in-dispatch': 'error',\n '@ngrx/prefer-action-creator': 'error',\n '@ngrx/prefer-inline-action-props': 'error',\n '@ngrx/prefer-one-generic-in-create-for-feature-selector': 'error',\n '@ngrx/prefer-selector-in-select': 'error',\n '@ngrx/prefix-selectors-with-select': 'error',\n '@ngrx/select-style': 'error',\n '@ngrx/use-consistent-global-store-name': 'error',\n },\n },\n];\n"]}
@@ -32,7 +32,6 @@ exports.default = (plugin, parser) => [
32
32
  '@ngrx/prefer-concat-latest-from': 'error',
33
33
  '@ngrx/enforce-type-call': 'error',
34
34
  '@ngrx/prefer-protected-state': 'error',
35
- '@ngrx/signal-state-no-arrays-at-root-level': 'error',
36
35
  '@ngrx/signal-store-feature-should-use-generic-type': 'error',
37
36
  '@ngrx/avoid-combining-selectors': 'error',
38
37
  '@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/all.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,iDAAiD,EAAE,OAAO;YAC1D,+CAA+C,EAAE,OAAO;YACxD,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;YAChD,iCAAiC,EAAE,OAAO;YAC1C,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;YAC7D,iCAAiC,EAAE,OAAO;YAC1C,uDAAuD,EAAE,OAAO;YAChE,0CAA0C,EAAE,OAAO;YACnD,+BAA+B,EAAE,OAAO;YACxC,2BAA2B,EAAE,OAAO;YACpC,iCAAiC,EAAE,OAAO;YAC1C,+BAA+B,EAAE,OAAO;YACxC,6BAA6B,EAAE,OAAO;YACtC,6BAA6B,EAAE,OAAO;YACtC,wCAAwC,EAAE,OAAO;YACjD,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,kCAAkC,EAAE,OAAO;YAC3C,yDAAyD,EAAE,OAAO;YAClE,iCAAiC,EAAE,OAAO;YAC1C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,wCAAwC,EAAE,OAAO;SAClD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/all',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-combining-component-store-selectors': 'error',\n '@ngrx/avoid-mapping-component-store-selectors': 'error',\n '@ngrx/require-super-ondestroy': 'error',\n '@ngrx/updater-explicit-return-type': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n '@ngrx/prefer-concat-latest-from': 'error',\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/avoid-combining-selectors': 'error',\n '@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',\n '@ngrx/avoid-duplicate-actions-in-reducer': 'error',\n '@ngrx/avoid-mapping-selectors': 'error',\n '@ngrx/good-action-hygiene': 'error',\n '@ngrx/no-multiple-global-stores': 'error',\n '@ngrx/no-reducer-in-key-names': 'error',\n '@ngrx/no-store-subscription': 'error',\n '@ngrx/no-typed-global-store': 'error',\n '@ngrx/on-function-explicit-return-type': 'error',\n '@ngrx/prefer-action-creator-in-dispatch': 'error',\n '@ngrx/prefer-action-creator': 'error',\n '@ngrx/prefer-inline-action-props': 'error',\n '@ngrx/prefer-one-generic-in-create-for-feature-selector': 'error',\n '@ngrx/prefer-selector-in-select': 'error',\n '@ngrx/prefix-selectors-with-select': 'error',\n '@ngrx/select-style': 'error',\n '@ngrx/use-consistent-global-store-name': 'error',\n },\n },\n];\n"]}
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/all.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,iDAAiD,EAAE,OAAO;YAC1D,+CAA+C,EAAE,OAAO;YACxD,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;YAChD,iCAAiC,EAAE,OAAO;YAC1C,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,oDAAoD,EAAE,OAAO;YAC7D,iCAAiC,EAAE,OAAO;YAC1C,uDAAuD,EAAE,OAAO;YAChE,0CAA0C,EAAE,OAAO;YACnD,+BAA+B,EAAE,OAAO;YACxC,2BAA2B,EAAE,OAAO;YACpC,iCAAiC,EAAE,OAAO;YAC1C,+BAA+B,EAAE,OAAO;YACxC,6BAA6B,EAAE,OAAO;YACtC,6BAA6B,EAAE,OAAO;YACtC,wCAAwC,EAAE,OAAO;YACjD,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,kCAAkC,EAAE,OAAO;YAC3C,yDAAyD,EAAE,OAAO;YAClE,iCAAiC,EAAE,OAAO;YAC1C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,wCAAwC,EAAE,OAAO;SAClD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/all',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-combining-component-store-selectors': 'error',\n '@ngrx/avoid-mapping-component-store-selectors': 'error',\n '@ngrx/require-super-ondestroy': 'error',\n '@ngrx/updater-explicit-return-type': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n '@ngrx/prefer-concat-latest-from': 'error',\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/avoid-combining-selectors': 'error',\n '@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',\n '@ngrx/avoid-duplicate-actions-in-reducer': 'error',\n '@ngrx/avoid-mapping-selectors': 'error',\n '@ngrx/good-action-hygiene': 'error',\n '@ngrx/no-multiple-global-stores': 'error',\n '@ngrx/no-reducer-in-key-names': 'error',\n '@ngrx/no-store-subscription': 'error',\n '@ngrx/no-typed-global-store': 'error',\n '@ngrx/on-function-explicit-return-type': 'error',\n '@ngrx/prefer-action-creator-in-dispatch': 'error',\n '@ngrx/prefer-action-creator': 'error',\n '@ngrx/prefer-inline-action-props': 'error',\n '@ngrx/prefer-one-generic-in-create-for-feature-selector': 'error',\n '@ngrx/prefer-selector-in-select': 'error',\n '@ngrx/prefix-selectors-with-select': 'error',\n '@ngrx/select-style': 'error',\n '@ngrx/use-consistent-global-store-name': 'error',\n },\n },\n];\n"]}
@@ -14,7 +14,6 @@
14
14
  "@ngrx/prefer-concat-latest-from": "error",
15
15
  "@ngrx/enforce-type-call": "error",
16
16
  "@ngrx/prefer-protected-state": "error",
17
- "@ngrx/signal-state-no-arrays-at-root-level": "error",
18
17
  "@ngrx/signal-store-feature-should-use-generic-type": "error",
19
18
  "@ngrx/avoid-combining-selectors": "error",
20
19
  "@ngrx/avoid-dispatching-multiple-actions-sequentially": "error",
@@ -15,7 +15,7 @@ exports.default = (plugin, parser) => [
15
15
  },
16
16
  },
17
17
  {
18
- name: 'ngrx/effectsTypeChecked',
18
+ name: 'ngrx/effects-type-checked',
19
19
  languageOptions: {
20
20
  parser,
21
21
  },
@@ -30,4 +30,4 @@ exports.default = (plugin, parser) => [
30
30
  },
31
31
  },
32
32
  ];
33
- //# sourceMappingURL=effectsTypeChecked.js.map
33
+ //# sourceMappingURL=effects-type-checked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects-type-checked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/effects-type-checked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,sCAAsC,EAAE,OAAO;YAC/C,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;SACjD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/effects-type-checked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-cyclic-effects': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/no-multiple-actions-in-effects': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n },\n },\n];\n"]}
@@ -15,7 +15,7 @@ exports.default = (plugin, parser) => [
15
15
  },
16
16
  },
17
17
  {
18
- name: 'ngrx/signalsTypeChecked',
18
+ name: 'ngrx/signals-type-checked',
19
19
  languageOptions: {
20
20
  parser,
21
21
  },
@@ -28,4 +28,4 @@ exports.default = (plugin, parser) => [
28
28
  },
29
29
  },
30
30
  ];
31
- //# sourceMappingURL=signalsTypeChecked.js.map
31
+ //# sourceMappingURL=signals-type-checked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signals-type-checked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/signals-type-checked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;YAC7D,0CAA0C,EAAE,OAAO;SACpD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/signals-type-checked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/with-state-no-arrays-at-root-level': 'error',\n },\n },\n];\n"]}
@@ -22,7 +22,6 @@ exports.default = (plugin, parser) => [
22
22
  rules: {
23
23
  '@ngrx/enforce-type-call': 'error',
24
24
  '@ngrx/prefer-protected-state': 'error',
25
- '@ngrx/signal-state-no-arrays-at-root-level': 'error',
26
25
  '@ngrx/signal-store-feature-should-use-generic-type': 'error',
27
26
  },
28
27
  },
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/signals.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;SAC9D;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/signals',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n },\n },\n];\n"]}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/signals.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,oDAAoD,EAAE,OAAO;SAC9D;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/signals',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n },\n },\n];\n"]}
@@ -4,7 +4,6 @@
4
4
  "rules": {
5
5
  "@ngrx/enforce-type-call": "error",
6
6
  "@ngrx/prefer-protected-state": "error",
7
- "@ngrx/signal-state-no-arrays-at-root-level": "error",
8
7
  "@ngrx/signal-store-feature-should-use-generic-type": "error"
9
8
  }
10
9
  }
package/src/index.d.ts CHANGED
@@ -16,7 +16,6 @@ declare const _default: {
16
16
  "@ngrx/prefer-concat-latest-from": string;
17
17
  "@ngrx/enforce-type-call": string;
18
18
  "@ngrx/prefer-protected-state": string;
19
- "@ngrx/signal-state-no-arrays-at-root-level": string;
20
19
  "@ngrx/signal-store-feature-should-use-generic-type": string;
21
20
  "@ngrx/avoid-combining-selectors": string;
22
21
  "@ngrx/avoid-dispatching-multiple-actions-sequentially": string;
@@ -38,6 +37,7 @@ declare const _default: {
38
37
  "@ngrx/use-consistent-global-store-name": string;
39
38
  };
40
39
  };
40
+ 'all-type-checked': (plugin: import("typescript-eslint").FlatConfig.Plugin, parser: import("typescript-eslint").FlatConfig.Parser) => import("typescript-eslint").FlatConfig.ConfigArray;
41
41
  'component-store': {
42
42
  parser: string;
43
43
  plugins: string[];
@@ -59,6 +59,7 @@ declare const _default: {
59
59
  "@ngrx/use-effects-lifecycle-interface": string;
60
60
  };
61
61
  };
62
+ 'effects-type-checked': (plugin: import("typescript-eslint").FlatConfig.Plugin, parser: import("typescript-eslint").FlatConfig.Parser) => import("typescript-eslint").FlatConfig.ConfigArray;
62
63
  store: {
63
64
  parser: string;
64
65
  plugins: string[];
@@ -96,10 +97,10 @@ declare const _default: {
96
97
  rules: {
97
98
  "@ngrx/enforce-type-call": string;
98
99
  "@ngrx/prefer-protected-state": string;
99
- "@ngrx/signal-state-no-arrays-at-root-level": string;
100
100
  "@ngrx/signal-store-feature-should-use-generic-type": string;
101
101
  };
102
102
  };
103
+ 'signals-type-checked': (plugin: import("typescript-eslint").FlatConfig.Plugin, parser: import("typescript-eslint").FlatConfig.Parser) => import("typescript-eslint").FlatConfig.ConfigArray;
103
104
  };
104
105
  rules: {
105
106
  'avoid-combining-component-store-selectors': import("@typescript-eslint/utils/ts-eslint").RuleModule<"avoidCombiningComponentStoreSelectors", readonly [], import("./rule-creator").NgRxRuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
package/src/index.js CHANGED
@@ -4,19 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  const rules_1 = require("./rules");
6
6
  const all_json_1 = __importDefault(require("./configs/all.json"));
7
+ const all_type_checked_1 = __importDefault(require("./configs/all-type-checked"));
7
8
  const component_store_json_1 = __importDefault(require("./configs/component-store.json"));
8
9
  const effects_json_1 = __importDefault(require("./configs/effects.json"));
10
+ const effects_type_checked_1 = __importDefault(require("./configs/effects-type-checked"));
9
11
  const store_json_1 = __importDefault(require("./configs/store.json"));
10
12
  const operators_json_1 = __importDefault(require("./configs/operators.json"));
11
13
  const signals_json_1 = __importDefault(require("./configs/signals.json"));
14
+ const signals_type_checked_1 = __importDefault(require("./configs/signals-type-checked"));
12
15
  module.exports = {
13
16
  configs: {
14
17
  all: all_json_1.default,
18
+ 'all-type-checked': all_type_checked_1.default,
15
19
  'component-store': component_store_json_1.default,
16
20
  effects: effects_json_1.default,
21
+ 'effects-type-checked': effects_type_checked_1.default,
17
22
  store: store_json_1.default,
18
23
  operators: operators_json_1.default,
19
24
  signals: signals_json_1.default,
25
+ 'signals-type-checked': signals_type_checked_1.default,
20
26
  },
21
27
  rules: rules_1.rules,
22
28
  };
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAgC;AAChC,kEAAqC;AACrC,0FAA4D;AAC5D,0EAA6C;AAC7C,sEAAyC;AACzC,8EAAiD;AACjD,0EAA6C;AAE7C,iBAAS;IACP,OAAO,EAAE;QACP,GAAG,EAAH,kBAAG;QACH,iBAAiB,EAAE,8BAAc;QACjC,OAAO,EAAE,sBAAO;QAChB,KAAK,EAAE,oBAAK;QACZ,SAAS,EAAE,wBAAS;QACpB,OAAO,EAAE,sBAAO;KACjB;IACD,KAAK,EAAL,aAAK;CACN,CAAC","sourcesContent":["import { rules } from './rules';\nimport all from './configs/all.json';\nimport componentStore from './configs/component-store.json';\nimport effects from './configs/effects.json';\nimport store from './configs/store.json';\nimport operators from './configs/operators.json';\nimport signals from './configs/signals.json';\n\nexport = {\n configs: {\n all,\n 'component-store': componentStore,\n effects: effects,\n store: store,\n operators: operators,\n signals: signals,\n },\n rules,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/src/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAgC;AAChC,kEAAqC;AACrC,kFAAwD;AACxD,0FAA4D;AAC5D,0EAA6C;AAC7C,0FAAgE;AAChE,sEAAyC;AACzC,8EAAiD;AACjD,0EAA6C;AAC7C,0FAAgE;AAEhE,iBAAS;IACP,OAAO,EAAE;QACP,GAAG,EAAH,kBAAG;QACH,kBAAkB,EAAE,0BAAc;QAClC,iBAAiB,EAAE,8BAAc;QACjC,OAAO,EAAE,sBAAO;QAChB,sBAAsB,EAAE,8BAAkB;QAC1C,KAAK,EAAE,oBAAK;QACZ,SAAS,EAAE,wBAAS;QACpB,OAAO,EAAE,sBAAO;QAChB,sBAAsB,EAAE,8BAAkB;KAC3C;IACD,KAAK,EAAL,aAAK;CACN,CAAC","sourcesContent":["import { rules } from './rules';\nimport all from './configs/all.json';\nimport allTypeChecked from './configs/all-type-checked';\nimport componentStore from './configs/component-store.json';\nimport effects from './configs/effects.json';\nimport effectsTypeChecked from './configs/effects-type-checked';\nimport store from './configs/store.json';\nimport operators from './configs/operators.json';\nimport signals from './configs/signals.json';\nimport signalsTypeChecked from './configs/signals-type-checked';\n\nexport = {\n configs: {\n all,\n 'all-type-checked': allTypeChecked,\n 'component-store': componentStore,\n effects: effects,\n 'effects-type-checked': effectsTypeChecked,\n store: store,\n operators: operators,\n signals: signals,\n 'signals-type-checked': signalsTypeChecked,\n },\n rules,\n};\n"]}
@@ -1,3 +1,4 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
1
2
  export declare const messageId = "signalStateNoArraysAtRootLevel";
2
- declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"signalStateNoArraysAtRootLevel", readonly [], import("../../rule-creator").NgRxRuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
+ declare const _default: ESLintUtils.RuleModule<"signalStateNoArraysAtRootLevel", readonly [], import("../../rule-creator").NgRxRuleDocs, ESLintUtils.RuleListener>;
3
4
  export default _default;
@@ -34,10 +34,25 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.messageId = void 0;
37
+ const utils_1 = require("@typescript-eslint/utils");
37
38
  const path = __importStar(require("path"));
38
39
  const rule_creator_1 = require("../../rule-creator");
39
- const utils_1 = require("../../utils");
40
+ const utils_2 = require("../../utils");
40
41
  exports.messageId = 'signalStateNoArraysAtRootLevel';
42
+ const NON_RECORD_TYPES = [
43
+ 'Array',
44
+ 'Set',
45
+ 'Map',
46
+ 'WeakSet',
47
+ 'WeakMap',
48
+ 'Date',
49
+ 'Error',
50
+ 'RegExp',
51
+ 'ArrayBuffer',
52
+ 'DataView',
53
+ 'Promise',
54
+ 'Function',
55
+ ];
41
56
  exports.default = (0, rule_creator_1.createRule)({
42
57
  name: path.parse(__filename).name,
43
58
  meta: {
@@ -45,10 +60,11 @@ exports.default = (0, rule_creator_1.createRule)({
45
60
  docs: {
46
61
  description: `signalState should accept a record or dictionary as an input argument.`,
47
62
  ngrxModule: 'signals',
63
+ requiresTypeChecking: true,
48
64
  },
49
65
  schema: [],
50
66
  messages: {
51
- [exports.messageId]: `Wrap the array in an record or dictionary.`,
67
+ [exports.messageId]: 'The property type `{{ property }}` is forbidden as the initial state argument, wrap the property in a record or dictionary.',
52
68
  },
53
69
  },
54
70
  defaultOptions: [],
@@ -56,12 +72,53 @@ exports.default = (0, rule_creator_1.createRule)({
56
72
  return {
57
73
  [`CallExpression[callee.name=signalState]`](node) {
58
74
  const [argument] = node.arguments;
59
- if ((0, utils_1.isArrayExpression)(argument)) {
75
+ if ((0, utils_2.isArrayExpression)(argument)) {
60
76
  context.report({
61
77
  node: argument,
62
78
  messageId: exports.messageId,
79
+ data: { property: 'Array' },
63
80
  });
64
81
  }
82
+ else if (argument) {
83
+ const services = utils_1.ESLintUtils.getParserServices(context);
84
+ const typeChecker = services.program.getTypeChecker();
85
+ const type = services.getTypeAtLocation(argument);
86
+ if (typeChecker.isArrayType(type) || typeChecker.isTupleType(type)) {
87
+ context.report({
88
+ node: argument,
89
+ messageId: exports.messageId,
90
+ data: { property: 'Array' },
91
+ });
92
+ return;
93
+ }
94
+ const symbol = type.getSymbol();
95
+ if (symbol && NON_RECORD_TYPES.includes(symbol.getName())) {
96
+ context.report({
97
+ node: argument,
98
+ messageId: exports.messageId,
99
+ data: { property: symbol.getName() },
100
+ });
101
+ return;
102
+ }
103
+ const callSignatures = type.getCallSignatures();
104
+ if (callSignatures.length > 0) {
105
+ context.report({
106
+ node: argument,
107
+ messageId: exports.messageId,
108
+ data: { property: 'Function' },
109
+ });
110
+ return;
111
+ }
112
+ const typeString = typeChecker.typeToString(type);
113
+ const matchedType = NON_RECORD_TYPES.find((t) => typeString.startsWith(`${t}<`));
114
+ if (matchedType) {
115
+ context.report({
116
+ node: argument,
117
+ messageId: exports.messageId,
118
+ data: { property: matchedType },
119
+ });
120
+ }
121
+ }
65
122
  },
66
123
  };
67
124
  },
@@ -1 +1 @@
1
- {"version":3,"file":"signal-state-no-arrays-at-root-level.js","sourceRoot":"","sources":["../../../../../../modules/eslint-plugin/src/rules/signals/signal-state-no-arrays-at-root-level.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAC7B,qDAAgD;AAChD,uCAAgD;AAEnC,QAAA,SAAS,GAAG,gCAAgC,CAAC;AAK1D,kBAAe,IAAA,yBAAU,EAAsB;IAC7C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,wEAAwE;YACrF,UAAU,EAAE,SAAS;SACtB;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,CAAC,iBAAS,CAAC,EAAE,4CAA4C;SAC1D;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAClB,OAAO;YACL,CAAC,yCAAyC,CAAC,CACzC,IAA6B;gBAE7B,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBAClC,IAAI,IAAA,yBAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAT,iBAAS;qBACV,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { type TSESTree } from '@typescript-eslint/utils';\nimport * as path from 'path';\nimport { createRule } from '../../rule-creator';\nimport { isArrayExpression } from '../../utils';\n\nexport const messageId = 'signalStateNoArraysAtRootLevel';\n\ntype MessageIds = typeof messageId;\ntype Options = readonly [];\n\nexport default createRule<Options, MessageIds>({\n name: path.parse(__filename).name,\n meta: {\n type: 'problem',\n docs: {\n description: `signalState should accept a record or dictionary as an input argument.`,\n ngrxModule: 'signals',\n },\n schema: [],\n messages: {\n [messageId]: `Wrap the array in an record or dictionary.`,\n },\n },\n defaultOptions: [],\n create: (context) => {\n return {\n [`CallExpression[callee.name=signalState]`](\n node: TSESTree.CallExpression\n ) {\n const [argument] = node.arguments;\n if (isArrayExpression(argument)) {\n context.report({\n node: argument,\n messageId,\n });\n }\n },\n };\n },\n});\n"]}
1
+ {"version":3,"file":"signal-state-no-arrays-at-root-level.js","sourceRoot":"","sources":["../../../../../../modules/eslint-plugin/src/rules/signals/signal-state-no-arrays-at-root-level.ts"],"names":[],"mappings":"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","sourcesContent":["import { ESLintUtils, type TSESTree } from '@typescript-eslint/utils';\nimport * as path from 'path';\nimport { createRule } from '../../rule-creator';\nimport { isArrayExpression } from '../../utils';\n\nexport const messageId = 'signalStateNoArraysAtRootLevel';\n\ntype MessageIds = typeof messageId;\ntype Options = readonly [];\n\nconst NON_RECORD_TYPES = [\n 'Array',\n 'Set',\n 'Map',\n 'WeakSet',\n 'WeakMap',\n 'Date',\n 'Error',\n 'RegExp',\n 'ArrayBuffer',\n 'DataView',\n 'Promise',\n 'Function',\n];\n\nexport default createRule<Options, MessageIds>({\n name: path.parse(__filename).name,\n meta: {\n type: 'problem',\n docs: {\n description: `signalState should accept a record or dictionary as an input argument.`,\n ngrxModule: 'signals',\n requiresTypeChecking: true,\n },\n schema: [],\n messages: {\n [messageId]:\n 'The property type `{{ property }}` is forbidden as the initial state argument, wrap the property in a record or dictionary.',\n },\n },\n defaultOptions: [],\n create: (context) => {\n return {\n [`CallExpression[callee.name=signalState]`](\n node: TSESTree.CallExpression\n ) {\n const [argument] = node.arguments;\n if (isArrayExpression(argument)) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Array' },\n });\n } else if (argument) {\n const services = ESLintUtils.getParserServices(context);\n const typeChecker = services.program.getTypeChecker();\n const type = services.getTypeAtLocation(argument);\n\n if (typeChecker.isArrayType(type) || typeChecker.isTupleType(type)) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Array' },\n });\n return;\n }\n\n const symbol = type.getSymbol();\n if (symbol && NON_RECORD_TYPES.includes(symbol.getName())) {\n context.report({\n node: argument,\n messageId,\n data: { property: symbol.getName() },\n });\n return;\n }\n\n const callSignatures = type.getCallSignatures();\n if (callSignatures.length > 0) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Function' },\n });\n return;\n }\n\n const typeString = typeChecker.typeToString(type);\n const matchedType = NON_RECORD_TYPES.find((t) =>\n typeString.startsWith(`${t}<`)\n );\n if (matchedType) {\n context.report({\n node: argument,\n messageId,\n data: { property: matchedType },\n });\n }\n }\n },\n };\n },\n});\n"]}
@@ -39,6 +39,20 @@ const path = __importStar(require("path"));
39
39
  const rule_creator_1 = require("../../rule-creator");
40
40
  const utils_2 = require("../../utils");
41
41
  exports.messageId = 'withStateNoArraysAtRootLevel';
42
+ const NON_RECORD_TYPES = [
43
+ 'Array',
44
+ 'Set',
45
+ 'Map',
46
+ 'WeakSet',
47
+ 'WeakMap',
48
+ 'Date',
49
+ 'Error',
50
+ 'RegExp',
51
+ 'ArrayBuffer',
52
+ 'DataView',
53
+ 'Promise',
54
+ 'Function',
55
+ ];
42
56
  exports.default = (0, rule_creator_1.createRule)({
43
57
  name: path.parse(__filename).name,
44
58
  meta: {
@@ -50,7 +64,7 @@ exports.default = (0, rule_creator_1.createRule)({
50
64
  },
51
65
  schema: [],
52
66
  messages: {
53
- [exports.messageId]: `Wrap the array in an record or dictionary.`,
67
+ [exports.messageId]: 'The property type `{{ property }}` is forbidden as the initial state argument, wrap the property in a record or dictionary.',
54
68
  },
55
69
  },
56
70
  defaultOptions: [],
@@ -62,16 +76,46 @@ exports.default = (0, rule_creator_1.createRule)({
62
76
  context.report({
63
77
  node: argument,
64
78
  messageId: exports.messageId,
79
+ data: { property: 'Array' },
65
80
  });
66
81
  }
67
82
  else if (argument) {
68
83
  const services = utils_1.ESLintUtils.getParserServices(context);
69
84
  const typeChecker = services.program.getTypeChecker();
70
85
  const type = services.getTypeAtLocation(argument);
71
- if (typeChecker.isArrayType(type)) {
86
+ if (typeChecker.isArrayType(type) || typeChecker.isTupleType(type)) {
72
87
  context.report({
73
88
  node: argument,
74
89
  messageId: exports.messageId,
90
+ data: { property: 'Array' },
91
+ });
92
+ return;
93
+ }
94
+ const symbol = type.getSymbol();
95
+ if (symbol && NON_RECORD_TYPES.includes(symbol.getName())) {
96
+ context.report({
97
+ node: argument,
98
+ messageId: exports.messageId,
99
+ data: { property: symbol.getName() },
100
+ });
101
+ return;
102
+ }
103
+ const callSignatures = type.getCallSignatures();
104
+ if (callSignatures.length > 0) {
105
+ context.report({
106
+ node: argument,
107
+ messageId: exports.messageId,
108
+ data: { property: 'Function' },
109
+ });
110
+ return;
111
+ }
112
+ const typeString = typeChecker.typeToString(type);
113
+ const matchedType = NON_RECORD_TYPES.find((t) => typeString.startsWith(`${t}<`));
114
+ if (matchedType) {
115
+ context.report({
116
+ node: argument,
117
+ messageId: exports.messageId,
118
+ data: { property: matchedType },
75
119
  });
76
120
  }
77
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"with-state-no-arrays-at-root-level.js","sourceRoot":"","sources":["../../../../../../modules/eslint-plugin/src/rules/signals/with-state-no-arrays-at-root-level.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsE;AACtE,2CAA6B;AAC7B,qDAAgD;AAChD,uCAAgD;AAEnC,QAAA,SAAS,GAAG,8BAA8B,CAAC;AAKxD,kBAAe,IAAA,yBAAU,EAAsB;IAC7C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,sEAAsE;YACnF,UAAU,EAAE,SAAS;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,CAAC,iBAAS,CAAC,EAAE,4CAA4C;SAC1D;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAClB,OAAO;YACL,CAAC,uCAAuC,CAAC,CAAC,IAA6B;gBACrE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBAClC,IAAI,IAAA,yBAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAT,iBAAS;qBACV,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,QAAQ,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAG,mBAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;oBACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAElD,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAT,iBAAS;yBACV,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { ESLintUtils, type TSESTree } from '@typescript-eslint/utils';\nimport * as path from 'path';\nimport { createRule } from '../../rule-creator';\nimport { isArrayExpression } from '../../utils';\n\nexport const messageId = 'withStateNoArraysAtRootLevel';\n\ntype MessageIds = typeof messageId;\ntype Options = readonly [];\n\nexport default createRule<Options, MessageIds>({\n name: path.parse(__filename).name,\n meta: {\n type: 'problem',\n docs: {\n description: `withState should accept a record or dictionary as an input argument.`,\n ngrxModule: 'signals',\n requiresTypeChecking: true,\n },\n schema: [],\n messages: {\n [messageId]: `Wrap the array in an record or dictionary.`,\n },\n },\n defaultOptions: [],\n create: (context) => {\n return {\n [`CallExpression[callee.name=withState]`](node: TSESTree.CallExpression) {\n const [argument] = node.arguments;\n if (isArrayExpression(argument)) {\n context.report({\n node: argument,\n messageId,\n });\n } else if (argument) {\n const services = ESLintUtils.getParserServices(context);\n const typeChecker = services.program.getTypeChecker();\n const type = services.getTypeAtLocation(argument);\n\n if (typeChecker.isArrayType(type)) {\n context.report({\n node: argument,\n messageId,\n });\n }\n }\n },\n };\n },\n});\n"]}
1
+ {"version":3,"file":"with-state-no-arrays-at-root-level.js","sourceRoot":"","sources":["../../../../../../modules/eslint-plugin/src/rules/signals/with-state-no-arrays-at-root-level.ts"],"names":[],"mappings":"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","sourcesContent":["import { ESLintUtils, type TSESTree } from '@typescript-eslint/utils';\nimport * as path from 'path';\nimport { createRule } from '../../rule-creator';\nimport { isArrayExpression } from '../../utils';\n\nexport const messageId = 'withStateNoArraysAtRootLevel';\n\ntype MessageIds = typeof messageId;\ntype Options = readonly [];\n\nconst NON_RECORD_TYPES = [\n 'Array',\n 'Set',\n 'Map',\n 'WeakSet',\n 'WeakMap',\n 'Date',\n 'Error',\n 'RegExp',\n 'ArrayBuffer',\n 'DataView',\n 'Promise',\n 'Function',\n];\n\nexport default createRule<Options, MessageIds>({\n name: path.parse(__filename).name,\n meta: {\n type: 'problem',\n docs: {\n description: `withState should accept a record or dictionary as an input argument.`,\n ngrxModule: 'signals',\n requiresTypeChecking: true,\n },\n schema: [],\n messages: {\n [messageId]:\n 'The property type `{{ property }}` is forbidden as the initial state argument, wrap the property in a record or dictionary.',\n },\n },\n defaultOptions: [],\n create: (context) => {\n return {\n [`CallExpression[callee.name=withState]`](node: TSESTree.CallExpression) {\n const [argument] = node.arguments;\n if (isArrayExpression(argument)) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Array' },\n });\n } else if (argument) {\n const services = ESLintUtils.getParserServices(context);\n const typeChecker = services.program.getTypeChecker();\n const type = services.getTypeAtLocation(argument);\n\n if (typeChecker.isArrayType(type) || typeChecker.isTupleType(type)) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Array' },\n });\n return;\n }\n\n const symbol = type.getSymbol();\n if (symbol && NON_RECORD_TYPES.includes(symbol.getName())) {\n context.report({\n node: argument,\n messageId,\n data: { property: symbol.getName() },\n });\n return;\n }\n\n const callSignatures = type.getCallSignatures();\n if (callSignatures.length > 0) {\n context.report({\n node: argument,\n messageId,\n data: { property: 'Function' },\n });\n return;\n }\n\n const typeString = typeChecker.typeToString(type);\n const matchedType = NON_RECORD_TYPES.find((t) =>\n typeString.startsWith(`${t}<`)\n );\n if (matchedType) {\n context.report({\n node: argument,\n messageId,\n data: { property: matchedType },\n });\n }\n }\n },\n };\n },\n});\n"]}
package/v9/index.js CHANGED
@@ -8,14 +8,14 @@ const typescript_eslint_1 = require("typescript-eslint");
8
8
  const rules_1 = require("../src/rules");
9
9
  const package_json_1 = require("../package.json");
10
10
  const all_1 = __importDefault(require("../src/configs/all"));
11
+ const all_type_checked_1 = __importDefault(require("../src/configs/all-type-checked"));
11
12
  const store_1 = __importDefault(require("../src/configs/store"));
12
13
  const effects_1 = __importDefault(require("../src/configs/effects"));
14
+ const effects_type_checked_1 = __importDefault(require("../src/configs/effects-type-checked"));
13
15
  const component_store_1 = __importDefault(require("../src/configs/component-store"));
14
16
  const operators_1 = __importDefault(require("../src/configs/operators"));
15
17
  const signals_1 = __importDefault(require("../src/configs/signals"));
16
- const allTypeChecked_1 = __importDefault(require("../src/configs/allTypeChecked"));
17
- const effectsTypeChecked_1 = __importDefault(require("../src/configs/effectsTypeChecked"));
18
- const signalsTypeChecked_1 = __importDefault(require("../src/configs/signalsTypeChecked"));
18
+ const signals_type_checked_1 = __importDefault(require("../src/configs/signals-type-checked"));
19
19
  const meta = { name: package_json_1.name, version: package_json_1.version };
20
20
  exports.meta = meta;
21
21
  const tsPlugin = {
@@ -23,14 +23,14 @@ const tsPlugin = {
23
23
  };
24
24
  const configs = {
25
25
  all: (0, all_1.default)(tsPlugin, typescript_eslint_1.parser),
26
- allTypeChecked: (0, allTypeChecked_1.default)(tsPlugin, typescript_eslint_1.parser),
26
+ allTypeChecked: (0, all_type_checked_1.default)(tsPlugin, typescript_eslint_1.parser),
27
27
  store: (0, store_1.default)(tsPlugin, typescript_eslint_1.parser),
28
28
  effects: (0, effects_1.default)(tsPlugin, typescript_eslint_1.parser),
29
- effectsTypeChecked: (0, effectsTypeChecked_1.default)(tsPlugin, typescript_eslint_1.parser),
29
+ effectsTypeChecked: (0, effects_type_checked_1.default)(tsPlugin, typescript_eslint_1.parser),
30
30
  componentStore: (0, component_store_1.default)(tsPlugin, typescript_eslint_1.parser),
31
31
  operators: (0, operators_1.default)(tsPlugin, typescript_eslint_1.parser),
32
32
  signals: (0, signals_1.default)(tsPlugin, typescript_eslint_1.parser),
33
- signalsTypeChecked: (0, signalsTypeChecked_1.default)(tsPlugin, typescript_eslint_1.parser),
33
+ signalsTypeChecked: (0, signals_type_checked_1.default)(tsPlugin, typescript_eslint_1.parser),
34
34
  };
35
35
  exports.configs = configs;
36
36
  /*
package/v9/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/v9/index.ts"],"names":[],"mappings":";;;;;;AACA,yDAA2C;AAC3C,wCAAqC;AACrC,kDAGyB;AACzB,6DAAqC;AACrC,iEAAyC;AACzC,qEAA6C;AAC7C,qFAA4D;AAC5D,yEAAiD;AACjD,qEAA6C;AAC7C,mFAA2D;AAC3D,2FAAmE;AACnE,2FAAmE;AAEnE,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,mBAAW,EAAE,OAAO,EAAE,sBAAc,EAAE,CAAC;AA0BnD,oBAAI;AAxBb,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAL,aAAK;CACN,CAAC;AAEF,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,IAAA,aAAG,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAC1B,cAAc,EAAE,IAAA,wBAAc,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAChD,KAAK,EAAE,IAAA,eAAK,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAC9B,OAAO,EAAE,IAAA,iBAAO,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAClC,kBAAkB,EAAE,IAAA,4BAAkB,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACxD,cAAc,EAAE,IAAA,yBAAc,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAChD,SAAS,EAAE,IAAA,mBAAS,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACtC,OAAO,EAAE,IAAA,iBAAO,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAClC,kBAAkB,EAAE,IAAA,4BAAkB,EAAC,QAAQ,EAAE,0BAAM,CAAC;CACzD,CAAC;AAUa,0BAAO;AARtB;;;EAGE;AACF,kBAAe;IACb,IAAI;IACJ,OAAO;CACR,CAAC","sourcesContent":["import { TSESLint } from '@typescript-eslint/utils';\nimport { parser } from 'typescript-eslint';\nimport { rules } from '../src/rules';\nimport {\n name as packageName,\n version as packageVersion,\n} from '../package.json';\nimport all from '../src/configs/all';\nimport store from '../src/configs/store';\nimport effects from '../src/configs/effects';\nimport componentStore from '../src/configs/component-store';\nimport operators from '../src/configs/operators';\nimport signals from '../src/configs/signals';\nimport allTypeChecked from '../src/configs/allTypeChecked';\nimport effectsTypeChecked from '../src/configs/effectsTypeChecked';\nimport signalsTypeChecked from '../src/configs/signalsTypeChecked';\n\nconst meta = { name: packageName, version: packageVersion };\n\nconst tsPlugin: TSESLint.FlatConfig.Plugin = {\n rules,\n};\n\nconst configs = {\n all: all(tsPlugin, parser),\n allTypeChecked: allTypeChecked(tsPlugin, parser),\n store: store(tsPlugin, parser),\n effects: effects(tsPlugin, parser),\n effectsTypeChecked: effectsTypeChecked(tsPlugin, parser),\n componentStore: componentStore(tsPlugin, parser),\n operators: operators(tsPlugin, parser),\n signals: signals(tsPlugin, parser),\n signalsTypeChecked: signalsTypeChecked(tsPlugin, parser),\n};\n\n/*\nAs the angular-eslint plugin we do both a default and named exports to allow people to use this package from\nboth CJS and ESM in very natural ways.\n*/\nexport default {\n meta,\n configs,\n};\nexport { meta, configs };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/v9/index.ts"],"names":[],"mappings":";;;;;;AACA,yDAA2C;AAC3C,wCAAqC;AACrC,kDAGyB;AACzB,6DAAqC;AACrC,uFAA6D;AAC7D,iEAAyC;AACzC,qEAA6C;AAC7C,+FAAqE;AACrE,qFAA4D;AAC5D,yEAAiD;AACjD,qEAA6C;AAC7C,+FAAqE;AAErE,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,mBAAW,EAAE,OAAO,EAAE,sBAAc,EAAE,CAAC;AA0BnD,oBAAI;AAxBb,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAL,aAAK;CACN,CAAC;AAEF,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,IAAA,aAAG,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAC1B,cAAc,EAAE,IAAA,0BAAc,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAChD,KAAK,EAAE,IAAA,eAAK,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAC9B,OAAO,EAAE,IAAA,iBAAO,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAClC,kBAAkB,EAAE,IAAA,8BAAkB,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACxD,cAAc,EAAE,IAAA,yBAAc,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAChD,SAAS,EAAE,IAAA,mBAAS,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACtC,OAAO,EAAE,IAAA,iBAAO,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAClC,kBAAkB,EAAE,IAAA,8BAAkB,EAAC,QAAQ,EAAE,0BAAM,CAAC;CACzD,CAAC;AAUa,0BAAO;AARtB;;;EAGE;AACF,kBAAe;IACb,IAAI;IACJ,OAAO;CACR,CAAC","sourcesContent":["import { TSESLint } from '@typescript-eslint/utils';\nimport { parser } from 'typescript-eslint';\nimport { rules } from '../src/rules';\nimport {\n name as packageName,\n version as packageVersion,\n} from '../package.json';\nimport all from '../src/configs/all';\nimport allTypeChecked from '../src/configs/all-type-checked';\nimport store from '../src/configs/store';\nimport effects from '../src/configs/effects';\nimport effectsTypeChecked from '../src/configs/effects-type-checked';\nimport componentStore from '../src/configs/component-store';\nimport operators from '../src/configs/operators';\nimport signals from '../src/configs/signals';\nimport signalsTypeChecked from '../src/configs/signals-type-checked';\n\nconst meta = { name: packageName, version: packageVersion };\n\nconst tsPlugin: TSESLint.FlatConfig.Plugin = {\n rules,\n};\n\nconst configs = {\n all: all(tsPlugin, parser),\n allTypeChecked: allTypeChecked(tsPlugin, parser),\n store: store(tsPlugin, parser),\n effects: effects(tsPlugin, parser),\n effectsTypeChecked: effectsTypeChecked(tsPlugin, parser),\n componentStore: componentStore(tsPlugin, parser),\n operators: operators(tsPlugin, parser),\n signals: signals(tsPlugin, parser),\n signalsTypeChecked: signalsTypeChecked(tsPlugin, parser),\n};\n\n/*\nAs the angular-eslint plugin we do both a default and named exports to allow people to use this package from\nboth CJS and ESM in very natural ways.\n*/\nexport default {\n meta,\n configs,\n};\nexport { meta, configs };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"allTypeChecked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/allTypeChecked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,iDAAiD,EAAE,OAAO;YAC1D,+CAA+C,EAAE,OAAO;YACxD,+BAA+B,EAAE,OAAO;YACxC,oCAAoC,EAAE,OAAO;YAC7C,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,sCAAsC,EAAE,OAAO;YAC/C,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;YAChD,iCAAiC,EAAE,OAAO;YAC1C,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;YAC7D,0CAA0C,EAAE,OAAO;YACnD,iCAAiC,EAAE,OAAO;YAC1C,uDAAuD,EAAE,OAAO;YAChE,0CAA0C,EAAE,OAAO;YACnD,+BAA+B,EAAE,OAAO;YACxC,2BAA2B,EAAE,OAAO;YACpC,iCAAiC,EAAE,OAAO;YAC1C,+BAA+B,EAAE,OAAO;YACxC,6BAA6B,EAAE,OAAO;YACtC,6BAA6B,EAAE,OAAO;YACtC,wCAAwC,EAAE,OAAO;YACjD,yCAAyC,EAAE,OAAO;YAClD,6BAA6B,EAAE,OAAO;YACtC,kCAAkC,EAAE,OAAO;YAC3C,yDAAyD,EAAE,OAAO;YAClE,iCAAiC,EAAE,OAAO;YAC1C,oCAAoC,EAAE,OAAO;YAC7C,oBAAoB,EAAE,OAAO;YAC7B,wCAAwC,EAAE,OAAO;SAClD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/allTypeChecked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-combining-component-store-selectors': 'error',\n '@ngrx/avoid-mapping-component-store-selectors': 'error',\n '@ngrx/require-super-ondestroy': 'error',\n '@ngrx/updater-explicit-return-type': 'error',\n '@ngrx/avoid-cyclic-effects': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/no-multiple-actions-in-effects': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n '@ngrx/prefer-concat-latest-from': 'error',\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/with-state-no-arrays-at-root-level': 'error',\n '@ngrx/avoid-combining-selectors': 'error',\n '@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',\n '@ngrx/avoid-duplicate-actions-in-reducer': 'error',\n '@ngrx/avoid-mapping-selectors': 'error',\n '@ngrx/good-action-hygiene': 'error',\n '@ngrx/no-multiple-global-stores': 'error',\n '@ngrx/no-reducer-in-key-names': 'error',\n '@ngrx/no-store-subscription': 'error',\n '@ngrx/no-typed-global-store': 'error',\n '@ngrx/on-function-explicit-return-type': 'error',\n '@ngrx/prefer-action-creator-in-dispatch': 'error',\n '@ngrx/prefer-action-creator': 'error',\n '@ngrx/prefer-inline-action-props': 'error',\n '@ngrx/prefer-one-generic-in-create-for-feature-selector': 'error',\n '@ngrx/prefer-selector-in-select': 'error',\n '@ngrx/prefix-selectors-with-select': 'error',\n '@ngrx/select-style': 'error',\n '@ngrx/use-consistent-global-store-name': 'error',\n },\n },\n];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"effectsTypeChecked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/effectsTypeChecked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,4BAA4B,EAAE,OAAO;YACrC,8BAA8B,EAAE,OAAO;YACvC,+BAA+B,EAAE,OAAO;YACxC,sCAAsC,EAAE,OAAO;YAC/C,wCAAwC,EAAE,OAAO;YACjD,iDAAiD,EAAE,OAAO;YAC1D,uCAAuC,EAAE,OAAO;SACjD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/effectsTypeChecked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/avoid-cyclic-effects': 'error',\n '@ngrx/no-dispatch-in-effects': 'error',\n '@ngrx/no-effects-in-providers': 'error',\n '@ngrx/no-multiple-actions-in-effects': 'error',\n '@ngrx/prefer-action-creator-in-of-type': 'error',\n '@ngrx/prefer-effect-callback-in-block-statement': 'error',\n '@ngrx/use-effects-lifecycle-interface': 'error',\n },\n },\n];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"signalsTypeChecked.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/src/configs/signalsTypeChecked.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,kBAAe,CACb,MAAkC,EAClC,MAAkC,EACD,EAAE,CAAC;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE;YACf,MAAM;SACP;QACD,OAAO,EAAE;YACP,OAAO,EAAE,MAAM;SAChB;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,eAAe,EAAE;YACf,MAAM;SACP;QACD,KAAK,EAAE;YACL,yBAAyB,EAAE,OAAO;YAClC,8BAA8B,EAAE,OAAO;YACvC,4CAA4C,EAAE,OAAO;YACrD,oDAAoD,EAAE,OAAO;YAC7D,0CAA0C,EAAE,OAAO;SACpD;KACF;CACF,CAAC","sourcesContent":["/**\n * DO NOT EDIT\n * This file is generated\n */\n\nimport type { TSESLint } from '@typescript-eslint/utils';\n\nexport 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 },\n plugins: {\n '@ngrx': plugin,\n },\n },\n {\n name: 'ngrx/signalsTypeChecked',\n languageOptions: {\n parser,\n },\n rules: {\n '@ngrx/enforce-type-call': 'error',\n '@ngrx/prefer-protected-state': 'error',\n '@ngrx/signal-state-no-arrays-at-root-level': 'error',\n '@ngrx/signal-store-feature-should-use-generic-type': 'error',\n '@ngrx/with-state-no-arrays-at-root-level': 'error',\n },\n },\n];\n"]}