@codeperfect/eslint-config 1.2.0 → 1.3.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 (174) hide show
  1. package/README.md +21 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/codeperfect-eslint-config-1.0.0.tgz +0 -0
  4. package/dist/domain/config-composition.d.ts +8 -0
  5. package/dist/domain/config-composition.d.ts.map +1 -0
  6. package/dist/domain/config-composition.js +55 -0
  7. package/dist/domain/index.d.ts +3 -1
  8. package/dist/domain/index.d.ts.map +1 -1
  9. package/dist/domain/index.js +3 -2
  10. package/dist/{module-taxonomy.d.ts → domain/module-taxonomy.d.ts} +3 -3
  11. package/dist/domain/module-taxonomy.d.ts.map +1 -0
  12. package/dist/domain/module-taxonomy.js +22 -0
  13. package/dist/{types.d.ts → domain/types.d.ts} +31 -6
  14. package/dist/domain/types.d.ts.map +1 -0
  15. package/dist/domain/types.js +2 -0
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -2
  19. package/dist/infrastructure/architecture/boundaries.d.ts +22 -0
  20. package/dist/infrastructure/architecture/boundaries.d.ts.map +1 -0
  21. package/dist/infrastructure/architecture/boundaries.js +175 -0
  22. package/dist/infrastructure/architecture/import-x.d.ts.map +1 -0
  23. package/dist/infrastructure/architecture/import-x.js +80 -0
  24. package/dist/infrastructure/architecture/index.d.ts +3 -0
  25. package/dist/infrastructure/architecture/index.d.ts.map +1 -0
  26. package/dist/infrastructure/architecture/index.js +3 -0
  27. package/dist/{config-factory.d.ts → infrastructure/config-factory.d.ts} +1 -1
  28. package/dist/infrastructure/config-factory.d.ts.map +1 -0
  29. package/dist/infrastructure/config-factory.js +44 -0
  30. package/dist/infrastructure/configs/index.d.ts +7 -0
  31. package/dist/infrastructure/configs/index.d.ts.map +1 -0
  32. package/dist/infrastructure/configs/index.js +7 -0
  33. package/dist/infrastructure/core/codeperfect.d.ts.map +1 -0
  34. package/dist/infrastructure/core/codeperfect.js +14 -0
  35. package/dist/infrastructure/core/eslint.d.ts.map +1 -0
  36. package/dist/infrastructure/core/eslint.js +58 -0
  37. package/dist/infrastructure/core/index.d.ts +5 -0
  38. package/dist/infrastructure/core/index.d.ts.map +1 -0
  39. package/dist/infrastructure/core/index.js +5 -0
  40. package/dist/infrastructure/core/resolver.d.ts.map +1 -0
  41. package/dist/infrastructure/core/resolver.js +27 -0
  42. package/dist/infrastructure/core/typescript.d.ts.map +1 -0
  43. package/dist/infrastructure/core/typescript.js +63 -0
  44. package/dist/{diagnostics.d.ts → infrastructure/diagnostics.d.ts} +13 -3
  45. package/dist/infrastructure/diagnostics.d.ts.map +1 -0
  46. package/dist/infrastructure/diagnostics.js +90 -0
  47. package/dist/infrastructure/docs/comments.d.ts.map +1 -0
  48. package/dist/infrastructure/docs/comments.js +30 -0
  49. package/dist/infrastructure/docs/index.d.ts +3 -0
  50. package/dist/infrastructure/docs/index.d.ts.map +1 -0
  51. package/dist/infrastructure/docs/index.js +3 -0
  52. package/dist/infrastructure/docs/jsdoc.d.ts.map +1 -0
  53. package/dist/infrastructure/docs/jsdoc.js +126 -0
  54. package/dist/infrastructure/index.d.ts +5 -0
  55. package/dist/infrastructure/index.d.ts.map +1 -0
  56. package/dist/infrastructure/index.js +4 -0
  57. package/dist/{plugin-loaders.d.ts → infrastructure/plugin-loaders.d.ts} +2 -2
  58. package/dist/infrastructure/plugin-loaders.d.ts.map +1 -0
  59. package/dist/infrastructure/plugin-loaders.js +115 -0
  60. package/dist/infrastructure/plugin-state.d.ts +26 -0
  61. package/dist/infrastructure/plugin-state.d.ts.map +1 -0
  62. package/dist/infrastructure/plugin-state.js +54 -0
  63. package/dist/infrastructure/rxjs-x.d.ts.map +1 -0
  64. package/dist/infrastructure/rxjs-x.js +27 -0
  65. package/dist/infrastructure/style/index.d.ts +5 -0
  66. package/dist/infrastructure/style/index.d.ts.map +1 -0
  67. package/dist/infrastructure/style/index.js +5 -0
  68. package/dist/infrastructure/style/perfectionist.d.ts.map +1 -0
  69. package/dist/infrastructure/style/perfectionist.js +31 -0
  70. package/dist/infrastructure/style/prettier.d.ts.map +1 -0
  71. package/dist/infrastructure/style/prettier.js +15 -0
  72. package/dist/infrastructure/style/stylistic.d.ts.map +1 -0
  73. package/dist/infrastructure/style/stylistic.js +17 -0
  74. package/dist/infrastructure/style/unicorn.d.ts.map +1 -0
  75. package/dist/infrastructure/style/unicorn.js +15 -0
  76. package/dist/infrastructure/testing/index.d.ts +5 -0
  77. package/dist/infrastructure/testing/index.d.ts.map +1 -0
  78. package/dist/infrastructure/testing/index.js +5 -0
  79. package/dist/infrastructure/testing/jasmine.d.ts.map +1 -0
  80. package/dist/infrastructure/testing/jasmine.js +26 -0
  81. package/dist/infrastructure/testing/jest.d.ts.map +1 -0
  82. package/dist/infrastructure/testing/jest.js +27 -0
  83. package/dist/infrastructure/testing/playwright.d.ts.map +1 -0
  84. package/dist/infrastructure/testing/playwright.js +29 -0
  85. package/dist/infrastructure/testing/vitest.d.ts.map +1 -0
  86. package/dist/infrastructure/testing/vitest.js +33 -0
  87. package/dist/{utilities.d.ts → infrastructure/utilities.d.ts} +2 -13
  88. package/dist/infrastructure/utilities.d.ts.map +1 -0
  89. package/dist/infrastructure/utilities.js +112 -0
  90. package/package.json +6 -4
  91. package/dist/architecture/boundaries.d.ts +0 -17
  92. package/dist/architecture/boundaries.d.ts.map +0 -1
  93. package/dist/architecture/boundaries.js +0 -69
  94. package/dist/architecture/import-x.d.ts.map +0 -1
  95. package/dist/architecture/import-x.js +0 -80
  96. package/dist/architecture/index.d.ts +0 -3
  97. package/dist/architecture/index.d.ts.map +0 -1
  98. package/dist/architecture/index.js +0 -3
  99. package/dist/config-composition.d.ts +0 -6
  100. package/dist/config-composition.d.ts.map +0 -1
  101. package/dist/config-composition.js +0 -39
  102. package/dist/config-factory.d.ts.map +0 -1
  103. package/dist/config-factory.js +0 -42
  104. package/dist/configs/index.d.ts +0 -7
  105. package/dist/configs/index.d.ts.map +0 -1
  106. package/dist/configs/index.js +0 -7
  107. package/dist/core/codeperfect.d.ts.map +0 -1
  108. package/dist/core/codeperfect.js +0 -14
  109. package/dist/core/eslint.d.ts.map +0 -1
  110. package/dist/core/eslint.js +0 -58
  111. package/dist/core/index.d.ts +0 -5
  112. package/dist/core/index.d.ts.map +0 -1
  113. package/dist/core/index.js +0 -5
  114. package/dist/core/resolver.d.ts.map +0 -1
  115. package/dist/core/resolver.js +0 -27
  116. package/dist/core/typescript.d.ts.map +0 -1
  117. package/dist/core/typescript.js +0 -63
  118. package/dist/diagnostics.d.ts.map +0 -1
  119. package/dist/diagnostics.js +0 -74
  120. package/dist/docs/comments.d.ts.map +0 -1
  121. package/dist/docs/comments.js +0 -30
  122. package/dist/docs/index.d.ts +0 -3
  123. package/dist/docs/index.d.ts.map +0 -1
  124. package/dist/docs/index.js +0 -3
  125. package/dist/docs/jsdoc.d.ts.map +0 -1
  126. package/dist/docs/jsdoc.js +0 -126
  127. package/dist/domain/rxjs-x.d.ts.map +0 -1
  128. package/dist/domain/rxjs-x.js +0 -27
  129. package/dist/module-taxonomy.d.ts.map +0 -1
  130. package/dist/module-taxonomy.js +0 -22
  131. package/dist/plugin-loaders.d.ts.map +0 -1
  132. package/dist/plugin-loaders.js +0 -115
  133. package/dist/style/index.d.ts +0 -5
  134. package/dist/style/index.d.ts.map +0 -1
  135. package/dist/style/index.js +0 -5
  136. package/dist/style/perfectionist.d.ts.map +0 -1
  137. package/dist/style/perfectionist.js +0 -31
  138. package/dist/style/prettier.d.ts.map +0 -1
  139. package/dist/style/prettier.js +0 -15
  140. package/dist/style/stylistic.d.ts.map +0 -1
  141. package/dist/style/stylistic.js +0 -17
  142. package/dist/style/unicorn.d.ts.map +0 -1
  143. package/dist/style/unicorn.js +0 -15
  144. package/dist/testing/index.d.ts +0 -5
  145. package/dist/testing/index.d.ts.map +0 -1
  146. package/dist/testing/index.js +0 -5
  147. package/dist/testing/jasmine.d.ts.map +0 -1
  148. package/dist/testing/jasmine.js +0 -25
  149. package/dist/testing/jest.d.ts.map +0 -1
  150. package/dist/testing/jest.js +0 -27
  151. package/dist/testing/playwright.d.ts.map +0 -1
  152. package/dist/testing/playwright.js +0 -29
  153. package/dist/testing/vitest.d.ts.map +0 -1
  154. package/dist/testing/vitest.js +0 -33
  155. package/dist/types.d.ts.map +0 -1
  156. package/dist/types.js +0 -2
  157. package/dist/utilities.d.ts.map +0 -1
  158. package/dist/utilities.js +0 -125
  159. /package/dist/{architecture → infrastructure/architecture}/import-x.d.ts +0 -0
  160. /package/dist/{core → infrastructure/core}/codeperfect.d.ts +0 -0
  161. /package/dist/{core → infrastructure/core}/eslint.d.ts +0 -0
  162. /package/dist/{core → infrastructure/core}/resolver.d.ts +0 -0
  163. /package/dist/{core → infrastructure/core}/typescript.d.ts +0 -0
  164. /package/dist/{docs → infrastructure/docs}/comments.d.ts +0 -0
  165. /package/dist/{docs → infrastructure/docs}/jsdoc.d.ts +0 -0
  166. /package/dist/{domain → infrastructure}/rxjs-x.d.ts +0 -0
  167. /package/dist/{style → infrastructure/style}/perfectionist.d.ts +0 -0
  168. /package/dist/{style → infrastructure/style}/prettier.d.ts +0 -0
  169. /package/dist/{style → infrastructure/style}/stylistic.d.ts +0 -0
  170. /package/dist/{style → infrastructure/style}/unicorn.d.ts +0 -0
  171. /package/dist/{testing → infrastructure/testing}/jasmine.d.ts +0 -0
  172. /package/dist/{testing → infrastructure/testing}/jest.d.ts +0 -0
  173. /package/dist/{testing → infrastructure/testing}/playwright.d.ts +0 -0
  174. /package/dist/{testing → infrastructure/testing}/vitest.d.ts +0 -0
