@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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/architecture/boundaries.d.ts +17 -0
  5. package/dist/architecture/boundaries.d.ts.map +1 -0
  6. package/dist/architecture/boundaries.js +69 -0
  7. package/dist/architecture/import-x.d.ts +12 -0
  8. package/dist/architecture/import-x.d.ts.map +1 -0
  9. package/dist/architecture/import-x.js +79 -0
  10. package/dist/architecture/index.d.ts +3 -0
  11. package/dist/architecture/index.d.ts.map +1 -0
  12. package/dist/architecture/index.js +3 -0
  13. package/dist/codeperfect-eslint-config-1.0.0.tgz +0 -0
  14. package/dist/config-composition.d.ts +6 -0
  15. package/dist/config-composition.d.ts.map +1 -0
  16. package/dist/config-composition.js +37 -0
  17. package/dist/configs/index.d.ts +7 -0
  18. package/dist/configs/index.d.ts.map +1 -0
  19. package/dist/configs/index.js +7 -0
  20. package/dist/core/eslint.d.ts +12 -0
  21. package/dist/core/eslint.d.ts.map +1 -0
  22. package/dist/core/eslint.js +58 -0
  23. package/dist/core/index.d.ts +4 -0
  24. package/dist/core/index.d.ts.map +1 -0
  25. package/dist/core/index.js +4 -0
  26. package/dist/core/resolver.d.ts +11 -0
  27. package/dist/core/resolver.d.ts.map +1 -0
  28. package/dist/core/resolver.js +27 -0
  29. package/dist/core/typescript.d.ts +11 -0
  30. package/dist/core/typescript.d.ts.map +1 -0
  31. package/dist/core/typescript.js +63 -0
  32. package/dist/diagnostics.d.ts +43 -0
  33. package/dist/diagnostics.d.ts.map +1 -0
  34. package/dist/diagnostics.js +74 -0
  35. package/dist/docs/comments.d.ts +11 -0
  36. package/dist/docs/comments.d.ts.map +1 -0
  37. package/dist/docs/comments.js +30 -0
  38. package/dist/docs/index.d.ts +3 -0
  39. package/dist/docs/index.d.ts.map +1 -0
  40. package/dist/docs/index.js +3 -0
  41. package/dist/docs/jsdoc.d.ts +12 -0
  42. package/dist/docs/jsdoc.d.ts.map +1 -0
  43. package/dist/docs/jsdoc.js +77 -0
  44. package/dist/domain/index.d.ts +2 -0
  45. package/dist/domain/index.d.ts.map +1 -0
  46. package/dist/domain/index.js +2 -0
  47. package/dist/domain/rxjs-x.d.ts +11 -0
  48. package/dist/domain/rxjs-x.d.ts.map +1 -0
  49. package/dist/domain/rxjs-x.js +27 -0
  50. package/dist/index-spec-helpers.d.ts +44 -0
  51. package/dist/index-spec-helpers.d.ts.map +1 -0
  52. package/dist/index-spec-helpers.js +175 -0
  53. package/dist/index.d.ts +15 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +42 -0
  56. package/dist/module-taxonomy.d.ts +63 -0
  57. package/dist/module-taxonomy.d.ts.map +1 -0
  58. package/dist/module-taxonomy.js +21 -0
  59. package/dist/plugin-loaders.d.ts +110 -0
  60. package/dist/plugin-loaders.d.ts.map +1 -0
  61. package/dist/plugin-loaders.js +110 -0
  62. package/dist/style/index.d.ts +5 -0
  63. package/dist/style/index.d.ts.map +1 -0
  64. package/dist/style/index.js +5 -0
  65. package/dist/style/perfectionist.d.ts +11 -0
  66. package/dist/style/perfectionist.d.ts.map +1 -0
  67. package/dist/style/perfectionist.js +17 -0
  68. package/dist/style/prettier.d.ts +11 -0
  69. package/dist/style/prettier.d.ts.map +1 -0
  70. package/dist/style/prettier.js +15 -0
  71. package/dist/style/stylistic.d.ts +11 -0
  72. package/dist/style/stylistic.d.ts.map +1 -0
  73. package/dist/style/stylistic.js +15 -0
  74. package/dist/style/unicorn.d.ts +11 -0
  75. package/dist/style/unicorn.d.ts.map +1 -0
  76. package/dist/style/unicorn.js +15 -0
  77. package/dist/testing/index.d.ts +5 -0
  78. package/dist/testing/index.d.ts.map +1 -0
  79. package/dist/testing/index.js +5 -0
  80. package/dist/testing/jasmine.d.ts +11 -0
  81. package/dist/testing/jasmine.d.ts.map +1 -0
  82. package/dist/testing/jasmine.js +25 -0
  83. package/dist/testing/jest.d.ts +11 -0
  84. package/dist/testing/jest.d.ts.map +1 -0
  85. package/dist/testing/jest.js +27 -0
  86. package/dist/testing/playwright.d.ts +12 -0
  87. package/dist/testing/playwright.d.ts.map +1 -0
  88. package/dist/testing/playwright.js +29 -0
  89. package/dist/testing/vitest.d.ts +11 -0
  90. package/dist/testing/vitest.d.ts.map +1 -0
  91. package/dist/testing/vitest.js +32 -0
  92. package/dist/types.d.ts +41 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +2 -0
  95. package/dist/utilities.d.ts +52 -0
  96. package/dist/utilities.d.ts.map +1 -0
  97. package/dist/utilities.js +125 -0
  98. 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,3 @@
1
+ export { boundaries } from "./boundaries";
2
+ export { importX } from "./import-x";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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==
@@ -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,4 @@
1
+ export { eslint } from "./eslint";
2
+ export { resolver } from "./resolver";
3
+ export { typescript } from "./typescript";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}