@ntnyq/eslint-config 7.0.0-beta.20 → 7.0.0-beta.21
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/dist/index.d.mts +733 -362
- package/dist/index.mjs +182 -129
- package/package.json +17 -16
package/dist/index.mjs
CHANGED
|
@@ -29,6 +29,7 @@ import pluginDeMorgan from "eslint-plugin-de-morgan";
|
|
|
29
29
|
import pluginNoOnlyTests from "eslint-plugin-no-only-tests";
|
|
30
30
|
import pluginGitHubAction from "eslint-plugin-github-action";
|
|
31
31
|
import pluginPerfectionist from "eslint-plugin-perfectionist";
|
|
32
|
+
import pluginVuePerfectionist from "eslint-plugin-vue-perfectionist";
|
|
32
33
|
import * as pluginESLintComments from "@eslint-community/eslint-plugin-eslint-comments";
|
|
33
34
|
import processorVueBlocks from "eslint-processor-vue-blocks";
|
|
34
35
|
import { resolve } from "node:path";
|
|
@@ -58,6 +59,9 @@ const GLOB_TYPES = [
|
|
|
58
59
|
`**/types/${GLOB_TS}`,
|
|
59
60
|
`**/types.ts`
|
|
60
61
|
];
|
|
62
|
+
const GLOB_VUE = "**/*.vue";
|
|
63
|
+
const GLOB_PINIA_STORE = `**/store?(s)/*.${GLOB_SRC_EXT}`;
|
|
64
|
+
const GLOB_VUE_COMPOSABLES = [`**/composables/*.${GLOB_SRC_EXT}`, `**/use*${GLOB_SRC_EXT}`];
|
|
61
65
|
const GLOB_TYPE_TEST = [`**/*.test-d.${GLOB_SRC_EXT}`, `**/*.spec-d.${GLOB_SRC_EXT}`];
|
|
62
66
|
const GLOB_TEST = [
|
|
63
67
|
`**/*.test.${GLOB_SRC_EXT}`,
|
|
@@ -79,8 +83,8 @@ const GLOB_JSON_SCHEMA = ["**/*.schema.json", "**/schemas/*.json"];
|
|
|
79
83
|
const GLOB_TSCONFIG_JSON = ["**/tsconfig.json", "**/tsconfig.*.json"];
|
|
80
84
|
const GLOB_YAML = "**/*.y?(a)ml";
|
|
81
85
|
const GLOB_PNPM_WORKSPACE_YAML = "**/pnpm-workspace.yaml";
|
|
86
|
+
const GLOB_GITHUB_ACTION = "**/.github/workflows/*.y?(a)ml";
|
|
82
87
|
const GLOB_SVG = "**/*.svg";
|
|
83
|
-
const GLOB_VUE = "**/*.vue";
|
|
84
88
|
const GLOB_SVELTE = "**/*.svelte?(.{js,ts})";
|
|
85
89
|
const GLOB_TOML = "**/*.toml";
|
|
86
90
|
const GLOB_HTML = "**/*.htm?(l)";
|
|
@@ -103,8 +107,6 @@ const GLOB_ALL_SRC = [
|
|
|
103
107
|
GLOB_VUE,
|
|
104
108
|
...GLOB_SRC_EXTENSIONS
|
|
105
109
|
];
|
|
106
|
-
const GLOB_PINIA_STORE = `**/store?(s)/*.${GLOB_SRC_EXT}`;
|
|
107
|
-
const GLOB_GITHUB_ACTION = "**/.github/workflows/*.y?(a)ml";
|
|
108
110
|
const GLOB_NODE_MODULES = "**/node_modules/**";
|
|
109
111
|
const GLOB_DIST = "**/dist/**";
|
|
110
112
|
const GLOB_LOCKFILE = [
|
|
@@ -165,6 +167,127 @@ const GLOB_EXCLUDE = [
|
|
|
165
167
|
"**/.*/skills"
|
|
166
168
|
];
|
|
167
169
|
//#endregion
|
|
170
|
+
//#region src/utils/env.ts
|
|
171
|
+
/**
|
|
172
|
+
* Check whether Pinia is available in the current project.
|
|
173
|
+
*/
|
|
174
|
+
const hasPinia = () => isPackageExists("pinia");
|
|
175
|
+
/**
|
|
176
|
+
* Check whether Vitest is available in the current project.
|
|
177
|
+
*/
|
|
178
|
+
const hasVitest = () => isPackageExists("vitest");
|
|
179
|
+
/**
|
|
180
|
+
* Check whether TypeScript runtime or preview package is available.
|
|
181
|
+
*/
|
|
182
|
+
const hasTypeScript = () => isPackageExists("typescript") || isPackageExists("@typescript/native-preview");
|
|
183
|
+
/**
|
|
184
|
+
* Check whether shadcn-vue related dependencies are available.
|
|
185
|
+
*/
|
|
186
|
+
const hasShadcnVue = () => (isPackageExists("radix-vue") || isPackageExists("reka-ui")) && isPackageExists("class-variance-authority") && isPackageExists("clsx");
|
|
187
|
+
/**
|
|
188
|
+
* Check whether UnoCSS runtime packages are available.
|
|
189
|
+
*/
|
|
190
|
+
const hasUnoCSS = () => isPackageExists("unocss") || isPackageExists("@unocss/postcss") || isPackageExists("@unocss/webpack") || isPackageExists("@unocss/nuxt");
|
|
191
|
+
/**
|
|
192
|
+
* Check whether Vue ecosystem packages are available.
|
|
193
|
+
*/
|
|
194
|
+
const hasVue = () => isPackageExists("vue") || isPackageExists("nuxt") || isPackageExists("vitepress") || isPackageExists("vuepress") || isPackageExists("@slidev/cli") || isPackageExists("vue", { paths: [resolve(process.cwd(), "playground"), resolve(process.cwd(), "docs")] });
|
|
195
|
+
/**
|
|
196
|
+
* Check whether oxfmt is available in the current project.
|
|
197
|
+
*/
|
|
198
|
+
const hasOxfmt = () => isPackageExists("oxfmt");
|
|
199
|
+
/**
|
|
200
|
+
* Check whether Prettier is available in the current project.
|
|
201
|
+
*/
|
|
202
|
+
const hasPrettier = () => isPackageExists("prettier");
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region src/utils/resolveSubOptions.ts
|
|
205
|
+
/**
|
|
206
|
+
* Normalize a sub-option value to an object.
|
|
207
|
+
*
|
|
208
|
+
* Boolean `true` means enabled with default options and returns an empty
|
|
209
|
+
* object; falsy values also fall back to an empty object.
|
|
210
|
+
*
|
|
211
|
+
* @param options - Options object that contains sub-options.
|
|
212
|
+
* @param key - Sub-option key to resolve.
|
|
213
|
+
* @returns Normalized sub-options object.
|
|
214
|
+
*/
|
|
215
|
+
function resolveSubOptions(options, key) {
|
|
216
|
+
return typeof options[key] === "boolean" ? {} : options[key] || {};
|
|
217
|
+
}
|
|
218
|
+
//#endregion
|
|
219
|
+
//#region src/utils/getOverrides.ts
|
|
220
|
+
/**
|
|
221
|
+
* Read rule overrides from a config sub-option.
|
|
222
|
+
*
|
|
223
|
+
* @param options - Top-level config options.
|
|
224
|
+
* @param key - Sub-option key to read.
|
|
225
|
+
* @returns Rule override map when provided, otherwise an empty object.
|
|
226
|
+
*/
|
|
227
|
+
function getOverrides(options, key) {
|
|
228
|
+
const subOptions = resolveSubOptions(options, key);
|
|
229
|
+
return "overrides" in subOptions && subOptions.overrides ? subOptions.overrides : {};
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region src/utils/isInGitHooksOrRunBySpecifyPackages.ts
|
|
233
|
+
const CHECKED_RUNNER_PACKAGES = [
|
|
234
|
+
"nano-staged",
|
|
235
|
+
"lint-staged",
|
|
236
|
+
"lefthook",
|
|
237
|
+
"tsx"
|
|
238
|
+
];
|
|
239
|
+
/**
|
|
240
|
+
* Detect whether current execution is triggered by git hook tooling.
|
|
241
|
+
*/
|
|
242
|
+
function isInGitHooksOrRunBySpecifyPackages() {
|
|
243
|
+
return !!(process.env.GIT_PARAMS || process.env.VSCODE_GIT_COMMAND || CHECKED_RUNNER_PACKAGES.some((packageName) => process.env.npm_lifecycle_script?.startsWith(packageName)));
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
246
|
+
//#region src/utils/ensurePackages.ts
|
|
247
|
+
/**
|
|
248
|
+
* @copyright {@link https://github.com/antfu/eslint-config}
|
|
249
|
+
*/
|
|
250
|
+
const isCwdInScope = isPackageExists("@ntnyq/eslint-config");
|
|
251
|
+
/**
|
|
252
|
+
* Check whether a package can be resolved from this config package scope.
|
|
253
|
+
*/
|
|
254
|
+
function isPackageInScope(name) {
|
|
255
|
+
return isPackageExists(name, { paths: [import.meta.dirname] });
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Ensure required packages are installed for optional config features.
|
|
259
|
+
*
|
|
260
|
+
* Skips installation prompts in CI, non-TTY environments, git hooks, and
|
|
261
|
+
* when the current project is outside the config usage scope.
|
|
262
|
+
*
|
|
263
|
+
* @param packages - Package names to verify and optionally install.
|
|
264
|
+
*/
|
|
265
|
+
async function ensurePackages(packages) {
|
|
266
|
+
if (process.env.CI || !process.stdout.isTTY || isInGitHooksOrRunBySpecifyPackages() || !isCwdInScope) return;
|
|
267
|
+
const nonExistingPackages = packages.filter((pkg) => !!pkg && !isPackageInScope(pkg));
|
|
268
|
+
if (nonExistingPackages.length === 0) return;
|
|
269
|
+
const { confirm, isCancel } = await import("@clack/prompts");
|
|
270
|
+
const confirmInstall = await confirm({ message: `${nonExistingPackages.length === 1 ? "Package is" : "Packages are"} required for this config: ${nonExistingPackages.join(", ")}. Do you want to install them?` });
|
|
271
|
+
if (isCancel(confirmInstall) || !confirmInstall) return;
|
|
272
|
+
try {
|
|
273
|
+
const { installPackage } = await import("@antfu/install-pkg");
|
|
274
|
+
await installPackage(nonExistingPackages, { dev: true });
|
|
275
|
+
} catch (error) {
|
|
276
|
+
throw new Error(`Failed to install required packages: ${nonExistingPackages.join(", ")}`, { cause: error });
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//#endregion
|
|
280
|
+
//#region src/utils/interopDefault.ts
|
|
281
|
+
/**
|
|
282
|
+
* Interop default export from a module
|
|
283
|
+
* @param mod - The module
|
|
284
|
+
* @returns The default export
|
|
285
|
+
*/
|
|
286
|
+
async function interopDefault(mod) {
|
|
287
|
+
const resolved = await mod;
|
|
288
|
+
return resolved.default || resolved;
|
|
289
|
+
}
|
|
290
|
+
//#endregion
|
|
168
291
|
//#region src/configs/vue.ts
|
|
169
292
|
const sharedRules = {
|
|
170
293
|
...pluginVue.configs.base.rules,
|
|
@@ -345,7 +468,8 @@ const unCategorizedRules = {
|
|
|
345
468
|
* @returns ESLint configs
|
|
346
469
|
*/
|
|
347
470
|
const configVue = (options = {}) => {
|
|
348
|
-
const { files = [GLOB_VUE], ecmaVersion = "latest", extraFileExtensions = [], typescript = false } = options;
|
|
471
|
+
const { files = [GLOB_VUE], ecmaVersion = "latest", extraFileExtensions = [], typescript = false, vuePerfectionist: enableVuePerfectionist = false } = options;
|
|
472
|
+
const vuePerfectionistOptions = resolveSubOptions(options, "vuePerfectionist");
|
|
349
473
|
const sfcBlocks = options.sfcBlocks === true ? {} : options.sfcBlocks ?? {};
|
|
350
474
|
function getVueProcessor() {
|
|
351
475
|
const processorVueSFC = pluginVue.processors[".vue"];
|
|
@@ -358,7 +482,7 @@ const configVue = (options = {}) => {
|
|
|
358
482
|
}
|
|
359
483
|
})]);
|
|
360
484
|
}
|
|
361
|
-
|
|
485
|
+
const configs = [{
|
|
362
486
|
name: "ntnyq/vue/setup",
|
|
363
487
|
plugins: {
|
|
364
488
|
...typescript ? { "@typescript-eslint": pluginTypeScript } : {},
|
|
@@ -505,6 +629,43 @@ const configVue = (options = {}) => {
|
|
|
505
629
|
...options.overrides
|
|
506
630
|
}
|
|
507
631
|
}];
|
|
632
|
+
if (enableVuePerfectionist) configs.push({
|
|
633
|
+
name: "ntnyq/vue/vue-perfectionist",
|
|
634
|
+
files: vuePerfectionistOptions.files ?? [
|
|
635
|
+
"**/*.vue",
|
|
636
|
+
GLOB_PINIA_STORE,
|
|
637
|
+
...GLOB_VUE_COMPOSABLES
|
|
638
|
+
],
|
|
639
|
+
plugins: { "vue-perfectionist": pluginVuePerfectionist },
|
|
640
|
+
rules: {
|
|
641
|
+
"vue-perfectionist/callback-style": "error",
|
|
642
|
+
"vue-perfectionist/define-macros-newline": "error",
|
|
643
|
+
"vue-perfectionist/prefer-ref-pattern": "error",
|
|
644
|
+
"vue-perfectionist/sort-script-setup": ["error", { groups: [
|
|
645
|
+
["interface", "type"],
|
|
646
|
+
"define-props",
|
|
647
|
+
"define-emits",
|
|
648
|
+
"define-options",
|
|
649
|
+
"define-slots",
|
|
650
|
+
"define-model",
|
|
651
|
+
"constant",
|
|
652
|
+
"inject",
|
|
653
|
+
"composable",
|
|
654
|
+
"template-ref",
|
|
655
|
+
["ref", "reactive"],
|
|
656
|
+
"computed",
|
|
657
|
+
"variable",
|
|
658
|
+
["enum", "class"],
|
|
659
|
+
"function",
|
|
660
|
+
"watch",
|
|
661
|
+
"lifecycle-hook",
|
|
662
|
+
"provide",
|
|
663
|
+
"define-expose"
|
|
664
|
+
] }],
|
|
665
|
+
...vuePerfectionistOptions.overrides
|
|
666
|
+
}
|
|
667
|
+
});
|
|
668
|
+
return configs;
|
|
508
669
|
};
|
|
509
670
|
//#endregion
|
|
510
671
|
//#region src/configs/yml.ts
|
|
@@ -575,127 +736,6 @@ const configYml = (options = {}) => {
|
|
|
575
736
|
}];
|
|
576
737
|
};
|
|
577
738
|
//#endregion
|
|
578
|
-
//#region src/utils/env.ts
|
|
579
|
-
/**
|
|
580
|
-
* Check whether Pinia is available in the current project.
|
|
581
|
-
*/
|
|
582
|
-
const hasPinia = () => isPackageExists("pinia");
|
|
583
|
-
/**
|
|
584
|
-
* Check whether Vitest is available in the current project.
|
|
585
|
-
*/
|
|
586
|
-
const hasVitest = () => isPackageExists("vitest");
|
|
587
|
-
/**
|
|
588
|
-
* Check whether TypeScript runtime or preview package is available.
|
|
589
|
-
*/
|
|
590
|
-
const hasTypeScript = () => isPackageExists("typescript") || isPackageExists("@typescript/native-preview");
|
|
591
|
-
/**
|
|
592
|
-
* Check whether shadcn-vue related dependencies are available.
|
|
593
|
-
*/
|
|
594
|
-
const hasShadcnVue = () => (isPackageExists("radix-vue") || isPackageExists("reka-ui")) && isPackageExists("class-variance-authority") && isPackageExists("clsx");
|
|
595
|
-
/**
|
|
596
|
-
* Check whether UnoCSS runtime packages are available.
|
|
597
|
-
*/
|
|
598
|
-
const hasUnoCSS = () => isPackageExists("unocss") || isPackageExists("@unocss/postcss") || isPackageExists("@unocss/webpack") || isPackageExists("@unocss/nuxt");
|
|
599
|
-
/**
|
|
600
|
-
* Check whether Vue ecosystem packages are available.
|
|
601
|
-
*/
|
|
602
|
-
const hasVue = () => isPackageExists("vue") || isPackageExists("nuxt") || isPackageExists("vitepress") || isPackageExists("vuepress") || isPackageExists("@slidev/cli") || isPackageExists("vue", { paths: [resolve(process.cwd(), "playground"), resolve(process.cwd(), "docs")] });
|
|
603
|
-
/**
|
|
604
|
-
* Check whether oxfmt is available in the current project.
|
|
605
|
-
*/
|
|
606
|
-
const hasOxfmt = () => isPackageExists("oxfmt");
|
|
607
|
-
/**
|
|
608
|
-
* Check whether Prettier is available in the current project.
|
|
609
|
-
*/
|
|
610
|
-
const hasPrettier = () => isPackageExists("prettier");
|
|
611
|
-
//#endregion
|
|
612
|
-
//#region src/utils/resolveSubOptions.ts
|
|
613
|
-
/**
|
|
614
|
-
* Normalize a sub-option value to an object.
|
|
615
|
-
*
|
|
616
|
-
* Boolean `true` means enabled with default options and returns an empty
|
|
617
|
-
* object; falsy values also fall back to an empty object.
|
|
618
|
-
*
|
|
619
|
-
* @param options - Options object that contains sub-options.
|
|
620
|
-
* @param key - Sub-option key to resolve.
|
|
621
|
-
* @returns Normalized sub-options object.
|
|
622
|
-
*/
|
|
623
|
-
function resolveSubOptions(options, key) {
|
|
624
|
-
return typeof options[key] === "boolean" ? {} : options[key] || {};
|
|
625
|
-
}
|
|
626
|
-
//#endregion
|
|
627
|
-
//#region src/utils/getOverrides.ts
|
|
628
|
-
/**
|
|
629
|
-
* Read rule overrides from a config sub-option.
|
|
630
|
-
*
|
|
631
|
-
* @param options - Top-level config options.
|
|
632
|
-
* @param key - Sub-option key to read.
|
|
633
|
-
* @returns Rule override map when provided, otherwise an empty object.
|
|
634
|
-
*/
|
|
635
|
-
function getOverrides(options, key) {
|
|
636
|
-
const subOptions = resolveSubOptions(options, key);
|
|
637
|
-
return "overrides" in subOptions && subOptions.overrides ? subOptions.overrides : {};
|
|
638
|
-
}
|
|
639
|
-
//#endregion
|
|
640
|
-
//#region src/utils/isInGitHooksOrRunBySpecifyPackages.ts
|
|
641
|
-
const CHECKED_RUNNER_PACKAGES = [
|
|
642
|
-
"nano-staged",
|
|
643
|
-
"lint-staged",
|
|
644
|
-
"lefthook",
|
|
645
|
-
"tsx"
|
|
646
|
-
];
|
|
647
|
-
/**
|
|
648
|
-
* Detect whether current execution is triggered by git hook tooling.
|
|
649
|
-
*/
|
|
650
|
-
function isInGitHooksOrRunBySpecifyPackages() {
|
|
651
|
-
return !!(process.env.GIT_PARAMS || process.env.VSCODE_GIT_COMMAND || CHECKED_RUNNER_PACKAGES.some((packageName) => process.env.npm_lifecycle_script?.startsWith(packageName)));
|
|
652
|
-
}
|
|
653
|
-
//#endregion
|
|
654
|
-
//#region src/utils/ensurePackages.ts
|
|
655
|
-
/**
|
|
656
|
-
* @copyright {@link https://github.com/antfu/eslint-config}
|
|
657
|
-
*/
|
|
658
|
-
const isCwdInScope = isPackageExists("@ntnyq/eslint-config");
|
|
659
|
-
/**
|
|
660
|
-
* Check whether a package can be resolved from this config package scope.
|
|
661
|
-
*/
|
|
662
|
-
function isPackageInScope(name) {
|
|
663
|
-
return isPackageExists(name, { paths: [import.meta.dirname] });
|
|
664
|
-
}
|
|
665
|
-
/**
|
|
666
|
-
* Ensure required packages are installed for optional config features.
|
|
667
|
-
*
|
|
668
|
-
* Skips installation prompts in CI, non-TTY environments, git hooks, and
|
|
669
|
-
* when the current project is outside the config usage scope.
|
|
670
|
-
*
|
|
671
|
-
* @param packages - Package names to verify and optionally install.
|
|
672
|
-
*/
|
|
673
|
-
async function ensurePackages(packages) {
|
|
674
|
-
if (process.env.CI || !process.stdout.isTTY || isInGitHooksOrRunBySpecifyPackages() || !isCwdInScope) return;
|
|
675
|
-
const nonExistingPackages = packages.filter((pkg) => !!pkg && !isPackageInScope(pkg));
|
|
676
|
-
if (nonExistingPackages.length === 0) return;
|
|
677
|
-
const { confirm, isCancel } = await import("@clack/prompts");
|
|
678
|
-
const confirmInstall = await confirm({ message: `${nonExistingPackages.length === 1 ? "Package is" : "Packages are"} required for this config: ${nonExistingPackages.join(", ")}. Do you want to install them?` });
|
|
679
|
-
if (isCancel(confirmInstall) || !confirmInstall) return;
|
|
680
|
-
try {
|
|
681
|
-
const { installPackage } = await import("@antfu/install-pkg");
|
|
682
|
-
await installPackage(nonExistingPackages, { dev: true });
|
|
683
|
-
} catch (error) {
|
|
684
|
-
throw new Error(`Failed to install required packages: ${nonExistingPackages.join(", ")}`, { cause: error });
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
//#endregion
|
|
688
|
-
//#region src/utils/interopDefault.ts
|
|
689
|
-
/**
|
|
690
|
-
* Interop default export from a module
|
|
691
|
-
* @param mod - The module
|
|
692
|
-
* @returns The default export
|
|
693
|
-
*/
|
|
694
|
-
async function interopDefault(mod) {
|
|
695
|
-
const resolved = await mod;
|
|
696
|
-
return resolved.default || resolved;
|
|
697
|
-
}
|
|
698
|
-
//#endregion
|
|
699
739
|
//#region src/configs/html.ts
|
|
700
740
|
/**
|
|
701
741
|
* Config for html files
|
|
@@ -2033,6 +2073,10 @@ const configUnicorn = (options = {}) => {
|
|
|
2033
2073
|
*/
|
|
2034
2074
|
"unicorn/explicit-length-check": "off",
|
|
2035
2075
|
/**
|
|
2076
|
+
* Conditional mutations
|
|
2077
|
+
*/
|
|
2078
|
+
"unicorn/no-immediate-mutation": "off",
|
|
2079
|
+
/**
|
|
2036
2080
|
* @see https://caniuse.com/?search=globalThis
|
|
2037
2081
|
*/
|
|
2038
2082
|
"unicorn/prefer-global-this": "off",
|
|
@@ -2050,6 +2094,8 @@ const configUnicorn = (options = {}) => {
|
|
|
2050
2094
|
"unicorn/no-new-buffer": "error",
|
|
2051
2095
|
"unicorn/no-typeof-undefined": "error",
|
|
2052
2096
|
"unicorn/no-unnecessary-global-this": "error",
|
|
2097
|
+
"unicorn/no-unused-builtin-method-return": "error",
|
|
2098
|
+
"unicorn/no-using-resource-escape": "error",
|
|
2053
2099
|
/**
|
|
2054
2100
|
* @pg Class
|
|
2055
2101
|
*/
|
|
@@ -2061,8 +2107,11 @@ const configUnicorn = (options = {}) => {
|
|
|
2061
2107
|
/**
|
|
2062
2108
|
* @pg Control Flow
|
|
2063
2109
|
*/
|
|
2110
|
+
"unicorn/no-accidental-bitwise-operator": "error",
|
|
2111
|
+
"unicorn/no-chained-comparison": "error",
|
|
2064
2112
|
"unicorn/no-constant-zero-expression": "error",
|
|
2065
2113
|
"unicorn/no-double-comparison": "error",
|
|
2114
|
+
"unicorn/no-duplicate-logical-operands": "error",
|
|
2066
2115
|
"unicorn/no-for-loop": "error",
|
|
2067
2116
|
"unicorn/no-lonely-if": "error",
|
|
2068
2117
|
"unicorn/no-unnecessary-boolean-comparison": "error",
|
|
@@ -2073,6 +2122,7 @@ const configUnicorn = (options = {}) => {
|
|
|
2073
2122
|
"unicorn/no-useless-continue": "error",
|
|
2074
2123
|
"unicorn/no-useless-else": "error",
|
|
2075
2124
|
"unicorn/prefer-block-statement-over-iife": "error",
|
|
2125
|
+
"unicorn/prefer-combined-guards": "error",
|
|
2076
2126
|
"unicorn/switch-case-braces": ["error", "avoid"],
|
|
2077
2127
|
"unicorn/switch-case-break-position": "error",
|
|
2078
2128
|
/**
|
|
@@ -2099,7 +2149,6 @@ const configUnicorn = (options = {}) => {
|
|
|
2099
2149
|
/**
|
|
2100
2150
|
* @pg Function
|
|
2101
2151
|
*/
|
|
2102
|
-
"unicorn/no-immediate-mutation": "error",
|
|
2103
2152
|
"unicorn/prefer-prototype-methods": "error",
|
|
2104
2153
|
"unicorn/prefer-reflect-apply": "error",
|
|
2105
2154
|
/**
|
|
@@ -2140,6 +2189,7 @@ const configUnicorn = (options = {}) => {
|
|
|
2140
2189
|
*/
|
|
2141
2190
|
"unicorn/consistent-date-clone": "error",
|
|
2142
2191
|
"unicorn/prefer-date-now": "error",
|
|
2192
|
+
"unicorn/prefer-temporal-conversion": "error",
|
|
2143
2193
|
/**
|
|
2144
2194
|
* @pg String
|
|
2145
2195
|
*/
|
|
@@ -2185,6 +2235,7 @@ const configUnicorn = (options = {}) => {
|
|
|
2185
2235
|
"unicorn/no-array-fill-with-reference-type": "error",
|
|
2186
2236
|
"unicorn/no-array-from-fill": "error",
|
|
2187
2237
|
"unicorn/no-array-method-this-argument": "error",
|
|
2238
|
+
"unicorn/no-boolean-sort-comparator": "error",
|
|
2188
2239
|
"unicorn/no-confusing-array-splice": "error",
|
|
2189
2240
|
"unicorn/no-confusing-array-with": "error",
|
|
2190
2241
|
"unicorn/no-duplicate-loops": "error",
|
|
@@ -2192,7 +2243,6 @@ const configUnicorn = (options = {}) => {
|
|
|
2192
2243
|
"unicorn/no-unnecessary-array-flat-depth": "error",
|
|
2193
2244
|
"unicorn/no-unnecessary-array-splice-count": "error",
|
|
2194
2245
|
"unicorn/no-unnecessary-slice-end": "error",
|
|
2195
|
-
"unicorn/no-unused-array-method-return": "error",
|
|
2196
2246
|
"unicorn/prefer-array-find": "error",
|
|
2197
2247
|
"unicorn/prefer-array-flat-map": "error",
|
|
2198
2248
|
"unicorn/prefer-array-from-range": "error",
|
|
@@ -2206,11 +2256,14 @@ const configUnicorn = (options = {}) => {
|
|
|
2206
2256
|
/**
|
|
2207
2257
|
* @pg Iterator
|
|
2208
2258
|
*/
|
|
2259
|
+
"unicorn/no-async-iterator-callback": "error",
|
|
2260
|
+
"unicorn/no-unused-iterator-helper": "error",
|
|
2209
2261
|
"unicorn/no-useless-iterator-to-array": "error",
|
|
2210
2262
|
/**
|
|
2211
2263
|
* @pg Set
|
|
2212
2264
|
*/
|
|
2213
2265
|
"unicorn/no-duplicate-set-values": "error",
|
|
2266
|
+
"unicorn/no-useless-set-construction": "error",
|
|
2214
2267
|
"unicorn/prefer-set-has": "error",
|
|
2215
2268
|
"unicorn/prefer-set-size": "error",
|
|
2216
2269
|
/**
|
|
@@ -3429,4 +3482,4 @@ function defineESLintConfig(options = {}, ...userConfigs) {
|
|
|
3429
3482
|
return new FlatConfigComposer(...configs, ...userConfigs, ...formatterConfigs);
|
|
3430
3483
|
}
|
|
3431
3484
|
//#endregion
|
|
3432
|
-
export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DIST, GLOB_DTS, GLOB_EXCLUDE, GLOB_GITHUB_ACTION, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSON_SCHEMA, GLOB_JSX, GLOB_JSX_ONLY, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_NESTED, GLOB_NODE_MODULES, GLOB_PACKAGE_JSON, GLOB_PINIA_STORE, GLOB_PNPM_WORKSPACE_YAML, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_SRC_EXTENSIONS, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TEST, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG_JSON, GLOB_TSX, GLOB_TSX_ONLY, GLOB_TYPES, GLOB_TYPE_TEST, GLOB_VUE, GLOB_YAML, PERFECTIONIST, configAntfu, configAstro, configCommand, configDeMorgan, configDepend, configESLintComments, configESLintPlugin, configGitHubAction, configGitIgnore, configHtml, configIgnores, configImportX, configJSX, configJavaScript, configJsdoc, configJsonc, configMarkdown, configNode, configNtnyq, configOxfmt, configPerfectionist, configPinia, configPnpm, configPrettier, configRegexp, configSVGO, configSort, configSpecials, configSvelte, configTest, configToml, configTypeScript, configUnicorn, configUnoCSS, configUnusedImports, configVue, configYml, configsTypeScript, defineESLintConfig, ensurePackages, getOverrides, hasOxfmt, hasPinia, hasPrettier, hasShadcnVue, hasTypeScript, hasUnoCSS, hasVitest, hasVue, interopDefault, isInGitHooksOrRunBySpecifyPackages, mergeProcessors, parserJsonc, parserPlain, parserToml, parserTypeScript, parserVue, parserYaml, pluginAntfu, pluginDeMorgan, pluginDepend, pluginESLintComments, pluginGitHubAction, pluginImportX, pluginJsdoc, pluginJsonc, pluginMarkdown, pluginNoOnlyTests, pluginNode, pluginNtnyq, pluginOxfmt, pluginPerfectionist, pluginPinia, pluginPrettier, pluginRegexp, pluginSvgo, pluginToml, pluginTypeScript, pluginUnicorn, pluginUnoCSS, pluginVitest, pluginVue, pluginYml, processorPassThrough, processorVueBlocks, resolveSubOptions };
|
|
3485
|
+
export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DIST, GLOB_DTS, GLOB_EXCLUDE, GLOB_GITHUB_ACTION, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSON_SCHEMA, GLOB_JSX, GLOB_JSX_ONLY, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_NESTED, GLOB_NODE_MODULES, GLOB_PACKAGE_JSON, GLOB_PINIA_STORE, GLOB_PNPM_WORKSPACE_YAML, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_SRC_EXTENSIONS, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TEST, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG_JSON, GLOB_TSX, GLOB_TSX_ONLY, GLOB_TYPES, GLOB_TYPE_TEST, GLOB_VUE, GLOB_VUE_COMPOSABLES, GLOB_YAML, PERFECTIONIST, configAntfu, configAstro, configCommand, configDeMorgan, configDepend, configESLintComments, configESLintPlugin, configGitHubAction, configGitIgnore, configHtml, configIgnores, configImportX, configJSX, configJavaScript, configJsdoc, configJsonc, configMarkdown, configNode, configNtnyq, configOxfmt, configPerfectionist, configPinia, configPnpm, configPrettier, configRegexp, configSVGO, configSort, configSpecials, configSvelte, configTest, configToml, configTypeScript, configUnicorn, configUnoCSS, configUnusedImports, configVue, configYml, configsTypeScript, defineESLintConfig, ensurePackages, getOverrides, hasOxfmt, hasPinia, hasPrettier, hasShadcnVue, hasTypeScript, hasUnoCSS, hasVitest, hasVue, interopDefault, isInGitHooksOrRunBySpecifyPackages, mergeProcessors, parserJsonc, parserPlain, parserToml, parserTypeScript, parserVue, parserYaml, pluginAntfu, pluginDeMorgan, pluginDepend, pluginESLintComments, pluginGitHubAction, pluginImportX, pluginJsdoc, pluginJsonc, pluginMarkdown, pluginNoOnlyTests, pluginNode, pluginNtnyq, pluginOxfmt, pluginPerfectionist, pluginPinia, pluginPrettier, pluginRegexp, pluginSvgo, pluginToml, pluginTypeScript, pluginUnicorn, pluginUnoCSS, pluginVitest, pluginVue, pluginVuePerfectionist, pluginYml, processorPassThrough, processorVueBlocks, resolveSubOptions };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ntnyq/eslint-config",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "7.0.0-beta.
|
|
4
|
+
"version": "7.0.0-beta.21",
|
|
5
5
|
"description": "An opinionated ESLint config preset of ntnyq",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"eslint",
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.8.1",
|
|
90
90
|
"@eslint/js": "^10.0.1",
|
|
91
91
|
"@eslint/markdown": "^8.0.3",
|
|
92
|
-
"@ntnyq/utils": "^0.
|
|
93
|
-
"@unocss/eslint-plugin": "^66.10.
|
|
92
|
+
"@ntnyq/utils": "^0.23.0",
|
|
93
|
+
"@unocss/eslint-plugin": "^66.10.5",
|
|
94
94
|
"@vitest/eslint-plugin": "^1.6.27",
|
|
95
95
|
"eslint-config-flat-gitignore": "^2.4.0",
|
|
96
96
|
"eslint-flat-config-utils": "^3.2.0",
|
|
@@ -99,51 +99,52 @@
|
|
|
99
99
|
"eslint-parser-plain": "^0.1.1",
|
|
100
100
|
"eslint-plugin-antfu": "^3.2.3",
|
|
101
101
|
"eslint-plugin-command": "^4.0.0",
|
|
102
|
-
"eslint-plugin-de-morgan": "^2.
|
|
102
|
+
"eslint-plugin-de-morgan": "^2.2.0",
|
|
103
103
|
"eslint-plugin-depend": "^1.5.0",
|
|
104
104
|
"eslint-plugin-github-action": "^0.4.0",
|
|
105
105
|
"eslint-plugin-import-x": "^4.17.1",
|
|
106
|
-
"eslint-plugin-jsdoc": "^64.5.
|
|
106
|
+
"eslint-plugin-jsdoc": "^64.5.4",
|
|
107
107
|
"eslint-plugin-jsonc": "^3.4.2",
|
|
108
108
|
"eslint-plugin-n": "^18.3.0",
|
|
109
109
|
"eslint-plugin-no-only-tests": "^3.4.0",
|
|
110
110
|
"eslint-plugin-ntnyq": "^0.17.0",
|
|
111
|
-
"eslint-plugin-oxfmt": "^0.
|
|
112
|
-
"eslint-plugin-perfectionist": "^5.
|
|
111
|
+
"eslint-plugin-oxfmt": "^0.25.0",
|
|
112
|
+
"eslint-plugin-perfectionist": "^5.12.0",
|
|
113
113
|
"eslint-plugin-pinia": "^0.4.2",
|
|
114
114
|
"eslint-plugin-prettier": "^5.5.6",
|
|
115
|
-
"eslint-plugin-regexp": "^3.3.
|
|
115
|
+
"eslint-plugin-regexp": "^3.3.1",
|
|
116
116
|
"eslint-plugin-svgo": "^0.14.0",
|
|
117
117
|
"eslint-plugin-toml": "^1.5.0",
|
|
118
|
-
"eslint-plugin-unicorn": "^
|
|
118
|
+
"eslint-plugin-unicorn": "^76.0.0",
|
|
119
119
|
"eslint-plugin-vue": "^10.11.0",
|
|
120
|
+
"eslint-plugin-vue-perfectionist": "^0.2.0",
|
|
120
121
|
"eslint-plugin-yml": "^3.8.1",
|
|
121
122
|
"eslint-processor-vue-blocks": "^2.0.0",
|
|
122
123
|
"globals": "^17.12.0",
|
|
123
124
|
"jsonc-eslint-parser": "^3.3.0",
|
|
124
125
|
"local-pkg": "^1.2.1",
|
|
125
126
|
"toml-eslint-parser": "^1.0.3",
|
|
126
|
-
"typescript-eslint": "^8.70.
|
|
127
|
+
"typescript-eslint": "^8.70.1",
|
|
127
128
|
"vue-eslint-parser": "^10.4.1",
|
|
128
129
|
"yaml-eslint-parser": "^2.1.0"
|
|
129
130
|
},
|
|
130
131
|
"devDependencies": {
|
|
131
|
-
"@types/node": "^26.6.
|
|
132
|
-
"@typescript-eslint/types": "^8.70.
|
|
132
|
+
"@types/node": "^26.6.2",
|
|
133
|
+
"@typescript-eslint/types": "^8.70.1",
|
|
133
134
|
"@typescript/native-preview": "npm:typescript@^7.0.2",
|
|
134
135
|
"bumpp": "^12.3.0",
|
|
135
136
|
"consola": "^3.4.2",
|
|
136
|
-
"eslint": "^10.
|
|
137
|
+
"eslint": "^10.11.0",
|
|
137
138
|
"eslint-typegen": "^2.3.1",
|
|
138
139
|
"husky": "^9.1.7",
|
|
139
140
|
"jiti": "^2.7.0",
|
|
140
141
|
"nano-staged": "^1.0.2",
|
|
141
142
|
"npm-run-all2": "^9.0.3",
|
|
142
|
-
"oxfmt": "^0.
|
|
143
|
-
"prettier": "^3.9.
|
|
143
|
+
"oxfmt": "^0.70.0",
|
|
144
|
+
"prettier": "^3.9.8",
|
|
144
145
|
"tinyglobby": "^0.2.17",
|
|
145
146
|
"tsdown": "^0.23.0",
|
|
146
|
-
"tsx": "^4.23.
|
|
147
|
+
"tsx": "^4.23.15",
|
|
147
148
|
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
148
149
|
"uncase": "^0.3.0",
|
|
149
150
|
"vitest": "^5.0.1"
|