@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,175 @@
1
+ import { vi } from "vitest";
2
+ /** List of supported plugin names used in config tests. */
3
+ const allPlugins = [
4
+ "eslint",
5
+ "resolver",
6
+ "typescript",
7
+ "boundaries",
8
+ "import-x",
9
+ "comments",
10
+ "jsdoc",
11
+ "jasmine",
12
+ "jest",
13
+ "playwright",
14
+ "vitest",
15
+ "rxjs-x",
16
+ "perfectionist",
17
+ "prettier",
18
+ "stylistic",
19
+ "unicorn",
20
+ ];
21
+ /**
22
+ * Mock all plugin loaders to return empty configurations.
23
+ * @example
24
+ * ```typescript
25
+ * mockAllEmpty();
26
+ * ```
27
+ */
28
+ function mockAllEmpty() {
29
+ vi.doMock("./configs", () => ({
30
+ boundaries: () => [],
31
+ comments: () => [],
32
+ eslint: () => [],
33
+ importX: () => [],
34
+ jasmine: () => [],
35
+ jest: () => [],
36
+ jsdoc: () => [],
37
+ perfectionist: () => [],
38
+ playwright: () => [],
39
+ prettier: () => [],
40
+ resolver: () => [],
41
+ rxjsX: () => [],
42
+ stylistic: () => [],
43
+ typescript: () => [],
44
+ unicorn: async () => {
45
+ const configs = await Promise.resolve([]);
46
+ return configs;
47
+ },
48
+ vitest: () => [],
49
+ }));
50
+ }
51
+ /**
52
+ * Mock all plugin loaders to return small sample configurations.
53
+ * @example
54
+ * ```typescript
55
+ * mockAllEnabled();
56
+ * ```
57
+ */
58
+ function mockAllEnabled() {
59
+ vi.doMock("./configs", () => ({
60
+ boundaries: () => [{ name: "architecture-boundaries" }],
61
+ comments: () => [{ name: "docs-comments" }],
62
+ eslint: () => [{ name: "core-eslint" }],
63
+ importX: () => [{ name: "architecture-import-x" }],
64
+ jasmine: () => [{ name: "testing-jasmine" }],
65
+ jest: () => [{ name: "testing-jest" }],
66
+ jsdoc: () => [{ name: "docs-jsdoc" }],
67
+ perfectionist: () => [{ name: "style-perfectionist" }],
68
+ playwright: () => [{ name: "testing-playwright" }],
69
+ prettier: () => [{ name: "style-prettier" }],
70
+ resolver: () => [{ name: "core-resolver" }],
71
+ rxjsX: () => [{ name: "domain-rxjs" }],
72
+ stylistic: () => [{ name: "style-stylistic" }],
73
+ typescript: () => [{ name: "core-typescript" }],
74
+ unicorn: async () => {
75
+ const configs = await Promise.resolve([{ name: "style-unicorn" }]);
76
+ return configs;
77
+ },
78
+ vitest: () => [{ name: "testing-vitest" }],
79
+ }));
80
+ }
81
+ /**
82
+ * Mock architecture loaders so `boundaries` only activates with repository input.
83
+ * @example
84
+ * ```typescript
85
+ * mockBoundariesAware();
86
+ * ```
87
+ */
88
+ function mockBoundariesAware() {
89
+ vi.doMock("./configs", () => ({
90
+ boundaries: (boundaries) => boundaries === void 0 ? [] : [{ name: "architecture-boundaries" }],
91
+ comments: () => [{ name: "docs-comments" }],
92
+ eslint: () => [{ name: "core-eslint" }],
93
+ importX: () => [{ name: "architecture-import-x" }],
94
+ jasmine: () => [{ name: "testing-jasmine" }],
95
+ jest: () => [{ name: "testing-jest" }],
96
+ jsdoc: () => [{ name: "docs-jsdoc" }],
97
+ perfectionist: () => [{ name: "style-perfectionist" }],
98
+ playwright: () => [{ name: "testing-playwright" }],
99
+ prettier: () => [{ name: "style-prettier" }],
100
+ resolver: () => [{ name: "core-resolver" }],
101
+ rxjsX: () => [{ name: "domain-rxjs" }],
102
+ stylistic: () => [{ name: "style-stylistic" }],
103
+ typescript: () => [{ name: "core-typescript" }],
104
+ unicorn: async () => {
105
+ const configs = await Promise.resolve([{ name: "style-unicorn" }]);
106
+ return configs;
107
+ },
108
+ vitest: () => [{ name: "testing-vitest" }],
109
+ }));
110
+ }
111
+ /**
112
+ * Mock non-core plugin loaders to return empty configs.
113
+ * @example
114
+ * ```typescript
115
+ * mockNonCoreEmpty();
116
+ * ```
117
+ */
118
+ function mockNonCoreEmpty() {
119
+ vi.doMock("./configs", async () => {
120
+ const actual = await vi.importActual("./configs");
121
+ return {
122
+ ...actual,
123
+ boundaries: () => [],
124
+ comments: () => [],
125
+ importX: () => [],
126
+ jasmine: () => [],
127
+ jest: () => [],
128
+ jsdoc: () => [],
129
+ perfectionist: () => [],
130
+ playwright: () => [],
131
+ prettier: () => [],
132
+ rxjsX: () => [],
133
+ stylistic: () => [],
134
+ unicorn: async () => {
135
+ const configs = await Promise.resolve([]);
136
+ return configs;
137
+ },
138
+ vitest: () => [],
139
+ };
140
+ });
141
+ }
142
+ /**
143
+ * Mock a config composition where required loaders succeed and one optional loader fails.
144
+ * @example
145
+ * ```typescript
146
+ * mockOptionalResolverFailure();
147
+ * ```
148
+ */
149
+ function mockOptionalResolverFailure() {
150
+ vi.doMock("./configs", () => {
151
+ return {
152
+ boundaries: () => [],
153
+ comments: () => [],
154
+ eslint: () => [{ name: "core-eslint" }],
155
+ importX: () => [],
156
+ jasmine: () => [],
157
+ jest: () => [],
158
+ jsdoc: () => [],
159
+ perfectionist: () => [],
160
+ playwright: () => [],
161
+ prettier: () => [],
162
+ resolver: async () => {
163
+ await Promise.resolve();
164
+ throw new Error("Cannot find module 'eslint-import-resolver-typescript'");
165
+ },
166
+ rxjsX: () => [],
167
+ stylistic: () => [],
168
+ typescript: () => [{ name: "core-typescript" }],
169
+ unicorn: () => [],
170
+ vitest: () => [],
171
+ };
172
+ });
173
+ }
174
+ export { allPlugins, mockAllEmpty, mockAllEnabled, mockBoundariesAware, mockNonCoreEmpty, mockOptionalResolverFailure, };
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtc3BlYy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LXNwZWMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSzVCLDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsR0FBRztJQUNqQixRQUFRO0lBQ1IsVUFBVTtJQUNWLFlBQVk7SUFDWixZQUFZO0lBQ1osVUFBVTtJQUNWLFVBQVU7SUFDVixPQUFPO0lBQ1AsU0FBUztJQUNULE1BQU07SUFDTixZQUFZO0lBQ1osUUFBUTtJQUNSLFFBQVE7SUFDUixlQUFlO0lBQ2YsVUFBVTtJQUNWLFdBQVc7SUFDWCxTQUFTO0NBQ3NCLENBQUM7QUFFbEM7Ozs7OztHQU1HO0FBQ0gsU0FBUyxZQUFZO0lBQ25CLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUIsVUFBVSxFQUFFLEdBQW9CLEVBQUUsQ0FBQyxFQUFFO1FBQ3JDLFFBQVEsRUFBRSxHQUFvQixFQUFFLENBQUMsRUFBRTtRQUNuQyxNQUFNLEVBQUUsR0FBb0IsRUFBRSxDQUFDLEVBQUU7UUFDakMsT0FBTyxFQUFFLEdBQW9CLEVBQUUsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sRUFBRSxHQUFvQixFQUFFLENBQUMsRUFBRTtRQUNsQyxJQUFJLEVBQUUsR0FBb0IsRUFBRSxDQUFDLEVBQUU7UUFDL0IsS0FBSyxFQUFFLEdBQW9CLEVBQUUsQ0FBQyxFQUFFO1FBQ2hDLGFBQWEsRUFBRSxHQUFvQixFQUFFLENBQUMsRUFBRTtRQUN4QyxVQUFVLEVBQUUsR0FBb0IsRUFBRSxDQUFDLEVBQUU7UUFDckMsUUFBUSxFQUFFLEdBQW9CLEVBQUUsQ0FBQyxFQUFFO1FBQ25DLFFBQVEsRUFBRSxHQUFvQixFQUFFLENBQUMsRUFBRTtRQUNuQyxLQUFLLEVBQUUsR0FBb0IsRUFBRSxDQUFDLEVB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WUFDbEMsTUFBTSxFQUFFLEdBQW9CLEVBQUUsQ0FBQyxFQUFFO1NBQ2xDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQiwyQkFBMkIsR0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyB2aSB9IGZyb20gXCJ2aXRlc3RcIjtcblxuaW1wb3J0IHR5cGUgKiBhcyBDb25maWdzTW9kdWxlIGZyb20gXCIuL2NvbmZpZ3NcIjtcbmltcG9ydCB0eXBlIHsgUGx1Z2luTmFtZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBMaXN0IG9mIHN1cHBvcnRlZCBwbHVnaW4gbmFtZXMgdXNlZCBpbiBjb25maWcgdGVzdHMuICovXG5jb25zdCBhbGxQbHVnaW5zID0gW1xuICBcImVzbGludFwiLFxuICBcInJlc29sdmVyXCIsXG4gIFwidHlwZXNjcmlwdFwiLFxuICBcImJvdW5kYXJpZXNcIixcbiAgXCJpbXBvcnQteFwiLFxuICBcImNvbW1lbnRzXCIsXG4gIFwianNkb2NcIixcbiAgXCJqYXNtaW5lXCIsXG4gIFwiamVzdFwiLFxuICBcInBsYXl3cmlnaHRcIixcbiAgXCJ2aXRlc3RcIixcbiAgXCJyeGpzLXhcIixcbiAgXCJwZXJmZWN0aW9uaXN0XCIsXG4gIFwicHJldHRpZXJcIixcbiAgXCJzdHlsaXN0aWNcIixcbiAgXCJ1bmljb3JuXCIsXG5dIGFzIGNvbnN0IHNhdGlzZmllcyBQbHVnaW5OYW1lW107XG5cbi8qKlxuICogTW9jayBhbGwgcGx1Z2luIGxvYWRlcnMgdG8gcmV0dXJuIGVtcHR5IGNvbmZpZ3VyYXRpb25zLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG1vY2tBbGxFbXB0eSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIG1vY2tBbGxFbXB0eSgpOiB2b2lkIHtcbiAgdmkuZG9Nb2NrKFwiLi9jb25maWdzXCIsICgpID0+ICh7XG4gICAgYm91bmRhcmllczogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICBjb21tZW50czogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICBlc2xpbnQ6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgaW1wb3J0WDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICBqYXNtaW5lOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIGplc3Q6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAganNkb2M6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgcGVyZmVjdGlvbmlzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICBwbGF5d3JpZ2h0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIHByZXR0aWVyOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIHJlc29sdmVyOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIHJ4anNYOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIHN0eWxpc3RpYzogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICB0eXBlc2NyaXB0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIHVuaWNvcm46IGFzeW5jICgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4gPT4ge1xuICAgICAgY29uc3QgY29uZmlncyA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShbXSBhcyBMaW50ZXIuQ29uZmlnW10pO1xuXG4gICAgICByZXR1cm4gY29uZmlncztcbiAgICB9LFxuICAgIHZpdGVzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgfSkpO1xufVxuXG4vKipcbiAqIE1vY2sgYWxsIHBsdWdpbiBsb2FkZXJzIHRvIHJldHVybiBzbWFsbCBzYW1wbGUgY29uZmlndXJhdGlvbnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbW9ja0FsbEVuYWJsZWQoKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBtb2NrQWxsRW5hYmxlZCgpOiB2b2lkIHtcbiAgdmkuZG9Nb2NrKFwiLi9jb25maWdzXCIsICgpID0+ICh7XG4gICAgYm91bmRhcmllczogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImFyY2hpdGVjdHVyZS1ib3VuZGFyaWVzXCIgfV0sXG4gICAgY29tbWVudHM6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJkb2NzLWNvbW1lbnRzXCIgfV0sXG4gICAgZXNsaW50OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwiY29yZS1lc2xpbnRcIiB9XSxcbiAgICBpbXBvcnRYOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwiYXJjaGl0ZWN0dXJlLWltcG9ydC14XCIgfV0sXG4gICAgamFzbWluZTogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInRlc3RpbmctamFzbWluZVwiIH1dLFxuICAgIGplc3Q6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJ0ZXN0aW5nLWplc3RcIiB9XSxcbiAgICBqc2RvYzogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImRvY3MtanNkb2NcIiB9XSxcbiAgICBwZXJmZWN0aW9uaXN0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwic3R5bGUtcGVyZmVjdGlvbmlzdFwiIH1dLFxuICAgIHBsYXl3cmlnaHQ6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJ0ZXN0aW5nLXBsYXl3cmlnaHRcIiB9XSxcbiAgICBwcmV0dGllcjogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInN0eWxlLXByZXR0aWVyXCIgfV0sXG4gICAgcmVzb2x2ZXI6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJjb3JlLXJlc29sdmVyXCIgfV0sXG4gICAgcnhqc1g6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJkb21haW4tcnhqc1wiIH1dLFxuICAgIHN0eWxpc3RpYzogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInN0eWxlLXN0eWxpc3RpY1wiIH1dLFxuICAgIHR5cGVzY3JpcHQ6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJjb3JlLXR5cGVzY3JpcHRcIiB9XSxcbiAgICB1bmljb3JuOiBhc3luYyAoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+ID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZ3MgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUoW3sgbmFtZTogXCJzdHlsZS11bmljb3JuXCIgfV0pO1xuXG4gICAgICByZXR1cm4gY29uZmlncztcbiAgICB9LFxuICAgIHZpdGVzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInRlc3Rpbmctdml0ZXN0XCIgfV0sXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBNb2NrIGFyY2hpdGVjdHVyZSBsb2FkZXJzIHNvIGBib3VuZGFyaWVzYCBvbmx5IGFjdGl2YXRlcyB3aXRoIHJlcG9zaXRvcnkgaW5wdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbW9ja0JvdW5kYXJpZXNBd2FyZSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIG1vY2tCb3VuZGFyaWVzQXdhcmUoKTogdm9pZCB7XG4gIHZpLmRvTW9jayhcIi4vY29uZmlnc1wiLCAoKSA9PiAoe1xuICAgIGJvdW5kYXJpZXM6IChib3VuZGFyaWVzOiB1bmtub3duKTogTGludGVyLkNvbmZpZ1tdID0+XG4gICAgICBib3VuZGFyaWVzID09PSB2b2lkIDAgPyBbXSA6IFt7IG5hbWU6IFwiYXJjaGl0ZWN0dXJlLWJvdW5kYXJpZXNcIiB9XSxcbiAgICBjb21tZW50czogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImRvY3MtY29tbWVudHNcIiB9XSxcbiAgICBlc2xpbnQ6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJjb3JlLWVzbGludFwiIH1dLFxuICAgIGltcG9ydFg6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJhcmNoaXRlY3R1cmUtaW1wb3J0LXhcIiB9XSxcbiAgICBqYXNtaW5lOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwidGVzdGluZy1qYXNtaW5lXCIgfV0sXG4gICAgamVzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInRlc3RpbmctamVzdFwiIH1dLFxuICAgIGpzZG9jOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwiZG9jcy1qc2RvY1wiIH1dLFxuICAgIHBlcmZlY3Rpb25pc3Q6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW3sgbmFtZTogXCJzdHlsZS1wZXJmZWN0aW9uaXN0XCIgfV0sXG4gICAgcGxheXdyaWdodDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcInRlc3RpbmctcGxheXdyaWdodFwiIH1dLFxuICAgIHByZXR0aWVyOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwic3R5bGUtcHJldHRpZXJcIiB9XSxcbiAgICByZXNvbHZlcjogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImNvcmUtcmVzb2x2ZXJcIiB9XSxcbiAgICByeGpzWDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImRvbWFpbi1yeGpzXCIgfV0sXG4gICAgc3R5bGlzdGljOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwic3R5bGUtc3R5bGlzdGljXCIgfV0sXG4gICAgdHlwZXNjcmlwdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbeyBuYW1lOiBcImNvcmUtdHlwZXNjcmlwdFwiIH1dLFxuICAgIHVuaWNvcm46IGFzeW5jICgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4gPT4ge1xuICAgICAgY29uc3QgY29uZmlncyA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShbeyBuYW1lOiBcInN0eWxlLXVuaWNvcm5cIiB9XSk7XG5cbiAgICAgIHJldHVybiBjb25maWdzO1xuICAgIH0sXG4gICAgdml0ZXN0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwidGVzdGluZy12aXRlc3RcIiB9XSxcbiAgfSkpO1xufVxuXG4vKipcbiAqIE1vY2sgbm9uLWNvcmUgcGx1Z2luIGxvYWRlcnMgdG8gcmV0dXJuIGVtcHR5IGNvbmZpZ3MuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbW9ja05vbkNvcmVFbXB0eSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIG1vY2tOb25Db3JlRW1wdHkoKTogdm9pZCB7XG4gIHZpLmRvTW9jayhcIi4vY29uZmlnc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYWN0dWFsID0gYXdhaXQgdmkuaW1wb3J0QWN0dWFsPHR5cGVvZiBDb25maWdzTW9kdWxlPihcIi4vY29uZmlnc1wiKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY3R1YWwsXG4gICAgICBib3VuZGFyaWVzOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgY29tbWVudHM6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBpbXBvcnRYOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgamFzbWluZTogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIGplc3Q6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBqc2RvYzogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIHBlcmZlY3Rpb25pc3Q6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBwbGF5d3JpZ2h0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgcHJldHRpZXI6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICByeGpzWDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIHN0eWxpc3RpYzogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIHVuaWNvcm46IGFzeW5jICgpOiBQcm9taXNlPExpbnRlci5Db25maWdbXT4gPT4ge1xuICAgICAgICBjb25zdCBjb25maWdzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFtdIGFzIExpbnRlci5Db25maWdbXSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZ3M7XG4gICAgICB9LFxuICAgICAgdml0ZXN0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIE1vY2sgYSBjb25maWcgY29tcG9zaXRpb24gd2hlcmUgcmVxdWlyZWQgbG9hZGVycyBzdWNjZWVkIGFuZCBvbmUgb3B0aW9uYWwgbG9hZGVyIGZhaWxzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG1vY2tPcHRpb25hbFJlc29sdmVyRmFpbHVyZSgpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIG1vY2tPcHRpb25hbFJlc29sdmVyRmFpbHVyZSgpOiB2b2lkIHtcbiAgdmkuZG9Nb2NrKFwiLi9jb25maWdzXCIsICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYm91bmRhcmllczogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIGNvbW1lbnRzOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgZXNsaW50OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwiY29yZS1lc2xpbnRcIiB9XSxcbiAgICAgIGltcG9ydFg6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBqYXNtaW5lOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgamVzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIGpzZG9jOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgcGVyZmVjdGlvbmlzdDogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIHBsYXl3cmlnaHQ6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBwcmV0dGllcjogKCk6IExpbnRlci5Db25maWdbXSA9PiBbXSxcbiAgICAgIHJlc29sdmVyOiBhc3luYyAoKTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+ID0+IHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiQ2Fubm90IGZpbmQgbW9kdWxlICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnXCIsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgcnhqc1g6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICBzdHlsaXN0aWM6ICgpOiBMaW50ZXIuQ29uZmlnW10gPT4gW10sXG4gICAgICB0eXBlc2NyaXB0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFt7IG5hbWU6IFwiY29yZS10eXBlc2NyaXB0XCIgfV0sXG4gICAgICB1bmljb3JuOiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgICAgdml0ZXN0OiAoKTogTGludGVyLkNvbmZpZ1tdID0+IFtdLFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQge1xuICBhbGxQbHVnaW5zLFxuICBtb2NrQWxsRW1wdHksXG4gIG1vY2tBbGxFbmFibGVkLFxuICBtb2NrQm91bmRhcmllc0F3YXJlLFxuICBtb2NrTm9uQ29yZUVtcHR5LFxuICBtb2NrT3B0aW9uYWxSZXNvbHZlckZhaWx1cmUsXG59O1xuIl19
@@ -0,0 +1,15 @@
1
+ import type { Linter } from "eslint";
2
+ import type { ConfigOptions } from "./types";
3
+ /**
4
+ * Creates the ESLint configuration with optional plugin and rule customization.
5
+ * @param options Input options value.
6
+ * @returns Return value output.
7
+ * @example
8
+ * ```typescript
9
+ * config();
10
+ * ```
11
+ */
12
+ declare function config(options?: ConfigOptions): Promise<Linter.Config[]>;
13
+ export { config };
14
+ export type { BoundariesConfig, ConfigOptions } from "./types";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA2C7C;;;;;;;;GAQG;AACH,iBAAe,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAc3E;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ import { defineConfig } from "eslint/config";
2
+ import { moduleTaxonomy } from "./module-taxonomy";
3
+ import { pluginLoaders } from "./plugin-loaders";
4
+ import { applyRuleOverrides, collectAvailablePlugins, isPluginDisabled, loadPluginConfig, } from "./utilities";
5
+ /**
6
+ * Builds the list of plugin config loaders.
7
+ * @param options Input options value.
8
+ * @returns Return value output.
9
+ * @example
10
+ * ```typescript
11
+ * buildPluginConfigLoaders({});
12
+ * ```
13
+ */
14
+ function buildPluginConfigLoaders(options) {
15
+ const disabledPlugins = [...(options.disabledPlugins ?? [])];
16
+ const loaders = [];
17
+ for (const { pluginName } of moduleTaxonomy) {
18
+ const loaderEntry = pluginLoaders[pluginName];
19
+ if (!isPluginDisabled(pluginName, disabledPlugins)) {
20
+ loaders.push(loadPluginConfig(pluginName, loaderEntry.loader(options), loaderEntry.mode));
21
+ }
22
+ }
23
+ return loaders;
24
+ }
25
+ /**
26
+ * Creates the ESLint configuration with optional plugin and rule customization.
27
+ * @param options Input options value.
28
+ * @returns Return value output.
29
+ * @example
30
+ * ```typescript
31
+ * config();
32
+ * ```
33
+ */
34
+ async function config(options = {}) {
35
+ const { rules: ruleOverrides } = options;
36
+ const pluginConfigResults = await Promise.all(buildPluginConfigLoaders(options));
37
+ const pluginConfigs = pluginConfigResults.flat();
38
+ const finalConfig = applyRuleOverrides(pluginConfigs, ruleOverrides, collectAvailablePlugins(pluginConfigs));
39
+ return finalConfig.length === 0 ? [] : defineConfig(...finalConfig);
40
+ }
41
+ export { config };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHdCQUF3QixDQUMvQixPQUFzQjtJQUV0QixNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQStCLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0JBQWdCLENBQ2QsVUFBVSxFQUNWLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQ2pCLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxVQUFVLE1BQU0sQ0FBQyxVQUF5QixFQUFFO0lBQy9DLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMzQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FDbEMsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUNwQyxhQUFhLEVBQ2IsYUFBYSxFQUNiLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUN2QyxDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJlc2xpbnQvY29uZmlnXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IG1vZHVsZVRheG9ub215IH0gZnJvbSBcIi4vbW9kdWxlLXRheG9ub215XCI7XG5pbXBvcnQgeyBwbHVnaW5Mb2FkZXJzIH0gZnJvbSBcIi4vcGx1Z2luLWxvYWRlcnNcIjtcbmltcG9ydCB7XG4gIGFwcGx5UnVsZU92ZXJyaWRlcyxcbiAgY29sbGVjdEF2YWlsYWJsZVBsdWdpbnMsXG4gIGlzUGx1Z2luRGlzYWJsZWQsXG4gIGxvYWRQbHVnaW5Db25maWcsXG59IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbGlzdCBvZiBwbHVnaW4gY29uZmlnIGxvYWRlcnMuXG4gKiBAcGFyYW0gb3B0aW9ucyBJbnB1dCBvcHRpb25zIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBidWlsZFBsdWdpbkNvbmZpZ0xvYWRlcnMoe30pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUGx1Z2luQ29uZmlnTG9hZGVycyhcbiAgb3B0aW9uczogQ29uZmlnT3B0aW9ucyxcbik6IFByb21pc2U8TGludGVyLkNvbmZpZ1tdPltdIHtcbiAgY29uc3QgZGlzYWJsZWRQbHVnaW5zID0gWy4uLihvcHRpb25zLmRpc2FibGVkUGx1Z2lucyA/PyBbXSldO1xuICBjb25zdCBsb2FkZXJzOiBQcm9taXNlPExpbnRlci5Db25maWdbXT5bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBwbHVnaW5OYW1lIH0gb2YgbW9kdWxlVGF4b25vbXkpIHtcbiAgICBjb25zdCBsb2FkZXJFbnRyeSA9IHBsdWdpbkxvYWRlcnNbcGx1Z2luTmFtZV07XG5cbiAgICBpZiAoIWlzUGx1Z2luRGlzYWJsZWQocGx1Z2luTmFtZSwgZGlzYWJsZWRQbHVnaW5zKSkge1xuICAgICAgbG9hZGVycy5wdXNoKFxuICAgICAgICBsb2FkUGx1Z2luQ29uZmlnKFxuICAgICAgICAgIHBsdWdpbk5hbWUsXG4gICAgICAgICAgbG9hZGVyRW50cnkubG9hZGVyKG9wdGlvbnMpLFxuICAgICAgICAgIGxvYWRlckVudHJ5Lm1vZGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2FkZXJzO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEVTTGludCBjb25maWd1cmF0aW9uIHdpdGggb3B0aW9uYWwgcGx1Z2luIGFuZCBydWxlIGN1c3RvbWl6YXRpb24uXG4gKiBAcGFyYW0gb3B0aW9ucyBJbnB1dCBvcHRpb25zIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25maWcoKTtcbiAqIGBgYFxuICovXG5hc3luYyBmdW5jdGlvbiBjb25maWcob3B0aW9uczogQ29uZmlnT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+IHtcbiAgY29uc3QgeyBydWxlczogcnVsZU92ZXJyaWRlcyB9ID0gb3B0aW9ucztcblxuICBjb25zdCBwbHVnaW5Db25maWdSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYnVpbGRQbHVnaW5Db25maWdMb2FkZXJzKG9wdGlvbnMpLFxuICApO1xuICBjb25zdCBwbHVnaW5Db25maWdzID0gcGx1Z2luQ29uZmlnUmVzdWx0cy5mbGF0KCk7XG4gIGNvbnN0IGZpbmFsQ29uZmlnID0gYXBwbHlSdWxlT3ZlcnJpZGVzKFxuICAgIHBsdWdpbkNvbmZpZ3MsXG4gICAgcnVsZU92ZXJyaWRlcyxcbiAgICBjb2xsZWN0QXZhaWxhYmxlUGx1Z2lucyhwbHVnaW5Db25maWdzKSxcbiAgKTtcblxuICByZXR1cm4gZmluYWxDb25maWcubGVuZ3RoID09PSAwID8gW10gOiBkZWZpbmVDb25maWcoLi4uZmluYWxDb25maWcpO1xufVxuXG5leHBvcnQgeyBjb25maWcgfTtcbmV4cG9ydCB0eXBlIHsgQm91bmRhcmllc0NvbmZpZywgQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import type { PluginName } from "./types";
2
+ /** Taxonomy categories for config modules. */
3
+ type ModuleCategory = "architecture" | "core" | "documentation" | "domain" | "repository-architecture" | "style" | "testing";
4
+ /** Entry describing a documented config module. */
5
+ interface ModuleTaxonomyEntry {
6
+ /** Category owning the module. */
7
+ category: ModuleCategory;
8
+ /** Public module name used in config options and diagnostics. */
9
+ pluginName: PluginName;
10
+ }
11
+ /** Ordered module taxonomy matching RFC-0003. */
12
+ declare const moduleTaxonomy: readonly [{
13
+ readonly category: "core";
14
+ readonly pluginName: "eslint";
15
+ }, {
16
+ readonly category: "core";
17
+ readonly pluginName: "resolver";
18
+ }, {
19
+ readonly category: "core";
20
+ readonly pluginName: "typescript";
21
+ }, {
22
+ readonly category: "architecture";
23
+ readonly pluginName: "import-x";
24
+ }, {
25
+ readonly category: "documentation";
26
+ readonly pluginName: "comments";
27
+ }, {
28
+ readonly category: "documentation";
29
+ readonly pluginName: "jsdoc";
30
+ }, {
31
+ readonly category: "testing";
32
+ readonly pluginName: "jasmine";
33
+ }, {
34
+ readonly category: "testing";
35
+ readonly pluginName: "jest";
36
+ }, {
37
+ readonly category: "testing";
38
+ readonly pluginName: "playwright";
39
+ }, {
40
+ readonly category: "testing";
41
+ readonly pluginName: "vitest";
42
+ }, {
43
+ readonly category: "domain";
44
+ readonly pluginName: "rxjs-x";
45
+ }, {
46
+ readonly category: "style";
47
+ readonly pluginName: "stylistic";
48
+ }, {
49
+ readonly category: "style";
50
+ readonly pluginName: "perfectionist";
51
+ }, {
52
+ readonly category: "style";
53
+ readonly pluginName: "unicorn";
54
+ }, {
55
+ readonly category: "style";
56
+ readonly pluginName: "prettier";
57
+ }, {
58
+ readonly category: "repository-architecture";
59
+ readonly pluginName: "boundaries";
60
+ }];
61
+ export { moduleTaxonomy };
62
+ export type { ModuleCategory, ModuleTaxonomyEntry };
63
+ //# sourceMappingURL=module-taxonomy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-taxonomy.d.ts","sourceRoot":"","sources":["../src/module-taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,8CAA8C;AAC9C,KAAK,cAAc,GACf,cAAc,GACd,MAAM,GACN,eAAe,GACf,QAAQ,GACR,yBAAyB,GACzB,OAAO,GACP,SAAS,CAAC;AAEd,mDAAmD;AACnD,UAAU,mBAAmB;IAC3B,kCAAkC;IAClC,QAAQ,EAAE,cAAc,CAAC;IAEzB,iEAAiE;IACjE,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,iDAAiD;AACjD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB+B,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Ordered module taxonomy matching RFC-0003. */
2
+ const moduleTaxonomy = [
3
+ { category: "core", pluginName: "eslint" },
4
+ { category: "core", pluginName: "resolver" },
5
+ { category: "core", pluginName: "typescript" },
6
+ { category: "architecture", pluginName: "import-x" },
7
+ { category: "documentation", pluginName: "comments" },
8
+ { category: "documentation", pluginName: "jsdoc" },
9
+ { category: "testing", pluginName: "jasmine" },
10
+ { category: "testing", pluginName: "jest" },
11
+ { category: "testing", pluginName: "playwright" },
12
+ { category: "testing", pluginName: "vitest" },
13
+ { category: "domain", pluginName: "rxjs-x" },
14
+ { category: "style", pluginName: "stylistic" },
15
+ { category: "style", pluginName: "perfectionist" },
16
+ { category: "style", pluginName: "unicorn" },
17
+ { category: "style", pluginName: "prettier" },
18
+ { category: "repository-architecture", pluginName: "boundaries" },
19
+ ];
20
+ export { moduleTaxonomy };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXRheG9ub215LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZHVsZS10YXhvbm9teS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsaURBQWlEO0FBQ2pELE1BQU0sY0FBYyxHQUFHO0lBQ3JCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQzFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0lBQzVDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFO0lBQzlDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0lBQ3BELEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0lBQ3JELEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0lBQ2xELEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0lBQzlDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQzNDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFO0lBQ2pELEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQzdDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQzVDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0lBQzlDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFO0lBQ2xELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0lBQzVDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0lBQzdDLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUU7Q0FDaEIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbk5hbWUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogVGF4b25vbXkgY2F0ZWdvcmllcyBmb3IgY29uZmlnIG1vZHVsZXMuICovXG50eXBlIE1vZHVsZUNhdGVnb3J5ID1cbiAgfCBcImFyY2hpdGVjdHVyZVwiXG4gIHwgXCJjb3JlXCJcbiAgfCBcImRvY3VtZW50YXRpb25cIlxuICB8IFwiZG9tYWluXCJcbiAgfCBcInJlcG9zaXRvcnktYXJjaGl0ZWN0dXJlXCJcbiAgfCBcInN0eWxlXCJcbiAgfCBcInRlc3RpbmdcIjtcblxuLyoqIEVudHJ5IGRlc2NyaWJpbmcgYSBkb2N1bWVudGVkIGNvbmZpZyBtb2R1bGUuICovXG5pbnRlcmZhY2UgTW9kdWxlVGF4b25vbXlFbnRyeSB7XG4gIC8qKiBDYXRlZ29yeSBvd25pbmcgdGhlIG1vZHVsZS4gKi9cbiAgY2F0ZWdvcnk6IE1vZHVsZUNhdGVnb3J5O1xuXG4gIC8qKiBQdWJsaWMgbW9kdWxlIG5hbWUgdXNlZCBpbiBjb25maWcgb3B0aW9ucyBhbmQgZGlhZ25vc3RpY3MuICovXG4gIHBsdWdpbk5hbWU6IFBsdWdpbk5hbWU7XG59XG5cbi8qKiBPcmRlcmVkIG1vZHVsZSB0YXhvbm9teSBtYXRjaGluZyBSRkMtMDAwMy4gKi9cbmNvbnN0IG1vZHVsZVRheG9ub215ID0gW1xuICB7IGNhdGVnb3J5OiBcImNvcmVcIiwgcGx1Z2luTmFtZTogXCJlc2xpbnRcIiB9LFxuICB7IGNhdGVnb3J5OiBcImNvcmVcIiwgcGx1Z2luTmFtZTogXCJyZXNvbHZlclwiIH0sXG4gIHsgY2F0ZWdvcnk6IFwiY29yZVwiLCBwbHVnaW5OYW1lOiBcInR5cGVzY3JpcHRcIiB9LFxuICB7IGNhdGVnb3J5OiBcImFyY2hpdGVjdHVyZVwiLCBwbHVnaW5OYW1lOiBcImltcG9ydC14XCIgfSxcbiAgeyBjYXRlZ29yeTogXCJkb2N1bWVudGF0aW9uXCIsIHBsdWdpbk5hbWU6IFwiY29tbWVudHNcIiB9LFxuICB7IGNhdGVnb3J5OiBcImRvY3VtZW50YXRpb25cIiwgcGx1Z2luTmFtZTogXCJqc2RvY1wiIH0sXG4gIHsgY2F0ZWdvcnk6IFwidGVzdGluZ1wiLCBwbHVnaW5OYW1lOiBcImphc21pbmVcIiB9LFxuICB7IGNhdGVnb3J5OiBcInRlc3RpbmdcIiwgcGx1Z2luTmFtZTogXCJqZXN0XCIgfSxcbiAgeyBjYXRlZ29yeTogXCJ0ZXN0aW5nXCIsIHBsdWdpbk5hbWU6IFwicGxheXdyaWdodFwiIH0sXG4gIHsgY2F0ZWdvcnk6IFwidGVzdGluZ1wiLCBwbHVnaW5OYW1lOiBcInZpdGVzdFwiIH0sXG4gIHsgY2F0ZWdvcnk6IFwiZG9tYWluXCIsIHBsdWdpbk5hbWU6IFwicnhqcy14XCIgfSxcbiAgeyBjYXRlZ29yeTogXCJzdHlsZVwiLCBwbHVnaW5OYW1lOiBcInN0eWxpc3RpY1wiIH0sXG4gIHsgY2F0ZWdvcnk6IFwic3R5bGVcIiwgcGx1Z2luTmFtZTogXCJwZXJmZWN0aW9uaXN0XCIgfSxcbiAgeyBjYXRlZ29yeTogXCJzdHlsZVwiLCBwbHVnaW5OYW1lOiBcInVuaWNvcm5cIiB9LFxuICB7IGNhdGVnb3J5OiBcInN0eWxlXCIsIHBsdWdpbk5hbWU6IFwicHJldHRpZXJcIiB9LFxuICB7IGNhdGVnb3J5OiBcInJlcG9zaXRvcnktYXJjaGl0ZWN0dXJlXCIsIHBsdWdpbk5hbWU6IFwiYm91bmRhcmllc1wiIH0sXG5dIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBNb2R1bGVUYXhvbm9teUVudHJ5W107XG5cbmV4cG9ydCB7IG1vZHVsZVRheG9ub215IH07XG5leHBvcnQgdHlwZSB7IE1vZHVsZUNhdGVnb3J5LCBNb2R1bGVUYXhvbm9teUVudHJ5IH07XG4iXX0=
@@ -0,0 +1,110 @@
1
+ import type { Linter } from "eslint";
2
+ import type { ConfigOptions, PluginName } from "./types";
3
+ import type { LoadMode } from "./utilities";
4
+ /** Loader function for a single config module. */
5
+ type ConfigLoader = () => Linter.Config[] | Promise<Linter.Config[]>;
6
+ /** Entry describing a single config loader in the final composition order. */
7
+ interface PluginLoaderEntry {
8
+ /** Loader factory for the module. */
9
+ loader: (options: ConfigOptions) => ConfigLoader;
10
+ /** Runtime loading mode for the module. */
11
+ mode: LoadMode;
12
+ /** Public module name used in config options and diagnostics. */
13
+ pluginName: PluginName;
14
+ }
15
+ /**
16
+ * Creates the boundaries loader factory for repository-owned architecture input.
17
+ * @param options Input options value.
18
+ * @returns Return value output.
19
+ * @example
20
+ * ```typescript
21
+ * const factory = createBoundariesLoaderFactory({});
22
+ * ```
23
+ */
24
+ declare function createBoundariesLoaderFactory(options: ConfigOptions): ConfigLoader;
25
+ /** Documented config loader registry keyed by public module name. */
26
+ declare const pluginLoaders: {
27
+ boundaries: {
28
+ loader: typeof createBoundariesLoaderFactory;
29
+ mode: "optional";
30
+ pluginName: "boundaries";
31
+ };
32
+ comments: {
33
+ loader: (options: ConfigOptions) => ConfigLoader;
34
+ mode: "optional";
35
+ pluginName: "comments";
36
+ };
37
+ eslint: {
38
+ loader: (options: ConfigOptions) => ConfigLoader;
39
+ mode: "required";
40
+ pluginName: "eslint";
41
+ };
42
+ "import-x": {
43
+ loader: (options: ConfigOptions) => ConfigLoader;
44
+ mode: "optional";
45
+ pluginName: "import-x";
46
+ };
47
+ jasmine: {
48
+ loader: (options: ConfigOptions) => ConfigLoader;
49
+ mode: "optional";
50
+ pluginName: "jasmine";
51
+ };
52
+ jest: {
53
+ loader: (options: ConfigOptions) => ConfigLoader;
54
+ mode: "optional";
55
+ pluginName: "jest";
56
+ };
57
+ jsdoc: {
58
+ loader: (options: ConfigOptions) => ConfigLoader;
59
+ mode: "optional";
60
+ pluginName: "jsdoc";
61
+ };
62
+ perfectionist: {
63
+ loader: (options: ConfigOptions) => ConfigLoader;
64
+ mode: "optional";
65
+ pluginName: "perfectionist";
66
+ };
67
+ playwright: {
68
+ loader: (options: ConfigOptions) => ConfigLoader;
69
+ mode: "optional";
70
+ pluginName: "playwright";
71
+ };
72
+ prettier: {
73
+ loader: (options: ConfigOptions) => ConfigLoader;
74
+ mode: "optional";
75
+ pluginName: "prettier";
76
+ };
77
+ resolver: {
78
+ loader: (options: ConfigOptions) => ConfigLoader;
79
+ mode: "optional";
80
+ pluginName: "resolver";
81
+ };
82
+ "rxjs-x": {
83
+ loader: (options: ConfigOptions) => ConfigLoader;
84
+ mode: "optional";
85
+ pluginName: "rxjs-x";
86
+ };
87
+ stylistic: {
88
+ loader: (options: ConfigOptions) => ConfigLoader;
89
+ mode: "optional";
90
+ pluginName: "stylistic";
91
+ };
92
+ typescript: {
93
+ loader: (options: ConfigOptions) => ConfigLoader;
94
+ mode: "required";
95
+ pluginName: "typescript";
96
+ };
97
+ unicorn: {
98
+ loader: (options: ConfigOptions) => ConfigLoader;
99
+ mode: "optional";
100
+ pluginName: "unicorn";
101
+ };
102
+ vitest: {
103
+ loader: (options: ConfigOptions) => ConfigLoader;
104
+ mode: "optional";
105
+ pluginName: "vitest";
106
+ };
107
+ };
108
+ export { pluginLoaders };
109
+ export type { ConfigLoader, PluginLoaderEntry };
110
+ //# sourceMappingURL=plugin-loaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-loaders.d.ts","sourceRoot":"","sources":["../src/plugin-loaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqB5C,kDAAkD;AAClD,KAAK,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAErE,8EAA8E;AAC9E,UAAU,iBAAiB;IACzB,qCAAqC;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,CAAC;IAEjD,2CAA2C;IAC3C,IAAI,EAAE,QAAQ,CAAC;IAEf,iEAAiE;IACjE,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,iBAAS,6BAA6B,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAE3E;AAiBD,qEAAqE;AACrE,QAAA,MAAM,aAAa;;;;;;;0BAtCC,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;;0BAA9B,aAAa,KAAK,YAAY;;;;CAuHD,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { boundaries, comments, eslint, importX, jasmine, jest, jsdoc, perfectionist, playwright, prettier, resolver, rxjsX, stylistic, typescript, unicorn, vitest, } from "./configs";
2
+ /**
3
+ * Creates the boundaries loader factory for repository-owned architecture input.
4
+ * @param options Input options value.
5
+ * @returns Return value output.
6
+ * @example
7
+ * ```typescript
8
+ * const factory = createBoundariesLoaderFactory({});
9
+ * ```
10
+ */
11
+ function createBoundariesLoaderFactory(options) {
12
+ return () => boundaries(options.boundaries);
13
+ }
14
+ /**
15
+ * Creates a loader factory for modules that do not depend on config options.
16
+ * @param loader Input loader value.
17
+ * @returns Return value output.
18
+ * @example
19
+ * ```typescript
20
+ * const factory = createStaticLoaderFactory(eslint);
21
+ * ```
22
+ */
23
+ function createStaticLoaderFactory(loader) {
24
+ return () => loader;
25
+ }
26
+ /** Documented config loader registry keyed by public module name. */
27
+ const pluginLoaders = {
28
+ boundaries: {
29
+ loader: createBoundariesLoaderFactory,
30
+ mode: "optional",
31
+ pluginName: "boundaries",
32
+ },
33
+ comments: {
34
+ loader: createStaticLoaderFactory(comments),
35
+ mode: "optional",
36
+ pluginName: "comments",
37
+ },
38
+ eslint: {
39
+ loader: createStaticLoaderFactory(eslint),
40
+ mode: "required",
41
+ pluginName: "eslint",
42
+ },
43
+ "import-x": {
44
+ loader: createStaticLoaderFactory(importX),
45
+ mode: "optional",
46
+ pluginName: "import-x",
47
+ },
48
+ jasmine: {
49
+ loader: createStaticLoaderFactory(jasmine),
50
+ mode: "optional",
51
+ pluginName: "jasmine",
52
+ },
53
+ jest: {
54
+ loader: createStaticLoaderFactory(jest),
55
+ mode: "optional",
56
+ pluginName: "jest",
57
+ },
58
+ jsdoc: {
59
+ loader: createStaticLoaderFactory(jsdoc),
60
+ mode: "optional",
61
+ pluginName: "jsdoc",
62
+ },
63
+ perfectionist: {
64
+ loader: createStaticLoaderFactory(perfectionist),
65
+ mode: "optional",
66
+ pluginName: "perfectionist",
67
+ },
68
+ playwright: {
69
+ loader: createStaticLoaderFactory(playwright),
70
+ mode: "optional",
71
+ pluginName: "playwright",
72
+ },
73
+ prettier: {
74
+ loader: createStaticLoaderFactory(prettier),
75
+ mode: "optional",
76
+ pluginName: "prettier",
77
+ },
78
+ resolver: {
79
+ loader: createStaticLoaderFactory(resolver),
80
+ mode: "optional",
81
+ pluginName: "resolver",
82
+ },
83
+ "rxjs-x": {
84
+ loader: createStaticLoaderFactory(rxjsX),
85
+ mode: "optional",
86
+ pluginName: "rxjs-x",
87
+ },
88
+ stylistic: {
89
+ loader: createStaticLoaderFactory(stylistic),
90
+ mode: "optional",
91
+ pluginName: "stylistic",
92
+ },
93
+ typescript: {
94
+ loader: createStaticLoaderFactory(typescript),
95
+ mode: "required",
96
+ pluginName: "typescript",
97
+ },
98
+ unicorn: {
99
+ loader: createStaticLoaderFactory(unicorn),
100
+ mode: "optional",
101
+ pluginName: "unicorn",
102
+ },
103
+ vitest: {
104
+ loader: createStaticLoaderFactory(vitest),
105
+ mode: "optional",
106
+ pluginName: "vitest",
107
+ },
108
+ };
109
+ export { pluginLoaders };
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGx1Z2luLWxvYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1IsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBSSxFQUNKLEtBQUssRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLE1BQU0sR0FDUCxNQUFNLFdBQVcsQ0FBQztBQWlCbkI7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDZCQUE2QixDQUFDLE9BQXNCO0lBQzNELE9BQU8sR0FBb0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FDaEMsTUFBb0I7SUFFcEIsT0FBTyxHQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ3BDLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxhQUFhLEdBQUc7SUFDcEIsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLDZCQUE2QjtRQUNyQyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsWUFBWTtLQUN6QjtJQUNELFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7UUFDM0MsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLFVBQVU7S0FDdkI7SUFDRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUseUJBQXlCLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLHlCQUF5QixDQUFDLE9BQU8sQ0FBQztRQUMxQyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsVUFBVTtLQUN2QjtJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7UUFDMUMsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLFNBQVM7S0FDdEI7SUFDRCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxNQUFNO0tBQ25CO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLHlCQUF5QixDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsT0FBTztLQUNwQjtJQUNELGFBQWEsRUFBRTtRQUNiLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLGVBQWU7S0FDNUI7SUFDRCxVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUseUJBQXlCLENBQUMsVUFBVSxDQUFDO1FBQzdDLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxZQUFZO0tBQ3pCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsQ0FBQztRQUMzQyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsVUFBVTtLQUN2QjtJQUNELFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7UUFDM0MsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLFVBQVU7S0FDdkI7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUseUJBQXlCLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsV0FBVztLQUN4QjtJQUNELFVBQVUsRUFBRTtRQUNWLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxVQUFVLENBQUM7UUFDN0MsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLFlBQVk7S0FDekI7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQUUseUJBQXlCLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksRUFBRSxVQUFVO1FBQ2hCLFVBQVUsRUFBRSxTQUFTO0tBQ3RCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sTUFBTSxFQUFFLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztRQUN6QyxJQUFJLEVBQUUsVUFBVTtRQUNoQixVQUFVLEVBQUUsUUFBUTtLQUNyQjtDQUM4QyxDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbmZpZ09wdGlvbnMsIFBsdWdpbk5hbWUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBMb2FkTW9kZSB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5pbXBvcnQge1xuICBib3VuZGFyaWVzLFxuICBjb21tZW50cyxcbiAgZXNsaW50LFxuICBpbXBvcnRYLFxuICBqYXNtaW5lLFxuICBqZXN0LFxuICBqc2RvYyxcbiAgcGVyZmVjdGlvbmlzdCxcbiAgcGxheXdyaWdodCxcbiAgcHJldHRpZXIsXG4gIHJlc29sdmVyLFxuICByeGpzWCxcbiAgc3R5bGlzdGljLFxuICB0eXBlc2NyaXB0LFxuICB1bmljb3JuLFxuICB2aXRlc3QsXG59IGZyb20gXCIuL2NvbmZpZ3NcIjtcblxuLyoqIExvYWRlciBmdW5jdGlvbiBmb3IgYSBzaW5nbGUgY29uZmlnIG1vZHVsZS4gKi9cbnR5cGUgQ29uZmlnTG9hZGVyID0gKCkgPT4gTGludGVyLkNvbmZpZ1tdIHwgUHJvbWlzZTxMaW50ZXIuQ29uZmlnW10+O1xuXG4vKiogRW50cnkgZGVzY3JpYmluZyBhIHNpbmdsZSBjb25maWcgbG9hZGVyIGluIHRoZSBmaW5hbCBjb21wb3NpdGlvbiBvcmRlci4gKi9cbmludGVyZmFjZSBQbHVnaW5Mb2FkZXJFbnRyeSB7XG4gIC8qKiBMb2FkZXIgZmFjdG9yeSBmb3IgdGhlIG1vZHVsZS4gKi9cbiAgbG9hZGVyOiAob3B0aW9uczogQ29uZmlnT3B0aW9ucykgPT4gQ29uZmlnTG9hZGVyO1xuXG4gIC8qKiBSdW50aW1lIGxvYWRpbmcgbW9kZSBmb3IgdGhlIG1vZHVsZS4gKi9cbiAgbW9kZTogTG9hZE1vZGU7XG5cbiAgLyoqIFB1YmxpYyBtb2R1bGUgbmFtZSB1c2VkIGluIGNvbmZpZyBvcHRpb25zIGFuZCBkaWFnbm9zdGljcy4gKi9cbiAgcGx1Z2luTmFtZTogUGx1Z2luTmFtZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBib3VuZGFyaWVzIGxvYWRlciBmYWN0b3J5IGZvciByZXBvc2l0b3J5LW93bmVkIGFyY2hpdGVjdHVyZSBpbnB1dC5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZhY3RvcnkgPSBjcmVhdGVCb3VuZGFyaWVzTG9hZGVyRmFjdG9yeSh7fSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQm91bmRhcmllc0xvYWRlckZhY3Rvcnkob3B0aW9uczogQ29uZmlnT3B0aW9ucyk6IENvbmZpZ0xvYWRlciB7XG4gIHJldHVybiAoKTogTGludGVyLkNvbmZpZ1tdID0+IGJvdW5kYXJpZXMob3B0aW9ucy5ib3VuZGFyaWVzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9hZGVyIGZhY3RvcnkgZm9yIG1vZHVsZXMgdGhhdCBkbyBub3QgZGVwZW5kIG9uIGNvbmZpZyBvcHRpb25zLlxuICogQHBhcmFtIGxvYWRlciBJbnB1dCBsb2FkZXIgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZhY3RvcnkgPSBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KGVzbGludCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGljTG9hZGVyRmFjdG9yeShcbiAgbG9hZGVyOiBDb25maWdMb2FkZXIsXG4pOiBQbHVnaW5Mb2FkZXJFbnRyeVtcImxvYWRlclwiXSB7XG4gIHJldHVybiAoKTogQ29uZmlnTG9hZGVyID0+IGxvYWRlcjtcbn1cblxuLyoqIERvY3VtZW50ZWQgY29uZmlnIGxvYWRlciByZWdpc3RyeSBrZXllZCBieSBwdWJsaWMgbW9kdWxlIG5hbWUuICovXG5jb25zdCBwbHVnaW5Mb2FkZXJzID0ge1xuICBib3VuZGFyaWVzOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVCb3VuZGFyaWVzTG9hZGVyRmFjdG9yeSxcbiAgICBtb2RlOiBcIm9wdGlvbmFsXCIsXG4gICAgcGx1Z2luTmFtZTogXCJib3VuZGFyaWVzXCIsXG4gIH0sXG4gIGNvbW1lbnRzOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KGNvbW1lbnRzKSxcbiAgICBtb2RlOiBcIm9wdGlvbmFsXCIsXG4gICAgcGx1Z2luTmFtZTogXCJjb21tZW50c1wiLFxuICB9LFxuICBlc2xpbnQ6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkoZXNsaW50KSxcbiAgICBtb2RlOiBcInJlcXVpcmVkXCIsXG4gICAgcGx1Z2luTmFtZTogXCJlc2xpbnRcIixcbiAgfSxcbiAgXCJpbXBvcnQteFwiOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KGltcG9ydFgpLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcImltcG9ydC14XCIsXG4gIH0sXG4gIGphc21pbmU6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkoamFzbWluZSksXG4gICAgbW9kZTogXCJvcHRpb25hbFwiLFxuICAgIHBsdWdpbk5hbWU6IFwiamFzbWluZVwiLFxuICB9LFxuICBqZXN0OiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KGplc3QpLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcImplc3RcIixcbiAgfSxcbiAganNkb2M6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkoanNkb2MpLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcImpzZG9jXCIsXG4gIH0sXG4gIHBlcmZlY3Rpb25pc3Q6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkocGVyZmVjdGlvbmlzdCksXG4gICAgbW9kZTogXCJvcHRpb25hbFwiLFxuICAgIHBsdWdpbk5hbWU6IFwicGVyZmVjdGlvbmlzdFwiLFxuICB9LFxuICBwbGF5d3JpZ2h0OiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHBsYXl3cmlnaHQpLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcInBsYXl3cmlnaHRcIixcbiAgfSxcbiAgcHJldHRpZXI6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkocHJldHRpZXIpLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcInByZXR0aWVyXCIsXG4gIH0sXG4gIHJlc29sdmVyOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHJlc29sdmVyKSxcbiAgICBtb2RlOiBcIm9wdGlvbmFsXCIsXG4gICAgcGx1Z2luTmFtZTogXCJyZXNvbHZlclwiLFxuICB9LFxuICBcInJ4anMteFwiOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHJ4anNYKSxcbiAgICBtb2RlOiBcIm9wdGlvbmFsXCIsXG4gICAgcGx1Z2luTmFtZTogXCJyeGpzLXhcIixcbiAgfSxcbiAgc3R5bGlzdGljOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHN0eWxpc3RpYyksXG4gICAgbW9kZTogXCJvcHRpb25hbFwiLFxuICAgIHBsdWdpbk5hbWU6IFwic3R5bGlzdGljXCIsXG4gIH0sXG4gIHR5cGVzY3JpcHQ6IHtcbiAgICBsb2FkZXI6IGNyZWF0ZVN0YXRpY0xvYWRlckZhY3RvcnkodHlwZXNjcmlwdCksXG4gICAgbW9kZTogXCJyZXF1aXJlZFwiLFxuICAgIHBsdWdpbk5hbWU6IFwidHlwZXNjcmlwdFwiLFxuICB9LFxuICB1bmljb3JuOiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHVuaWNvcm4pLFxuICAgIG1vZGU6IFwib3B0aW9uYWxcIixcbiAgICBwbHVnaW5OYW1lOiBcInVuaWNvcm5cIixcbiAgfSxcbiAgdml0ZXN0OiB7XG4gICAgbG9hZGVyOiBjcmVhdGVTdGF0aWNMb2FkZXJGYWN0b3J5KHZpdGVzdCksXG4gICAgbW9kZTogXCJvcHRpb25hbFwiLFxuICAgIHBsdWdpbk5hbWU6IFwidml0ZXN0XCIsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8UGx1Z2luTmFtZSwgUGx1Z2luTG9hZGVyRW50cnk+O1xuXG5leHBvcnQgeyBwbHVnaW5Mb2FkZXJzIH07XG5leHBvcnQgdHlwZSB7IENvbmZpZ0xvYWRlciwgUGx1Z2luTG9hZGVyRW50cnkgfTtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export { perfectionist } from "./perfectionist";
2
+ export { prettier } from "./prettier";
3
+ export { stylistic } from "./stylistic";
4
+ export { unicorn } from "./unicorn";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/style/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { perfectionist } from "./perfectionist";
2
+ export { prettier } from "./prettier";
3
+ export { stylistic } from "./stylistic";
4
+ export { unicorn } from "./unicorn";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcGVyZmVjdGlvbmlzdCB9IGZyb20gXCIuL3BlcmZlY3Rpb25pc3RcIjtcbmV4cG9ydCB7IHByZXR0aWVyIH0gZnJvbSBcIi4vcHJldHRpZXJcIjtcbmV4cG9ydCB7IHN0eWxpc3RpYyB9IGZyb20gXCIuL3N0eWxpc3RpY1wiO1xuZXhwb3J0IHsgdW5pY29ybiB9IGZyb20gXCIuL3VuaWNvcm5cIjtcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import type { Linter } from "eslint";
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 declare function perfectionist(): Promise<Linter.Config[]>;
11
+ //# sourceMappingURL=perfectionist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perfectionist.d.ts","sourceRoot":"","sources":["../../src/style/perfectionist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;GAOG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAO9D"}