@ntnyq/eslint-config 5.6.0 → 5.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +127 -3
  2. package/dist/index.js +201 -180
  3. package/package.json +26 -26
package/dist/index.d.ts CHANGED
@@ -694,6 +694,11 @@ type ConfigJavaScriptOptions = OptionsOverrides & {
694
694
  * @default false
695
695
  */
696
696
  strict?: boolean;
697
+ /**
698
+ * The ECMAScript version of the code being linted
699
+ * @default 'latest'
700
+ */
701
+ ecmaVersion?: OptionsShareable['ecmaVersion'];
697
702
  };
698
703
  /**
699
704
  * Config for JavaScript
@@ -710,7 +715,7 @@ declare const configJSX: () => TypedConfigItem[];
710
715
  /**
711
716
  * Options type of {@link configTypeScript}
712
717
  */
713
- type ConfigTypeScriptOptions = OptionsFiles & OptionsOverrides & Pick<OptionsShareable, 'extraFileExtensions'> & {
718
+ type ConfigTypeScriptOptions = OptionsFiles & OptionsOverrides & Pick<OptionsShareable, 'extraFileExtensions' | 'ecmaVersion'> & {
714
719
  /**
715
720
  * Glob patterns for files that should be type aware.
716
721
  * @default ['**\/*.{ts,tsx}']
@@ -1084,6 +1089,11 @@ interface RuleOptions {
1084
1089
  * @see https://html-eslint.org/docs/rules/no-restricted-attrs
1085
1090
  */
1086
1091
  '@html-eslint/no-restricted-attrs'?: Linter.RuleEntry<HtmlEslintNoRestrictedAttrs>;
1092
+ /**
1093
+ * Disallow specified tags
1094
+ * @see https://html-eslint.org/docs/rules/no-restricted-tags
1095
+ */
1096
+ '@html-eslint/no-restricted-tags'?: Linter.RuleEntry<HtmlEslintNoRestrictedTags>;
1087
1097
  /**
1088
1098
  * Enforce to omit type attributes for style sheets and scripts
1089
1099
  * @see https://html-eslint.org/docs/rules/no-script-style-type
@@ -1626,7 +1636,7 @@ interface RuleOptions {
1626
1636
  * Disallow member access on a value with type `any`
1627
1637
  * @see https://typescript-eslint.io/rules/no-unsafe-member-access
1628
1638
  */
1629
- '@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<[]>;
1639
+ '@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<TypescriptEslintNoUnsafeMemberAccess>;
1630
1640
  /**
1631
1641
  * Disallow returning a value with type `any` from a function
1632
1642
  * @see https://typescript-eslint.io/rules/no-unsafe-return
@@ -3039,6 +3049,11 @@ interface RuleOptions {
3039
3049
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header
3040
3050
  */
3041
3051
  'jsdoc/empty-tags'?: Linter.RuleEntry<JsdocEmptyTags>;
3052
+ /**
3053
+ * Reports use of JSDoc tags in non-tag positions (in the default "typescript" mode).
3054
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/escape-inline-tags.md#repos-sticky-header
3055
+ */
3056
+ 'jsdoc/escape-inline-tags'?: Linter.RuleEntry<JsdocEscapeInlineTags>;
3042
3057
  /**
3043
3058
  * Prohibits use of `@implements` on non-constructor functions (to enforce the tag only being used on classes/constructors).
3044
3059
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header
@@ -3119,6 +3134,11 @@ interface RuleOptions {
3119
3134
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
3120
3135
  */
3121
3136
  'jsdoc/no-undefined-types'?: Linter.RuleEntry<JsdocNoUndefinedTypes>;
3137
+ /**
3138
+ * Prefer `@import` tags to inline `import()` statements.
3139
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/prefer-import-tag.md#repos-sticky-header
3140
+ */
3141
+ 'jsdoc/prefer-import-tag'?: Linter.RuleEntry<JsdocPreferImportTag>;
3122
3142
  /**
3123
3143
  * Reports use of `any` or `*` type
3124
3144
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-any-type.md#repos-sticky-header
@@ -3244,6 +3264,11 @@ interface RuleOptions {
3244
3264
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header
3245
3265
  */
3246
3266
  'jsdoc/require-template'?: Linter.RuleEntry<JsdocRequireTemplate>;
3267
+ /**
3268
+ * Requires a description for `@template` tags
3269
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template-description.md#repos-sticky-header
3270
+ */
3271
+ 'jsdoc/require-template-description'?: Linter.RuleEntry<[]>;
3247
3272
  /**
3248
3273
  * Requires that throw statements are documented with `@throws` tags.
3249
3274
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header
@@ -3294,6 +3319,26 @@ interface RuleOptions {
3294
3319
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
3295
3320
  */
3296
3321
  'jsdoc/text-escaping'?: Linter.RuleEntry<JsdocTextEscaping>;
3322
+ /**
3323
+ * Prefers either function properties or method signatures
3324
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header
3325
+ */
3326
+ 'jsdoc/ts-method-signature-style'?: Linter.RuleEntry<JsdocTsMethodSignatureStyle>;
3327
+ /**
3328
+ * Warns against use of the empty object type
3329
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-no-empty-object-type.md#repos-sticky-header
3330
+ */
3331
+ 'jsdoc/ts-no-empty-object-type'?: Linter.RuleEntry<[]>;
3332
+ /**
3333
+ * Catches unnecessary template expressions such as string expressions within a template literal.
3334
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-no-unnecessary-template-expression.md#repos-sticky-header
3335
+ */
3336
+ 'jsdoc/ts-no-unnecessary-template-expression'?: Linter.RuleEntry<JsdocTsNoUnnecessaryTemplateExpression>;
3337
+ /**
3338
+ * Prefers function types over call signatures when there are no other properties.
3339
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-prefer-function-type.md#repos-sticky-header
3340
+ */
3341
+ 'jsdoc/ts-prefer-function-type'?: Linter.RuleEntry<JsdocTsPreferFunctionType>;
3297
3342
  /**
3298
3343
  * Formats JSDoc type values.
3299
3344
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header
@@ -5021,6 +5066,11 @@ interface RuleOptions {
5021
5066
  * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/yaml/yaml-no-unused-catalog-item.test.ts
5022
5067
  */
5023
5068
  'pnpm/yaml-no-unused-catalog-item'?: Linter.RuleEntry<[]>;
5069
+ /**
5070
+ * Ensure all package patterns in `pnpm-workspace.yaml` match at least one directory
5071
+ * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/yaml/yaml-valid-packages.test.ts
5072
+ */
5073
+ 'pnpm/yaml-valid-packages'?: Linter.RuleEntry<[]>;
5024
5074
  /**
5025
5075
  * Require using arrow functions for callbacks
5026
5076
  * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback
@@ -6925,7 +6975,7 @@ interface RuleOptions {
6925
6975
  */
6926
6976
  'vars-on-top'?: Linter.RuleEntry<[]>;
6927
6977
  /**
6928
- * require .spec test file pattern
6978
+ * require test file pattern
6929
6979
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md
6930
6980
  */
6931
6981
  'vitest/consistent-test-filename'?: Linter.RuleEntry<VitestConsistentTestFilename>;
@@ -7105,6 +7155,11 @@ interface RuleOptions {
7105
7155
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md
7106
7156
  */
7107
7157
  'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
7158
+ /**
7159
+ * Prefer `toHaveBeenCalledExactlyOnceWith` over `toHaveBeenCalledOnce` and `toHaveBeenCalledWith`
7160
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-exactly-once-with.md
7161
+ */
7162
+ 'vitest/prefer-called-exactly-once-with'?: Linter.RuleEntry<[]>;
7108
7163
  /**
7109
7164
  * enforce using `toBeCalledOnce()` or `toHaveBeenCalledOnce()`
7110
7165
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-once.md
@@ -7165,6 +7220,11 @@ interface RuleOptions {
7165
7220
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md
7166
7221
  */
7167
7222
  'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
7223
+ /**
7224
+ * prefer dynamic import in mock
7225
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-import-in-mock.md
7226
+ */
7227
+ 'vitest/prefer-import-in-mock'?: Linter.RuleEntry<[]>;
7168
7228
  /**
7169
7229
  * enforce importing Vitest globals
7170
7230
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md
@@ -8761,6 +8821,11 @@ type HtmlEslintNoRestrictedAttrs = {
8761
8821
  attrPatterns: string[];
8762
8822
  message?: string;
8763
8823
  }[];
8824
+ // ----- @html-eslint/no-restricted-tags -----
8825
+ type HtmlEslintNoRestrictedTags = {
8826
+ tagPatterns: string[];
8827
+ message?: string;
8828
+ }[];
8764
8829
  // ----- @html-eslint/quotes -----
8765
8830
  type HtmlEslintQuotes = [] | [("single" | "double")] | [("single" | "double"), {
8766
8831
  enforceTemplatedAttrValue?: boolean;
@@ -9495,6 +9560,10 @@ type TypescriptEslintNoUnnecessaryTypeAssertion = [] | [{
9495
9560
  checkLiteralConstAssertions?: boolean;
9496
9561
  typesToIgnore?: string[];
9497
9562
  }];
9563
+ // ----- @typescript-eslint/no-unsafe-member-access -----
9564
+ type TypescriptEslintNoUnsafeMemberAccess = [] | [{
9565
+ allowOptionalChaining?: boolean;
9566
+ }];
9498
9567
  // ----- @typescript-eslint/no-unused-expressions -----
9499
9568
  type TypescriptEslintNoUnusedExpressions = [] | [{
9500
9569
  allowShortCircuit?: boolean;
@@ -9512,6 +9581,7 @@ type TypescriptEslintNoUnusedVars = [] | [(("all" | "local") | {
9512
9581
  destructuredArrayIgnorePattern?: string;
9513
9582
  ignoreClassWithStaticInitBlock?: boolean;
9514
9583
  ignoreRestSiblings?: boolean;
9584
+ ignoreUsingDeclarations?: boolean;
9515
9585
  reportUsedIgnorePattern?: boolean;
9516
9586
  vars?: ("all" | "local");
9517
9587
  varsIgnorePattern?: string;
@@ -10488,6 +10558,7 @@ type JsdocCheckPropertyNames = [] | [{
10488
10558
  type JsdocCheckTagNames = [] | [{
10489
10559
  definedTags?: string[];
10490
10560
  enableFixer?: boolean;
10561
+ inlineTags?: string[];
10491
10562
  jsxTags?: boolean;
10492
10563
  typed?: boolean;
10493
10564
  }];
@@ -10530,6 +10601,12 @@ type JsdocConvertToJsdocComments = [] | [{
10530
10601
  type JsdocEmptyTags = [] | [{
10531
10602
  tags?: string[];
10532
10603
  }];
10604
+ // ----- jsdoc/escape-inline-tags -----
10605
+ type JsdocEscapeInlineTags = [] | [{
10606
+ allowedInlineTags?: string[];
10607
+ enableFixer?: boolean;
10608
+ fixType?: ("backticks" | "backslash");
10609
+ }];
10533
10610
  // ----- jsdoc/implements-on-classes -----
10534
10611
  type JsdocImplementsOnClasses = [] | [{
10535
10612
  contexts?: (string | {
@@ -10646,10 +10723,17 @@ type JsdocNoTypes = [] | [{
10646
10723
  }];
10647
10724
  // ----- jsdoc/no-undefined-types -----
10648
10725
  type JsdocNoUndefinedTypes = [] | [{
10726
+ checkUsedTypedefs?: boolean;
10649
10727
  definedTypes?: string[];
10650
10728
  disableReporting?: boolean;
10651
10729
  markVariablesAsUsed?: boolean;
10652
10730
  }];
10731
+ // ----- jsdoc/prefer-import-tag -----
10732
+ type JsdocPreferImportTag = [] | [{
10733
+ enableFixer?: boolean;
10734
+ exemptTypedefs?: boolean;
10735
+ outputType?: ("named-import" | "namespaced-import");
10736
+ }];
10653
10737
  // ----- jsdoc/require-asterisk-prefix -----
10654
10738
  type JsdocRequireAsteriskPrefix = [] | [("always" | "never" | "any")] | [("always" | "never" | "any"), {
10655
10739
  tags?: {
@@ -10809,6 +10893,7 @@ type JsdocRequireReturns = [] | [{
10809
10893
  type JsdocRequireReturnsCheck = [] | [{
10810
10894
  exemptAsync?: boolean;
10811
10895
  exemptGenerators?: boolean;
10896
+ noNativeTypes?: boolean;
10812
10897
  reportMissingReturnForUndefinedTypes?: boolean;
10813
10898
  }];
10814
10899
  // ----- jsdoc/require-returns-description -----
@@ -10897,16 +10982,44 @@ type JsdocTextEscaping = [] | [{
10897
10982
  escapeHTML?: boolean;
10898
10983
  escapeMarkdown?: boolean;
10899
10984
  }];
10985
+ // ----- jsdoc/ts-method-signature-style -----
10986
+ type JsdocTsMethodSignatureStyle = [] | [("method" | "property")] | [("method" | "property"), {
10987
+ enableFixer?: boolean;
10988
+ }];
10989
+ // ----- jsdoc/ts-no-unnecessary-template-expression -----
10990
+ type JsdocTsNoUnnecessaryTemplateExpression = [] | [{
10991
+ enableFixer?: boolean;
10992
+ }];
10993
+ // ----- jsdoc/ts-prefer-function-type -----
10994
+ type JsdocTsPreferFunctionType = [] | [{
10995
+ enableFixer?: boolean;
10996
+ }];
10900
10997
  // ----- jsdoc/type-formatting -----
10901
10998
  type JsdocTypeFormatting = [] | [{
10902
10999
  arrayBrackets?: ("angle" | "square");
11000
+ arrowFunctionPostReturnMarkerSpacing?: string;
11001
+ arrowFunctionPreReturnMarkerSpacing?: string;
10903
11002
  enableFixer?: boolean;
11003
+ functionOrClassParameterSpacing?: string;
11004
+ functionOrClassPostGenericSpacing?: string;
11005
+ functionOrClassPostReturnMarkerSpacing?: string;
11006
+ functionOrClassPreReturnMarkerSpacing?: string;
11007
+ functionOrClassTypeParameterSpacing?: string;
11008
+ genericAndTupleElementSpacing?: string;
10904
11009
  genericDot?: boolean;
11010
+ keyValuePostColonSpacing?: string;
11011
+ keyValuePostKeySpacing?: string;
11012
+ keyValuePostOptionalSpacing?: string;
11013
+ keyValuePostVariadicSpacing?: string;
11014
+ methodQuotes?: ("double" | "single");
10905
11015
  objectFieldIndent?: string;
10906
11016
  objectFieldQuote?: ("double" | "single" | null);
10907
11017
  objectFieldSeparator?: ("comma" | "comma-and-linebreak" | "linebreak" | "semicolon" | "semicolon-and-linebreak");
10908
11018
  objectFieldSeparatorOptionalLinebreak?: boolean;
10909
11019
  objectFieldSeparatorTrailingPunctuation?: boolean;
11020
+ parameterDefaultValueSpacing?: string;
11021
+ postMethodNameSpacing?: string;
11022
+ postNewSpacing?: string;
10910
11023
  separatorForSingleObjectField?: boolean;
10911
11024
  stringQuotes?: ("double" | "single");
10912
11025
  typeBracketSpacing?: string;
@@ -11995,12 +12108,14 @@ type NoRestrictedImports = ((string | {
11995
12108
  message?: string;
11996
12109
  importNames?: string[];
11997
12110
  allowImportNames?: string[];
12111
+ allowTypeImports?: boolean;
11998
12112
  })[] | [] | [{
11999
12113
  paths?: (string | {
12000
12114
  name: string;
12001
12115
  message?: string;
12002
12116
  importNames?: string[];
12003
12117
  allowImportNames?: string[];
12118
+ allowTypeImports?: boolean;
12004
12119
  })[];
12005
12120
  patterns?: (string[] | ({
12006
12121
  [k: string]: unknown | undefined;
@@ -14254,6 +14369,7 @@ type PnpmJsonEnforceCatalog = [] | [{
14254
14369
  reuseExistingCatalog?: boolean;
14255
14370
  conflicts?: ("new-catalog" | "overrides" | "error");
14256
14371
  fields?: string[];
14372
+ ignores?: string[];
14257
14373
  }];
14258
14374
  // ----- pnpm/json-prefer-workspace-settings -----
14259
14375
  type PnpmJsonPreferWorkspaceSettings = [] | [{
@@ -14270,6 +14386,7 @@ type PnpmJsonValidCatalog = [] | [{
14270
14386
  // ----- pnpm/yaml-no-duplicate-catalog-item -----
14271
14387
  type PnpmYamlNoDuplicateCatalogItem = [] | [{
14272
14388
  allow?: string[];
14389
+ checkDuplicates?: ("name-only" | "exact-version");
14273
14390
  }];
14274
14391
  // ----- prefer-arrow-callback -----
14275
14392
  type PreferArrowCallback = [] | [{
@@ -15624,6 +15741,7 @@ type UnusedImportsNoUnusedImports = [] | [(("all" | "local") | {
15624
15741
  destructuredArrayIgnorePattern?: string;
15625
15742
  ignoreClassWithStaticInitBlock?: boolean;
15626
15743
  ignoreRestSiblings?: boolean;
15744
+ ignoreUsingDeclarations?: boolean;
15627
15745
  reportUsedIgnorePattern?: boolean;
15628
15746
  vars?: ("all" | "local");
15629
15747
  varsIgnorePattern?: string;
@@ -15637,6 +15755,7 @@ type UnusedImportsNoUnusedVars = [] | [(("all" | "local") | {
15637
15755
  destructuredArrayIgnorePattern?: string;
15638
15756
  ignoreClassWithStaticInitBlock?: boolean;
15639
15757
  ignoreRestSiblings?: boolean;
15758
+ ignoreUsingDeclarations?: boolean;
15640
15759
  reportUsedIgnorePattern?: boolean;
15641
15760
  vars?: ("all" | "local");
15642
15761
  varsIgnorePattern?: string;
@@ -17223,6 +17342,11 @@ interface OptionsOverrides<Rules extends TypedConfigItem['rules'] = TypedConfigI
17223
17342
  * Options for shareable cross plugins
17224
17343
  */
17225
17344
  interface OptionsShareable {
17345
+ /**
17346
+ * The ECMAScript version of the code being linted
17347
+ * @default 'latest'
17348
+ */
17349
+ ecmaVersion?: Linter.EcmaVersion;
17226
17350
  /**
17227
17351
  * @see {@link https://typescript-eslint.io/packages/parser/#extrafileextensions}
17228
17352
  */
package/dist/index.js CHANGED
@@ -333,7 +333,7 @@ const unCategorizedRules = {
333
333
  * @returns ESLint configs
334
334
  */
335
335
  const configVue = (options = {}) => {
336
- const { files = [GLOB_VUE], extraFileExtensions = [] } = options;
336
+ const { files = [GLOB_VUE], ecmaVersion = "latest", extraFileExtensions = [] } = options;
337
337
  const sfcBlocks = options.sfcBlocks === true ? {} : options.sfcBlocks ?? {};
338
338
  function getVueProcessor() {
339
339
  const processorVueSFC = pluginVue.processors[".vue"];
@@ -359,7 +359,7 @@ const configVue = (options = {}) => {
359
359
  languageOptions: {
360
360
  parser: parserVue,
361
361
  parserOptions: {
362
- ecmaVersion: "latest",
362
+ ecmaVersion,
363
363
  extraFileExtensions,
364
364
  parser: parserTypeScript,
365
365
  sourceType: "module",
@@ -1289,6 +1289,10 @@ const configAstro = async (options = {}) => {
1289
1289
 
1290
1290
  //#endregion
1291
1291
  //#region src/configs/jsdoc.ts
1292
+ const SPECIAL_CHAR = {
1293
+ emptyString: "",
1294
+ singleSpace: " "
1295
+ };
1292
1296
  /**
1293
1297
  * JavaScript specific rules
1294
1298
  */
@@ -1321,6 +1325,7 @@ const configJsdoc = (options = {}) => [{
1321
1325
  name: "ntnyq/jsdoc",
1322
1326
  plugins: { jsdoc: pluginJsdoc },
1323
1327
  rules: {
1328
+ "jsdoc/prefer-import-tag": "off",
1324
1329
  "jsdoc/require-tags": "off",
1325
1330
  "jsdoc/tag-lines": "off",
1326
1331
  "jsdoc/text-escaping": "off",
@@ -1332,6 +1337,7 @@ const configJsdoc = (options = {}) => [{
1332
1337
  "jsdoc/require-property-name": "warn",
1333
1338
  "jsdoc/require-returns-check": "warn",
1334
1339
  "jsdoc/require-returns-description": "warn",
1340
+ "jsdoc/require-template-description": "warn",
1335
1341
  "jsdoc/require-yields-check": "warn",
1336
1342
  "jsdoc/require-next-description": "warn",
1337
1343
  "jsdoc/require-next-type": "warn",
@@ -1339,6 +1345,9 @@ const configJsdoc = (options = {}) => [{
1339
1345
  "jsdoc/require-throws-type": "warn",
1340
1346
  "jsdoc/require-yields-description": "warn",
1341
1347
  "jsdoc/require-yields-type": "warn",
1348
+ "jsdoc/ts-method-signature-style": "warn",
1349
+ "jsdoc/ts-no-empty-object-type": "warn",
1350
+ "jsdoc/ts-no-unnecessary-template-expression": "warn",
1342
1351
  "jsdoc/check-alignment": "error",
1343
1352
  "jsdoc/check-line-alignment": "error",
1344
1353
  "jsdoc/check-param-names": "error",
@@ -1376,12 +1385,16 @@ const configJsdoc = (options = {}) => [{
1376
1385
  arrayBrackets: "square",
1377
1386
  enableFixer: true,
1378
1387
  genericDot: false,
1379
- objectFieldIndent: "",
1388
+ keyValuePostColonSpacing: SPECIAL_CHAR.singleSpace,
1389
+ keyValuePostKeySpacing: SPECIAL_CHAR.emptyString,
1390
+ keyValuePostOptionalSpacing: SPECIAL_CHAR.emptyString,
1391
+ keyValuePostVariadicSpacing: SPECIAL_CHAR.emptyString,
1392
+ objectFieldIndent: SPECIAL_CHAR.emptyString,
1380
1393
  objectFieldQuote: null,
1381
1394
  objectFieldSeparator: "comma",
1382
1395
  stringQuotes: "single",
1383
- typeBracketSpacing: "",
1384
- unionSpacing: ""
1396
+ typeBracketSpacing: SPECIAL_CHAR.emptyString,
1397
+ unionSpacing: SPECIAL_CHAR.singleSpace
1385
1398
  }],
1386
1399
  ...options.typescript ? typescriptRules : javscriptRules,
1387
1400
  ...options.overrides
@@ -2475,180 +2488,184 @@ const strictRules = {
2475
2488
  * @param options - {@link ConfigJavaScriptOptions}
2476
2489
  * @returns ESLint configs
2477
2490
  */
2478
- const configJavaScript = (options = {}) => [{
2479
- ...jsConfig.configs.recommended,
2480
- name: "ntnyq/js/recommended"
2481
- }, {
2482
- name: "ntnyq/js/core",
2483
- languageOptions: {
2484
- sourceType: "module",
2485
- globals: {
2486
- ...globals.browser,
2487
- ...globals.es2021,
2488
- ...globals.node
2489
- }
2490
- },
2491
- rules: {
2492
- "consistent-return": "off",
2493
- "no-return-assign": "off",
2494
- "no-useless-escape": "off",
2495
- "require-await": "off",
2496
- "sort-imports": "off",
2497
- "accessor-pairs": ["error", {
2498
- enforceForClassMembers: true,
2499
- setWithoutGet: true
2500
- }],
2501
- "array-callback-return": "error",
2502
- "block-scoped-var": "error",
2503
- camelcase: ["error", {
2504
- allow: ["^UNSAFE_"],
2505
- ignoreGlobals: true,
2506
- properties: "never"
2507
- }],
2508
- "constructor-super": "error",
2509
- curly: ["error", "all"],
2510
- "default-case-last": "error",
2511
- "dot-notation": ["error", { allowKeywords: true }],
2512
- eqeqeq: ["error", "smart"],
2513
- "new-cap": ["error", {
2514
- capIsNew: false,
2515
- newIsCap: true,
2516
- properties: true
2517
- }],
2518
- "no-alert": "error",
2519
- "no-array-constructor": "error",
2520
- "no-async-promise-executor": "error",
2521
- "no-caller": "error",
2522
- "no-case-declarations": "error",
2523
- "no-class-assign": "error",
2524
- "no-compare-neg-zero": "error",
2525
- "no-cond-assign": "error",
2526
- "no-const-assign": "error",
2527
- "no-constant-condition": ["error", { checkLoops: false }],
2528
- "no-control-regex": "error",
2529
- "no-debugger": "error",
2530
- "no-delete-var": "error",
2531
- "no-dupe-args": "error",
2532
- "no-dupe-class-members": "error",
2533
- "no-dupe-keys": "error",
2534
- "no-duplicate-case": "error",
2535
- "no-empty": ["error", { allowEmptyCatch: true }],
2536
- "no-empty-character-class": "error",
2537
- "no-empty-pattern": "error",
2538
- "no-empty-static-block": "error",
2539
- "no-eval": "error",
2540
- "no-ex-assign": "error",
2541
- "no-extend-native": "error",
2542
- "no-extra-bind": "error",
2543
- "no-extra-boolean-cast": "error",
2544
- "no-fallthrough": "error",
2545
- "no-func-assign": "error",
2546
- "no-global-assign": "error",
2547
- "no-implied-eval": "error",
2548
- "no-import-assign": "error",
2549
- "no-invalid-regexp": "error",
2550
- "no-irregular-whitespace": "error",
2551
- "no-iterator": "error",
2552
- "no-labels": ["error", {
2553
- allowLoop: false,
2554
- allowSwitch: false
2555
- }],
2556
- "no-lone-blocks": "error",
2557
- "no-loss-of-precision": "error",
2558
- "no-misleading-character-class": "error",
2559
- "no-multi-str": "error",
2560
- "no-negated-condition": "error",
2561
- "no-new": "error",
2562
- "no-new-func": "error",
2563
- "no-new-native-nonconstructor": "error",
2564
- "no-new-wrappers": "error",
2565
- "no-obj-calls": "error",
2566
- "no-octal": "error",
2567
- "no-octal-escape": "error",
2568
- "no-proto": "error",
2569
- "no-prototype-builtins": "error",
2570
- "no-redeclare": ["error", { builtinGlobals: false }],
2571
- "no-regex-spaces": "error",
2572
- "no-self-assign": ["error", { props: true }],
2573
- "no-self-compare": "error",
2574
- "no-sequences": "error",
2575
- "no-shadow-restricted-names": "error",
2576
- "no-sparse-arrays": "error",
2577
- "no-template-curly-in-string": "error",
2578
- "no-this-before-super": "error",
2579
- "no-throw-literal": "error",
2580
- "no-undef": "error",
2581
- "no-undef-init": "error",
2582
- "no-unexpected-multiline": "error",
2583
- "no-unmodified-loop-condition": "error",
2584
- "no-unneeded-ternary": ["error", { defaultAssignment: false }],
2585
- "no-unreachable": "error",
2586
- "no-unreachable-loop": "error",
2587
- "no-unsafe-finally": "error",
2588
- "no-unsafe-negation": "error",
2589
- "no-unused-expressions": ["error", {
2590
- allowShortCircuit: true,
2591
- allowTaggedTemplates: true,
2592
- allowTernary: true
2593
- }],
2594
- "no-unused-vars": ["error", {
2595
- args: "none",
2596
- caughtErrors: "none",
2597
- ignoreRestSiblings: true,
2598
- vars: "all"
2599
- }],
2600
- "no-use-before-define": ["error", {
2601
- allowNamedExports: false,
2602
- classes: false,
2603
- functions: false,
2604
- variables: true
2605
- }],
2606
- "no-useless-backreference": "error",
2607
- "no-useless-call": "error",
2608
- "no-useless-catch": "error",
2609
- "no-useless-computed-key": "error",
2610
- "no-useless-constructor": "error",
2611
- "no-useless-rename": "error",
2612
- "no-useless-return": "error",
2613
- "no-var": "error",
2614
- "no-void": "error",
2615
- "no-with": "error",
2616
- "object-shorthand": [
2617
- "error",
2618
- "always",
2619
- {
2620
- avoidQuotes: true,
2621
- ignoreConstructors: false
2491
+ const configJavaScript = (options = {}) => {
2492
+ const { ecmaVersion = "latest" } = options;
2493
+ return [{
2494
+ ...jsConfig.configs.recommended,
2495
+ name: "ntnyq/js/recommended"
2496
+ }, {
2497
+ name: "ntnyq/js/core",
2498
+ languageOptions: {
2499
+ ecmaVersion,
2500
+ sourceType: "module",
2501
+ globals: {
2502
+ ...globals.browser,
2503
+ ...globals.es2021,
2504
+ ...globals.node
2622
2505
  }
2623
- ],
2624
- "one-var": ["error", "never"],
2625
- "prefer-arrow-callback": ["error", {
2626
- allowNamedFunctions: false,
2627
- allowUnboundThis: true
2628
- }],
2629
- "prefer-const": ["error", {
2630
- destructuring: "all",
2631
- ignoreReadBeforeAssign: true
2632
- }],
2633
- "prefer-promise-reject-errors": "error",
2634
- "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
2635
- "prefer-rest-params": "error",
2636
- "prefer-spread": "error",
2637
- "prefer-template": "error",
2638
- "preserve-caught-error": ["error", { requireCatchParameter: true }],
2639
- "symbol-description": "error",
2640
- "unicode-bom": ["error", "never"],
2641
- "use-isnan": ["error", {
2642
- enforceForIndexOf: true,
2643
- enforceForSwitchCase: true
2644
- }],
2645
- "valid-typeof": ["error", { requireStringLiterals: true }],
2646
- "vars-on-top": "error",
2647
- yoda: ["error", "never"],
2648
- ...options.strict ? strictRules : {},
2649
- ...options.overrides
2650
- }
2651
- }];
2506
+ },
2507
+ rules: {
2508
+ "consistent-return": "off",
2509
+ "no-return-assign": "off",
2510
+ "no-useless-escape": "off",
2511
+ "require-await": "off",
2512
+ "sort-imports": "off",
2513
+ "accessor-pairs": ["error", {
2514
+ enforceForClassMembers: true,
2515
+ setWithoutGet: true
2516
+ }],
2517
+ "array-callback-return": "error",
2518
+ "block-scoped-var": "error",
2519
+ camelcase: ["error", {
2520
+ allow: ["^UNSAFE_"],
2521
+ ignoreGlobals: true,
2522
+ properties: "never"
2523
+ }],
2524
+ "constructor-super": "error",
2525
+ curly: ["error", "all"],
2526
+ "default-case-last": "error",
2527
+ "dot-notation": ["error", { allowKeywords: true }],
2528
+ eqeqeq: ["error", "smart"],
2529
+ "new-cap": ["error", {
2530
+ capIsNew: false,
2531
+ newIsCap: true,
2532
+ properties: true
2533
+ }],
2534
+ "no-alert": "error",
2535
+ "no-array-constructor": "error",
2536
+ "no-async-promise-executor": "error",
2537
+ "no-caller": "error",
2538
+ "no-case-declarations": "error",
2539
+ "no-class-assign": "error",
2540
+ "no-compare-neg-zero": "error",
2541
+ "no-cond-assign": "error",
2542
+ "no-const-assign": "error",
2543
+ "no-constant-condition": ["error", { checkLoops: false }],
2544
+ "no-control-regex": "error",
2545
+ "no-debugger": "error",
2546
+ "no-delete-var": "error",
2547
+ "no-dupe-args": "error",
2548
+ "no-dupe-class-members": "error",
2549
+ "no-dupe-keys": "error",
2550
+ "no-duplicate-case": "error",
2551
+ "no-empty": ["error", { allowEmptyCatch: true }],
2552
+ "no-empty-character-class": "error",
2553
+ "no-empty-pattern": "error",
2554
+ "no-empty-static-block": "error",
2555
+ "no-eval": "error",
2556
+ "no-ex-assign": "error",
2557
+ "no-extend-native": "error",
2558
+ "no-extra-bind": "error",
2559
+ "no-extra-boolean-cast": "error",
2560
+ "no-fallthrough": "error",
2561
+ "no-func-assign": "error",
2562
+ "no-global-assign": "error",
2563
+ "no-implied-eval": "error",
2564
+ "no-import-assign": "error",
2565
+ "no-invalid-regexp": "error",
2566
+ "no-irregular-whitespace": "error",
2567
+ "no-iterator": "error",
2568
+ "no-labels": ["error", {
2569
+ allowLoop: false,
2570
+ allowSwitch: false
2571
+ }],
2572
+ "no-lone-blocks": "error",
2573
+ "no-loss-of-precision": "error",
2574
+ "no-misleading-character-class": "error",
2575
+ "no-multi-str": "error",
2576
+ "no-negated-condition": "error",
2577
+ "no-new": "error",
2578
+ "no-new-func": "error",
2579
+ "no-new-native-nonconstructor": "error",
2580
+ "no-new-wrappers": "error",
2581
+ "no-obj-calls": "error",
2582
+ "no-octal": "error",
2583
+ "no-octal-escape": "error",
2584
+ "no-proto": "error",
2585
+ "no-prototype-builtins": "error",
2586
+ "no-redeclare": ["error", { builtinGlobals: false }],
2587
+ "no-regex-spaces": "error",
2588
+ "no-self-assign": ["error", { props: true }],
2589
+ "no-self-compare": "error",
2590
+ "no-sequences": "error",
2591
+ "no-shadow-restricted-names": "error",
2592
+ "no-sparse-arrays": "error",
2593
+ "no-template-curly-in-string": "error",
2594
+ "no-this-before-super": "error",
2595
+ "no-throw-literal": "error",
2596
+ "no-undef": "error",
2597
+ "no-undef-init": "error",
2598
+ "no-unexpected-multiline": "error",
2599
+ "no-unmodified-loop-condition": "error",
2600
+ "no-unneeded-ternary": ["error", { defaultAssignment: false }],
2601
+ "no-unreachable": "error",
2602
+ "no-unreachable-loop": "error",
2603
+ "no-unsafe-finally": "error",
2604
+ "no-unsafe-negation": "error",
2605
+ "no-unused-expressions": ["error", {
2606
+ allowShortCircuit: true,
2607
+ allowTaggedTemplates: true,
2608
+ allowTernary: true
2609
+ }],
2610
+ "no-unused-vars": ["error", {
2611
+ args: "none",
2612
+ caughtErrors: "none",
2613
+ ignoreRestSiblings: true,
2614
+ vars: "all"
2615
+ }],
2616
+ "no-use-before-define": ["error", {
2617
+ allowNamedExports: false,
2618
+ classes: false,
2619
+ functions: false,
2620
+ variables: true
2621
+ }],
2622
+ "no-useless-backreference": "error",
2623
+ "no-useless-call": "error",
2624
+ "no-useless-catch": "error",
2625
+ "no-useless-computed-key": "error",
2626
+ "no-useless-constructor": "error",
2627
+ "no-useless-rename": "error",
2628
+ "no-useless-return": "error",
2629
+ "no-var": "error",
2630
+ "no-void": "error",
2631
+ "no-with": "error",
2632
+ "object-shorthand": [
2633
+ "error",
2634
+ "always",
2635
+ {
2636
+ avoidQuotes: true,
2637
+ ignoreConstructors: false
2638
+ }
2639
+ ],
2640
+ "one-var": ["error", "never"],
2641
+ "prefer-arrow-callback": ["error", {
2642
+ allowNamedFunctions: false,
2643
+ allowUnboundThis: true
2644
+ }],
2645
+ "prefer-const": ["error", {
2646
+ destructuring: "all",
2647
+ ignoreReadBeforeAssign: true
2648
+ }],
2649
+ "prefer-promise-reject-errors": "error",
2650
+ "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
2651
+ "prefer-rest-params": "error",
2652
+ "prefer-spread": "error",
2653
+ "prefer-template": "error",
2654
+ "preserve-caught-error": ["error", { requireCatchParameter: true }],
2655
+ "symbol-description": "error",
2656
+ "unicode-bom": ["error", "never"],
2657
+ "use-isnan": ["error", {
2658
+ enforceForIndexOf: true,
2659
+ enforceForSwitchCase: true
2660
+ }],
2661
+ "valid-typeof": ["error", { requireStringLiterals: true }],
2662
+ "vars-on-top": "error",
2663
+ yoda: ["error", "never"],
2664
+ ...options.strict ? strictRules : {},
2665
+ ...options.overrides
2666
+ }
2667
+ }];
2668
+ };
2652
2669
  const configJSX = () => [{
2653
2670
  name: "ntnyq/jsx",
2654
2671
  files: [GLOB_JSX_ONLY],
@@ -2713,7 +2730,7 @@ const configTypeScript = (options = {}) => {
2713
2730
  * @see {@link https://typescript-eslint.io/troubleshooting/typed-linting}
2714
2731
  */
2715
2732
  const enableTypeAwareLint = !!options?.tsconfigPath;
2716
- const { allowDefaultProject = [], extraFileExtensions = [], filesTypeAware = [GLOB_TS, GLOB_TSX], ignoresTypeAware = [GLOB_ASTRO, `${GLOB_MARKDOWN}/**`], overridesTypeAwareRules = {}, parserOptions = {} } = options;
2733
+ const { allowDefaultProject = [], ecmaVersion = "latest", extraFileExtensions = [], filesTypeAware = [GLOB_TS, GLOB_TSX], ignoresTypeAware = [GLOB_ASTRO, `${GLOB_MARKDOWN}/**`], overridesTypeAwareRules = {}, parserOptions = {} } = options;
2717
2734
  const files = options.files ?? [
2718
2735
  GLOB_TS,
2719
2736
  GLOB_TSX,
@@ -2721,6 +2738,7 @@ const configTypeScript = (options = {}) => {
2721
2738
  ];
2722
2739
  function createParserConfig(enableTypeAware = false, files$1 = [], ignores = []) {
2723
2740
  const typescriptParserOptions = {
2741
+ ecmaVersion,
2724
2742
  extraFileExtensions,
2725
2743
  sourceType: "module",
2726
2744
  ...enableTypeAware ? {
@@ -3107,12 +3125,13 @@ const configESLintComments = (options = {}) => [{
3107
3125
  function defineESLintConfig(options = {}, ...userConfigs) {
3108
3126
  const { shareable = {}, vue: enableVue = hasVue(), pinia: enablePinia = hasPinia(), test: enableTest = hasVitest(), unocss: enableUnoCSS = hasUnoCSS(), typescript: enableTypeScript = hasTypeScript(), yml: enableYML = true, sort: enableSort = true, toml: enableTOML = true, jsonc: enableJSONC = true, antfu: enableAntfu = true, ntnyq: enableNtnyq = true, depend: enableDepend = true, regexp: enableRegexp = true, unicorn: enableUnicorn = true, deMorgan: enableDeMorgan = true, prettier: enablePrettier = true, markdown: enableMarkdown = true, gitignore: enableGitIgnore = true, jsdoc: enableJsdoc = true, importX: enableImportX = true, specials: enableSpecials = true, githubAction: enableGitHubAction = true, perfectionist: enablePerfectionist = true, pnpm: enablePnpm = false, svgo: enableSVGO = false, html: enableHTML = false, astro: enableAstro = false, svelte: enableSvelte = false, eslintPlugin: enableESLintPlugin = false } = options;
3109
3127
  const configs = [];
3110
- const { extraFileExtensions = [] } = shareable;
3128
+ const { ecmaVersion = "latest", extraFileExtensions = [] } = shareable;
3111
3129
  if (enableVue) extraFileExtensions.push(".vue");
3112
3130
  if (enableAstro) extraFileExtensions.push(".astro");
3113
3131
  if (enableSvelte) extraFileExtensions.push(".svelte");
3114
3132
  if (enableGitIgnore) configs.push(configGitIgnore(resolveSubOptions(options, "gitignore")));
3115
3133
  configs.push(configIgnores(options.ignores), configJSX(), configNode({ overrides: getOverrides(options, "node") }), configCommand(resolveSubOptions(options, "command")), configESLintComments({ overrides: getOverrides(options, "eslintComments") }), configJavaScript({
3134
+ ecmaVersion,
3116
3135
  ...resolveSubOptions(options, "javascript"),
3117
3136
  overrides: getOverrides(options, "javascript")
3118
3137
  }));
@@ -3141,11 +3160,13 @@ function defineESLintConfig(options = {}, ...userConfigs) {
3141
3160
  overrides: getOverrides(options, "regexp")
3142
3161
  }));
3143
3162
  if (enableTypeScript) configs.push(configTypeScript({
3163
+ ecmaVersion,
3144
3164
  ...resolveSubOptions(options, "typescript"),
3145
3165
  overrides: getOverrides(options, "typescript"),
3146
3166
  extraFileExtensions
3147
3167
  }));
3148
3168
  if (enableVue) configs.push(configVue({
3169
+ ecmaVersion,
3149
3170
  ...resolveSubOptions(options, "vue"),
3150
3171
  typescript: !!enableTypeScript,
3151
3172
  overrides: getOverrides(options, "vue"),
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ntnyq/eslint-config",
3
3
  "type": "module",
4
- "version": "5.6.0",
4
+ "version": "5.7.0",
5
5
  "description": "An opinionated ESLint config preset of ntnyq",
6
6
  "keywords": [
7
7
  "eslint",
@@ -36,17 +36,17 @@
36
36
  "tag": "latest"
37
37
  },
38
38
  "peerDependencies": {
39
- "@html-eslint/eslint-plugin": "^0.46.2",
40
- "@html-eslint/parser": "^0.46.2",
39
+ "@html-eslint/eslint-plugin": "^0.47.0",
40
+ "@html-eslint/parser": "^0.47.0",
41
41
  "astro-eslint-parser": "^1.2.2",
42
42
  "eslint": "^9.20.0",
43
43
  "eslint-plugin-astro": "^1.3.1",
44
44
  "eslint-plugin-eslint-plugin": "^7.0.0",
45
45
  "eslint-plugin-format": "^1.0.2",
46
- "eslint-plugin-pnpm": "^1.1.1",
46
+ "eslint-plugin-pnpm": "^1.2.0",
47
47
  "eslint-plugin-svelte": "^3.12.4",
48
48
  "eslint-plugin-unused-imports": "^4.2.0",
49
- "svelte": "^5.39.3",
49
+ "svelte": "^5.40.0",
50
50
  "svelte-eslint-parser": "^1.3.3"
51
51
  },
52
52
  "peerDependenciesMeta": {
@@ -88,10 +88,10 @@
88
88
  "@antfu/install-pkg": "^1.1.0",
89
89
  "@clack/prompts": "^0.11.0",
90
90
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
91
- "@eslint/js": "^9.36.0",
92
- "@eslint/markdown": "^7.3.0",
93
- "@unocss/eslint-plugin": "^66.5.2",
94
- "@vitest/eslint-plugin": "^1.3.12",
91
+ "@eslint/js": "^9.38.0",
92
+ "@eslint/markdown": "^7.5.0",
93
+ "@unocss/eslint-plugin": "^66.5.4",
94
+ "@vitest/eslint-plugin": "^1.3.23",
95
95
  "eslint-config-flat-gitignore": "^2.1.0",
96
96
  "eslint-flat-config-utils": "^2.1.4",
97
97
  "eslint-import-resolver-typescript": "^4.4.4",
@@ -99,53 +99,53 @@
99
99
  "eslint-parser-plain": "^0.1.1",
100
100
  "eslint-plugin-antfu": "^3.1.1",
101
101
  "eslint-plugin-command": "^3.3.1",
102
- "eslint-plugin-de-morgan": "^1.3.1",
102
+ "eslint-plugin-de-morgan": "^2.0.0",
103
103
  "eslint-plugin-depend": "^1.3.1",
104
104
  "eslint-plugin-github-action": "^0.0.16",
105
105
  "eslint-plugin-import-x": "^4.16.1",
106
- "eslint-plugin-jsdoc": "^60.1.1",
107
- "eslint-plugin-jsonc": "^2.20.1",
106
+ "eslint-plugin-jsdoc": "^61.1.5",
107
+ "eslint-plugin-jsonc": "^2.21.0",
108
108
  "eslint-plugin-n": "^17.23.1",
109
109
  "eslint-plugin-no-only-tests": "^3.3.0",
110
110
  "eslint-plugin-ntnyq": "^0.12.0",
111
- "eslint-plugin-perfectionist": "^4.15.0",
111
+ "eslint-plugin-perfectionist": "^4.15.1",
112
112
  "eslint-plugin-pinia": "^0.4.1",
113
113
  "eslint-plugin-prettier": "^5.5.4",
114
114
  "eslint-plugin-regexp": "^2.10.0",
115
115
  "eslint-plugin-svgo": "^0.11.3",
116
116
  "eslint-plugin-toml": "^0.12.0",
117
117
  "eslint-plugin-unicorn": "^61.0.2",
118
- "eslint-plugin-vue": "^10.5.0",
119
- "eslint-plugin-yml": "^1.18.0",
118
+ "eslint-plugin-vue": "^10.5.1",
119
+ "eslint-plugin-yml": "^1.19.0",
120
120
  "eslint-processor-vue-blocks": "^2.0.0",
121
121
  "globals": "^16.4.0",
122
122
  "jsonc-eslint-parser": "^2.4.1",
123
123
  "local-pkg": "^1.1.2",
124
124
  "toml-eslint-parser": "^0.10.0",
125
- "typescript-eslint": "^8.44.1",
125
+ "typescript-eslint": "^8.46.2",
126
126
  "vue-eslint-parser": "^10.2.0",
127
127
  "yaml-eslint-parser": "^1.3.0"
128
128
  },
129
129
  "devDependencies": {
130
130
  "@ntnyq/prettier-config": "^3.0.1",
131
- "@types/node": "^24.5.2",
132
- "@typescript-eslint/types": "^8.44.1",
133
- "@typescript-eslint/utils": "^8.44.1",
134
- "bumpp": "^10.2.3",
131
+ "@types/node": "^24.9.1",
132
+ "@typescript-eslint/types": "^8.46.2",
133
+ "@typescript-eslint/utils": "^8.46.2",
134
+ "bumpp": "^10.3.1",
135
135
  "consola": "^3.4.2",
136
- "eslint": "^9.36.0",
136
+ "eslint": "^9.38.0",
137
137
  "eslint-typegen": "^2.3.0",
138
138
  "husky": "^9.1.7",
139
- "jiti": "^2.6.0",
139
+ "jiti": "^2.6.1",
140
140
  "nano-staged": "^0.8.0",
141
141
  "npm-run-all2": "^8.0.4",
142
142
  "prettier": "^3.6.2",
143
143
  "tinyglobby": "^0.2.15",
144
- "tsdown": "^0.15.4",
145
- "tsx": "^4.20.5",
146
- "typescript": "^5.9.2",
144
+ "tsdown": "^0.15.9",
145
+ "tsx": "^4.20.6",
146
+ "typescript": "^5.9.3",
147
147
  "uncase": "^0.2.0",
148
- "vitest": "^3.2.4"
148
+ "vitest": "^4.0.1"
149
149
  },
150
150
  "engines": {
151
151
  "node": "^20.11.0 || >=21.1.0"