@codeperfect/eslint-config 1.2.0 → 1.4.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 (177) 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 +79 -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 +62 -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-config.d.ts +14 -0
  53. package/dist/infrastructure/docs/jsdoc-config.d.ts.map +1 -0
  54. package/dist/infrastructure/docs/jsdoc-config.js +126 -0
  55. package/dist/infrastructure/docs/jsdoc.d.ts.map +1 -0
  56. package/dist/infrastructure/docs/jsdoc.js +15 -0
  57. package/dist/infrastructure/index.d.ts +5 -0
  58. package/dist/infrastructure/index.d.ts.map +1 -0
  59. package/dist/infrastructure/index.js +4 -0
  60. package/dist/{plugin-loaders.d.ts → infrastructure/plugin-loaders.d.ts} +2 -2
  61. package/dist/infrastructure/plugin-loaders.d.ts.map +1 -0
  62. package/dist/infrastructure/plugin-loaders.js +115 -0
  63. package/dist/infrastructure/plugin-state.d.ts +26 -0
  64. package/dist/infrastructure/plugin-state.d.ts.map +1 -0
  65. package/dist/infrastructure/plugin-state.js +54 -0
  66. package/dist/infrastructure/rxjs-x.d.ts.map +1 -0
  67. package/dist/infrastructure/rxjs-x.js +27 -0
  68. package/dist/infrastructure/style/index.d.ts +5 -0
  69. package/dist/infrastructure/style/index.d.ts.map +1 -0
  70. package/dist/infrastructure/style/index.js +5 -0
  71. package/dist/infrastructure/style/perfectionist.d.ts.map +1 -0
  72. package/dist/infrastructure/style/perfectionist.js +31 -0
  73. package/dist/infrastructure/style/prettier.d.ts.map +1 -0
  74. package/dist/infrastructure/style/prettier.js +15 -0
  75. package/dist/infrastructure/style/stylistic.d.ts.map +1 -0
  76. package/dist/infrastructure/style/stylistic.js +17 -0
  77. package/dist/infrastructure/style/unicorn.d.ts.map +1 -0
  78. package/dist/infrastructure/style/unicorn.js +15 -0
  79. package/dist/infrastructure/testing/index.d.ts +5 -0
  80. package/dist/infrastructure/testing/index.d.ts.map +1 -0
  81. package/dist/infrastructure/testing/index.js +5 -0
  82. package/dist/infrastructure/testing/jasmine.d.ts.map +1 -0
  83. package/dist/infrastructure/testing/jasmine.js +25 -0
  84. package/dist/infrastructure/testing/jest.d.ts.map +1 -0
  85. package/dist/infrastructure/testing/jest.js +27 -0
  86. package/dist/infrastructure/testing/playwright.d.ts.map +1 -0
  87. package/dist/infrastructure/testing/playwright.js +29 -0
  88. package/dist/infrastructure/testing/vitest.d.ts.map +1 -0
  89. package/dist/infrastructure/testing/vitest.js +33 -0
  90. package/dist/{utilities.d.ts → infrastructure/utilities.d.ts} +2 -13
  91. package/dist/infrastructure/utilities.d.ts.map +1 -0
  92. package/dist/infrastructure/utilities.js +112 -0
  93. package/package.json +43 -37
  94. package/dist/architecture/boundaries.d.ts +0 -17
  95. package/dist/architecture/boundaries.d.ts.map +0 -1
  96. package/dist/architecture/boundaries.js +0 -69
  97. package/dist/architecture/import-x.d.ts.map +0 -1
  98. package/dist/architecture/import-x.js +0 -80
  99. package/dist/architecture/index.d.ts +0 -3
  100. package/dist/architecture/index.d.ts.map +0 -1
  101. package/dist/architecture/index.js +0 -3
  102. package/dist/config-composition.d.ts +0 -6
  103. package/dist/config-composition.d.ts.map +0 -1
  104. package/dist/config-composition.js +0 -39
  105. package/dist/config-factory.d.ts.map +0 -1
  106. package/dist/config-factory.js +0 -42
  107. package/dist/configs/index.d.ts +0 -7
  108. package/dist/configs/index.d.ts.map +0 -1
  109. package/dist/configs/index.js +0 -7
  110. package/dist/core/codeperfect.d.ts.map +0 -1
  111. package/dist/core/codeperfect.js +0 -14
  112. package/dist/core/eslint.d.ts.map +0 -1
  113. package/dist/core/eslint.js +0 -58
  114. package/dist/core/index.d.ts +0 -5
  115. package/dist/core/index.d.ts.map +0 -1
  116. package/dist/core/index.js +0 -5
  117. package/dist/core/resolver.d.ts.map +0 -1
  118. package/dist/core/resolver.js +0 -27
  119. package/dist/core/typescript.d.ts.map +0 -1
  120. package/dist/core/typescript.js +0 -63
  121. package/dist/diagnostics.d.ts.map +0 -1
  122. package/dist/diagnostics.js +0 -74
  123. package/dist/docs/comments.d.ts.map +0 -1
  124. package/dist/docs/comments.js +0 -30
  125. package/dist/docs/index.d.ts +0 -3
  126. package/dist/docs/index.d.ts.map +0 -1
  127. package/dist/docs/index.js +0 -3
  128. package/dist/docs/jsdoc.d.ts.map +0 -1
  129. package/dist/docs/jsdoc.js +0 -126
  130. package/dist/domain/rxjs-x.d.ts.map +0 -1
  131. package/dist/domain/rxjs-x.js +0 -27
  132. package/dist/module-taxonomy.d.ts.map +0 -1
  133. package/dist/module-taxonomy.js +0 -22
  134. package/dist/plugin-loaders.d.ts.map +0 -1
  135. package/dist/plugin-loaders.js +0 -115
  136. package/dist/style/index.d.ts +0 -5
  137. package/dist/style/index.d.ts.map +0 -1
  138. package/dist/style/index.js +0 -5
  139. package/dist/style/perfectionist.d.ts.map +0 -1
  140. package/dist/style/perfectionist.js +0 -31
  141. package/dist/style/prettier.d.ts.map +0 -1
  142. package/dist/style/prettier.js +0 -15
  143. package/dist/style/stylistic.d.ts.map +0 -1
  144. package/dist/style/stylistic.js +0 -17
  145. package/dist/style/unicorn.d.ts.map +0 -1
  146. package/dist/style/unicorn.js +0 -15
  147. package/dist/testing/index.d.ts +0 -5
  148. package/dist/testing/index.d.ts.map +0 -1
  149. package/dist/testing/index.js +0 -5
  150. package/dist/testing/jasmine.d.ts.map +0 -1
  151. package/dist/testing/jasmine.js +0 -25
  152. package/dist/testing/jest.d.ts.map +0 -1
  153. package/dist/testing/jest.js +0 -27
  154. package/dist/testing/playwright.d.ts.map +0 -1
  155. package/dist/testing/playwright.js +0 -29
  156. package/dist/testing/vitest.d.ts.map +0 -1
  157. package/dist/testing/vitest.js +0 -33
  158. package/dist/types.d.ts.map +0 -1
  159. package/dist/types.js +0 -2
  160. package/dist/utilities.d.ts.map +0 -1
  161. package/dist/utilities.js +0 -125
  162. /package/dist/{architecture → infrastructure/architecture}/import-x.d.ts +0 -0
  163. /package/dist/{core → infrastructure/core}/codeperfect.d.ts +0 -0
  164. /package/dist/{core → infrastructure/core}/eslint.d.ts +0 -0
  165. /package/dist/{core → infrastructure/core}/resolver.d.ts +0 -0
  166. /package/dist/{core → infrastructure/core}/typescript.d.ts +0 -0
  167. /package/dist/{docs → infrastructure/docs}/comments.d.ts +0 -0
  168. /package/dist/{docs → infrastructure/docs}/jsdoc.d.ts +0 -0
  169. /package/dist/{domain → infrastructure}/rxjs-x.d.ts +0 -0
  170. /package/dist/{style → infrastructure/style}/perfectionist.d.ts +0 -0
  171. /package/dist/{style → infrastructure/style}/prettier.d.ts +0 -0
  172. /package/dist/{style → infrastructure/style}/stylistic.d.ts +0 -0
  173. /package/dist/{style → infrastructure/style}/unicorn.d.ts +0 -0
  174. /package/dist/{testing → infrastructure/testing}/jasmine.d.ts +0 -0
  175. /package/dist/{testing → infrastructure/testing}/jest.d.ts +0 -0
  176. /package/dist/{testing → infrastructure/testing}/playwright.d.ts +0 -0
  177. /package/dist/{testing → infrastructure/testing}/vitest.d.ts +0 -0
