@brnshkr/config 0.0.1-alpha.2

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.
@@ -0,0 +1,402 @@
1
+ import { d as PACKAGES, f as isModuleEnabled, i as isModuleEnabledByDefault, m as setModuleEnabled, n as MAX_LEN, o as objectEntries, p as resolvePackages, r as GLOB_IGNORES, t as INDENT, u as MODULES, y as packageOrganization } from "../shared.mjs";
2
+
3
+ //#region src/js/stylelint/configs/baseline.ts
4
+ const baseline = () => {
5
+ const { requiredAll: [isStylelintPluginUseBaselineInstalled] } = resolvePackages(MODULES.baseline);
6
+ if (!isStylelintPluginUseBaselineInstalled) return [];
7
+ return [{
8
+ plugins: PACKAGES.STYLELINT_PLUGIN_USE_BASELINE,
9
+ rules: { "plugin/use-baseline": true }
10
+ }];
11
+ };
12
+
13
+ //#endregion
14
+ //#region src/js/stylelint/configs/css.ts
15
+ const css = () => [{
16
+ extends: "stylelint-config-standard",
17
+ reportDescriptionlessDisables: true,
18
+ reportInvalidScopeDisables: true,
19
+ reportNeedlessDisables: true,
20
+ reportUnscopedDisables: true,
21
+ rules: {
22
+ "at-rule-disallowed-list": ["debug"],
23
+ "at-rule-property-required-list": { "font-face": [
24
+ "font-display",
25
+ "font-family",
26
+ "font-style",
27
+ "font-weight",
28
+ "src"
29
+ ] },
30
+ "color-hex-length": "long",
31
+ "color-named": "never",
32
+ "color-no-invalid-hex": true,
33
+ "comment-word-disallowed-list": [new RegExp(`^${["TO", "DO"].join("")}`, "v")],
34
+ "declaration-no-important": true,
35
+ "declaration-property-value-disallowed-list": {
36
+ border: ["none"],
37
+ "border-top": ["none"],
38
+ "border-right": ["none"],
39
+ "border-bottom": ["none"],
40
+ "border-left": ["none"]
41
+ },
42
+ "declaration-property-unit-allowed-list": {
43
+ "/^animation/": "ms",
44
+ "/^transition/": "ms",
45
+ "font-size": ["em", "rem"],
46
+ "line-height": []
47
+ },
48
+ "font-family-name-quotes": "always-unless-keyword",
49
+ "font-weight-notation": "numeric",
50
+ "function-linear-gradient-no-nonstandard-direction": true,
51
+ "function-no-unknown": true,
52
+ "function-url-no-scheme-relative": true,
53
+ "function-url-scheme-allowed-list": ["data", "https"],
54
+ "max-nesting-depth": 3,
55
+ "no-unknown-animations": true,
56
+ "no-unknown-custom-media": true,
57
+ "no-unknown-custom-properties": true,
58
+ "string-no-newline": true,
59
+ "unit-no-unknown": true,
60
+ "value-keyword-case": ["lower", {
61
+ camelCaseSvgKeywords: true,
62
+ ignoreKeywords: [/^geometricPrecision$/v]
63
+ }]
64
+ }
65
+ }];
66
+
67
+ //#endregion
68
+ //#region src/js/stylelint/configs/defensive.ts
69
+ const defensive = () => {
70
+ const { requiredAll: [isStylelintPluginDefensiveCssInstalled] } = resolvePackages(MODULES.defensive);
71
+ if (!isStylelintPluginDefensiveCssInstalled) return [];
72
+ return [{
73
+ plugins: PACKAGES.STYLELINT_PLUGIN_DEFENSIVE_CSS,
74
+ rules: { "plugin/use-defensive-css": [true, {
75
+ "accidental-hover": true,
76
+ "background-repeat": true,
77
+ "flex-wrapping": true,
78
+ "scroll-chaining": true,
79
+ "scrollbar-gutter": true,
80
+ "vendor-prefix-grouping": true
81
+ }] }
82
+ }];
83
+ };
84
+
85
+ //#endregion
86
+ //#region src/js/stylelint/types/overrides.ts
87
+ const OVERRIDES = {
88
+ SCSS: "scss",
89
+ SVELTE: "svelte"
90
+ };
91
+
92
+ //#endregion
93
+ //#region src/js/stylelint/utils/config.ts
94
+ const buildOverrideName = (override) => [packageOrganization, override].filter(Boolean).join("/");
95
+ const isValidGlobalAdditionalConfigKey = (key) => [
96
+ "extends",
97
+ "plugins",
98
+ "pluginFunctions",
99
+ "ignoreFiles",
100
+ "rules",
101
+ "quiet",
102
+ "formatter",
103
+ "defaultSeverity",
104
+ "ignoreDisables",
105
+ "reportNeedlessDisables",
106
+ "reportInvalidScopeDisables",
107
+ "reportDescriptionlessDisables",
108
+ "reportUnscopedDisables",
109
+ "configurationComment",
110
+ "overrides",
111
+ "customSyntax",
112
+ "processors",
113
+ "languageOptions",
114
+ "allowEmptyInput",
115
+ "cache",
116
+ "fix",
117
+ "computeEditInfo",
118
+ "validate"
119
+ ].includes(key);
120
+ const getGlobalAdditionalConfig = (options) => {
121
+ const config = {};
122
+ for (const [key, value] of objectEntries(options)) if (isValidGlobalAdditionalConfigKey(key)) config[key] = value;
123
+ if (Object.keys(config).length === 0) return;
124
+ return config;
125
+ };
126
+ const getUserConfigs = (resolvedOptions, additionalConfigs) => [getGlobalAdditionalConfig(resolvedOptions), ...additionalConfigs].filter(Boolean);
127
+ const includeConfigs = (config, configsToInclude) => {
128
+ for (const configToInclude of configsToInclude) {
129
+ if (configToInclude.extends !== void 0) config.extends = [...new Set([...Array.isArray(config.extends) ? config.extends ?? [] : [config.extends].filter(Boolean), ...Array.isArray(configToInclude.extends) ? configToInclude.extends ?? [] : [configToInclude.extends].filter(Boolean)])];
130
+ if (configToInclude.plugins !== void 0) config.plugins = [...new Set([...Array.isArray(config.plugins) ? config.plugins ?? [] : [config.plugins].filter(Boolean), ...Array.isArray(configToInclude.plugins) ? configToInclude.plugins ?? [] : [configToInclude.plugins].filter(Boolean)])];
131
+ if (configToInclude.pluginFunctions !== void 0) config.pluginFunctions = {
132
+ ...config.pluginFunctions,
133
+ ...configToInclude.pluginFunctions
134
+ };
135
+ if (configToInclude.ignoreFiles !== void 0) config.ignoreFiles = [...new Set([...Array.isArray(config.ignoreFiles) ? config.ignoreFiles ?? [] : [config.ignoreFiles].filter(Boolean), ...Array.isArray(configToInclude.ignoreFiles) ? configToInclude.ignoreFiles ?? [] : [configToInclude.ignoreFiles].filter(Boolean)])];
136
+ if (configToInclude.rules !== void 0) config.rules = {
137
+ ...config.rules,
138
+ ...configToInclude.rules
139
+ };
140
+ if (configToInclude.quiet !== void 0) config.quiet = configToInclude.quiet;
141
+ if (configToInclude.formatter !== void 0) config.formatter = configToInclude.formatter;
142
+ if (configToInclude.defaultSeverity !== void 0) config.defaultSeverity = configToInclude.defaultSeverity;
143
+ if (configToInclude.ignoreDisables !== void 0) config.ignoreDisables = configToInclude.ignoreDisables;
144
+ if (configToInclude.reportNeedlessDisables !== void 0) config.reportNeedlessDisables = configToInclude.reportNeedlessDisables;
145
+ if (configToInclude.reportInvalidScopeDisables !== void 0) config.reportInvalidScopeDisables = configToInclude.reportInvalidScopeDisables;
146
+ if (configToInclude.reportDescriptionlessDisables !== void 0) config.reportDescriptionlessDisables = configToInclude.reportDescriptionlessDisables;
147
+ if (configToInclude.reportUnscopedDisables !== void 0) config.reportUnscopedDisables = configToInclude.reportUnscopedDisables;
148
+ if (configToInclude.configurationComment !== void 0) config.configurationComment = configToInclude.configurationComment;
149
+ if (configToInclude.overrides !== void 0) {
150
+ const overridesToIncude = configToInclude.overrides;
151
+ config.overrides = [...(config.overrides ?? []).filter((existingOverride) => !overridesToIncude.some((overrideToIncude) => overrideToIncude.name !== void 0 && overrideToIncude.name === existingOverride.name)), ...overridesToIncude];
152
+ }
153
+ if (configToInclude.customSyntax !== void 0) config.customSyntax = configToInclude.customSyntax;
154
+ if (configToInclude.processors !== void 0) config.processors = [...new Set([...config.processors ?? [], ...configToInclude.processors])];
155
+ if (configToInclude.languageOptions !== void 0) config.languageOptions = {
156
+ ...config.languageOptions,
157
+ ...configToInclude.languageOptions,
158
+ syntax: {
159
+ atRules: {
160
+ ...config.languageOptions?.syntax?.atRules,
161
+ ...configToInclude.languageOptions.syntax?.atRules
162
+ },
163
+ cssWideKeywords: [...new Set([...config.languageOptions?.syntax?.cssWideKeywords ?? [], ...configToInclude.languageOptions.syntax?.cssWideKeywords ?? []])],
164
+ properties: {
165
+ ...config.languageOptions?.syntax?.properties,
166
+ ...configToInclude.languageOptions.syntax?.properties
167
+ },
168
+ types: {
169
+ ...config.languageOptions?.syntax?.types,
170
+ ...configToInclude.languageOptions.syntax?.types
171
+ }
172
+ }
173
+ };
174
+ if (configToInclude.allowEmptyInput !== void 0) config.allowEmptyInput = configToInclude.allowEmptyInput;
175
+ if (configToInclude.cache !== void 0) config.cache = configToInclude.cache;
176
+ if (configToInclude.fix !== void 0) config.fix = configToInclude.fix;
177
+ if (configToInclude.computeEditInfo !== void 0) config.computeEditInfo = configToInclude.computeEditInfo;
178
+ if (configToInclude.validate !== void 0) config.validate = configToInclude.validate;
179
+ }
180
+ };
181
+
182
+ //#endregion
183
+ //#region src/js/stylelint/configs/html.ts
184
+ const html = () => {
185
+ const { requiredAll: [isPostcssHtmlInstalled, isStylelintConfigHtmlInstalled] } = resolvePackages(MODULES.html);
186
+ if (!isPostcssHtmlInstalled || !isStylelintConfigHtmlInstalled) return [];
187
+ return [{
188
+ extends: PACKAGES.STYLELINT_CONFIG_HTML,
189
+ overrides: [{
190
+ name: buildOverrideName(OVERRIDES.SVELTE),
191
+ files: ["**/*.svelte"],
192
+ rules: {
193
+ "keyframes-name-pattern": ["^(-global-)?([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { message: (name) => `Expected keyframe name "${name}" to be kebab-case` }],
194
+ "selector-pseudo-class-no-unknown": [true, { ignorePseudoClasses: ["global"] }]
195
+ }
196
+ }]
197
+ }];
198
+ };
199
+
200
+ //#endregion
201
+ //#region src/js/stylelint/configs/ignores.ts
202
+ const ignores = () => [{ ignoreFiles: GLOB_IGNORES.map((glob) => glob.replace(/^\*\*/v, process.cwd())) }];
203
+
204
+ //#endregion
205
+ //#region src/js/stylelint/configs/logical.ts
206
+ const logical = () => {
207
+ const { requiredAll: [isStylelintPluginLogicalCssInstalled] } = resolvePackages(MODULES.logical);
208
+ if (!isStylelintPluginLogicalCssInstalled) return [];
209
+ return [{
210
+ plugins: PACKAGES.STYLELINT_PLUGIN_LOGICAL_CSS,
211
+ rules: {
212
+ "plugin/use-logical-properties-and-values": true,
213
+ "plugin/use-logical-units": true
214
+ }
215
+ }];
216
+ };
217
+
218
+ //#endregion
219
+ //#region src/js/stylelint/configs/modules.ts
220
+ const modules = () => {
221
+ const { requiredAll: [isStylelintConfigCssModulesInstalled] } = resolvePackages(MODULES.modules);
222
+ if (!isStylelintConfigCssModulesInstalled) return [];
223
+ return [{ extends: PACKAGES.STYLELINT_CONFIG_CSS_MODULES }];
224
+ };
225
+
226
+ //#endregion
227
+ //#region src/js/stylelint/configs/nesting.ts
228
+ const nesting = () => {
229
+ const { requiredAll: [isStylelintUseNestingInstalled] } = resolvePackages(MODULES.nesting);
230
+ if (!isStylelintUseNestingInstalled) return [];
231
+ return [{
232
+ plugins: PACKAGES.STYLELINT_USE_NESTING,
233
+ rules: { "csstools/use-nesting": ["always", { syntax: isModuleEnabled(MODULES.scss) ? "scss" : "css" }] }
234
+ }];
235
+ };
236
+
237
+ //#endregion
238
+ //#region src/js/stylelint/configs/order.ts
239
+ const order = () => {
240
+ const { requiredAll: [isStylelintConfigRecessOrderInstalled] } = resolvePackages(MODULES.order);
241
+ if (!isStylelintConfigRecessOrderInstalled) return [];
242
+ return [{ extends: PACKAGES.STYLELINT_CONFIG_RECESS_ORDER }];
243
+ };
244
+
245
+ //#endregion
246
+ //#region src/js/stylelint/configs/scss.ts
247
+ const scss = () => {
248
+ const { requiredAll: [isStylelintConfigStandardScssInstalled] } = resolvePackages(MODULES.scss);
249
+ if (!isStylelintConfigStandardScssInstalled) return [];
250
+ return [{
251
+ extends: PACKAGES.STYLELINT_CONFIG_STANDARD_SCSS,
252
+ rules: {
253
+ "scss/at-each-key-value-single-line": true,
254
+ "scss/at-mixin-argumentless-call-parentheses": "always",
255
+ "scss/at-mixin-no-risky-nesting-selector": true,
256
+ "scss/at-root-no-redundant": true,
257
+ "scss/at-use-no-redundant-alias": true,
258
+ "scss/block-no-redundant-nesting": true,
259
+ "scss/declaration-nested-properties": "never",
260
+ "scss/dimension-no-non-numeric-values": true,
261
+ "scss/dollar-variable-first-in-block": [true, {
262
+ ignore: ["comments", "imports"],
263
+ except: [
264
+ "function",
265
+ "mixin",
266
+ "if-else",
267
+ "loops"
268
+ ]
269
+ }],
270
+ "scss/dollar-variable-no-namespaced-assignment": true,
271
+ "scss/double-slash-comment-inline": "never",
272
+ "scss/function-color-channel": true,
273
+ "scss/function-color-relative": true,
274
+ "scss/map-keys-quotes": "always",
275
+ "scss/no-duplicate-dollar-variables": [true, {
276
+ ignoreInsideAtRules: ["if", "mixin"],
277
+ ignoreDefaults: false
278
+ }],
279
+ "scss/no-duplicate-load-rules": true,
280
+ "scss/no-unused-private-members": true,
281
+ "scss/partial-no-import": true,
282
+ "scss/at-import-partial-extension-disallowed-list": ["scss"],
283
+ "property-no-unknown": null,
284
+ "scss/property-no-unknown": true,
285
+ "scss/selector-no-redundant-nesting-selector": true
286
+ },
287
+ overrides: [{
288
+ name: buildOverrideName(OVERRIDES.SCSS),
289
+ files: ["**/*.scss"],
290
+ rules: { "scss/comment-no-loud": true }
291
+ }]
292
+ }];
293
+ };
294
+
295
+ //#endregion
296
+ //#region src/js/stylelint/configs/strict.ts
297
+ const strict = () => {
298
+ const { requiredAll: [isStylelintDeclarationStrictValueInstalled] } = resolvePackages(MODULES.strict);
299
+ if (!isStylelintDeclarationStrictValueInstalled) return [];
300
+ return [{
301
+ plugins: PACKAGES.STYLELINT_DECLARATION_STRICT_VALUE,
302
+ rules: { "scale-unlimited/declaration-strict-value": [
303
+ "/color$/",
304
+ "font-size",
305
+ "z-index"
306
+ ] }
307
+ }];
308
+ };
309
+
310
+ //#endregion
311
+ //#region src/js/stylelint/configs/style.ts
312
+ const style = () => {
313
+ const { requiredAll: [isStylisticStylelintConfigInstalled] } = resolvePackages(MODULES.style);
314
+ if (!isStylisticStylelintConfigInstalled) return [];
315
+ return [{
316
+ extends: PACKAGES.STYLISTIC_STYLELINT_CONFIG,
317
+ rules: {
318
+ "@stylistic/at-rule-name-newline-after": "always-multi-line",
319
+ "@stylistic/at-rule-semicolon-space-before": "never",
320
+ "@stylistic/block-closing-brace-newline-before": "always",
321
+ "@stylistic/block-opening-brace-newline-after": "always",
322
+ "@stylistic/declaration-block-semicolon-newline-after": "always",
323
+ "@stylistic/function-comma-newline-before": "never-multi-line",
324
+ "@stylistic/function-comma-space-before": "never-single-line",
325
+ "@stylistic/indentation": INDENT,
326
+ "@stylistic/linebreaks": "unix",
327
+ "@stylistic/max-line-length": MAX_LEN,
328
+ "@stylistic/media-query-list-comma-newline-after": "always",
329
+ "@stylistic/media-query-list-comma-newline-before": "never-multi-line",
330
+ "@stylistic/named-grid-areas-alignment": [true, { alignQuotes: true }],
331
+ "@stylistic/selector-list-comma-newline-before": "never-multi-line",
332
+ "@stylistic/string-quotes": "single",
333
+ "@stylistic/unicode-bom": "never",
334
+ "@stylistic/value-list-comma-newline-before": "never-multi-line",
335
+ "@stylistic/value-list-comma-space-before": "never-single-line"
336
+ }
337
+ }];
338
+ };
339
+
340
+ //#endregion
341
+ //#region src/js/stylelint/configs/index.ts
342
+ const configs = {
343
+ baseline,
344
+ css,
345
+ defensive,
346
+ html,
347
+ ignores,
348
+ logical,
349
+ modules,
350
+ nesting,
351
+ order,
352
+ scss,
353
+ strict,
354
+ style
355
+ };
356
+
357
+ //#endregion
358
+ //#region src/js/stylelint/index.ts
359
+ const getConfig = (optionsAndGlobalConfig, ...additionalConfigs) => {
360
+ const resolvedOptions = {
361
+ baseline: isModuleEnabledByDefault(MODULES.baseline),
362
+ defensive: isModuleEnabledByDefault(MODULES.defensive),
363
+ html: isModuleEnabledByDefault(MODULES.html),
364
+ logical: isModuleEnabledByDefault(MODULES.logical),
365
+ modules: isModuleEnabledByDefault(MODULES.modules),
366
+ nesting: isModuleEnabledByDefault(MODULES.nesting),
367
+ order: isModuleEnabledByDefault(MODULES.order),
368
+ scss: isModuleEnabledByDefault(MODULES.scss),
369
+ strict: isModuleEnabledByDefault(MODULES.strict),
370
+ style: isModuleEnabledByDefault(MODULES.style),
371
+ ...optionsAndGlobalConfig
372
+ };
373
+ setModuleEnabled(MODULES.baseline, resolvedOptions.baseline);
374
+ setModuleEnabled(MODULES.defensive, resolvedOptions.defensive);
375
+ setModuleEnabled(MODULES.html, resolvedOptions.html);
376
+ setModuleEnabled(MODULES.logical, resolvedOptions.logical);
377
+ setModuleEnabled(MODULES.modules, resolvedOptions.modules);
378
+ setModuleEnabled(MODULES.nesting, resolvedOptions.nesting);
379
+ setModuleEnabled(MODULES.order, resolvedOptions.order);
380
+ setModuleEnabled(MODULES.scss, resolvedOptions.scss);
381
+ setModuleEnabled(MODULES.strict, resolvedOptions.strict);
382
+ setModuleEnabled(MODULES.style, resolvedOptions.style);
383
+ const config = {};
384
+ includeConfigs(config, configs.ignores());
385
+ includeConfigs(config, configs.css());
386
+ if (isModuleEnabled(MODULES.baseline)) includeConfigs(config, configs.baseline());
387
+ if (isModuleEnabled(MODULES.defensive)) includeConfigs(config, configs.defensive());
388
+ if (isModuleEnabled(MODULES.logical)) includeConfigs(config, configs.logical());
389
+ if (isModuleEnabled(MODULES.nesting)) includeConfigs(config, configs.nesting());
390
+ if (isModuleEnabled(MODULES.order)) includeConfigs(config, configs.order());
391
+ if (isModuleEnabled(MODULES.scss)) includeConfigs(config, configs.scss());
392
+ if (isModuleEnabled(MODULES.html)) includeConfigs(config, configs.html());
393
+ if (isModuleEnabled(MODULES.modules)) includeConfigs(config, configs.modules());
394
+ if (isModuleEnabled(MODULES.strict)) includeConfigs(config, configs.strict());
395
+ if (isModuleEnabled(MODULES.style)) includeConfigs(config, configs.style());
396
+ includeConfigs(config, getUserConfigs(resolvedOptions, additionalConfigs));
397
+ return config;
398
+ };
399
+ var stylelint_default = getConfig();
400
+
401
+ //#endregion
402
+ export { stylelint_default as default, getConfig };
package/package.json ADDED
@@ -0,0 +1,289 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package",
3
+ "name": "@brnshkr/config",
4
+ "version": "0.0.1-alpha.2",
5
+ "description": "Centralized collection of configuration and tooling used across all @brnshkr projects",
6
+ "license": "MIT",
7
+ "author": "Patrick Rupp",
8
+ "homepage": "https://github.com/brnshkr/config",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/brnshkr/config.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/brnshkr/config/issues"
15
+ },
16
+ "type": "module",
17
+ "scripts": {
18
+ "lint": "bun lint:css && bun lint:js && bun lint:commit",
19
+ "lint:css": "bun ./scripts/stylelint.ts",
20
+ "lint:js": "bun ./scripts/eslint.ts",
21
+ "lint:commit": "bun commitlint --config ./conf/commitlint.config.mjs --edit",
22
+ "inspect:eslint": "bun eslint-config-inspector --config ./conf/eslint.config.ts",
23
+ "inspect:modules": "bun node-modules-inspector",
24
+ "test": "bun vitest --run --testTimeout 120000 --exclude **/fixtures/**",
25
+ "test-update": "bun run test --update",
26
+ "check": "bun tsc && bun lint && bun run test",
27
+ "build": "bun typegen && bun tsdown --config ./conf/tsdown.config.ts",
28
+ "watch": "bun tsdown --config ./conf/tsdown.config.ts --watch",
29
+ "typegen": "bun scripts/typegen.ts",
30
+ "changelog": "bun conventional-changelog",
31
+ "install-hooks": "bun simple-git-hooks"
32
+ },
33
+ "exports": {
34
+ "./eslint": "./dist/eslint/index.js",
35
+ "./scripts/eslint": "./dist/scripts/eslint.js",
36
+ "./stylelint": "./dist/stylelint/index.js",
37
+ "./scripts/stylelint": "./dist/scripts/stylelint.js"
38
+ },
39
+ "files": [
40
+ "./conf/eslint.config.mjs.example",
41
+ "./conf/stylelint.config.mjs.example",
42
+ "./conf/tsconfig.json",
43
+ "./conf/tsconfig.json.example",
44
+ "./dist"
45
+ ],
46
+ "dependencies": {
47
+ "@eslint/js": "^9.39.2",
48
+ "confusing-browser-globals": "^1.0.11",
49
+ "eslint-flat-config-utils": "^3.0.0",
50
+ "globals": "^17.3.0",
51
+ "local-pkg": "^1.1.2",
52
+ "stylelint-config-standard": "^40.0.0"
53
+ },
54
+ "peerDependencies": {
55
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
56
+ "@eslint/css": "^0.14.1",
57
+ "@eslint/json": "^1.0.0",
58
+ "@eslint/markdown": "^7.5.1",
59
+ "@stylistic/eslint-plugin": "^5.7.1",
60
+ "@stylistic/stylelint-config": "^4.0.0",
61
+ "@vitest/eslint-plugin": "^1.6.6",
62
+ "eslint": "^9.39.2",
63
+ "eslint-config-flat-gitignore": "^2.1.0",
64
+ "eslint-import-resolver-typescript": "^4.4.4",
65
+ "eslint-merge-processors": "^2.0.0",
66
+ "eslint-plugin-antfu": "^3.1.3",
67
+ "eslint-plugin-import-x": "^4.16.1",
68
+ "eslint-plugin-jsdoc": "^62.5.0",
69
+ "eslint-plugin-jsonc": "^2.21.0",
70
+ "eslint-plugin-n": "^17.23.2",
71
+ "eslint-plugin-perfectionist": "^5.4.0",
72
+ "eslint-plugin-regexp": "^3.0.0",
73
+ "eslint-plugin-svelte": "^3.14.0",
74
+ "eslint-plugin-toml": "^1.0.3",
75
+ "eslint-plugin-unicorn": "^62.0.0",
76
+ "eslint-plugin-unused-imports": "^4.3.0",
77
+ "eslint-plugin-yml": "^3.0.0",
78
+ "jsonc-eslint-parser": "^2.4.2",
79
+ "postcss-html": "^1.8.1",
80
+ "stylelint": "^17.1.0",
81
+ "stylelint-config-css-modules": "^4.6.0",
82
+ "stylelint-config-html": "^1.1.0",
83
+ "stylelint-config-recess-order": "^7.6.0",
84
+ "stylelint-config-standard-scss": "^17.0.0",
85
+ "stylelint-declaration-strict-value": "^1.10.11",
86
+ "stylelint-order": "^7.0.1",
87
+ "stylelint-plugin-defensive-css": "^1.1.1",
88
+ "stylelint-plugin-logical-css": "^1.3.0",
89
+ "stylelint-plugin-use-baseline": "^1.2.1",
90
+ "stylelint-use-nesting": "^6.0.1",
91
+ "svelte": "^5.49.1",
92
+ "toml-eslint-parser": "^1.0.3",
93
+ "typescript": "^5.9.3",
94
+ "typescript-eslint": "^8.54.0",
95
+ "yaml-eslint-parser": "^2.0.0"
96
+ },
97
+ "peerDependenciesMeta": {
98
+ "@eslint-community/eslint-plugin-eslint-comments": {
99
+ "optional": true
100
+ },
101
+ "@eslint/css": {
102
+ "optional": true
103
+ },
104
+ "@eslint/json": {
105
+ "optional": true
106
+ },
107
+ "@eslint/markdown": {
108
+ "optional": true
109
+ },
110
+ "@stylistic/eslint-plugin": {
111
+ "optional": true
112
+ },
113
+ "@stylistic/stylelint-config": {
114
+ "optional": true
115
+ },
116
+ "@vitest/eslint-plugin": {
117
+ "optional": true
118
+ },
119
+ "eslint-config-flat-gitignore": {
120
+ "optional": true
121
+ },
122
+ "eslint-import-resolver-typescript": {
123
+ "optional": true
124
+ },
125
+ "eslint-merge-processors": {
126
+ "optional": true
127
+ },
128
+ "eslint-plugin-antfu": {
129
+ "optional": true
130
+ },
131
+ "eslint-plugin-import-x": {
132
+ "optional": true
133
+ },
134
+ "eslint-plugin-jsdoc": {
135
+ "optional": true
136
+ },
137
+ "eslint-plugin-jsonc": {
138
+ "optional": true
139
+ },
140
+ "eslint-plugin-n": {
141
+ "optional": true
142
+ },
143
+ "eslint-plugin-perfectionist": {
144
+ "optional": true
145
+ },
146
+ "eslint-plugin-regexp": {
147
+ "optional": true
148
+ },
149
+ "eslint-plugin-svelte": {
150
+ "optional": true
151
+ },
152
+ "eslint-plugin-toml": {
153
+ "optional": true
154
+ },
155
+ "eslint-plugin-unicorn": {
156
+ "optional": true
157
+ },
158
+ "eslint-plugin-unused-imports": {
159
+ "optional": true
160
+ },
161
+ "eslint-plugin-yml": {
162
+ "optional": true
163
+ },
164
+ "jsonc-eslint-parser": {
165
+ "optional": true
166
+ },
167
+ "postcss-html": {
168
+ "optional": true
169
+ },
170
+ "stylelint": {
171
+ "optional": true
172
+ },
173
+ "stylelint-config-css-modules": {
174
+ "optional": true
175
+ },
176
+ "stylelint-config-html": {
177
+ "optional": true
178
+ },
179
+ "stylelint-config-recess-order": {
180
+ "optional": true
181
+ },
182
+ "stylelint-config-standard-scss": {
183
+ "optional": true
184
+ },
185
+ "stylelint-declaration-strict-value": {
186
+ "optional": true
187
+ },
188
+ "stylelint-order": {
189
+ "optional": true
190
+ },
191
+ "stylelint-plugin-defensive-css": {
192
+ "optional": true
193
+ },
194
+ "stylelint-plugin-logical-css": {
195
+ "optional": true
196
+ },
197
+ "stylelint-plugin-use-baseline": {
198
+ "optional": true
199
+ },
200
+ "stylelint-use-nesting": {
201
+ "optional": true
202
+ },
203
+ "svelte": {
204
+ "optional": true
205
+ },
206
+ "toml-eslint-parser": {
207
+ "optional": true
208
+ },
209
+ "typescript": {
210
+ "optional": true
211
+ },
212
+ "typescript-eslint": {
213
+ "optional": true
214
+ },
215
+ "yaml-eslint-parser": {
216
+ "optional": true
217
+ }
218
+ },
219
+ "devDependencies": {
220
+ "@commitlint/config-conventional": "20.4.0",
221
+ "@commitlint/types": "20.4.0",
222
+ "@eslint-community/eslint-plugin-eslint-comments": "4.6.0",
223
+ "@eslint/config-inspector": "1.4.2",
224
+ "@eslint/css": "0.14.1",
225
+ "@eslint/json": "1.0.0",
226
+ "@eslint/markdown": "7.5.1",
227
+ "@stylistic/eslint-plugin": "5.7.1",
228
+ "@stylistic/stylelint-config": "4.0.0",
229
+ "@total-typescript/ts-reset": "0.6.1",
230
+ "@types/bun": "1.3.8",
231
+ "@types/confusing-browser-globals": "1.0.3",
232
+ "@typescript-eslint/utils": "8.54.0",
233
+ "@vitest/eslint-plugin": "1.6.6",
234
+ "commitlint": "20.4.0",
235
+ "conventional-changelog": "7.1.1",
236
+ "eslint": "9.39.2",
237
+ "eslint-config-flat-gitignore": "2.1.0",
238
+ "eslint-import-resolver-typescript": "4.4.4",
239
+ "eslint-merge-processors": "2.0.0",
240
+ "eslint-plugin-antfu": "3.1.3",
241
+ "eslint-plugin-import-x": "4.16.1",
242
+ "eslint-plugin-jsdoc": "62.5.0",
243
+ "eslint-plugin-jsonc": "2.21.0",
244
+ "eslint-plugin-n": "17.23.2",
245
+ "eslint-plugin-perfectionist": "5.4.0",
246
+ "eslint-plugin-regexp": "3.0.0",
247
+ "eslint-plugin-svelte": "3.14.0",
248
+ "eslint-plugin-toml": "1.0.3",
249
+ "eslint-plugin-unicorn": "62.0.0",
250
+ "eslint-plugin-unused-imports": "4.3.0",
251
+ "eslint-plugin-yml": "3.0.0",
252
+ "eslint-typegen": "2.3.0",
253
+ "jiti": "2.6.1",
254
+ "jsonc-eslint-parser": "2.4.2",
255
+ "node-modules-inspector": "1.3.1",
256
+ "postcss-html": "1.8.1",
257
+ "simple-git-hooks": "2.13.1",
258
+ "stylelint": "17.1.0",
259
+ "stylelint-config-css-modules": "4.6.0",
260
+ "stylelint-config-html": "1.1.0",
261
+ "stylelint-config-recess-order": "7.6.0",
262
+ "stylelint-config-standard-scss": "17.0.0",
263
+ "stylelint-declaration-strict-value": "1.10.11",
264
+ "stylelint-order": "7.0.1",
265
+ "stylelint-plugin-defensive-css": "1.1.1",
266
+ "stylelint-plugin-logical-css": "1.3.0",
267
+ "stylelint-plugin-use-baseline": "1.2.1",
268
+ "stylelint-use-nesting": "6.0.1",
269
+ "svelte": "5.49.1",
270
+ "toml-eslint-parser": "1.0.3",
271
+ "tsdown": "0.16.0",
272
+ "type-fest": "5.4.3",
273
+ "typescript": "5.9.3",
274
+ "typescript-eslint": "8.54.0",
275
+ "vitest": "4.0.18",
276
+ "yaml-eslint-parser": "2.0.0"
277
+ },
278
+ "keywords": [
279
+ "dev",
280
+ "brnshkr",
281
+ "config",
282
+ "eslint",
283
+ "lint",
284
+ "linting"
285
+ ],
286
+ "simple-git-hooks": {
287
+ "commit-msg": "bun lint:commit"
288
+ }
289
+ }