@ngrx/eslint-plugin 14.0.0-beta.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.
- package/jest.config.js +22 -0
- package/jest.config.js.map +1 -0
- package/migrations/migration.json +3 -0
- package/package.json +51 -0
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.js +51 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +87 -0
- package/scripts/generate-config.js +85 -0
- package/scripts/generate-config.js.map +1 -0
- package/scripts/generate-docs.js +90 -0
- package/scripts/generate-docs.js.map +1 -0
- package/scripts/generate-overview.js +98 -0
- package/scripts/generate-overview.js.map +1 -0
- package/spec/utils/index.js +22 -0
- package/spec/utils/index.js.map +1 -0
- package/src/configs/all-requiring-type-checking.js +46 -0
- package/src/configs/all-requiring-type-checking.js.map +1 -0
- package/src/configs/all.js +39 -0
- package/src/configs/all.js.map +1 -0
- package/src/configs/component-store-strict.js +11 -0
- package/src/configs/component-store-strict.js.map +1 -0
- package/src/configs/component-store.js +11 -0
- package/src/configs/component-store.js.map +1 -0
- package/src/configs/effects-requiring-type-checking.js +27 -0
- package/src/configs/effects-requiring-type-checking.js.map +1 -0
- package/src/configs/effects-strict-requiring-type-checking.js +27 -0
- package/src/configs/effects-strict-requiring-type-checking.js.map +1 -0
- package/src/configs/effects-strict.js +20 -0
- package/src/configs/effects-strict.js.map +1 -0
- package/src/configs/effects.js +20 -0
- package/src/configs/effects.js.map +1 -0
- package/src/configs/index.js +33 -0
- package/src/configs/index.js.map +1 -0
- package/src/configs/recommended-requiring-type-checking.js +46 -0
- package/src/configs/recommended-requiring-type-checking.js.map +1 -0
- package/src/configs/recommended.js +39 -0
- package/src/configs/recommended.js.map +1 -0
- package/src/configs/store-strict.js +30 -0
- package/src/configs/store-strict.js.map +1 -0
- package/src/configs/store.js +30 -0
- package/src/configs/store.js.map +1 -0
- package/src/configs/strict-requiring-type-checking.js +46 -0
- package/src/configs/strict-requiring-type-checking.js.map +1 -0
- package/src/configs/strict.js +39 -0
- package/src/configs/strict.js.map +1 -0
- package/src/index.js +8 -0
- package/src/index.js.map +1 -0
- package/src/rule-creator.js +29 -0
- package/src/rule-creator.js.map +1 -0
- package/src/rules/component-store/updater-explicit-return-type.js +69 -0
- package/src/rules/component-store/updater-explicit-return-type.js.map +1 -0
- package/src/rules/effects/avoid-cyclic-effects.js +202 -0
- package/src/rules/effects/avoid-cyclic-effects.js.map +1 -0
- package/src/rules/effects/no-dispatch-in-effects.js +83 -0
- package/src/rules/effects/no-dispatch-in-effects.js.map +1 -0
- package/src/rules/effects/no-effect-decorator-and-creator.js +107 -0
- package/src/rules/effects/no-effect-decorator-and-creator.js.map +1 -0
- package/src/rules/effects/no-effect-decorator.js +124 -0
- package/src/rules/effects/no-effect-decorator.js.map +1 -0
- package/src/rules/effects/no-effects-in-providers.js +105 -0
- package/src/rules/effects/no-effects-in-providers.js.map +1 -0
- package/src/rules/effects/no-multiple-actions-in-effects.js +77 -0
- package/src/rules/effects/no-multiple-actions-in-effects.js.map +1 -0
- package/src/rules/effects/prefer-action-creator-in-of-type.js +58 -0
- package/src/rules/effects/prefer-action-creator-in-of-type.js.map +1 -0
- package/src/rules/effects/prefer-concat-latest-from.js +153 -0
- package/src/rules/effects/prefer-concat-latest-from.js.map +1 -0
- package/src/rules/effects/prefer-effect-callback-in-block-statement.js +99 -0
- package/src/rules/effects/prefer-effect-callback-in-block-statement.js.map +1 -0
- package/src/rules/effects/use-effects-lifecycle-interface.js +88 -0
- package/src/rules/effects/use-effects-lifecycle-interface.js.map +1 -0
- package/src/rules/index.js +59 -0
- package/src/rules/index.js.map +1 -0
- package/src/rules/store/avoid-combining-selectors.js +65 -0
- package/src/rules/store/avoid-combining-selectors.js.map +1 -0
- package/src/rules/store/avoid-dispatching-multiple-actions-sequentially.js +95 -0
- package/src/rules/store/avoid-dispatching-multiple-actions-sequentially.js.map +1 -0
- package/src/rules/store/avoid-duplicate-actions-in-reducer.js +150 -0
- package/src/rules/store/avoid-duplicate-actions-in-reducer.js.map +1 -0
- package/src/rules/store/avoid-mapping-selectors.js +82 -0
- package/src/rules/store/avoid-mapping-selectors.js.map +1 -0
- package/src/rules/store/good-action-hygiene.js +84 -0
- package/src/rules/store/good-action-hygiene.js.map +1 -0
- package/src/rules/store/no-multiple-global-stores.js +157 -0
- package/src/rules/store/no-multiple-global-stores.js.map +1 -0
- package/src/rules/store/no-reducer-in-key-names.js +76 -0
- package/src/rules/store/no-reducer-in-key-names.js.map +1 -0
- package/src/rules/store/no-store-subscription.js +64 -0
- package/src/rules/store/no-store-subscription.js.map +1 -0
- package/src/rules/store/no-typed-global-store.js +101 -0
- package/src/rules/store/no-typed-global-store.js.map +1 -0
- package/src/rules/store/on-function-explicit-return-type.js +106 -0
- package/src/rules/store/on-function-explicit-return-type.js.map +1 -0
- package/src/rules/store/prefer-action-creator-in-dispatch.js +70 -0
- package/src/rules/store/prefer-action-creator-in-dispatch.js.map +1 -0
- package/src/rules/store/prefer-action-creator.js +58 -0
- package/src/rules/store/prefer-action-creator.js.map +1 -0
- package/src/rules/store/prefer-inline-action-props.js +72 -0
- package/src/rules/store/prefer-inline-action-props.js.map +1 -0
- package/src/rules/store/prefer-one-generic-in-create-for-feature-selector.js +93 -0
- package/src/rules/store/prefer-one-generic-in-create-for-feature-selector.js.map +1 -0
- package/src/rules/store/prefer-selector-in-select.js +93 -0
- package/src/rules/store/prefer-selector-in-select.js.map +1 -0
- package/src/rules/store/prefix-selectors-with-select.js +107 -0
- package/src/rules/store/prefix-selectors-with-select.js.map +1 -0
- package/src/rules/store/select-style.js +196 -0
- package/src/rules/store/select-style.js.map +1 -0
- package/src/rules/store/use-consistent-global-store-name.js +139 -0
- package/src/rules/store/use-consistent-global-store-name.js.map +1 -0
- package/src/utils/helper-functions/docs.js +8 -0
- package/src/utils/helper-functions/docs.js.map +1 -0
- package/src/utils/helper-functions/folder.js +118 -0
- package/src/utils/helper-functions/folder.js.map +1 -0
- package/src/utils/helper-functions/guards.js +56 -0
- package/src/utils/helper-functions/guards.js.map +1 -0
- package/src/utils/helper-functions/index.js +23 -0
- package/src/utils/helper-functions/index.js.map +1 -0
- package/src/utils/helper-functions/ngrx-modules.js +10 -0
- package/src/utils/helper-functions/ngrx-modules.js.map +1 -0
- package/src/utils/helper-functions/utils.js +302 -0
- package/src/utils/helper-functions/utils.js.map +1 -0
- package/src/utils/helper-functions/versions.js +70 -0
- package/src/utils/helper-functions/versions.js.map +1 -0
- package/src/utils/index.js +19 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/selectors/index.js +58 -0
- package/src/utils/selectors/index.js.map +1 -0
package/jest.config.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
exports["default"] = {
|
|
5
|
+
displayName: 'eslint-plugin',
|
|
6
|
+
preset: '../../jest.preset.js',
|
|
7
|
+
coverageDirectory: '../../coverage/modules/esling-plugin',
|
|
8
|
+
setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],
|
|
9
|
+
testEnvironment: 'node',
|
|
10
|
+
globals: {
|
|
11
|
+
'ts-jest': {
|
|
12
|
+
tsconfig: '<rootDir>/tsconfig.spec.json',
|
|
13
|
+
stringifyContentPathRegex: '\\.(html|svg)$'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
transform: { '^.+\\.(ts|js|mjs|html)$': 'jest-preset-angular' },
|
|
17
|
+
transformIgnorePatterns: ['node_modules/(?!@angular|tslib)'],
|
|
18
|
+
moduleNameMapper: {
|
|
19
|
+
tslib: '<rootDir>../../node_modules/tslib/tslib.es6.js'
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=jest.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../../../modules/eslint-plugin/jest.config.ts"],"names":[],"mappings":";;AAAA,oBAAoB;AACpB,qBAAe;IACb,WAAW,EAAE,eAAe;IAC5B,MAAM,EAAE,sBAAsB;IAC9B,iBAAiB,EAAE,sCAAsC;IACzD,kBAAkB,EAAE,CAAC,yBAAyB,CAAC;IAC/C,eAAe,EAAE,MAAM;IACvB,OAAO,EAAE;QACP,SAAS,EAAE;YACT,QAAQ,EAAE,8BAA8B;YACxC,yBAAyB,EAAE,gBAAgB;SAC5C;KACF;IACD,SAAS,EAAE,EAAE,yBAAyB,EAAE,qBAAqB,EAAE;IAC/D,uBAAuB,EAAE,CAAC,iCAAiC,CAAC;IAC5D,gBAAgB,EAAE;QAChB,KAAK,EAAE,gDAAgD;KACxD;CACF,CAAC","sourcesContent":["/* eslint-disable */\nexport default {\n displayName: 'eslint-plugin',\n preset: '../../jest.preset.js',\n coverageDirectory: '../../coverage/modules/esling-plugin',\n setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],\n testEnvironment: 'node',\n globals: {\n 'ts-jest': {\n tsconfig: '<rootDir>/tsconfig.spec.json',\n stringifyContentPathRegex: '\\\\.(html|svg)$',\n },\n },\n transform: { '^.+\\\\.(ts|js|mjs|html)$': 'jest-preset-angular' },\n transformIgnorePatterns: ['node_modules/(?!@angular|tslib)'],\n moduleNameMapper: {\n tslib: '<rootDir>../../node_modules/tslib/tslib.es6.js',\n },\n};\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ngrx/eslint-plugin",
|
|
3
|
+
"version": "14.0.0-beta.0",
|
|
4
|
+
"description": "NgRx ESLint Plugin",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/ngrx/platform.git"
|
|
8
|
+
},
|
|
9
|
+
"keywords": [
|
|
10
|
+
"RxJS",
|
|
11
|
+
"Angular",
|
|
12
|
+
"Redux",
|
|
13
|
+
"NgRx"
|
|
14
|
+
],
|
|
15
|
+
"author": "NgRx",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/ngrx/platform/issues"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/ngrx/platform#readme",
|
|
21
|
+
"schematics": "./schematics/collection.json",
|
|
22
|
+
"ng-update": {
|
|
23
|
+
"packageGroup": [
|
|
24
|
+
"@ngrx/store",
|
|
25
|
+
"@ngrx/effects",
|
|
26
|
+
"@ngrx/entity",
|
|
27
|
+
"@ngrx/router-store",
|
|
28
|
+
"@ngrx/data",
|
|
29
|
+
"@ngrx/schematics",
|
|
30
|
+
"@ngrx/store-devtools",
|
|
31
|
+
"@ngrx/component-store",
|
|
32
|
+
"@ngrx/component",
|
|
33
|
+
"@ngrx/eslint-plugin"
|
|
34
|
+
],
|
|
35
|
+
"migrations": "./migrations/migration.json"
|
|
36
|
+
},
|
|
37
|
+
"sideEffects": false,
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@angular-devkit/schematics": "^14.0.0-rc.0",
|
|
40
|
+
"@typescript-eslint/experimental-utils": "^5.4.0",
|
|
41
|
+
"eslint-etc": "^5.1.0",
|
|
42
|
+
"semver": "^7.3.5",
|
|
43
|
+
"strip-json-comments": "3.1.1"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"eslint": ">=8.0.0",
|
|
47
|
+
"typescript": ">=4.4.0"
|
|
48
|
+
},
|
|
49
|
+
"main": "./src/index.js",
|
|
50
|
+
"typings": "./src/index.d.ts"
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
var strip_json_comments_1 = __importDefault(require("strip-json-comments"));
|
|
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');
|
|
13
|
+
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"));
|
|
15
|
+
return host;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
var json = JSON.parse((0, strip_json_comments_1["default"])(eslint));
|
|
19
|
+
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
|
+
})) {
|
|
26
|
+
json.overrides.push(configurePlugin(schema.config));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (!((_b = json["extends"]) === null || _b === void 0 ? void 0 : _b.some(function (extend) { return extend.startsWith('plugin:@ngrx'); }))) {
|
|
30
|
+
json.overrides = [configurePlugin(schema.config)];
|
|
31
|
+
}
|
|
32
|
+
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 If you want to change the configuration, please see ").concat(docs, ".\n "));
|
|
34
|
+
return host;
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
var detailsContent = err instanceof Error
|
|
38
|
+
? "\nDetails:\n".concat(err.message, "\n")
|
|
39
|
+
: '';
|
|
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"));
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
function configurePlugin(config) {
|
|
44
|
+
return {
|
|
45
|
+
files: ['*.ts'],
|
|
46
|
+
"extends": ["plugin:@ngrx/".concat(config)]
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports["default"] = addNgRxESLintPlugin;
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDACc,gBAAgB,uFAG3C,IAAI,4CAChB,CAAC,CAAC;YACG,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,gCAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IACE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,QAAa;;oBACjC,OAAA,MAAA,QAAQ,CAAC,SAAO,CAAA,0CAAE,IAAI,CAAC,UAAC,MAAW;wBACjC,OAAA,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;oBAAjC,CAAiC,CAClC,CAAA;iBAAA,CACF,EACD;oBACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBACrD;aACF;iBAAM,IACL,CAAC,CAAA,MAAA,IAAI,CAAC,SAAO,CAAA,0CAAE,IAAI,CAAC,UAAC,MAAW,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAjC,CAAiC,CAAC,CAAA,EACvE;gBACA,IAAI,CAAC,SAAS,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACnD;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,gFAEtB,IAAI,UACzD,CAAC,CAAC;YACC,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,GAAG,EAAE;YACZ,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;SACE;IACH,CAAC,CAAC;IACF,SAAS,eAAe,CAAC,MAAwB;QAC/C,OAAO;YACL,KAAK,EAAE,CAAC,MAAM,CAAC;YACf,SAAO,EAAE,CAAC,uBAAgB,MAAM,CAAE,CAAC;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAjED,yCAiEC","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 If you want to change the configuration, please see ${docs}.\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 @@
|
|
|
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"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "SchematicsEslintPluginNgRx",
|
|
4
|
+
"title": "eslint-plugin-ngrx schema",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"config": {
|
|
8
|
+
"description": "The config to be used.",
|
|
9
|
+
"type": "string",
|
|
10
|
+
"default": "recommended",
|
|
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
|
+
"all",
|
|
24
|
+
"all-requiring-type-checking"
|
|
25
|
+
],
|
|
26
|
+
"x-prompt": {
|
|
27
|
+
"message": "Which config would you like to use?",
|
|
28
|
+
"type": "list",
|
|
29
|
+
"items": [
|
|
30
|
+
{
|
|
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"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"value": "store-strict",
|
|
52
|
+
"label": "strict store"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"value": "effects",
|
|
56
|
+
"label": "effects"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"value": "effects-requiring-type-checking",
|
|
60
|
+
"label": "effects with type checking"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"value": "effects-strict",
|
|
64
|
+
"label": "strict effects"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"value": "component-store",
|
|
68
|
+
"label": "component-store"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
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"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"required": []
|
|
87
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
exports.__esModule = 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);
|
|
68
|
+
return rules;
|
|
69
|
+
}, {});
|
|
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
|
+
})
|
|
75
|
+
? {
|
|
76
|
+
ecmaVersion: 2020,
|
|
77
|
+
sourceType: 'module',
|
|
78
|
+
project: './tsconfig.json'
|
|
79
|
+
}
|
|
80
|
+
: 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);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=generate-config.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
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
|
+
exports.__esModule = 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
|
+
var doc = (0, fs_1.readFileSync)(docPath, 'utf-8');
|
|
78
|
+
var docContent = doc.substring(doc.indexOf(PLACEHOLDER) + PLACEHOLDER.length);
|
|
79
|
+
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));
|
|
80
|
+
(0, fs_1.writeFileSync)(docPath, newDoc);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
84
|
+
finally {
|
|
85
|
+
try {
|
|
86
|
+
if (_f && !_f.done && (_a = _e["return"])) _a.call(_e);
|
|
87
|
+
}
|
|
88
|
+
finally { if (e_1) throw e_1.error; }
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=generate-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-docs.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-docs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAiD;AACjD,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;QAA/C,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,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;KAChC","sourcesContent":["import { readFileSync, writeFileSync } 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 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"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
+
if (ar || !(i in from)) {
|
|
32
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
+
ar[i] = from[i];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
+
};
|
|
38
|
+
exports.__esModule = true;
|
|
39
|
+
var fs_1 = require("fs");
|
|
40
|
+
var os_1 = require("os");
|
|
41
|
+
var prettier_1 = require("prettier");
|
|
42
|
+
var rules_1 = require("../src/rules");
|
|
43
|
+
var configs_1 = require("../src/configs");
|
|
44
|
+
var prettierConfig = prettier_1.resolveConfig.sync(__dirname);
|
|
45
|
+
var OVERVIEW = './projects/ngrx.io/content/guide/eslint-plugin/index.md';
|
|
46
|
+
var GH_CONFIGS = 'https://github.com/ngrx/platform/blob/master/modules/eslint-plugin/src/configs';
|
|
47
|
+
generateRules();
|
|
48
|
+
generateConfigurations();
|
|
49
|
+
function generateRules() {
|
|
50
|
+
var moduleRules = Object.entries(rules_1.rules).reduce(function (all, _a) {
|
|
51
|
+
var _b, _c, _d, _e, _f, _g;
|
|
52
|
+
var _h = __read(_a, 2), ruleName = _h[0], meta = _h[1].meta;
|
|
53
|
+
all[meta.ngrxModule] = ((_b = all[meta.ngrxModule]) !== null && _b !== void 0 ? _b : []).concat([
|
|
54
|
+
[
|
|
55
|
+
"[@ngrx/".concat(ruleName, "]").concat(((_c = meta.docs) === null || _c === void 0 ? void 0 : _c.url)
|
|
56
|
+
? '(' +
|
|
57
|
+
meta.docs.url
|
|
58
|
+
.replace('https://ngrx.io', '')
|
|
59
|
+
.replace('.md', '') +
|
|
60
|
+
')'
|
|
61
|
+
: ''),
|
|
62
|
+
(_e = (_d = meta.docs) === null || _d === void 0 ? void 0 : _d.description) !== null && _e !== void 0 ? _e : 'TODO',
|
|
63
|
+
meta.type,
|
|
64
|
+
"".concat((_f = meta.docs) === null || _f === void 0 ? void 0 : _f.recommended),
|
|
65
|
+
meta.fixable ? 'Yes' : 'No',
|
|
66
|
+
meta.hasSuggestions ? 'Yes' : 'No',
|
|
67
|
+
meta.schema.length ? 'Yes' : 'No',
|
|
68
|
+
((_g = meta.docs) === null || _g === void 0 ? void 0 : _g.requiresTypeChecking) ? 'Yes' : 'No',
|
|
69
|
+
],
|
|
70
|
+
]);
|
|
71
|
+
return all;
|
|
72
|
+
}, {});
|
|
73
|
+
var tableHeader = "| Name | Description | Recommended | Category | Fixable | Has suggestions | Configurable | Requires type information\n| --- | --- | --- | --- | --- | --- | --- | --- |";
|
|
74
|
+
var configTable = Object.entries(moduleRules).map(function (_a) {
|
|
75
|
+
var _b = __read(_a, 2), ngrxModule = _b[0], pluginRules = _b[1];
|
|
76
|
+
var tableBody = pluginRules
|
|
77
|
+
.map(function (rule) { return "|".concat(rule.join('|'), "|"); })
|
|
78
|
+
.join(os_1.EOL);
|
|
79
|
+
var table = [tableHeader, tableBody].join(os_1.EOL);
|
|
80
|
+
return ["### ".concat(ngrxModule), table].join(os_1.EOL);
|
|
81
|
+
});
|
|
82
|
+
var overview = (0, fs_1.readFileSync)(OVERVIEW, 'utf-8');
|
|
83
|
+
var start = overview.indexOf('<!-- RULES-CONFIG:START -->');
|
|
84
|
+
var end = overview.indexOf('<!-- RULES-CONFIG:END -->');
|
|
85
|
+
var newOverview = (0, prettier_1.format)("".concat(overview.substring(0, start + '<!-- RULES-CONFIG:START -->'.length), "\n").concat(configTable.join(os_1.EOL), "\n").concat(overview.substring(end)), __assign({ parser: 'markdown' }, prettierConfig));
|
|
86
|
+
(0, fs_1.writeFileSync)(OVERVIEW, newOverview);
|
|
87
|
+
}
|
|
88
|
+
function generateConfigurations() {
|
|
89
|
+
var tableHeader = "| Name |\n | --- |";
|
|
90
|
+
var config = Object.keys(configs_1.configs);
|
|
91
|
+
var overview = (0, fs_1.readFileSync)(OVERVIEW, 'utf-8');
|
|
92
|
+
var start = overview.indexOf('<!-- CONFIGURATIONS-CONFIG:START -->');
|
|
93
|
+
var end = overview.indexOf('<!-- CONFIGURATIONS-CONFIG:END -->');
|
|
94
|
+
var configTable = config.map(function (configName) { return "| [".concat(configName, "](").concat(GH_CONFIGS, "/").concat(configName, ".ts) |"); });
|
|
95
|
+
var newOverview = (0, prettier_1.format)("".concat(overview.substring(0, start + '<!-- CONFIGURATIONS-CONFIG:START -->'.length), "\n ").concat(__spreadArray([tableHeader], __read(configTable), false).join(os_1.EOL), "\n ").concat(overview.substring(end)), __assign({ parser: 'markdown' }, prettierConfig));
|
|
96
|
+
(0, fs_1.writeFileSync)(OVERVIEW, newOverview);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=generate-overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-overview.js","sourceRoot":"","sources":["../../../../modules/eslint-plugin/scripts/generate-overview.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAiD;AACjD,yBAAyB;AACzB,qCAAiD;AACjD,sCAAqC;AACrC,0CAAyC;AAEzC,IAAM,cAAc,GAAG,wBAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,IAAM,QAAQ,GAAG,yDAAyD,CAAC;AAC3E,IAAM,UAAU,GACd,gFAAgF,CAAC;AAEnF,aAAa,EAAE,CAAC;AAChB,sBAAsB,EAAE,CAAC;AAEzB,SAAS,aAAa;IACpB,IAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAK,CAAC,CAAC,MAAM,CAC9C,UAAC,GAAG,EAAE,EAAoB;;YAApB,KAAA,aAAoB,EAAnB,QAAQ,QAAA,EAAI,IAAI,aAAA;QACrB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACzD;gBACE,iBAAU,QAAQ,cAChB,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG;oBACZ,CAAC,CAAC,GAAG;wBACH,IAAI,CAAC,IAAI,CAAC,GAAG;6BACV,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;6BAC9B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;wBACrB,GAAG;oBACL,CAAC,CAAC,EAAE,CACN;gBACF,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,mCAAI,MAAM;gBAChC,IAAI,CAAC,IAAI;gBACT,UAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,CAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC3B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACjC,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,oBAAoB,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aAC/C;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,IAAM,WAAW,GAAG,yKAC4B,CAAC;IAEjD,IAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CACjD,UAAC,EAAyB;YAAzB,KAAA,aAAyB,EAAxB,UAAU,QAAA,EAAE,WAAW,QAAA;QACvB,IAAM,SAAS,GAAG,WAAW;aAC1B,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,WAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAArB,CAAqB,CAAC;aACpC,IAAI,CAAC,QAAG,CAAC,CAAC;QACb,IAAM,KAAK,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC,CAAC;QAEjD,OAAO,CAAC,cAAO,UAAU,CAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;IAEF,IAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,IAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC9D,IAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAE1D,IAAM,WAAW,GAAG,IAAA,iBAAM,EACxB,UAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,6BAA6B,CAAC,MAAM,CAAC,eACxE,WAAW,CAAC,IAAI,CAAC,QAAG,CAAC,eACrB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAE,aAErB,MAAM,EAAE,UAAU,IACf,cAAc,EAEpB,CAAC;IAEF,IAAA,kBAAa,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,sBAAsB;IAC7B,IAAM,WAAW,GAAG,qBACZ,CAAC;IAET,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,CAAC;IAEpC,IAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,IAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACvE,IAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAEnE,IAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAC5B,UAAC,UAAU,IAAK,OAAA,aAAM,UAAU,eAAK,UAAU,cAAI,UAAU,WAAQ,EAArD,CAAqD,CACtE,CAAC;IACF,IAAM,WAAW,GAAG,IAAA,iBAAM,EACxB,UAAG,QAAQ,CAAC,SAAS,CACnB,CAAC,EACD,KAAK,GAAG,sCAAsC,CAAC,MAAM,CACtD,iBACD,eAAC,WAAW,UAAK,WAAW,UAAE,IAAI,CAAC,QAAG,CAAC,iBACvC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAE,aAEvB,MAAM,EAAE,UAAU,IACf,cAAc,EAEpB,CAAC;IAEF,IAAA,kBAAa,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import { readFileSync, writeFileSync } from 'fs';\nimport { EOL } from 'os';\nimport { format, resolveConfig } from 'prettier';\nimport { rules } from '../src/rules';\nimport { configs } from '../src/configs';\n\nconst prettierConfig = resolveConfig.sync(__dirname);\nconst OVERVIEW = './projects/ngrx.io/content/guide/eslint-plugin/index.md';\nconst GH_CONFIGS =\n 'https://github.com/ngrx/platform/blob/master/modules/eslint-plugin/src/configs';\n\ngenerateRules();\ngenerateConfigurations();\n\nfunction generateRules() {\n const moduleRules = Object.entries(rules).reduce<Record<string, string[][]>>(\n (all, [ruleName, { meta }]) => {\n all[meta.ngrxModule] = (all[meta.ngrxModule] ?? []).concat([\n [\n `[@ngrx/${ruleName}]${\n meta.docs?.url\n ? '(' +\n meta.docs.url\n .replace('https://ngrx.io', '')\n .replace('.md', '') +\n ')'\n : ''\n }`,\n meta.docs?.description ?? 'TODO',\n meta.type,\n `${meta.docs?.recommended}`,\n meta.fixable ? 'Yes' : 'No',\n meta.hasSuggestions ? 'Yes' : 'No',\n meta.schema.length ? 'Yes' : 'No',\n meta.docs?.requiresTypeChecking ? 'Yes' : 'No',\n ],\n ]);\n return all;\n },\n {}\n );\n\n const tableHeader = `| Name | Description | Recommended | Category | Fixable | Has suggestions | Configurable | Requires type information\n| --- | --- | --- | --- | --- | --- | --- | --- |`;\n\n const configTable = Object.entries(moduleRules).map(\n ([ngrxModule, pluginRules]) => {\n const tableBody = pluginRules\n .map((rule) => `|${rule.join('|')}|`)\n .join(EOL);\n const table = [tableHeader, tableBody].join(EOL);\n\n return [`### ${ngrxModule}`, table].join(EOL);\n }\n );\n\n const overview = readFileSync(OVERVIEW, 'utf-8');\n const start = overview.indexOf('<!-- RULES-CONFIG:START -->');\n const end = overview.indexOf('<!-- RULES-CONFIG:END -->');\n\n const newOverview = format(\n `${overview.substring(0, start + '<!-- RULES-CONFIG:START -->'.length)}\n${configTable.join(EOL)}\n${overview.substring(end)}`,\n {\n parser: 'markdown',\n ...prettierConfig,\n }\n );\n\n writeFileSync(OVERVIEW, newOverview);\n}\n\nfunction generateConfigurations() {\n const tableHeader = `| Name |\n | --- |`;\n\n const config = Object.keys(configs);\n\n const overview = readFileSync(OVERVIEW, 'utf-8');\n const start = overview.indexOf('<!-- CONFIGURATIONS-CONFIG:START -->');\n const end = overview.indexOf('<!-- CONFIGURATIONS-CONFIG:END -->');\n\n const configTable = config.map(\n (configName) => `| [${configName}](${GH_CONFIGS}/${configName}.ts) |`\n );\n const newOverview = format(\n `${overview.substring(\n 0,\n start + '<!-- CONFIGURATIONS-CONFIG:START -->'.length\n )}\n ${[tableHeader, ...configTable].join(EOL)}\n ${overview.substring(end)}`,\n {\n parser: 'markdown',\n ...prettierConfig,\n }\n );\n\n writeFileSync(OVERVIEW, newOverview);\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.ruleTester = void 0;
|
|
4
|
+
var experimental_utils_1 = require("@typescript-eslint/experimental-utils");
|
|
5
|
+
var path_1 = require("path");
|
|
6
|
+
var utils_1 = require("../../src/utils");
|
|
7
|
+
function ruleTester(environment) {
|
|
8
|
+
(0, utils_1.clearCache)();
|
|
9
|
+
if (environment) {
|
|
10
|
+
(0, utils_1.setNgrxVersion)(environment.ngrxModule, environment.version);
|
|
11
|
+
}
|
|
12
|
+
return new experimental_utils_1.TSESLint.RuleTester({
|
|
13
|
+
parser: (0, path_1.resolve)('./node_modules/@typescript-eslint/parser'),
|
|
14
|
+
parserOptions: {
|
|
15
|
+
project: (0, path_1.resolve)('./modules/eslint-plugin/spec/tsconfig.json'),
|
|
16
|
+
ecmaVersion: 2020,
|
|
17
|
+
sourceType: 'module'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.ruleTester = ruleTester;
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/eslint-plugin/spec/utils/index.ts"],"names":[],"mappings":";;;AAAA,4EAAiE;AACjE,6BAA+B;AAC/B,yCAA6D;AAE7D,SAAgB,UAAU,CAAC,WAG1B;IACC,IAAA,kBAAU,GAAE,CAAC;IAEb,IAAI,WAAW,EAAE;QACf,IAAA,sBAAc,EAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,6BAAQ,CAAC,UAAU,CAAC;QAC7B,MAAM,EAAE,IAAA,cAAO,EAAC,0CAA0C,CAAC;QAC3D,aAAa,EAAE;YACb,OAAO,EAAE,IAAA,cAAO,EAAC,4CAA4C,CAAC;YAC9D,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,QAAQ;SACrB;KACF,CAAC,CAAC;AACL,CAAC;AAlBD,gCAkBC","sourcesContent":["import { TSESLint } from '@typescript-eslint/experimental-utils';\nimport { resolve } from 'path';\nimport { clearCache, setNgrxVersion } from '../../src/utils';\n\nexport function ruleTester(environment?: {\n ngrxModule: string;\n version: string;\n}) {\n clearCache();\n\n if (environment) {\n setNgrxVersion(environment.ngrxModule, environment.version);\n }\n\n return new TSESLint.RuleTester({\n parser: resolve('./node_modules/@typescript-eslint/parser'),\n parserOptions: {\n project: resolve('./modules/eslint-plugin/spec/tsconfig.json'),\n ecmaVersion: 2020,\n sourceType: 'module',\n },\n });\n}\n"]}
|