@@ -0,0 +1,25 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Return Jasmine-specific ESLint configurations when the plugin is installed.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await jasmine();
8
+ * ```
9
+ */
10
+ export async function jasmine() {
11
+ const jasmineModule = await import("eslint-plugin-jasmine");
12
+ const globalsModule = await import("globals");
13
+ const { configs, rules } = jasmineModule;
14
+ const { jasmine: globals } = globalsModule;
15
+ const customError = Object.fromEntries(Object.keys(rules).map((rule) => [`jasmine/${rule}`, "error"]));
16
+ return defineConfig({
17
+ extends: [configs.recommended],
18
+ files: ["**/*.spec.ts", "**/*.e2e.ts"],
19
+ languageOptions: { globals },
20
+ name: "jasmine/custom",
21
+ plugins: { jasmine: { rules } },
22
+ rules: customError,
23
+ });
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFzbWluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmZyYXN0cnVjdHVyZS90ZXN0aW5nL2phc21pbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPO0lBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDNUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUM7SUFDekMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUM7SUFFM0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQVUsQ0FBQyxDQUN4RSxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM5QixLQUFLLEVBQUUsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDO1FBQ3RDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRTtRQUM1QixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQy9CLEtBQUssRUFBRSxXQUFXO0tBQ25CLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBSZXR1cm4gSmFzbWluZS1zcGVjaWZpYyBFU0xpbnQgY29uZmlndXJhdGlvbnMgd2hlbiB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZC5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgamFzbWluZSgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBqYXNtaW5lKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IGphc21pbmVNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJlc2xpbnQtcGx1Z2luLWphc21pbmVcIik7XG4gIGNvbnN0IGdsb2JhbHNNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJnbG9iYWxzXCIpO1xuICBjb25zdCB7IGNvbmZpZ3MsIHJ1bGVzIH0gPSBqYXNtaW5lTW9kdWxlO1xuICBjb25zdCB7IGphc21pbmU6IGdsb2JhbHMgfSA9IGdsb2JhbHNNb2R1bGU7XG5cbiAgY29uc3QgY3VzdG9tRXJyb3IgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmtleXMocnVsZXMpLm1hcCgocnVsZSkgPT4gW2BqYXNtaW5lLyR7cnVsZX1gLCBcImVycm9yXCJdIGFzIGNvbnN0KSxcbiAgKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBleHRlbmRzOiBbY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgZmlsZXM6IFtcIioqLyouc3BlYy50c1wiLCBcIioqLyouZTJlLnRzXCJdLFxuICAgIGxhbmd1YWdlT3B0aW9uczogeyBnbG9iYWxzIH0sXG4gICAgbmFtZTogXCJqYXNtaW5lL2N1c3RvbVwiLFxuICAgIHBsdWdpbnM6IHsgamFzbWluZTogeyBydWxlcyB9IH0sXG4gICAgcnVsZXM6IGN1c3RvbUVycm9yLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/testing/jest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAoBrD"}
@@ -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.4.0",
4
4
  "description": "A shareable flat ESLint config for TypeScript repositories",
5
5
  "keywords": [
6
6
  "eslint",
@@ -38,14 +38,11 @@
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
44
  "pack": "npm pack --pack-destination dist",
45
- "\n# --------------- DOCS --------------- #": "",
46
- "docs": "npm run docs:clean && npm run docs:api",
47
- "docs:api": "npx --yes typedoc --options typedoc.json",
48
- "docs:clean": "npx --yes rimraf docs/api",
45
+ "resolve-paths": "tsc-alias --project ./tsconfig.build.json --resolve-full-paths",
49
46
  "\n# --------------- LINTING --------------- #": "",
50
47
  "\t• --------------- checking --------------- •": "",
51
48
  "eslint": "npx --yes eslint --max-warnings=0",
@@ -62,44 +59,50 @@
62
59
  "eslint:inspect": "npx --yes @eslint/config-inspector",
63
60
  "\n# --------------- TESTING --------------- #": "",
64
61
  "typecheck": "tsc --noEmit",
65
- "typecheck:spec": "tsc -p tsconfig.spec.json --noEmit",
62
+ "typecheck:spec": "tsc --project tsconfig.spec.json --noEmit",
66
63
  "validate": "npm run lint && npm run typecheck && npm run typecheck:spec && npm run test && npm run build && npm run pack",
67
64
  "\n\t• --------------- unit --------------- •": "",
68
- "tdd": "npx --yes vitest run --watch --silent=true --coverage.enabled=false",
65
+ "e2e": "npx --yes vitest run --config vitest.config.e2e.ts --coverage.enabled=false",
69
66
  "tdd:notify": "npm run tdd -- --notify",
70
- "test": "npx --yes vitest run"
67
+ "tdd": "npx --yes vitest run --watch --silent=true --coverage.enabled=false",
68
+ "test": "npm run unit && npm run e2e",
69
+ "unit": "npx --yes vitest run",
70
+ "\n# --------------- DOCS --------------- #": "",
71
+ "docs:api": "npx --yes typedoc --options typedoc.json",
72
+ "docs:clean": "npx --yes rimraf docs/api",
73
+ "docs": "npm run docs:clean && npm run docs:api"
71
74
  },
72
75
  "dependencies": {
73
- "minimatch": "^10.2.4"
76
+ "minimatch": "^10.2.5"
74
77
  },
75
78
  "peerDependencies": {
76
- "@eslint/js": "^10.0.0",
77
- "eslint": "^10.1.0",
78
- "jiti": "^2.6.0",
79
- "typescript": "^5.9.0",
80
- "typescript-eslint": "^8.57.0"
79
+ "@eslint/js": "^10.0.1",
80
+ "eslint": "^10.2.1",
81
+ "jiti": "^2.6.1",
82
+ "typescript": "^6.0.3",
83
+ "typescript-eslint": "^8.58.2"
81
84
  },
82
85
  "optionalDependencies": {
83
86
  "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
84
87
  "@stylistic/eslint-plugin": "^5.10.0",
85
- "@vitest/eslint-plugin": "^1.6.13",
88
+ "@vitest/eslint-plugin": "^1.6.16",
86
89
  "eslint-import-resolver-typescript": "^4.4.4",
87
- "eslint-plugin-boundaries": "^6.0.1",
90
+ "eslint-plugin-boundaries": "^6.0.2",
88
91
  "eslint-plugin-import-x": "^4.16.2",
89
92
  "eslint-plugin-jasmine": "^4.2.2",
90
- "eslint-plugin-jest": "^29.15.1",
91
- "eslint-plugin-jsdoc": "^62.8.1",
92
- "eslint-plugin-perfectionist": "^5.7.0",
93
+ "eslint-plugin-jest": "^29.15.2",
94
+ "eslint-plugin-jsdoc": "^62.9.0",
95
+ "eslint-plugin-perfectionist": "^5.9.0",
93
96
  "eslint-plugin-prettier": "^5.5.5",
94
- "eslint-plugin-rxjs-x": "^1.0.1",
97
+ "eslint-plugin-rxjs-x": "^1.0.2",
95
98
  "eslint-plugin-unicorn": "^64.0.0",
96
- "globals": "^17.4.0"
99
+ "globals": "^17.5.0"
97
100
  },
98
101
  "devDependencies": {
99
- "@codeperfect/eslint-plugin": "^1.0.0",
102
+ "@codeperfect/eslint-plugin": "^2.0.0",
100
103
  "@commitlint/cli": "^20.5.0",
101
104
  "@commitlint/config-conventional": "^20.5.0",
102
- "@commitlint/cz-commitlint": "^20.5.0",
105
+ "@commitlint/cz-commitlint": "^20.5.1",
103
106
  "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
104
107
  "@eslint/js": "^10.0.1",
105
108
  "@semantic-release/commit-analyzer": "^13.0.1",
@@ -108,32 +111,35 @@
108
111
  "@semantic-release/release-notes-generator": "^14.1.0",
109
112
  "@stylistic/eslint-plugin": "^5.10.0",
110
113
  "@types/lodash-es": "^4.17.12",
111
- "@types/node": "^25.5.0",
112
- "@vitest/coverage-v8": "^4.1.2",
113
- "@vitest/eslint-plugin": "^1.6.13",
114
+ "@types/node": "^25.6.0",
115
+ "@vitest/coverage-v8": "^4.1.4",
116
+ "@vitest/eslint-plugin": "^1.6.16",
114
117
  "chalk": "^5.6.2",
115
118
  "conventional-changelog-conventionalcommits": "^9.3.1",
116
- "eslint": "^10.1.0",
119
+ "eslint": "^10.2.1",
117
120
  "eslint-config-prettier": "^10.1.8",
118
121
  "eslint-import-resolver-typescript": "^4.4.4",
119
- "eslint-plugin-boundaries": "^6.0.1",
122
+ "eslint-plugin-boundaries": "^6.0.2",
120
123
  "eslint-plugin-import-x": "^4.16.2",
121
- "eslint-plugin-jsdoc": "^62.8.1",
122
- "eslint-plugin-perfectionist": "^5.7.0",
124
+ "eslint-plugin-jsdoc": "^62.9.0",
125
+ "eslint-plugin-perfectionist": "^5.9.0",
123
126
  "eslint-plugin-playwright": "^2.10.1",
124
127
  "eslint-plugin-prettier": "^5.5.5",
125
128
  "eslint-plugin-unicorn": "^64.0.0",
126
- "globals": "^17.4.0",
129
+ "globals": "^17.5.0",
127
130
  "husky": "^9.1.7",
128
131
  "jiti": "^2.6.1",
129
132
  "lint-staged": "^16.4.0",
130
- "lodash-es": "^4.17.23",
133
+ "lodash-es": "^4.18.1",
131
134
  "rimraf": "^6.1.3",
132
135
  "semantic-release": "^25.0.3",
133
- "typedoc": "^0.28.18",
136
+ "tsc-alias": "^1.8.16",
137
+ "typedoc": "^0.28.19",
134
138
  "typedoc-plugin-markdown": "^4.11.0",
135
- "typescript": "^5.9.3",
136
- "vitest": "^4.1.2"
139
+ "typescript": "^6.0.3",
140
+ "typescript-eslint": "^8.58.2",
141
+ "vite-tsconfig-paths": "^6.1.1",
142
+ "vitest": "^4.1.4"
137
143
  },
138
144
  "engines": {
139
145
  "node": ">=24.0.0"
@@ -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"}