@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/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CodePerfect
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# @codeperfect/eslint-plugin
|
|
2
|
+
|
|
3
|
+
Custom ESLint rules for TypeScript repositories.
|
|
4
|
+
|
|
5
|
+
## What this package provides
|
|
6
|
+
|
|
7
|
+
`@codeperfect/eslint-plugin` ships a single ESLint plugin object, ready-to-use first-party presets, and direct exports for every package-owned rule. It does not compose third-party configs, load optional integrations, or provide a wrapper factory for `eslint.config.ts`.
|
|
8
|
+
|
|
9
|
+
The package scope is intentionally narrow:
|
|
10
|
+
|
|
11
|
+
- root preset exports for package-owned rules only
|
|
12
|
+
- package-owned custom rules
|
|
13
|
+
- rule documentation under `docs/rules/`
|
|
14
|
+
- a small registry used by tests and benchmarks
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -D @codeperfect/eslint-plugin eslint
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If you lint TypeScript files, also install and configure the parser or plugin stack that your repository already uses.
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
Import a preset if you want the plugin registration and matching rules together:
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { defineConfig } from "eslint/config";
|
|
30
|
+
import { all } from "@codeperfect/eslint-plugin";
|
|
31
|
+
|
|
32
|
+
export default defineConfig(all);
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
You can also use a narrower preset such as `architecture`, `core`, `docs`, `testing`, or `aaa`:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { defineConfig } from "eslint/config";
|
|
39
|
+
import { aaa, testing } from "@codeperfect/eslint-plugin";
|
|
40
|
+
|
|
41
|
+
export default defineConfig(testing, aaa);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Register the plugin directly in your local ESLint config when you want full manual control:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { defineConfig } from "eslint/config";
|
|
48
|
+
import { parser } from "typescript-eslint";
|
|
49
|
+
import codeperfectPlugin from "@codeperfect/eslint-plugin";
|
|
50
|
+
|
|
51
|
+
export default defineConfig({
|
|
52
|
+
files: ["**/*.ts"],
|
|
53
|
+
languageOptions: {
|
|
54
|
+
parser,
|
|
55
|
+
sourceType: "module",
|
|
56
|
+
},
|
|
57
|
+
plugins: {
|
|
58
|
+
codeperfect: codeperfectPlugin,
|
|
59
|
+
},
|
|
60
|
+
rules: {
|
|
61
|
+
"codeperfect/prefer-interface-types": "error",
|
|
62
|
+
"codeperfect/require-example-language": "error",
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Exported surface
|
|
68
|
+
|
|
69
|
+
The root package exports:
|
|
70
|
+
|
|
71
|
+
- the default plugin object
|
|
72
|
+
- the named `codeperfectPlugin` export
|
|
73
|
+
- the named preset exports: `all`, `architecture`, `core`, `docs`, `testing`, and `aaa`
|
|
74
|
+
- the `customRules` registry
|
|
75
|
+
- each rule module as a named export
|
|
76
|
+
|
|
77
|
+
Example:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import codeperfectPlugin, {
|
|
81
|
+
all,
|
|
82
|
+
customRules,
|
|
83
|
+
preferInterfaceTypesRule,
|
|
84
|
+
} from "@codeperfect/eslint-plugin";
|
|
85
|
+
|
|
86
|
+
void codeperfectPlugin;
|
|
87
|
+
void all;
|
|
88
|
+
void customRules;
|
|
89
|
+
void preferInterfaceTypesRule;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Package-owned rules
|
|
93
|
+
|
|
94
|
+
- `codeperfect/assert-actual-expected-names`
|
|
95
|
+
- `codeperfect/barrel-files-exports-only`
|
|
96
|
+
- `codeperfect/consistent-barrel-files`
|
|
97
|
+
- `codeperfect/enforce-aaa-phase-purity`
|
|
98
|
+
- `codeperfect/enforce-aaa-structure`
|
|
99
|
+
- `codeperfect/no-interface-member-docs`
|
|
100
|
+
- `codeperfect/no-reexports-outside-barrels`
|
|
101
|
+
- `codeperfect/prefer-interface-types`
|
|
102
|
+
- `codeperfect/prefer-vi-mocked-import`
|
|
103
|
+
- `codeperfect/require-aaa-sections`
|
|
104
|
+
- `codeperfect/require-act-result-capture`
|
|
105
|
+
- `codeperfect/require-example-language`
|
|
106
|
+
- `codeperfect/require-test-companion`
|
|
107
|
+
- `codeperfect/single-act-statement`
|
|
108
|
+
- `codeperfect/single-line-jsdoc`
|
|
109
|
+
|
|
110
|
+
Rule documentation lives in `docs/rules/` and each rule metadata entry points at the matching page.
|
|
111
|
+
|
|
112
|
+
## Internal layout
|
|
113
|
+
|
|
114
|
+
- `src/rules/` is the shared entrypoint for exported rule modules.
|
|
115
|
+
- `src/architecture/`, `src/core/`, `src/docs/`, and `src/testing/` own the concrete rule implementations.
|
|
116
|
+
- `src/custom-rules.ts` is the registry used by tests and benchmarks.
|
|
117
|
+
|
|
118
|
+
## Validation
|
|
119
|
+
|
|
120
|
+
When changing this package:
|
|
121
|
+
|
|
122
|
+
- run `npm run validate`
|
|
123
|
+
- run `npm run validate` a second time to confirm deterministic results
|
|
124
|
+
- keep the README and rule documentation aligned with the exported surface
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/benchmark-rules.ts","../src/codeperfect-plugin.ts","../src/custom-rule-documentation.ts","../src/custom-rules.ts","../src/index.ts","../src/presets.ts","../src/architecture/index.ts","../src/architecture/consistent-barrel-files/consistent-barrel-files-listeners.ts","../src/architecture/consistent-barrel-files/consistent-barrel-files-options.ts","../src/architecture/consistent-barrel-files/exports-only-rule-test-utilities.ts","../src/architecture/consistent-barrel-files/exports-only-rule.ts","../src/architecture/consistent-barrel-files/index.ts","../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.ts","../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.ts","../src/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.ts","../src/architecture/consistent-barrel-files/rule.ts","../src/architecture/consistent-barrel-files/test-helpers.ts","../src/architecture/consistent-barrel-files/types.ts","../src/core/index.ts","../src/core/no-multiple-declarators/index.ts","../src/core/no-multiple-declarators/rule.ts","../src/core/prefer-interface-types/index.ts","../src/core/prefer-interface-types/rule.ts","../src/core/prefer-interface-types/test-helpers.ts","../src/docs/index.ts","../src/docs/test-helpers.ts","../src/docs/no-interface-member-docs/comment-utilities-test-helpers.ts","../src/docs/no-interface-member-docs/comment-utilities.ts","../src/docs/no-interface-member-docs/index.ts","../src/docs/no-interface-member-docs/parameter-tags.ts","../src/docs/no-interface-member-docs/parameter-utilities.ts","../src/docs/no-interface-member-docs/rule.ts","../src/docs/no-interface-member-docs/test-helpers.ts","../src/docs/no-interface-member-docs/types.ts","../src/docs/require-example-language/empty-fence-fixes.ts","../src/docs/require-example-language/example-utilities.ts","../src/docs/require-example-language/examples.ts","../src/docs/require-example-language/fixes.ts","../src/docs/require-example-language/index.ts","../src/docs/require-example-language/reporting.ts","../src/docs/require-example-language/rule.ts","../src/docs/require-example-language/types.ts","../src/docs/single-line-jsdoc/index.ts","../src/docs/single-line-jsdoc/rule.ts","../src/docs/single-line-jsdoc/single-line-jsdoc-content.ts","../src/docs/single-line-jsdoc/single-line-jsdoc-utilities.ts","../src/rules/index.ts","../src/testing/index.ts","../src/testing/aaa/analyzer.ts","../src/testing/aaa/index.ts","../src/testing/aaa/types.ts","../src/testing/assert-actual-expected-names/index.ts","../src/testing/assert-actual-expected-names/rule.ts","../src/testing/enforce-aaa-phase-purity/index.ts","../src/testing/enforce-aaa-phase-purity/rule.ts","../src/testing/enforce-aaa-structure/index.ts","../src/testing/enforce-aaa-structure/rule.ts","../src/testing/prefer-vi-mocked-import/fix.ts","../src/testing/prefer-vi-mocked-import/index.ts","../src/testing/prefer-vi-mocked-import/match-bindings.ts","../src/testing/prefer-vi-mocked-import/match-declarations.ts","../src/testing/prefer-vi-mocked-import/match-helpers.ts","../src/testing/prefer-vi-mocked-import/match-imports.ts","../src/testing/prefer-vi-mocked-import/match-rewrites.ts","../src/testing/prefer-vi-mocked-import/match-walk.ts","../src/testing/prefer-vi-mocked-import/match.ts","../src/testing/prefer-vi-mocked-import/rule.ts","../src/testing/prefer-vi-mocked-import/types.ts","../src/testing/require-aaa-sections/index.ts","../src/testing/require-aaa-sections/rule.ts","../src/testing/require-act-result-capture/index.ts","../src/testing/require-act-result-capture/rule.ts","../src/testing/require-test-companion/index.ts","../src/testing/require-test-companion/require-test-companion-listeners.ts","../src/testing/require-test-companion/require-test-companion-options.ts","../src/testing/require-test-companion/require-test-companion-test-helpers.ts","../src/testing/require-test-companion/require-test-companion-utilities.ts","../src/testing/require-test-companion/rule.ts","../src/testing/require-test-companion/types.ts","../src/testing/single-act-statement/index.ts","../src/testing/single-act-statement/rule.ts","../conventional-changelog-conventionalcommits.d.ts","../eslint-plugin-jasmine.d.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Rule } from "eslint";
|
|
2
|
+
import type { ConsistentBarrelFilesState } from "./consistent-barrel-files-options";
|
|
3
|
+
/**
|
|
4
|
+
* Builds a listener for a specific file.
|
|
5
|
+
* @param context Rule execution context.
|
|
6
|
+
* @param filename Absolute filename.
|
|
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
|
+
declare const buildListenerForFile: (context: Rule.RuleContext, filename: string, options: ConsistentBarrelFilesState) => Rule.RuleListener;
|
|
15
|
+
export { buildListenerForFile };
|
|
16
|
+
//# sourceMappingURL=consistent-barrel-files-listeners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consistent-barrel-files-listeners.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/consistent-barrel-files-listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AA6IpF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,IAAI,CAAC,WAAW,EACzB,UAAU,MAAM,EAChB,SAAS,0BAA0B,KAClC,IAAI,CAAC,YAcP,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { shouldLintFile } from "./consistent-barrel-files-options";
|
|
4
|
+
/** Cache to avoid repeated directory scans. */
|
|
5
|
+
const directoryCache = new Map();
|
|
6
|
+
/** Tracks cache keys already reported as missing barrels. */
|
|
7
|
+
const reportedMissing = new Set();
|
|
8
|
+
/**
|
|
9
|
+
* Checks hasBarrelFile.
|
|
10
|
+
* @param directory Input directory value.
|
|
11
|
+
* @param names Input names value.
|
|
12
|
+
* @returns Return value output.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* hasBarrelFile();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const hasBarrelFile = (directory, names) => names.some((name) => fs.existsSync(path.join(directory, name)));
|
|
19
|
+
/**
|
|
20
|
+
* Gets cached barrel presence or computes it.
|
|
21
|
+
* @param cacheKey Cache key for the lookup.
|
|
22
|
+
* @param directory Directory to scan.
|
|
23
|
+
* @param names Allowed barrel filenames.
|
|
24
|
+
* @returns True when a barrel file exists.
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const exists = getCachedBarrelPresence(key, directory, names);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
const getCachedBarrelPresence = (cacheKey, directory, names) => {
|
|
31
|
+
const cached = directoryCache.get(cacheKey);
|
|
32
|
+
if (cached !== void 0) {
|
|
33
|
+
return cached;
|
|
34
|
+
}
|
|
35
|
+
const hasBarrel = hasBarrelFile(directory, names);
|
|
36
|
+
directoryCache.set(cacheKey, hasBarrel);
|
|
37
|
+
return hasBarrel;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Builds a listener for a directory when enforcement is enabled.
|
|
41
|
+
* @param context Rule execution context.
|
|
42
|
+
* @param directory Directory to inspect.
|
|
43
|
+
* @param options Normalized rule options.
|
|
44
|
+
* @returns The rule listener for the directory.
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const listener = buildListenerForDirectory(context, dir, state);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
const buildListenerForDirectory = (context, directory, options) => {
|
|
51
|
+
const cacheKey = `${directory}|${options.namesKey}`;
|
|
52
|
+
if (getCachedBarrelPresence(cacheKey, directory, options.names)) {
|
|
53
|
+
return {};
|
|
54
|
+
}
|
|
55
|
+
return buildMissingListener(context, options.names, cacheKey);
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Builds a listener for forbidden barrel files.
|
|
59
|
+
* @param context Rule execution context.
|
|
60
|
+
* @param basename Filename being checked.
|
|
61
|
+
* @param namesSet Allowed barrel names.
|
|
62
|
+
* @returns The rule listener for forbidden barrels.
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const listener = buildForbiddenListener(context, basename, names);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
const buildForbiddenListener = (context, basename, namesSet) => {
|
|
69
|
+
if (!namesSet.has(basename)) {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
Program(node) {
|
|
74
|
+
context.report({
|
|
75
|
+
data: { name: basename },
|
|
76
|
+
messageId: "forbiddenBarrel",
|
|
77
|
+
node,
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Builds a listener that reports missing barrel files.
|
|
84
|
+
* @param context Rule execution context.
|
|
85
|
+
* @param names Allowed barrel names.
|
|
86
|
+
* @param cacheKey Cache key for the directory.
|
|
87
|
+
* @returns The rule listener for missing barrels.
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const listener = buildMissingListener(context, names, cacheKey);
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
const buildMissingListener = (context, names, cacheKey) => {
|
|
94
|
+
if (reportedMissing.has(cacheKey)) {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
reportedMissing.add(cacheKey);
|
|
98
|
+
return {
|
|
99
|
+
Program(node) {
|
|
100
|
+
context.report({
|
|
101
|
+
data: { names: names.join(", ") },
|
|
102
|
+
messageId: "missingBarrel",
|
|
103
|
+
node,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Builds a listener for a specific file.
|
|
110
|
+
* @param context Rule execution context.
|
|
111
|
+
* @param filename Absolute filename.
|
|
112
|
+
* @param options Normalized rule options.
|
|
113
|
+
* @returns The rule listener for the file.
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const listener = buildListenerForFile(context, filename, state);
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
const buildListenerForFile = (context, filename, options) => {
|
|
120
|
+
const { enforce, folders, names, namesSet } = options;
|
|
121
|
+
if (!shouldLintFile(filename, folders, names)) {
|
|
122
|
+
return {};
|
|
123
|
+
}
|
|
124
|
+
const basename = path.basename(filename);
|
|
125
|
+
if (!enforce) {
|
|
126
|
+
return buildForbiddenListener(context, basename, namesSet);
|
|
127
|
+
}
|
|
128
|
+
return buildListenerForDirectory(context, path.dirname(filename), options);
|
|
129
|
+
};
|
|
130
|
+
export { buildListenerForFile };
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2lzdGVudC1iYXJyZWwtZmlsZXMtbGlzdGVuZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy1saXN0ZW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsK0NBQStDO0FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0FBRWxELDZEQUE2RDtBQUM3RCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRTFDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBaUIsRUFBRSxLQUFlLEVBQVcsRUFBRSxDQUNwRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVsRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixRQUFnQixFQUNoQixTQUFpQixFQUNqQixLQUFlLEVBQ04sRUFBRTtJQUNYLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUMsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVsRCxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUV4QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxPQUF5QixFQUN6QixTQUFpQixFQUNqQixPQUFtQyxFQUNoQixFQUFFO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsU0FBUyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVwRCxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixPQUF5QixFQUN6QixRQUFnQixFQUNoQixRQUE2QixFQUNWLEVBQUU7SUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLElBQUk7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNiLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ3hCLFNBQVMsRUFBRSxpQkFBaUI7Z0JBQzVCLElBQUk7YUFDTCxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLE9BQXlCLEVBQ3pCLEtBQWUsRUFDZixRQUFnQixFQUNHLEVBQUU7SUFDckIsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5QixPQUFPO1FBQ0wsT0FBTyxDQUFDLElBQUk7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNiLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxTQUFTLEVBQUUsZUFBZTtnQkFDMUIsSUFBSTthQUNMLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FDM0IsT0FBeUIsRUFDekIsUUFBZ0IsRUFDaEIsT0FBbUMsRUFDaEIsRUFBRTtJQUNyQixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXRELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHR5cGUgeyBDb25zaXN0ZW50QmFycmVsRmlsZXNTdGF0ZSB9IGZyb20gXCIuL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzLW9wdGlvbnNcIjtcblxuaW1wb3J0IHsgc2hvdWxkTGludEZpbGUgfSBmcm9tIFwiLi9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy1vcHRpb25zXCI7XG5cbi8qKiBDYWNoZSB0byBhdm9pZCByZXBlYXRlZCBkaXJlY3Rvcnkgc2NhbnMuICovXG5jb25zdCBkaXJlY3RvcnlDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuXG4vKiogVHJhY2tzIGNhY2hlIGtleXMgYWxyZWFkeSByZXBvcnRlZCBhcyBtaXNzaW5nIGJhcnJlbHMuICovXG5jb25zdCByZXBvcnRlZE1pc3NpbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBDaGVja3MgaGFzQmFycmVsRmlsZS5cbiAqIEBwYXJhbSBkaXJlY3RvcnkgSW5wdXQgZGlyZWN0b3J5IHZhbHVlLlxuICogQHBhcmFtIG5hbWVzIElucHV0IG5hbWVzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBoYXNCYXJyZWxGaWxlKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzQmFycmVsRmlsZSA9IChkaXJlY3Rvcnk6IHN0cmluZywgbmFtZXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PlxuICBuYW1lcy5zb21lKChuYW1lKSA9PiBmcy5leGlzdHNTeW5jKHBhdGguam9pbihkaXJlY3RvcnksIG5hbWUpKSk7XG5cbi8qKlxuICogR2V0cyBjYWNoZWQgYmFycmVsIHByZXNlbmNlIG9yIGNvbXB1dGVzIGl0LlxuICogQHBhcmFtIGNhY2hlS2V5IENhY2hlIGtleSBmb3IgdGhlIGxvb2t1cC5cbiAqIEBwYXJhbSBkaXJlY3RvcnkgRGlyZWN0b3J5IHRvIHNjYW4uXG4gKiBAcGFyYW0gbmFtZXMgQWxsb3dlZCBiYXJyZWwgZmlsZW5hbWVzLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIGEgYmFycmVsIGZpbGUgZXhpc3RzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGV4aXN0cyA9IGdldENhY2hlZEJhcnJlbFByZXNlbmNlKGtleSwgZGlyZWN0b3J5LCBuYW1lcyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q2FjaGVkQmFycmVsUHJlc2VuY2UgPSAoXG4gIGNhY2hlS2V5OiBzdHJpbmcsXG4gIGRpcmVjdG9yeTogc3RyaW5nLFxuICBuYW1lczogc3RyaW5nW10sXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FjaGVkID0gZGlyZWN0b3J5Q2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuICBpZiAoY2FjaGVkICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3QgaGFzQmFycmVsID0gaGFzQmFycmVsRmlsZShkaXJlY3RvcnksIG5hbWVzKTtcblxuICBkaXJlY3RvcnlDYWNoZS5zZXQoY2FjaGVLZXksIGhhc0JhcnJlbCk7XG5cbiAgcmV0dXJuIGhhc0JhcnJlbDtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgbGlzdGVuZXIgZm9yIGEgZGlyZWN0b3J5IHdoZW4gZW5mb3JjZW1lbnQgaXMgZW5hYmxlZC5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZGlyZWN0b3J5IERpcmVjdG9yeSB0byBpbnNwZWN0LlxuICogQHBhcmFtIG9wdGlvbnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcnVsZSBsaXN0ZW5lciBmb3IgdGhlIGRpcmVjdG9yeS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ZW5lciA9IGJ1aWxkTGlzdGVuZXJGb3JEaXJlY3RvcnkoY29udGV4dCwgZGlyLCBzdGF0ZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRMaXN0ZW5lckZvckRpcmVjdG9yeSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZGlyZWN0b3J5OiBzdHJpbmcsXG4gIG9wdGlvbnM6IENvbnNpc3RlbnRCYXJyZWxGaWxlc1N0YXRlLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBjb25zdCBjYWNoZUtleSA9IGAke2RpcmVjdG9yeX18JHtvcHRpb25zLm5hbWVzS2V5fWA7XG5cbiAgaWYgKGdldENhY2hlZEJhcnJlbFByZXNlbmNlKGNhY2hlS2V5LCBkaXJlY3RvcnksIG9wdGlvbnMubmFtZXMpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkTWlzc2luZ0xpc3RlbmVyKGNvbnRleHQsIG9wdGlvbnMubmFtZXMsIGNhY2hlS2V5KTtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgbGlzdGVuZXIgZm9yIGZvcmJpZGRlbiBiYXJyZWwgZmlsZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIGJhc2VuYW1lIEZpbGVuYW1lIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gbmFtZXNTZXQgQWxsb3dlZCBiYXJyZWwgbmFtZXMuXG4gKiBAcmV0dXJucyBUaGUgcnVsZSBsaXN0ZW5lciBmb3IgZm9yYmlkZGVuIGJhcnJlbHMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdGVuZXIgPSBidWlsZEZvcmJpZGRlbkxpc3RlbmVyKGNvbnRleHQsIGJhc2VuYW1lLCBuYW1lcyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRGb3JiaWRkZW5MaXN0ZW5lciA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgYmFzZW5hbWU6IHN0cmluZyxcbiAgbmFtZXNTZXQ6IFJlYWRvbmx5U2V0PHN0cmluZz4sXG4pOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiB7XG4gIGlmICghbmFtZXNTZXQuaGFzKGJhc2VuYW1lKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUHJvZ3JhbShub2RlKTogdm9pZCB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIGRhdGE6IHsgbmFtZTogYmFzZW5hbWUgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcImZvcmJpZGRlbkJhcnJlbFwiLFxuICAgICAgICBub2RlLFxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgbGlzdGVuZXIgdGhhdCByZXBvcnRzIG1pc3NpbmcgYmFycmVsIGZpbGVzLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBuYW1lcyBBbGxvd2VkIGJhcnJlbCBuYW1lcy5cbiAqIEBwYXJhbSBjYWNoZUtleSBDYWNoZSBrZXkgZm9yIHRoZSBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBUaGUgcnVsZSBsaXN0ZW5lciBmb3IgbWlzc2luZyBiYXJyZWxzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3RlbmVyID0gYnVpbGRNaXNzaW5nTGlzdGVuZXIoY29udGV4dCwgbmFtZXMsIGNhY2hlS2V5KTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZE1pc3NpbmdMaXN0ZW5lciA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbmFtZXM6IHN0cmluZ1tdLFxuICBjYWNoZUtleTogc3RyaW5nLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBpZiAocmVwb3J0ZWRNaXNzaW5nLmhhcyhjYWNoZUtleSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXBvcnRlZE1pc3NpbmcuYWRkKGNhY2hlS2V5KTtcblxuICByZXR1cm4ge1xuICAgIFByb2dyYW0obm9kZSk6IHZvaWQge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IG5hbWVzOiBuYW1lcy5qb2luKFwiLCBcIikgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdCYXJyZWxcIixcbiAgICAgICAgbm9kZSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIGxpc3RlbmVyIGZvciBhIHNwZWNpZmljIGZpbGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIG9wdGlvbnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcnVsZSBsaXN0ZW5lciBmb3IgdGhlIGZpbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdGVuZXIgPSBidWlsZExpc3RlbmVyRm9yRmlsZShjb250ZXh0LCBmaWxlbmFtZSwgc3RhdGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkTGlzdGVuZXJGb3JGaWxlID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBDb25zaXN0ZW50QmFycmVsRmlsZXNTdGF0ZSxcbik6IFJ1bGUuUnVsZUxpc3RlbmVyID0+IHtcbiAgY29uc3QgeyBlbmZvcmNlLCBmb2xkZXJzLCBuYW1lcywgbmFtZXNTZXQgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKCFzaG91bGRMaW50RmlsZShmaWxlbmFtZSwgZm9sZGVycywgbmFtZXMpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVuYW1lKTtcblxuICBpZiAoIWVuZm9yY2UpIHtcbiAgICByZXR1cm4gYnVpbGRGb3JiaWRkZW5MaXN0ZW5lcihjb250ZXh0LCBiYXNlbmFtZSwgbmFtZXNTZXQpO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkTGlzdGVuZXJGb3JEaXJlY3RvcnkoY29udGV4dCwgcGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgeyBidWlsZExpc3RlbmVyRm9yRmlsZSB9O1xuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Type definition for rule data. */
|
|
2
|
+
interface ConsistentBarrelFilesState {
|
|
3
|
+
/** Enforce field value. */
|
|
4
|
+
enforce: boolean;
|
|
5
|
+
/** Folders field value. */
|
|
6
|
+
folders: string[];
|
|
7
|
+
/** Names field value. */
|
|
8
|
+
names: string[];
|
|
9
|
+
/** NamesKey field value. */
|
|
10
|
+
namesKey: string;
|
|
11
|
+
/** NamesSet field value. */
|
|
12
|
+
namesSet: Set<string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds normalized rule options from raw input.
|
|
16
|
+
* @param options Raw rule options array.
|
|
17
|
+
* @returns Normalized rule options.
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const state = getOptions([{}]);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
declare const getOptions: (options: readonly unknown[]) => ConsistentBarrelFilesState;
|
|
24
|
+
/**
|
|
25
|
+
* Checks isLintableFilename.
|
|
26
|
+
* @param filename Input filename value.
|
|
27
|
+
* @returns Return value output.
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* isLintableFilename();
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
declare const isLintableFilename: (filename: string) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Determines whether a file should be checked.
|
|
36
|
+
* @param filename Absolute filename.
|
|
37
|
+
* @param folders Folder glob patterns.
|
|
38
|
+
* @param names Allowed barrel names.
|
|
39
|
+
* @returns True when the file should be linted.
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const ok = shouldLintFile(filename, folders, names);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare const shouldLintFile: (filename: string, folders: string[], names: string[]) => boolean;
|
|
46
|
+
export { getOptions, isLintableFilename, shouldLintFile };
|
|
47
|
+
export type { ConsistentBarrelFilesState };
|
|
48
|
+
//# sourceMappingURL=consistent-barrel-files-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consistent-barrel-files-options.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/consistent-barrel-files-options.ts"],"names":[],"mappings":"AAWA,qCAAqC;AACrC,UAAU,0BAA0B;IAClC,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,yBAAyB;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,4BAA4B;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAoDD;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GACd,SAAS,SAAS,OAAO,EAAE,KAC1B,0BAQF,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OACG,CAAC;AAoCnD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,cAAc,GAClB,UAAU,MAAM,EAChB,SAAS,MAAM,EAAE,EACjB,OAAO,MAAM,EAAE,KACd,OAUF,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;AAC1D,YAAY,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
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 barrel file checks. */
|
|
6
|
+
const DEFAULT_FOLDER_GLOBS = ["src/**"];
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes normalizeNames.
|
|
9
|
+
* @param names Input names value.
|
|
10
|
+
* @returns Return value output.
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* normalizeNames();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const normalizeNames = (names) => {
|
|
17
|
+
if (Array.isArray(names)) {
|
|
18
|
+
return names
|
|
19
|
+
.filter((name) => typeof name === "string")
|
|
20
|
+
.map((name) => name.trim())
|
|
21
|
+
.filter((name) => name.length > 0);
|
|
22
|
+
}
|
|
23
|
+
if (typeof names === "string") {
|
|
24
|
+
const trimmed = names.trim();
|
|
25
|
+
return trimmed.length === 0 ? [] : [trimmed];
|
|
26
|
+
}
|
|
27
|
+
return [...DEFAULT_BARREL_NAMES];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Normalizes normalizeFolders.
|
|
31
|
+
* @param folders Input folders value.
|
|
32
|
+
* @returns Return value output.
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* normalizeFolders();
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
const normalizeFolders = (folders) => {
|
|
39
|
+
if (Array.isArray(folders)) {
|
|
40
|
+
return folders
|
|
41
|
+
.filter((folder) => typeof folder === "string")
|
|
42
|
+
.map((folder) => folder.trim())
|
|
43
|
+
.filter((folder) => folder.length > 0);
|
|
44
|
+
}
|
|
45
|
+
if (typeof folders === "string") {
|
|
46
|
+
const trimmed = folders.trim();
|
|
47
|
+
return trimmed.length === 0 ? [] : [trimmed];
|
|
48
|
+
}
|
|
49
|
+
return [...DEFAULT_FOLDER_GLOBS];
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Builds normalized rule options from raw input.
|
|
53
|
+
* @param options Raw rule options array.
|
|
54
|
+
* @returns Normalized rule options.
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const state = getOptions([{}]);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
const getOptions = (options) => {
|
|
61
|
+
const rawOptions = options[0];
|
|
62
|
+
const enforce = rawOptions?.enforce ?? true;
|
|
63
|
+
const folders = normalizeFolders(rawOptions?.folders);
|
|
64
|
+
const names = normalizeNames(rawOptions?.names);
|
|
65
|
+
const namesKey = names.toSorted().join("|");
|
|
66
|
+
return { enforce, folders, names, namesKey, namesSet: new Set(names) };
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Checks isLintableFilename.
|
|
70
|
+
* @param filename Input filename value.
|
|
71
|
+
* @returns Return value output.
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* isLintableFilename();
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
const isLintableFilename = (filename) => filename.length > 0 && path.isAbsolute(filename);
|
|
78
|
+
/**
|
|
79
|
+
* Normalizes normalizeRelativePath.
|
|
80
|
+
* @param filename Input filename value.
|
|
81
|
+
* @returns Return value output.
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* normalizeRelativePath();
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
const normalizeRelativePath = (filename) => path.relative(process.cwd(), filename).split(path.sep).join("/");
|
|
88
|
+
/**
|
|
89
|
+
* Checks isPathInFolders.
|
|
90
|
+
* @param filename Input filename value.
|
|
91
|
+
* @param folders Input folders value.
|
|
92
|
+
* @returns Return value output.
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* isPathInFolders();
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
const isPathInFolders = (filename, folders) => {
|
|
99
|
+
const relativePath = normalizeRelativePath(filename);
|
|
100
|
+
if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return folders.some((folder) => minimatch(relativePath, folder, { dot: true }));
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Determines whether a file should be checked.
|
|
107
|
+
* @param filename Absolute filename.
|
|
108
|
+
* @param folders Folder glob patterns.
|
|
109
|
+
* @param names Allowed barrel names.
|
|
110
|
+
* @returns True when the file should be linted.
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const ok = shouldLintFile(filename, folders, names);
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
const shouldLintFile = (filename, folders, names) => {
|
|
117
|
+
if (folders.length === 0) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
if (!isPathInFolders(filename, folders)) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return names.length > 0;
|
|
124
|
+
};
|
|
125
|
+
export { getOptions, isLintableFilename, shouldLintFile };
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc2lzdGVudC1iYXJyZWwtZmlsZXMtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXRlY3R1cmUvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3Qix5Q0FBeUM7QUFDekMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRWhGLG1EQUFtRDtBQUNuRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFvQnhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFjLEVBQVksRUFBRTtJQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUs7YUFDVCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUM7YUFDMUQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDMUIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBZ0IsRUFBWSxFQUFFO0lBQ3RELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sT0FBTzthQUNYLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBb0IsRUFBRSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQzthQUNoRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM5QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQ2pCLE9BQTJCLEVBQ0MsRUFBRTtJQUM5QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUE2QyxDQUFDO0lBQzFFLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFXLEVBQUUsQ0FDdkQsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVuRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUUsQ0FDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE9BQWlCLEVBQVcsRUFBRTtJQUN2RSxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVyRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdCLFNBQVMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsUUFBZ0IsRUFDaEIsT0FBaUIsRUFDakIsS0FBZSxFQUNOLEVBQUU7SUFDWCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtaW5pbWF0Y2ggfSBmcm9tIFwibWluaW1hdGNoXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29uc2lzdGVudEJhcnJlbEZpbGVzT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBEZWZhdWx0IHZhbHVlIHVzZWQgYnkgdGhpcyBtb2R1bGUuICovXG5jb25zdCBERUZBVUxUX0JBUlJFTF9OQU1FUyA9IFtcImluZGV4LnRzXCIsIFwiaW5kZXgudHN4XCIsIFwiaW5kZXguanNcIiwgXCJpbmRleC5qc3hcIl07XG5cbi8qKiBEZWZhdWx0IGZvbGRlciBnbG9icyBmb3IgYmFycmVsIGZpbGUgY2hlY2tzLiAqL1xuY29uc3QgREVGQVVMVF9GT0xERVJfR0xPQlMgPSBbXCJzcmMvKipcIl07XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBDb25zaXN0ZW50QmFycmVsRmlsZXNTdGF0ZSB7XG4gIC8qKiBFbmZvcmNlIGZpZWxkIHZhbHVlLiAqL1xuICBlbmZvcmNlOiBib29sZWFuO1xuXG4gIC8qKiBGb2xkZXJzIGZpZWxkIHZhbHVlLiAqL1xuICBmb2xkZXJzOiBzdHJpbmdbXTtcblxuICAvKiogTmFtZXMgZmllbGQgdmFsdWUuICovXG4gIG5hbWVzOiBzdHJpbmdbXTtcblxuICAvKiogTmFtZXNLZXkgZmllbGQgdmFsdWUuICovXG4gIG5hbWVzS2V5OiBzdHJpbmc7XG5cbiAgLyoqIE5hbWVzU2V0IGZpZWxkIHZhbHVlLiAqL1xuICBuYW1lc1NldDogU2V0PHN0cmluZz47XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBub3JtYWxpemVOYW1lcy5cbiAqIEBwYXJhbSBuYW1lcyBJbnB1dCBuYW1lcyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbm9ybWFsaXplTmFtZXMoKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVOYW1lcyA9IChuYW1lczogdW5rbm93bik6IHN0cmluZ1tdID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobmFtZXMpKSB7XG4gICAgcmV0dXJuIG5hbWVzXG4gICAgICAuZmlsdGVyKChuYW1lKTogbmFtZSBpcyBzdHJpbmcgPT4gdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChuYW1lKSA9PiBuYW1lLnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKG5hbWUpID0+IG5hbWUubGVuZ3RoID4gMCk7XG4gIH1cblxuICBpZiAodHlwZW9mIG5hbWVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IG5hbWVzLnRyaW0oKTtcbiAgICByZXR1cm4gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBbXSA6IFt0cmltbWVkXTtcbiAgfVxuXG4gIHJldHVybiBbLi4uREVGQVVMVF9CQVJSRUxfTkFNRVNdO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIG5vcm1hbGl6ZUZvbGRlcnMuXG4gKiBAcGFyYW0gZm9sZGVycyBJbnB1dCBmb2xkZXJzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3JtYWxpemVGb2xkZXJzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplRm9sZGVycyA9IChmb2xkZXJzOiB1bmtub3duKTogc3RyaW5nW10gPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShmb2xkZXJzKSkge1xuICAgIHJldHVybiBmb2xkZXJzXG4gICAgICAuZmlsdGVyKChmb2xkZXIpOiBmb2xkZXIgaXMgc3RyaW5nID0+IHR5cGVvZiBmb2xkZXIgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChmb2xkZXIpID0+IGZvbGRlci50cmltKCkpXG4gICAgICAuZmlsdGVyKChmb2xkZXIpID0+IGZvbGRlci5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZm9sZGVycyA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBmb2xkZXJzLnRyaW0oKTtcbiAgICByZXR1cm4gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBbXSA6IFt0cmltbWVkXTtcbiAgfVxuXG4gIHJldHVybiBbLi4uREVGQVVMVF9GT0xERVJfR0xPQlNdO1xufTtcblxuLyoqXG4gKiBCdWlsZHMgbm9ybWFsaXplZCBydWxlIG9wdGlvbnMgZnJvbSByYXcgaW5wdXQuXG4gKiBAcGFyYW0gb3B0aW9ucyBSYXcgcnVsZSBvcHRpb25zIGFycmF5LlxuICogQHJldHVybnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc3RhdGUgPSBnZXRPcHRpb25zKFt7fV0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE9wdGlvbnMgPSAoXG4gIG9wdGlvbnM6IHJlYWRvbmx5IHVua25vd25bXSxcbik6IENvbnNpc3RlbnRCYXJyZWxGaWxlc1N0YXRlID0+IHtcbiAgY29uc3QgcmF3T3B0aW9ucyA9IG9wdGlvbnNbMF0gYXMgQ29uc2lzdGVudEJhcnJlbEZpbGVzT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgZW5mb3JjZSA9IHJhd09wdGlvbnM/LmVuZm9yY2UgPz8gdHJ1ZTtcbiAgY29uc3QgZm9sZGVycyA9IG5vcm1hbGl6ZUZvbGRlcnMocmF3T3B0aW9ucz8uZm9sZGVycyk7XG4gIGNvbnN0IG5hbWVzID0gbm9ybWFsaXplTmFtZXMocmF3T3B0aW9ucz8ubmFtZXMpO1xuICBjb25zdCBuYW1lc0tleSA9IG5hbWVzLnRvU29ydGVkKCkuam9pbihcInxcIik7XG5cbiAgcmV0dXJuIHsgZW5mb3JjZSwgZm9sZGVycywgbmFtZXMsIG5hbWVzS2V5LCBuYW1lc1NldDogbmV3IFNldChuYW1lcykgfTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlzTGludGFibGVGaWxlbmFtZS5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaXNMaW50YWJsZUZpbGVuYW1lKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNMaW50YWJsZUZpbGVuYW1lID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIGZpbGVuYW1lLmxlbmd0aCA+IDAgJiYgcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIG5vcm1hbGl6ZVJlbGF0aXZlUGF0aC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbm9ybWFsaXplUmVsYXRpdmVQYXRoKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplUmVsYXRpdmVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgcGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlbmFtZSkuc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpO1xuXG4vKipcbiAqIENoZWNrcyBpc1BhdGhJbkZvbGRlcnMuXG4gKiBAcGFyYW0gZmlsZW5hbWUgSW5wdXQgZmlsZW5hbWUgdmFsdWUuXG4gKiBAcGFyYW0gZm9sZGVycyBJbnB1dCBmb2xkZXJzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc1BhdGhJbkZvbGRlcnMoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc1BhdGhJbkZvbGRlcnMgPSAoZmlsZW5hbWU6IHN0cmluZywgZm9sZGVyczogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gbm9ybWFsaXplUmVsYXRpdmVQYXRoKGZpbGVuYW1lKTtcblxuICBpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIuLlwiKSB8fCBwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmVQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBmb2xkZXJzLnNvbWUoKGZvbGRlcikgPT5cbiAgICBtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBmb2xkZXIsIHsgZG90OiB0cnVlIH0pLFxuICApO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIHNob3VsZCBiZSBjaGVja2VkLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lLlxuICogQHBhcmFtIGZvbGRlcnMgRm9sZGVyIGdsb2IgcGF0dGVybnMuXG4gKiBAcGFyYW0gbmFtZXMgQWxsb3dlZCBiYXJyZWwgbmFtZXMuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGUgc2hvdWxkIGJlIGxpbnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IHNob3VsZExpbnRGaWxlKGZpbGVuYW1lLCBmb2xkZXJzLCBuYW1lcyk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc2hvdWxkTGludEZpbGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIGZvbGRlcnM6IHN0cmluZ1tdLFxuICBuYW1lczogc3RyaW5nW10sXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKGZvbGRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFpc1BhdGhJbkZvbGRlcnMoZmlsZW5hbWUsIGZvbGRlcnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIG5hbWVzLmxlbmd0aCA+IDA7XG59O1xuXG5leHBvcnQgeyBnZXRPcHRpb25zLCBpc0xpbnRhYmxlRmlsZW5hbWUsIHNob3VsZExpbnRGaWxlIH07XG5leHBvcnQgdHlwZSB7IENvbnNpc3RlbnRCYXJyZWxGaWxlc1N0YXRlIH07XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type * as ESTree from "estree";
|
|
2
|
+
import type { BarrelFilesExportsOnlyOptions } 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
|
+
/** RunDefaultIndex field value. */
|
|
11
|
+
runDefaultIndex: (body: ESTree.Program["body"]) => RuleReport[];
|
|
12
|
+
/** RunTemporaryFeature field value. */
|
|
13
|
+
runTemporaryFeature: (body: ESTree.Program["body"], options?: BarrelFilesExportsOnlyOptions) => RuleReport[];
|
|
14
|
+
/** RunTemporaryIndex field value. */
|
|
15
|
+
runTemporaryIndex: (body: ESTree.Program["body"], options?: BarrelFilesExportsOnlyOptions) => 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("index.ts", createBody());
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
declare const runRule: (filename: string, body: ESTree.Program["body"], options?: BarrelFilesExportsOnlyOptions) => 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=exports-only-rule-test-utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-only-rule-test-utilities.d.ts","sourceRoot":"","sources":["../../../src/architecture/consistent-barrel-files/exports-only-rule-test-utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKtC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AA0B7D,qCAAqC;AACrC,UAAU,UAAU;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAiBD,qCAAqC;AACrC,UAAU,eAAe;IACvB,mCAAmC;IACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;IAEhE,uCAAuC;IACvC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,6BAA6B,KACpC,UAAU,EAAE,CAAC;IAElB,qCAAqC;IACrC,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,6BAA6B,KACpC,UAAU,EAAE,CAAC;CACnB;AAkCD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,OAAO,GACX,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,UAAU,6BAA6B,KACtC,UAAU,EAeZ,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,sBAAsB,MAAM,EAAE,KAC7B,eAmCF,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC"}
|