@codeperfect/eslint-plugin 1.0.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/LICENSE +21 -0
- package/README.md +128 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +16 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +131 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +48 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +126 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +40 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +90 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/exports-only-rule.js +218 -0
- package/dist/architecture/consistent-barrel-files/index.d.ts +5 -0
- package/dist/architecture/consistent-barrel-files/index.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/index.js +4 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +100 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +40 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +90 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +65 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +154 -0
- package/dist/architecture/consistent-barrel-files/rule.d.ts +11 -0
- package/dist/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/rule.js +58 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts +141 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/test-helpers.js +229 -0
- package/dist/architecture/consistent-barrel-files/types.d.ts +25 -0
- package/dist/architecture/consistent-barrel-files/types.d.ts.map +1 -0
- package/dist/architecture/consistent-barrel-files/types.js +2 -0
- package/dist/architecture/index.d.ts +2 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +2 -0
- package/dist/benchmark-rules.d.ts +83 -0
- package/dist/benchmark-rules.d.ts.map +1 -0
- package/dist/benchmark-rules.js +175 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/codeperfect-plugin.d.ts +46 -0
- package/dist/codeperfect-plugin.d.ts.map +1 -0
- package/dist/codeperfect-plugin.js +29 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/no-multiple-declarators/index.d.ts +2 -0
- package/dist/core/no-multiple-declarators/index.d.ts.map +1 -0
- package/dist/core/no-multiple-declarators/index.js +2 -0
- package/dist/core/no-multiple-declarators/rule.d.ts +4 -0
- package/dist/core/no-multiple-declarators/rule.d.ts.map +1 -0
- package/dist/core/no-multiple-declarators/rule.js +100 -0
- package/dist/core/prefer-interface-types/index.d.ts +2 -0
- package/dist/core/prefer-interface-types/index.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/index.js +2 -0
- package/dist/core/prefer-interface-types/rule.d.ts +5 -0
- package/dist/core/prefer-interface-types/rule.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/rule.js +145 -0
- package/dist/core/prefer-interface-types/test-helpers.d.ts +110 -0
- package/dist/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
- package/dist/core/prefer-interface-types/test-helpers.js +116 -0
- package/dist/custom-rule-documentation.d.ts +36 -0
- package/dist/custom-rule-documentation.d.ts.map +1 -0
- package/dist/custom-rule-documentation.js +35 -0
- package/dist/custom-rules.d.ts +61 -0
- package/dist/custom-rules.d.ts.map +1 -0
- package/dist/custom-rules.js +70 -0
- package/dist/docs/index.d.ts +4 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +4 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +89 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts +48 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/comment-utilities.js +146 -0
- package/dist/docs/no-interface-member-docs/index.d.ts +2 -0
- package/dist/docs/no-interface-member-docs/index.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/index.js +2 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts +13 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/parameter-tags.js +101 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts +24 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/parameter-utilities.js +125 -0
- package/dist/docs/no-interface-member-docs/rule.d.ts +5 -0
- package/dist/docs/no-interface-member-docs/rule.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/rule.js +168 -0
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts +103 -0
- package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/test-helpers.js +157 -0
- package/dist/docs/no-interface-member-docs/types.d.ts +30 -0
- package/dist/docs/no-interface-member-docs/types.d.ts.map +1 -0
- package/dist/docs/no-interface-member-docs/types.js +2 -0
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts +29 -0
- package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
- package/dist/docs/require-example-language/empty-fence-fixes.js +169 -0
- package/dist/docs/require-example-language/example-utilities.d.ts +70 -0
- package/dist/docs/require-example-language/example-utilities.d.ts.map +1 -0
- package/dist/docs/require-example-language/example-utilities.js +76 -0
- package/dist/docs/require-example-language/examples.d.ts +36 -0
- package/dist/docs/require-example-language/examples.d.ts.map +1 -0
- package/dist/docs/require-example-language/examples.js +181 -0
- package/dist/docs/require-example-language/fixes.d.ts +49 -0
- package/dist/docs/require-example-language/fixes.d.ts.map +1 -0
- package/dist/docs/require-example-language/fixes.js +182 -0
- package/dist/docs/require-example-language/index.d.ts +3 -0
- package/dist/docs/require-example-language/index.d.ts.map +1 -0
- package/dist/docs/require-example-language/index.js +2 -0
- package/dist/docs/require-example-language/reporting.d.ts +60 -0
- package/dist/docs/require-example-language/reporting.d.ts.map +1 -0
- package/dist/docs/require-example-language/reporting.js +145 -0
- package/dist/docs/require-example-language/rule.d.ts +7 -0
- package/dist/docs/require-example-language/rule.d.ts.map +1 -0
- package/dist/docs/require-example-language/rule.js +34 -0
- package/dist/docs/require-example-language/types.d.ts +22 -0
- package/dist/docs/require-example-language/types.d.ts.map +1 -0
- package/dist/docs/require-example-language/types.js +2 -0
- package/dist/docs/single-line-jsdoc/index.d.ts +2 -0
- package/dist/docs/single-line-jsdoc/index.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/index.js +2 -0
- package/dist/docs/single-line-jsdoc/rule.d.ts +5 -0
- package/dist/docs/single-line-jsdoc/rule.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/rule.js +196 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts +16 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +25 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
- package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
- package/dist/docs/test-helpers.d.ts +50 -0
- package/dist/docs/test-helpers.d.ts.map +1 -0
- package/dist/docs/test-helpers.js +107 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/presets.d.ts +10 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +50 -0
- package/dist/rules/index.d.ts +5 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/testing/aaa/analyzer.d.ts +36 -0
- package/dist/testing/aaa/analyzer.d.ts.map +1 -0
- package/dist/testing/aaa/analyzer.js +490 -0
- package/dist/testing/aaa/index.d.ts +3 -0
- package/dist/testing/aaa/index.d.ts.map +1 -0
- package/dist/testing/aaa/index.js +2 -0
- package/dist/testing/aaa/types.d.ts +31 -0
- package/dist/testing/aaa/types.d.ts.map +1 -0
- package/dist/testing/aaa/types.js +2 -0
- package/dist/testing/assert-actual-expected-names/index.d.ts +2 -0
- package/dist/testing/assert-actual-expected-names/index.d.ts.map +1 -0
- package/dist/testing/assert-actual-expected-names/index.js +2 -0
- package/dist/testing/assert-actual-expected-names/rule.d.ts +4 -0
- package/dist/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
- package/dist/testing/assert-actual-expected-names/rule.js +54 -0
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
- package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-phase-purity/index.js +2 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts +4 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-phase-purity/rule.js +110 -0
- package/dist/testing/enforce-aaa-structure/index.d.ts +2 -0
- package/dist/testing/enforce-aaa-structure/index.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-structure/index.js +2 -0
- package/dist/testing/enforce-aaa-structure/rule.d.ts +4 -0
- package/dist/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
- package/dist/testing/enforce-aaa-structure/rule.js +48 -0
- package/dist/testing/index.d.ts +9 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +9 -0
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/fix.js +224 -0
- package/dist/testing/prefer-vi-mocked-import/index.d.ts +2 -0
- package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/index.js +2 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts +16 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-declarations.js +99 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts +66 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts +17 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-imports.js +156 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts +42 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts +13 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match-walk.js +62 -0
- package/dist/testing/prefer-vi-mocked-import/match.d.ts +15 -0
- package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/match.js +193 -0
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts +5 -0
- package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/rule.js +32 -0
- package/dist/testing/prefer-vi-mocked-import/types.d.ts +83 -0
- package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
- package/dist/testing/prefer-vi-mocked-import/types.js +2 -0
- package/dist/testing/require-aaa-sections/index.d.ts +2 -0
- package/dist/testing/require-aaa-sections/index.d.ts.map +1 -0
- package/dist/testing/require-aaa-sections/index.js +2 -0
- package/dist/testing/require-aaa-sections/rule.d.ts +4 -0
- package/dist/testing/require-aaa-sections/rule.d.ts.map +1 -0
- package/dist/testing/require-aaa-sections/rule.js +111 -0
- package/dist/testing/require-act-result-capture/index.d.ts +2 -0
- package/dist/testing/require-act-result-capture/index.d.ts.map +1 -0
- package/dist/testing/require-act-result-capture/index.js +2 -0
- package/dist/testing/require-act-result-capture/rule.d.ts +4 -0
- package/dist/testing/require-act-result-capture/rule.d.ts.map +1 -0
- package/dist/testing/require-act-result-capture/rule.js +34 -0
- package/dist/testing/require-test-companion/index.d.ts +3 -0
- package/dist/testing/require-test-companion/index.d.ts.map +1 -0
- package/dist/testing/require-test-companion/index.js +3 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts +16 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-listeners.js +145 -0
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts +54 -0
- package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-options.js +112 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts +51 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +183 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts +28 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
- package/dist/testing/require-test-companion/require-test-companion-utilities.js +26 -0
- package/dist/testing/require-test-companion/rule.d.ts +5 -0
- package/dist/testing/require-test-companion/rule.d.ts.map +1 -0
- package/dist/testing/require-test-companion/rule.js +57 -0
- package/dist/testing/require-test-companion/types.d.ts +11 -0
- package/dist/testing/require-test-companion/types.d.ts.map +1 -0
- package/dist/testing/require-test-companion/types.js +2 -0
- package/dist/testing/single-act-statement/index.d.ts +2 -0
- package/dist/testing/single-act-statement/index.d.ts.map +1 -0
- package/dist/testing/single-act-statement/index.js +2 -0
- package/dist/testing/single-act-statement/rule.d.ts +4 -0
- package/dist/testing/single-act-statement/rule.d.ts.map +1 -0
- package/dist/testing/single-act-statement/rule.js +33 -0
- package/package.json +106 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SourceCode } from "eslint";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { barrelFilesExportsOnlyRule } from "./exports-only-rule";
|
|
4
|
+
import { createProgram, createRepoDirectory } from "./test-helpers";
|
|
5
|
+
/**
|
|
6
|
+
* Builds a rule context for running the rule.
|
|
7
|
+
* @param parameters Context parameters and report sink.
|
|
8
|
+
* @returns The ESLint rule context.
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const context = createRuleContext({ filename, reports, sourceCode });
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
const createRuleContext = (parameters) => ({
|
|
15
|
+
cwd: process.cwd(),
|
|
16
|
+
filename: parameters.filename,
|
|
17
|
+
id: "barrel-files-exports-only",
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: "latest",
|
|
20
|
+
sourceType: "module",
|
|
21
|
+
},
|
|
22
|
+
options: parameters.options === void 0 ? [] : [parameters.options],
|
|
23
|
+
parserOptions: {},
|
|
24
|
+
parserPath: void 0,
|
|
25
|
+
physicalFilename: parameters.filename,
|
|
26
|
+
report: (report) => {
|
|
27
|
+
const { messageId } = report;
|
|
28
|
+
parameters.reports.push({ messageId });
|
|
29
|
+
},
|
|
30
|
+
settings: {},
|
|
31
|
+
sourceCode: parameters.sourceCode,
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Runs the rule against the provided AST body.
|
|
35
|
+
* @param filename Target filename.
|
|
36
|
+
* @param body AST program body.
|
|
37
|
+
* @param options Rule options when provided.
|
|
38
|
+
* @returns The captured rule reports.
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const reports = runRule("index.ts", createBody());
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
const runRule = (filename, body, options) => {
|
|
45
|
+
const reports = [];
|
|
46
|
+
const sourceCode = new SourceCode("", createProgram(body));
|
|
47
|
+
const context = createRuleContext({
|
|
48
|
+
filename,
|
|
49
|
+
reports,
|
|
50
|
+
sourceCode,
|
|
51
|
+
...(options === void 0 ? {} : { options }),
|
|
52
|
+
});
|
|
53
|
+
const listeners = barrelFilesExportsOnlyRule.create(context);
|
|
54
|
+
const programListener = listeners.Program;
|
|
55
|
+
programListener?.(context.sourceCode.ast);
|
|
56
|
+
return reports;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Creates temporary file runners for the rule.
|
|
60
|
+
* @param temporaryDirectories Directories created during the run.
|
|
61
|
+
* @returns Helpers for running the rule in temp folders.
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const runner = createTemporaryRunner([]);
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
const createTemporaryRunner = (temporaryDirectories) => {
|
|
68
|
+
const runForTemporaryFile = (options) => {
|
|
69
|
+
const directory = createRepoDirectory(options.root);
|
|
70
|
+
temporaryDirectories.push(directory);
|
|
71
|
+
const filePath = path.join(directory, options.filename);
|
|
72
|
+
return runRule(filePath, options.body, options.options);
|
|
73
|
+
};
|
|
74
|
+
const runDefaultIndex = (body) => runForTemporaryFile({ body, filename: "index.ts", root: "src" });
|
|
75
|
+
const runTemporaryIndex = (body, options) => runForTemporaryFile({
|
|
76
|
+
body,
|
|
77
|
+
filename: "index.ts",
|
|
78
|
+
root: "tmp",
|
|
79
|
+
...(options === void 0 ? {} : { options }),
|
|
80
|
+
});
|
|
81
|
+
const runTemporaryFeature = (body, options) => runForTemporaryFile({
|
|
82
|
+
body,
|
|
83
|
+
filename: "feature.ts",
|
|
84
|
+
root: "tmp",
|
|
85
|
+
...(options === void 0 ? {} : { options }),
|
|
86
|
+
});
|
|
87
|
+
return { runDefaultIndex, runTemporaryFeature, runTemporaryIndex };
|
|
88
|
+
};
|
|
89
|
+
export { createTemporaryRunner, runRule };
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy1vbmx5LXJ1bGUtdGVzdC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL2V4cG9ydHMtb25seS1ydWxlLXRlc3QtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBSTdCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQThEcEU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLFVBQWlDLEVBQ2YsRUFBRSxDQUNwQixDQUFDO0lBQ0MsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDbEIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO0lBQzdCLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsZUFBZSxFQUFFO1FBQ2YsV0FBVyxFQUFFLFFBQVE7UUFDckIsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFDRCxPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDbEUsYUFBYSxFQUFFLEVBQUU7SUFDakIsVUFBVSxFQUFFLEtBQUssQ0FBQztJQUNsQixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsUUFBUTtJQUNyQyxNQUFNLEVBQUUsQ0FBQyxNQUE2QixFQUFRLEVBQUU7UUFDOUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQXVDLENBQUM7UUFDOUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxT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cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQgeyBTb3VyY2VDb2RlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgdHlwZSB7IEJhcnJlbEZpbGVzRXhwb3J0c09ubHlPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgYmFycmVsRmlsZXNFeHBvcnRzT25seVJ1bGUgfSBmcm9tIFwiLi9leHBvcnRzLW9ubHktcnVsZVwiO1xuaW1wb3J0IHsgY3JlYXRlUHJvZ3JhbSwgY3JlYXRlUmVwb0RpcmVjdG9yeSB9IGZyb20gXCIuL3Rlc3QtaGVscGVyc1wiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgUmVwb3J0RGVzY3JpcHRvcldpdGhNZXNzYWdlSWQge1xuICAvKiogTWVzc2FnZUlkIGZpZWxkIHZhbHVlLiAqL1xuICBtZXNzYWdlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSdWxlQ29udGV4dFBhcmFtZXRlcnMge1xuICAvKiogRmlsZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGZpbGVuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbnMgaGVscGVyIHZhbHVlLiAqL1xuICBvcHRpb25zPzogQmFycmVsRmlsZXNFeHBvcnRzT25seU9wdGlvbnM7XG5cbiAgLyoqIFJlcG9ydHMgZmllbGQgdmFsdWUuICovXG4gIHJlcG9ydHM6IFJ1bGVSZXBvcnRbXTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogU291cmNlQ29kZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJ1bGVSZXBvcnQge1xuICAvKiogTWVzc2FnZUlkIGhlbHBlciB2YWx1ZS4gKi9cbiAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBUZW1wb3JhcnlGaWxlT3B0aW9ucyB7XG4gIC8qKiBCb2R5IGZpZWxkIHZhbHVlLiAqL1xuICBib2R5OiBFU1RyZWUuUHJvZ3JhbVtcImJvZHlcIl07XG5cbiAgLyoqIEZpbGVuYW1lIGZpZWxkIHZhbHVlLiAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25zIGhlbHBlciB2YWx1ZS4gKi9cbiAgb3B0aW9ucz86IEJhcnJlbEZpbGVzRXhwb3J0c09ubHlPcHRpb25zO1xuXG4gIC8qKiBSb290IGZpZWxkIHZhbHVlLiAqL1xuICByb290OiBcInNyY1wiIHwgXCJ0bXBcIjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFRlbXBvcmFyeVJ1bm5lciB7XG4gIC8qKiBSdW5EZWZhdWx0SW5kZXggZmllbGQgdmFsdWUuICovXG4gIHJ1bkRlZmF1bHRJbmRleDogKGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSkgPT4gUnVsZVJlcG9ydFtdO1xuXG4gIC8qKiBSdW5UZW1wb3JhcnlGZWF0dXJlIGZpZWxkIHZhbHVlLiAqL1xuICBydW5UZW1wb3JhcnlGZWF0dXJlOiAoXG4gICAgYm9keTogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdLFxuICAgIG9wdGlvbnM/OiBCYXJyZWxGaWxlc0V4cG9ydHNPbmx5T3B0aW9ucyxcbiAgKSA9PiBSdWxlUmVwb3J0W107XG5cbiAgLyoqIFJ1blRlbXBvcmFyeUluZGV4IGZpZWxkIHZhbHVlLiAqL1xuICBydW5UZW1wb3JhcnlJbmRleDogKFxuICAgIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgICBvcHRpb25zPzogQmFycmVsRmlsZXNFeHBvcnRzT25seU9wdGlvbnMsXG4gICkgPT4gUnVsZVJlcG9ydFtdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHJ1bGUgY29udGV4dCBmb3IgcnVubmluZyB0aGUgcnVsZS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIENvbnRleHQgcGFyYW1ldGVycyBhbmQgcmVwb3J0IHNpbmsuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZXh0ID0gY3JlYXRlUnVsZUNvbnRleHQoeyBmaWxlbmFtZSwgcmVwb3J0cywgc291cmNlQ29kZSB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVSdWxlQ29udGV4dCA9IChcbiAgcGFyYW1ldGVyczogUnVsZUNvbnRleHRQYXJhbWV0ZXJzLFxuKTogUnVsZS5SdWxlQ29udGV4dCA9PlxuICAoe1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBmaWxlbmFtZTogcGFyYW1ldGVycy5maWxlbmFtZSxcbiAgICBpZDogXCJiYXJyZWwtZmlsZXMtZXhwb3J0cy1vbmx5XCIsXG4gICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICBlY21hVmVyc2lvbjogXCJsYXRlc3RcIixcbiAgICAgIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gICAgfSxcbiAgICBvcHRpb25zOiBwYXJhbWV0ZXJzLm9wdGlvbnMgPT09IHZvaWQgMCA/IFtdIDogW3BhcmFtZXRlcnMub3B0aW9uc10sXG4gICAgcGFyc2VyT3B0aW9uczoge30sXG4gICAgcGFyc2VyUGF0aDogdm9pZCAwLFxuICAgIHBoeXNpY2FsRmlsZW5hbWU6IHBhcmFtZXRlcnMuZmlsZW5hbWUsXG4gICAgcmVwb3J0OiAocmVwb3J0OiBSdWxlLlJlcG9ydERlc2NyaXB0b3IpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZUlkIH0gPSByZXBvcnQgYXMgUmVwb3J0RGVzY3JpcHRvcldpdGhNZXNzYWdlSWQ7XG4gICAgICBwYXJhbWV0ZXJzLnJlcG9ydHMucHVzaCh7IG1lc3NhZ2VJZCB9KTtcbiAgICB9LFxuICAgIHNldHRpbmdzOiB7fSxcbiAgICBzb3VyY2VDb2RlOiBwYXJhbWV0ZXJzLnNvdXJjZUNvZGUsXG4gIH0pIGFzIHVua25vd24gYXMgUnVsZS5SdWxlQ29udGV4dDtcblxuLyoqXG4gKiBSdW5zIHRoZSBydWxlIGFnYWluc3QgdGhlIHByb3ZpZGVkIEFTVCBib2R5LlxuICogQHBhcmFtIGZpbGVuYW1lIFRhcmdldCBmaWxlbmFtZS5cbiAqIEBwYXJhbSBib2R5IEFTVCBwcm9ncmFtIGJvZHkuXG4gKiBAcGFyYW0gb3B0aW9ucyBSdWxlIG9wdGlvbnMgd2hlbiBwcm92aWRlZC5cbiAqIEByZXR1cm5zIFRoZSBjYXB0dXJlZCBydWxlIHJlcG9ydHMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVwb3J0cyA9IHJ1blJ1bGUoXCJpbmRleC50c1wiLCBjcmVhdGVCb2R5KCkpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJ1blJ1bGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgb3B0aW9ucz86IEJhcnJlbEZpbGVzRXhwb3J0c09ubHlPcHRpb25zLFxuKTogUnVsZVJlcG9ydFtdID0+IHtcbiAgY29uc3QgcmVwb3J0czogUnVsZVJlcG9ydFtdID0gW107XG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBuZXcgU291cmNlQ29kZShcIlwiLCBjcmVhdGVQcm9ncmFtKGJvZHkpKTtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVJ1bGVDb250ZXh0KHtcbiAgICBmaWxlbmFtZSxcbiAgICByZXBvcnRzLFxuICAgIHNvdXJjZUNvZGUsXG4gICAgLi4uKG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogeyBvcHRpb25zIH0pLFxuICB9KTtcbiAgY29uc3QgbGlzdGVuZXJzID0gYmFycmVsRmlsZXNFeHBvcnRzT25seVJ1bGUuY3JlYXRlKGNvbnRleHQpO1xuICBjb25zdCBwcm9ncmFtTGlzdGVuZXIgPSBsaXN0ZW5lcnMuUHJvZ3JhbTtcblxuICBwcm9ncmFtTGlzdGVuZXI/Lihjb250ZXh0LnNvdXJjZUNvZGUuYXN0KTtcblxuICByZXR1cm4gcmVwb3J0cztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0ZW1wb3JhcnkgZmlsZSBydW5uZXJzIGZvciB0aGUgcnVsZS5cbiAqIEBwYXJhbSB0ZW1wb3JhcnlEaXJlY3RvcmllcyBEaXJlY3RvcmllcyBjcmVhdGVkIGR1cmluZyB0aGUgcnVuLlxuICogQHJldHVybnMgSGVscGVycyBmb3IgcnVubmluZyB0aGUgcnVsZSBpbiB0ZW1wIGZvbGRlcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVubmVyID0gY3JlYXRlVGVtcG9yYXJ5UnVubmVyKFtdKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVUZW1wb3JhcnlSdW5uZXIgPSAoXG4gIHRlbXBvcmFyeURpcmVjdG9yaWVzOiBzdHJpbmdbXSxcbik6IFRlbXBvcmFyeVJ1bm5lciA9PiB7XG4gIGNvbnN0IHJ1bkZvclRlbXBvcmFyeUZpbGUgPSAob3B0aW9uczogVGVtcG9yYXJ5RmlsZU9wdGlvbnMpOiBSdWxlUmVwb3J0W10gPT4ge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IGNyZWF0ZVJlcG9EaXJlY3Rvcnkob3B0aW9ucy5yb290KTtcbiAgICB0ZW1wb3JhcnlEaXJlY3Rvcmllcy5wdXNoKGRpcmVjdG9yeSk7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBvcHRpb25zLmZpbGVuYW1lKTtcblxuICAgIHJldHVybiBydW5SdWxlKGZpbGVQYXRoLCBvcHRpb25zLmJvZHksIG9wdGlvbnMub3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgcnVuRGVmYXVsdEluZGV4ID0gKGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSk6IFJ1bGVSZXBvcnRbXSA9PlxuICAgIHJ1bkZvclRlbXBvcmFyeUZpbGUoeyBib2R5LCBmaWxlbmFtZTogXCJpbmRleC50c1wiLCByb290OiBcInNyY1wiIH0pO1xuXG4gIGNvbnN0IHJ1blRlbXBvcmFyeUluZGV4ID0gKFxuICAgIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgICBvcHRpb25zPzogQmFycmVsRmlsZXNFeHBvcnRzT25seU9wdGlvbnMsXG4gICk6IFJ1bGVSZXBvcnRbXSA9PlxuICAgIHJ1bkZvclRlbXBvcmFyeUZpbGUoe1xuICAgICAgYm9keSxcbiAgICAgIGZpbGVuYW1lOiBcImluZGV4LnRzXCIsXG4gICAgICByb290OiBcInRtcFwiLFxuICAgICAgLi4uKG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogeyBvcHRpb25zIH0pLFxuICAgIH0pO1xuXG4gIGNvbnN0IHJ1blRlbXBvcmFyeUZlYXR1cmUgPSAoXG4gICAgYm9keTogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdLFxuICAgIG9wdGlvbnM/OiBCYXJyZWxGaWxlc0V4cG9ydHNPbmx5T3B0aW9ucyxcbiAgKTogUnVsZVJlcG9ydFtdID0+XG4gICAgcnVuRm9yVGVtcG9yYXJ5RmlsZSh7XG4gICAgICBib2R5LFxuICAgICAgZmlsZW5hbWU6IFwiZmVhdHVyZS50c1wiLFxuICAgICAgcm9vdDogXCJ0bXBcIixcbiAgICAgIC4uLihvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IHsgb3B0aW9ucyB9KSxcbiAgICB9KTtcblxuICByZXR1cm4geyBydW5EZWZhdWx0SW5kZXgsIHJ1blRlbXBvcmFyeUZlYXR1cmUsIHJ1blRlbXBvcmFyeUluZGV4IH07XG59O1xuXG5leHBvcnQgeyBjcmVhdGVUZW1wb3JhcnlSdW5uZXIsIHJ1blJ1bGUgfTtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule enforcing re-export-only barrel files.
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* const rule = barrelFilesExportsOnlyRule;
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
declare const barrelFilesExportsOnlyRule: Rule.RuleModule;
|
|
10
|
+
export { barrelFilesExportsOnlyRule };
|
|
11
|
+
//# sourceMappingURL=exports-only-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-only-rule.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/exports-only-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,IAAI,EAAE,MAAM,QAAQ,CAAC;AAsOxC;;;;;;GAMG;AACH,QAAA,MAAM,0BAA0B,EAAE,IAAI,CAAC,UA+CtC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { minimatch } from "minimatch";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
4
|
+
/** Default value used by this module. */
|
|
5
|
+
const DEFAULT_BARREL_NAMES = ["index.ts", "index.tsx", "index.js", "index.jsx"];
|
|
6
|
+
/** Default folder globs for barrel exports-only checks. */
|
|
7
|
+
const DEFAULT_FOLDER_GLOBS = ["src/*/**"];
|
|
8
|
+
/**
|
|
9
|
+
* Normalizes a string list option into a clean list.
|
|
10
|
+
* @param value Raw option value.
|
|
11
|
+
* @param defaults Default list when the option is empty.
|
|
12
|
+
* @returns Normalized string list.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const names = normalizeList("index.ts", ["index.ts"]);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const normalizeList = (value, defaults) => {
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
return value
|
|
21
|
+
.filter((entry) => typeof entry === "string")
|
|
22
|
+
.map((entry) => entry.trim())
|
|
23
|
+
.filter((entry) => entry.length > 0);
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === "string") {
|
|
26
|
+
const trimmed = value.trim();
|
|
27
|
+
return trimmed.length === 0 ? [] : [trimmed];
|
|
28
|
+
}
|
|
29
|
+
return [...defaults];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Builds the rule options state from raw options.
|
|
33
|
+
* @param options Raw rule options.
|
|
34
|
+
* @returns Normalized rule options.
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const state = getOptions([{}]);
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
const getOptions = (options) => {
|
|
41
|
+
const rawOptions = options[0];
|
|
42
|
+
const folders = normalizeList(rawOptions?.folders, DEFAULT_FOLDER_GLOBS);
|
|
43
|
+
const names = normalizeList(rawOptions?.names, DEFAULT_BARREL_NAMES);
|
|
44
|
+
return { folders, names, namesSet: new Set(names) };
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Checks whether the filename is valid for linting.
|
|
48
|
+
* @param filename Absolute filename.
|
|
49
|
+
* @returns True when the filename is lintable.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const ok = isLintableFilename("/repo/src/index.ts");
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
const isLintableFilename = (filename) => filename.length > 0 && path.isAbsolute(filename);
|
|
56
|
+
/**
|
|
57
|
+
* Normalizes a filename to a repo-relative path.
|
|
58
|
+
* @param filename Absolute filename.
|
|
59
|
+
* @returns Relative path using forward slashes.
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const relative = normalizeRelativePath("/repo/src/index.ts");
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
const normalizeRelativePath = (filename) => path.relative(process.cwd(), filename).split(path.sep).join("/");
|
|
66
|
+
/**
|
|
67
|
+
* Checks whether a file path matches any configured folder globs.
|
|
68
|
+
* @param filename Absolute filename.
|
|
69
|
+
* @param folders Folder glob patterns.
|
|
70
|
+
* @returns True when the filename is within configured folders.
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const ok = isPathInFolders("/repo/src/index.ts", ["src/**"]);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
const isPathInFolders = (filename, folders) => {
|
|
77
|
+
const relativePath = normalizeRelativePath(filename);
|
|
78
|
+
if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return folders.some((folder) => minimatch(relativePath, folder, { dot: true }));
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Determines whether a file should be linted by this rule.
|
|
85
|
+
* @param filename Absolute filename.
|
|
86
|
+
* @param options Normalized rule options.
|
|
87
|
+
* @returns True when the file should be checked.
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const ok = shouldLintFile("/repo/src/index.ts", state);
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
const shouldLintFile = (filename, options) => {
|
|
94
|
+
if (!isLintableFilename(filename)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (options.folders.length === 0 || options.names.length === 0) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return isPathInFolders(filename, options.folders);
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Determines whether a file is a barrel file under the rule options.
|
|
104
|
+
* @param filename Absolute filename.
|
|
105
|
+
* @param options Normalized rule options.
|
|
106
|
+
* @returns True when the file is a barrel file.
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const ok = isBarrelFile("/repo/src/index.ts", state);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
const isBarrelFile = (filename, options) => {
|
|
113
|
+
if (!shouldLintFile(filename, options)) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return options.namesSet.has(path.basename(filename));
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Checks whether a statement is allowed in a barrel file.
|
|
120
|
+
* @param statement Program statement node.
|
|
121
|
+
* @returns True when the statement is permitted.
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* const ok = isAllowedBarrelStatement(statement);
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
const isAllowedBarrelStatement = (statement) => {
|
|
128
|
+
if (statement.type === "ExportAllDeclaration") {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
if (statement.type !== "ExportNamedDeclaration") {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const declaration = statement.declaration ?? void 0;
|
|
135
|
+
if (declaration !== void 0) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
const source = statement.source ?? void 0;
|
|
139
|
+
return source !== void 0;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Builds a rule listener for the supplied file.
|
|
143
|
+
* @param context Rule execution context.
|
|
144
|
+
* @param filename Absolute filename to lint.
|
|
145
|
+
* @param options Normalized rule options.
|
|
146
|
+
* @returns The rule listener for the file.
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const listener = buildListenerForFile(context, filename, state);
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
const buildListenerForFile = (context, filename, options) => {
|
|
153
|
+
if (!isBarrelFile(filename, options)) {
|
|
154
|
+
return {};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
Program(node) {
|
|
158
|
+
for (const statement of node.body) {
|
|
159
|
+
if (!isAllowedBarrelStatement(statement)) {
|
|
160
|
+
context.report({
|
|
161
|
+
messageId: "invalidBarrelContent",
|
|
162
|
+
node: statement,
|
|
163
|
+
});
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* ESLint rule enforcing re-export-only barrel files.
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const rule = barrelFilesExportsOnlyRule;
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
const barrelFilesExportsOnlyRule = {
|
|
178
|
+
create(context) {
|
|
179
|
+
return buildListenerForFile(context, context.filename, getOptions(context.options));
|
|
180
|
+
},
|
|
181
|
+
meta: {
|
|
182
|
+
docs: createRuleDocumentation("barrel-files-exports-only", "Require barrel files to only contain re-export statements."),
|
|
183
|
+
messages: {
|
|
184
|
+
invalidBarrelContent: "Barrel files must only re-export from other modules and contain no imports or declarations.",
|
|
185
|
+
},
|
|
186
|
+
schema: [
|
|
187
|
+
{
|
|
188
|
+
additionalProperties: false,
|
|
189
|
+
properties: {
|
|
190
|
+
folders: {
|
|
191
|
+
oneOf: [
|
|
192
|
+
{ type: "string" },
|
|
193
|
+
{
|
|
194
|
+
items: { type: "string" },
|
|
195
|
+
minItems: 1,
|
|
196
|
+
type: "array",
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
names: {
|
|
201
|
+
oneOf: [
|
|
202
|
+
{ type: "string" },
|
|
203
|
+
{
|
|
204
|
+
items: { type: "string" },
|
|
205
|
+
minItems: 1,
|
|
206
|
+
type: "array",
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
type: "object",
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
type: "problem",
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
export { barrelFilesExportsOnlyRule };
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy1vbmx5LXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL2V4cG9ydHMtb25seS1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBSTdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLHlDQUF5QztBQUN6QyxNQUFNLG9CQUFvQixHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFaEYsMkRBQTJEO0FBQzNELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQWMxQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWMsRUFBRSxRQUFrQixFQUFZLEVBQUU7SUFDckUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO2FBQzdELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLENB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QTBCLEdBQW9CO0lBQ2xELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPLG9CQUFvQixDQUN6QixPQUFPLEVBQ1AsT0FBTyxDQUFDLFFBQVEsRUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsdUJBQXVCLENBQzNCLDJCQUEyQixFQUMzQiw0REFBNEQsQ0FDN0Q7UUFDRCxRQUFRLEVBQUU7WUFDUixvQkFBb0IsRUFDbEIsNkZBQTZGO1NBQ2hHO1FBQ0QsTUFBTSxFQUFFO1lBQ047Z0JBQ0Usb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRTt3QkFDUCxLQUFLLEVBQUU7NEJBQ0wsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUNsQjtnQ0FDRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dDQUN6QixRQUFRLEVBQUUsQ0FBQztnQ0FDWCxJQUFJLEVBQUUsT0FBTzs2QkFDZDt5QkFDRjtxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsS0FBSyxFQUFFOzRCQUNMLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDbEI7Z0NBQ0UsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDekIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsSUFBSSxFQUFFLE9BQU87NkJBQ2Q7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFTVCwgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgbWluaW1hdGNoIH0gZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgdHlwZSB7IEJhcnJlbEZpbGVzRXhwb3J0c09ubHlPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY3JlYXRlUnVsZURvY3VtZW50YXRpb24gfSBmcm9tIFwiLi4vLi4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvblwiO1xuXG4vKiogRGVmYXVsdCB2YWx1ZSB1c2VkIGJ5IHRoaXMgbW9kdWxlLiAqL1xuY29uc3QgREVGQVVMVF9CQVJSRUxfTkFNRVMgPSBbXCJpbmRleC50c1wiLCBcImluZGV4LnRzeFwiLCBcImluZGV4LmpzXCIsIFwiaW5kZXguanN4XCJdO1xuXG4vKiogRGVmYXVsdCBmb2xkZXIgZ2xvYnMgZm9yIGJhcnJlbCBleHBvcnRzLW9ubHkgY2hlY2tzLiAqL1xuY29uc3QgREVGQVVMVF9GT0xERVJfR0xPQlMgPSBbXCJzcmMvKi8qKlwiXTtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEJhcnJlbEZpbGVzRXhwb3J0c09ubHlTdGF0ZSB7XG4gIC8qKiBGb2xkZXJzIGZpZWxkIHZhbHVlLiAqL1xuICBmb2xkZXJzOiBzdHJpbmdbXTtcblxuICAvKiogTmFtZXMgZmllbGQgdmFsdWUuICovXG4gIG5hbWVzOiBzdHJpbmdbXTtcblxuICAvKiogTmFtZXNTZXQgZmllbGQgdmFsdWUuICovXG4gIG5hbWVzU2V0OiBTZXQ8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGxpc3Qgb3B0aW9uIGludG8gYSBjbGVhbiBsaXN0LlxuICogQHBhcmFtIHZhbHVlIFJhdyBvcHRpb24gdmFsdWUuXG4gKiBAcGFyYW0gZGVmYXVsdHMgRGVmYXVsdCBsaXN0IHdoZW4gdGhlIG9wdGlvbiBpcyBlbXB0eS5cbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgc3RyaW5nIGxpc3QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmFtZXMgPSBub3JtYWxpemVMaXN0KFwiaW5kZXgudHNcIiwgW1wiaW5kZXgudHNcIl0pO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vcm1hbGl6ZUxpc3QgPSAodmFsdWU6IHVua25vd24sIGRlZmF1bHRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gW10gOiBbdHJpbW1lZF07XG4gIH1cblxuICByZXR1cm4gWy4uLmRlZmF1bHRzXTtcbn07XG5cbi8qKlxuICogQnVpbGRzIHRoZSBydWxlIG9wdGlvbnMgc3RhdGUgZnJvbSByYXcgb3B0aW9ucy5cbiAqIEBwYXJhbSBvcHRpb25zIFJhdyBydWxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIHJ1bGUgb3B0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdGF0ZSA9IGdldE9wdGlvbnMoW3t9XSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0T3B0aW9ucyA9IChcbiAgb3B0aW9uczogcmVhZG9ubHkgdW5rbm93bltdLFxuKTogQmFycmVsRmlsZXNFeHBvcnRzT25seVN0YXRlID0+IHtcbiAgY29uc3QgcmF3T3B0aW9ucyA9IG9wdGlvbnNbMF0gYXMgQmFycmVsRmlsZXNFeHBvcnRzT25seU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGZvbGRlcnMgPSBub3JtYWxpemVMaXN0KHJhd09wdGlvbnM/LmZvbGRlcnMsIERFRkFVTFRfRk9MREVSX0dMT0JTKTtcbiAgY29uc3QgbmFtZXMgPSBub3JtYWxpemVMaXN0KHJhd09wdGlvbnM/Lm5hbWVzLCBERUZBVUxUX0JBUlJFTF9OQU1FUyk7XG5cbiAgcmV0dXJuIHsgZm9sZGVycywgbmFtZXMsIG5hbWVzU2V0OiBuZXcgU2V0KG5hbWVzKSB9O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgZmlsZW5hbWUgaXMgdmFsaWQgZm9yIGxpbnRpbmcuXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGVuYW1lIGlzIGxpbnRhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNMaW50YWJsZUZpbGVuYW1lKFwiL3JlcG8vc3JjL2luZGV4LnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTGludGFibGVGaWxlbmFtZSA9IChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBmaWxlbmFtZS5sZW5ndGggPiAwICYmIHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSk7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGZpbGVuYW1lIHRvIGEgcmVwby1yZWxhdGl2ZSBwYXRoLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHJldHVybnMgUmVsYXRpdmUgcGF0aCB1c2luZyBmb3J3YXJkIHNsYXNoZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVsYXRpdmUgPSBub3JtYWxpemVSZWxhdGl2ZVBhdGgoXCIvcmVwby9zcmMvaW5kZXgudHNcIik7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplUmVsYXRpdmVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgcGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlbmFtZSkuc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZmlsZSBwYXRoIG1hdGNoZXMgYW55IGNvbmZpZ3VyZWQgZm9sZGVyIGdsb2JzLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIGZvbGRlcnMgRm9sZGVyIGdsb2IgcGF0dGVybnMuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGVuYW1lIGlzIHdpdGhpbiBjb25maWd1cmVkIGZvbGRlcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc1BhdGhJbkZvbGRlcnMoXCIvcmVwby9zcmMvaW5kZXgudHNcIiwgW1wic3JjLyoqXCJdKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc1BhdGhJbkZvbGRlcnMgPSAoZmlsZW5hbWU6IHN0cmluZywgZm9sZGVyczogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gbm9ybWFsaXplUmVsYXRpdmVQYXRoKGZpbGVuYW1lKTtcblxuICBpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIuLlwiKSB8fCBwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmVQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBmb2xkZXJzLnNvbWUoKGZvbGRlcikgPT5cbiAgICBtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBmb2xkZXIsIHsgZG90OiB0cnVlIH0pLFxuICApO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIHNob3VsZCBiZSBsaW50ZWQgYnkgdGhpcyBydWxlLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIG9wdGlvbnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGUgc2hvdWxkIGJlIGNoZWNrZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBzaG91bGRMaW50RmlsZShcIi9yZXBvL3NyYy9pbmRleC50c1wiLCBzdGF0ZSk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc2hvdWxkTGludEZpbGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJldHVyblR5cGU8dHlwZW9mIGdldE9wdGlvbnM+LFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmICghaXNMaW50YWJsZUZpbGVuYW1lKGZpbGVuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmZvbGRlcnMubGVuZ3RoID09PSAwIHx8IG9wdGlvbnMubmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzUGF0aEluRm9sZGVycyhmaWxlbmFtZSwgb3B0aW9ucy5mb2xkZXJzKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZmlsZSBpcyBhIGJhcnJlbCBmaWxlIHVuZGVyIHRoZSBydWxlIG9wdGlvbnMuXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUuXG4gKiBAcGFyYW0gb3B0aW9ucyBOb3JtYWxpemVkIHJ1bGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgZmlsZSBpcyBhIGJhcnJlbCBmaWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNCYXJyZWxGaWxlKFwiL3JlcG8vc3JjL2luZGV4LnRzXCIsIHN0YXRlKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0JhcnJlbEZpbGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJldHVyblR5cGU8dHlwZW9mIGdldE9wdGlvbnM+LFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmICghc2hvdWxkTGludEZpbGUoZmlsZW5hbWUsIG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnMubmFtZXNTZXQuaGFzKHBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiBhIGJhcnJlbCBmaWxlLlxuICogQHBhcmFtIHN0YXRlbWVudCBQcm9ncmFtIHN0YXRlbWVudCBub2RlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgcGVybWl0dGVkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNBbGxvd2VkQmFycmVsU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNBbGxvd2VkQmFycmVsU3RhdGVtZW50ID0gKFxuICBzdGF0ZW1lbnQ6IEFTVC5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoc3RhdGVtZW50LnR5cGUgIT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVjbGFyYXRpb24gPSBzdGF0ZW1lbnQuZGVjbGFyYXRpb24gPz8gdm9pZCAwO1xuXG4gIGlmIChkZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gc3RhdGVtZW50LnNvdXJjZSA/PyB2b2lkIDA7XG5cbiAgcmV0dXJuIHNvdXJjZSAhPT0gdm9pZCAwO1xufTtcblxuLyoqXG4gKiBCdWlsZHMgYSBydWxlIGxpc3RlbmVyIGZvciB0aGUgc3VwcGxpZWQgZmlsZS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUgdG8gbGludC5cbiAqIEBwYXJhbSBvcHRpb25zIE5vcm1hbGl6ZWQgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHJ1bGUgbGlzdGVuZXIgZm9yIHRoZSBmaWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3RlbmVyID0gYnVpbGRMaXN0ZW5lckZvckZpbGUoY29udGV4dCwgZmlsZW5hbWUsIHN0YXRlKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZExpc3RlbmVyRm9yRmlsZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0T3B0aW9ucz4sXG4pOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiB7XG4gIGlmICghaXNCYXJyZWxGaWxlKGZpbGVuYW1lLCBvcHRpb25zKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUHJvZ3JhbShub2RlOiBBU1QuUHJvZ3JhbSk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygbm9kZS5ib2R5KSB7XG4gICAgICAgIGlmICghaXNBbGxvd2VkQmFycmVsU3RhdGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IFwiaW52YWxpZEJhcnJlbENvbnRlbnRcIixcbiAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIEVTTGludCBydWxlIGVuZm9yY2luZyByZS1leHBvcnQtb25seSBiYXJyZWwgZmlsZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVsZSA9IGJhcnJlbEZpbGVzRXhwb3J0c09ubHlSdWxlO1xuICogYGBgXG4gKi9cbmNvbnN0IGJhcnJlbEZpbGVzRXhwb3J0c09ubHlSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiBidWlsZExpc3RlbmVyRm9yRmlsZShcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250ZXh0LmZpbGVuYW1lLFxuICAgICAgZ2V0T3B0aW9ucyhjb250ZXh0Lm9wdGlvbnMpLFxuICAgICk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwiYmFycmVsLWZpbGVzLWV4cG9ydHMtb25seVwiLFxuICAgICAgXCJSZXF1aXJlIGJhcnJlbCBmaWxlcyB0byBvbmx5IGNvbnRhaW4gcmUtZXhwb3J0IHN0YXRlbWVudHMuXCIsXG4gICAgKSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgaW52YWxpZEJhcnJlbENvbnRlbnQ6XG4gICAgICAgIFwiQmFycmVsIGZpbGVzIG11c3Qgb25seSByZS1leHBvcnQgZnJvbSBvdGhlciBtb2R1bGVzIGFuZCBjb250YWluIG5vIGltcG9ydHMgb3IgZGVjbGFyYXRpb25zLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXG4gICAgICB7XG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGZvbGRlcnM6IHtcbiAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgIHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lczoge1xuICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgYmFycmVsRmlsZXNFeHBvcnRzT25seVJ1bGUgfTtcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { barrelFilesExportsOnlyRule } from "./exports-only-rule";
|
|
2
|
+
export { noReexportsOutsideBarrelsRule } from "./no-reexports-outside-barrels-rule";
|
|
3
|
+
export { consistentBarrelFilesRule } from "./rule";
|
|
4
|
+
export type { BarrelFilesExportsOnlyOptions, ConsistentBarrelFilesOptions, NoReexportsOutsideBarrelsOptions, } from "./types";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AACnD,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { barrelFilesExportsOnlyRule } from "./exports-only-rule";
|
|
2
|
+
export { noReexportsOutsideBarrelsRule } from "./no-reexports-outside-barrels-rule";
|
|
3
|
+
export { consistentBarrelFilesRule } from "./rule";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGJhcnJlbEZpbGVzRXhwb3J0c09ubHlSdWxlIH0gZnJvbSBcIi4vZXhwb3J0cy1vbmx5LXJ1bGVcIjtcbmV4cG9ydCB7IG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlIH0gZnJvbSBcIi4vbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlXCI7XG5leHBvcnQgeyBjb25zaXN0ZW50QmFycmVsRmlsZXNSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuZXhwb3J0IHR5cGUge1xuICBCYXJyZWxGaWxlc0V4cG9ydHNPbmx5T3B0aW9ucyxcbiAgQ29uc2lzdGVudEJhcnJlbEZpbGVzT3B0aW9ucyxcbiAgTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnMsXG59IGZyb20gXCIuL3R5cGVzXCI7XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule preventing re-exports outside barrel files.
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* const rule = noReexportsOutsideBarrelsRule;
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
declare const noReexportsOutsideBarrelsRule: Rule.RuleModule;
|
|
10
|
+
export { noReexportsOutsideBarrelsRule };
|
|
11
|
+
//# sourceMappingURL=no-reexports-outside-barrels-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-reexports-outside-barrels-rule.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,IAAI,EAAE,MAAM,QAAQ,CAAC;AAoExC;;;;;;GAMG;AACH,QAAA,MAAM,6BAA6B,EAAE,IAAI,CAAC,UAiDzC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
+
import { collectImportedNames, getOptions, hasImportedExport, isBarrelFile, shouldLintFile, } from "./no-reexports-outside-barrels-utilities";
|
|
3
|
+
/**
|
|
4
|
+
* Builds a rule listener for the supplied file.
|
|
5
|
+
* @param context Rule execution context.
|
|
6
|
+
* @param filename Absolute filename to lint.
|
|
7
|
+
* @param options Normalized rule options.
|
|
8
|
+
* @returns The rule listener for the file.
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const listener = buildListenerForFile(context, filename, state);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
const buildListenerForFile = (context, filename, options) => {
|
|
15
|
+
if (!shouldLintFile(filename, options) || isBarrelFile(filename, options)) {
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
Program(node) {
|
|
20
|
+
const importedNames = collectImportedNames(node.body);
|
|
21
|
+
for (const statement of node.body) {
|
|
22
|
+
const isExportFrom = statement.type === "ExportAllDeclaration" ||
|
|
23
|
+
(statement.type === "ExportNamedDeclaration" &&
|
|
24
|
+
statement.source !== null &&
|
|
25
|
+
statement.source !== void 0);
|
|
26
|
+
const isImportedDefaultExport = statement.type === "ExportDefaultDeclaration" &&
|
|
27
|
+
statement.declaration.type === "Identifier" &&
|
|
28
|
+
importedNames.has(statement.declaration.name);
|
|
29
|
+
if (isExportFrom) {
|
|
30
|
+
context.report({
|
|
31
|
+
messageId: "reexportNotAllowed",
|
|
32
|
+
node: statement,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else if (hasImportedExport(statement, importedNames)) {
|
|
36
|
+
context.report({
|
|
37
|
+
messageId: "reexportedImport",
|
|
38
|
+
node: statement,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else if (isImportedDefaultExport) {
|
|
42
|
+
context.report({
|
|
43
|
+
messageId: "reexportedImport",
|
|
44
|
+
node: statement,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* ESLint rule preventing re-exports outside barrel files.
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const rule = noReexportsOutsideBarrelsRule;
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
const noReexportsOutsideBarrelsRule = {
|
|
59
|
+
create(context) {
|
|
60
|
+
return buildListenerForFile(context, context.filename, getOptions(context.options));
|
|
61
|
+
},
|
|
62
|
+
meta: {
|
|
63
|
+
docs: createRuleDocumentation("no-reexports-outside-barrels", "Require non-barrel files to export only locally defined values."),
|
|
64
|
+
messages: {
|
|
65
|
+
reexportedImport: "Non-barrel files must not export identifiers imported from other modules.",
|
|
66
|
+
reexportNotAllowed: "Non-barrel files must not re-export from other modules.",
|
|
67
|
+
},
|
|
68
|
+
schema: [
|
|
69
|
+
{
|
|
70
|
+
additionalProperties: false,
|
|
71
|
+
properties: {
|
|
72
|
+
folders: {
|
|
73
|
+
oneOf: [
|
|
74
|
+
{ type: "string" },
|
|
75
|
+
{
|
|
76
|
+
items: { type: "string" },
|
|
77
|
+
minItems: 1,
|
|
78
|
+
type: "array",
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
names: {
|
|
83
|
+
oneOf: [
|
|
84
|
+
{ type: "string" },
|
|
85
|
+
{
|
|
86
|
+
items: { type: "string" },
|
|
87
|
+
minItems: 1,
|
|
88
|
+
type: "array",
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
type: "object",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
type: "problem",
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
export { noReexportsOutsideBarrelsRule };
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9uby1yZWV4cG9ydHMtb3V0c2lkZS1iYXJyZWxzLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixjQUFjLEdBQ2YsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixPQUF5QixFQUN6QixRQUFnQixFQUNoQixPQUFzQyxFQUNuQixFQUFFO0lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLElBQWlCO1lBQ3ZCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0RCxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxZQUFZLEdBQ2hCLFNBQVMsQ0FBQyxJQUFJLEtBQUssc0JBQXNCO29CQUN6QyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssd0JBQXdCO3dCQUMxQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUk7d0JBQ3pCLFNBQVMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFakMsTUFBTSx1QkFBdUIsR0FDM0IsU0FBUyxDQUFDLElBQUksS0FBSywwQkFBMEI7b0JBQzdDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVk7b0JBQzNDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixTQUFTLEVBQUUsb0JBQW9CO3dCQUMvQixJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDdkQsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixTQUFTLEVBQUUsa0JBQWtCO3dCQUM3QixJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLFNBQVMsRUFBRSxrQkFBa0I7d0JBQzdCLElBQUksRUFBRSxTQUFTO3FCQUNoQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sNkJBQTZCLEdBQW9CO0lBQ3JELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPLG9CQUFvQixDQUN6QixPQUFPLEVBQ1AsT0FBTyxDQUFDLFFBQVEsRUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsdUJBQXVCLENBQzNCLDhCQUE4QixFQUM5QixpRUFBaUUsQ0FDbEU7UUFDRCxRQUFRLEVBQUU7WUFDUixnQkFBZ0IsRUFDZCwyRUFBMkU7WUFDN0Usa0JBQWtCLEVBQ2hCLHlEQUF5RDtTQUM1RDtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1AsS0FBSyxFQUFFOzRCQUNMLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDbEI7Z0NBQ0UsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDekIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsSUFBSSxFQUFFLE9BQU87NkJBQ2Q7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLEtBQUssRUFBRTs0QkFDTCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ2xCO2dDQUNFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0NBQ3pCLFFBQVEsRUFBRSxDQUFDO2dDQUNYLElBQUksRUFBRSxPQUFPOzZCQUNkO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBU1QsIFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbmltcG9ydCB7XG4gIGNvbGxlY3RJbXBvcnRlZE5hbWVzLFxuICBnZXRPcHRpb25zLFxuICBoYXNJbXBvcnRlZEV4cG9ydCxcbiAgaXNCYXJyZWxGaWxlLFxuICBzaG91bGRMaW50RmlsZSxcbn0gZnJvbSBcIi4vbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy11dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBCdWlsZHMgYSBydWxlIGxpc3RlbmVyIGZvciB0aGUgc3VwcGxpZWQgZmlsZS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUgdG8gbGludC5cbiAqIEBwYXJhbSBvcHRpb25zIE5vcm1hbGl6ZWQgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHJ1bGUgbGlzdGVuZXIgZm9yIHRoZSBmaWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3RlbmVyID0gYnVpbGRMaXN0ZW5lckZvckZpbGUoY29udGV4dCwgZmlsZW5hbWUsIHN0YXRlKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZExpc3RlbmVyRm9yRmlsZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0T3B0aW9ucz4sXG4pOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiB7XG4gIGlmICghc2hvdWxkTGludEZpbGUoZmlsZW5hbWUsIG9wdGlvbnMpIHx8IGlzQmFycmVsRmlsZShmaWxlbmFtZSwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFByb2dyYW0obm9kZTogQVNULlByb2dyYW0pOiB2b2lkIHtcbiAgICAgIGNvbnN0IGltcG9ydGVkTmFtZXMgPSBjb2xsZWN0SW1wb3J0ZWROYW1lcyhub2RlLmJvZHkpO1xuXG4gICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBub2RlLmJvZHkpIHtcbiAgICAgICAgY29uc3QgaXNFeHBvcnRGcm9tID1cbiAgICAgICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiIHx8XG4gICAgICAgICAgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiAmJlxuICAgICAgICAgICAgc3RhdGVtZW50LnNvdXJjZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgc3RhdGVtZW50LnNvdXJjZSAhPT0gdm9pZCAwKTtcblxuICAgICAgICBjb25zdCBpc0ltcG9ydGVkRGVmYXVsdEV4cG9ydCA9XG4gICAgICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCIgJiZcbiAgICAgICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24udHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICBpbXBvcnRlZE5hbWVzLmhhcyhzdGF0ZW1lbnQuZGVjbGFyYXRpb24ubmFtZSk7XG5cbiAgICAgICAgaWYgKGlzRXhwb3J0RnJvbSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJyZWV4cG9ydE5vdEFsbG93ZWRcIixcbiAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNJbXBvcnRlZEV4cG9ydChzdGF0ZW1lbnQsIGltcG9ydGVkTmFtZXMpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBcInJlZXhwb3J0ZWRJbXBvcnRcIixcbiAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ltcG9ydGVkRGVmYXVsdEV4cG9ydCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJyZWV4cG9ydGVkSW1wb3J0XCIsXG4gICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufTtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBwcmV2ZW50aW5nIHJlLWV4cG9ydHMgb3V0c2lkZSBiYXJyZWwgZmlsZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVsZSA9IG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiBidWlsZExpc3RlbmVyRm9yRmlsZShcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250ZXh0LmZpbGVuYW1lLFxuICAgICAgZ2V0T3B0aW9ucyhjb250ZXh0Lm9wdGlvbnMpLFxuICAgICk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVsc1wiLFxuICAgICAgXCJSZXF1aXJlIG5vbi1iYXJyZWwgZmlsZXMgdG8gZXhwb3J0IG9ubHkgbG9jYWxseSBkZWZpbmVkIHZhbHVlcy5cIixcbiAgICApLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZWV4cG9ydGVkSW1wb3J0OlxuICAgICAgICBcIk5vbi1iYXJyZWwgZmlsZXMgbXVzdCBub3QgZXhwb3J0IGlkZW50aWZpZXJzIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy5cIixcbiAgICAgIHJlZXhwb3J0Tm90QWxsb3dlZDpcbiAgICAgICAgXCJOb24tYmFycmVsIGZpbGVzIG11c3Qgbm90IHJlLWV4cG9ydCBmcm9tIG90aGVyIG1vZHVsZXMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZm9sZGVyczoge1xuICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWVzOiB7XG4gICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICBtaW5JdGVtczogMSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZSB9O1xuIl19
|
package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
import type { NoReexportsOutsideBarrelsOptions } from "./types";
|
|
3
|
+
/** Type definition for rule data. */
|
|
4
|
+
interface RuleReport {
|
|
5
|
+
/** MessageId helper value. */
|
|
6
|
+
messageId: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
/** Type definition for rule data. */
|
|
9
|
+
interface TemporaryRunner {
|
|
10
|
+
/** RunDefaultFeature field value. */
|
|
11
|
+
runDefaultFeature: (body: ESTree.Program["body"]) => RuleReport[];
|
|
12
|
+
/** RunTemporaryFeature field value. */
|
|
13
|
+
runTemporaryFeature: (body: ESTree.Program["body"], options?: NoReexportsOutsideBarrelsOptions) => RuleReport[];
|
|
14
|
+
/** RunTemporaryIndex field value. */
|
|
15
|
+
runTemporaryIndex: (body: ESTree.Program["body"], options?: NoReexportsOutsideBarrelsOptions) => RuleReport[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Runs the rule against the provided AST body.
|
|
19
|
+
* @param filename Target filename.
|
|
20
|
+
* @param body AST program body.
|
|
21
|
+
* @param options Rule options when provided.
|
|
22
|
+
* @returns The captured rule reports.
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const reports = runRule("feature.ts", createBody());
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
declare const runRule: (filename: string, body: ESTree.Program["body"], options?: NoReexportsOutsideBarrelsOptions) => RuleReport[];
|
|
29
|
+
/**
|
|
30
|
+
* Creates temporary file runners for the rule.
|
|
31
|
+
* @param temporaryDirectories Directories created during the run.
|
|
32
|
+
* @returns Helpers for running the rule in temp folders.
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const runner = createTemporaryRunner([]);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
declare const createTemporaryRunner: (temporaryDirectories: string[]) => TemporaryRunner;
|
|
39
|
+
export { createTemporaryRunner, runRule };
|
|
40
|
+
//# sourceMappingURL=no-reexports-outside-barrels-test-utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-reexports-outside-barrels-test-utilities.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKtC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AA0BhE,qCAAqC;AACrC,UAAU,UAAU;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAiBD,qCAAqC;AACrC,UAAU,eAAe;IACvB,qCAAqC;IACrC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;IAElE,uCAAuC;IACvC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,gCAAgC,KACvC,UAAU,EAAE,CAAC;IAElB,qCAAqC;IACrC,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,gCAAgC,KACvC,UAAU,EAAE,CAAC;CACnB;AAkCD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,OAAO,GACX,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,UAAU,gCAAgC,KACzC,UAAU,EAeZ,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,sBAAsB,MAAM,EAAE,KAC7B,eAmCF,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC"}
|