@@ -0,0 +1,27 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Load Jest plugin configuration when available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await jest();
8
+ * ```
9
+ */
10
+ export async function jest() {
11
+ const { configs } = await import("eslint-plugin-jest");
12
+ return defineConfig({
13
+ extends: [configs["flat/all"]],
14
+ files: ["**/integration/jest/**/*.spec.ts"],
15
+ name: "jest/custom",
16
+ rules: {
17
+ "jest/prefer-expect-assertions": "off",
18
+ },
19
+ }, {
20
+ files: ["**/integration/jest-global/**/*.spec.ts"],
21
+ name: "jest/custom-global-overrides",
22
+ rules: {
23
+ "jest/prefer-importing-jest-globals": "off",
24
+ },
25
+ });
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmZyYXN0cnVjdHVyZS90ZXN0aW5nL2plc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJO0lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZELE9BQU8sWUFBWSxDQUNqQjtRQUNFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixLQUFLLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztRQUMzQyxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUU7WUFDTCwrQkFBK0IsRUFBRSxLQUFLO1NBQ3ZDO0tBQ0YsRUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDLHlDQUF5QyxDQUFDO1FBQ2xELElBQUksRUFBRSw4QkFBOEI7UUFDcEMsS0FBSyxFQUFFO1lBQ0wsb0NBQW9DLEVBQUUsS0FBSztTQUM1QztLQUNGLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBMb2FkIEplc3QgcGx1Z2luIGNvbmZpZ3VyYXRpb24gd2hlbiBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IGplc3QoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gamVzdCgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4ge1xuICBjb25zdCB7IGNvbmZpZ3MgfSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tamVzdFwiKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtjb25maWdzW1wiZmxhdC9hbGxcIl1dLFxuICAgICAgZmlsZXM6IFtcIioqL2ludGVncmF0aW9uL2plc3QvKiovKi5zcGVjLnRzXCJdLFxuICAgICAgbmFtZTogXCJqZXN0L2N1c3RvbVwiLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJqZXN0L3ByZWZlci1leHBlY3QtYXNzZXJ0aW9uc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBbXCIqKi9pbnRlZ3JhdGlvbi9qZXN0LWdsb2JhbC8qKi8qLnNwZWMudHNcIl0sXG4gICAgICBuYW1lOiBcImplc3QvY3VzdG9tLWdsb2JhbC1vdmVycmlkZXNcIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiamVzdC9wcmVmZXItaW1wb3J0aW5nLWplc3QtZ2xvYmFsc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xufVxuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/testing/playwright.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,iBAAe,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAuBpD;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Build and return Playwright-specific ESLint configs and rule adjustments.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await playwright();
8
+ * ```
9
+ */
10
+ async function playwright() {
11
+ const playwrightModule = await import("eslint-plugin-playwright");
12
+ const { configs, rules } = playwrightModule.default;
13
+ const customIgnore = new Set([""]);
14
+ const { rules: recommendedRules = {} } = configs["flat/recommended"];
15
+ const allConfigs = new Set(Object.keys({ ...recommendedRules }));
16
+ const customError = Object.fromEntries(Object.keys(rules)
17
+ .filter((rule) => !customIgnore.has(rule))
18
+ .map((rule) => `playwright/${rule}`)
19
+ .filter((rule) => !allConfigs.has(rule))
20
+ .map((rule) => [rule, "error"]));
21
+ return defineConfig({
22
+ extends: [configs["flat/recommended"]],
23
+ files: ["e2e/**/*.{spec,test}.{ts,js}"],
24
+ name: "playwright/custom-error",
25
+ rules: customError,
26
+ });
27
+ }
28
+ export { playwright };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheXdyaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmZyYXN0cnVjdHVyZS90ZXN0aW5nL3BsYXl3cmlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLFVBQVU7SUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBRXBELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2YsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1NBQ25DLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFVLENBQUMsQ0FDM0MsQ0FBQztJQUVGLE9BQU8sWUFBWSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO1FBQ3ZDLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIEJ1aWxkIGFuZCByZXR1cm4gUGxheXdyaWdodC1zcGVjaWZpYyBFU0xpbnQgY29uZmlncyBhbmQgcnVsZSBhZGp1c3RtZW50cy5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgcGxheXdyaWdodCgpO1xuICogYGBgXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBsYXl3cmlnaHQoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+IHtcbiAgY29uc3QgcGxheXdyaWdodE1vZHVsZSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tcGxheXdyaWdodFwiKTtcbiAgY29uc3QgeyBjb25maWdzLCBydWxlcyB9ID0gcGxheXdyaWdodE1vZHVsZS5kZWZhdWx0O1xuXG4gIGNvbnN0IGN1c3RvbUlnbm9yZSA9IG5ldyBTZXQoW1wiXCJdKTtcblxuICBjb25zdCB7IHJ1bGVzOiByZWNvbW1lbmRlZFJ1bGVzID0ge30gfSA9IGNvbmZpZ3NbXCJmbGF0L3JlY29tbWVuZGVkXCJdO1xuICBjb25zdCBhbGxDb25maWdzID0gbmV3IFNldChPYmplY3Qua2V5cyh7IC4uLnJlY29tbWVuZGVkUnVsZXMgfSkpO1xuXG4gIGNvbnN0IGN1c3RvbUVycm9yID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKHJ1bGVzKVxuICAgICAgLmZpbHRlcigocnVsZSkgPT4gIWN1c3RvbUlnbm9yZS5oYXMocnVsZSkpXG4gICAgICAubWFwKChydWxlKSA9PiBgcGxheXdyaWdodC8ke3J1bGV9YClcbiAgICAgIC5maWx0ZXIoKHJ1bGUpID0+ICFhbGxDb25maWdzLmhhcyhydWxlKSlcbiAgICAgIC5tYXAoKHJ1bGUpID0+IFtydWxlLCBcImVycm9yXCJdIGFzIGNvbnN0KSxcbiAgKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBleHRlbmRzOiBbY29uZmlnc1tcImZsYXQvcmVjb21tZW5kZWRcIl1dLFxuICAgIGZpbGVzOiBbXCJlMmUvKiovKi57c3BlYyx0ZXN0fS57dHMsanN9XCJdLFxuICAgIG5hbWU6IFwicGxheXdyaWdodC9jdXN0b20tZXJyb3JcIixcbiAgICBydWxlczogY3VzdG9tRXJyb3IsXG4gIH0pO1xufVxuXG5leHBvcnQgeyBwbGF5d3JpZ2h0IH07XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/testing/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAsCvD"}
@@ -0,0 +1,33 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Load Vitest plugin configuration when available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await vitest();
8
+ * ```
9
+ */
10
+ export async function vitest() {
11
+ const vitestModule = await import("@vitest/eslint-plugin");
12
+ const plugin = vitestModule.default;
13
+ const allConfig = plugin?.configs?.all;
14
+ if (allConfig === void 0) {
15
+ return [];
16
+ }
17
+ return defineConfig({ settings: { vitest: { typecheck: true } } }, {
18
+ extends: [allConfig],
19
+ files: ["**/*.{spec,test}.ts"],
20
+ name: "vitest/custom",
21
+ rules: {
22
+ "vitest/consistent-test-filename": [
23
+ "error",
24
+ { pattern: String.raw `.*\.spec\.[tj]sx?$` },
25
+ ],
26
+ "vitest/no-hooks": "off",
27
+ "vitest/prefer-expect-assertions": "off",
28
+ "vitest/require-mock-type-parameters": "off",
29
+ "vitest/unbound-method": "off",
30
+ },
31
+ });
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luZnJhc3RydWN0dXJlL3Rlc3Rpbmcvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTTtJQUMxQixNQUFNLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzNELE1BQU0sTUFBTSxHQUNWLFlBVUQsQ0FBQyxPQUFPLENBQUM7SUFDVixNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUV2QyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sWUFBWSxDQUNqQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQzdDO1FBQ0UsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3BCLEtBQUssRUFBRSxDQUFDLHFCQUFxQixDQUFDO1FBQzlCLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRTtZQUNMLGlDQUFpQyxFQUFFO2dCQUNqQyxPQUFPO2dCQUNQLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUEsb0JBQW9CLEVBQUU7YUFDNUM7WUFDRCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGlDQUFpQyxFQUFFLEtBQUs7WUFDeEMscUNBQXFDLEVBQUUsS0FBSztZQUM1Qyx1QkFBdUIsRUFBRSxLQUFLO1NBQy9CO0tBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIExvYWQgVml0ZXN0IHBsdWdpbiBjb25maWd1cmF0aW9uIHdoZW4gYXZhaWxhYmxlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCB2aXRlc3QoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdml0ZXN0KCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHZpdGVzdE1vZHVsZSA9IGF3YWl0IGltcG9ydChcIkB2aXRlc3QvZXNsaW50LXBsdWdpblwiKTtcbiAgY29uc3QgcGx1Z2luID0gKFxuICAgIHZpdGVzdE1vZHVsZSBhcyB7XG4gICAgICAvKiogRGVmYXVsdCBoZWxwZXIgdmFsdWUuICovXG4gICAgICBkZWZhdWx0Pzoge1xuICAgICAgICAvKiogQ29uZmlncyBoZWxwZXIgdmFsdWUuICovXG4gICAgICAgIGNvbmZpZ3M/OiB7XG4gICAgICAgICAgLyoqIEFsbCBoZWxwZXIgdmFsdWUuICovXG4gICAgICAgICAgYWxsPzogTGludGVyLkNvbmZpZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfVxuICApLmRlZmF1bHQ7XG4gIGNvbnN0IGFsbENvbmZpZyA9IHBsdWdpbj8uY29uZmlncz8uYWxsO1xuXG4gIGlmIChhbGxDb25maWcgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgeyBzZXR0aW5nczogeyB2aXRlc3Q6IHsgdHlwZWNoZWNrOiB0cnVlIH0gfSB9LFxuICAgIHtcbiAgICAgIGV4dGVuZHM6IFthbGxDb25maWddLFxuICAgICAgZmlsZXM6IFtcIioqLyoue3NwZWMsdGVzdH0udHNcIl0sXG4gICAgICBuYW1lOiBcInZpdGVzdC9jdXN0b21cIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwidml0ZXN0L2NvbnNpc3RlbnQtdGVzdC1maWxlbmFtZVwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgcGF0dGVybjogU3RyaW5nLnJhd2AuKlxcLnNwZWNcXC5bdGpdc3g/JGAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJ2aXRlc3Qvbm8taG9va3NcIjogXCJvZmZcIixcbiAgICAgICAgXCJ2aXRlc3QvcHJlZmVyLWV4cGVjdC1hc3NlcnRpb25zXCI6IFwib2ZmXCIsXG4gICAgICAgIFwidml0ZXN0L3JlcXVpcmUtbW9jay10eXBlLXBhcmFtZXRlcnNcIjogXCJvZmZcIixcbiAgICAgICAgXCJ2aXRlc3QvdW5ib3VuZC1tZXRob2RcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import type { Linter } from "eslint";
2
- import type { PluginName } from "./types";
2
+ import type { PluginName } from "../domain/index.js";
3
3
  /** Runtime loading modes for plugin config loaders. */
4
4
  type LoadMode = "optional" | "required";
5
5
  /**
@@ -24,17 +24,6 @@ declare function applyRuleOverrides(config: Linter.Config[], ruleOverrides?: Lin
24
24
  * ```
