@codeperfect/eslint-config 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/architecture/boundaries.d.ts +17 -0
  5. package/dist/architecture/boundaries.d.ts.map +1 -0
  6. package/dist/architecture/boundaries.js +69 -0
  7. package/dist/architecture/import-x.d.ts +12 -0
  8. package/dist/architecture/import-x.d.ts.map +1 -0
  9. package/dist/architecture/import-x.js +79 -0
  10. package/dist/architecture/index.d.ts +3 -0
  11. package/dist/architecture/index.d.ts.map +1 -0
  12. package/dist/architecture/index.js +3 -0
  13. package/dist/codeperfect-eslint-config-1.0.0.tgz +0 -0
  14. package/dist/config-composition.d.ts +6 -0
  15. package/dist/config-composition.d.ts.map +1 -0
  16. package/dist/config-composition.js +37 -0
  17. package/dist/configs/index.d.ts +7 -0
  18. package/dist/configs/index.d.ts.map +1 -0
  19. package/dist/configs/index.js +7 -0
  20. package/dist/core/eslint.d.ts +12 -0
  21. package/dist/core/eslint.d.ts.map +1 -0
  22. package/dist/core/eslint.js +58 -0
  23. package/dist/core/index.d.ts +4 -0
  24. package/dist/core/index.d.ts.map +1 -0
  25. package/dist/core/index.js +4 -0
  26. package/dist/core/resolver.d.ts +11 -0
  27. package/dist/core/resolver.d.ts.map +1 -0
  28. package/dist/core/resolver.js +27 -0
  29. package/dist/core/typescript.d.ts +11 -0
  30. package/dist/core/typescript.d.ts.map +1 -0
  31. package/dist/core/typescript.js +63 -0
  32. package/dist/diagnostics.d.ts +43 -0
  33. package/dist/diagnostics.d.ts.map +1 -0
  34. package/dist/diagnostics.js +74 -0
  35. package/dist/docs/comments.d.ts +11 -0
  36. package/dist/docs/comments.d.ts.map +1 -0
  37. package/dist/docs/comments.js +30 -0
  38. package/dist/docs/index.d.ts +3 -0
  39. package/dist/docs/index.d.ts.map +1 -0
  40. package/dist/docs/index.js +3 -0
  41. package/dist/docs/jsdoc.d.ts +12 -0
  42. package/dist/docs/jsdoc.d.ts.map +1 -0
  43. package/dist/docs/jsdoc.js +77 -0
  44. package/dist/domain/index.d.ts +2 -0
  45. package/dist/domain/index.d.ts.map +1 -0
  46. package/dist/domain/index.js +2 -0
  47. package/dist/domain/rxjs-x.d.ts +11 -0
  48. package/dist/domain/rxjs-x.d.ts.map +1 -0
  49. package/dist/domain/rxjs-x.js +27 -0
  50. package/dist/index-spec-helpers.d.ts +44 -0
  51. package/dist/index-spec-helpers.d.ts.map +1 -0
  52. package/dist/index-spec-helpers.js +175 -0
  53. package/dist/index.d.ts +15 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +42 -0
  56. package/dist/module-taxonomy.d.ts +63 -0
  57. package/dist/module-taxonomy.d.ts.map +1 -0
  58. package/dist/module-taxonomy.js +21 -0
  59. package/dist/plugin-loaders.d.ts +110 -0
  60. package/dist/plugin-loaders.d.ts.map +1 -0
  61. package/dist/plugin-loaders.js +110 -0
  62. package/dist/style/index.d.ts +5 -0
  63. package/dist/style/index.d.ts.map +1 -0
  64. package/dist/style/index.js +5 -0
  65. package/dist/style/perfectionist.d.ts +11 -0
  66. package/dist/style/perfectionist.d.ts.map +1 -0
  67. package/dist/style/perfectionist.js +17 -0
  68. package/dist/style/prettier.d.ts +11 -0
  69. package/dist/style/prettier.d.ts.map +1 -0
  70. package/dist/style/prettier.js +15 -0
  71. package/dist/style/stylistic.d.ts +11 -0
  72. package/dist/style/stylistic.d.ts.map +1 -0
  73. package/dist/style/stylistic.js +15 -0
  74. package/dist/style/unicorn.d.ts +11 -0
  75. package/dist/style/unicorn.d.ts.map +1 -0
  76. package/dist/style/unicorn.js +15 -0
  77. package/dist/testing/index.d.ts +5 -0
  78. package/dist/testing/index.d.ts.map +1 -0
  79. package/dist/testing/index.js +5 -0
  80. package/dist/testing/jasmine.d.ts +11 -0
  81. package/dist/testing/jasmine.d.ts.map +1 -0
  82. package/dist/testing/jasmine.js +25 -0
  83. package/dist/testing/jest.d.ts +11 -0
  84. package/dist/testing/jest.d.ts.map +1 -0
  85. package/dist/testing/jest.js +27 -0
  86. package/dist/testing/playwright.d.ts +12 -0
  87. package/dist/testing/playwright.d.ts.map +1 -0
  88. package/dist/testing/playwright.js +29 -0
  89. package/dist/testing/vitest.d.ts +11 -0
  90. package/dist/testing/vitest.d.ts.map +1 -0
  91. package/dist/testing/vitest.js +32 -0
  92. package/dist/types.d.ts +41 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +2 -0
  95. package/dist/utilities.d.ts +52 -0
  96. package/dist/utilities.d.ts.map +1 -0
  97. package/dist/utilities.js +125 -0
  98. package/package.json +143 -0
