@codeperfect/eslint-config 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 +143 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/architecture/boundaries.d.ts +17 -0
- package/dist/architecture/boundaries.d.ts.map +1 -0
- package/dist/architecture/boundaries.js +69 -0
- package/dist/architecture/import-x.d.ts +12 -0
- package/dist/architecture/import-x.d.ts.map +1 -0
- package/dist/architecture/import-x.js +79 -0
- package/dist/architecture/index.d.ts +3 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +3 -0
- package/dist/codeperfect-eslint-config-1.0.0.tgz +0 -0
- package/dist/config-composition.d.ts +6 -0
- package/dist/config-composition.d.ts.map +1 -0
- package/dist/config-composition.js +37 -0
- package/dist/configs/index.d.ts +7 -0
- package/dist/configs/index.d.ts.map +1 -0
- package/dist/configs/index.js +7 -0
- package/dist/core/eslint.d.ts +12 -0
- package/dist/core/eslint.d.ts.map +1 -0
- package/dist/core/eslint.js +58 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/resolver.d.ts +11 -0
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/core/resolver.js +27 -0
- package/dist/core/typescript.d.ts +11 -0
- package/dist/core/typescript.d.ts.map +1 -0
- package/dist/core/typescript.js +63 -0
- package/dist/diagnostics.d.ts +43 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +74 -0
- package/dist/docs/comments.d.ts +11 -0
- package/dist/docs/comments.d.ts.map +1 -0
- package/dist/docs/comments.js +30 -0
- package/dist/docs/index.d.ts +3 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +3 -0
- package/dist/docs/jsdoc.d.ts +12 -0
- package/dist/docs/jsdoc.d.ts.map +1 -0
- package/dist/docs/jsdoc.js +77 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +2 -0
- package/dist/domain/rxjs-x.d.ts +11 -0
- package/dist/domain/rxjs-x.d.ts.map +1 -0
- package/dist/domain/rxjs-x.js +27 -0
- package/dist/index-spec-helpers.d.ts +44 -0
- package/dist/index-spec-helpers.d.ts.map +1 -0
- package/dist/index-spec-helpers.js +175 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/module-taxonomy.d.ts +63 -0
- package/dist/module-taxonomy.d.ts.map +1 -0
- package/dist/module-taxonomy.js +21 -0
- package/dist/plugin-loaders.d.ts +110 -0
- package/dist/plugin-loaders.d.ts.map +1 -0
- package/dist/plugin-loaders.js +110 -0
- package/dist/style/index.d.ts +5 -0
- package/dist/style/index.d.ts.map +1 -0
- package/dist/style/index.js +5 -0
- package/dist/style/perfectionist.d.ts +11 -0
- package/dist/style/perfectionist.d.ts.map +1 -0
- package/dist/style/perfectionist.js +17 -0
- package/dist/style/prettier.d.ts +11 -0
- package/dist/style/prettier.d.ts.map +1 -0
- package/dist/style/prettier.js +15 -0
- package/dist/style/stylistic.d.ts +11 -0
- package/dist/style/stylistic.d.ts.map +1 -0
- package/dist/style/stylistic.js +15 -0
- package/dist/style/unicorn.d.ts +11 -0
- package/dist/style/unicorn.d.ts.map +1 -0
- package/dist/style/unicorn.js +15 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/jasmine.d.ts +11 -0
- package/dist/testing/jasmine.d.ts.map +1 -0
- package/dist/testing/jasmine.js +25 -0
- package/dist/testing/jest.d.ts +11 -0
- package/dist/testing/jest.d.ts.map +1 -0
- package/dist/testing/jest.js +27 -0
- package/dist/testing/playwright.d.ts +12 -0
- package/dist/testing/playwright.d.ts.map +1 -0
- package/dist/testing/playwright.js +29 -0
- package/dist/testing/vitest.d.ts +11 -0
- package/dist/testing/vitest.d.ts.map +1 -0
- package/dist/testing/vitest.js +32 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/utilities.d.ts +52 -0
- package/dist/utilities.d.ts.map +1 -0
- package/dist/utilities.js +125 -0
- package/package.json +143 -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,143 @@
|
|
|
1
|
+
# @codeperfect/eslint-config
|
|
2
|
+
|
|
3
|
+
Shareable flat ESLint config for TypeScript repositories.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
`@codeperfect/eslint-config` exports one async factory, `config()`, that composes documented flat-config modules in a fixed order.
|
|
8
|
+
|
|
9
|
+
The package owns config composition only. It does not publish package-owned ESLint rules or an internal plugin namespace.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
Install the package and required baseline runtime:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -D @codeperfect/eslint-config eslint typescript typescript-eslint @eslint/js jiti
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Optional modules degrade to `[]` when their backing integration is unavailable. Consumers should only add extra packages when their package manager omits optional dependencies or when a repository deliberately manages those integrations itself.
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
Create `eslint.config.ts` and return `config()` directly:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { config } from "@codeperfect/eslint-config";
|
|
27
|
+
|
|
28
|
+
export default config();
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`config()` returns `Promise<Linter.Config[]>`, which ESLint can await from `eslint.config.ts`.
|
|
32
|
+
|
|
33
|
+
## Consumer options
|
|
34
|
+
|
|
35
|
+
Disable modules that do not apply to the repository:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { config } from "@codeperfect/eslint-config";
|
|
39
|
+
|
|
40
|
+
export default config({
|
|
41
|
+
disabledPlugins: ["boundaries", "jasmine", "jest"],
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Override final rule severities when the repository needs a narrower policy:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { config } from "@codeperfect/eslint-config";
|
|
49
|
+
|
|
50
|
+
export default config({
|
|
51
|
+
rules: {
|
|
52
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
53
|
+
"import-x/no-default-export": "off",
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Provide explicit repository-owned `boundaries` topology when needed:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import { config } from "@codeperfect/eslint-config";
|
|
62
|
+
|
|
63
|
+
export default config({
|
|
64
|
+
boundaries: {
|
|
65
|
+
files: ["src/**/*.ts"],
|
|
66
|
+
elements: [
|
|
67
|
+
{ type: "shared", pattern: "src/shared/**/*" },
|
|
68
|
+
{ type: "domain", pattern: "src/domain/**/*" },
|
|
69
|
+
{ type: "app", pattern: "src/app/**/*" },
|
|
70
|
+
],
|
|
71
|
+
elementTypes: [
|
|
72
|
+
"error",
|
|
73
|
+
{
|
|
74
|
+
default: "disallow",
|
|
75
|
+
rules: [
|
|
76
|
+
{ allow: ["shared"], from: ["domain", "app"] },
|
|
77
|
+
{ allow: ["domain"], from: ["app"] },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
If that topology is missing or incomplete, the `boundaries` module is skipped and the package reports a targeted warning.
|
|
86
|
+
|
|
87
|
+
## Composition order
|
|
88
|
+
|
|
89
|
+
`config()` assembles modules in this order:
|
|
90
|
+
|
|
91
|
+
1. core: `eslint`, `resolver`, `typescript`
|
|
92
|
+
2. architecture: `import-x`
|
|
93
|
+
3. documentation: `comments`, `jsdoc`
|
|
94
|
+
4. testing: `jasmine`, `jest`, `playwright`, `vitest`
|
|
95
|
+
5. domain: `rxjs-x`
|
|
96
|
+
6. style: `stylistic`, `perfectionist`, `unicorn`, `prettier`
|
|
97
|
+
7. repository architecture overlay: `boundaries`
|
|
98
|
+
|
|
99
|
+
This order is intentional and validated in tests.
|
|
100
|
+
|
|
101
|
+
## Internal layout
|
|
102
|
+
|
|
103
|
+
- `src/configs/` is the internal entrypoint for config-module builders used during composition.
|
|
104
|
+
- domain folders such as `src/architecture/`, `src/core/`, `src/docs/`, `src/testing/`, `src/domain/`, and `src/style/` own the concrete module implementations.
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
- design RFCs and package governance docs live in `docs/design/`
|
|
109
|
+
- generated API reference is written to `docs/api/` by `npm run docs`
|
|
110
|
+
|
|
111
|
+
## Available modules
|
|
112
|
+
|
|
113
|
+
| Module | Package | Notes |
|
|
114
|
+
| --------------- | ------------------------------------------------- | ------------------------------------------------------ |
|
|
115
|
+
| `eslint` | `@eslint/js` | Required baseline rules. |
|
|
116
|
+
| `resolver` | `eslint-import-resolver-typescript` | Optional resolver integration used by import tooling. |
|
|
117
|
+
| `typescript` | `typescript-eslint` | Required TypeScript rules and parser support. |
|
|
118
|
+
| `import-x` | `eslint-plugin-import-x` | Optional import analysis module. |
|
|
119
|
+
| `comments` | `@eslint-community/eslint-plugin-eslint-comments` | Optional ESLint directive-comment rules. |
|
|
120
|
+
| `jsdoc` | `eslint-plugin-jsdoc` | Optional JSDoc rules and package-level JSDoc defaults. |
|
|
121
|
+
| `jasmine` | `eslint-plugin-jasmine` | Optional Jasmine rules. |
|
|
122
|
+
| `jest` | `eslint-plugin-jest` | Optional Jest rules. |
|
|
123
|
+
| `playwright` | `eslint-plugin-playwright` | Optional Playwright rules. |
|
|
124
|
+
| `vitest` | `@vitest/eslint-plugin` | Optional Vitest rules. |
|
|
125
|
+
| `rxjs-x` | `eslint-plugin-rxjs-x` | Optional RxJS rules. |
|
|
126
|
+
| `stylistic` | `@stylistic/eslint-plugin` | Optional style rules. |
|
|
127
|
+
| `perfectionist` | `eslint-plugin-perfectionist` | Optional ordering rules. |
|
|
128
|
+
| `unicorn` | `eslint-plugin-unicorn` | Optional general best-practice rules. |
|
|
129
|
+
| `prettier` | `eslint-plugin-prettier` | Optional Prettier integration. |
|
|
130
|
+
| `boundaries` | `eslint-plugin-boundaries` | Optional, repository-owned architecture overlay. |
|
|
131
|
+
|
|
132
|
+
## Validation
|
|
133
|
+
|
|
134
|
+
When changing this package:
|
|
135
|
+
|
|
136
|
+
- run `npm run validate`
|
|
137
|
+
- run `npm run validate` a second time to confirm deterministic results
|
|
138
|
+
- run `npm run docs` when the public or documented surface changes
|
|
139
|
+
- keep consumer-facing docs aligned with the implementation
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/config-composition.ts","../src/diagnostics.ts","../src/index-spec-helpers.ts","../src/index.ts","../src/module-taxonomy.ts","../src/plugin-loaders.ts","../src/types.ts","../src/utilities.ts","../src/architecture/boundaries.ts","../src/architecture/import-x.ts","../src/architecture/index.ts","../src/configs/index.ts","../src/core/eslint.ts","../src/core/index.ts","../src/core/resolver.ts","../src/core/typescript.ts","../src/docs/comments.ts","../src/docs/index.ts","../src/docs/jsdoc.ts","../src/domain/index.ts","../src/domain/rxjs-x.ts","../src/style/index.ts","../src/style/perfectionist.ts","../src/style/prettier.ts","../src/style/stylistic.ts","../src/style/unicorn.ts","../src/testing/index.ts","../src/testing/jasmine.ts","../src/testing/jest.ts","../src/testing/playwright.ts","../src/testing/vitest.ts","../conventional-changelog-conventionalcommits.d.ts","../eslint-plugin-jasmine.d.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
import type { BoundariesConfig } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Load boundaries plugin configuration when explicitly configured.
|
|
5
|
+
* @param config Input config value.
|
|
6
|
+
* @returns Return value output.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const configs = boundaries({
|
|
10
|
+
* elements: [{ type: "shared", pattern: "src/shared" }],
|
|
11
|
+
* elementTypes: ["error", { default: "disallow", rules: [] }],
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function boundaries(config?: BoundariesConfig): Linter.Config[];
|
|
16
|
+
export { boundaries };
|
|
17
|
+
//# sourceMappingURL=boundaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../src/architecture/boundaries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIjD;;;;;;;;;;;GAWG;AACH,iBAAS,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CA0B9D;AA+CD,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createConfig, strict } from "eslint-plugin-boundaries/config";
|
|
2
|
+
import { defineConfig } from "eslint/config";
|
|
3
|
+
import { reportMissingBoundariesConfig } from "../diagnostics";
|
|
4
|
+
/**
|
|
5
|
+
* Load boundaries plugin configuration when explicitly configured.
|
|
6
|
+
* @param config Input config value.
|
|
7
|
+
* @returns Return value output.
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const configs = boundaries({
|
|
11
|
+
* elements: [{ type: "shared", pattern: "src/shared" }],
|
|
12
|
+
* elementTypes: ["error", { default: "disallow", rules: [] }],
|
|
13
|
+
* });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function boundaries(config) {
|
|
17
|
+
if (!hasBoundariesConfig(config)) {
|
|
18
|
+
warnMissingConfig();
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const { elements, elementTypes, files, ignores } = config;
|
|
22
|
+
const settings = {
|
|
23
|
+
...strict.settings,
|
|
24
|
+
"boundaries/elements": elements,
|
|
25
|
+
};
|
|
26
|
+
const rules = {
|
|
27
|
+
...strict.rules,
|
|
28
|
+
"boundaries/element-types": elementTypes,
|
|
29
|
+
};
|
|
30
|
+
const configObject = createConfig({
|
|
31
|
+
files: [...files],
|
|
32
|
+
...(ignores === void 0 ? {} : { ignores: [...ignores] }),
|
|
33
|
+
rules,
|
|
34
|
+
settings,
|
|
35
|
+
});
|
|
36
|
+
return defineConfig(configObject);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the boundaries configuration is present.
|
|
40
|
+
* @param config Input config value.
|
|
41
|
+
* @returns Return value output.
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const ok = hasBoundariesConfig({
|
|
45
|
+
* files: ["src"],
|
|
46
|
+
* elements: [],
|
|
47
|
+
* elementTypes: ["error", { default: "disallow", rules: [] }],
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
function hasBoundariesConfig(config) {
|
|
52
|
+
if (config === void 0) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const { elements, elementTypes, files } = config;
|
|
56
|
+
return files !== void 0 && elements !== void 0 && elementTypes !== void 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Warns when boundaries configuration is missing.
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* warnMissingConfig();
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
function warnMissingConfig() {
|
|
66
|
+
reportMissingBoundariesConfig();
|
|
67
|
+
}
|
|
68
|
+
export { boundaries };
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRhcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXRlY3R1cmUvYm91bmRhcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxNQUF5QjtJQUMzQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFMUQsTUFBTSxRQUFRLEdBQWE7UUFDekIsR0FBRyxNQUFNLENBQUMsUUFBUTtRQUNsQixxQkFBcUIsRUFBRSxRQUFRO0tBQ2hDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBVTtRQUNuQixHQUFHLE1BQU0sQ0FBQyxLQUFLO1FBQ2YsMEJBQTBCLEVBQUUsWUFBWTtLQUN6QyxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEQsS0FBSztRQUNMLFFBQVE7S0FDVCxDQUFpQixDQUFDO0lBRW5CLE9BQU8sWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFTLG1CQUFtQixDQUMxQixNQUFvQztJQUVwQyxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BU3pDLENBQUM7SUFFRixPQUFPLEtBQUssS0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLElBQUksWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGlCQUFpQjtJQUN4Qiw2QkFBNkIsRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbmZpZ09iamVjdCB9IGZyb20gXCJAZXNsaW50L2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUgeyBSdWxlcywgU2V0dGluZ3MgfSBmcm9tIFwiZXNsaW50LXBsdWdpbi1ib3VuZGFyaWVzXCI7XG5cbmltcG9ydCB7IGNyZWF0ZUNvbmZpZywgc3RyaWN0IH0gZnJvbSBcImVzbGludC1wbHVnaW4tYm91bmRhcmllcy9jb25maWdcIjtcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJlc2xpbnQvY29uZmlnXCI7XG5cbmltcG9ydCB0eXBlIHsgQm91bmRhcmllc0NvbmZpZyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5pbXBvcnQgeyByZXBvcnRNaXNzaW5nQm91bmRhcmllc0NvbmZpZyB9IGZyb20gXCIuLi9kaWFnbm9zdGljc1wiO1xuXG4vKipcbiAqIExvYWQgYm91bmRhcmllcyBwbHVnaW4gY29uZmlndXJhdGlvbiB3aGVuIGV4cGxpY2l0bHkgY29uZmlndXJlZC5cbiAqIEBwYXJhbSBjb25maWcgSW5wdXQgY29uZmlnIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb25maWdzID0gYm91bmRhcmllcyh7XG4gKiBlbGVtZW50czogW3sgdHlwZTogXCJzaGFyZWRcIiwgcGF0dGVybjogXCJzcmMvc2hhcmVkXCIgfV0sXG4gKiBlbGVtZW50VHlwZXM6IFtcImVycm9yXCIsIHsgZGVmYXVsdDogXCJkaXNhbGxvd1wiLCBydWxlczogW10gfV0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBib3VuZGFyaWVzKGNvbmZpZz86IEJvdW5kYXJpZXNDb25maWcpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBpZiAoIWhhc0JvdW5kYXJpZXNDb25maWcoY29uZmlnKSkge1xuICAgIHdhcm5NaXNzaW5nQ29uZmlnKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgeyBlbGVtZW50cywgZWxlbWVudFR5cGVzLCBmaWxlcywgaWdub3JlcyB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IHNldHRpbmdzOiBTZXR0aW5ncyA9IHtcbiAgICAuLi5zdHJpY3Quc2V0dGluZ3MsXG4gICAgXCJib3VuZGFyaWVzL2VsZW1lbnRzXCI6IGVsZW1lbnRzLFxuICB9O1xuXG4gIGNvbnN0IHJ1bGVzOiBSdWxlcyA9IHtcbiAgICAuLi5zdHJpY3QucnVsZXMsXG4gICAgXCJib3VuZGFyaWVzL2VsZW1lbnQtdHlwZXNcIjogZWxlbWVudFR5cGVzLFxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZ09iamVjdCA9IGNyZWF0ZUNvbmZpZyh7XG4gICAgZmlsZXM6IFsuLi5maWxlc10sXG4gICAgLi4uKGlnbm9yZXMgPT09IHZvaWQgMCA/IHt9IDogeyBpZ25vcmVzOiBbLi4uaWdub3Jlc10gfSksXG4gICAgcnVsZXMsXG4gICAgc2V0dGluZ3MsXG4gIH0pIGFzIENvbmZpZ09iamVjdDtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKGNvbmZpZ09iamVjdCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBib3VuZGFyaWVzIGNvbmZpZ3VyYXRpb24gaXMgcHJlc2VudC5cbiAqIEBwYXJhbSBjb25maWcgSW5wdXQgY29uZmlnIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGhhc0JvdW5kYXJpZXNDb25maWcoe1xuICogICBmaWxlczogW1wic3JjXCJdLFxuICogICBlbGVtZW50czogW10sXG4gKiAgIGVsZW1lbnRUeXBlczogW1wiZXJyb3JcIiwgeyBkZWZhdWx0OiBcImRpc2FsbG93XCIsIHJ1bGVzOiBbXSB9XSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGhhc0JvdW5kYXJpZXNDb25maWcoXG4gIGNvbmZpZzogQm91bmRhcmllc0NvbmZpZyB8IHVuZGVmaW5lZCxcbik6IGNvbmZpZyBpcyBCb3VuZGFyaWVzQ29uZmlnIHtcbiAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBlbGVtZW50cywgZWxlbWVudFR5cGVzLCBmaWxlcyB9ID0gY29uZmlnIGFzIHtcbiAgICAvKiogRWxlbWVudHMgaGVscGVyIHZhbHVlLiAqL1xuICAgIGVsZW1lbnRzPzogdW5rbm93bjtcblxuICAgIC8qKiBFbGVtZW50VHlwZXMgaGVscGVyIHZhbHVlLiAqL1xuICAgIGVsZW1lbnRUeXBlcz86IHVua25vd247XG5cbiAgICAvKiogRmlsZXMgaGVscGVyIHZhbHVlLiAqL1xuICAgIGZpbGVzPzogdW5rbm93bjtcbiAgfTtcblxuICByZXR1cm4gZmlsZXMgIT09IHZvaWQgMCAmJiBlbGVtZW50cyAhPT0gdm9pZCAwICYmIGVsZW1lbnRUeXBlcyAhPT0gdm9pZCAwO1xufVxuXG4vKipcbiAqIFdhcm5zIHdoZW4gYm91bmRhcmllcyBjb25maWd1cmF0aW9uIGlzIG1pc3NpbmcuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogd2Fybk1pc3NpbmdDb25maWcoKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiB3YXJuTWlzc2luZ0NvbmZpZygpOiB2b2lkIHtcbiAgcmVwb3J0TWlzc2luZ0JvdW5kYXJpZXNDb25maWcoKTtcbn1cblxuZXhwb3J0IHsgYm91bmRhcmllcyB9O1xuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* Loads the import-x plugin configuration.
|
|
4
|
+
* @returns Return value output.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* await importX();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
declare function importX(): Promise<Linter.Config[]>;
|
|
11
|
+
export { importX };
|
|
12
|
+
//# sourceMappingURL=import-x.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-x.d.ts","sourceRoot":"","sources":["../../src/architecture/import-x.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAoDrC;;;;;;;GAOG;AACH,iBAAe,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAmCjD;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
/**
|
|
3
|
+
* Build custom error rules for import-x plugin by excluding certain rules
|
|
4
|
+
* and ensuring no overlap with existing configurations.
|
|
5
|
+
* @returns Return value output.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* await buildCustomErrorRules();
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
async function buildCustomErrorRules() {
|
|
12
|
+
const { flatConfigs, rules } = await import("eslint-plugin-import-x");
|
|
13
|
+
const { recommended, typescript, warnings } = flatConfigs;
|
|
14
|
+
const customIgnore = new Set([
|
|
15
|
+
"dynamic-import-chunkname",
|
|
16
|
+
"no-default-export",
|
|
17
|
+
"no-deprecated",
|
|
18
|
+
"no-named-export",
|
|
19
|
+
"no-namespace",
|
|
20
|
+
"order",
|
|
21
|
+
"prefer-default-export",
|
|
22
|
+
]);
|
|
23
|
+
const allConfigs = new Set([warnings, recommended, typescript].flatMap((config) => Object.keys(config.rules ?? {})));
|
|
24
|
+
const customError = Object.fromEntries(Object.keys(rules)
|
|
25
|
+
.filter((rule) => !customIgnore.has(rule))
|
|
26
|
+
.map((rule) => `import-x/${rule}`)
|
|
27
|
+
.filter((rule) => !allConfigs.has(rule))
|
|
28
|
+
.map((rule) => [rule, "error"]));
|
|
29
|
+
return [
|
|
30
|
+
warnings,
|
|
31
|
+
recommended,
|
|
32
|
+
typescript,
|
|
33
|
+
{
|
|
34
|
+
name: "import-x/custom-error",
|
|
35
|
+
rules: customError,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Loads the import-x plugin configuration.
|
|
41
|
+
* @returns Return value output.
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* await importX();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
async function importX() {
|
|
48
|
+
return defineConfig(...(await buildCustomErrorRules()), {
|
|
49
|
+
name: "import-x/custom-typescript",
|
|
50
|
+
rules: {
|
|
51
|
+
"import-x/no-relative-parent-imports": "off",
|
|
52
|
+
"import-x/unambiguous": "off",
|
|
53
|
+
},
|
|
54
|
+
}, {
|
|
55
|
+
name: "import-x/custom-node_modules",
|
|
56
|
+
rules: {
|
|
57
|
+
"import-x/no-internal-modules": [
|
|
58
|
+
"error",
|
|
59
|
+
{
|
|
60
|
+
allow: [
|
|
61
|
+
"eslint/config",
|
|
62
|
+
"eslint-plugin-boundaries/config",
|
|
63
|
+
"eslint-plugin-prettier/recommended",
|
|
64
|
+
"vitest/config",
|
|
65
|
+
"@eslint-community/eslint-plugin-eslint-comments/configs",
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
}, {
|
|
71
|
+
ignores: ["*", "packages/*/*", "packages/*/*/*"],
|
|
72
|
+
name: "import-x/custom-root-config-files",
|
|
73
|
+
rules: {
|
|
74
|
+
"import-x/no-default-export": "error",
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export { importX };
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2ltcG9ydC14LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUscUJBQXFCO0lBQ2xDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN0RSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFFMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDM0IsMEJBQTBCO1FBQzFCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxPQUFPO1FBQ1AsdUJBQXVCO0tBQ3hCLENBQUMsQ0FBQztJQUVILE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUN4QixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUNoQyxDQUNGLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNmLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztTQUNqQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBVSxDQUFDLENBQzNDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBeUI7UUFDekIsV0FBNEI7UUFDNUIsVUFBMkI7UUFDM0I7WUFDRSxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLEtBQUssRUFBRSxXQUFXO1NBQ25CO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLE9BQU87SUFDcEIsT0FBTyxZQUFZLENBQ2pCLEdBQUcsQ0FBQyxNQUFNLHFCQUFxQixFQUFFLENBQUMsRUFDbEM7UUFDRSxJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLEtBQUssRUFBRTtZQUNMLHFDQUFxQyxFQUFFLEtBQUs7WUFDNUMsc0JBQXNCLEVBQUUsS0FBSztTQUM5QjtLQUNGLEVBQ0Q7UUFDRSxJQUFJLEVBQUUsOEJBQThCO1FBQ3BDLEtBQUssRUFBRTtZQUNMLDhCQUE4QixFQUFFO2dCQUM5QixPQUFPO2dCQUNQO29CQUNFLEtBQUssRUFBRTt3QkFDTCxlQUFlO3dCQUNmLGlDQUFpQzt3QkFDakMsb0NBQW9DO3dCQUNwQyxlQUFlO3dCQUNmLHlEQUF5RDtxQkFDMUQ7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsRUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUM7UUFDaEQsSUFBSSxFQUFFLG1DQUFtQztRQUN6QyxLQUFLLEVBQUU7WUFDTCw0QkFBNEIsRUFBRSxPQUFPO1NBQ3RDO0tBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIEJ1aWxkIGN1c3RvbSBlcnJvciBydWxlcyBmb3IgaW1wb3J0LXggcGx1Z2luIGJ5IGV4Y2x1ZGluZyBjZXJ0YWluIHJ1bGVzXG4gKiBhbmQgZW5zdXJpbmcgbm8gb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCBidWlsZEN1c3RvbUVycm9yUnVsZXMoKTtcbiAqIGBgYFxuICovXG5hc3luYyBmdW5jdGlvbiBidWlsZEN1c3RvbUVycm9yUnVsZXMoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+IHtcbiAgY29uc3QgeyBmbGF0Q29uZmlncywgcnVsZXMgfSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4taW1wb3J0LXhcIik7XG4gIGNvbnN0IHsgcmVjb21tZW5kZWQsIHR5cGVzY3JpcHQsIHdhcm5pbmdzIH0gPSBmbGF0Q29uZmlncztcblxuICBjb25zdCBjdXN0b21JZ25vcmUgPSBuZXcgU2V0KFtcbiAgICBcImR5bmFtaWMtaW1wb3J0LWNodW5rbmFtZVwiLFxuICAgIFwibm8tZGVmYXVsdC1leHBvcnRcIixcbiAgICBcIm5vLWRlcHJlY2F0ZWRcIixcbiAgICBcIm5vLW5hbWVkLWV4cG9ydFwiLFxuICAgIFwibm8tbmFtZXNwYWNlXCIsXG4gICAgXCJvcmRlclwiLFxuICAgIFwicHJlZmVyLWRlZmF1bHQtZXhwb3J0XCIsXG4gIF0pO1xuXG4gIGNvbnN0IGFsbENvbmZpZ3MgPSBuZXcgU2V0KFxuICAgIFt3YXJuaW5ncywgcmVjb21tZW5kZWQsIHR5cGVzY3JpcHRdLmZsYXRNYXAoKGNvbmZpZykgPT5cbiAgICAgIE9iamVjdC5rZXlzKGNvbmZpZy5ydWxlcyA/PyB7fSksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBjdXN0b21FcnJvciA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhydWxlcylcbiAgICAgIC5maWx0ZXIoKHJ1bGUpID0+ICFjdXN0b21JZ25vcmUuaGFzKHJ1bGUpKVxuICAgICAgLm1hcCgocnVsZSkgPT4gYGltcG9ydC14LyR7cnVsZX1gKVxuICAgICAgLmZpbHRlcigocnVsZSkgPT4gIWFsbENvbmZpZ3MuaGFzKHJ1bGUpKVxuICAgICAgLm1hcCgocnVsZSkgPT4gW3J1bGUsIFwiZXJyb3JcIl0gYXMgY29uc3QpLFxuICApO1xuXG4gIHJldHVybiBbXG4gICAgd2FybmluZ3MgYXMgTGludGVyLkNvbmZpZyxcbiAgICByZWNvbW1lbmRlZCBhcyBMaW50ZXIuQ29uZmlnLFxuICAgIHR5cGVzY3JpcHQgYXMgTGludGVyLkNvbmZpZyxcbiAgICB7XG4gICAgICBuYW1lOiBcImltcG9ydC14L2N1c3RvbS1lcnJvclwiLFxuICAgICAgcnVsZXM6IGN1c3RvbUVycm9yLFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIGltcG9ydC14IHBsdWdpbiBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCBpbXBvcnRYKCk7XG4gKiBgYGBcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW1wb3J0WCgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLihhd2FpdCBidWlsZEN1c3RvbUVycm9yUnVsZXMoKSksXG4gICAge1xuICAgICAgbmFtZTogXCJpbXBvcnQteC9jdXN0b20tdHlwZXNjcmlwdFwiLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQteC9uby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0c1wiOiBcIm9mZlwiLFxuICAgICAgICBcImltcG9ydC14L3VuYW1iaWd1b3VzXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJpbXBvcnQteC9jdXN0b20tbm9kZV9tb2R1bGVzXCIsXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC14L25vLWludGVybmFsLW1vZHVsZXNcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICBcImVzbGludC9jb25maWdcIixcbiAgICAgICAgICAgICAgXCJlc2xpbnQtcGx1Z2luLWJvdW5kYXJpZXMvY29uZmlnXCIsXG4gICAgICAgICAgICAgIFwiZXNsaW50LXBsdWdpbi1wcmV0dGllci9yZWNvbW1lbmRlZFwiLFxuICAgICAgICAgICAgICBcInZpdGVzdC9jb25maWdcIixcbiAgICAgICAgICAgICAgXCJAZXNsaW50LWNvbW11bml0eS9lc2xpbnQtcGx1Z2luLWVzbGludC1jb21tZW50cy9jb25maWdzXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWdub3JlczogW1wiKlwiLCBcInBhY2thZ2VzLyovKlwiLCBcInBhY2thZ2VzLyovKi8qXCJdLFxuICAgICAgbmFtZTogXCJpbXBvcnQteC9jdXN0b20tcm9vdC1jb25maWctZmlsZXNcIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xufVxuXG5leHBvcnQgeyBpbXBvcnRYIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/architecture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { boundaries } from "./boundaries";
|
|
2
|
+
export { importX } from "./import-x";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGJvdW5kYXJpZXMgfSBmcm9tIFwiLi9ib3VuZGFyaWVzXCI7XG5leHBvcnQgeyBpbXBvcnRYIH0gZnJvbSBcIi4vaW1wb3J0LXhcIjtcbiJdfQ==
|
|
Binary file
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Expected config names when all documented modules are enabled in order. */
|
|
2
|
+
declare const fullCompositionNames: readonly ["core-eslint", "core-resolver", "core-typescript", "architecture-import-x", "docs-comments", "docs-jsdoc", "testing-jasmine", "testing-jest", "testing-playwright", "testing-vitest", "domain-rxjs", "style-stylistic", "style-perfectionist", "style-unicorn", "style-prettier", "architecture-boundaries"];
|
|
3
|
+
/** Expected config names when selected optional modules are disabled. */
|
|
4
|
+
declare const reducedCompositionNames: readonly ["core-eslint", "core-resolver", "core-typescript", "architecture-import-x", "docs-comments", "docs-jsdoc", "testing-jasmine", "testing-jest", "testing-playwright", "domain-rxjs", "style-stylistic", "style-perfectionist", "style-unicorn"];
|
|
5
|
+
export { fullCompositionNames, reducedCompositionNames };
|
|
6
|
+
//# sourceMappingURL=config-composition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-composition.d.ts","sourceRoot":"","sources":["../src/config-composition.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,QAAA,MAAM,oBAAoB,wTAiBhB,CAAC;AAEX,yEAAyE;AACzE,QAAA,MAAM,uBAAuB,yPAcnB,CAAC;AAEX,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Expected config names when all documented modules are enabled in order. */
|
|
2
|
+
const fullCompositionNames = [
|
|
3
|
+
"core-eslint",
|
|
4
|
+
"core-resolver",
|
|
5
|
+
"core-typescript",
|
|
6
|
+
"architecture-import-x",
|
|
7
|
+
"docs-comments",
|
|
8
|
+
"docs-jsdoc",
|
|
9
|
+
"testing-jasmine",
|
|
10
|
+
"testing-jest",
|
|
11
|
+
"testing-playwright",
|
|
12
|
+
"testing-vitest",
|
|
13
|
+
"domain-rxjs",
|
|
14
|
+
"style-stylistic",
|
|
15
|
+
"style-perfectionist",
|
|
16
|
+
"style-unicorn",
|
|
17
|
+
"style-prettier",
|
|
18
|
+
"architecture-boundaries",
|
|
19
|
+
];
|
|
20
|
+
/** Expected config names when selected optional modules are disabled. */
|
|
21
|
+
const reducedCompositionNames = [
|
|
22
|
+
"core-eslint",
|
|
23
|
+
"core-resolver",
|
|
24
|
+
"core-typescript",
|
|
25
|
+
"architecture-import-x",
|
|
26
|
+
"docs-comments",
|
|
27
|
+
"docs-jsdoc",
|
|
28
|
+
"testing-jasmine",
|
|
29
|
+
"testing-jest",
|
|
30
|
+
"testing-playwright",
|
|
31
|
+
"domain-rxjs",
|
|
32
|
+
"style-stylistic",
|
|
33
|
+
"style-perfectionist",
|
|
34
|
+
"style-unicorn",
|
|
35
|
+
];
|
|
36
|
+
export { fullCompositionNames, reducedCompositionNames };
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy1jb21wb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RUFBOEU7QUFDOUUsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixhQUFhO0lBQ2IsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsZUFBZTtJQUNmLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsY0FBYztJQUNkLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQix5QkFBeUI7Q0FDakIsQ0FBQztBQUVYLHlFQUF5RTtBQUN6RSxNQUFNLHVCQUF1QixHQUFHO0lBQzlCLGFBQWE7SUFDYixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLGVBQWU7Q0FDUCxDQUFDO0FBRVgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXhwZWN0ZWQgY29uZmlnIG5hbWVzIHdoZW4gYWxsIGRvY3VtZW50ZWQgbW9kdWxlcyBhcmUgZW5hYmxlZCBpbiBvcmRlci4gKi9cbmNvbnN0IGZ1bGxDb21wb3NpdGlvbk5hbWVzID0gW1xuICBcImNvcmUtZXNsaW50XCIsXG4gIFwiY29yZS1yZXNvbHZlclwiLFxuICBcImNvcmUtdHlwZXNjcmlwdFwiLFxuICBcImFyY2hpdGVjdHVyZS1pbXBvcnQteFwiLFxuICBcImRvY3MtY29tbWVudHNcIixcbiAgXCJkb2NzLWpzZG9jXCIsXG4gIFwidGVzdGluZy1qYXNtaW5lXCIsXG4gIFwidGVzdGluZy1qZXN0XCIsXG4gIFwidGVzdGluZy1wbGF5d3JpZ2h0XCIsXG4gIFwidGVzdGluZy12aXRlc3RcIixcbiAgXCJkb21haW4tcnhqc1wiLFxuICBcInN0eWxlLXN0eWxpc3RpY1wiLFxuICBcInN0eWxlLXBlcmZlY3Rpb25pc3RcIixcbiAgXCJzdHlsZS11bmljb3JuXCIsXG4gIFwic3R5bGUtcHJldHRpZXJcIixcbiAgXCJhcmNoaXRlY3R1cmUtYm91bmRhcmllc1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIEV4cGVjdGVkIGNvbmZpZyBuYW1lcyB3aGVuIHNlbGVjdGVkIG9wdGlvbmFsIG1vZHVsZXMgYXJlIGRpc2FibGVkLiAqL1xuY29uc3QgcmVkdWNlZENvbXBvc2l0aW9uTmFtZXMgPSBbXG4gIFwiY29yZS1lc2xpbnRcIixcbiAgXCJjb3JlLXJlc29sdmVyXCIsXG4gIFwiY29yZS10eXBlc2NyaXB0XCIsXG4gIFwiYXJjaGl0ZWN0dXJlLWltcG9ydC14XCIsXG4gIFwiZG9jcy1jb21tZW50c1wiLFxuICBcImRvY3MtanNkb2NcIixcbiAgXCJ0ZXN0aW5nLWphc21pbmVcIixcbiAgXCJ0ZXN0aW5nLWplc3RcIixcbiAgXCJ0ZXN0aW5nLXBsYXl3cmlnaHRcIixcbiAgXCJkb21haW4tcnhqc1wiLFxuICBcInN0eWxlLXN0eWxpc3RpY1wiLFxuICBcInN0eWxlLXBlcmZlY3Rpb25pc3RcIixcbiAgXCJzdHlsZS11bmljb3JuXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgeyBmdWxsQ29tcG9zaXRpb25OYW1lcywgcmVkdWNlZENvbXBvc2l0aW9uTmFtZXMgfTtcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { boundaries, importX } from "../architecture";
|
|
2
|
+
export { eslint, resolver, typescript } from "../core";
|
|
3
|
+
export { comments, jsdoc } from "../docs";
|
|
4
|
+
export { rxjsX } from "../domain";
|
|
5
|
+
export { perfectionist, prettier, stylistic, unicorn } from "../style";
|
|
6
|
+
export { jasmine, jest, playwright, vitest } from "../testing";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { boundaries, importX } from "../architecture";
|
|
2
|
+
export { eslint, resolver, typescript } from "../core";
|
|
3
|
+
export { comments, jsdoc } from "../docs";
|
|
4
|
+
export { rxjsX } from "../domain";
|
|
5
|
+
export { perfectionist, prettier, stylistic, unicorn } from "../style";
|
|
6
|
+
export { jasmine, jest, playwright, vitest } from "../testing";
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGJvdW5kYXJpZXMsIGltcG9ydFggfSBmcm9tIFwiLi4vYXJjaGl0ZWN0dXJlXCI7XG5leHBvcnQgeyBlc2xpbnQsIHJlc29sdmVyLCB0eXBlc2NyaXB0IH0gZnJvbSBcIi4uL2NvcmVcIjtcbmV4cG9ydCB7IGNvbW1lbnRzLCBqc2RvYyB9IGZyb20gXCIuLi9kb2NzXCI7XG5leHBvcnQgeyByeGpzWCB9IGZyb20gXCIuLi9kb21haW5cIjtcbmV4cG9ydCB7IHBlcmZlY3Rpb25pc3QsIHByZXR0aWVyLCBzdHlsaXN0aWMsIHVuaWNvcm4gfSBmcm9tIFwiLi4vc3R5bGVcIjtcbmV4cG9ydCB7IGphc21pbmUsIGplc3QsIHBsYXl3cmlnaHQsIHZpdGVzdCB9IGZyb20gXCIuLi90ZXN0aW5nXCI7XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* Assemble base configuration combining the official eslint-js recommendations with
|
|
4
|
+
* project-specific overrides and linter options.
|
|
5
|
+
* @returns Base ESLint config array.
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const base = eslint();
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export declare function eslint(): Linter.Config[];
|
|
12
|
+
//# sourceMappingURL=eslint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/core/eslint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA8BrC;;;;;;;;GAQG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAmCxC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { configs } from "@eslint/js";
|
|
2
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
3
|
+
/** Rules excluded from custom errors. */
|
|
4
|
+
const customIgnore = new Set([
|
|
5
|
+
"capitalized-comments",
|
|
6
|
+
"func-style",
|
|
7
|
+
"no-magic-numbers",
|
|
8
|
+
"no-ternary",
|
|
9
|
+
"no-unused-vars",
|
|
10
|
+
"no-use-before-define",
|
|
11
|
+
"no-void",
|
|
12
|
+
"no-warning-comments",
|
|
13
|
+
"one-var",
|
|
14
|
+
"sort-imports",
|
|
15
|
+
]);
|
|
16
|
+
/** Rules included in eslint:recommended. */
|
|
17
|
+
const recommended = new Set(Object.keys(configs.recommended.rules));
|
|
18
|
+
/** Error rules excluding ignored or recommended. */
|
|
19
|
+
const customError = Object.fromEntries(Object.keys(configs.all.rules)
|
|
20
|
+
.filter((rule) => !customIgnore.has(rule))
|
|
21
|
+
.filter((rule) => !recommended.has(rule))
|
|
22
|
+
.map((rule) => [rule, "error"]));
|
|
23
|
+
/**
|
|
24
|
+
* Assemble base configuration combining the official eslint-js recommendations with
|
|
25
|
+
* project-specific overrides and linter options.
|
|
26
|
+
* @returns Base ESLint config array.
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const base = eslint();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function eslint() {
|
|
33
|
+
return defineConfig(configs.recommended, globalIgnores(["**/dist/**", "docs/", "**/coverage"], "@eslint/js/custom-ignore-directory"), {
|
|
34
|
+
linterOptions: {
|
|
35
|
+
reportUnusedDisableDirectives: "error",
|
|
36
|
+
reportUnusedInlineConfigs: "error",
|
|
37
|
+
},
|
|
38
|
+
}, {
|
|
39
|
+
name: "@eslint/js/custom",
|
|
40
|
+
rules: {
|
|
41
|
+
...customError,
|
|
42
|
+
"new-cap": ["error", { capIsNewExceptionPattern: "^@" }],
|
|
43
|
+
"no-duplicate-imports": ["error", { allowSeparateTypeImports: true }],
|
|
44
|
+
},
|
|
45
|
+
}, {
|
|
46
|
+
files: ["**/*.spec.ts"],
|
|
47
|
+
name: "@eslint/js/custom-spec",
|
|
48
|
+
rules: {
|
|
49
|
+
"init-declarations": "off",
|
|
50
|
+
"max-lines-per-function": "off",
|
|
51
|
+
},
|
|
52
|
+
}, {
|
|
53
|
+
files: ["scripts/*.ts"],
|
|
54
|
+
name: "@eslint/js/custom-scripts",
|
|
55
|
+
rules: { "no-console": "off" },
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvZXNsaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQseUNBQXlDO0FBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLHNCQUFzQjtJQUN0QixZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBQ3RCLFNBQVM7SUFDVCxxQkFBcUI7SUFDckIsU0FBUztJQUNULGNBQWM7Q0FDZixDQUFDLENBQUM7QUFFSCw0Q0FBNEM7QUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFcEUsb0RBQW9EO0FBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7S0FDM0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQVUsQ0FBQyxDQUMzQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsTUFBTTtJQUNwQixPQUFPLFlBQVksQ0FDakIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsYUFBYSxDQUNYLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsRUFDdEMsb0NBQW9DLENBQ3JDLEVBQ0Q7UUFDRSxhQUFhLEVBQUU7WUFDYiw2QkFBNkIsRUFBRSxPQUFPO1lBQ3RDLHlCQUF5QixFQUFFLE9BQU87U0FDbkM7S0FDRixFQUNEO1FBQ0UsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixLQUFLLEVBQUU7WUFDTCxHQUFHLFdBQVc7WUFDZCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN4RCxzQkFBc0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3RFO0tBQ0YsRUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUN2QixJQUFJLEVBQUUsd0JBQXdCO1FBQzlCLEtBQUssRUFBRTtZQUNMLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsd0JBQXdCLEVBQUUsS0FBSztTQUNoQztLQUNGLEVBQ0Q7UUFDRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDdkIsSUFBSSxFQUFFLDJCQUEyQjtRQUNqQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFO0tBQy9CLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgY29uZmlncyB9IGZyb20gXCJAZXNsaW50L2pzXCI7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGdsb2JhbElnbm9yZXMgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKiogUnVsZXMgZXhjbHVkZWQgZnJvbSBjdXN0b20gZXJyb3JzLiAqL1xuY29uc3QgY3VzdG9tSWdub3JlID0gbmV3IFNldChbXG4gIFwiY2FwaXRhbGl6ZWQtY29tbWVudHNcIixcbiAgXCJmdW5jLXN0eWxlXCIsXG4gIFwibm8tbWFnaWMtbnVtYmVyc1wiLFxuICBcIm5vLXRlcm5hcnlcIixcbiAgXCJuby11bnVzZWQtdmFyc1wiLFxuICBcIm5vLXVzZS1iZWZvcmUtZGVmaW5lXCIsXG4gIFwibm8tdm9pZFwiLFxuICBcIm5vLXdhcm5pbmctY29tbWVudHNcIixcbiAgXCJvbmUtdmFyXCIsXG4gIFwic29ydC1pbXBvcnRzXCIsXG5dKTtcblxuLyoqIFJ1bGVzIGluY2x1ZGVkIGluIGVzbGludDpyZWNvbW1lbmRlZC4gKi9cbmNvbnN0IHJlY29tbWVuZGVkID0gbmV3IFNldChPYmplY3Qua2V5cyhjb25maWdzLnJlY29tbWVuZGVkLnJ1bGVzKSk7XG5cbi8qKiBFcnJvciBydWxlcyBleGNsdWRpbmcgaWdub3JlZCBvciByZWNvbW1lbmRlZC4gKi9cbmNvbnN0IGN1c3RvbUVycm9yID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBPYmplY3Qua2V5cyhjb25maWdzLmFsbC5ydWxlcylcbiAgICAuZmlsdGVyKChydWxlKSA9PiAhY3VzdG9tSWdub3JlLmhhcyhydWxlKSlcbiAgICAuZmlsdGVyKChydWxlKSA9PiAhcmVjb21tZW5kZWQuaGFzKHJ1bGUpKVxuICAgIC5tYXAoKHJ1bGUpID0+IFtydWxlLCBcImVycm9yXCJdIGFzIGNvbnN0KSxcbik7XG5cbi8qKlxuICogQXNzZW1ibGUgYmFzZSBjb25maWd1cmF0aW9uIGNvbWJpbmluZyB0aGUgb2ZmaWNpYWwgZXNsaW50LWpzIHJlY29tbWVuZGF0aW9ucyB3aXRoXG4gKiBwcm9qZWN0LXNwZWNpZmljIG92ZXJyaWRlcyBhbmQgbGludGVyIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBCYXNlIEVTTGludCBjb25maWcgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYmFzZSA9IGVzbGludCgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2xpbnQoKTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhcbiAgICBjb25maWdzLnJlY29tbWVuZGVkLFxuICAgIGdsb2JhbElnbm9yZXMoXG4gICAgICBbXCIqKi9kaXN0LyoqXCIsIFwiZG9jcy9cIiwgXCIqKi9jb3ZlcmFnZVwiXSxcbiAgICAgIFwiQGVzbGludC9qcy9jdXN0b20taWdub3JlLWRpcmVjdG9yeVwiLFxuICAgICksXG4gICAge1xuICAgICAgbGludGVyT3B0aW9uczoge1xuICAgICAgICByZXBvcnRVbnVzZWREaXNhYmxlRGlyZWN0aXZlczogXCJlcnJvclwiLFxuICAgICAgICByZXBvcnRVbnVzZWRJbmxpbmVDb25maWdzOiBcImVycm9yXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJAZXNsaW50L2pzL2N1c3RvbVwiLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLi4uY3VzdG9tRXJyb3IsXG4gICAgICAgIFwibmV3LWNhcFwiOiBbXCJlcnJvclwiLCB7IGNhcElzTmV3RXhjZXB0aW9uUGF0dGVybjogXCJeQFwiIH1dLFxuICAgICAgICBcIm5vLWR1cGxpY2F0ZS1pbXBvcnRzXCI6IFtcImVycm9yXCIsIHsgYWxsb3dTZXBhcmF0ZVR5cGVJbXBvcnRzOiB0cnVlIH1dLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBbXCIqKi8qLnNwZWMudHNcIl0sXG4gICAgICBuYW1lOiBcIkBlc2xpbnQvanMvY3VzdG9tLXNwZWNcIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW5pdC1kZWNsYXJhdGlvbnNcIjogXCJvZmZcIixcbiAgICAgICAgXCJtYXgtbGluZXMtcGVyLWZ1bmN0aW9uXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IFtcInNjcmlwdHMvKi50c1wiXSxcbiAgICAgIG5hbWU6IFwiQGVzbGludC9qcy9jdXN0b20tc2NyaXB0c1wiLFxuICAgICAgcnVsZXM6IHsgXCJuby1jb25zb2xlXCI6IFwib2ZmXCIgfSxcbiAgICB9LFxuICApO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { eslint } from "./eslint";
|
|
2
|
+
export { resolver } from "./resolver";
|
|
3
|
+
export { typescript } from "./typescript";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGVzbGludCB9IGZyb20gXCIuL2VzbGludFwiO1xuZXhwb3J0IHsgcmVzb2x2ZXIgfSBmcm9tIFwiLi9yZXNvbHZlclwiO1xuZXhwb3J0IHsgdHlwZXNjcmlwdCB9IGZyb20gXCIuL3R5cGVzY3JpcHRcIjtcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* Return resolver settings configured for TypeScript imports.
|
|
4
|
+
* @returns Return value output.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* await resolver();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolver(): Promise<Linter.Config[]>;
|
|
11
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAkBzD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
/**
|
|
3
|
+
* Return resolver settings configured for TypeScript imports.
|
|
4
|
+
* @returns Return value output.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* await resolver();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export async function resolver() {
|
|
11
|
+
const { createTypeScriptImportResolver } = await import("eslint-import-resolver-typescript");
|
|
12
|
+
return defineConfig({
|
|
13
|
+
settings: {
|
|
14
|
+
"import-x/resolver-next": [
|
|
15
|
+
createTypeScriptImportResolver({
|
|
16
|
+
alwaysTryTypes: true,
|
|
17
|
+
}),
|
|
18
|
+
],
|
|
19
|
+
"import/resolver": {
|
|
20
|
+
typescript: {
|
|
21
|
+
alwaysTryTypes: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVE7SUFDNUIsTUFBTSxFQUFFLDhCQUE4QixFQUFFLEdBQ3RDLE1BQU0sTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFcEQsT0FBTyxZQUFZLENBQUM7UUFDbEIsUUFBUSxFQUFFO1lBQ1Isd0JBQXdCLEVBQUU7Z0JBQ3hCLDhCQUE4QixDQUFDO29CQUM3QixjQUFjLEVBQUUsSUFBSTtpQkFDckIsQ0FBQzthQUNIO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLFVBQVUsRUFBRTtvQkFDVixjQUFjLEVBQUUsSUFBSTtpQkFDckI7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIFJldHVybiByZXNvbHZlciBzZXR0aW5ncyBjb25maWd1cmVkIGZvciBUeXBlU2NyaXB0IGltcG9ydHMuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IHJlc29sdmVyKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVyKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHsgY3JlYXRlVHlwZVNjcmlwdEltcG9ydFJlc29sdmVyIH0gPVxuICAgIGF3YWl0IGltcG9ydChcImVzbGludC1pbXBvcnQtcmVzb2x2ZXItdHlwZXNjcmlwdFwiKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBzZXR0aW5nczoge1xuICAgICAgXCJpbXBvcnQteC9yZXNvbHZlci1uZXh0XCI6IFtcbiAgICAgICAgY3JlYXRlVHlwZVNjcmlwdEltcG9ydFJlc29sdmVyKHtcbiAgICAgICAgICBhbHdheXNUcnlUeXBlczogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgXCJpbXBvcnQvcmVzb2x2ZXJcIjoge1xuICAgICAgICB0eXBlc2NyaXB0OiB7XG4gICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
/**
|
|
3
|
+
* Build and return TypeScript-specific ESLint configs and rule adjustments.
|
|
4
|
+
* @returns The TypeScript ESLint config array.
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const typescriptConfigs = await typescript();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare function typescript(): Promise<Linter.Config[]>;
|
|
11
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/core/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAoBrC;;;;;;;GAOG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CA+C3D"}
|