25
25
  */
26
26
  declare function collectAvailablePlugins(configs: Linter.Config[]): ReadonlySet<string>;
27
- /**
28
- * Checks if a plugin is disabled in the options.
29
- * @param pluginName Input pluginName value.
30
- * @param disabledPlugins Input disabledPlugins value.
31
- * @returns Return value output.
32
- * @example
33
- * ```typescript
34
- * isPluginDisabled();
35
- * ```
36
- */
37
- declare function isPluginDisabled(pluginName: PluginName, disabledPlugins?: readonly PluginName[]): boolean;
38
27
  /**
39
28
  * Loads a plugin config with a helpful, colorful error message on failure.
40
29
  * @param pluginName Input pluginName value.
@@ -47,6 +36,6 @@ declare function isPluginDisabled(pluginName: PluginName, disabledPlugins?: read
47
36
  * ```
48
37
  */
49
38
  declare function loadPluginConfig(pluginName: PluginName, loader: () => Linter.Config[] | Promise<Linter.Config[]>, mode?: LoadMode): Promise<Linter.Config[]>;
50
- export { applyRuleOverrides, collectAvailablePlugins, isPluginDisabled, loadPluginConfig, };
39
+ export { applyRuleOverrides, collectAvailablePlugins, loadPluginConfig };
51
40
  export type { LoadMode };
