@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
package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SourceCode } from "eslint";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { noReexportsOutsideBarrelsRule } from "./no-reexports-outside-barrels-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: "no-reexports-outside-barrels",
|
|
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("feature.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 = noReexportsOutsideBarrelsRule.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 runDefaultFeature = (body) => runForTemporaryFile({ body, filename: "feature.ts", root: "src" });
|
|
75
|
+
const runTemporaryFeature = (body, options) => runForTemporaryFile({
|
|
76
|
+
body,
|
|
77
|
+
filename: "feature.ts",
|
|
78
|
+
root: "tmp",
|
|
79
|
+
...(options === void 0 ? {} : { options }),
|
|
80
|
+
});
|
|
81
|
+
const runTemporaryIndex = (body, options) => runForTemporaryFile({
|
|
82
|
+
body,
|
|
83
|
+
filename: "index.ts",
|
|
84
|
+
root: "tmp",
|
|
85
|
+
...(options === void 0 ? {} : { options }),
|
|
86
|
+
});
|
|
87
|
+
return { runDefaultFeature, runTemporaryFeature, runTemporaryIndex };
|
|
88
|
+
};
|
|
89
|
+
export { createTemporaryRunner, runRule };
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy10ZXN0LXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXRlY3R1cmUvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMvbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy10ZXN0LXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUE4RHBFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixVQUFpQyxFQUNmLEVBQUUsQ0FDcEIsQ0FBQztJQUNDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2xCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtJQUM3QixFQUFFLEVBQUUsOEJBQThCO0lBQ2xDLGVBQWUsRUFBRTtRQUNmLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCO0lBQ0QsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBQ2xFLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLFVBQVUsRUFBRSxLQUFLLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLFFBQVE7SUFDckMsTUFBTSxFQUFFLENBQUMsTUFBNkIsRUFBUSxFQUFFO1FBQzlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUF1QyxDQUFDO1FBQzlELFVBQVUsQ0FBQyxPQUFP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cm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZSB9IGZyb20gXCIuL25vLXJlZXhwb3J0cy1vdXRzaWRlLWJhcnJlbHMtcnVsZVwiO1xuaW1wb3J0IHsgY3JlYXRlUHJvZ3JhbSwgY3JlYXRlUmVwb0RpcmVjdG9yeSB9IGZyb20gXCIuL3Rlc3QtaGVscGVyc1wiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgUmVwb3J0RGVzY3JpcHRvcldpdGhNZXNzYWdlSWQge1xuICAvKiogTWVzc2FnZUlkIGZpZWxkIHZhbHVlLiAqL1xuICBtZXNzYWdlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSdWxlQ29udGV4dFBhcmFtZXRlcnMge1xuICAvKiogRmlsZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGZpbGVuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbnMgaGVscGVyIHZhbHVlLiAqL1xuICBvcHRpb25zPzogTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnM7XG5cbiAgLyoqIFJlcG9ydHMgZmllbGQgdmFsdWUuICovXG4gIHJlcG9ydHM6IFJ1bGVSZXBvcnRbXTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogU291cmNlQ29kZTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJ1bGVSZXBvcnQge1xuICAvKiogTWVzc2FnZUlkIGhlbHBlciB2YWx1ZS4gKi9cbiAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBUZW1wb3JhcnlGaWxlT3B0aW9ucyB7XG4gIC8qKiBCb2R5IGZpZWxkIHZhbHVlLiAqL1xuICBib2R5OiBFU1RyZWUuUHJvZ3JhbVtcImJvZHlcIl07XG5cbiAgLyoqIEZpbGVuYW1lIGZpZWxkIHZhbHVlLiAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25zIGhlbHBlciB2YWx1ZS4gKi9cbiAgb3B0aW9ucz86IE5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNPcHRpb25zO1xuXG4gIC8qKiBSb290IGZpZWxkIHZhbHVlLiAqL1xuICByb290OiBcInNyY1wiIHwgXCJ0bXBcIjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFRlbXBvcmFyeVJ1bm5lciB7XG4gIC8qKiBSdW5EZWZhdWx0RmVhdHVyZSBmaWVsZCB2YWx1ZS4gKi9cbiAgcnVuRGVmYXVsdEZlYXR1cmU6IChib2R5OiBFU1RyZWUuUHJvZ3JhbVtcImJvZHlcIl0pID0+IFJ1bGVSZXBvcnRbXTtcblxuICAvKiogUnVuVGVtcG9yYXJ5RmVhdHVyZSBmaWVsZCB2YWx1ZS4gKi9cbiAgcnVuVGVtcG9yYXJ5RmVhdHVyZTogKFxuICAgIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgICBvcHRpb25zPzogTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnMsXG4gICkgPT4gUnVsZVJlcG9ydFtdO1xuXG4gIC8qKiBSdW5UZW1wb3JhcnlJbmRleCBmaWVsZCB2YWx1ZS4gKi9cbiAgcnVuVGVtcG9yYXJ5SW5kZXg6IChcbiAgICBib2R5OiBFU1RyZWUuUHJvZ3JhbVtcImJvZHlcIl0sXG4gICAgb3B0aW9ucz86IE5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNPcHRpb25zLFxuICApID0+IFJ1bGVSZXBvcnRbXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBydWxlIGNvbnRleHQgZm9yIHJ1bm5pbmcgdGhlIHJ1bGUuXG4gKiBAcGFyYW0gcGFyYW1ldGVycyBDb250ZXh0IHBhcmFtZXRlcnMgYW5kIHJlcG9ydCBzaW5rLlxuICogQHJldHVybnMgVGhlIEVTTGludCBydWxlIGNvbnRleHQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29udGV4dCA9IGNyZWF0ZVJ1bGVDb250ZXh0KHsgZmlsZW5hbWUsIHJlcG9ydHMsIHNvdXJjZUNvZGUgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlUnVsZUNvbnRleHQgPSAoXG4gIHBhcmFtZXRlcnM6IFJ1bGVDb250ZXh0UGFyYW1ldGVycyxcbik6IFJ1bGUuUnVsZUNvbnRleHQgPT5cbiAgKHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgZmlsZW5hbWU6IHBhcmFtZXRlcnMuZmlsZW5hbWUsXG4gICAgaWQ6IFwibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVsc1wiLFxuICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgZWNtYVZlcnNpb246IFwibGF0ZXN0XCIsXG4gICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxuICAgIH0sXG4gICAgb3B0aW9uczogcGFyYW1ldGVycy5vcHRpb25zID09PSB2b2lkIDAgPyBbXSA6IFtwYXJhbWV0ZXJzLm9wdGlvbnNdLFxuICAgIHBhcnNlck9wdGlvbnM6IHt9LFxuICAgIHBhcnNlclBhdGg6IHZvaWQgMCxcbiAgICBwaHlzaWNhbEZpbGVuYW1lOiBwYXJhbWV0ZXJzLmZpbGVuYW1lLFxuICAgIHJlcG9ydDogKHJlcG9ydDogUnVsZS5SZXBvcnREZXNjcmlwdG9yKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVwb3J0IGFzIFJlcG9ydERlc2NyaXB0b3JXaXRoTWVzc2FnZUlkO1xuICAgICAgcGFyYW1ldGVycy5yZXBvcnRzLnB1c2goeyBtZXNzYWdlSWQgfSk7XG4gICAgfSxcbiAgICBzZXR0aW5nczoge30sXG4gICAgc291cmNlQ29kZTogcGFyYW1ldGVycy5zb3VyY2VDb2RlLFxuICB9KSBhcyB1bmtub3duIGFzIFJ1bGUuUnVsZUNvbnRleHQ7XG5cbi8qKlxuICogUnVucyB0aGUgcnVsZSBhZ2FpbnN0IHRoZSBwcm92aWRlZCBBU1QgYm9keS5cbiAqIEBwYXJhbSBmaWxlbmFtZSBUYXJnZXQgZmlsZW5hbWUuXG4gKiBAcGFyYW0gYm9keSBBU1QgcHJvZ3JhbSBib2R5LlxuICogQHBhcmFtIG9wdGlvbnMgUnVsZSBvcHRpb25zIHdoZW4gcHJvdmlkZWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgcnVsZSByZXBvcnRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlcG9ydHMgPSBydW5SdWxlKFwiZmVhdHVyZS50c1wiLCBjcmVhdGVCb2R5KCkpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJ1blJ1bGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgb3B0aW9ucz86IE5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNPcHRpb25zLFxuKTogUnVsZVJlcG9ydFtdID0+IHtcbiAgY29uc3QgcmVwb3J0czogUnVsZVJlcG9ydFtdID0gW107XG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBuZXcgU291cmNlQ29kZShcIlwiLCBjcmVhdGVQcm9ncmFtKGJvZHkpKTtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZVJ1bGVDb250ZXh0KHtcbiAgICBmaWxlbmFtZSxcbiAgICByZXBvcnRzLFxuICAgIHNvdXJjZUNvZGUsXG4gICAgLi4uKG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogeyBvcHRpb25zIH0pLFxuICB9KTtcbiAgY29uc3QgbGlzdGVuZXJzID0gbm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc1J1bGUuY3JlYXRlKGNvbnRleHQpO1xuICBjb25zdCBwcm9ncmFtTGlzdGVuZXIgPSBsaXN0ZW5lcnMuUHJvZ3JhbTtcblxuICBwcm9ncmFtTGlzdGVuZXI/Lihjb250ZXh0LnNvdXJjZUNvZGUuYXN0KTtcblxuICByZXR1cm4gcmVwb3J0cztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0ZW1wb3JhcnkgZmlsZSBydW5uZXJzIGZvciB0aGUgcnVsZS5cbiAqIEBwYXJhbSB0ZW1wb3JhcnlEaXJlY3RvcmllcyBEaXJlY3RvcmllcyBjcmVhdGVkIGR1cmluZyB0aGUgcnVuLlxuICogQHJldHVybnMgSGVscGVycyBmb3IgcnVubmluZyB0aGUgcnVsZSBpbiB0ZW1wIGZvbGRlcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVubmVyID0gY3JlYXRlVGVtcG9yYXJ5UnVubmVyKFtdKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVUZW1wb3JhcnlSdW5uZXIgPSAoXG4gIHRlbXBvcmFyeURpcmVjdG9yaWVzOiBzdHJpbmdbXSxcbik6IFRlbXBvcmFyeVJ1bm5lciA9PiB7XG4gIGNvbnN0IHJ1bkZvclRlbXBvcmFyeUZpbGUgPSAob3B0aW9uczogVGVtcG9yYXJ5RmlsZU9wdGlvbnMpOiBSdWxlUmVwb3J0W10gPT4ge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IGNyZWF0ZVJlcG9EaXJlY3Rvcnkob3B0aW9ucy5yb290KTtcbiAgICB0ZW1wb3JhcnlEaXJlY3Rvcmllcy5wdXNoKGRpcmVjdG9yeSk7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBvcHRpb25zLmZpbGVuYW1lKTtcblxuICAgIHJldHVybiBydW5SdWxlKGZpbGVQYXRoLCBvcHRpb25zLmJvZHksIG9wdGlvbnMub3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgcnVuRGVmYXVsdEZlYXR1cmUgPSAoYm9keTogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdKTogUnVsZVJlcG9ydFtdID0+XG4gICAgcnVuRm9yVGVtcG9yYXJ5RmlsZSh7IGJvZHksIGZpbGVuYW1lOiBcImZlYXR1cmUudHNcIiwgcm9vdDogXCJzcmNcIiB9KTtcblxuICBjb25zdCBydW5UZW1wb3JhcnlGZWF0dXJlID0gKFxuICAgIGJvZHk6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXSxcbiAgICBvcHRpb25zPzogTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnMsXG4gICk6IFJ1bGVSZXBvcnRbXSA9PlxuICAgIHJ1bkZvclRlbXBvcmFyeUZpbGUoe1xuICAgICAgYm9keSxcbiAgICAgIGZpbGVuYW1lOiBcImZlYXR1cmUudHNcIixcbiAgICAgIHJvb3Q6IFwidG1wXCIsXG4gICAgICAuLi4ob3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiB7IG9wdGlvbnMgfSksXG4gICAgfSk7XG5cbiAgY29uc3QgcnVuVGVtcG9yYXJ5SW5kZXggPSAoXG4gICAgYm9keTogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdLFxuICAgIG9wdGlvbnM/OiBOb1JlZXhwb3J0c091dHNpZGVCYXJyZWxzT3B0aW9ucyxcbiAgKTogUnVsZVJlcG9ydFtdID0+XG4gICAgcnVuRm9yVGVtcG9yYXJ5RmlsZSh7XG4gICAgICBib2R5LFxuICAgICAgZmlsZW5hbWU6IFwiaW5kZXgudHNcIixcbiAgICAgIHJvb3Q6IFwidG1wXCIsXG4gICAgICAuLi4ob3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiB7IG9wdGlvbnMgfSksXG4gICAgfSk7XG5cbiAgcmV0dXJuIHsgcnVuRGVmYXVsdEZlYXR1cmUsIHJ1blRlbXBvcmFyeUZlYXR1cmUsIHJ1blRlbXBvcmFyeUluZGV4IH07XG59O1xuXG5leHBvcnQgeyBjcmVhdGVUZW1wb3JhcnlSdW5uZXIsIHJ1blJ1bGUgfTtcbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { AST } from "eslint";
|
|
2
|
+
/** Type definition for rule data. */
|
|
3
|
+
interface NoReexportsOutsideBarrelsState {
|
|
4
|
+
/** Folders field value. */
|
|
5
|
+
folders: string[];
|
|
6
|
+
/** Names field value. */
|
|
7
|
+
names: string[];
|
|
8
|
+
/** NamesSet field value. */
|
|
9
|
+
namesSet: Set<string>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Builds the rule options state from raw options.
|
|
13
|
+
* @param options Raw rule options.
|
|
14
|
+
* @returns Normalized rule options.
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const state = getOptions([{}]);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
declare const getOptions: (options: readonly unknown[]) => NoReexportsOutsideBarrelsState;
|
|
21
|
+
/**
|
|
22
|
+
* Determines whether a file should be linted by this rule.
|
|
23
|
+
* @param filename Absolute filename.
|
|
24
|
+
* @param options Normalized rule options.
|
|
25
|
+
* @returns True when the file should be checked.
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const ok = shouldLintFile("/repo/src/index.ts", state);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
declare const shouldLintFile: (filename: string, options: NoReexportsOutsideBarrelsState) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Determines whether a file is a barrel file under the rule options.
|
|
34
|
+
* @param filename Absolute filename.
|
|
35
|
+
* @param options Normalized rule options.
|
|
36
|
+
* @returns True when the file is a barrel file.
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const ok = isBarrelFile("/repo/src/index.ts", state);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare const isBarrelFile: (filename: string, options: NoReexportsOutsideBarrelsState) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Collects imported identifiers from the program body.
|
|
45
|
+
* @param body Program body statements.
|
|
46
|
+
* @returns Set of local imported identifiers.
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const names = collectImportedNames(program.body);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare const collectImportedNames: (body: AST.Program["body"]) => Set<string>;
|
|
53
|
+
/**
|
|
54
|
+
* Checks whether an export specifier references an imported identifier.
|
|
55
|
+
* @param statement Export named declaration statement.
|
|
56
|
+
* @param importedNames Set of imported identifiers.
|
|
57
|
+
* @returns True when any export specifier references an import.
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const ok = hasImportedExport(statement, names);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare const hasImportedExport: (statement: AST.Program["body"][number], importedNames: Set<string>) => boolean;
|
|
64
|
+
export { collectImportedNames, getOptions, hasImportedExport, isBarrelFile, shouldLintFile, };
|
|
65
|
+
//# sourceMappingURL=no-reexports-outside-barrels-utilities.d.ts.map
|
package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-reexports-outside-barrels-utilities.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAalC,qCAAqC;AACrC,UAAU,8BAA8B;IACtC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,yBAAyB;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,4BAA4B;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AA4BD;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GACd,SAAS,SAAS,OAAO,EAAE,KAC1B,8BAMF,CAAC;AAgDF;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAClB,UAAU,MAAM,EAChB,SAAS,8BAA8B,KACtC,OAUF,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,YAAY,GAChB,UAAU,MAAM,EAChB,SAAS,8BAA8B,KACtC,OAEF,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,oBAAoB,GAAI,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAG,GAAG,CAAC,MAAM,CAYnE,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,iBAAiB,GACrB,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACtC,eAAe,GAAG,CAAC,MAAM,CAAC,KACzB,OAcF,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,cAAc,GACf,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { minimatch } from "minimatch";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/** Default value used by this module. */
|
|
4
|
+
const DEFAULT_BARREL_NAMES = ["index.ts", "index.tsx", "index.js", "index.jsx"];
|
|
5
|
+
/** Default folder globs for non-barrel re-export checks. */
|
|
6
|
+
const DEFAULT_FOLDER_GLOBS = ["src/*/**"];
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes a string list option into a clean list.
|
|
9
|
+
* @param value Raw option value.
|
|
10
|
+
* @param defaults Default list when the option is empty.
|
|
11
|
+
* @returns Normalized string list.
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const names = normalizeList("index.ts", ["index.ts"]);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
const normalizeList = (value, defaults) => {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return value
|
|
20
|
+
.filter((entry) => typeof entry === "string")
|
|
21
|
+
.map((entry) => entry.trim())
|
|
22
|
+
.filter((entry) => entry.length > 0);
|
|
23
|
+
}
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
const trimmed = value.trim();
|
|
26
|
+
return trimmed.length === 0 ? [] : [trimmed];
|
|
27
|
+
}
|
|
28
|
+
return [...defaults];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Builds the rule options state from raw options.
|
|
32
|
+
* @param options Raw rule options.
|
|
33
|
+
* @returns Normalized rule options.
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const state = getOptions([{}]);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const getOptions = (options) => {
|
|
40
|
+
const rawOptions = options[0];
|
|
41
|
+
const folders = normalizeList(rawOptions?.folders, DEFAULT_FOLDER_GLOBS);
|
|
42
|
+
const names = normalizeList(rawOptions?.names, DEFAULT_BARREL_NAMES);
|
|
43
|
+
return { folders, names, namesSet: new Set(names) };
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Checks whether the filename is valid for linting.
|
|
47
|
+
* @param filename Absolute filename.
|
|
48
|
+
* @returns True when the filename is lintable.
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const ok = isLintableFilename("/repo/src/index.ts");
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
const isLintableFilename = (filename) => filename.length > 0 && path.isAbsolute(filename);
|
|
55
|
+
/**
|
|
56
|
+
* Normalizes a filename to a repo-relative path.
|
|
57
|
+
* @param filename Absolute filename.
|
|
58
|
+
* @returns Relative path using forward slashes.
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const relative = normalizeRelativePath("/repo/src/index.ts");
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
const normalizeRelativePath = (filename) => path.relative(process.cwd(), filename).split(path.sep).join("/");
|
|
65
|
+
/**
|
|
66
|
+
* Checks whether a file path matches any configured folder globs.
|
|
67
|
+
* @param filename Absolute filename.
|
|
68
|
+
* @param folders Folder glob patterns.
|
|
69
|
+
* @returns True when the filename is within configured folders.
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const ok = isPathInFolders("/repo/src/index.ts", ["src/**"]);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
const isPathInFolders = (filename, folders) => {
|
|
76
|
+
const relativePath = normalizeRelativePath(filename);
|
|
77
|
+
if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return folders.some((folder) => minimatch(relativePath, folder, { dot: true }));
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Determines whether a file should be linted by this rule.
|
|
84
|
+
* @param filename Absolute filename.
|
|
85
|
+
* @param options Normalized rule options.
|
|
86
|
+
* @returns True when the file should be checked.
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const ok = shouldLintFile("/repo/src/index.ts", state);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
const shouldLintFile = (filename, options) => {
|
|
93
|
+
if (!isLintableFilename(filename)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (options.folders.length === 0 || options.names.length === 0) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return isPathInFolders(filename, options.folders);
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Determines whether a file is a barrel file under the rule options.
|
|
103
|
+
* @param filename Absolute filename.
|
|
104
|
+
* @param options Normalized rule options.
|
|
105
|
+
* @returns True when the file is a barrel file.
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const ok = isBarrelFile("/repo/src/index.ts", state);
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
const isBarrelFile = (filename, options) => {
|
|
112
|
+
return options.namesSet.has(path.basename(filename));
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Collects imported identifiers from the program body.
|
|
116
|
+
* @param body Program body statements.
|
|
117
|
+
* @returns Set of local imported identifiers.
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const names = collectImportedNames(program.body);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
const collectImportedNames = (body) => {
|
|
124
|
+
const importedNames = new Set();
|
|
125
|
+
for (const statement of body) {
|
|
126
|
+
if (statement.type === "ImportDeclaration") {
|
|
127
|
+
for (const specifier of statement.specifiers) {
|
|
128
|
+
importedNames.add(specifier.local.name);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return importedNames;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Checks whether an export specifier references an imported identifier.
|
|
136
|
+
* @param statement Export named declaration statement.
|
|
137
|
+
* @param importedNames Set of imported identifiers.
|
|
138
|
+
* @returns True when any export specifier references an import.
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const ok = hasImportedExport(statement, names);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
const hasImportedExport = (statement, importedNames) => {
|
|
145
|
+
if (statement.type !== "ExportNamedDeclaration" ||
|
|
146
|
+
(statement.source !== null && statement.source !== void 0) ||
|
|
147
|
+
(statement.declaration !== null && statement.declaration !== void 0)) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return statement.specifiers.some((specifier) => specifier.local.type === "Identifier" &&
|
|
151
|
+
importedNames.has(specifier.local.name));
|
|
152
|
+
};
|
|
153
|
+
export { collectImportedNames, getOptions, hasImportedExport, isBarrelFile, shouldLintFile, };
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL25vLXJlZXhwb3J0cy1vdXRzaWRlLWJhcnJlbHMtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBSTdCLHlDQUF5QztBQUN6QyxNQUFNLG9CQUFvQixHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFaEYsNERBQTREO0FBQzVELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQWMxQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWMsRUFBRSxRQUFrQixFQUFZLEVBQUU7SUFDckUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO2FBQzdELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMs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LEVBQUUsQ0FBQztRQUM3QixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztZQUMzQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsU0FBc0MsRUFDdEMsYUFBMEIsRUFDakIsRUFBRTtJQUNYLElBQ0UsU0FBUyxDQUFDLElBQUksS0FBSyx3QkFBd0I7UUFDM0MsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUMsU0FBUyxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksU0FBUyxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUNwRSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDOUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDckMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUMxQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixjQUFjLEdBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVNUIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBtaW5pbWF0Y2ggfSBmcm9tIFwibWluaW1hdGNoXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc09wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogRGVmYXVsdCB2YWx1ZSB1c2VkIGJ5IHRoaXMgbW9kdWxlLiAqL1xuY29uc3QgREVGQVVMVF9CQVJSRUxfTkFNRVMgPSBbXCJpbmRleC50c1wiLCBcImluZGV4LnRzeFwiLCBcImluZGV4LmpzXCIsIFwiaW5kZXguanN4XCJdO1xuXG4vKiogRGVmYXVsdCBmb2xkZXIgZ2xvYnMgZm9yIG5vbi1iYXJyZWwgcmUtZXhwb3J0IGNoZWNrcy4gKi9cbmNvbnN0IERFRkFVTFRfRk9MREVSX0dMT0JTID0gW1wic3JjLyovKipcIl07XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBOb1JlZXhwb3J0c091dHNpZGVCYXJyZWxzU3RhdGUge1xuICAvKiogRm9sZGVycyBmaWVsZCB2YWx1ZS4gKi9cbiAgZm9sZGVyczogc3RyaW5nW107XG5cbiAgLyoqIE5hbWVzIGZpZWxkIHZhbHVlLiAqL1xuICBuYW1lczogc3RyaW5nW107XG5cbiAgLyoqIE5hbWVzU2V0IGZpZWxkIHZhbHVlLiAqL1xuICBuYW1lc1NldDogU2V0PHN0cmluZz47XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHN0cmluZyBsaXN0IG9wdGlvbiBpbnRvIGEgY2xlYW4gbGlzdC5cbiAqIEBwYXJhbSB2YWx1ZSBSYXcgb3B0aW9uIHZhbHVlLlxuICogQHBhcmFtIGRlZmF1bHRzIERlZmF1bHQgbGlzdCB3aGVuIHRoZSBvcHRpb24gaXMgZW1wdHkuXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIHN0cmluZyBsaXN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWVzID0gbm9ybWFsaXplTGlzdChcImluZGV4LnRzXCIsIFtcImluZGV4LnRzXCJdKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVMaXN0ID0gKHZhbHVlOiB1bmtub3duLCBkZWZhdWx0czogc3RyaW5nW10pOiBzdHJpbmdbXSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLmZpbHRlcigoZW50cnkpOiBlbnRyeSBpcyBzdHJpbmcgPT4gdHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiKVxuICAgICAgLm1hcCgoZW50cnkpID0+IGVudHJ5LnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIHJldHVybiB0cmltbWVkLmxlbmd0aCA9PT0gMCA/IFtdIDogW3RyaW1tZWRdO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5kZWZhdWx0c107XG59O1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcnVsZSBvcHRpb25zIHN0YXRlIGZyb20gcmF3IG9wdGlvbnMuXG4gKiBAcGFyYW0gb3B0aW9ucyBSYXcgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc3RhdGUgPSBnZXRPcHRpb25zKFt7fV0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE9wdGlvbnMgPSAoXG4gIG9wdGlvbnM6IHJlYWRvbmx5IHVua25vd25bXSxcbik6IE5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNTdGF0ZSA9PiB7XG4gIGNvbnN0IHJhd09wdGlvbnMgPSBvcHRpb25zWzBdIGFzIE5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNPcHRpb25zIHwgdW5kZWZpbmVkO1xuICBjb25zdCBmb2xkZXJzID0gbm9ybWFsaXplTGlzdChyYXdPcHRpb25zPy5mb2xkZXJzLCBERUZBVUxUX0ZPTERFUl9HTE9CUyk7XG4gIGNvbnN0IG5hbWVzID0gbm9ybWFsaXplTGlzdChyYXdPcHRpb25zPy5uYW1lcywgREVGQVVMVF9CQVJSRUxfTkFNRVMpO1xuXG4gIHJldHVybiB7IGZvbGRlcnMsIG5hbWVzLCBuYW1lc1NldDogbmV3IFNldChuYW1lcykgfTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGZpbGVuYW1lIGlzIHZhbGlkIGZvciBsaW50aW5nLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBmaWxlbmFtZSBpcyBsaW50YWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGlzTGludGFibGVGaWxlbmFtZShcIi9yZXBvL3NyYy9pbmRleC50c1wiKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0xpbnRhYmxlRmlsZW5hbWUgPSAoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgZmlsZW5hbWUubGVuZ3RoID4gMCAmJiBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBmaWxlbmFtZSB0byBhIHJlcG8tcmVsYXRpdmUgcGF0aC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZS5cbiAqIEByZXR1cm5zIFJlbGF0aXZlIHBhdGggdXNpbmcgZm9yd2FyZCBzbGFzaGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlbGF0aXZlID0gbm9ybWFsaXplUmVsYXRpdmVQYXRoKFwiL3JlcG8vc3JjL2luZGV4LnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZmlsZW5hbWUpLnNwbGl0KHBhdGguc2VwKS5qb2luKFwiL1wiKTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGZpbGUgcGF0aCBtYXRjaGVzIGFueSBjb25maWd1cmVkIGZvbGRlciBnbG9icy5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZS5cbiAqIEBwYXJhbSBmb2xkZXJzIEZvbGRlciBnbG9iIHBhdHRlcm5zLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBmaWxlbmFtZSBpcyB3aXRoaW4gY29uZmlndXJlZCBmb2xkZXJzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNQYXRoSW5Gb2xkZXJzKFwiL3JlcG8vc3JjL2luZGV4LnRzXCIsIFtcInNyYy8qKlwiXSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNQYXRoSW5Gb2xkZXJzID0gKGZpbGVuYW1lOiBzdHJpbmcsIGZvbGRlcnM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChmaWxlbmFtZSk7XG5cbiAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi5cIikgfHwgcGF0aC5pc0Fic29sdXRlKHJlbGF0aXZlUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZm9sZGVycy5zb21lKChmb2xkZXIpID0+XG4gICAgbWluaW1hdGNoKHJlbGF0aXZlUGF0aCwgZm9sZGVyLCB7IGRvdDogdHJ1ZSB9KSxcbiAgKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZmlsZSBzaG91bGQgYmUgbGludGVkIGJ5IHRoaXMgcnVsZS5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZS5cbiAqIEBwYXJhbSBvcHRpb25zIE5vcm1hbGl6ZWQgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBmaWxlIHNob3VsZCBiZSBjaGVja2VkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gc2hvdWxkTGludEZpbGUoXCIvcmVwby9zcmMvaW5kZXgudHNcIiwgc3RhdGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHNob3VsZExpbnRGaWxlID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBOb1JlZXhwb3J0c091dHNpZGVCYXJyZWxzU3RhdGUsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFpc0xpbnRhYmxlRmlsZW5hbWUoZmlsZW5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZm9sZGVycy5sZW5ndGggPT09IDAgfHwgb3B0aW9ucy5uYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaXNQYXRoSW5Gb2xkZXJzKGZpbGVuYW1lLCBvcHRpb25zLmZvbGRlcnMpO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGlzIGEgYmFycmVsIGZpbGUgdW5kZXIgdGhlIHJ1bGUgb3B0aW9ucy5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZS5cbiAqIEBwYXJhbSBvcHRpb25zIE5vcm1hbGl6ZWQgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBmaWxlIGlzIGEgYmFycmVsIGZpbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc0JhcnJlbEZpbGUoXCIvcmVwby9zcmMvaW5kZXgudHNcIiwgc3RhdGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzQmFycmVsRmlsZSA9IChcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogTm9SZWV4cG9ydHNPdXRzaWRlQmFycmVsc1N0YXRlLFxuKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBvcHRpb25zLm5hbWVzU2V0LmhhcyhwYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSk7XG59O1xuXG4vKipcbiAqIENvbGxlY3RzIGltcG9ydGVkIGlkZW50aWZpZXJzIGZyb20gdGhlIHByb2dyYW0gYm9keS5cbiAqIEBwYXJhbSBib2R5IFByb2dyYW0gYm9keSBzdGF0ZW1lbnRzLlxuICogQHJldHVybnMgU2V0IG9mIGxvY2FsIGltcG9ydGVkIGlkZW50aWZpZXJzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWVzID0gY29sbGVjdEltcG9ydGVkTmFtZXMocHJvZ3JhbS5ib2R5KTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0SW1wb3J0ZWROYW1lcyA9IChib2R5OiBBU1QuUHJvZ3JhbVtcImJvZHlcIl0pOiBTZXQ8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGltcG9ydGVkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIHN0YXRlbWVudC5zcGVjaWZpZXJzKSB7XG4gICAgICAgIGltcG9ydGVkTmFtZXMuYWRkKHNwZWNpZmllci5sb2NhbC5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW1wb3J0ZWROYW1lcztcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwb3J0IHNwZWNpZmllciByZWZlcmVuY2VzIGFuIGltcG9ydGVkIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gc3RhdGVtZW50IEV4cG9ydCBuYW1lZCBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gaW1wb3J0ZWROYW1lcyBTZXQgb2YgaW1wb3J0ZWQgaWRlbnRpZmllcnMuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gYW55IGV4cG9ydCBzcGVjaWZpZXIgcmVmZXJlbmNlcyBhbiBpbXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBoYXNJbXBvcnRlZEV4cG9ydChzdGF0ZW1lbnQsIG5hbWVzKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNJbXBvcnRlZEV4cG9ydCA9IChcbiAgc3RhdGVtZW50OiBBU1QuUHJvZ3JhbVtcImJvZHlcIl1bbnVtYmVyXSxcbiAgaW1wb3J0ZWROYW1lczogU2V0PHN0cmluZz4sXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKFxuICAgIHN0YXRlbWVudC50eXBlICE9PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiB8fFxuICAgIChzdGF0ZW1lbnQuc291cmNlICE9PSBudWxsICYmIHN0YXRlbWVudC5zb3VyY2UgIT09IHZvaWQgMCkgfHxcbiAgICAoc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSBudWxsICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50LnNwZWNpZmllcnMuc29tZShcbiAgICAoc3BlY2lmaWVyKSA9PlxuICAgICAgc3BlY2lmaWVyLmxvY2FsLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICBpbXBvcnRlZE5hbWVzLmhhcyhzcGVjaWZpZXIubG9jYWwubmFtZSksXG4gICk7XG59O1xuXG5leHBvcnQge1xuICBjb2xsZWN0SW1wb3J0ZWROYW1lcyxcbiAgZ2V0T3B0aW9ucyxcbiAgaGFzSW1wb3J0ZWRFeHBvcnQsXG4gIGlzQmFycmVsRmlsZSxcbiAgc2hvdWxkTGludEZpbGUsXG59O1xuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule requiring consistent barrel file usage by folder.
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* const rule = consistentBarrelFilesRule;
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
declare const consistentBarrelFilesRule: Rule.RuleModule;
|
|
10
|
+
export { consistentBarrelFilesRule };
|
|
11
|
+
//# sourceMappingURL=rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AASnC;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAoDrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createRuleDocumentation } from "../../custom-rule-documentation";
|
|
2
|
+
import { buildListenerForFile } from "./consistent-barrel-files-listeners";
|
|
3
|
+
import { getOptions, isLintableFilename, } from "./consistent-barrel-files-options";
|
|
4
|
+
/**
|
|
5
|
+
* ESLint rule requiring consistent barrel file usage by folder.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const rule = consistentBarrelFilesRule;
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
const consistentBarrelFilesRule = {
|
|
12
|
+
create(context) {
|
|
13
|
+
const { filename, options } = context;
|
|
14
|
+
if (!isLintableFilename(filename)) {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
return buildListenerForFile(context, filename, getOptions(options));
|
|
18
|
+
},
|
|
19
|
+
meta: {
|
|
20
|
+
docs: createRuleDocumentation("consistent-barrel-files", "Enforce or forbid barrel files with consistent, allowed names."),
|
|
21
|
+
messages: {
|
|
22
|
+
forbiddenBarrel: "Barrel files are forbidden. Remove the barrel file '{{name}}'.",
|
|
23
|
+
missingBarrel: "Each folder must include a barrel file named one of: {{names}}.",
|
|
24
|
+
},
|
|
25
|
+
schema: [
|
|
26
|
+
{
|
|
27
|
+
additionalProperties: false,
|
|
28
|
+
properties: {
|
|
29
|
+
enforce: { type: "boolean" },
|
|
30
|
+
folders: {
|
|
31
|
+
oneOf: [
|
|
32
|
+
{ type: "string" },
|
|
33
|
+
{
|
|
34
|
+
items: { type: "string" },
|
|
35
|
+
minItems: 1,
|
|
36
|
+
type: "array",
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
names: {
|
|
41
|
+
oneOf: [
|
|
42
|
+
{ type: "string" },
|
|
43
|
+
{
|
|
44
|
+
items: { type: "string" },
|
|
45
|
+
minItems: 1,
|
|
46
|
+
type: "array",
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
type: "object",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
type: "problem",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
export { consistentBarrelFilesRule };
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXRlY3R1cmUvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixHQUNuQixNQUFNLG1DQUFtQyxDQUFDO0FBRTNDOzs7Ozs7R0FNRztBQUNILE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUV0QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSx1QkFBdUIsQ0FDM0IseUJBQXlCLEVBQ3pCLGdFQUFnRSxDQUNqRTtRQUNELFFBQVEsRUFBRTtZQUNSLGVBQWUsRUFDYixnRUFBZ0U7WUFDbEUsYUFBYSxFQUNYLGlFQUFpRTtTQUNwRTtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO29CQUM1QixPQUFPLEVBQUU7d0JBQ1AsS0FBSyxFQUFFOzRCQUNMLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDbEI7Z0NBQ0UsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDekIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsSUFBSSxFQUFFLE9BQU87NkJBQ2Q7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLEtBQUssRUFBRTs0QkFDTCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ2xCO2dDQUNFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0NBQ3pCLFFBQVEsRUFBRSxDQUFDO2dDQUNYLElBQUksRUFBRSxPQUFPOzZCQUNkO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbiB9IGZyb20gXCIuLi8uLi9jdXN0b20tcnVsZS1kb2N1bWVudGF0aW9uXCI7XG5pbXBvcnQgeyBidWlsZExpc3RlbmVyRm9yRmlsZSB9IGZyb20gXCIuL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzLWxpc3RlbmVyc1wiO1xuaW1wb3J0IHtcbiAgZ2V0T3B0aW9ucyxcbiAgaXNMaW50YWJsZUZpbGVuYW1lLFxufSBmcm9tIFwiLi9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy1vcHRpb25zXCI7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGNvbnNpc3RlbnQgYmFycmVsIGZpbGUgdXNhZ2UgYnkgZm9sZGVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJ1bGUgPSBjb25zaXN0ZW50QmFycmVsRmlsZXNSdWxlO1xuICogYGBgXG4gKi9cbmNvbnN0IGNvbnNpc3RlbnRCYXJyZWxGaWxlc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgb3B0aW9ucyB9ID0gY29udGV4dDtcblxuICAgIGlmICghaXNMaW50YWJsZUZpbGVuYW1lKGZpbGVuYW1lKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZExpc3RlbmVyRm9yRmlsZShjb250ZXh0LCBmaWxlbmFtZSwgZ2V0T3B0aW9ucyhvcHRpb25zKSk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwiY29uc2lzdGVudC1iYXJyZWwtZmlsZXNcIixcbiAgICAgIFwiRW5mb3JjZSBvciBmb3JiaWQgYmFycmVsIGZpbGVzIHdpdGggY29uc2lzdGVudCwgYWxsb3dlZCBuYW1lcy5cIixcbiAgICApLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBmb3JiaWRkZW5CYXJyZWw6XG4gICAgICAgIFwiQmFycmVsIGZpbGVzIGFyZSBmb3JiaWRkZW4uIFJlbW92ZSB0aGUgYmFycmVsIGZpbGUgJ3t7bmFtZX19Jy5cIixcbiAgICAgIG1pc3NpbmdCYXJyZWw6XG4gICAgICAgIFwiRWFjaCBmb2xkZXIgbXVzdCBpbmNsdWRlIGEgYmFycmVsIGZpbGUgbmFtZWQgb25lIG9mOiB7e25hbWVzfX0uXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZW5mb3JjZTogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgIGZvbGRlcnM6IHtcbiAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgIHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lczoge1xuICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZSB9O1xuIl19
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { AST } from "eslint";
|
|
2
|
+
import type * as ESTree from "estree";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a temporary repo directory under the given root.
|
|
5
|
+
* @param root Root folder for temp files.
|
|
6
|
+
* @returns The generated directory path.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const directory = createRepoDirectory("tmp");
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare const createRepoDirectory: (root: "src" | "tmp") => string;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a program wrapper around the supplied AST body.
|
|
15
|
+
* @param body Program body statements.
|
|
16
|
+
* @returns The AST program.
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const program = createProgram([]);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare const createProgram: (body: ESTree.Program["body"]) => AST.Program;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an ESTree export specifier.
|
|
25
|
+
* @param localName Local identifier name.
|
|
26
|
+
* @param exportedName Exported identifier name.
|
|
27
|
+
* @returns Export specifier node.
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const specifier = createExportSpecifier("feature");
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare const createExportSpecifier: (localName: string, exportedName?: string) => ESTree.ExportSpecifier;
|
|
34
|
+
/**
|
|
35
|
+
* Creates an ESTree import specifier.
|
|
36
|
+
* @param localName Local identifier name.
|
|
37
|
+
* @param importedName Imported identifier name.
|
|
38
|
+
* @returns Import specifier node.
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const specifier = createImportSpecifier("feature");
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
declare const createImportSpecifier: (localName: string, importedName?: string) => ESTree.ImportSpecifier;
|
|
45
|
+
/**
|
|
46
|
+
* Creates an ESTree import default specifier.
|
|
47
|
+
* @param localName Local identifier name.
|
|
48
|
+
* @returns Import default specifier node.
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const specifier = createImportDefaultSpecifier("feature");
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
declare const createImportDefaultSpecifier: (localName: string) => ESTree.ImportDefaultSpecifier;
|
|
55
|
+
/**
|
|
56
|
+
* Creates an import declaration for test fixtures.
|
|
57
|
+
* @param specifiers Specifiers to include.
|
|
58
|
+
* @returns Import declaration node for tests.
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const node = createImportDeclaration([createImportSpecifier("feature")]);
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
declare const createImportDeclaration: (specifiers?: ESTree.ImportDeclaration["specifiers"]) => ESTree.ImportDeclaration;
|
|
65
|
+
/**
|
|
66
|
+
* Creates an export-all declaration for test fixtures.
|
|
67
|
+
* @returns The export-all declaration node.
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const node = createExportAll();
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
declare const createExportAll: () => ESTree.ExportAllDeclaration;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a named export-from declaration for test fixtures.
|
|
76
|
+
* @returns Export declaration node for tests.
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const node = createExportNamedFrom();
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
declare const createExportNamedFrom: () => ESTree.ExportNamedDeclaration;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a named export with a local declaration.
|
|
85
|
+
* @returns Export declaration node for tests.
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const node = createExportWithDeclaration();
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
declare const createExportWithDeclaration: () => ESTree.ExportNamedDeclaration;
|
|
92
|
+
/**
|
|
93
|
+
* Creates a named export without a source value.
|
|
94
|
+
* @param specifiers Export specifiers to include.
|
|
95
|
+
* @returns Export declaration node for tests.
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const node = createExportWithoutSource([createExportSpecifier("feature")]);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
declare const createExportWithoutSource: (specifiers?: ESTree.ExportSpecifier[]) => ESTree.ExportNamedDeclaration;
|
|
102
|
+
/**
|
|
103
|
+
* Creates a default export for an identifier.
|
|
104
|
+
* @param name Identifier to export.
|
|
105
|
+
* @returns Export default declaration node for tests.
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const node = createExportDefaultIdentifier("feature");
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
declare const createExportDefaultIdentifier: (name: string) => ESTree.ExportDefaultDeclaration;
|
|
112
|
+
/**
|
|
113
|
+
* Collects statements into a program body array.
|
|
114
|
+
* @param statements Statements to include in the program.
|
|
115
|
+
* @returns The program body array.
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const body = createBody(createImportDeclaration());
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
declare const createBody: (...statements: ESTree.Program["body"][number][]) => ESTree.Program["body"];
|
|
122
|
+
/**
|
|
123
|
+
* Writes a barrel file to the given path.
|
|
124
|
+
* @param filePath Path for the barrel file.
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* writeBarrel("/tmp/index.ts");
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
declare const writeBarrel: (filePath: string) => void;
|
|
131
|
+
/**
|
|
132
|
+
* Writes a feature file to the given path.
|
|
133
|
+
* @param filePath Path for the feature file.
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* writeFeature("/tmp/feature.ts");
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
declare const writeFeature: (filePath: string) => void;
|
|
140
|
+
export { createBody, createExportAll, createExportDefaultIdentifier, createExportNamedFrom, createExportSpecifier, createExportWithDeclaration, createExportWithoutSource, createImportDeclaration, createImportDefaultSpecifier, createImportSpecifier, createProgram, createRepoDirectory, writeBarrel, writeFeature, };
|
|
141
|
+
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKtC;;;;;;;;GAQG;AACH,QAAA,MAAM,mBAAmB,GAAI,MAAM,KAAK,GAAG,KAAK,KAAG,MAIlD,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAG,GAAG,CAAC,OAWxD,CAAC;AA8BH;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB,GACzB,WAAW,MAAM,EACjB,qBAAwB,KACvB,MAAM,CAAC,eAK2B,CAAC;AAEtC;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB,GACzB,WAAW,MAAM,EACjB,qBAAwB,KACvB,MAAM,CAAC,eAK2B,CAAC;AAEtC;;;;;;;;GAQG;AACH,QAAA,MAAM,4BAA4B,GAChC,WAAW,MAAM,KAChB,MAAM,CAAC,sBAIkC,CAAC;AAE7C;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,aAAY,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAM,KACtD,MAAM,CAAC,iBAM6B,CAAC;AAExC;;;;;;;GAOG;AACH,QAAA,MAAM,eAAe,QAAO,MAAM,CAAC,oBAMO,CAAC;AAE3C;;;;;;;GAOG;AACH,QAAA,MAAM,qBAAqB,QAAO,MAAM,CAAC,sBAMG,CAAC;AAE7C;;;;;;;GAOG;AACH,QAAA,MAAM,2BAA2B,QAAO,MAAM,CAAC,sBAa9C,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,yBAAyB,GAC7B,aAAY,MAAM,CAAC,eAAe,EAAO,KACxC,MAAM,CAAC,sBAKkC,CAAC;AAE7C;;;;;;;;GAQG;AACH,QAAA,MAAM,6BAA6B,GACjC,MAAM,MAAM,KACX,MAAM,CAAC,wBAIoC,CAAC;AAE/C;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GACd,GAAG,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,KAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAe,CAAC;AAExC;;;;;;;GAOG;AACH,QAAA,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,IAEvC,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,IAExC,CAAC;AAEF,OAAO,EACL,UAAU,EACV,eAAe,EACf,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,YAAY,GACb,CAAC"}
|