@@ -0,0 +1,17 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Build and return the Perfectionist plugin configuration and any overrides.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await perfectionist();
8
+ * ```
9
+ */
10
+ export async function perfectionist() {
11
+ const { configs } = await import("eslint-plugin-perfectionist");
12
+ return defineConfig(configs["recommended-natural"], {
13
+ name: "To avoid conflcts",
14
+ rules: { "sort-keys": "off" },
15
+ });
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdGlvbmlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZS9wZXJmZWN0aW9uaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUVoRSxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRTtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7S0FDOUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIEJ1aWxkIGFuZCByZXR1cm4gdGhlIFBlcmZlY3Rpb25pc3QgcGx1Z2luIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBvdmVycmlkZXMuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IHBlcmZlY3Rpb25pc3QoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGVyZmVjdGlvbmlzdCgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4ge1xuICBjb25zdCB7IGNvbmZpZ3MgfSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdFwiKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKGNvbmZpZ3NbXCJyZWNvbW1lbmRlZC1uYXR1cmFsXCJdLCB7XG4gICAgbmFtZTogXCJUbyBhdm9pZCBjb25mbGN0c1wiLFxuICAgIHJ1bGVzOiB7IFwic29ydC1rZXlzXCI6IFwib2ZmXCIgfSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
2
+ /**
3
+ * Return Prettier integration configuration for ESLint when the plugin is available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await prettier();
8
+ * ```
9
+ */
10
+ export declare function prettier(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=prettier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettier.d.ts","sourceRoot":"","sources":["../../src/style/prettier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAKzD"}
@@ -0,0 +1,15 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Return Prettier integration configuration for ESLint when the plugin is available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await prettier();
8
+ * ```
9
+ */
10
+ export async function prettier() {
11
+ const recommendedModule = await import("eslint-plugin-prettier/recommended");
12
+ const { default: recommended } = recommendedModule;
13
+ return defineConfig(recommended);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3R5bGUvcHJldHRpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRO0lBQzVCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxNQUFNLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUM3RSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLGlCQUFpQixDQUFDO0lBRW5ELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBSZXR1cm4gUHJldHRpZXIgaW50ZWdyYXRpb24gY29uZmlndXJhdGlvbiBmb3IgRVNMaW50IHdoZW4gdGhlIHBsdWdpbiBpcyBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IHByZXR0aWVyKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXR0aWVyKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHJlY29tbWVuZGVkTW9kdWxlID0gYXdhaXQgaW1wb3J0KFwiZXNsaW50LXBsdWdpbi1wcmV0dGllci9yZWNvbW1lbmRlZFwiKTtcbiAgY29uc3QgeyBkZWZhdWx0OiByZWNvbW1lbmRlZCB9ID0gcmVjb21tZW5kZWRNb2R1bGU7XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhyZWNvbW1lbmRlZCk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
2
+ /**
3
+ * Return the stylistic plugin configuration and its recommended settings.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await stylistic();
8
+ * ```
9
+ */
10
+ export declare function stylistic(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=stylistic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/style/stylistic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAK1D"}
@@ -0,0 +1,15 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Return the stylistic plugin configuration and its recommended settings.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await stylistic();
8
+ * ```
9
+ */
10
+ export async function stylistic() {
11
+ const stylisticModule = await import("@stylistic/eslint-plugin");
12
+ const { default: plugin } = stylisticModule;
13
+ return defineConfig(plugin.configs.all);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0eWxlL3N0eWxpc3RpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVM7SUFDN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNqRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQztJQUU1QyxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHN0eWxpc3RpYyBwbHVnaW4gY29uZmlndXJhdGlvbiBhbmQgaXRzIHJlY29tbWVuZGVkIHNldHRpbmdzLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCBzdHlsaXN0aWMoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3R5bGlzdGljKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHN0eWxpc3RpY01vZHVsZSA9IGF3YWl0IGltcG9ydChcIkBzdHlsaXN0aWMvZXNsaW50LXBsdWdpblwiKTtcbiAgY29uc3QgeyBkZWZhdWx0OiBwbHVnaW4gfSA9IHN0eWxpc3RpY01vZHVsZTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHBsdWdpbi5jb25maWdzLmFsbCk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
2
+ /**
3
+ * Build and return the Unicorn plugin configuration.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await unicorn();
8
+ * ```
9
+ */
10
+ export declare function unicorn(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=unicorn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicorn.d.ts","sourceRoot":"","sources":["../../src/style/unicorn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAKxD"}
@@ -0,0 +1,15 @@
1
+ import { defineConfig } from "eslint/config";
2
+ /**
3
+ * Build and return the Unicorn plugin configuration.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await unicorn();
8
+ * ```
9
+ */
10
+ export async function unicorn() {
11
+ const unicornModule = await import("eslint-plugin-unicorn");
12
+ const { configs } = unicornModule.default;
13
+ return defineConfig(configs.all);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pY29ybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHlsZS91bmljb3JuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTztJQUMzQixNQUFNLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBRTFDLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJlc2xpbnQvY29uZmlnXCI7XG5cbi8qKlxuICogQnVpbGQgYW5kIHJldHVybiB0aGUgVW5pY29ybiBwbHVnaW4gY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgdW5pY29ybigpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmljb3JuKCk6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIGNvbnN0IHVuaWNvcm5Nb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJlc2xpbnQtcGx1Z2luLXVuaWNvcm5cIik7XG4gIGNvbnN0IHsgY29uZmlncyB9ID0gdW5pY29ybk1vZHVsZS5kZWZhdWx0O1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoY29uZmlncy5hbGwpO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ export { jasmine } from "./jasmine";
2
+ export { jest } from "./jest";
3
+ export { playwright } from "./playwright";
4
+ export { vitest } from "./vitest";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { jasmine } from "./jasmine";
2
+ export { jest } from "./jest";
3
+ export { playwright } from "./playwright";
4
+ export { vitest } from "./vitest";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgamFzbWluZSB9IGZyb20gXCIuL2phc21pbmVcIjtcbmV4cG9ydCB7IGplc3QgfSBmcm9tIFwiLi9qZXN0XCI7XG5leHBvcnQgeyBwbGF5d3JpZ2h0IH0gZnJvbSBcIi4vcGxheXdyaWdodFwiO1xuZXhwb3J0IHsgdml0ZXN0IH0gZnJvbSBcIi4vdml0ZXN0XCI7XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
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 declare function jasmine(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=jasmine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jasmine.d.ts","sourceRoot":"","sources":["../../src/testing/jasmine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAkBxD"}
@@ -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"],
19
+ languageOptions: { globals },
20
+ name: "jasmine/custom",
21
+ plugins: { jasmine: { rules } },
22
+ rules: customError,
23
+ });
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFzbWluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2phc21pbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPO0lBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDNUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxhQUFhLENBQUM7SUFDekMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUM7SUFFM0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQVUsQ0FBQyxDQUN4RSxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM5QixLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDdkIsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFO1FBQzVCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDL0IsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIFJldHVybiBKYXNtaW5lLXNwZWNpZmljIEVTTGludCBjb25maWd1cmF0aW9ucyB3aGVuIHRoZSBwbHVnaW4gaXMgaW5zdGFsbGVkLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCBqYXNtaW5lKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGphc21pbmUoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+IHtcbiAgY29uc3QgamFzbWluZU1vZHVsZSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tamFzbWluZVwiKTtcbiAgY29uc3QgZ2xvYmFsc01vZHVsZSA9IGF3YWl0IGltcG9ydChcImdsb2JhbHNcIik7XG4gIGNvbnN0IHsgY29uZmlncywgcnVsZXMgfSA9IGphc21pbmVNb2R1bGU7XG4gIGNvbnN0IHsgamFzbWluZTogZ2xvYmFscyB9ID0gZ2xvYmFsc01vZHVsZTtcblxuICBjb25zdCBjdXN0b21FcnJvciA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhydWxlcykubWFwKChydWxlKSA9PiBbYGphc21pbmUvJHtydWxlfWAsIFwiZXJyb3JcIl0gYXMgY29uc3QpLFxuICApO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoe1xuICAgIGV4dGVuZHM6IFtjb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICBmaWxlczogW1wiKiovKi5zcGVjLnRzXCJdLFxuICAgIGxhbmd1YWdlT3B0aW9uczogeyBnbG9iYWxzIH0sXG4gICAgbmFtZTogXCJqYXNtaW5lL2N1c3RvbVwiLFxuICAgIHBsdWdpbnM6IHsgamFzbWluZTogeyBydWxlcyB9IH0sXG4gICAgcnVsZXM6IGN1c3RvbUVycm9yLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
2
+ /**
3
+ * Load Jest plugin configuration when available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await jest();
8
+ * ```
9
+ */
10
+ export declare function jest(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=jest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.d.ts","sourceRoot":"","sources":["../../src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2plc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJO0lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZELE9BQU8sWUFBWSxDQUNqQjtRQUNFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixLQUFLLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztRQUMzQyxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUU7WUFDTCwrQkFBK0IsRUFBRSxLQUFLO1NBQ3ZDO0tBQ0YsRUFDRDtRQUNFLEtBQUssRUFBRSxDQUFDLHlDQUF5QyxDQUFDO1FBQ2xELElBQUksRUFBRSw4QkFBOEI7UUFDcEMsS0FBSyxFQUFFO1lBQ0wsb0NBQW9DLEVBQUUsS0FBSztTQUM1QztLQUNGLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBMb2FkIEplc3QgcGx1Z2luIGNvbmZpZ3VyYXRpb24gd2hlbiBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGF3YWl0IGplc3QoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gamVzdCgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4ge1xuICBjb25zdCB7IGNvbmZpZ3MgfSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tamVzdFwiKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtjb25maWdzW1wiZmxhdC9hbGxcIl1dLFxuICAgICAgZmlsZXM6IFtcIioqL2ludGVncmF0aW9uL2plc3QvKiovKi5zcGVjLnRzXCJdLFxuICAgICAgbmFtZTogXCJqZXN0L2N1c3RvbVwiLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJqZXN0L3ByZWZlci1leHBlY3QtYXNzZXJ0aW9uc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBbXCIqKi9pbnRlZ3JhdGlvbi9qZXN0LWdsb2JhbC8qKi8qLnNwZWMudHNcIl0sXG4gICAgICBuYW1lOiBcImplc3QvY3VzdG9tLWdsb2JhbC1vdmVycmlkZXNcIixcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiamVzdC9wcmVmZXItaW1wb3J0aW5nLWplc3QtZ2xvYmFsc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9LFxuICApO1xufVxuIl19
@@ -0,0 +1,12 @@
1
+ import type { Linter } from "eslint";
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
+ declare function playwright(): Promise<Linter.Config[]>;
11
+ export { playwright };
12
+ //# sourceMappingURL=playwright.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheXdyaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL3BsYXl3cmlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLFVBQVU7SUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBRXBELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2YsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1NBQ25DLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFVLENBQUMsQ0FDM0MsQ0FBQztJQUVGLE9BQU8sWUFBWSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO1FBQ3ZDLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiZXNsaW50L2NvbmZpZ1wiO1xuXG4vKipcbiAqIEJ1aWxkIGFuZCByZXR1cm4gUGxheXdyaWdodC1zcGVjaWZpYyBFU0xpbnQgY29uZmlncyBhbmQgcnVsZSBhZGp1c3RtZW50cy5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgcGxheXdyaWdodCgpO1xuICogYGBgXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBsYXl3cmlnaHQoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+IHtcbiAgY29uc3QgcGxheXdyaWdodE1vZHVsZSA9IGF3YWl0IGltcG9ydChcImVzbGludC1wbHVnaW4tcGxheXdyaWdodFwiKTtcbiAgY29uc3QgeyBjb25maWdzLCBydWxlcyB9ID0gcGxheXdyaWdodE1vZHVsZS5kZWZhdWx0O1xuXG4gIGNvbnN0IGN1c3RvbUlnbm9yZSA9IG5ldyBTZXQoW1wiXCJdKTtcblxuICBjb25zdCB7IHJ1bGVzOiByZWNvbW1lbmRlZFJ1bGVzID0ge30gfSA9IGNvbmZpZ3NbXCJmbGF0L3JlY29tbWVuZGVkXCJdO1xuICBjb25zdCBhbGxDb25maWdzID0gbmV3IFNldChPYmplY3Qua2V5cyh7IC4uLnJlY29tbWVuZGVkUnVsZXMgfSkpO1xuXG4gIGNvbnN0IGN1c3RvbUVycm9yID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKHJ1bGVzKVxuICAgICAgLmZpbHRlcigocnVsZSkgPT4gIWN1c3RvbUlnbm9yZS5oYXMocnVsZSkpXG4gICAgICAubWFwKChydWxlKSA9PiBgcGxheXdyaWdodC8ke3J1bGV9YClcbiAgICAgIC5maWx0ZXIoKHJ1bGUpID0+ICFhbGxDb25maWdzLmhhcyhydWxlKSlcbiAgICAgIC5tYXAoKHJ1bGUpID0+IFtydWxlLCBcImVycm9yXCJdIGFzIGNvbnN0KSxcbiAgKTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKHtcbiAgICBleHRlbmRzOiBbY29uZmlnc1tcImZsYXQvcmVjb21tZW5kZWRcIl1dLFxuICAgIGZpbGVzOiBbXCJlMmUvKiovKi57c3BlYyx0ZXN0fS57dHMsanN9XCJdLFxuICAgIG5hbWU6IFwicGxheXdyaWdodC9jdXN0b20tZXJyb3JcIixcbiAgICBydWxlczogY3VzdG9tRXJyb3IsXG4gIH0pO1xufVxuXG5leHBvcnQgeyBwbGF5d3JpZ2h0IH07XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
2
+ /**
3
+ * Load Vitest plugin configuration when available.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * await vitest();
8
+ * ```
9
+ */
10
+ export declare function vitest(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=vitest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/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,CAqCvD"}
@@ -0,0 +1,32 @@
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
+ },
30
+ });
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Rpbmcvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTTtJQUMxQixNQUFNLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzNELE1BQU0sTUFBTSxHQUNWLFlBVUQsQ0FBQyxPQUFPLENBQUM7SUFDVixNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUV2QyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sWUFBWSxDQUNqQixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQzdDO1FBQ0UsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3BCLEtBQUssRUFBRSxDQUFDLHFCQUFxQixDQUFDO1FBQzlCLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRTtZQUNMLGlDQUFpQyxFQUFFO2dCQUNqQyxPQUFPO2dCQUNQLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUEsb0JBQW9CLEVBQUU7YUFDNUM7WUFDRCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGlDQUFpQyxFQUFFLEtBQUs7WUFDeEMscUNBQXFDLEVBQUUsS0FBSztTQUM3QztLQUNGLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcImVzbGludC9jb25maWdcIjtcblxuLyoqXG4gKiBMb2FkIFZpdGVzdCBwbHVnaW4gY29uZmlndXJhdGlvbiB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgdml0ZXN0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZpdGVzdCgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4ge1xuICBjb25zdCB2aXRlc3RNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJAdml0ZXN0L2VzbGludC1wbHVnaW5cIik7XG4gIGNvbnN0IHBsdWdpbiA9IChcbiAgICB2aXRlc3RNb2R1bGUgYXMge1xuICAgICAgLyoqIERlZmF1bHQgaGVscGVyIHZhbHVlLiAqL1xuICAgICAgZGVmYXVsdD86IHtcbiAgICAgICAgLyoqIENvbmZpZ3MgaGVscGVyIHZhbHVlLiAqL1xuICAgICAgICBjb25maWdzPzoge1xuICAgICAgICAgIC8qKiBBbGwgaGVscGVyIHZhbHVlLiAqL1xuICAgICAgICAgIGFsbD86IExpbnRlci5Db25maWc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1cbiAgKS5kZWZhdWx0O1xuICBjb25zdCBhbGxDb25maWcgPSBwbHVnaW4/LmNvbmZpZ3M/LmFsbDtcblxuICBpZiAoYWxsQ29uZmlnID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIHsgc2V0dGluZ3M6IHsgdml0ZXN0OiB7IHR5cGVjaGVjazogdHJ1ZSB9IH0gfSxcbiAgICB7XG4gICAgICBleHRlbmRzOiBbYWxsQ29uZmlnXSxcbiAgICAgIGZpbGVzOiBbXCIqKi8qLntzcGVjLHRlc3R9LnRzXCJdLFxuICAgICAgbmFtZTogXCJ2aXRlc3QvY3VzdG9tXCIsXG4gICAgICBydWxlczoge1xuICAgICAgICBcInZpdGVzdC9jb25zaXN0ZW50LXRlc3QtZmlsZW5hbWVcIjogW1xuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICB7IHBhdHRlcm46IFN0cmluZy5yYXdgLipcXC5zcGVjXFwuW3RqXXN4PyRgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwidml0ZXN0L25vLWhvb2tzXCI6IFwib2ZmXCIsXG4gICAgICAgIFwidml0ZXN0L3ByZWZlci1leHBlY3QtYXNzZXJ0aW9uc1wiOiBcIm9mZlwiLFxuICAgICAgICBcInZpdGVzdC9yZXF1aXJlLW1vY2stdHlwZS1wYXJhbWV0ZXJzXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import type { Linter } from "eslint";
2
+ import type { ElementDescriptors, ElementTypesRuleOptions } from "eslint-plugin-boundaries";
3
+ /** Type definition for rule data. */
4
+ type ArchitecturePluginName = "boundaries" | "import-x";
5
+ /** Type definition for rule data. */
6
+ interface BoundariesConfig {
7
+ /** Repository-owned element descriptors for boundaries analysis. */
8
+ elements: ElementDescriptors;
9
+ /** Repository-owned dependency direction rules for boundaries analysis. */
10
+ elementTypes: Linter.RuleEntry<ElementTypesRuleOptions[]>;
11
+ /** Files included in repository-specific boundaries analysis. */
12
+ files: readonly string[];
13
+ /** Optional ignore globs excluded from repository-specific boundaries analysis. */
14
+ ignores?: readonly string[];
15
+ }
16
+ /** Type definition for rule data. */
17
+ interface ConfigOptions {
18
+ /** Repository-owned architecture input for the optional `boundaries` module. */
19
+ boundaries?: BoundariesConfig;
20
+ /** List of named modules to disable from the composed configuration. */
21
+ disabledPlugins?: readonly PluginName[];
22
+ /**
23
+ * Rules to disable or override.
24
+ * Use 'off' to disable, or provide custom configuration.
25
+ */
26
+ rules?: Linter.RulesRecord;
27
+ }
28
+ /** Type definition for rule data. */
29
+ type CorePluginName = "eslint" | "resolver" | "typescript";
30
+ /** Type definition for rule data. */
31
+ type DocumentationPluginName = "comments" | "jsdoc";
32
+ /** Type definition for rule data. */
33
+ type DomainPluginName = "rxjs-x";
34
+ /** Type definition for rule data. */
35
+ type PluginName = ArchitecturePluginName | CorePluginName | DocumentationPluginName | DomainPluginName | StylePluginName | TestingPluginName;
36
+ /** Type definition for rule data. */
37
+ type StylePluginName = "perfectionist" | "prettier" | "stylistic" | "unicorn";
38
+ /** Type definition for rule data. */
39
+ type TestingPluginName = "jasmine" | "jest" | "playwright" | "vitest";
40
+ export type { BoundariesConfig, ConfigOptions, PluginName };
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAElC,qCAAqC;AACrC,KAAK,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAExD,qCAAqC;AACrC,UAAU,gBAAgB;IACxB,oEAAoE;IACpE,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE1D,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzB,mFAAmF;IACnF,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,qCAAqC;AACrC,UAAU,aAAa;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,wEAAwE;IACxE,eAAe,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,qCAAqC;AACrC,KAAK,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D,qCAAqC;AACrC,KAAK,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAC;AAEpD,qCAAqC;AACrC,KAAK,gBAAgB,GAAG,QAAQ,CAAC;AAEjC,qCAAqC;AACrC,KAAK,UAAU,GACX,sBAAsB,GACtB,cAAc,GACd,uBAAuB,GACvB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,CAAC;AAEtB,qCAAqC;AACrC,KAAK,eAAe,GAAG,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE9E,qCAAqC;AACrC,KAAK,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEtE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUge1xuICBFbGVtZW50RGVzY3JpcHRvcnMsXG4gIEVsZW1lbnRUeXBlc1J1bGVPcHRpb25zLFxufSBmcm9tIFwiZXNsaW50LXBsdWdpbi1ib3VuZGFyaWVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgQXJjaGl0ZWN0dXJlUGx1Z2luTmFtZSA9IFwiYm91bmRhcmllc1wiIHwgXCJpbXBvcnQteFwiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgQm91bmRhcmllc0NvbmZpZyB7XG4gIC8qKiBSZXBvc2l0b3J5LW93bmVkIGVsZW1lbnQgZGVzY3JpcHRvcnMgZm9yIGJvdW5kYXJpZXMgYW5hbHlzaXMuICovXG4gIGVsZW1lbnRzOiBFbGVtZW50RGVzY3JpcHRvcnM7XG5cbiAgLyoqIFJlcG9zaXRvcnktb3duZWQgZGVwZW5kZW5jeSBkaXJlY3Rpb24gcnVsZXMgZm9yIGJvdW5kYXJpZXMgYW5hbHlzaXMuICovXG4gIGVsZW1lbnRUeXBlczogTGludGVyLlJ1bGVFbnRyeTxFbGVtZW50VHlwZXNSdWxlT3B0aW9uc1tdPjtcblxuICAvKiogRmlsZXMgaW5jbHVkZWQgaW4gcmVwb3NpdG9yeS1zcGVjaWZpYyBib3VuZGFyaWVzIGFuYWx5c2lzLiAqL1xuICBmaWxlczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqIE9wdGlvbmFsIGlnbm9yZSBnbG9icyBleGNsdWRlZCBmcm9tIHJlcG9zaXRvcnktc3BlY2lmaWMgYm91bmRhcmllcyBhbmFseXNpcy4gKi9cbiAgaWdub3Jlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIC8qKiBSZXBvc2l0b3J5LW93bmVkIGFyY2hpdGVjdHVyZSBpbnB1dCBmb3IgdGhlIG9wdGlvbmFsIGBib3VuZGFyaWVzYCBtb2R1bGUuICovXG4gIGJvdW5kYXJpZXM/OiBCb3VuZGFyaWVzQ29uZmlnO1xuXG4gIC8qKiBMaXN0IG9mIG5hbWVkIG1vZHVsZXMgdG8gZGlzYWJsZSBmcm9tIHRoZSBjb21wb3NlZCBjb25maWd1cmF0aW9uLiAqL1xuICBkaXNhYmxlZFBsdWdpbnM/OiByZWFkb25seSBQbHVnaW5OYW1lW107XG5cbiAgLyoqXG4gICAqIFJ1bGVzIHRvIGRpc2FibGUgb3Igb3ZlcnJpZGUuXG4gICAqIFVzZSAnb2ZmJyB0byBkaXNhYmxlLCBvciBwcm92aWRlIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcnVsZXM/OiBMaW50ZXIuUnVsZXNSZWNvcmQ7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgQ29yZVBsdWdpbk5hbWUgPSBcImVzbGludFwiIHwgXCJyZXNvbHZlclwiIHwgXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgRG9jdW1lbnRhdGlvblBsdWdpbk5hbWUgPSBcImNvbW1lbnRzXCIgfCBcImpzZG9jXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgRG9tYWluUGx1Z2luTmFtZSA9IFwicnhqcy14XCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgUGx1Z2luTmFtZSA9XG4gIHwgQXJjaGl0ZWN0dXJlUGx1Z2luTmFtZVxuICB8IENvcmVQbHVnaW5OYW1lXG4gIHwgRG9jdW1lbnRhdGlvblBsdWdpbk5hbWVcbiAgfCBEb21haW5QbHVnaW5OYW1lXG4gIHwgU3R5bGVQbHVnaW5OYW1lXG4gIHwgVGVzdGluZ1BsdWdpbk5hbWU7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgU3R5bGVQbHVnaW5OYW1lID0gXCJwZXJmZWN0aW9uaXN0XCIgfCBcInByZXR0aWVyXCIgfCBcInN0eWxpc3RpY1wiIHwgXCJ1bmljb3JuXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbnR5cGUgVGVzdGluZ1BsdWdpbk5hbWUgPSBcImphc21pbmVcIiB8IFwiamVzdFwiIHwgXCJwbGF5d3JpZ2h0XCIgfCBcInZpdGVzdFwiO1xuXG5leHBvcnQgdHlwZSB7IEJvdW5kYXJpZXNDb25maWcsIENvbmZpZ09wdGlvbnMsIFBsdWdpbk5hbWUgfTtcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import type { Linter } from "eslint";
2
+ import type { PluginName } from "./types";
3
+ /** Runtime loading modes for plugin config loaders. */
4
+ type LoadMode = "optional" | "required";
5
+ /**
6
+ * Applies rule overrides to a configuration array.
7
+ * @param config Input config value.
8
+ * @param ruleOverrides Input ruleOverrides value.
9
+ * @param availablePlugins Input availablePlugins value.
10
+ * @returns Return value output.
11
+ * @example
12
+ * ```typescript
13
+ * applyRuleOverrides([], { "no-console": "off" });
14
+ * ```
15
+ */
16
+ declare function applyRuleOverrides(config: Linter.Config[], ruleOverrides?: Linter.RulesRecord, availablePlugins?: ReadonlySet<string>): Linter.Config[];
17
+ /**
18
+ * Collects plugin names from config entries.
19
+ * @param configs Input configs value.
20
+ * @returns Return value output.
21
+ * @example
22
+ * ```typescript
23
+ * collectAvailablePlugins();
24
+ * ```
25
+ */
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
+ /**
39
+ * Loads a plugin config with a helpful, colorful error message on failure.
40
+ * @param pluginName Input pluginName value.
41
+ * @param loader Input loader value.
42
+ * @param mode Specifies whether loader failures are fatal or skippable.
43
+ * @returns Return value output.
44
+ * @example
45
+ * ```typescript
46
+ * loadPluginConfig();
47
+ * ```
48
+ */
49
+ declare function loadPluginConfig(pluginName: PluginName, loader: () => Linter.Config[] | Promise<Linter.Config[]>, mode?: LoadMode): Promise<Linter.Config[]>;
50
+ export { applyRuleOverrides, collectAvailablePlugins, isPluginDisabled, loadPluginConfig, };
51
+ export type { LoadMode };
52
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,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;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,SAAS,UAAU,EAAE,GACtC,OAAO,CAET;AAED;;;;;;;;;;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,EACL,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,GACjB,CAAC;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { reportPluginLoadIssue, reportRuleOverrideSkip } from "./diagnostics";
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
+ * Checks if a plugin is disabled in the options.
70
+ * @param pluginName Input pluginName value.
71
+ * @param disabledPlugins Input disabledPlugins value.
72
+ * @returns Return value output.
73
+ * @example
74
+ * ```typescript
75
+ * isPluginDisabled();
76
+ * ```
77
+ */
78
+ function isPluginDisabled(pluginName, disabledPlugins) {
79
+ return disabledPlugins?.includes(pluginName) === true;
80
+ }
81
+ /**
82
+ * Loads a plugin config with a helpful, colorful error message on failure.
83
+ * @param pluginName Input pluginName value.
84
+ * @param loader Input loader value.
85
+ * @param mode Specifies whether loader failures are fatal or skippable.
86
+ * @returns Return value output.
87
+ * @example
88
+ * ```typescript
89
+ * loadPluginConfig();
90
+ * ```
91
+ */
92
+ async function loadPluginConfig(pluginName, loader, mode = "optional") {
93
+ try {
94
+ return await loader();
95
+ }
96
+ catch (error) {
97
+ reportPluginLoadIssue(pluginName, error, mode);
98
+ if (mode === "required") {
99
+ throw error;
100
+ }
101
+ return [];
102
+ }
103
+ }
104
+ /**
105
+ * Determines whether a rule override should be skipped.
106
+ * @param ruleName Input ruleName value.
107
+ * @param availablePlugins Input availablePlugins value.
108
+ * @returns Return value output.
109
+ * @example
110
+ * ```typescript
111
+ * shouldSkipRuleOverride();
112
+ * ```
113
+ */
114
+ function shouldSkipRuleOverride(ruleName, availablePlugins) {
115
+ const [pluginName = ""] = ruleName.split("/");
116
+ const isPluginRule = ruleName.includes("/");
117
+ const hasPlugin = availablePlugins.has(pluginName);
118
+ if (isPluginRule && !hasPlugin) {
119
+ reportRuleOverrideSkip(ruleName, pluginName);
120
+ return true;
121
+ }
122
+ return false;
123
+ }
124
+ export { applyRuleOverrides, collectAvailablePlugins, isPluginDisabled, loadPluginConfig, };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLOUU7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsa0JBQWtCLENBQ3pCLE1BQXVCLEVBQ3ZCLGFBQWtDLEVBQ2xDLG1CQUF3QyxJQUFJLEdBQUcsRUFBRTtJQUVqRCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUUzRSxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxNQUFNO1FBQ1Q7WUFDRSxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLEtBQUssRUFBRSxhQUFhO1NBQ0o7S0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLE9BQXdCO0lBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFbEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLGFBQTZDLEVBQzdDLGdCQUFxQztJQUVyQyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBdUIsRUFBRSxDQUFDO0lBRTdDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDeEQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0FBQzFFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGdCQUFnQixDQUN2QixVQUFzQixFQUN0QixlQUF1QztJQUV2QyxPQUFPLGVBQWUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3hELENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsS0FBSyxVQUFVLGdCQUFnQixDQUM3QixVQUFzQixFQUN0QixNQUF3RCxFQUN4RCxPQUFpQixVQUFVO0lBRTNCLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCLENBQzdCLFFBQWdCLEVBQ2hCLGdCQUFxQztJQUVyQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFbkQsSUFBSSxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTmFtZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IHJlcG9ydFBsdWdpbkxvYWRJc3N1ZSwgcmVwb3J0UnVsZU92ZXJyaWRlU2tpcCB9IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbi8qKiBSdW50aW1lIGxvYWRpbmcgbW9kZXMgZm9yIHBsdWdpbiBjb25maWcgbG9hZGVycy4gKi9cbnR5cGUgTG9hZE1vZGUgPSBcIm9wdGlvbmFsXCIgfCBcInJlcXVpcmVkXCI7XG5cbi8qKlxuICogQXBwbGllcyBydWxlIG92ZXJyaWRlcyB0byBhIGNvbmZpZ3VyYXRpb24gYXJyYXkuXG4gKiBAcGFyYW0gY29uZmlnIElucHV0IGNvbmZpZyB2YWx1ZS5cbiAqIEBwYXJhbSBydWxlT3ZlcnJpZGVzIElucHV0IHJ1bGVPdmVycmlkZXMgdmFsdWUuXG4gKiBAcGFyYW0gYXZhaWxhYmxlUGx1Z2lucyBJbnB1dCBhdmFpbGFibGVQbHVnaW5zIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhcHBseVJ1bGVPdmVycmlkZXMoW10sIHsgXCJuby1jb25zb2xlXCI6IFwib2ZmXCIgfSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gYXBwbHlSdWxlT3ZlcnJpZGVzKFxuICBjb25maWc6IExpbnRlci5Db25maWdbXSxcbiAgcnVsZU92ZXJyaWRlcz86IExpbnRlci5SdWxlc1JlY29yZCxcbiAgYXZhaWxhYmxlUGx1Z2luczogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKSxcbik6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IGZpbHRlcmVkUnVsZXMgPSBmaWx0ZXJSdWxlT3ZlcnJpZGVzKHJ1bGVPdmVycmlkZXMsIGF2YWlsYWJsZVBsdWdpbnMpO1xuXG4gIGlmIChmaWx0ZXJlZFJ1bGVzID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5jb25maWcsXG4gICAge1xuICAgICAgbmFtZTogXCJjdXN0b20vcnVsZS1vdmVycmlkZXNcIixcbiAgICAgIHJ1bGVzOiBmaWx0ZXJlZFJ1bGVzLFxuICAgIH0gYXMgTGludGVyLkNvbmZpZyxcbiAgXTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBwbHVnaW4gbmFtZXMgZnJvbSBjb25maWcgZW50cmllcy5cbiAqIEBwYXJhbSBjb25maWdzIElucHV0IGNvbmZpZ3MgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbGxlY3RBdmFpbGFibGVQbHVnaW5zKCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY29sbGVjdEF2YWlsYWJsZVBsdWdpbnMoXG4gIGNvbmZpZ3M6IExpbnRlci5Db25maWdbXSxcbik6IFJlYWRvbmx5U2V0PHN0cmluZz4ge1xuICBjb25zdCBwbHVnaW5zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBjb25maWcgb2YgY29uZmlncykge1xuICAgIGlmIChjb25maWcucGx1Z2lucyAhPT0gdm9pZCAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHBsdWdpbk5hbWUgb2YgT2JqZWN0LmtleXMoY29uZmlnLnBsdWdpbnMpKSB7XG4gICAgICAgIHBsdWdpbnMuYWRkKHBsdWdpbk5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwbHVnaW5zO1xufVxuXG4vKipcbiAqIEZpbHRlcnMgcnVsZSBvdmVycmlkZXMgdG8gdGhvc2UgdGhhdCBjYW4gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBydWxlT3ZlcnJpZGVzIElucHV0IHJ1bGVPdmVycmlkZXMgdmFsdWUuXG4gKiBAcGFyYW0gYXZhaWxhYmxlUGx1Z2lucyBJbnB1dCBhdmFpbGFibGVQbHVnaW5zIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmaWx0ZXJSdWxlT3ZlcnJpZGVzKCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZmlsdGVyUnVsZU92ZXJyaWRlcyhcbiAgcnVsZU92ZXJyaWRlczogTGludGVyLlJ1bGVzUmVjb3JkIHwgdW5kZWZpbmVkLFxuICBhdmFpbGFibGVQbHVnaW5zOiBSZWFkb25seVNldDxzdHJpbmc+LFxuKTogTGludGVyLlJ1bGVzUmVjb3JkIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJ1bGVPdmVycmlkZXMgPT09IHZvaWQgMCB8fCBPYmplY3Qua2V5cyhydWxlT3ZlcnJpZGVzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRSdWxlczogTGludGVyLlJ1bGVzUmVjb3JkID0ge307XG5cbiAgZm9yIChjb25zdCBbcnVsZU5hbWUsIHJ1bGVWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocnVsZU92ZXJyaWRlcykpIHtcbiAgICBpZiAoIXNob3VsZFNraXBSdWxlT3ZlcnJpZGUocnVsZU5hbWUsIGF2YWlsYWJsZVBsdWdpbnMpKSB7XG4gICAgICBmaWx0ZXJlZFJ1bGVzW3J1bGVOYW1lXSA9IHJ1bGVWYWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmtleXMoZmlsdGVyZWRSdWxlcykubGVuZ3RoID09PSAwID8gdm9pZCAwIDogZmlsdGVyZWRSdWxlcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBwbHVnaW4gaXMgZGlzYWJsZWQgaW4gdGhlIG9wdGlvbnMuXG4gKiBAcGFyYW0gcGx1Z2luTmFtZSBJbnB1dCBwbHVnaW5OYW1lIHZhbHVlLlxuICogQHBhcmFtIGRpc2FibGVkUGx1Z2lucyBJbnB1dCBkaXNhYmxlZFBsdWdpbnMgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzUGx1Z2luRGlzYWJsZWQoKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc1BsdWdpbkRpc2FibGVkKFxuICBwbHVnaW5OYW1lOiBQbHVnaW5OYW1lLFxuICBkaXNhYmxlZFBsdWdpbnM/OiByZWFkb25seSBQbHVnaW5OYW1lW10sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGRpc2FibGVkUGx1Z2lucz8uaW5jbHVkZXMocGx1Z2luTmFtZSkgPT09IHRydWU7XG59XG5cbi8qKlxuICogTG9hZHMgYSBwbHVnaW4gY29uZmlnIHdpdGggYSBoZWxwZnVsLCBjb2xvcmZ1bCBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuXG4gKiBAcGFyYW0gcGx1Z2luTmFtZSBJbnB1dCBwbHVnaW5OYW1lIHZhbHVlLlxuICogQHBhcmFtIGxvYWRlciBJbnB1dCBsb2FkZXIgdmFsdWUuXG4gKiBAcGFyYW0gbW9kZSBTcGVjaWZpZXMgd2hldGhlciBsb2FkZXIgZmFpbHVyZXMgYXJlIGZhdGFsIG9yIHNraXBwYWJsZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbG9hZFBsdWdpbkNvbmZpZygpO1xuICogYGBgXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRQbHVnaW5Db25maWcoXG4gIHBsdWdpbk5hbWU6IFBsdWdpbk5hbWUsXG4gIGxvYWRlcjogKCkgPT4gTGludGVyLkNvbmZpZ1tdIHwgUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+LFxuICBtb2RlOiBMb2FkTW9kZSA9IFwib3B0aW9uYWxcIixcbik6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGxvYWRlcigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydFBsdWdpbkxvYWRJc3N1ZShwbHVnaW5OYW1lLCBlcnJvciwgbW9kZSk7XG5cbiAgICBpZiAobW9kZSA9PT0gXCJyZXF1aXJlZFwiKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBydWxlIG92ZXJyaWRlIHNob3VsZCBiZSBza2lwcGVkLlxuICogQHBhcmFtIHJ1bGVOYW1lIElucHV0IHJ1bGVOYW1lIHZhbHVlLlxuICogQHBhcmFtIGF2YWlsYWJsZVBsdWdpbnMgSW5wdXQgYXZhaWxhYmxlUGx1Z2lucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc2hvdWxkU2tpcFJ1bGVPdmVycmlkZSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFNraXBSdWxlT3ZlcnJpZGUoXG4gIHJ1bGVOYW1lOiBzdHJpbmcsXG4gIGF2YWlsYWJsZVBsdWdpbnM6IFJlYWRvbmx5U2V0PHN0cmluZz4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgW3BsdWdpbk5hbWUgPSBcIlwiXSA9IHJ1bGVOYW1lLnNwbGl0KFwiL1wiKTtcbiAgY29uc3QgaXNQbHVnaW5SdWxlID0gcnVsZU5hbWUuaW5jbHVkZXMoXCIvXCIpO1xuICBjb25zdCBoYXNQbHVnaW4gPSBhdmFpbGFibGVQbHVnaW5zLmhhcyhwbHVnaW5OYW1lKTtcblxuICBpZiAoaXNQbHVnaW5SdWxlICYmICFoYXNQbHVnaW4pIHtcbiAgICByZXBvcnRSdWxlT3ZlcnJpZGVTa2lwKHJ1bGVOYW1lLCBwbHVnaW5OYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IHtcbiAgYXBwbHlSdWxlT3ZlcnJpZGVzLFxuICBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucyxcbiAgaXNQbHVnaW5EaXNhYmxlZCxcbiAgbG9hZFBsdWdpbkNvbmZpZyxcbn07XG5cbmV4cG9ydCB0eXBlIHsgTG9hZE1vZGUgfTtcbiJdfQ==