52
41
  //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/infrastructure/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI5C,uDAAuD;AACvD,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAExC;;;;;;;;;;GAUG;AACH,iBAAS,kBAAkB,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACvB,aAAa,CAAC,EAAE,MAAM,CAAC,WAAW,EAClC,gBAAgB,GAAE,WAAW,CAAC,MAAM,CAAa,GAChD,MAAM,CAAC,MAAM,EAAE,CAcjB;AAED;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GACvB,WAAW,CAAC,MAAM,CAAC,CAYrB;AA+BD;;;;;;;;;;GAUG;AACH,iBAAe,gBAAgB,CAC7B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EACxD,IAAI,GAAE,QAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAY1B;AA4BD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,CAAC;AAEzE,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { reportPluginLoadIssue, reportRuleOverrideSkip } from "./diagnostics.js";
2
+ /**
3
+ * Applies rule overrides to a configuration array.
4
+ * @param config Input config value.
5
+ * @param ruleOverrides Input ruleOverrides value.
6
+ * @param availablePlugins Input availablePlugins value.
7
+ * @returns Return value output.
8
+ * @example
9
+ * ```typescript
10
+ * applyRuleOverrides([], { "no-console": "off" });
11
+ * ```
12
+ */
13
+ function applyRuleOverrides(config, ruleOverrides, availablePlugins = new Set()) {
14
+ const filteredRules = filterRuleOverrides(ruleOverrides, availablePlugins);
15
+ if (filteredRules === void 0) {
16
+ return config;
17
+ }
18
+ return [
19
+ ...config,
20
+ {
21
+ name: "custom/rule-overrides",
22
+ rules: filteredRules,
23
+ },
24
+ ];
25
+ }
26
+ /**
27
+ * Collects plugin names from config entries.
28
+ * @param configs Input configs value.
29
+ * @returns Return value output.
30
+ * @example
31
+ * ```typescript
32
+ * collectAvailablePlugins();
33
+ * ```
34
+ */
35
+ function collectAvailablePlugins(configs) {
36
+ const plugins = new Set();
37
+ for (const config of configs) {
38
+ if (config.plugins !== void 0) {
39
+ for (const pluginName of Object.keys(config.plugins)) {
40
+ plugins.add(pluginName);
41
+ }
42
+ }
43
+ }
44
+ return plugins;
45
+ }
46
+ /**
47
+ * Filters rule overrides to those that can be applied.
48
+ * @param ruleOverrides Input ruleOverrides value.
49
+ * @param availablePlugins Input availablePlugins value.
50
+ * @returns Return value output.
51
+ * @example
52
+ * ```typescript
53
+ * filterRuleOverrides();
54
+ * ```
55
+ */
56
+ function filterRuleOverrides(ruleOverrides, availablePlugins) {
57
+ if (ruleOverrides === void 0 || Object.keys(ruleOverrides).length === 0) {
58
+ return void 0;
59
+ }
60
+ const filteredRules = {};
61
+ for (const [ruleName, ruleValue] of Object.entries(ruleOverrides)) {
62
+ if (!shouldSkipRuleOverride(ruleName, availablePlugins)) {
63
+ filteredRules[ruleName] = ruleValue;
64
+ }
65
+ }
66
+ return Object.keys(filteredRules).length === 0 ? void 0 : filteredRules;
67
+ }
68
+ /**
69
+ * Loads a plugin config with a helpful, colorful error message on failure.
70
+ * @param pluginName Input pluginName value.
71
+ * @param loader Input loader value.
72
+ * @param mode Specifies whether loader failures are fatal or skippable.
73
+ * @returns Return value output.
74
+ * @example
75
+ * ```typescript
76
+ * loadPluginConfig();
77
+ * ```
78
+ */
79
+ async function loadPluginConfig(pluginName, loader, mode = "optional") {
80
+ try {
81
+ return await loader();
82
+ }
83
+ catch (error) {
84
+ reportPluginLoadIssue(pluginName, error, mode);
85
+ if (mode === "required") {
86
+ throw error;
87
+ }
88
+ return [];
89
+ }
90
+ }
91
+ /**
92
+ * Determines whether a rule override should be skipped.
93
+ * @param ruleName Input ruleName value.
94
+ * @param availablePlugins Input availablePlugins value.
95
+ * @returns Return value output.
96
+ * @example
97
+ * ```typescript
98
+ * shouldSkipRuleOverride();
99
+ * ```
100
+ */
101
+ function shouldSkipRuleOverride(ruleName, availablePlugins) {
102
+ const [pluginName = ""] = ruleName.split("/");
103
+ const isPluginRule = ruleName.includes("/");
104
+ const hasPlugin = availablePlugins.has(pluginName);
105
+ if (isPluginRule && !hasPlugin) {
106
+ reportRuleOverrideSkip(ruleName, pluginName);
107
+ return true;
108
+ }
109
+ return false;
110
+ }
111
+ export { applyRuleOverrides, collectAvailablePlugins, loadPluginConfig };
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZnJhc3RydWN0dXJlL3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLOUU7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsa0JBQWtCLENBQ3pCLE1BQXVCLEVBQ3ZCLGFBQWtDLEVBQ2xDLG1CQUF3QyxJQUFJLEdBQUcsRUFBRTtJQUVqRCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUUzRSxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxNQUFNO1FBQ1Q7WUFDRSxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLEtBQUssRUFBRSxhQUFhO1NBQ0o7S0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLE9BQXdCO0lBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFbEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLGFBQTZDLEVBQzdDLGdCQUFxQztJQUVyQyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBdUIsRUFBRSxDQUFDO0lBRTdDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDeEQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0FBQzFFLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsS0FBSyxVQUFVLGdCQUFnQixDQUM3QixVQUFzQixFQUN0QixNQUF3RCxFQUN4RCxPQUFpQixVQUFVO0lBRTNCLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLFFBQWdCLEVBQ2hCLGdCQUFxQztJQUVyQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFbkQsSUFBSSxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5OYW1lIH0gZnJvbSBcIi4uL2RvbWFpblwiO1xuXG5pbXBvcnQgeyByZXBvcnRQbHVnaW5Mb2FkSXNzdWUsIHJlcG9ydFJ1bGVPdmVycmlkZVNraXAgfSBmcm9tIFwiLi9kaWFnbm9zdGljc1wiO1xuXG4vKiogUnVudGltZSBsb2FkaW5nIG1vZGVzIGZvciBwbHVnaW4gY29uZmlnIGxvYWRlcnMuICovXG50eXBlIExvYWRNb2RlID0gXCJvcHRpb25hbFwiIHwgXCJyZXF1aXJlZFwiO1xuXG4vKipcbiAqIEFwcGxpZXMgcnVsZSBvdmVycmlkZXMgdG8gYSBjb25maWd1cmF0aW9uIGFycmF5LlxuICogQHBhcmFtIGNvbmZpZyBJbnB1dCBjb25maWcgdmFsdWUuXG4gKiBAcGFyYW0gcnVsZU92ZXJyaWRlcyBJbnB1dCBydWxlT3ZlcnJpZGVzIHZhbHVlLlxuICogQHBhcmFtIGF2YWlsYWJsZVBsdWdpbnMgSW5wdXQgYXZhaWxhYmxlUGx1Z2lucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwbHlSdWxlT3ZlcnJpZGVzKFtdLCB7IFwibm8tY29uc29sZVwiOiBcIm9mZlwiIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGFwcGx5UnVsZU92ZXJyaWRlcyhcbiAgY29uZmlnOiBMaW50ZXIuQ29uZmlnW10sXG4gIHJ1bGVPdmVycmlkZXM/OiBMaW50ZXIuUnVsZXNSZWNvcmQsXG4gIGF2YWlsYWJsZVBsdWdpbnM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KCksXG4pOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBmaWx0ZXJlZFJ1bGVzID0gZmlsdGVyUnVsZU92ZXJyaWRlcyhydWxlT3ZlcnJpZGVzLCBhdmFpbGFibGVQbHVnaW5zKTtcblxuICBpZiAoZmlsdGVyZWRSdWxlcyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29uZmlnLFxuICAgIHtcbiAgICAgIG5hbWU6IFwiY3VzdG9tL3J1bGUtb3ZlcnJpZGVzXCIsXG4gICAgICBydWxlczogZmlsdGVyZWRSdWxlcyxcbiAgICB9IGFzIExpbnRlci5Db25maWcsXG4gIF07XG59XG5cbi8qKlxuICogQ29sbGVjdHMgcGx1Z2luIG5hbWVzIGZyb20gY29uZmlnIGVudHJpZXMuXG4gKiBAcGFyYW0gY29uZmlncyBJbnB1dCBjb25maWdzIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucygpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RBdmFpbGFibGVQbHVnaW5zKFxuICBjb25maWdzOiBMaW50ZXIuQ29uZmlnW10sXG4pOiBSZWFkb25seVNldDxzdHJpbmc+IHtcbiAgY29uc3QgcGx1Z2lucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcbiAgICBpZiAoY29uZmlnLnBsdWdpbnMgIT09IHZvaWQgMCkge1xuICAgICAgZm9yIChjb25zdCBwbHVnaW5OYW1lIG9mIE9iamVjdC5rZXlzKGNvbmZpZy5wbHVnaW5zKSkge1xuICAgICAgICBwbHVnaW5zLmFkZChwbHVnaW5OYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGx1Z2lucztcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHJ1bGUgb3ZlcnJpZGVzIHRvIHRob3NlIHRoYXQgY2FuIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcnVsZU92ZXJyaWRlcyBJbnB1dCBydWxlT3ZlcnJpZGVzIHZhbHVlLlxuICogQHBhcmFtIGF2YWlsYWJsZVBsdWdpbnMgSW5wdXQgYXZhaWxhYmxlUGx1Z2lucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZmlsdGVyUnVsZU92ZXJyaWRlcygpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclJ1bGVPdmVycmlkZXMoXG4gIHJ1bGVPdmVycmlkZXM6IExpbnRlci5SdWxlc1JlY29yZCB8IHVuZGVmaW5lZCxcbiAgYXZhaWxhYmxlUGx1Z2luczogUmVhZG9ubHlTZXQ8c3RyaW5nPixcbik6IExpbnRlci5SdWxlc1JlY29yZCB8IHVuZGVmaW5lZCB7XG4gIGlmIChydWxlT3ZlcnJpZGVzID09PSB2b2lkIDAgfHwgT2JqZWN0LmtleXMocnVsZU92ZXJyaWRlcykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcmVkUnVsZXM6IExpbnRlci5SdWxlc1JlY29yZCA9IHt9O1xuXG4gIGZvciAoY29uc3QgW3J1bGVOYW1lLCBydWxlVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJ1bGVPdmVycmlkZXMpKSB7XG4gICAgaWYgKCFzaG91bGRTa2lwUnVsZU92ZXJyaWRlKHJ1bGVOYW1lLCBhdmFpbGFibGVQbHVnaW5zKSkge1xuICAgICAgZmlsdGVyZWRSdWxlc1tydWxlTmFtZV0gPSBydWxlVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKGZpbHRlcmVkUnVsZXMpLmxlbmd0aCA9PT0gMCA/IHZvaWQgMCA6IGZpbHRlcmVkUnVsZXM7XG59XG5cbi8qKlxuICogTG9hZHMgYSBwbHVnaW4gY29uZmlnIHdpdGggYSBoZWxwZnVsLCBjb2xvcmZ1bCBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuXG4gKiBAcGFyYW0gcGx1Z2luTmFtZSBJbnB1dCBwbHVnaW5OYW1lIHZhbHVlLlxuICogQHBhcmFtIGxvYWRlciBJbnB1dCBsb2FkZXIgdmFsdWUuXG4gKiBAcGFyYW0gbW9kZSBTcGVjaWZpZXMgd2hldGhlciBsb2FkZXIgZmFpbHVyZXMgYXJlIGZhdGFsIG9yIHNraXBwYWJsZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbG9hZFBsdWdpbkNvbmZpZygpO1xuICogYGBgXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRQbHVnaW5Db25maWcoXG4gIHBsdWdpbk5hbWU6IFBsdWdpbk5hbWUsXG4gIGxvYWRlcjogKCkgPT4gTGludGVyLkNvbmZpZ1tdIHwgUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+LFxuICBtb2RlOiBMb2FkTW9kZSA9IFwib3B0aW9uYWxcIixcbik6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGxvYWRlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydFBsdWdpbkxvYWRJc3N1ZShwbHVnaW5OYW1lLCBlcnJvciwgbW9kZSk7XG5cbiAgICBpZiAobW9kZSA9PT0gXCJyZXF1aXJlZFwiKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBydWxlIG92ZXJyaWRlIHNob3VsZCBiZSBza2lwcGVkLlxuICogQHBhcmFtIHJ1bGVOYW1lIElucHV0IHJ1bGVOYW1lIHZhbHVlLlxuICogQHBhcmFtIGF2YWlsYWJsZVBsdWdpbnMgSW5wdXQgYXZhaWxhYmxlUGx1Z2lucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc2hvdWxkU2tpcFJ1bGVPdmVycmlkZSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFNraXBSdWxlT3ZlcnJpZGUoXG4gIHJ1bGVOYW1lOiBzdHJpbmcsXG4gIGF2YWlsYWJsZVBsdWdpbnM6IFJlYWRvbmx5U2V0PHN0cmluZz4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgW3BsdWdpbk5hbWUgPSBcIlwiXSA9IHJ1bGVOYW1lLnNwbGl0KFwiL1wiKTtcbiAgY29uc3QgaXNQbHVnaW5SdWxlID0gcnVsZU5hbWUuaW5jbHVkZXMoXCIvXCIpO1xuICBjb25zdCBoYXNQbHVnaW4gPSBhdmFpbGFibGVQbHVnaW5zLmhhcyhwbHVnaW5OYW1lKTtcblxuICBpZiAoaXNQbHVnaW5SdWxlICYmICFoYXNQbHVnaW4pIHtcbiAgICByZXBvcnRSdWxlT3ZlcnJpZGVTa2lwKHJ1bGVOYW1lLCBwbHVnaW5OYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IHsgYXBwbHlSdWxlT3ZlcnJpZGVzLCBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucywgbG9hZFBsdWdpbkNvbmZpZyB9O1xuXG5leHBvcnQgdHlwZSB7IExvYWRNb2RlIH07XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeperfect/eslint-config",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "A shareable flat ESLint config for TypeScript repositories",
5
5
  "keywords": [
6
6
  "eslint",
@@ -38,9 +38,10 @@
38
38
  "commit": "npx --yes git-cz",
39
39
  "prepare": "husky",
40
40
  "\n# --------------- BUILDING --------------- #": "",
41
- "build": "npm run clean && npm run compile",
41
+ "build": "npm run clean && npm run compile && npm run resolve-paths",
42
42
  "clean": "npx --yes rimraf dist",
43
- "compile": "tsc -b -f ./tsconfig.build.json",
43
+ "compile": "tsc --build --force ./tsconfig.build.json",
44
+ "resolve-paths": "tsc-alias --project ./tsconfig.build.json --resolve-full-paths",
44
45
  "pack": "npm pack --pack-destination dist",
45
46
  "\n# --------------- DOCS --------------- #": "",
46
47
  "docs": "npm run docs:clean && npm run docs:api",
@@ -62,7 +63,7 @@
62
63
  "eslint:inspect": "npx --yes @eslint/config-inspector",
63
64
  "\n# --------------- TESTING --------------- #": "",
64
65
  "typecheck": "tsc --noEmit",
65
- "typecheck:spec": "tsc -p tsconfig.spec.json --noEmit",
66
+ "typecheck:spec": "tsc --project tsconfig.spec.json --noEmit",
66
67
  "validate": "npm run lint && npm run typecheck && npm run typecheck:spec && npm run test && npm run build && npm run pack",
67
68
  "\n\t• --------------- unit --------------- •": "",
68
69
  "tdd": "npx --yes vitest run --watch --silent=true --coverage.enabled=false",
@@ -130,6 +131,7 @@
130
131
  "lodash-es": "^4.17.23",
131
132
  "rimraf": "^6.1.3",
132
133
  "semantic-release": "^25.0.3",
134
+ "tsc-alias": "^1.8.16",
133
135
  "typedoc": "^0.28.18",
134
136
  "typedoc-plugin-markdown": "^4.11.0",
135
137
  "typescript": "^5.9.3",
@@ -1,17 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,69 +0,0 @@
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
@@ -1 +0,0 @@
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;AAqDrC;;;;;;;GAOG;AACH,iBAAe,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAmCjD;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1,80 +0,0 @@
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
- "no-unused-modules",
21
- "order",
22
- "prefer-default-export",
23
- ]);
24
- const allConfigs = new Set([warnings, recommended, typescript].flatMap((config) => Object.keys(config.rules ?? {})));
25
- const customError = Object.fromEntries(Object.keys(rules)
26
- .filter((rule) => !customIgnore.has(rule))
27
- .map((rule) => `import-x/${rule}`)
28
- .filter((rule) => !allConfigs.has(rule))
29
- .map((rule) => [rule, "error"]));
30
- return [
31
- warnings,
32
- recommended,
33
- typescript,
34
- {
35
- name: "import-x/custom-error",
36
- rules: customError,
37
- },
38
- ];
39
- }
40
- /**
41
- * Loads the import-x plugin configuration.
42
- * @returns Return value output.
43
- * @example
44
- * ```typescript
45
- * await importX();
46
- * ```
47
- */
48
- async function importX() {
49
- return defineConfig(...(await buildCustomErrorRules()), {
50
- name: "import-x/custom-typescript",
51
- rules: {
52
- "import-x/no-relative-parent-imports": "off",
53
- "import-x/unambiguous": "off",
54
- },
55
- }, {
56
- name: "import-x/custom-node_modules",
57
- rules: {
58
- "import-x/no-internal-modules": [
59
- "error",
60
- {
61
- allow: [
62
- "eslint/config",
63
- "eslint-plugin-boundaries/config",
64
- "eslint-plugin-prettier/recommended",
65
- "vitest/config",
66
- "@eslint-community/eslint-plugin-eslint-comments/configs",
67
- ],
68
- },
69
- ],
70
- },
71
- }, {
72
- ignores: ["*", "packages/*/*", "packages/*/*/*"],
73
- name: "import-x/custom-root-config-files",
74
- rules: {
75
- "import-x/no-default-export": "error",
76
- },
77
- });
78
- }
79
- export { importX };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2ltcG9ydC14LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUscUJBQXFCO0lBQ2xDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN0RSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFFMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDM0IsMEJBQTBCO1FBQzFCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIsT0FBTztRQUNQLHVCQUF1QjtLQUN4QixDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FDeEIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FDaEMsQ0FDRixDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDZixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDakMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQVUsQ0FBQyxDQUMzQyxDQUFDO0lBRUYsT0FBTztRQUNMLFFBQXlCO1FBQ3pCLFdBQTRCO1FBQzVCLFVBQTJCO1FBQzNCO1lBQ0UsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixLQUFLLEVBQUUsV0FBVztTQUNuQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILEtBQUssVUFBVSxPQUFPO0lBQ3BCLE9BQU8sWUFBWSxDQUNqQixHQUFHLENBQUMsTUFBTSxxQkFBcUIsRUFBRSxDQUFDLEVBQ2xDO1FBQ0UsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxLQUFLLEVBQUU7WUFDTCxxQ0FBcUMsRUFBRSxLQUFLO1lBQzVDLHNCQUFzQixFQUFFLEtBQUs7U0FDOUI7S0FDRixFQUNEO1FBQ0UsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxLQUFLLEVBQUU7WUFDTCw4QkFBOEIsRUFBRTtnQkFDOUIsT0FBTztnQkFDUDtvQkFDRSxLQUFLLEVBQUU7d0JBQ0wsZUFBZTt3QkFDZixpQ0FBaUM7d0JBQ2pDLG9DQUFvQzt3QkFDcEMsZUFBZTt3QkFDZix5REFBeUQ7cUJBQzFEO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLEVBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDO1FBQ2hELElBQUksRUFBRSxtQ0FBbUM7UUFDekMsS0FBSyxFQUFFO1lBQ0wsNEJBQTRCLEVBQUUsT0FBTztTQUN0QztLQUNGLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBCdWlsZCBjdXN0b20gZXJyb3IgcnVsZXMgZm9yIGltcG9ydC14IHBsdWdpbiBieSBleGNsdWRpbmcgY2VydGFpbiBydWxlc1xuICogYW5kIGVuc3VyaW5nIG5vIG92ZXJsYXAgd2l0aCBleGlzdGluZyBjb25maWd1cmF0aW9ucy5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgYnVpbGRDdXN0b21FcnJvclJ1bGVzKCk7XG4gKiBgYGBcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYnVpbGRDdXN0b21FcnJvclJ1bGVzKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHsgZmxhdENvbmZpZ3MsIHJ1bGVzIH0gPSBhd2FpdCBpbXBvcnQoXCJlc2xpbnQtcGx1Z2luLWltcG9ydC14XCIpO1xuICBjb25zdCB7IHJlY29tbWVuZGVkLCB0eXBlc2NyaXB0LCB3YXJuaW5ncyB9ID0gZmxhdENvbmZpZ3M7XG5cbiAgY29uc3QgY3VzdG9tSWdub3JlID0gbmV3IFNldChbXG4gICAgXCJkeW5hbWljLWltcG9ydC1jaHVua25hbWVcIixcbiAgICBcIm5vLWRlZmF1bHQtZXhwb3J0XCIsXG4gICAgXCJuby1kZXByZWNhdGVkXCIsXG4gICAgXCJuby1uYW1lZC1leHBvcnRcIixcbiAgICBcIm5vLW5hbWVzcGFjZVwiLFxuICAgIFwibm8tdW51c2VkLW1vZHVsZXNcIixcbiAgICBcIm9yZGVyXCIsXG4gICAgXCJwcmVmZXItZGVmYXVsdC1leHBvcnRcIixcbiAgXSk7XG5cbiAgY29uc3QgYWxsQ29uZmlncyA9IG5ldyBTZXQoXG4gICAgW3dhcm5pbmdzLCByZWNvbW1lbmRlZCwgdHlwZXNjcmlwdF0uZmxhdE1hcCgoY29uZmlnKSA9PlxuICAgICAgT2JqZWN0LmtleXMoY29uZmlnLnJ1bGVzID8/IHt9KSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IGN1c3RvbUVycm9yID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKHJ1bGVzKVxuICAgICAgLmZpbHRlcigocnVsZSkgPT4gIWN1c3RvbUlnbm9yZS5oYXMocnVsZSkpXG4gICAgICAubWFwKChydWxlKSA9PiBgaW1wb3J0LXgvJHtydWxlfWApXG4gICAgICAuZmlsdGVyKChydWxlKSA9PiAhYWxsQ29uZmlncy5oYXMocnVsZSkpXG4gICAgICAubWFwKChydWxlKSA9PiBbcnVsZSwgXCJlcnJvclwiXSBhcyBjb25zdCksXG4gICk7XG5cbiAgcmV0dXJuIFtcbiAgICB3YXJuaW5ncyBhcyBMaW50ZXIuQ29uZmlnLFxuICAgIHJlY29tbWVuZGVkIGFzIExpbnRlci5Db25maWcsXG4gICAgdHlwZXNjcmlwdCBhcyBMaW50ZXIuQ29uZmlnLFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaW1wb3J0LXgvY3VzdG9tLWVycm9yXCIsXG4gICAgICBydWxlczogY3VzdG9tRXJyb3IsXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgaW1wb3J0LXggcGx1Z2luIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IGltcG9ydFgoKTtcbiAqIGBgYFxuICovXG5hc3luYyBmdW5jdGlvbiBpbXBvcnRYKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uKGF3YWl0IGJ1aWxkQ3VzdG9tRXJyb3JSdWxlcygpKSxcbiAgICB7XG4gICAgICBuYW1lOiBcImltcG9ydC14L2N1c3RvbS10eXBlc2NyaXB0XCIsXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC14L25vLXJlbGF0aXZlLXBhcmVudC1pbXBvcnRzXCI6IFwib2ZmXCIsXG4gICAgICAgIFwiaW1wb3J0LXgvdW5hbWJpZ3VvdXNcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImltcG9ydC14L2N1c3RvbS1ub2RlX21vZHVsZXNcIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW1wb3J0LXgvbm8taW50ZXJuYWwtbW9kdWxlc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgIFwiZXNsaW50L2NvbmZpZ1wiLFxuICAgICAgICAgICAgICBcImVzbGludC1wbHVnaW4tYm91bmRhcmllcy9jb25maWdcIixcbiAgICAgICAgICAgICAgXCJlc2xpbnQtcGx1Z2luLXByZXR0aWVyL3JlY29tbWVuZGVkXCIsXG4gICAgICAgICAgICAgIFwidml0ZXN0L2NvbmZpZ1wiLFxuICAgICAgICAgICAgICBcIkBlc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3NcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZ25vcmVzOiBbXCIqXCIsIFwicGFja2FnZXMvKi8qXCIsIFwicGFja2FnZXMvKi8qLypcIl0sXG4gICAgICBuYW1lOiBcImltcG9ydC14L2N1c3RvbS1yb290LWNvbmZpZy1maWxlc1wiLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydFwiOiBcImVycm9yXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCB7IGltcG9ydFggfTtcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export { boundaries } from "./boundaries";
2
- export { importX } from "./import-x";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,3 +0,0 @@
1
- export { boundaries } from "./boundaries";
2
- export { importX } from "./import-x";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl0ZWN0dXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGJvdW5kYXJpZXMgfSBmcm9tIFwiLi9ib3VuZGFyaWVzXCI7XG5leHBvcnQgeyBpbXBvcnRYIH0gZnJvbSBcIi4vaW1wb3J0LXhcIjtcbiJdfQ==
@@ -1,6 +0,0 @@
1
- /** Expected config names when all documented modules are enabled in order. */
2
- declare const fullCompositionNames: readonly ["core-codeperfect", "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-codeperfect", "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
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-composition.d.ts","sourceRoot":"","sources":["../src/config-composition.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,QAAA,MAAM,oBAAoB,4UAkBhB,CAAC;AAEX,yEAAyE;AACzE,QAAA,MAAM,uBAAuB,6QAenB,CAAC;AAEX,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1,39 +0,0 @@
1
- /** Expected config names when all documented modules are enabled in order. */
2
- const fullCompositionNames = [
3
- "core-codeperfect",
4
- "core-eslint",
5
- "core-resolver",
6
- "core-typescript",
7
- "architecture-import-x",
8
- "docs-comments",
9
- "docs-jsdoc",
10
- "testing-jasmine",
11
- "testing-jest",
12
- "testing-playwright",
13
- "testing-vitest",
14
- "domain-rxjs",
15
- "style-stylistic",
16
- "style-perfectionist",
17
- "style-unicorn",
18
- "style-prettier",
19
- "architecture-boundaries",
20
- ];
21
- /** Expected config names when selected optional modules are disabled. */
22
- const reducedCompositionNames = [
23
- "core-codeperfect",
24
- "core-eslint",
25
- "core-resolver",
26
- "core-typescript",
27
- "architecture-import-x",
28
- "docs-comments",
29
- "docs-jsdoc",
30
- "testing-jasmine",
31
- "testing-jest",
32
- "testing-playwright",
33
- "domain-rxjs",
34
- "style-stylistic",
35
- "style-perfectionist",
36
- "style-unicorn",
37
- ];
38
- export { fullCompositionNames, reducedCompositionNames };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy1jb21wb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RUFBOEU7QUFDOUUsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIseUJBQXlCO0NBQ2pCLENBQUM7QUFFWCx5RUFBeUU7QUFDekUsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLGVBQWU7SUFDZixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsZUFBZTtDQUNQLENBQUM7QUFFWCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBFeHBlY3RlZCBjb25maWcgbmFtZXMgd2hlbiBhbGwgZG9jdW1lbnRlZCBtb2R1bGVzIGFyZSBlbmFibGVkIGluIG9yZGVyLiAqL1xuY29uc3QgZnVsbENvbXBvc2l0aW9uTmFtZXMgPSBbXG4gIFwiY29yZS1jb2RlcGVyZmVjdFwiLFxuICBcImNvcmUtZXNsaW50XCIsXG4gIFwiY29yZS1yZXNvbHZlclwiLFxuICBcImNvcmUtdHlwZXNjcmlwdFwiLFxuICBcImFyY2hpdGVjdHVyZS1pbXBvcnQteFwiLFxuICBcImRvY3MtY29tbWVudHNcIixcbiAgXCJkb2NzLWpzZG9jXCIsXG4gIFwidGVzdGluZy1qYXNtaW5lXCIsXG4gIFwidGVzdGluZy1qZXN0XCIsXG4gIFwidGVzdGluZy1wbGF5d3JpZ2h0XCIsXG4gIFwidGVzdGluZy12aXRlc3RcIixcbiAgXCJkb21haW4tcnhqc1wiLFxuICBcInN0eWxlLXN0eWxpc3RpY1wiLFxuICBcInN0eWxlLXBlcmZlY3Rpb25pc3RcIixcbiAgXCJzdHlsZS11bmljb3JuXCIsXG4gIFwic3R5bGUtcHJldHRpZXJcIixcbiAgXCJhcmNoaXRlY3R1cmUtYm91bmRhcmllc1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIEV4cGVjdGVkIGNvbmZpZyBuYW1lcyB3aGVuIHNlbGVjdGVkIG9wdGlvbmFsIG1vZHVsZXMgYXJlIGRpc2FibGVkLiAqL1xuY29uc3QgcmVkdWNlZENvbXBvc2l0aW9uTmFtZXMgPSBbXG4gIFwiY29yZS1jb2RlcGVyZmVjdFwiLFxuICBcImNvcmUtZXNsaW50XCIsXG4gIFwiY29yZS1yZXNvbHZlclwiLFxuICBcImNvcmUtdHlwZXNjcmlwdFwiLFxuICBcImFyY2hpdGVjdHVyZS1pbXBvcnQteFwiLFxuICBcImRvY3MtY29tbWVudHNcIixcbiAgXCJkb2NzLWpzZG9jXCIsXG4gIFwidGVzdGluZy1qYXNtaW5lXCIsXG4gIFwidGVzdGluZy1qZXN0XCIsXG4gIFwidGVzdGluZy1wbGF5d3JpZ2h0XCIsXG4gIFwiZG9tYWluLXJ4anNcIixcbiAgXCJzdHlsZS1zdHlsaXN0aWNcIixcbiAgXCJzdHlsZS1wZXJmZWN0aW9uaXN0XCIsXG4gIFwic3R5bGUtdW5pY29yblwiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHsgZnVsbENvbXBvc2l0aW9uTmFtZXMsIHJlZHVjZWRDb21wb3NpdGlvbk5hbWVzIH07XG4iXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-factory.d.ts","sourceRoot":"","sources":["../src/config-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA2C7C;;;;;;;;GAQG;AACH,iBAAe,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAc3E;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,42 +0,0 @@
1
- import { defineConfig } from "eslint/config";
2
- import { moduleTaxonomy } from "./module-taxonomy";
3
- import { pluginLoaders } from "./plugin-loaders";
4
- import { applyRuleOverrides, collectAvailablePlugins, isPluginDisabled, loadPluginConfig, } from "./utilities";
5
- /**
6
- * Builds the list of plugin config loaders.
7
- * @param options Input options value.
8
- * @returns Return value output.
9
- * @example
10
- * ```typescript
11
- * buildPluginConfigLoaders({});
12
- * ```
13
- */
14
- function buildPluginConfigLoaders(options) {
15
- const disabledPlugins = [...(options.disabledPlugins ?? [])];
16
- const loaders = [];
17
- for (const { pluginName } of moduleTaxonomy) {
18
- const loaderEntry = pluginLoaders[pluginName];
19
- if (!isPluginDisabled(pluginName, disabledPlugins)) {
20
- loaders.push(loadPluginConfig(pluginName, loaderEntry.loader(options), loaderEntry.mode));
21
- }
22
- }
23
- return loaders;
24
- }
25
- /**
26
- * Creates the ESLint configuration with optional plugin and rule customization.
27
- * @param options Input options value.
28
- * @returns Return value output.
29
- * @example
30
- * ```typescript
31
- * config();
32
- * ```
33
- */
34
- async function config(options = {}) {
35
- const { rules: ruleOverrides } = options;
36
- const pluginConfigResults = await Promise.all(buildPluginConfigLoaders(options));
37
- const pluginConfigs = pluginConfigResults.flat();
38
- const finalConfig = applyRuleOverrides(pluginConfigs, ruleOverrides, collectAvailablePlugins(pluginConfigs));
39
- return finalConfig.length === 0 ? [] : defineConfig(...finalConfig);
40
- }
41
- export { config };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHdCQUF3QixDQUMvQixPQUFzQjtJQUV0QixNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQStCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0JBQWdCLENBQ2QsVUFBVSxFQUNWLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQ2pCLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxVQUFVLE1BQU0sQ0FBQyxVQUF5QixFQUFFO0lBQy9DLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMzQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FDbEMsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUNwQyxhQUFhLEVBQ2IsYUFBYSxFQUNiLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUN2QyxDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tIFwiZXNsaW50XCI7XHJcblxyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBDb25maWdPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7IG1vZHVsZVRheG9ub215IH0gZnJvbSBcIi4vbW9kdWxlLXRheG9ub215XCI7XHJcbmltcG9ydCB7IHBsdWdpbkxvYWRlcnMgfSBmcm9tIFwiLi9wbHVnaW4tbG9hZGVyc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFwcGx5UnVsZU92ZXJyaWRlcyxcclxuICBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucyxcclxuICBpc1BsdWdpbkRpc2FibGVkLFxyXG4gIGxvYWRQbHVnaW5Db25maWcsXHJcbn0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcblxyXG4vKipcclxuICogQnVpbGRzIHRoZSBsaXN0IG9mIHBsdWdpbiBjb25maWcgbG9hZGVycy5cclxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cclxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBidWlsZFBsdWdpbkNvbmZpZ0xvYWRlcnMoe30pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGJ1aWxkUGx1Z2luQ29uZmlnTG9hZGVycyhcclxuICBvcHRpb25zOiBDb25maWdPcHRpb25zLFxyXG4pOiBQcm9taXNlPExpbnRlci5Db25maWdbXT5bXSB7XHJcbiAgY29uc3QgZGlzYWJsZWRQbHVnaW5zID0gWy4uLihvcHRpb25zLmRpc2FibGVkUGx1Z2lucyA/PyBbXSldO1xyXG4gIGNvbnN0IGxvYWRlcnM6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPltdID0gW107XHJcblxyXG4gIGZvciAoY29uc3QgeyBwbHVnaW5OYW1lIH0gb2YgbW9kdWxlVGF4b25vbXkpIHtcclxuICAgIGNvbnN0IGxvYWRlckVudHJ5ID0gcGx1Z2luTG9hZGVyc1twbHVnaW5OYW1lXTtcclxuXHJcbiAgICBpZiAoIWlzUGx1Z2luRGlzYWJsZWQocGx1Z2luTmFtZSwgZGlzYWJsZWRQbHVnaW5zKSkge1xyXG4gICAgICBsb2FkZXJzLnB1c2goXHJcbiAgICAgICAgbG9hZFBsdWdpbkNvbmZpZyhcclxuICAgICAgICAgIHBsdWdpbk5hbWUsXHJcbiAgICAgICAgICBsb2FkZXJFbnRyeS5sb2FkZXIob3B0aW9ucyksXHJcbiAgICAgICAgICBsb2FkZXJFbnRyeS5tb2RlLFxyXG4gICAgICAgICksXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbG9hZGVycztcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgdGhlIEVTTGludCBjb25maWd1cmF0aW9uIHdpdGggb3B0aW9uYWwgcGx1Z2luIGFuZCBydWxlIGN1c3RvbWl6YXRpb24uXHJcbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXHJcbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uZmlnKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gY29uZmlnKG9wdGlvbnM6IENvbmZpZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XHJcbiAgY29uc3QgeyBydWxlczogcnVsZU92ZXJyaWRlcyB9ID0gb3B0aW9ucztcclxuXHJcbiAgY29uc3QgcGx1Z2luQ29uZmlnUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgYnVpbGRQbHVnaW5Db25maWdMb2FkZXJzKG9wdGlvbnMpLFxyXG4gICk7XHJcbiAgY29uc3QgcGx1Z2luQ29uZmlncyA9IHBsdWdpbkNvbmZpZ1Jlc3VsdHMuZmxhdCgpO1xyXG4gIGNvbnN0IGZpbmFsQ29uZmlnID0gYXBwbHlSdWxlT3ZlcnJpZGVzKFxyXG4gICAgcGx1Z2luQ29uZmlncyxcclxuICAgIHJ1bGVPdmVycmlkZXMsXHJcbiAgICBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucyhwbHVnaW5Db25maWdzKSxcclxuICApO1xyXG5cclxuICByZXR1cm4gZmluYWxDb25maWcubGVuZ3RoID09PSAwID8gW10gOiBkZWZpbmVDb25maWcoLi4uZmluYWxDb25maWcpO1xyXG59XHJcblxyXG5leHBvcnQgeyBjb25maWcgfTtcclxuIl19