@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.
- package/LICENSE +21 -0
- package/README.md +143 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/architecture/boundaries.d.ts +17 -0
- package/dist/architecture/boundaries.d.ts.map +1 -0
- package/dist/architecture/boundaries.js +69 -0
- package/dist/architecture/import-x.d.ts +12 -0
- package/dist/architecture/import-x.d.ts.map +1 -0
- package/dist/architecture/import-x.js +79 -0
- package/dist/architecture/index.d.ts +3 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +3 -0
- package/dist/codeperfect-eslint-config-1.0.0.tgz +0 -0
- package/dist/config-composition.d.ts +6 -0
- package/dist/config-composition.d.ts.map +1 -0
- package/dist/config-composition.js +37 -0
- package/dist/configs/index.d.ts +7 -0
- package/dist/configs/index.d.ts.map +1 -0
- package/dist/configs/index.js +7 -0
- package/dist/core/eslint.d.ts +12 -0
- package/dist/core/eslint.d.ts.map +1 -0
- package/dist/core/eslint.js +58 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/resolver.d.ts +11 -0
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/core/resolver.js +27 -0
- package/dist/core/typescript.d.ts +11 -0
- package/dist/core/typescript.d.ts.map +1 -0
- package/dist/core/typescript.js +63 -0
- package/dist/diagnostics.d.ts +43 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +74 -0
- package/dist/docs/comments.d.ts +11 -0
- package/dist/docs/comments.d.ts.map +1 -0
- package/dist/docs/comments.js +30 -0
- package/dist/docs/index.d.ts +3 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +3 -0
- package/dist/docs/jsdoc.d.ts +12 -0
- package/dist/docs/jsdoc.d.ts.map +1 -0
- package/dist/docs/jsdoc.js +77 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +2 -0
- package/dist/domain/rxjs-x.d.ts +11 -0
- package/dist/domain/rxjs-x.d.ts.map +1 -0
- package/dist/domain/rxjs-x.js +27 -0
- package/dist/index-spec-helpers.d.ts +44 -0
- package/dist/index-spec-helpers.d.ts.map +1 -0
- package/dist/index-spec-helpers.js +175 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/module-taxonomy.d.ts +63 -0
- package/dist/module-taxonomy.d.ts.map +1 -0
- package/dist/module-taxonomy.js +21 -0
- package/dist/plugin-loaders.d.ts +110 -0
- package/dist/plugin-loaders.d.ts.map +1 -0
- package/dist/plugin-loaders.js +110 -0
- package/dist/style/index.d.ts +5 -0
- package/dist/style/index.d.ts.map +1 -0
- package/dist/style/index.js +5 -0
- package/dist/style/perfectionist.d.ts +11 -0
- package/dist/style/perfectionist.d.ts.map +1 -0
- package/dist/style/perfectionist.js +17 -0
- package/dist/style/prettier.d.ts +11 -0
- package/dist/style/prettier.d.ts.map +1 -0
- package/dist/style/prettier.js +15 -0
- package/dist/style/stylistic.d.ts +11 -0
- package/dist/style/stylistic.d.ts.map +1 -0
- package/dist/style/stylistic.js +15 -0
- package/dist/style/unicorn.d.ts +11 -0
- package/dist/style/unicorn.d.ts.map +1 -0
- package/dist/style/unicorn.js +15 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/jasmine.d.ts +11 -0
- package/dist/testing/jasmine.d.ts.map +1 -0
- package/dist/testing/jasmine.js +25 -0
- package/dist/testing/jest.d.ts +11 -0
- package/dist/testing/jest.d.ts.map +1 -0
- package/dist/testing/jest.js +27 -0
- package/dist/testing/playwright.d.ts +12 -0
- package/dist/testing/playwright.d.ts.map +1 -0
- package/dist/testing/playwright.js +29 -0
- package/dist/testing/vitest.d.ts +11 -0
- package/dist/testing/vitest.d.ts.map +1 -0
- package/dist/testing/vitest.js +32 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/utilities.d.ts +52 -0
- package/dist/utilities.d.ts.map +1 -0
- package/dist/utilities.js +125 -0
- 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
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|