eslint-plugin-etc-misc 1.1.1 → 1.1.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.
Files changed (52) hide show
  1. package/README.md +3 -0
  2. package/dist/configs/all-strict.d.ts +1 -0
  3. package/dist/configs/all-strict.d.ts.map +1 -1
  4. package/dist/configs/all-strict.js +1 -0
  5. package/dist/configs/all-strict.js.map +1 -1
  6. package/dist/configs/all.d.ts +1 -0
  7. package/dist/configs/all.d.ts.map +1 -1
  8. package/dist/configs/all.js +1 -0
  9. package/dist/configs/all.js.map +1 -1
  10. package/dist/configs/minimal.d.ts +3 -0
  11. package/dist/configs/minimal.d.ts.map +1 -1
  12. package/dist/configs/minimal.js +3 -0
  13. package/dist/configs/minimal.js.map +1 -1
  14. package/dist/configs/recommended.d.ts +3 -0
  15. package/dist/configs/recommended.d.ts.map +1 -1
  16. package/dist/configs/recommended.js +3 -0
  17. package/dist/configs/recommended.js.map +1 -1
  18. package/dist/configs/strict-type-checked.d.ts +1 -0
  19. package/dist/configs/strict-type-checked.d.ts.map +1 -1
  20. package/dist/configs/strict-type-checked.js +1 -0
  21. package/dist/configs/strict-type-checked.js.map +1 -1
  22. package/dist/configs/strict.d.ts +1 -0
  23. package/dist/configs/strict.d.ts.map +1 -1
  24. package/dist/configs/strict.js +1 -0
  25. package/dist/configs/strict.js.map +1 -1
  26. package/dist/configs.d.ts +8 -7
  27. package/dist/configs.d.ts.map +1 -1
  28. package/dist/configs.js +1 -0
  29. package/dist/configs.js.map +1 -1
  30. package/dist/plugin.cjs +967 -404
  31. package/dist/plugin.cjs.map +4 -4
  32. package/dist/rules/no-function-declare-after-return.d.ts +19 -0
  33. package/dist/rules/no-function-declare-after-return.d.ts.map +1 -0
  34. package/dist/rules/no-function-declare-after-return.js +119 -0
  35. package/dist/rules/no-function-declare-after-return.js.map +1 -0
  36. package/dist/rules/no-use-extend-native.d.ts +9 -0
  37. package/dist/rules/no-use-extend-native.d.ts.map +1 -0
  38. package/dist/rules/no-use-extend-native.js +296 -0
  39. package/dist/rules/no-use-extend-native.js.map +1 -0
  40. package/dist/rules/no-vulnerable.d.ts +15 -0
  41. package/dist/rules/no-vulnerable.d.ts.map +1 -0
  42. package/dist/rules/no-vulnerable.js +182 -0
  43. package/dist/rules/no-vulnerable.js.map +1 -0
  44. package/dist/rules.d.ts.map +1 -1
  45. package/dist/rules.js +8 -0
  46. package/dist/rules.js.map +1 -1
  47. package/docs/docusaurus/package.json +5 -5
  48. package/docs/docusaurus/src/pages/index.module.css +2 -1
  49. package/docs/rules/no-function-declare-after-return.md +143 -0
  50. package/docs/rules/no-use-extend-native.md +89 -0
  51. package/docs/rules/no-vulnerable.md +110 -0
  52. package/package.json +26 -45
package/dist/plugin.cjs CHANGED
@@ -42,10 +42,10 @@ var pluginMeta = {
42
42
  };
43
43
 
44
44
  // dist/configs/all-strict.js
45
- var import_ts_extras66 = require("ts-extras");
45
+ var import_ts_extras69 = require("ts-extras");
46
46
 
47
47
  // dist/rules.js
48
- var import_ts_extras65 = require("ts-extras");
48
+ var import_ts_extras68 = require("ts-extras");
49
49
 
50
50
  // dist/_internal/rule-catalog.js
51
51
  var toCatalogNumericPart = (catalogIndex) => `${catalogIndex}`.padStart(3, "0");
@@ -155,14 +155,14 @@ var createDeprecatedRuleInfo = ({ message, replacedBy = [], ruleId }) => ({
155
155
  ...replacedBy.length === 0 ? {} : { replacedBy: [...replacedBy] },
156
156
  url: `${docsBaseUrl}/${ruleId.replaceAll("/", "-")}`
157
157
  });
158
- var withDeprecatedRuleLifecycle = (rule130, options) => ({
159
- ...rule130,
158
+ var withDeprecatedRuleLifecycle = (rule133, options) => ({
159
+ ...rule133,
160
160
  meta: {
161
- ...rule130.meta,
161
+ ...rule133.meta,
162
162
  deprecated: createDeprecatedRuleInfo(options),
163
- ...rule130.meta.docs === void 0 ? {} : {
163
+ ...rule133.meta.docs === void 0 ? {} : {
164
164
  docs: {
165
- ...rule130.meta.docs,
165
+ ...rule133.meta.docs,
166
166
  deprecated: true,
167
167
  frozen: true
168
168
  }
@@ -1941,10 +1941,96 @@ var rule25 = ruleCreator({
1941
1941
  });
1942
1942
  var no_foreach_default = rule25;
1943
1943
 
1944
+ // dist/rules/no-function-declare-after-return.js
1945
+ var import_ts_extras23 = require("ts-extras");
1946
+ var isStatementList = (node) => node.type === "BlockStatement" || node.type === "Program";
1947
+ var getLineStartIndex = (sourceText, index) => sourceText.lastIndexOf("\n", index - 1) + 1;
1948
+ var getSafeFixRangeStart = (sourceCode, node) => {
1949
+ const declarationStart = (0, import_ts_extras23.arrayFirst)(node.range) ?? 0;
1950
+ const tokenBeforeDeclaration = sourceCode.getTokenBefore(node);
1951
+ const tokenBeforeEnd = tokenBeforeDeclaration === null ? 0 : (0, import_ts_extras23.arrayLast)(tokenBeforeDeclaration.range) ?? 0;
1952
+ const commentsBeforeDeclaration = sourceCode.getCommentsBefore(node).filter((comment) => ((0, import_ts_extras23.arrayFirst)(comment.range) ?? 0) >= tokenBeforeEnd && ((0, import_ts_extras23.arrayLast)(comment.range) ?? 0) <= declarationStart);
1953
+ const firstLeadingComment = (0, import_ts_extras23.arrayFirst)(commentsBeforeDeclaration);
1954
+ const firstMovableNodeStart = firstLeadingComment === void 0 ? declarationStart : (0, import_ts_extras23.arrayFirst)(firstLeadingComment.range) ?? declarationStart;
1955
+ return getLineStartIndex(sourceCode.text, firstMovableNodeStart);
1956
+ };
1957
+ var getSafeFixRangeEnd = (sourceCode, node) => {
1958
+ const declarationEnd = (0, import_ts_extras23.arrayLast)(node.range) ?? 0;
1959
+ const tokenAfterDeclaration = sourceCode.getTokenAfter(node);
1960
+ if (tokenAfterDeclaration === null) {
1961
+ return declarationEnd;
1962
+ }
1963
+ return getLineStartIndex(sourceCode.text, (0, import_ts_extras23.arrayFirst)(tokenAfterDeclaration.range) ?? declarationEnd);
1964
+ };
1965
+ var rule26 = ruleCreator({
1966
+ create: (context) => ({
1967
+ ReturnStatement(node) {
1968
+ const parent = node.parent;
1969
+ if (!isStatementList(parent)) {
1970
+ return;
1971
+ }
1972
+ const siblings = parent.body;
1973
+ const returnIndex = siblings.indexOf(node);
1974
+ for (let i = returnIndex + 1; i < siblings.length; i++) {
1975
+ const sibling = siblings[i];
1976
+ if (sibling?.type !== "FunctionDeclaration") {
1977
+ continue;
1978
+ }
1979
+ const functionDeclaration = sibling;
1980
+ const returnStatement = node;
1981
+ context.report({
1982
+ data: {
1983
+ name: functionDeclaration.id?.name ?? "(anonymous)"
1984
+ },
1985
+ fix(fixer) {
1986
+ const sourceCode = context.sourceCode;
1987
+ const declarationEnd = (0, import_ts_extras23.arrayLast)(functionDeclaration.range) ?? 0;
1988
+ const fixRangeStart = getSafeFixRangeStart(sourceCode, functionDeclaration);
1989
+ const fixRangeEnd = getSafeFixRangeEnd(sourceCode, functionDeclaration);
1990
+ const functionAndLeadingCommentsText = sourceCode.text.slice(fixRangeStart, declarationEnd);
1991
+ if (functionAndLeadingCommentsText.trim().length === 0) {
1992
+ return null;
1993
+ }
1994
+ const returnToken = sourceCode.getFirstToken(returnStatement);
1995
+ const indentationEnd = (0, import_ts_extras23.arrayFirst)(returnToken?.range ?? [0]) ?? 0;
1996
+ const returnLineStart = getLineStartIndex(sourceCode.text, indentationEnd);
1997
+ return [
1998
+ fixer.insertTextBeforeRange([returnLineStart, returnLineStart], `${functionAndLeadingCommentsText}
1999
+ `),
2000
+ fixer.removeRange([fixRangeStart, fixRangeEnd])
2001
+ ];
2002
+ },
2003
+ messageId: "forbidden",
2004
+ node: functionDeclaration
2005
+ });
2006
+ }
2007
+ }
2008
+ }),
2009
+ meta: {
2010
+ deprecated: false,
2011
+ docs: {
2012
+ deprecated: false,
2013
+ description: "disallow function declarations after a return statement.",
2014
+ frozen: false,
2015
+ recommended: true,
2016
+ url: "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-function-declare-after-return"
2017
+ },
2018
+ fixable: "code",
2019
+ hasSuggestions: false,
2020
+ messages: {
2021
+ forbidden: "Function declaration '{{name}}' should be moved before the return statement for readability."
2022
+ },
2023
+ schema: [],
2024
+ type: "suggestion"
2025
+ },
2026
+ name: "no-function-declare-after-return"
2027
+ });
2028
+ var no_function_declare_after_return_default = rule26;
2029
+
1944
2030
  // dist/rules/no-implicit-any-catch.js
1945
2031
  var import_type_utils4 = require("@typescript-eslint/type-utils");
1946
2032
  var import_utils5 = require("@typescript-eslint/utils");
1947
- var import_ts_extras23 = require("ts-extras");
2033
+ var import_ts_extras24 = require("ts-extras");
1948
2034
  var defaultOptions5 = [{}];
1949
2035
  var isPromiseRejectionCall = (callExpression, parserServices, program) => {
1950
2036
  const { callee } = callExpression;
@@ -1960,7 +2046,7 @@ var isParenthesized = (sourceCode, node) => {
1960
2046
  if (tokenBefore === null || tokenAfter === null) {
1961
2047
  return false;
1962
2048
  }
1963
- return tokenBefore.value === "(" && tokenBefore.range[1] <= (0, import_ts_extras23.arrayFirst)(node.range) && tokenAfter.value === ")" && (0, import_ts_extras23.arrayFirst)(tokenAfter.range) >= node.range[1];
2049
+ return tokenBefore.value === "(" && tokenBefore.range[1] <= (0, import_ts_extras24.arrayFirst)(node.range) && tokenAfter.value === ")" && (0, import_ts_extras24.arrayFirst)(tokenAfter.range) >= node.range[1];
1964
2050
  };
1965
2051
  var replaceWithUnknownFix = (fixer, typeAnnotation) => fixer.replaceText(typeAnnotation, ": unknown");
1966
2052
  var annotateImplicitParamFixes = (fixer, sourceCode, parameter) => {
@@ -1972,7 +2058,7 @@ var annotateImplicitParamFixes = (fixer, sourceCode, parameter) => {
1972
2058
  fixer.insertTextAfter(parameter, ": unknown)")
1973
2059
  ];
1974
2060
  };
1975
- var rule26 = ruleCreator({
2061
+ var rule27 = ruleCreator({
1976
2062
  create: (context) => {
1977
2063
  const parserServices = import_utils5.ESLintUtils.getParserServices(context);
1978
2064
  const sourceCode = context.sourceCode;
@@ -2088,18 +2174,18 @@ var rule26 = ruleCreator({
2088
2174
  },
2089
2175
  name: "no-implicit-any-catch"
2090
2176
  });
2091
- var no_implicit_any_catch_default = rule26;
2177
+ var no_implicit_any_catch_default = rule27;
2092
2178
 
2093
2179
  // dist/rules/no-index-import.js
2094
- var rule27 = createImportPatternRule({
2180
+ var rule28 = createImportPatternRule({
2095
2181
  defaultDisallowPatterns: ["."],
2096
2182
  description: "disallow imports from the current directory root (.).",
2097
2183
  name: "no-index-import"
2098
2184
  });
2099
- var no_index_import_default = rule27;
2185
+ var no_index_import_default = rule28;
2100
2186
 
2101
2187
  // dist/rules/no-internal-modules.js
2102
- var rule28 = createImportPatternRule({
2188
+ var rule29 = createImportPatternRule({
2103
2189
  defaultDisallowPatterns: [
2104
2190
  "./*/**",
2105
2191
  "[^@]*/**",
@@ -2108,13 +2194,13 @@ var rule28 = createImportPatternRule({
2108
2194
  description: "disallow importing internal modules.",
2109
2195
  name: "no-internal-modules"
2110
2196
  });
2111
- var no_internal_modules_default = rule28;
2197
+ var no_internal_modules_default = rule29;
2112
2198
 
2113
2199
  // dist/rules/no-internal.js
2114
2200
  var import_utils6 = require("@typescript-eslint/utils");
2115
- var import_ts_extras24 = require("ts-extras");
2201
+ var import_ts_extras25 = require("ts-extras");
2116
2202
  var defaultOptions6 = [{}];
2117
- var rule29 = ruleCreator({
2203
+ var rule30 = ruleCreator({
2118
2204
  create: (context) => {
2119
2205
  const [{ ignored = {} } = {}] = context.options;
2120
2206
  const parserServices = import_utils6.ESLintUtils.getParserServices(context);
@@ -2130,7 +2216,7 @@ var rule29 = ruleCreator({
2130
2216
  return;
2131
2217
  }
2132
2218
  const symbol = getIdentifierSymbol(parserServices, node);
2133
- if (!(0, import_ts_extras24.isDefined)(symbol)) {
2219
+ if (!(0, import_ts_extras25.isDefined)(symbol)) {
2134
2220
  return;
2135
2221
  }
2136
2222
  const symbolName = symbol.getName();
@@ -2142,11 +2228,11 @@ var rule29 = ruleCreator({
2142
2228
  return;
2143
2229
  }
2144
2230
  const internalComments = getJsDocTagComments(symbol, typeChecker, "internal");
2145
- if ((0, import_ts_extras24.isEmpty)(internalComments)) {
2231
+ if ((0, import_ts_extras25.isEmpty)(internalComments)) {
2146
2232
  return;
2147
2233
  }
2148
2234
  for (const comment of internalComments) {
2149
- if (!(0, import_ts_extras24.isDefined)(comment)) {
2235
+ if (!(0, import_ts_extras25.isDefined)(comment)) {
2150
2236
  context.report({
2151
2237
  data: { name: symbolName },
2152
2238
  messageId: "forbidden",
@@ -2217,16 +2303,16 @@ var rule29 = ruleCreator({
2217
2303
  },
2218
2304
  name: "no-internal"
2219
2305
  });
2220
- var no_internal_default = rule29;
2306
+ var no_internal_default = rule30;
2221
2307
 
2222
2308
  // dist/rules/no-language-mixing.js
2223
- var import_ts_extras25 = require("ts-extras");
2309
+ var import_ts_extras26 = require("ts-extras");
2224
2310
  var languageMixPattern = String.raw`/\w[\d_]*[^\u0000-\xff]|[^\u0000-\xff][\d_]*\w/u`;
2225
- var disallowedSelector5 = (0, import_ts_extras25.arrayJoin)([
2311
+ var disallowedSelector5 = (0, import_ts_extras26.arrayJoin)([
2226
2312
  `Literal[value=${languageMixPattern}]`,
2227
2313
  `TemplateElement[value.raw=${languageMixPattern}]`
2228
2314
  ], ", ");
2229
- var rule30 = ruleCreator({
2315
+ var rule31 = ruleCreator({
2230
2316
  create: (context) => ({
2231
2317
  [disallowedSelector5]: (node) => {
2232
2318
  context.report({
@@ -2253,11 +2339,11 @@ var rule30 = ruleCreator({
2253
2339
  },
2254
2340
  name: "no-language-mixing"
2255
2341
  });
2256
- var no_language_mixing_default = rule30;
2342
+ var no_language_mixing_default = rule31;
2257
2343
 
2258
2344
  // dist/rules/no-misused-generics.js
2259
2345
  var import_utils7 = require("@typescript-eslint/utils");
2260
- var import_ts_extras26 = require("ts-extras");
2346
+ var import_ts_extras27 = require("ts-extras");
2261
2347
  var tsutils = __toESM(require("tsutils"), 1);
2262
2348
  var getVariableUses = (usageMap, identifier) => usageMap.get(identifier)?.uses ?? [];
2263
2349
  var toReportLocation = (sourceCode, sourceFile, node) => {
@@ -2276,14 +2362,14 @@ var toReportLocation = (sourceCode, sourceFile, node) => {
2276
2362
  };
2277
2363
  var isTypeUseInsideConstraint = (useLocation, typeParameters) => typeParameters.some((typeParameter) => {
2278
2364
  const { constraint } = typeParameter;
2279
- if (!(0, import_ts_extras26.isDefined)(constraint)) {
2365
+ if (!(0, import_ts_extras27.isDefined)(constraint)) {
2280
2366
  return false;
2281
2367
  }
2282
2368
  return useLocation.pos >= constraint.pos && useLocation.pos < constraint.end;
2283
2369
  });
2284
2370
  var isConstrainedByAnotherTypeParameter = (currentTypeParameter, allTypeParameters, usageMap) => {
2285
2371
  const { constraint } = currentTypeParameter;
2286
- if (!(0, import_ts_extras26.isDefined)(constraint)) {
2372
+ if (!(0, import_ts_extras27.isDefined)(constraint)) {
2287
2373
  return false;
2288
2374
  }
2289
2375
  return allTypeParameters.some((otherTypeParameter) => {
@@ -2297,7 +2383,7 @@ var isConstrainedByAnotherTypeParameter = (currentTypeParameter, allTypeParamete
2297
2383
  var isUseWithinParameterRange = (usePosition, signature) => usePosition > signature.parameters.pos && usePosition < signature.parameters.end;
2298
2384
  var getTypeParameterReplacement = (sourceFile, typeParameter) => {
2299
2385
  const { constraint } = typeParameter;
2300
- if (!(0, import_ts_extras26.isDefined)(constraint)) {
2386
+ if (!(0, import_ts_extras27.isDefined)(constraint)) {
2301
2387
  return "unknown";
2302
2388
  }
2303
2389
  return constraint.getText(sourceFile);
@@ -2326,7 +2412,7 @@ var analyzeTypeParameterUses = (uses, signature, typeParameters) => {
2326
2412
  usedInReturnOrExtends
2327
2413
  };
2328
2414
  };
2329
- var rule31 = ruleCreator({
2415
+ var rule32 = ruleCreator({
2330
2416
  create: (context) => {
2331
2417
  const parserServices = import_utils7.ESLintUtils.getParserServices(context);
2332
2418
  let usageMap = null;
@@ -2363,7 +2449,7 @@ var rule31 = ruleCreator({
2363
2449
  };
2364
2450
  const checkSignature = (node) => {
2365
2451
  const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
2366
- if (!tsutils.isSignatureDeclaration(tsNode) || !(0, import_ts_extras26.isDefined)(tsNode.typeParameters)) {
2452
+ if (!tsutils.isSignatureDeclaration(tsNode) || !(0, import_ts_extras27.isDefined)(tsNode.typeParameters)) {
2367
2453
  return;
2368
2454
  }
2369
2455
  checkTypeParameters(tsNode.typeParameters, tsNode);
@@ -2406,12 +2492,12 @@ var rule31 = ruleCreator({
2406
2492
  },
2407
2493
  name: "no-misused-generics"
2408
2494
  });
2409
- var no_misused_generics_default = rule31;
2495
+ var no_misused_generics_default = rule32;
2410
2496
 
2411
2497
  // dist/rules/no-mixed-enums.js
2412
2498
  var import_eslint_plugin2 = __toESM(require("@typescript-eslint/eslint-plugin"), 1);
2413
- var rule32 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin2.default, "no-mixed-enums", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-mixed-enums");
2414
- var deprecatedRule6 = withDeprecatedRuleLifecycle(rule32, {
2499
+ var rule33 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin2.default, "no-mixed-enums", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-mixed-enums");
2500
+ var deprecatedRule6 = withDeprecatedRuleLifecycle(rule33, {
2415
2501
  message: "Deprecated in favor of @typescript-eslint/no-mixed-enums.",
2416
2502
  replacedBy: [
2417
2503
  createReplacementRuleInfo({
@@ -2430,7 +2516,7 @@ var deprecatedRule6 = withDeprecatedRuleLifecycle(rule32, {
2430
2516
  var no_mixed_enums_default = deprecatedRule6;
2431
2517
 
2432
2518
  // dist/rules/no-negated-conditions.js
2433
- var import_ts_extras27 = require("ts-extras");
2519
+ var import_ts_extras28 = require("ts-extras");
2434
2520
  var disallowedSelectors = [
2435
2521
  'IfStatement > BinaryExpression[operator="!=="]',
2436
2522
  'IfStatement > UnaryExpression[operator="!"]',
@@ -2439,9 +2525,9 @@ var disallowedSelectors = [
2439
2525
  ':not(LogicalExpression) > LogicalExpression[operator="||"] > BinaryExpression[operator="!=="]',
2440
2526
  ':not(LogicalExpression) > LogicalExpression[operator="||"] > UnaryExpression[operator="!"]'
2441
2527
  ];
2442
- var rule33 = ruleCreator({
2528
+ var rule34 = ruleCreator({
2443
2529
  create: (context) => ({
2444
- [(0, import_ts_extras27.arrayJoin)(disallowedSelectors, ", ")]: (node) => {
2530
+ [(0, import_ts_extras28.arrayJoin)(disallowedSelectors, ", ")]: (node) => {
2445
2531
  context.report({
2446
2532
  messageId: "forbidden",
2447
2533
  node
@@ -2466,18 +2552,18 @@ var rule33 = ruleCreator({
2466
2552
  },
2467
2553
  name: "no-negated-conditions"
2468
2554
  });
2469
- var no_negated_conditions_default = rule33;
2555
+ var no_negated_conditions_default = rule34;
2470
2556
 
2471
2557
  // dist/rules/no-nodejs-modules.js
2472
- var rule34 = createImportPatternRule({
2558
+ var rule35 = createImportPatternRule({
2473
2559
  defaultDisallowPatterns: ["node:*"],
2474
2560
  description: "disallow imports from node: built-in module specifiers.",
2475
2561
  name: "no-nodejs-modules"
2476
2562
  });
2477
- var no_nodejs_modules_default = rule34;
2563
+ var no_nodejs_modules_default = rule35;
2478
2564
 
2479
2565
  // dist/rules/no-param-reassign.js
2480
- var import_ts_extras28 = require("ts-extras");
2566
+ var import_ts_extras29 = require("ts-extras");
2481
2567
  var getAssignmentTargetIdentifier = (node) => {
2482
2568
  if (node.left.type === "Identifier") {
2483
2569
  return node.left;
@@ -2516,9 +2602,9 @@ var isInFirstFunctionExpressionStatement = (sourceCode, node) => {
2516
2602
  if (firstStatement?.type !== "ExpressionStatement") {
2517
2603
  return false;
2518
2604
  }
2519
- return (0, import_ts_extras28.arrayFirst)(node.range) >= (0, import_ts_extras28.arrayFirst)(firstStatement.range) && node.range[1] <= firstStatement.range[1];
2605
+ return (0, import_ts_extras29.arrayFirst)(node.range) >= (0, import_ts_extras29.arrayFirst)(firstStatement.range) && node.range[1] <= firstStatement.range[1];
2520
2606
  };
2521
- var rule35 = ruleCreator({
2607
+ var rule36 = ruleCreator({
2522
2608
  create: (context) => {
2523
2609
  const { sourceCode } = context;
2524
2610
  const reportIfParameterReassignment = (identifier) => {
@@ -2568,10 +2654,10 @@ var rule35 = ruleCreator({
2568
2654
  },
2569
2655
  name: "no-param-reassign"
2570
2656
  });
2571
- var no_param_reassign_default = rule35;
2657
+ var no_param_reassign_default = rule36;
2572
2658
 
2573
2659
  // dist/rules/no-relative-parent-import.js
2574
- var rule36 = createImportPatternRule({
2660
+ var rule37 = createImportPatternRule({
2575
2661
  defaultDisallowPatterns: [
2576
2662
  "..",
2577
2663
  "../**",
@@ -2587,7 +2673,7 @@ var rule36 = createImportPatternRule({
2587
2673
  description: "disallow relative parent imports.",
2588
2674
  name: "no-relative-parent-import"
2589
2675
  });
2590
- var deprecatedRule7 = withDeprecatedRuleLifecycle(rule36, {
2676
+ var deprecatedRule7 = withDeprecatedRuleLifecycle(rule37, {
2591
2677
  message: "Deprecated in favor of import/no-relative-parent-imports.",
2592
2678
  replacedBy: [
2593
2679
  createReplacementRuleInfo({
@@ -2606,14 +2692,14 @@ var deprecatedRule7 = withDeprecatedRuleLifecycle(rule36, {
2606
2692
  var no_relative_parent_import_default = deprecatedRule7;
2607
2693
 
2608
2694
  // dist/rules/no-restricted-syntax.js
2609
- var import_ts_extras30 = require("ts-extras");
2695
+ var import_ts_extras31 = require("ts-extras");
2610
2696
 
2611
2697
  // dist/_internal/syntax-selectors.js
2612
- var import_ts_extras29 = require("ts-extras");
2613
- var isSelectorObject = (value) => typeof value === "object" && value !== null && (0, import_ts_extras29.keyIn)(value, "selector");
2698
+ var import_ts_extras30 = require("ts-extras");
2699
+ var isSelectorObject = (value) => typeof value === "object" && value !== null && (0, import_ts_extras30.keyIn)(value, "selector");
2614
2700
  var normalizeSyntaxSelector = (selector25) => {
2615
2701
  if (isSelectorObject(selector25)) {
2616
- if (!(0, import_ts_extras29.isDefined)(selector25.message)) {
2702
+ if (!(0, import_ts_extras30.isDefined)(selector25.message)) {
2617
2703
  return {
2618
2704
  selector: selector25.selector
2619
2705
  };
@@ -2638,12 +2724,12 @@ var buildRestrictedSyntaxListeners = (entries, report) => {
2638
2724
  };
2639
2725
 
2640
2726
  // dist/rules/no-restricted-syntax.js
2641
- var rule37 = ruleCreator({
2727
+ var rule38 = ruleCreator({
2642
2728
  create: (context, [options]) => {
2643
2729
  const selectors = options.selectors ?? [];
2644
2730
  const entries = selectors.map((selector25) => normalizeSyntaxSelector(selector25));
2645
2731
  return buildRestrictedSyntaxListeners(entries, (node, entry) => {
2646
- if ((0, import_ts_extras30.isDefined)(entry.message)) {
2732
+ if ((0, import_ts_extras31.isDefined)(entry.message)) {
2647
2733
  context.report({
2648
2734
  data: {
2649
2735
  message: entry.message
@@ -2714,7 +2800,7 @@ var rule37 = ruleCreator({
2714
2800
  },
2715
2801
  name: "no-restricted-syntax"
2716
2802
  });
2717
- var deprecatedRule8 = withDeprecatedRuleLifecycle(rule37, {
2803
+ var deprecatedRule8 = withDeprecatedRuleLifecycle(rule38, {
2718
2804
  message: "Deprecated in favor of ESLint core no-restricted-syntax.",
2719
2805
  replacedBy: [
2720
2806
  createReplacementRuleInfo({
@@ -2730,8 +2816,8 @@ var no_restricted_syntax_default = deprecatedRule8;
2730
2816
 
2731
2817
  // dist/rules/no-secret.js
2732
2818
  var import_eslint_plugin_no_secrets = __toESM(require("eslint-plugin-no-secrets"), 1);
2733
- var rule38 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_no_secrets.default, "no-secrets", "eslint-plugin-no-secrets"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-secret");
2734
- var deprecatedRule9 = withDeprecatedRuleLifecycle(rule38, {
2819
+ var rule39 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_no_secrets.default, "no-secrets", "eslint-plugin-no-secrets"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-secret");
2820
+ var deprecatedRule9 = withDeprecatedRuleLifecycle(rule39, {
2735
2821
  message: "Deprecated in favor of dedicated secret scanning tools such as Secretlint and detect-secrets.",
2736
2822
  replacedBy: [
2737
2823
  createReplacementRuleInfo({
@@ -2763,7 +2849,7 @@ var no_secret_default = deprecatedRule9;
2763
2849
 
2764
2850
  // dist/rules/no-self-import.js
2765
2851
  var import_node_path4 = require("node:path");
2766
- var import_ts_extras31 = require("ts-extras");
2852
+ var import_ts_extras32 = require("ts-extras");
2767
2853
  var importFileSuffixes = [
2768
2854
  "",
2769
2855
  ".ts",
@@ -2779,7 +2865,7 @@ var importFileSuffixes = [
2779
2865
  "/index.cjs"
2780
2866
  ];
2781
2867
  var toResolvedCandidates = (baseDirectory, importSource) => importFileSuffixes.map((suffix) => (0, import_node_path4.resolve)(baseDirectory, `${importSource}${suffix}`));
2782
- var rule39 = ruleCreator({
2868
+ var rule40 = ruleCreator({
2783
2869
  create: (context) => {
2784
2870
  const currentFilePath = context.filename;
2785
2871
  if (currentFilePath === "<input>") {
@@ -2794,7 +2880,7 @@ var rule39 = ruleCreator({
2794
2880
  return;
2795
2881
  }
2796
2882
  const candidatePaths = toResolvedCandidates(currentFileDirectory, sourceText);
2797
- if ((0, import_ts_extras31.arrayIncludes)(candidatePaths, normalizedCurrentFilePath)) {
2883
+ if ((0, import_ts_extras32.arrayIncludes)(candidatePaths, normalizedCurrentFilePath)) {
2798
2884
  context.report({
2799
2885
  messageId: "forbidden",
2800
2886
  node
@@ -2821,7 +2907,7 @@ var rule39 = ruleCreator({
2821
2907
  },
2822
2908
  name: "no-self-import"
2823
2909
  });
2824
- var deprecatedRule10 = withDeprecatedRuleLifecycle(rule39, {
2910
+ var deprecatedRule10 = withDeprecatedRuleLifecycle(rule40, {
2825
2911
  message: "Deprecated in favor of import/no-self-import.",
2826
2912
  replacedBy: [
2827
2913
  createReplacementRuleInfo({
@@ -2856,7 +2942,7 @@ var collectScopes = (scope) => [
2856
2942
  scope,
2857
2943
  ...scope.childScopes.flatMap((childScope) => collectScopes(childScope))
2858
2944
  ];
2859
- var rule40 = ruleCreator({
2945
+ var rule41 = ruleCreator({
2860
2946
  create: (context) => ({
2861
2947
  "Program:exit": (node) => {
2862
2948
  const programScope = context.sourceCode.getScope(node);
@@ -2902,7 +2988,7 @@ var rule40 = ruleCreator({
2902
2988
  },
2903
2989
  name: "no-shadow"
2904
2990
  });
2905
- var deprecatedRule11 = withDeprecatedRuleLifecycle(rule40, {
2991
+ var deprecatedRule11 = withDeprecatedRuleLifecycle(rule41, {
2906
2992
  message: "Deprecated in favor of @typescript-eslint/no-shadow.",
2907
2993
  replacedBy: [
2908
2994
  createReplacementRuleInfo({
@@ -2921,12 +3007,12 @@ var deprecatedRule11 = withDeprecatedRuleLifecycle(rule40, {
2921
3007
  var no_shadow_default = deprecatedRule11;
2922
3008
 
2923
3009
  // dist/rules/no-sibling-import.js
2924
- var rule41 = createImportPatternRule({
3010
+ var rule42 = createImportPatternRule({
2925
3011
  defaultDisallowPatterns: ["./*"],
2926
3012
  description: "disallow sibling imports from the current directory.",
2927
3013
  name: "no-sibling-import"
2928
3014
  });
2929
- var no_sibling_import_default = rule41;
3015
+ var no_sibling_import_default = rule42;
2930
3016
 
2931
3017
  // dist/rules/no-single-line-comment.js
2932
3018
  var directiveCommentPattern = /^(?:eslint(?:-|$)|global\s|exported\s|ts-(?:check|expect-error|ignore|nocheck))/u;
@@ -2937,7 +3023,7 @@ var createConvertToBlockSuggestionFix = (commentValue, commentRange) => {
2937
3023
  }
2938
3024
  return (fixer) => fixer.replaceTextRange(commentRange, `/*${commentValue} */`);
2939
3025
  };
2940
- var rule42 = ruleCreator({
3026
+ var rule43 = ruleCreator({
2941
3027
  create: (context) => {
2942
3028
  const [{ allowDirectiveComments = true } = {}] = context.options;
2943
3029
  return {
@@ -3003,11 +3089,11 @@ var rule42 = ruleCreator({
3003
3089
  },
3004
3090
  name: "no-single-line-comment"
3005
3091
  });
3006
- var no_single_line_comment_default = rule42;
3092
+ var no_single_line_comment_default = rule43;
3007
3093
 
3008
3094
  // dist/rules/no-t.js
3009
3095
  var defaultOptions7 = [{}];
3010
- var rule43 = ruleCreator({
3096
+ var rule44 = ruleCreator({
3011
3097
  create: (context) => {
3012
3098
  const [{ prefix = "" } = {}] = context.options;
3013
3099
  return {
@@ -3062,16 +3148,16 @@ var rule43 = ruleCreator({
3062
3148
  },
3063
3149
  name: "no-t"
3064
3150
  });
3065
- var no_t_default = rule43;
3151
+ var no_t_default = rule44;
3066
3152
 
3067
3153
  // dist/rules/no-underscore-export.js
3068
- var import_ts_extras32 = require("ts-extras");
3069
- var disallowedSelector6 = (0, import_ts_extras32.arrayJoin)([
3154
+ var import_ts_extras33 = require("ts-extras");
3155
+ var disallowedSelector6 = (0, import_ts_extras33.arrayJoin)([
3070
3156
  "ExportNamedDeclaration > FunctionDeclaration > Identifier.id[name=/^_/u]",
3071
3157
  "ExportNamedDeclaration > TSDeclareFunction > Identifier.id[name=/^_/u]",
3072
3158
  "ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > Identifier.id[name=/^_/u]"
3073
3159
  ], ", ");
3074
- var rule44 = ruleCreator({
3160
+ var rule45 = ruleCreator({
3075
3161
  create: (context) => ({
3076
3162
  [disallowedSelector6]: (node) => {
3077
3163
  context.report({
@@ -3098,7 +3184,7 @@ var rule44 = ruleCreator({
3098
3184
  },
3099
3185
  name: "no-underscore-export"
3100
3186
  });
3101
- var no_underscore_export_default = rule44;
3187
+ var no_underscore_export_default = rule45;
3102
3188
 
3103
3189
  // dist/rules/no-unnecessary-as-const.js
3104
3190
  var disallowedSelector7 = "VariableDeclarator > TSAsExpression[expression.properties.length=0] > TSTypeReference > Identifier[name='const'], VariableDeclarator[id.typeAnnotation] > TSAsExpression > TSTypeReference > Identifier[name='const']";
@@ -3108,7 +3194,7 @@ var getAsConstExpression = (node) => {
3108
3194
  }
3109
3195
  return node.parent.parent;
3110
3196
  };
3111
- var rule45 = ruleCreator({
3197
+ var rule46 = ruleCreator({
3112
3198
  create: (context) => {
3113
3199
  const sourceCode = context.sourceCode;
3114
3200
  return {
@@ -3145,27 +3231,27 @@ var rule45 = ruleCreator({
3145
3231
  },
3146
3232
  name: "no-unnecessary-as-const"
3147
3233
  });
3148
- var no_unnecessary_as_const_default = rule45;
3234
+ var no_unnecessary_as_const_default = rule46;
3149
3235
 
3150
3236
  // dist/rules/no-unnecessary-break.js
3151
- var import_ts_extras33 = require("ts-extras");
3237
+ var import_ts_extras34 = require("ts-extras");
3152
3238
  var disallowedSelector8 = "SwitchCase:last-child > BreakStatement.consequent";
3153
3239
  var createTrailingBreakRemovalFix = (sourceCode, node) => {
3154
3240
  const previousToken = sourceCode.getTokenBefore(node);
3155
3241
  const previousTokenLine = previousToken?.loc.end.line;
3156
3242
  const breakLine = node.loc.start.line;
3157
- const shouldRemoveLeadingWhitespace = (0, import_ts_extras33.isDefined)(previousTokenLine) && previousTokenLine === breakLine;
3243
+ const shouldRemoveLeadingWhitespace = (0, import_ts_extras34.isDefined)(previousTokenLine) && previousTokenLine === breakLine;
3158
3244
  if (previousToken === null || !shouldRemoveLeadingWhitespace) {
3159
3245
  return (fixer) => fixer.remove(node);
3160
3246
  }
3161
- const leadingText = sourceCode.text.slice(previousToken.range[1], (0, import_ts_extras33.arrayFirst)(node.range));
3247
+ const leadingText = sourceCode.text.slice(previousToken.range[1], (0, import_ts_extras34.arrayFirst)(node.range));
3162
3248
  const leadingWhitespaceLength = /^[\t ]*/u.exec(leadingText)?.[0].length ?? 0;
3163
3249
  return (fixer) => fixer.removeRange([
3164
- (0, import_ts_extras33.arrayFirst)(node.range) - leadingWhitespaceLength,
3250
+ (0, import_ts_extras34.arrayFirst)(node.range) - leadingWhitespaceLength,
3165
3251
  node.range[1]
3166
3252
  ]);
3167
3253
  };
3168
- var rule46 = ruleCreator({
3254
+ var rule47 = ruleCreator({
3169
3255
  create: (context) => {
3170
3256
  const sourceCode = context.sourceCode;
3171
3257
  return {
@@ -3208,10 +3294,10 @@ var rule46 = ruleCreator({
3208
3294
  },
3209
3295
  name: "no-unnecessary-break"
3210
3296
  });
3211
- var no_unnecessary_break_default = rule46;
3297
+ var no_unnecessary_break_default = rule47;
3212
3298
 
3213
3299
  // dist/rules/no-unnecessary-initialization.js
3214
- var import_ts_extras34 = require("ts-extras");
3300
+ var import_ts_extras35 = require("ts-extras");
3215
3301
  var disallowedSelector9 = "PropertyDefinition > Identifier.value[name='undefined'], VariableDeclarator > Identifier.init[name='undefined']";
3216
3302
  var getUndefinedInitializationRemovalRange = (sourceCode, node) => {
3217
3303
  const equalsToken = sourceCode.getTokenBefore(node, {
@@ -3220,7 +3306,7 @@ var getUndefinedInitializationRemovalRange = (sourceCode, node) => {
3220
3306
  if (equalsToken === null) {
3221
3307
  return void 0;
3222
3308
  }
3223
- let fixStartIndex = (0, import_ts_extras34.arrayFirst)(equalsToken.range);
3309
+ let fixStartIndex = (0, import_ts_extras35.arrayFirst)(equalsToken.range);
3224
3310
  const sourceText = sourceCode.text;
3225
3311
  while (fixStartIndex > 0) {
3226
3312
  const previousCharacter = sourceText.at(fixStartIndex - 1);
@@ -3231,13 +3317,13 @@ var getUndefinedInitializationRemovalRange = (sourceCode, node) => {
3231
3317
  }
3232
3318
  return [fixStartIndex, node.range[1]];
3233
3319
  };
3234
- var rule47 = ruleCreator({
3320
+ var rule48 = ruleCreator({
3235
3321
  create: (context) => {
3236
3322
  const sourceCode = context.sourceCode;
3237
3323
  return {
3238
3324
  [disallowedSelector9]: (node) => {
3239
3325
  const removalRange = getUndefinedInitializationRemovalRange(sourceCode, node);
3240
- if (!(0, import_ts_extras34.isDefined)(removalRange)) {
3326
+ if (!(0, import_ts_extras35.isDefined)(removalRange)) {
3241
3327
  return;
3242
3328
  }
3243
3329
  const fix = (fixer) => fixer.removeRange(removalRange);
@@ -3268,13 +3354,13 @@ var rule47 = ruleCreator({
3268
3354
  },
3269
3355
  name: "no-unnecessary-initialization"
3270
3356
  });
3271
- var no_unnecessary_initialization_default = rule47;
3357
+ var no_unnecessary_initialization_default = rule48;
3272
3358
 
3273
3359
  // dist/rules/no-unnecessary-template-literal.js
3274
- var import_ts_extras35 = require("ts-extras");
3360
+ var import_ts_extras36 = require("ts-extras");
3275
3361
  var selector3 = "TemplateLiteral[expressions.length=0] > TemplateElement";
3276
- var toSafeStringLiteralText = (templateLiteral) => JSON.stringify((0, import_ts_extras35.arrayFirst)(templateLiteral.quasis)?.value.cooked ?? (0, import_ts_extras35.arrayFirst)(templateLiteral.quasis)?.value.raw ?? "");
3277
- var rule48 = ruleCreator({
3362
+ var toSafeStringLiteralText = (templateLiteral) => JSON.stringify((0, import_ts_extras36.arrayFirst)(templateLiteral.quasis)?.value.cooked ?? (0, import_ts_extras36.arrayFirst)(templateLiteral.quasis)?.value.raw ?? "");
3363
+ var rule49 = ruleCreator({
3278
3364
  create: (context) => ({
3279
3365
  [selector3]: (node) => {
3280
3366
  const templateLiteral = node.type === "TemplateElement" && node.parent?.type === "TemplateLiteral" ? node.parent : void 0;
@@ -3307,12 +3393,12 @@ var rule48 = ruleCreator({
3307
3393
  },
3308
3394
  name: "no-unnecessary-template-literal"
3309
3395
  });
3310
- var no_unnecessary_template_literal_default = rule48;
3396
+ var no_unnecessary_template_literal_default = rule49;
3311
3397
 
3312
3398
  // dist/rules/no-unused-disable.js
3313
3399
  var import_eslint_plugin_eslint_comments = __toESM(require("@eslint-community/eslint-plugin-eslint-comments"), 1);
3314
- var rule49 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_eslint_comments.default, "no-unused-disable", "@eslint-community/eslint-plugin-eslint-comments"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-unused-disable");
3315
- var deprecatedRule12 = withDeprecatedRuleLifecycle(rule49, {
3400
+ var rule50 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_eslint_comments.default, "no-unused-disable", "@eslint-community/eslint-plugin-eslint-comments"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-unused-disable");
3401
+ var deprecatedRule12 = withDeprecatedRuleLifecycle(rule50, {
3316
3402
  message: "Deprecated in favor of @eslint-community/eslint-comments/no-unused-disable.",
3317
3403
  replacedBy: [
3318
3404
  createReplacementRuleInfo({
@@ -3330,10 +3416,296 @@ var deprecatedRule12 = withDeprecatedRuleLifecycle(rule49, {
3330
3416
  });
3331
3417
  var no_unused_disable_default = deprecatedRule12;
3332
3418
 
3419
+ // dist/rules/no-use-extend-native.js
3420
+ var import_ts_extras37 = require("ts-extras");
3421
+ var nativeTypeDefinitions = [
3422
+ {
3423
+ constructorRef: Array,
3424
+ dataProperties: ["length"],
3425
+ name: "Array",
3426
+ prototypeRef: Array.prototype
3427
+ },
3428
+ {
3429
+ constructorRef: BigInt,
3430
+ name: "BigInt",
3431
+ prototypeRef: BigInt.prototype
3432
+ },
3433
+ {
3434
+ constructorRef: Boolean,
3435
+ name: "Boolean",
3436
+ prototypeRef: Boolean.prototype
3437
+ },
3438
+ {
3439
+ constructorRef: Date,
3440
+ name: "Date",
3441
+ prototypeRef: Date.prototype
3442
+ },
3443
+ {
3444
+ constructorRef: Error,
3445
+ name: "Error",
3446
+ prototypeRef: Error.prototype
3447
+ },
3448
+ {
3449
+ constructorRef: Function,
3450
+ name: "Function",
3451
+ prototypeRef: Function.prototype
3452
+ },
3453
+ {
3454
+ constructorRef: Map,
3455
+ name: "Map",
3456
+ prototypeRef: Map.prototype
3457
+ },
3458
+ {
3459
+ constructorRef: Number,
3460
+ name: "Number",
3461
+ prototypeRef: Number.prototype
3462
+ },
3463
+ {
3464
+ constructorRef: Object,
3465
+ name: "Object",
3466
+ prototypeRef: Object.prototype
3467
+ },
3468
+ {
3469
+ constructorRef: Promise,
3470
+ name: "Promise",
3471
+ prototypeRef: Promise.prototype
3472
+ },
3473
+ {
3474
+ constructorRef: RegExp,
3475
+ dataProperties: ["lastIndex"],
3476
+ name: "RegExp",
3477
+ prototypeRef: RegExp.prototype
3478
+ },
3479
+ {
3480
+ constructorRef: Set,
3481
+ name: "Set",
3482
+ prototypeRef: Set.prototype
3483
+ },
3484
+ {
3485
+ constructorRef: String,
3486
+ dataProperties: ["length"],
3487
+ name: "String",
3488
+ prototypeRef: String.prototype
3489
+ },
3490
+ {
3491
+ constructorRef: Symbol,
3492
+ name: "Symbol",
3493
+ prototypeRef: Symbol.prototype
3494
+ },
3495
+ {
3496
+ constructorRef: WeakMap,
3497
+ name: "WeakMap",
3498
+ prototypeRef: WeakMap.prototype
3499
+ },
3500
+ {
3501
+ constructorRef: WeakSet,
3502
+ name: "WeakSet",
3503
+ prototypeRef: WeakSet.prototype
3504
+ }
3505
+ ];
3506
+ var nativeTypeNameSet = new Set(nativeTypeDefinitions.map((definition) => definition.name));
3507
+ function buildNativeTypeInfoByName(definitions) {
3508
+ return new Map(definitions.map((definition) => [
3509
+ definition.name,
3510
+ {
3511
+ propertyKinds: collectPropertyKinds(definition)
3512
+ }
3513
+ ]));
3514
+ }
3515
+ function collectPropertyKinds(definition) {
3516
+ const propertyKinds = /* @__PURE__ */ new Map();
3517
+ const descriptorSources = [
3518
+ definition.prototypeRef,
3519
+ definition.constructorRef
3520
+ ];
3521
+ for (const descriptorSource of descriptorSources) {
3522
+ if (!(0, import_ts_extras37.isDefined)(descriptorSource)) {
3523
+ continue;
3524
+ }
3525
+ const ownPropertyNames = Object.getOwnPropertyNames(descriptorSource);
3526
+ for (const propertyName of ownPropertyNames) {
3527
+ if (propertyKinds.has(propertyName)) {
3528
+ continue;
3529
+ }
3530
+ const descriptor = Object.getOwnPropertyDescriptor(descriptorSource, propertyName);
3531
+ if (!(0, import_ts_extras37.isDefined)(descriptor)) {
3532
+ continue;
3533
+ }
3534
+ propertyKinds.set(propertyName, getMemberKind(descriptor));
3535
+ }
3536
+ }
3537
+ for (const dataPropertyName of definition.dataProperties ?? []) {
3538
+ if (!propertyKinds.has(dataPropertyName)) {
3539
+ propertyKinds.set(dataPropertyName, "data");
3540
+ }
3541
+ }
3542
+ return propertyKinds;
3543
+ }
3544
+ function unwrapExpression(node) {
3545
+ if (node.type === "TSAsExpression" || node.type === "TSTypeAssertion") {
3546
+ return unwrapExpression(node.expression);
3547
+ }
3548
+ if (node.type === "ChainExpression") {
3549
+ return unwrapExpression(node.expression);
3550
+ }
3551
+ return node;
3552
+ }
3553
+ var inferNativeType = (rawExpression) => {
3554
+ const expression = unwrapExpression(rawExpression);
3555
+ if (expression.type === "ArrayExpression") {
3556
+ return "Array";
3557
+ }
3558
+ if (expression.type === "ObjectExpression") {
3559
+ return "Object";
3560
+ }
3561
+ if (expression.type === "TemplateLiteral") {
3562
+ return "String";
3563
+ }
3564
+ if (expression.type === "Literal") {
3565
+ return inferNativeTypeFromLiteral(expression);
3566
+ }
3567
+ if (expression.type === "Identifier" && isNativeTypeName(expression.name)) {
3568
+ return expression.name;
3569
+ }
3570
+ if (expression.type === "BinaryExpression") {
3571
+ return inferNativeTypeFromBinaryExpression(expression);
3572
+ }
3573
+ if (expression.type === "MemberExpression") {
3574
+ return inferNativeTypeFromMemberExpression(expression);
3575
+ }
3576
+ if (expression.type === "NewExpression") {
3577
+ return inferNativeTypeFromNewExpression(expression);
3578
+ }
3579
+ return null;
3580
+ };
3581
+ function inferNativeTypeFromBinaryExpression(expression) {
3582
+ if (expression.operator !== "+") {
3583
+ return null;
3584
+ }
3585
+ const leftType = inferNativeType(expression.left);
3586
+ const rightType = inferNativeType(expression.right);
3587
+ if (leftType === "String" || rightType === "String") {
3588
+ return "String";
3589
+ }
3590
+ if (leftType === "RegExp" && rightType === "RegExp") {
3591
+ return "String";
3592
+ }
3593
+ return null;
3594
+ }
3595
+ function inferNativeTypeFromLiteral(expression) {
3596
+ if (typeof expression.value === "string") {
3597
+ return "String";
3598
+ }
3599
+ if (typeof expression.value === "number") {
3600
+ return "Number";
3601
+ }
3602
+ if (typeof expression.value === "boolean") {
3603
+ return "Boolean";
3604
+ }
3605
+ if (typeof expression.value === "bigint") {
3606
+ return "BigInt";
3607
+ }
3608
+ if (expression.value instanceof RegExp) {
3609
+ return "RegExp";
3610
+ }
3611
+ return null;
3612
+ }
3613
+ function inferNativeTypeFromMemberExpression(expression) {
3614
+ if (expression.computed || expression.property.type !== "Identifier" || expression.property.name !== "prototype" || expression.object.type !== "Identifier" || !isNativeTypeName(expression.object.name)) {
3615
+ return null;
3616
+ }
3617
+ return expression.object.name;
3618
+ }
3619
+ function inferNativeTypeFromNewExpression(expression) {
3620
+ if (expression.callee.type !== "Identifier" || !isNativeTypeName(expression.callee.name)) {
3621
+ return null;
3622
+ }
3623
+ return expression.callee.name;
3624
+ }
3625
+ function getMemberKind(descriptor) {
3626
+ if (typeof descriptor.value === "function") {
3627
+ return "method";
3628
+ }
3629
+ if ((0, import_ts_extras37.isDefined)(descriptor.get) || (0, import_ts_extras37.isDefined)(descriptor.set)) {
3630
+ return "accessor";
3631
+ }
3632
+ return "data";
3633
+ }
3634
+ var getStaticMemberPropertyName = (node) => {
3635
+ if (node.computed || node.property.type !== "Identifier") {
3636
+ return null;
3637
+ }
3638
+ return node.property.name;
3639
+ };
3640
+ var isCallUsage = (node) => {
3641
+ const parent = node.parent;
3642
+ return parent.type === "CallExpression" && parent.callee === node;
3643
+ };
3644
+ var nativeTypeInfoByName = buildNativeTypeInfoByName(nativeTypeDefinitions);
3645
+ var isNativeTypeName = (value) => (0, import_ts_extras37.setHas)(nativeTypeNameSet, value);
3646
+ var rule51 = ruleCreator({
3647
+ create: (context) => ({
3648
+ MemberExpression: (node) => {
3649
+ const propertyName = getStaticMemberPropertyName(node);
3650
+ if (propertyName === null || propertyName === "prototype") {
3651
+ return;
3652
+ }
3653
+ const nativeTypeName = inferNativeType(node.object);
3654
+ if (nativeTypeName === null) {
3655
+ return;
3656
+ }
3657
+ const nativeTypeInfo = nativeTypeInfoByName.get(nativeTypeName);
3658
+ if (!(0, import_ts_extras37.isDefined)(nativeTypeInfo)) {
3659
+ return;
3660
+ }
3661
+ const memberKind = nativeTypeInfo.propertyKinds.get(propertyName);
3662
+ if (!(0, import_ts_extras37.isDefined)(memberKind)) {
3663
+ context.report({
3664
+ data: {
3665
+ nativeTypeName,
3666
+ propertyName
3667
+ },
3668
+ messageId: "forbidden",
3669
+ node
3670
+ });
3671
+ return;
3672
+ }
3673
+ if (isCallUsage(node) && memberKind !== "method") {
3674
+ context.report({
3675
+ data: {
3676
+ nativeTypeName,
3677
+ propertyName
3678
+ },
3679
+ messageId: "forbidden",
3680
+ node
3681
+ });
3682
+ }
3683
+ }
3684
+ }),
3685
+ meta: {
3686
+ deprecated: false,
3687
+ docs: {
3688
+ deprecated: false,
3689
+ description: "disallow usage of non-native members on built-in JavaScript objects.",
3690
+ frozen: false,
3691
+ recommended: false,
3692
+ url: "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-use-extend-native"
3693
+ },
3694
+ hasSuggestions: false,
3695
+ messages: {
3696
+ forbidden: "Avoid using '{{nativeTypeName}}.{{propertyName}}' when it is not part of the native JavaScript API."
3697
+ },
3698
+ schema: [],
3699
+ type: "problem"
3700
+ },
3701
+ name: "no-use-extend-native"
3702
+ });
3703
+ var no_use_extend_native_default = rule51;
3704
+
3333
3705
  // dist/rules/no-useless-generics.js
3334
3706
  var import_eslint_plugin3 = __toESM(require("@typescript-eslint/eslint-plugin"), 1);
3335
- var rule50 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin3.default, "no-unnecessary-type-parameters", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-useless-generics");
3336
- var deprecatedRule13 = withDeprecatedRuleLifecycle(rule50, {
3707
+ var rule52 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin3.default, "no-unnecessary-type-parameters", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-useless-generics");
3708
+ var deprecatedRule13 = withDeprecatedRuleLifecycle(rule52, {
3337
3709
  message: "Deprecated in favor of @typescript-eslint/no-unnecessary-type-parameters.",
3338
3710
  replacedBy: [
3339
3711
  createReplacementRuleInfo({
@@ -3353,8 +3725,8 @@ var no_useless_generics_default = deprecatedRule13;
3353
3725
 
3354
3726
  // dist/rules/no-value-tostring.js
3355
3727
  var import_eslint_plugin4 = __toESM(require("@typescript-eslint/eslint-plugin"), 1);
3356
- var rule51 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin4.default, "no-base-to-string", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-value-tostring");
3357
- var deprecatedRule14 = withDeprecatedRuleLifecycle(rule51, {
3728
+ var rule53 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin4.default, "no-base-to-string", "@typescript-eslint/eslint-plugin"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-value-tostring");
3729
+ var deprecatedRule14 = withDeprecatedRuleLifecycle(rule53, {
3358
3730
  message: "Deprecated in favor of @typescript-eslint/no-base-to-string.",
3359
3731
  replacedBy: [
3360
3732
  createReplacementRuleInfo({
@@ -3370,16 +3742,191 @@ var deprecatedRule14 = withDeprecatedRuleLifecycle(rule51, {
3370
3742
  ],
3371
3743
  ruleId: "no-value-tostring"
3372
3744
  });
3373
- var no_value_tostring_default = deprecatedRule14;
3745
+ var no_value_tostring_default = deprecatedRule14;
3746
+
3747
+ // dist/rules/no-vulnerable.js
3748
+ var import_recheck = require("recheck");
3749
+ var import_ts_extras38 = require("ts-extras");
3750
+ var getStaticStringValue = (node) => {
3751
+ if (node.type === "Literal" && typeof node.value === "string") {
3752
+ return node.value;
3753
+ }
3754
+ if (node.type === "TemplateLiteral" && node.expressions.length === 0 && node.quasis.length === 1) {
3755
+ return (0, import_ts_extras38.arrayFirst)(node.quasis)?.value.cooked ?? null;
3756
+ }
3757
+ return null;
3758
+ };
3759
+ var isNonSpreadArgument = (argument) => argument.type !== "SpreadElement";
3760
+ var isRegExpConstructorCall = (node) => {
3761
+ if (node.callee.type !== "Identifier" || node.callee.name !== "RegExp") {
3762
+ return false;
3763
+ }
3764
+ if (node.arguments.length === 0 || node.arguments.length > 2) {
3765
+ return false;
3766
+ }
3767
+ const sourceArgument = (0, import_ts_extras38.arrayFirst)(node.arguments);
3768
+ if (!(0, import_ts_extras38.isDefined)(sourceArgument) || !isNonSpreadArgument(sourceArgument)) {
3769
+ return false;
3770
+ }
3771
+ const sourceValue = getStaticStringValue(sourceArgument);
3772
+ if (sourceValue === null) {
3773
+ return false;
3774
+ }
3775
+ const flagsArgument = node.arguments[1];
3776
+ if (flagsArgument === void 0) {
3777
+ return true;
3778
+ }
3779
+ if (flagsArgument.type === "SpreadElement") {
3780
+ return false;
3781
+ }
3782
+ return (0, import_ts_extras38.isDefined)(getStaticStringValue(flagsArgument));
3783
+ };
3784
+ var getStaticFlagsValue = (argument) => {
3785
+ if (!(0, import_ts_extras38.isDefined)(argument)) {
3786
+ return "";
3787
+ }
3788
+ if (!isNonSpreadArgument(argument)) {
3789
+ return null;
3790
+ }
3791
+ return getStaticStringValue(argument);
3792
+ };
3793
+ var getDiagnosticsErrorMessage = (error) => {
3794
+ if ((0, import_ts_extras38.keyIn)(error, "message") && typeof error.message === "string") {
3795
+ return error.message;
3796
+ }
3797
+ return "No additional details provided.";
3798
+ };
3799
+ var rule54 = ruleCreator({
3800
+ create: (context, [rawOptions]) => {
3801
+ const options = rawOptions ?? {};
3802
+ const { ignoreErrors = true, permittableComplexities = [], ...recheckParameters } = options;
3803
+ const allowedComplexities = new Set(permittableComplexities);
3804
+ const reportDiagnostics = (node, source, flags) => {
3805
+ const diagnostics = (0, import_recheck.checkSync)(source, flags, recheckParameters);
3806
+ if (diagnostics.status === "safe") {
3807
+ return;
3808
+ }
3809
+ if (diagnostics.status === "vulnerable") {
3810
+ if ((0, import_ts_extras38.setHas)(allowedComplexities, diagnostics.complexity.type)) {
3811
+ return;
3812
+ }
3813
+ context.report({
3814
+ data: {
3815
+ summary: diagnostics.complexity.summary
3816
+ },
3817
+ messageId: "vulnerable",
3818
+ node
3819
+ });
3820
+ return;
3821
+ }
3822
+ if (ignoreErrors) {
3823
+ return;
3824
+ }
3825
+ context.report({
3826
+ data: {
3827
+ kind: diagnostics.error.kind,
3828
+ message: getDiagnosticsErrorMessage(diagnostics.error)
3829
+ },
3830
+ messageId: "checkerError",
3831
+ node
3832
+ });
3833
+ };
3834
+ return {
3835
+ CallExpression: (node) => {
3836
+ if (!isRegExpConstructorCall(node)) {
3837
+ return;
3838
+ }
3839
+ const sourceArgument = (0, import_ts_extras38.arrayFirst)(node.arguments);
3840
+ if (!(0, import_ts_extras38.isDefined)(sourceArgument) || !isNonSpreadArgument(sourceArgument)) {
3841
+ return;
3842
+ }
3843
+ const source = getStaticStringValue(sourceArgument);
3844
+ const secondArgument = node.arguments[1];
3845
+ const flags = getStaticFlagsValue(secondArgument);
3846
+ if (source === null || flags === null) {
3847
+ return;
3848
+ }
3849
+ reportDiagnostics(node, source, flags);
3850
+ },
3851
+ Literal: (node) => {
3852
+ if (!(node.value instanceof RegExp)) {
3853
+ return;
3854
+ }
3855
+ reportDiagnostics(node, node.value.source, node.value.flags);
3856
+ },
3857
+ NewExpression: (node) => {
3858
+ if (!isRegExpConstructorCall(node)) {
3859
+ return;
3860
+ }
3861
+ const sourceArgument = (0, import_ts_extras38.arrayFirst)(node.arguments);
3862
+ if (!(0, import_ts_extras38.isDefined)(sourceArgument) || !isNonSpreadArgument(sourceArgument)) {
3863
+ return;
3864
+ }
3865
+ const source = getStaticStringValue(sourceArgument);
3866
+ const secondArgument = node.arguments[1];
3867
+ const flags = getStaticFlagsValue(secondArgument);
3868
+ if (source === null || flags === null) {
3869
+ return;
3870
+ }
3871
+ reportDiagnostics(node, source, flags);
3872
+ }
3873
+ };
3874
+ },
3875
+ meta: {
3876
+ defaultOptions: [{}],
3877
+ deprecated: false,
3878
+ docs: {
3879
+ deprecated: false,
3880
+ description: "disallow ReDoS-vulnerable regular expressions.",
3881
+ frozen: false,
3882
+ recommended: true,
3883
+ url: "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-vulnerable"
3884
+ },
3885
+ hasSuggestions: false,
3886
+ messages: {
3887
+ checkerError: "ReDoS analysis failed ({{kind}}): {{message}}. Consider setting ignoreErrors to true for this pattern.",
3888
+ vulnerable: "Potential ReDoS-vulnerable regular expression detected ({{summary}})."
3889
+ },
3890
+ schema: [
3891
+ {
3892
+ additionalProperties: false,
3893
+ description: "Configuration for ReDoS analysis, including recheck parameters and local rule behavior flags.",
3894
+ properties: {
3895
+ ignoreErrors: {
3896
+ description: "Whether to suppress errors returned by the ReDoS analyzer.",
3897
+ type: "boolean"
3898
+ },
3899
+ permittableComplexities: {
3900
+ description: "List of vulnerable complexity categories to permit without reporting.",
3901
+ items: {
3902
+ enum: ["polynomial", "exponential"],
3903
+ type: "string"
3904
+ },
3905
+ type: "array",
3906
+ uniqueItems: true
3907
+ },
3908
+ timeout: {
3909
+ description: "Maximum analysis time budget in milliseconds passed through to recheck.",
3910
+ type: ["number", "null"]
3911
+ }
3912
+ },
3913
+ type: "object"
3914
+ }
3915
+ ],
3916
+ type: "problem"
3917
+ },
3918
+ name: "no-vulnerable"
3919
+ });
3920
+ var no_vulnerable_default = rule54;
3374
3921
 
3375
3922
  // dist/rules/no-writeonly.js
3376
3923
  var externalRule2 = getCoreRule("accessor-pairs");
3377
- var rule52 = adaptExternalRule(externalRule2, "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-writeonly");
3378
- var no_writeonly_default = rule52;
3924
+ var rule55 = adaptExternalRule(externalRule2, "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-writeonly");
3925
+ var no_writeonly_default = rule55;
3379
3926
 
3380
3927
  // dist/rules/object-format.js
3381
3928
  var isSingleLine = (node) => node.loc.start.line === node.loc.end.line;
3382
- var rule53 = ruleCreator({
3929
+ var rule56 = ruleCreator({
3383
3930
  create: (context, [options]) => ({
3384
3931
  ObjectExpression: (node) => {
3385
3932
  const maxProperties = options.maxProperties ?? 1;
@@ -3432,10 +3979,10 @@ var rule53 = ruleCreator({
3432
3979
  },
3433
3980
  name: "object-format"
3434
3981
  });
3435
- var object_format_default = rule53;
3982
+ var object_format_default = rule56;
3436
3983
 
3437
3984
  // dist/rules/only-export-name.js
3438
- var import_ts_extras36 = require("ts-extras");
3985
+ var import_ts_extras39 = require("ts-extras");
3439
3986
  var getExportedNames = (node) => {
3440
3987
  if (node.specifiers.length > 0) {
3441
3988
  return node.specifiers.filter((specifier) => specifier.type === "ExportSpecifier").flatMap((specifier) => {
@@ -3463,12 +4010,12 @@ var getExportedNames = (node) => {
3463
4010
  }
3464
4011
  return [];
3465
4012
  };
3466
- var rule54 = ruleCreator({
4013
+ var rule57 = ruleCreator({
3467
4014
  create: (context, [options]) => {
3468
4015
  const allowedNames = new Set(options.names ?? ["default"]);
3469
4016
  return {
3470
4017
  ExportDefaultDeclaration: (node) => {
3471
- if ((0, import_ts_extras36.setHas)(allowedNames, "default")) {
4018
+ if ((0, import_ts_extras39.setHas)(allowedNames, "default")) {
3472
4019
  return;
3473
4020
  }
3474
4021
  context.report({
@@ -3482,7 +4029,7 @@ var rule54 = ruleCreator({
3482
4029
  ExportNamedDeclaration: (node) => {
3483
4030
  const exportedNames = getExportedNames(node);
3484
4031
  for (const name of exportedNames) {
3485
- if ((0, import_ts_extras36.setHas)(allowedNames, name)) {
4032
+ if ((0, import_ts_extras39.setHas)(allowedNames, name)) {
3486
4033
  continue;
3487
4034
  }
3488
4035
  context.report({
@@ -3532,11 +4079,11 @@ var rule54 = ruleCreator({
3532
4079
  },
3533
4080
  name: "only-export-name"
3534
4081
  });
3535
- var only_export_name_default = rule54;
4082
+ var only_export_name_default = rule57;
3536
4083
 
3537
4084
  // dist/rules/prefer-arrow-function-property.js
3538
4085
  var disallowedSelector10 = "Property > FunctionExpression.value:not([params.0.name='this'])";
3539
- var rule55 = ruleCreator({
4086
+ var rule58 = ruleCreator({
3540
4087
  create: (context) => ({
3541
4088
  [disallowedSelector10]: (node) => {
3542
4089
  context.report({
@@ -3563,11 +4110,11 @@ var rule55 = ruleCreator({
3563
4110
  },
3564
4111
  name: "prefer-arrow-function-property"
3565
4112
  });
3566
- var prefer_arrow_function_property_default = rule55;
4113
+ var prefer_arrow_function_property_default = rule58;
3567
4114
 
3568
4115
  // dist/rules/prefer-const-require.js
3569
4116
  var disallowedSelector11 = ":not(VariableDeclarator) > CallExpression > Identifier.callee[name='require']";
3570
- var rule56 = ruleCreator({
4117
+ var rule59 = ruleCreator({
3571
4118
  create: (context) => ({
3572
4119
  [disallowedSelector11]: (node) => {
3573
4120
  context.report({
@@ -3594,12 +4141,12 @@ var rule56 = ruleCreator({
3594
4141
  },
3595
4142
  name: "prefer-const-require"
3596
4143
  });
3597
- var prefer_const_require_default = rule56;
4144
+ var prefer_const_require_default = rule59;
3598
4145
 
3599
4146
  // dist/rules/prefer-includes.js
3600
4147
  var import_eslint_plugin_unicorn = __toESM(require("eslint-plugin-unicorn"), 1);
3601
- var rule57 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn.default, "prefer-includes", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/prefer-includes");
3602
- var deprecatedRule15 = withDeprecatedRuleLifecycle(rule57, {
4148
+ var rule60 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn.default, "prefer-includes", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/prefer-includes");
4149
+ var deprecatedRule15 = withDeprecatedRuleLifecycle(rule60, {
3603
4150
  message: "Deprecated in favor of unicorn/prefer-includes.",
3604
4151
  replacedBy: [
3605
4152
  createReplacementRuleInfo({
@@ -3620,7 +4167,7 @@ var prefer_includes_default = deprecatedRule15;
3620
4167
  // dist/rules/prefer-interface.js
3621
4168
  var import_type_utils5 = require("@typescript-eslint/type-utils");
3622
4169
  var import_utils8 = require("@typescript-eslint/utils");
3623
- var import_ts_extras37 = require("ts-extras");
4170
+ var import_ts_extras40 = require("ts-extras");
3624
4171
  var tsutils2 = __toESM(require("tsutils"), 1);
3625
4172
  var defaultOptions8 = [{}];
3626
4173
  var isExportedTypeAlias = (typeAliasDeclaration) => typeAliasDeclaration.parent?.type === "ExportNamedDeclaration" && typeAliasDeclaration.parent.declaration === typeAliasDeclaration;
@@ -3634,13 +4181,13 @@ var createTypeLiteralFixText = (sourceCode, typeAliasDeclaration, typeLiteralNod
3634
4181
  var createFunctionTypeFixText = (sourceCode, typeAliasDeclaration, functionTypeNode) => {
3635
4182
  const aliasTypeParameters = formatTypeParameters(sourceCode, typeAliasDeclaration.typeParameters);
3636
4183
  const functionTypeParameters = formatTypeParameters(sourceCode, functionTypeNode.typeParameters);
3637
- const parametersText = (0, import_ts_extras37.arrayJoin)(functionTypeNode.params.map((parameter) => sourceCode.getText(parameter)), ", ");
4184
+ const parametersText = (0, import_ts_extras40.arrayJoin)(functionTypeNode.params.map((parameter) => sourceCode.getText(parameter)), ", ");
3638
4185
  const returnTypeText = functionTypeNode.returnType === void 0 ? "void" : sourceCode.getText(functionTypeNode.returnType.typeAnnotation);
3639
4186
  return `interface ${typeAliasDeclaration.id.name}${aliasTypeParameters} { ${functionTypeParameters}(${parametersText}): ${returnTypeText}; }`;
3640
4187
  };
3641
4188
  var createIntersectionFixText = (sourceCode, typeAliasDeclaration, literalNode, referenceNodes) => {
3642
4189
  const aliasTypeParameters = formatTypeParameters(sourceCode, typeAliasDeclaration.typeParameters);
3643
- const baseTypesText = (0, import_ts_extras37.arrayJoin)(referenceNodes.map((referenceNode) => sourceCode.getText(referenceNode)), ", ");
4190
+ const baseTypesText = (0, import_ts_extras40.arrayJoin)(referenceNodes.map((referenceNode) => sourceCode.getText(referenceNode)), ", ");
3644
4191
  const extendsClause = baseTypesText.length > 0 ? ` extends ${baseTypesText}` : "";
3645
4192
  const bodyText = literalNode === void 0 ? "{}" : sourceCode.getText(literalNode);
3646
4193
  return `interface ${typeAliasDeclaration.id.name}${aliasTypeParameters}${extendsClause} ${bodyText}`;
@@ -3688,7 +4235,7 @@ var reportTypeAlias = (context, typeAliasDeclaration, replacementText) => {
3688
4235
  ]
3689
4236
  });
3690
4237
  };
3691
- var rule58 = ruleCreator({
4238
+ var rule61 = ruleCreator({
3692
4239
  create: (context) => {
3693
4240
  const [{ allowIntersection = true, allowLocal = false } = {}] = context.options;
3694
4241
  const sourceCode = context.sourceCode;
@@ -3718,10 +4265,10 @@ var rule58 = ruleCreator({
3718
4265
  return;
3719
4266
  }
3720
4267
  const conversion = canSafelyConvertIntersection(intersectionTypeNode, typedParserServices);
3721
- if (!(0, import_ts_extras37.isDefined)(conversion)) {
4268
+ if (!(0, import_ts_extras40.isDefined)(conversion)) {
3722
4269
  return;
3723
4270
  }
3724
- reportTypeAlias(context, typeAliasDeclaration, createIntersectionFixText(sourceCode, typeAliasDeclaration, (0, import_ts_extras37.arrayFirst)(conversion.literals), conversion.references));
4271
+ reportTypeAlias(context, typeAliasDeclaration, createIntersectionFixText(sourceCode, typeAliasDeclaration, (0, import_ts_extras40.arrayFirst)(conversion.literals), conversion.references));
3725
4272
  },
3726
4273
  "TSTypeAliasDeclaration > TSTypeLiteral": (typeLiteralNode) => {
3727
4274
  const typeAliasDeclaration = getTypeAliasDeclarationParent(typeLiteralNode.parent);
@@ -3774,7 +4321,7 @@ var rule58 = ruleCreator({
3774
4321
  },
3775
4322
  name: "prefer-interface"
3776
4323
  });
3777
- var deprecatedRule16 = withDeprecatedRuleLifecycle(rule58, {
4324
+ var deprecatedRule16 = withDeprecatedRuleLifecycle(rule61, {
3778
4325
  message: "Deprecated in favor of @typescript-eslint/consistent-type-definitions.",
3779
4326
  replacedBy: [
3780
4327
  createReplacementRuleInfo({
@@ -3805,7 +4352,7 @@ var createFixes = (fixer, context, expression, operatorText) => {
3805
4352
  fixer.replaceText(right, context.sourceCode.getText(left))
3806
4353
  ];
3807
4354
  };
3808
- var rule59 = ruleCreator({
4355
+ var rule62 = ruleCreator({
3809
4356
  create: (context) => ({
3810
4357
  "BinaryExpression[operator='>'], BinaryExpression[operator='>=']": (expression) => {
3811
4358
  const useLessThanOrEqual = expression.operator === ">=";
@@ -3847,12 +4394,12 @@ var rule59 = ruleCreator({
3847
4394
  },
3848
4395
  name: "prefer-less-than"
3849
4396
  });
3850
- var prefer_less_than_default = rule59;
4397
+ var prefer_less_than_default = rule62;
3851
4398
 
3852
4399
  // dist/rules/prefer-object-has-own.js
3853
4400
  var externalRule3 = getCoreRule("prefer-object-has-own");
3854
- var rule60 = adaptExternalRule(externalRule3, "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/prefer-object-has-own");
3855
- var deprecatedRule17 = withDeprecatedRuleLifecycle(rule60, {
4401
+ var rule63 = adaptExternalRule(externalRule3, "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/prefer-object-has-own");
4402
+ var deprecatedRule17 = withDeprecatedRuleLifecycle(rule63, {
3856
4403
  message: "Deprecated in favor of ESLint core prefer-object-has-own.",
3857
4404
  replacedBy: [
3858
4405
  createReplacementRuleInfo({
@@ -3872,7 +4419,7 @@ var prefer_object_has_own_default = deprecatedRule17;
3872
4419
 
3873
4420
  // dist/rules/prefer-only-export.js
3874
4421
  var selector4 = "Program[body.length>1]:has(ExportDefaultDeclaration)";
3875
- var rule61 = ruleCreator({
4422
+ var rule64 = ruleCreator({
3876
4423
  create: (context) => ({
3877
4424
  [selector4]: (node) => {
3878
4425
  context.report({
@@ -3899,10 +4446,10 @@ var rule61 = ruleCreator({
3899
4446
  },
3900
4447
  name: "prefer-only-export"
3901
4448
  });
3902
- var prefer_only_export_default = rule61;
4449
+ var prefer_only_export_default = rule64;
3903
4450
 
3904
4451
  // dist/rules/require-jsdoc.js
3905
- var import_ts_extras38 = require("ts-extras");
4452
+ var import_ts_extras41 = require("ts-extras");
3906
4453
  var defaultKinds = [
3907
4454
  "arrow-function",
3908
4455
  "class",
@@ -3912,7 +4459,7 @@ var defaultKinds = [
3912
4459
  ];
3913
4460
  var hasJSDocComment = (sourceCode, node) => {
3914
4461
  const comments = sourceCode.getCommentsBefore(node);
3915
- const comment = (0, import_ts_extras38.arrayLast)(comments);
4462
+ const comment = (0, import_ts_extras41.arrayLast)(comments);
3916
4463
  return comment?.type === "Block" && comment.value.startsWith("*");
3917
4464
  };
3918
4465
  var reportMissingJSDoc = (context, node) => {
@@ -3924,30 +4471,30 @@ var reportMissingJSDoc = (context, node) => {
3924
4471
  node
3925
4472
  });
3926
4473
  };
3927
- var rule62 = ruleCreator({
4474
+ var rule65 = ruleCreator({
3928
4475
  create: (context, [options]) => {
3929
4476
  const kinds = new Set(options.kinds ?? defaultKinds);
3930
4477
  return {
3931
4478
  ClassDeclaration: (node) => {
3932
- if (!(0, import_ts_extras38.setHas)(kinds, "class") || node.id === null) {
4479
+ if (!(0, import_ts_extras41.setHas)(kinds, "class") || node.id === null) {
3933
4480
  return;
3934
4481
  }
3935
4482
  reportMissingJSDoc(context, node);
3936
4483
  },
3937
4484
  FunctionDeclaration: (node) => {
3938
- if (!(0, import_ts_extras38.setHas)(kinds, "function") || node.id === null) {
4485
+ if (!(0, import_ts_extras41.setHas)(kinds, "function") || node.id === null) {
3939
4486
  return;
3940
4487
  }
3941
4488
  reportMissingJSDoc(context, node);
3942
4489
  },
3943
4490
  MethodDefinition: (node) => {
3944
- if (!(0, import_ts_extras38.setHas)(kinds, "method") || node.kind === "constructor" || node.key.type !== "Identifier") {
4491
+ if (!(0, import_ts_extras41.setHas)(kinds, "method") || node.kind === "constructor" || node.key.type !== "Identifier") {
3945
4492
  return;
3946
4493
  }
3947
4494
  reportMissingJSDoc(context, node);
3948
4495
  },
3949
4496
  "TSTypeAliasDeclaration, TSInterfaceDeclaration": (node) => {
3950
- if (!(0, import_ts_extras38.setHas)(kinds, "type")) {
4497
+ if (!(0, import_ts_extras41.setHas)(kinds, "type")) {
3951
4498
  return;
3952
4499
  }
3953
4500
  if (node.type === "TSInterfaceDeclaration" || node.type === "TSTypeAliasDeclaration") {
@@ -3955,7 +4502,7 @@ var rule62 = ruleCreator({
3955
4502
  }
3956
4503
  },
3957
4504
  VariableDeclarator: (node) => {
3958
- if (!(0, import_ts_extras38.setHas)(kinds, "arrow-function") || node.id.type !== "Identifier" || node.init?.type !== "ArrowFunctionExpression" || node.parent.type !== "VariableDeclaration" || node.parent.kind !== "const") {
4505
+ if (!(0, import_ts_extras41.setHas)(kinds, "arrow-function") || node.id.type !== "Identifier" || node.init?.type !== "ArrowFunctionExpression" || node.parent.type !== "VariableDeclaration" || node.parent.kind !== "const") {
3959
4506
  return;
3960
4507
  }
3961
4508
  reportMissingJSDoc(context, node.parent);
@@ -3997,7 +4544,7 @@ var rule62 = ruleCreator({
3997
4544
  },
3998
4545
  name: "require-jsdoc"
3999
4546
  });
4000
- var deprecatedRule18 = withDeprecatedRuleLifecycle(rule62, {
4547
+ var deprecatedRule18 = withDeprecatedRuleLifecycle(rule65, {
4001
4548
  message: "Deprecated in favor of jsdoc/require-jsdoc.",
4002
4549
  replacedBy: [
4003
4550
  createReplacementRuleInfo({
@@ -4016,8 +4563,8 @@ var deprecatedRule18 = withDeprecatedRuleLifecycle(rule62, {
4016
4563
  var require_jsdoc_default = deprecatedRule18;
4017
4564
 
4018
4565
  // dist/rules/require-syntax.js
4019
- var import_ts_extras39 = require("ts-extras");
4020
- var rule63 = ruleCreator({
4566
+ var import_ts_extras42 = require("ts-extras");
4567
+ var rule66 = ruleCreator({
4021
4568
  create: (context, [options]) => {
4022
4569
  const entries = (options.selectors ?? []).map((selector25) => normalizeSyntaxSelector(selector25));
4023
4570
  const counters = entries.map(() => 0);
@@ -4039,7 +4586,7 @@ var rule63 = ruleCreator({
4039
4586
  if (count > 0) {
4040
4587
  continue;
4041
4588
  }
4042
- if ((0, import_ts_extras39.isDefined)(entry.message)) {
4589
+ if ((0, import_ts_extras42.isDefined)(entry.message)) {
4043
4590
  context.report({
4044
4591
  data: {
4045
4592
  message: entry.message
@@ -4115,11 +4662,11 @@ var rule63 = ruleCreator({
4115
4662
  },
4116
4663
  name: "require-syntax"
4117
4664
  });
4118
- var require_syntax_default = rule63;
4665
+ var require_syntax_default = rule66;
4119
4666
 
4120
4667
  // dist/rules/restrict-identifier-characters.js
4121
4668
  var disallowedSelector12 = String.raw`Identifier[name=/[^$\w]/u]`;
4122
- var rule64 = ruleCreator({
4669
+ var rule67 = ruleCreator({
4123
4670
  create: (context) => ({
4124
4671
  [disallowedSelector12]: (node) => {
4125
4672
  context.report({
@@ -4146,10 +4693,10 @@ var rule64 = ruleCreator({
4146
4693
  },
4147
4694
  name: "restrict-identifier-characters"
4148
4695
  });
4149
- var restrict_identifier_characters_default = rule64;
4696
+ var restrict_identifier_characters_default = rule67;
4150
4697
 
4151
4698
  // dist/rules/sort-array.js
4152
- var import_ts_extras40 = require("ts-extras");
4699
+ var import_ts_extras43 = require("ts-extras");
4153
4700
  var getSortableValue = (element) => {
4154
4701
  if (element.type === "Literal") {
4155
4702
  return String(element.value);
@@ -4158,15 +4705,15 @@ var getSortableValue = (element) => {
4158
4705
  };
4159
4706
  var buildFix2 = (sourceCode, node, sorted) => (fixer) => {
4160
4707
  const [first, last] = [
4161
- (0, import_ts_extras40.arrayFirst)(node.elements),
4162
- (0, import_ts_extras40.arrayAt)(node.elements, -1)
4708
+ (0, import_ts_extras43.arrayFirst)(node.elements),
4709
+ (0, import_ts_extras43.arrayAt)(node.elements, -1)
4163
4710
  ];
4164
- if (!(0, import_ts_extras40.isPresent)(first) || !(0, import_ts_extras40.isPresent)(last)) {
4711
+ if (!(0, import_ts_extras43.isPresent)(first) || !(0, import_ts_extras43.isPresent)(last)) {
4165
4712
  return fixer.replaceText(node, sourceCode.getText(node));
4166
4713
  }
4167
- return fixer.replaceTextRange([(0, import_ts_extras40.arrayFirst)(first.range), last.range[1]], (0, import_ts_extras40.arrayJoin)(sorted.map((element) => sourceCode.getText(element)), ", "));
4714
+ return fixer.replaceTextRange([(0, import_ts_extras43.arrayFirst)(first.range), last.range[1]], (0, import_ts_extras43.arrayJoin)(sorted.map((element) => sourceCode.getText(element)), ", "));
4168
4715
  };
4169
- var rule65 = ruleCreator({
4716
+ var rule68 = ruleCreator({
4170
4717
  create: (context) => ({
4171
4718
  ArrayExpression: (node) => {
4172
4719
  let elements = [];
@@ -4179,7 +4726,7 @@ var rule65 = ruleCreator({
4179
4726
  return;
4180
4727
  }
4181
4728
  const sortKeys = elements.map((element) => getSortableValue(element));
4182
- if (sortKeys.some((sortKey) => !(0, import_ts_extras40.isDefined)(sortKey))) {
4729
+ if (sortKeys.some((sortKey) => !(0, import_ts_extras43.isDefined)(sortKey))) {
4183
4730
  return;
4184
4731
  }
4185
4732
  const sorted = [...elements].sort((a, b) => (getSortableValue(a) ?? "").localeCompare(getSortableValue(b) ?? ""));
@@ -4213,11 +4760,11 @@ var rule65 = ruleCreator({
4213
4760
  },
4214
4761
  name: "sort-array"
4215
4762
  });
4216
- var sort_array_default = rule65;
4763
+ var sort_array_default = rule68;
4217
4764
 
4218
4765
  // dist/rules/sort-call-signature.js
4219
4766
  var disallowedSelector13 = "TSInterfaceBody > TSCallSignatureDeclaration:not(:first-child)";
4220
- var rule66 = ruleCreator({
4767
+ var rule69 = ruleCreator({
4221
4768
  create: (context) => ({
4222
4769
  [disallowedSelector13]: (node) => {
4223
4770
  context.report({
@@ -4244,10 +4791,10 @@ var rule66 = ruleCreator({
4244
4791
  },
4245
4792
  name: "sort-call-signature"
4246
4793
  });
4247
- var sort_call_signature_default = rule66;
4794
+ var sort_call_signature_default = rule69;
4248
4795
 
4249
4796
  // dist/rules/sort-class-members.js
4250
- var import_ts_extras41 = require("ts-extras");
4797
+ var import_ts_extras44 = require("ts-extras");
4251
4798
  var memberName = (member) => {
4252
4799
  if (member.key.type === "Identifier") {
4253
4800
  return member.key.name;
@@ -4257,7 +4804,7 @@ var memberName = (member) => {
4257
4804
  }
4258
4805
  return void 0;
4259
4806
  };
4260
- var rule67 = ruleCreator({
4807
+ var rule70 = ruleCreator({
4261
4808
  create: (context) => ({
4262
4809
  ClassBody: (node) => {
4263
4810
  let members = [];
@@ -4270,7 +4817,7 @@ var rule67 = ruleCreator({
4270
4817
  let hasPreviousName = false;
4271
4818
  for (const member of members) {
4272
4819
  const currentName = memberName(member);
4273
- if (!(0, import_ts_extras41.isDefined)(currentName)) {
4820
+ if (!(0, import_ts_extras44.isDefined)(currentName)) {
4274
4821
  continue;
4275
4822
  }
4276
4823
  if (hasPreviousName && currentName.localeCompare(previousName) < 0) {
@@ -4303,7 +4850,7 @@ var rule67 = ruleCreator({
4303
4850
  },
4304
4851
  name: "sort-class-members"
4305
4852
  });
4306
- var deprecatedRule19 = withDeprecatedRuleLifecycle(rule67, {
4853
+ var deprecatedRule19 = withDeprecatedRuleLifecycle(rule70, {
4307
4854
  message: "Deprecated in favor of sort-class-members/sort-class-members or perfectionist sorting rules.",
4308
4855
  replacedBy: [
4309
4856
  createReplacementRuleInfo({
@@ -4329,7 +4876,7 @@ var sort_class_members_default = deprecatedRule19;
4329
4876
 
4330
4877
  // dist/rules/sort-construct-signature.js
4331
4878
  var disallowedSelector14 = "TSInterfaceBody > TSConstructSignatureDeclaration:not(:first-child)";
4332
- var rule68 = ruleCreator({
4879
+ var rule71 = ruleCreator({
4333
4880
  create: (context) => ({
4334
4881
  [disallowedSelector14]: (node) => {
4335
4882
  context.report({
@@ -4356,17 +4903,17 @@ var rule68 = ruleCreator({
4356
4903
  },
4357
4904
  name: "sort-construct-signature"
4358
4905
  });
4359
- var sort_construct_signature_default = rule68;
4906
+ var sort_construct_signature_default = rule71;
4360
4907
 
4361
4908
  // dist/rules/sort-export-specifiers.js
4362
- var import_ts_extras42 = require("ts-extras");
4909
+ var import_ts_extras45 = require("ts-extras");
4363
4910
  var toName = (specifier) => specifier.exported.type === "Identifier" ? specifier.exported.name : specifier.exported.value;
4364
4911
  var buildFix3 = (fixer, node, sourceCode, sorted) => {
4365
- const startRange = (0, import_ts_extras42.arrayFirst)(node.specifiers)?.range ?? node.range;
4366
- const endRange = (0, import_ts_extras42.arrayLast)(node.specifiers)?.range ?? node.range;
4367
- return fixer.replaceTextRange([(0, import_ts_extras42.arrayFirst)(startRange), (0, import_ts_extras42.arrayLast)(endRange)], (0, import_ts_extras42.arrayJoin)(sorted.map((specifier) => sourceCode.getText(specifier)), ", "));
4912
+ const startRange = (0, import_ts_extras45.arrayFirst)(node.specifiers)?.range ?? node.range;
4913
+ const endRange = (0, import_ts_extras45.arrayLast)(node.specifiers)?.range ?? node.range;
4914
+ return fixer.replaceTextRange([(0, import_ts_extras45.arrayFirst)(startRange), (0, import_ts_extras45.arrayLast)(endRange)], (0, import_ts_extras45.arrayJoin)(sorted.map((specifier) => sourceCode.getText(specifier)), ", "));
4368
4915
  };
4369
- var rule69 = ruleCreator({
4916
+ var rule72 = ruleCreator({
4370
4917
  create: (context) => ({
4371
4918
  ExportNamedDeclaration: (node) => {
4372
4919
  let exportSpecifiers = [];
@@ -4409,10 +4956,10 @@ var rule69 = ruleCreator({
4409
4956
  },
4410
4957
  name: "sort-export-specifiers"
4411
4958
  });
4412
- var sort_export_specifiers_default = rule69;
4959
+ var sort_export_specifiers_default = rule72;
4413
4960
 
4414
4961
  // dist/rules/sort-keys.js
4415
- var import_ts_extras43 = require("ts-extras");
4962
+ var import_ts_extras46 = require("ts-extras");
4416
4963
  var keyName = (property) => {
4417
4964
  if (property.key.type === "Identifier") {
4418
4965
  return property.key.name;
@@ -4423,15 +4970,15 @@ var keyName = (property) => {
4423
4970
  return void 0;
4424
4971
  };
4425
4972
  var buildFix4 = (sourceCode, properties) => (fixer) => {
4426
- const first = (0, import_ts_extras43.arrayFirst)(properties);
4427
- const last = (0, import_ts_extras43.arrayLast)(properties);
4973
+ const first = (0, import_ts_extras46.arrayFirst)(properties);
4974
+ const last = (0, import_ts_extras46.arrayLast)(properties);
4428
4975
  if (first === void 0 || last === void 0) {
4429
4976
  return fixer.insertTextAfterRange([0, 0], "");
4430
4977
  }
4431
4978
  const sorted = [...properties].sort((a, b) => (keyName(a) ?? "").localeCompare(keyName(b) ?? ""));
4432
- return fixer.replaceTextRange([(0, import_ts_extras43.arrayFirst)(first.range), last.range[1]], (0, import_ts_extras43.arrayJoin)(sorted.map((property) => sourceCode.getText(property)), ", "));
4979
+ return fixer.replaceTextRange([(0, import_ts_extras46.arrayFirst)(first.range), last.range[1]], (0, import_ts_extras46.arrayJoin)(sorted.map((property) => sourceCode.getText(property)), ", "));
4433
4980
  };
4434
- var rule70 = ruleCreator({
4981
+ var rule73 = ruleCreator({
4435
4982
  create: (context) => ({
4436
4983
  ObjectExpression: (node) => {
4437
4984
  let properties = [];
@@ -4447,7 +4994,7 @@ var rule70 = ruleCreator({
4447
4994
  let hasPreviousName = false;
4448
4995
  for (const property of properties) {
4449
4996
  const currentName = keyName(property);
4450
- if (!(0, import_ts_extras43.isDefined)(currentName)) {
4997
+ if (!(0, import_ts_extras46.isDefined)(currentName)) {
4451
4998
  return;
4452
4999
  }
4453
5000
  if (hasPreviousName && currentName.localeCompare(previousName) < 0) {
@@ -4482,16 +5029,16 @@ var rule70 = ruleCreator({
4482
5029
  },
4483
5030
  name: "sort-keys"
4484
5031
  });
4485
- var sort_keys_default = rule70;
5032
+ var sort_keys_default = rule73;
4486
5033
 
4487
5034
  // dist/rules/sort-top-comments.js
4488
- var import_ts_extras44 = require("ts-extras");
5035
+ var import_ts_extras47 = require("ts-extras");
4489
5036
  var commentText = (comment) => comment.value.trim();
4490
- var buildReplacement = (sourceCode, comments) => (0, import_ts_extras44.arrayJoin)(comments.map((comment) => sourceCode.getText(comment)).sort((a, b) => a.localeCompare(b)), "\n");
4491
- var rule71 = ruleCreator({
5037
+ var buildReplacement = (sourceCode, comments) => (0, import_ts_extras47.arrayJoin)(comments.map((comment) => sourceCode.getText(comment)).sort((a, b) => a.localeCompare(b)), "\n");
5038
+ var rule74 = ruleCreator({
4492
5039
  create: (context) => ({
4493
5040
  Program: (node) => {
4494
- const firstNode = (0, import_ts_extras44.arrayFirst)(node.body);
5041
+ const firstNode = (0, import_ts_extras47.arrayFirst)(node.body);
4495
5042
  if (firstNode === void 0) {
4496
5043
  return;
4497
5044
  }
@@ -4499,18 +5046,18 @@ var rule71 = ruleCreator({
4499
5046
  if (comments.length < 2) {
4500
5047
  return;
4501
5048
  }
4502
- const firstComment = (0, import_ts_extras44.arrayFirst)(comments);
5049
+ const firstComment = (0, import_ts_extras47.arrayFirst)(comments);
4503
5050
  if (firstComment === void 0) {
4504
5051
  return;
4505
5052
  }
4506
- const lastComment = (0, import_ts_extras44.arrayLast)(comments) ?? firstComment;
5053
+ const lastComment = (0, import_ts_extras47.arrayLast)(comments) ?? firstComment;
4507
5054
  const sorted = [...comments].sort((a, b) => commentText(a).localeCompare(commentText(b)));
4508
5055
  const isSorted = comments.every((comment, index) => comment === sorted[index]);
4509
5056
  if (isSorted) {
4510
5057
  return;
4511
5058
  }
4512
5059
  context.report({
4513
- fix: (fixer) => fixer.replaceTextRange([(0, import_ts_extras44.arrayFirst)(firstComment.range), lastComment.range[1]], buildReplacement(context.sourceCode, comments)),
5060
+ fix: (fixer) => fixer.replaceTextRange([(0, import_ts_extras47.arrayFirst)(firstComment.range), lastComment.range[1]], buildReplacement(context.sourceCode, comments)),
4514
5061
  messageId: "incorrectSorting",
4515
5062
  node: firstComment
4516
5063
  });
@@ -4535,16 +5082,16 @@ var rule71 = ruleCreator({
4535
5082
  },
4536
5083
  name: "sort-top-comments"
4537
5084
  });
4538
- var sort_top_comments_default = rule71;
5085
+ var sort_top_comments_default = rule74;
4539
5086
 
4540
5087
  // dist/rules/switch-case-spacing.js
4541
- var import_ts_extras45 = require("ts-extras");
5088
+ var import_ts_extras48 = require("ts-extras");
4542
5089
  var isValidCaseBody = (node) => {
4543
5090
  if (node.consequent.length === 0) {
4544
5091
  return true;
4545
5092
  }
4546
5093
  const [firstStatement] = node.consequent;
4547
- const lastStatement = (0, import_ts_extras45.arrayLast)(node.consequent);
5094
+ const lastStatement = (0, import_ts_extras48.arrayLast)(node.consequent);
4548
5095
  if (firstStatement === void 0 || lastStatement === void 0) {
4549
5096
  return true;
4550
5097
  }
@@ -4553,7 +5100,7 @@ var isValidCaseBody = (node) => {
4553
5100
  const endsWithBreak = lastStatement.type === "BreakStatement" || startsWithBlock;
4554
5101
  return (startsOnFollowingLine || startsWithBlock) && endsWithBreak;
4555
5102
  };
4556
- var rule72 = ruleCreator({
5103
+ var rule75 = ruleCreator({
4557
5104
  create: (context) => ({
4558
5105
  SwitchCase: (node) => {
4559
5106
  if (isValidCaseBody(node)) {
@@ -4583,7 +5130,7 @@ var rule72 = ruleCreator({
4583
5130
  },
4584
5131
  name: "switch-case-spacing"
4585
5132
  });
4586
- var deprecatedRule20 = withDeprecatedRuleLifecycle(rule72, {
5133
+ var deprecatedRule20 = withDeprecatedRuleLifecycle(rule75, {
4587
5134
  message: "Deprecated in favor of @stylistic/switch-colon-spacing.",
4588
5135
  replacedBy: [
4589
5136
  createReplacementRuleInfo({
@@ -4602,22 +5149,22 @@ var deprecatedRule20 = withDeprecatedRuleLifecycle(rule72, {
4602
5149
  var switch_case_spacing_default = deprecatedRule20;
4603
5150
 
4604
5151
  // dist/rules/template-literal-format.js
4605
- var import_ts_extras46 = require("ts-extras");
5152
+ var import_ts_extras49 = require("ts-extras");
4606
5153
  var isMultilineTemplate = (node) => node.loc.start.line !== node.loc.end.line;
4607
5154
  var hasExpectedBoundaryNewlines = (node) => {
4608
- const first = (0, import_ts_extras46.arrayFirst)(node.quasis)?.value.raw ?? "";
4609
- const last = (0, import_ts_extras46.arrayLast)(node.quasis)?.value.raw ?? "";
5155
+ const first = (0, import_ts_extras49.arrayFirst)(node.quasis)?.value.raw ?? "";
5156
+ const last = (0, import_ts_extras49.arrayLast)(node.quasis)?.value.raw ?? "";
4610
5157
  return first.startsWith("\n") && last.endsWith("\n");
4611
5158
  };
4612
5159
  var normalizeTemplate = (sourceText) => {
4613
- const lines = (0, import_ts_extras46.stringSplit)(sourceText.replaceAll(/\r\n?/gu, "\n"), "\n");
5160
+ const lines = (0, import_ts_extras49.stringSplit)(sourceText.replaceAll(/\r\n?/gu, "\n"), "\n");
4614
5161
  const contentLines = lines.slice(1, -1);
4615
5162
  const indents = contentLines.filter((line) => line.trim().length > 0).map((line) => /^\s*/u.exec(line)?.[0].length ?? 0);
4616
- const minIndent = (0, import_ts_extras46.isEmpty)(indents) ? 0 : Math.min(...indents);
4617
- const normalizedContent = (0, import_ts_extras46.arrayJoin)(contentLines.map((line) => line.length >= minIndent ? line.slice(minIndent) : line).map((line) => ` ${line}`), "\n");
4618
- const lastLine = (0, import_ts_extras46.arrayLast)(lines) ?? "";
4619
- return (0, import_ts_extras46.arrayJoin)([
4620
- (0, import_ts_extras46.arrayFirst)(lines),
5163
+ const minIndent = (0, import_ts_extras49.isEmpty)(indents) ? 0 : Math.min(...indents);
5164
+ const normalizedContent = (0, import_ts_extras49.arrayJoin)(contentLines.map((line) => line.length >= minIndent ? line.slice(minIndent) : line).map((line) => ` ${line}`), "\n");
5165
+ const lastLine = (0, import_ts_extras49.arrayLast)(lines) ?? "";
5166
+ return (0, import_ts_extras49.arrayJoin)([
5167
+ (0, import_ts_extras49.arrayFirst)(lines),
4621
5168
  normalizedContent,
4622
5169
  lastLine
4623
5170
  ], "\n");
@@ -4626,7 +5173,7 @@ var buildFix5 = (sourceCode, node) => (fixer) => {
4626
5173
  const text = sourceCode.getText(node);
4627
5174
  return fixer.replaceText(node, normalizeTemplate(text));
4628
5175
  };
4629
- var rule73 = ruleCreator({
5176
+ var rule76 = ruleCreator({
4630
5177
  create: (context) => ({
4631
5178
  TemplateLiteral: (node) => {
4632
5179
  if (!isMultilineTemplate(node) || hasExpectedBoundaryNewlines(node)) {
@@ -4658,12 +5205,12 @@ var rule73 = ruleCreator({
4658
5205
  },
4659
5206
  name: "template-literal-format"
4660
5207
  });
4661
- var template_literal_format_default = rule73;
5208
+ var template_literal_format_default = rule76;
4662
5209
 
4663
5210
  // dist/rules/throw-error.js
4664
5211
  var import_type_utils6 = require("@typescript-eslint/type-utils");
4665
5212
  var import_utils9 = require("@typescript-eslint/utils");
4666
- var import_ts_extras47 = require("ts-extras");
5213
+ var import_ts_extras50 = require("ts-extras");
4667
5214
  var tsutils3 = __toESM(require("tsutils"), 1);
4668
5215
  var isAllowedThrowableVariant = (type, program) => (0, import_type_utils6.isTypeAnyType)(type) || (0, import_type_utils6.isTypeUnknownType)(type) || (0, import_type_utils6.isErrorLike)(program, type);
4669
5216
  var couldBeAllowedThrowableType = (type, program) => tsutils3.unionTypeParts(type).every((typeVariant) => isAllowedThrowableVariant(typeVariant, program));
@@ -4675,7 +5222,7 @@ var createWrapLiteralInErrorSuggestionFix = (sourceCode, node) => {
4675
5222
  }
4676
5223
  return (fixer) => fixer.replaceText(node, `new Error(${sourceCode.getText(node)})`);
4677
5224
  };
4678
- var rule74 = ruleCreator({
5225
+ var rule77 = ruleCreator({
4679
5226
  create: (context) => {
4680
5227
  const parserServices = import_utils9.ESLintUtils.getParserServices(context);
4681
5228
  const sourceCode = context.sourceCode;
@@ -4701,7 +5248,7 @@ var rule74 = ruleCreator({
4701
5248
  });
4702
5249
  };
4703
5250
  const checkRejectionCall = (callExpression) => {
4704
- const rejectionValue = (0, import_ts_extras47.arrayFirst)(callExpression.arguments);
5251
+ const rejectionValue = (0, import_ts_extras50.arrayFirst)(callExpression.arguments);
4705
5252
  if (rejectionValue === void 0) {
4706
5253
  return;
4707
5254
  }
@@ -4724,8 +5271,8 @@ var rule74 = ruleCreator({
4724
5271
  if (rejectParameter?.type !== "Identifier") {
4725
5272
  return;
4726
5273
  }
4727
- const rejectVariable = (0, import_ts_extras47.arrayFirst)(context.sourceCode.getDeclaredVariables(callback).filter((declaredVariable) => declaredVariable.name === rejectParameter.name));
4728
- if (!(0, import_ts_extras47.isDefined)(rejectVariable)) {
5274
+ const rejectVariable = (0, import_ts_extras50.arrayFirst)(context.sourceCode.getDeclaredVariables(callback).filter((declaredVariable) => declaredVariable.name === rejectParameter.name));
5275
+ if (!(0, import_ts_extras50.isDefined)(rejectVariable)) {
4729
5276
  return;
4730
5277
  }
4731
5278
  for (const reference of rejectVariable.references) {
@@ -4765,12 +5312,12 @@ var rule74 = ruleCreator({
4765
5312
  },
4766
5313
  name: "throw-error"
4767
5314
  });
4768
- var throw_error_default = rule74;
5315
+ var throw_error_default = rule77;
4769
5316
 
4770
5317
  // dist/rules/throw-new-error.js
4771
5318
  var import_eslint_plugin_unicorn2 = __toESM(require("eslint-plugin-unicorn"), 1);
4772
- var rule75 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn2.default, "throw-new-error", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/throw-new-error");
4773
- var deprecatedRule21 = withDeprecatedRuleLifecycle(rule75, {
5319
+ var rule78 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn2.default, "throw-new-error", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/throw-new-error");
5320
+ var deprecatedRule21 = withDeprecatedRuleLifecycle(rule78, {
4774
5321
  message: "Deprecated in favor of unicorn/throw-new-error.",
4775
5322
  replacedBy: [
4776
5323
  createReplacementRuleInfo({
@@ -4791,7 +5338,7 @@ var throw_new_error_default = deprecatedRule21;
4791
5338
  // dist/rules/typescript-array-callback-return-type.js
4792
5339
  var import_type_utils7 = require("@typescript-eslint/type-utils");
4793
5340
  var import_utils10 = require("@typescript-eslint/utils");
4794
- var import_ts_extras48 = require("ts-extras");
5341
+ var import_ts_extras51 = require("ts-extras");
4795
5342
  var arrayCallbackMethodNames = /* @__PURE__ */ new Set([
4796
5343
  "every",
4797
5344
  "find",
@@ -4809,8 +5356,8 @@ var isArrayLikeType2 = (typeChecker, type) => {
4809
5356
  const apparentType = typeChecker.getApparentType(type);
4810
5357
  return typeChecker.isArrayType(apparentType) || typeChecker.isTupleType(apparentType) || (0, import_type_utils7.isTypeArrayTypeOrUnionOfArrayTypes)(type, typeChecker) || (0, import_type_utils7.containsAllTypesByName)(type, false, readonlyArrayTypeNames2, true);
4811
5358
  };
4812
- var isFirstCallbackArgument = (callExpression, callback) => (0, import_ts_extras48.arrayFirst)(callExpression.arguments) === callback;
4813
- var rule76 = ruleCreator({
5359
+ var isFirstCallbackArgument = (callExpression, callback) => (0, import_ts_extras51.arrayFirst)(callExpression.arguments) === callback;
5360
+ var rule79 = ruleCreator({
4814
5361
  create: (context) => {
4815
5362
  const parserServices = import_utils10.ESLintUtils.getParserServices(context);
4816
5363
  const typeChecker = parserServices.program.getTypeChecker();
@@ -4824,7 +5371,7 @@ var rule76 = ruleCreator({
4824
5371
  return;
4825
5372
  }
4826
5373
  const { callee } = parentNode;
4827
- if (callee.type !== "MemberExpression" || callee.object.type === "Super" || callee.property.type !== "Identifier" || !(0, import_ts_extras48.setHas)(arrayCallbackMethodNames, callee.property.name)) {
5374
+ if (callee.type !== "MemberExpression" || callee.object.type === "Super" || callee.property.type !== "Identifier" || !(0, import_ts_extras51.setHas)(arrayCallbackMethodNames, callee.property.name)) {
4828
5375
  return;
4829
5376
  }
4830
5377
  const objectType = (0, import_type_utils7.getConstrainedTypeAtLocation)(parserServices, callee.object);
@@ -4857,11 +5404,11 @@ var rule76 = ruleCreator({
4857
5404
  },
4858
5405
  name: "typescript/array-callback-return-type"
4859
5406
  });
4860
- var typescript_array_callback_return_type_default = rule76;
5407
+ var typescript_array_callback_return_type_default = rule79;
4861
5408
 
4862
5409
  // dist/rules/typescript-class-methods-use-this.js
4863
- var import_ts_extras49 = require("ts-extras");
4864
- var isNode = (value) => typeof value === "object" && value !== null && (0, import_ts_extras49.objectHasOwn)(value, "type");
5410
+ var import_ts_extras52 = require("ts-extras");
5411
+ var isNode = (value) => typeof value === "object" && value !== null && (0, import_ts_extras52.objectHasOwn)(value, "type");
4865
5412
  var collectNodeChildren = (node) => {
4866
5413
  let children = [];
4867
5414
  const addNode = (value) => {
@@ -4869,7 +5416,7 @@ var collectNodeChildren = (node) => {
4869
5416
  children = [...children, value];
4870
5417
  }
4871
5418
  };
4872
- for (const [key, child] of (0, import_ts_extras49.objectEntries)(node)) {
5419
+ for (const [key, child] of (0, import_ts_extras52.objectEntries)(node)) {
4873
5420
  if (key === "loc" || key === "parent" || key === "range") {
4874
5421
  continue;
4875
5422
  }
@@ -4886,7 +5433,7 @@ var collectNodeChildren = (node) => {
4886
5433
  var containsThisExpression = (root) => {
4887
5434
  let stack = [root];
4888
5435
  while (stack.length > 0) {
4889
- const node = (0, import_ts_extras49.arrayAt)(stack, -1);
5436
+ const node = (0, import_ts_extras52.arrayAt)(stack, -1);
4890
5437
  stack = stack.slice(0, -1);
4891
5438
  if (node === void 0) {
4892
5439
  continue;
@@ -4904,7 +5451,7 @@ var hasThisParameter = (node) => {
4904
5451
  };
4905
5452
  var usesThisExpression = (node) => node.value.body === null ? false : containsThisExpression(node.value.body);
4906
5453
  var shouldSkipMethod = (node) => node.kind !== "method" || node.static || node.value.body === null || hasThisParameter(node) || usesThisExpression(node);
4907
- var rule77 = ruleCreator({
5454
+ var rule80 = ruleCreator({
4908
5455
  create: (context) => ({
4909
5456
  MethodDefinition: (node) => {
4910
5457
  if (shouldSkipMethod(node)) {
@@ -4934,7 +5481,7 @@ var rule77 = ruleCreator({
4934
5481
  },
4935
5482
  name: "typescript/class-methods-use-this"
4936
5483
  });
4937
- var deprecatedRule22 = withDeprecatedRuleLifecycle(rule77, {
5484
+ var deprecatedRule22 = withDeprecatedRuleLifecycle(rule80, {
4938
5485
  message: "Deprecated in favor of @typescript-eslint/class-methods-use-this.",
4939
5486
  replacedBy: [
4940
5487
  createReplacementRuleInfo({
@@ -4954,7 +5501,7 @@ var typescript_class_methods_use_this_default = deprecatedRule22;
4954
5501
 
4955
5502
  // dist/rules/typescript-consistent-array-type-name.js
4956
5503
  var selector5 = String.raw`:matches(TSTypeAliasDeclaration[typeAnnotation.type='TSArrayType'], TSTypeAliasDeclaration[typeAnnotation.type='TSTupleType'], TSTypeAliasDeclaration[typeAnnotation.type='TSTypeReference']:has(TSTypeReference > Identifier[name='Array'])) > Identifier.id:not([name=/^(?:[A-Z][a-z\d]*)+(?:Array|s)$/u])`;
4957
- var rule78 = ruleCreator({
5504
+ var rule81 = ruleCreator({
4958
5505
  create: (context) => ({
4959
5506
  [selector5]: (node) => {
4960
5507
  context.report({
@@ -4981,11 +5528,11 @@ var rule78 = ruleCreator({
4981
5528
  },
4982
5529
  name: "typescript/consistent-array-type-name"
4983
5530
  });
4984
- var typescript_consistent_array_type_name_default = rule78;
5531
+ var typescript_consistent_array_type_name_default = rule81;
4985
5532
 
4986
5533
  // dist/rules/typescript-define-function-in-one-statement.js
4987
5534
  var selector6 = "AssignmentExpression > MemberExpression.left > Identifier.object";
4988
- var rule79 = ruleCreator({
5535
+ var rule82 = ruleCreator({
4989
5536
  create: (context) => ({
4990
5537
  [selector6]: (node) => {
4991
5538
  context.report({
@@ -5012,11 +5559,11 @@ var rule79 = ruleCreator({
5012
5559
  },
5013
5560
  name: "typescript/define-function-in-one-statement"
5014
5561
  });
5015
- var typescript_define_function_in_one_statement_default = rule79;
5562
+ var typescript_define_function_in_one_statement_default = rule82;
5016
5563
 
5017
5564
  // dist/rules/typescript-exhaustive-switch.js
5018
5565
  var selector7 = "SwitchStatement[cases.length>1]:not(:has(SwitchCase[test=null]))";
5019
- var rule80 = ruleCreator({
5566
+ var rule83 = ruleCreator({
5020
5567
  create: (context) => ({
5021
5568
  [selector7]: (node) => {
5022
5569
  context.report({
@@ -5043,7 +5590,7 @@ var rule80 = ruleCreator({
5043
5590
  },
5044
5591
  name: "typescript/exhaustive-switch"
5045
5592
  });
5046
- var deprecatedRule23 = withDeprecatedRuleLifecycle(rule80, {
5593
+ var deprecatedRule23 = withDeprecatedRuleLifecycle(rule83, {
5047
5594
  message: "Deprecated in favor of @typescript-eslint/switch-exhaustiveness-check.",
5048
5595
  replacedBy: [
5049
5596
  createReplacementRuleInfo({
@@ -5062,12 +5609,12 @@ var deprecatedRule23 = withDeprecatedRuleLifecycle(rule80, {
5062
5609
  var typescript_exhaustive_switch_default = deprecatedRule23;
5063
5610
 
5064
5611
  // dist/rules/typescript-no-boolean-literal-type.js
5065
- var import_ts_extras50 = require("ts-extras");
5066
- var selector8 = (0, import_ts_extras50.arrayJoin)([
5612
+ var import_ts_extras53 = require("ts-extras");
5613
+ var selector8 = (0, import_ts_extras53.arrayJoin)([
5067
5614
  "TSPropertySignature[optional=true] > TSTypeAnnotation > TSLiteralType > Literal[value=true]",
5068
5615
  "TSPropertySignature[optional=true] > TSTypeAnnotation > TSLiteralType > Literal[value=false]"
5069
5616
  ], ", ");
5070
- var rule81 = ruleCreator({
5617
+ var rule84 = ruleCreator({
5071
5618
  create: (context) => ({
5072
5619
  [selector8]: (node) => {
5073
5620
  if (node.type !== "Literal") {
@@ -5099,11 +5646,11 @@ var rule81 = ruleCreator({
5099
5646
  },
5100
5647
  name: "typescript/no-boolean-literal-type"
5101
5648
  });
5102
- var typescript_no_boolean_literal_type_default = rule81;
5649
+ var typescript_no_boolean_literal_type_default = rule84;
5103
5650
 
5104
5651
  // dist/rules/typescript-no-complex-declarator-type.js
5105
5652
  var selector9 = "VariableDeclarator:not([id.typeAnnotation], [init.expression.properties.length=0]) > Identifier.id";
5106
- var rule82 = ruleCreator({
5653
+ var rule85 = ruleCreator({
5107
5654
  create: (context) => ({
5108
5655
  [selector9]: (node) => {
5109
5656
  context.report({
@@ -5130,11 +5677,11 @@ var rule82 = ruleCreator({
5130
5677
  },
5131
5678
  name: "typescript/no-complex-declarator-type"
5132
5679
  });
5133
- var typescript_no_complex_declarator_type_default = rule82;
5680
+ var typescript_no_complex_declarator_type_default = rule85;
5134
5681
 
5135
5682
  // dist/rules/typescript-no-complex-return-type.js
5136
5683
  var selector10 = "ArrowFunctionExpression[returnType=undefined] > :matches(TSAsExpression, TSTypeAssertion) > :matches(FunctionExpression, ArrowFunctionExpression, ObjectExpression, ClassExpression)";
5137
- var rule83 = ruleCreator({
5684
+ var rule86 = ruleCreator({
5138
5685
  create: (context) => ({
5139
5686
  [selector10]: (node) => {
5140
5687
  context.report({
@@ -5161,11 +5708,11 @@ var rule83 = ruleCreator({
5161
5708
  },
5162
5709
  name: "typescript/no-complex-return-type"
5163
5710
  });
5164
- var typescript_no_complex_return_type_default = rule83;
5711
+ var typescript_no_complex_return_type_default = rule86;
5165
5712
 
5166
5713
  // dist/rules/typescript-no-empty-interfaces.js
5167
5714
  var selector11 = "TSInterfaceDeclaration[body.body.length=0][extends.length=0] > Identifier.id";
5168
- var rule84 = ruleCreator({
5715
+ var rule87 = ruleCreator({
5169
5716
  create: (context) => ({
5170
5717
  [selector11]: (node) => {
5171
5718
  context.report({
@@ -5192,7 +5739,7 @@ var rule84 = ruleCreator({
5192
5739
  },
5193
5740
  name: "typescript/no-empty-interfaces"
5194
5741
  });
5195
- var deprecatedRule24 = withDeprecatedRuleLifecycle(rule84, {
5742
+ var deprecatedRule24 = withDeprecatedRuleLifecycle(rule87, {
5196
5743
  message: "Deprecated in favor of @typescript-eslint/no-empty-object-type.",
5197
5744
  replacedBy: [
5198
5745
  createReplacementRuleInfo({
@@ -5211,12 +5758,12 @@ var deprecatedRule24 = withDeprecatedRuleLifecycle(rule84, {
5211
5758
  var typescript_no_empty_interfaces_default = deprecatedRule24;
5212
5759
 
5213
5760
  // dist/rules/typescript-no-inferrable-types.js
5214
- var import_ts_extras51 = require("ts-extras");
5215
- var selector12 = (0, import_ts_extras51.arrayJoin)([
5761
+ var import_ts_extras54 = require("ts-extras");
5762
+ var selector12 = (0, import_ts_extras54.arrayJoin)([
5216
5763
  "PropertyDefinition[value.type='Literal'] > TSTypeAnnotation",
5217
5764
  "VariableDeclarator[init.type='Literal'] > Identifier.id > TSTypeAnnotation"
5218
5765
  ], ", ");
5219
- var rule85 = ruleCreator({
5766
+ var rule88 = ruleCreator({
5220
5767
  create: (context) => ({
5221
5768
  [selector12]: (node) => {
5222
5769
  context.report({
@@ -5243,7 +5790,7 @@ var rule85 = ruleCreator({
5243
5790
  },
5244
5791
  name: "typescript/no-inferrable-types"
5245
5792
  });
5246
- var deprecatedRule25 = withDeprecatedRuleLifecycle(rule85, {
5793
+ var deprecatedRule25 = withDeprecatedRuleLifecycle(rule88, {
5247
5794
  message: "Deprecated in favor of @typescript-eslint/no-inferrable-types.",
5248
5795
  replacedBy: [
5249
5796
  createReplacementRuleInfo({
@@ -5263,7 +5810,7 @@ var typescript_no_inferrable_types_default = deprecatedRule25;
5263
5810
 
5264
5811
  // dist/rules/typescript-no-multi-type-tuples.js
5265
5812
  var selector13 = "TSTupleType > TSUnionType:not([types.length=1])";
5266
- var rule86 = ruleCreator({
5813
+ var rule89 = ruleCreator({
5267
5814
  create: (context) => ({
5268
5815
  [selector13]: (node) => {
5269
5816
  context.report({
@@ -5290,13 +5837,13 @@ var rule86 = ruleCreator({
5290
5837
  },
5291
5838
  name: "typescript/no-multi-type-tuples"
5292
5839
  });
5293
- var typescript_no_multi_type_tuples_default = rule86;
5840
+ var typescript_no_multi_type_tuples_default = rule89;
5294
5841
 
5295
5842
  // dist/rules/typescript-no-never.js
5296
5843
  var import_type_utils8 = require("@typescript-eslint/type-utils");
5297
5844
  var import_utils11 = require("@typescript-eslint/utils");
5298
5845
  var isTypeAliasNeverIdentifier = (node) => node.parent.type === "TSTypeAliasDeclaration" && node.parent.id === node && node.parent.typeAnnotation.type === "TSNeverKeyword";
5299
- var rule87 = ruleCreator({
5846
+ var rule90 = ruleCreator({
5300
5847
  create: (context) => {
5301
5848
  const parserServices = import_utils11.ESLintUtils.getParserServices(context);
5302
5849
  return {
@@ -5334,10 +5881,10 @@ var rule87 = ruleCreator({
5334
5881
  },
5335
5882
  name: "typescript/no-never"
5336
5883
  });
5337
- var typescript_no_never_default = rule87;
5884
+ var typescript_no_never_default = rule90;
5338
5885
 
5339
5886
  // dist/rules/typescript-no-redundant-undefined-const.js
5340
- var import_ts_extras52 = require("ts-extras");
5887
+ var import_ts_extras55 = require("ts-extras");
5341
5888
  var buildFixedTypeText = (sourceCode, unionType) => {
5342
5889
  let nonUndefinedTypeTexts = [];
5343
5890
  for (const typeNode of unionType.types) {
@@ -5349,10 +5896,10 @@ var buildFixedTypeText = (sourceCode, unionType) => {
5349
5896
  sourceCode.getText(typeNode)
5350
5897
  ];
5351
5898
  }
5352
- if ((0, import_ts_extras52.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5899
+ if ((0, import_ts_extras55.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5353
5900
  return void 0;
5354
5901
  }
5355
- return (0, import_ts_extras52.arrayJoin)(nonUndefinedTypeTexts, " | ");
5902
+ return (0, import_ts_extras55.arrayJoin)(nonUndefinedTypeTexts, " | ");
5356
5903
  };
5357
5904
  var getTypeAnnotationFromDeclarator = (declarator) => {
5358
5905
  if (declarator.id.type === "Identifier" || declarator.id.type === "ArrayPattern" || declarator.id.type === "ObjectPattern") {
@@ -5360,14 +5907,14 @@ var getTypeAnnotationFromDeclarator = (declarator) => {
5360
5907
  }
5361
5908
  return void 0;
5362
5909
  };
5363
- var unwrapExpression = (expression) => {
5910
+ var unwrapExpression2 = (expression) => {
5364
5911
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
5365
- return unwrapExpression(expression.expression);
5912
+ return unwrapExpression2(expression.expression);
5366
5913
  }
5367
5914
  return expression;
5368
5915
  };
5369
5916
  var isDefinitelyDefinedExpression = (expression) => {
5370
- const unwrappedExpression = unwrapExpression(expression);
5917
+ const unwrappedExpression = unwrapExpression2(expression);
5371
5918
  if (unwrappedExpression.type === "ArrayExpression") {
5372
5919
  return true;
5373
5920
  }
@@ -5394,7 +5941,7 @@ var isDefinitelyDefinedExpression = (expression) => {
5394
5941
  }
5395
5942
  return false;
5396
5943
  };
5397
- var rule88 = ruleCreator({
5944
+ var rule91 = ruleCreator({
5398
5945
  create: (context) => {
5399
5946
  const sourceCode = context.sourceCode;
5400
5947
  return {
@@ -5416,7 +5963,7 @@ var rule88 = ruleCreator({
5416
5963
  return;
5417
5964
  }
5418
5965
  const fixedTypeText = buildFixedTypeText(sourceCode, typeAnnotation.typeAnnotation);
5419
- if (!(0, import_ts_extras52.isDefined)(fixedTypeText)) {
5966
+ if (!(0, import_ts_extras55.isDefined)(fixedTypeText)) {
5420
5967
  return;
5421
5968
  }
5422
5969
  const fix = (fixer) => fixer.replaceText(typeAnnotation.typeAnnotation, fixedTypeText);
@@ -5454,10 +6001,10 @@ var rule88 = ruleCreator({
5454
6001
  },
5455
6002
  name: "typescript/no-redundant-undefined-const"
5456
6003
  });
5457
- var typescript_no_redundant_undefined_const_default = rule88;
6004
+ var typescript_no_redundant_undefined_const_default = rule91;
5458
6005
 
5459
6006
  // dist/rules/typescript-no-redundant-undefined-default-parameter.js
5460
- var import_ts_extras53 = require("ts-extras");
6007
+ var import_ts_extras56 = require("ts-extras");
5461
6008
  var functionLikeNodeSelector = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
5462
6009
  var getParametersFromFunctionLikeNode = (node) => {
5463
6010
  if (node.type === "ArrowFunctionExpression" || node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "TSCallSignatureDeclaration" || node.type === "TSConstructSignatureDeclaration" || node.type === "TSConstructorType" || node.type === "TSDeclareFunction" || node.type === "TSEmptyBodyFunctionExpression" || node.type === "TSFunctionType" || node.type === "TSMethodSignature") {
@@ -5486,14 +6033,14 @@ var getTypeAnnotationFromAssignmentPattern = (assignmentPattern) => {
5486
6033
  }
5487
6034
  return assignmentPattern.left.typeAnnotation;
5488
6035
  };
5489
- var unwrapExpression2 = (expression) => {
6036
+ var unwrapExpression3 = (expression) => {
5490
6037
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
5491
- return unwrapExpression2(expression.expression);
6038
+ return unwrapExpression3(expression.expression);
5492
6039
  }
5493
6040
  return expression;
5494
6041
  };
5495
6042
  var isDefinitelyDefinedExpression2 = (expression) => {
5496
- const unwrappedExpression = unwrapExpression2(expression);
6043
+ const unwrappedExpression = unwrapExpression3(expression);
5497
6044
  if (unwrappedExpression.type === "ArrayExpression") {
5498
6045
  return true;
5499
6046
  }
@@ -5531,12 +6078,12 @@ var buildFixedTypeText2 = (sourceCode, unionType) => {
5531
6078
  sourceCode.getText(typeNode)
5532
6079
  ];
5533
6080
  }
5534
- if ((0, import_ts_extras53.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6081
+ if ((0, import_ts_extras56.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5535
6082
  return void 0;
5536
6083
  }
5537
- return (0, import_ts_extras53.arrayJoin)(nonUndefinedTypeTexts, " | ");
6084
+ return (0, import_ts_extras56.arrayJoin)(nonUndefinedTypeTexts, " | ");
5538
6085
  };
5539
- var rule89 = ruleCreator({
6086
+ var rule92 = ruleCreator({
5540
6087
  create: (context) => {
5541
6088
  const sourceCode = context.sourceCode;
5542
6089
  return {
@@ -5561,7 +6108,7 @@ var rule89 = ruleCreator({
5561
6108
  continue;
5562
6109
  }
5563
6110
  const fixedTypeText = buildFixedTypeText2(sourceCode, typeAnnotation.typeAnnotation);
5564
- if (!(0, import_ts_extras53.isDefined)(fixedTypeText)) {
6111
+ if (!(0, import_ts_extras56.isDefined)(fixedTypeText)) {
5565
6112
  continue;
5566
6113
  }
5567
6114
  const fix = (fixer) => fixer.replaceText(typeAnnotation.typeAnnotation, fixedTypeText);
@@ -5600,10 +6147,10 @@ var rule89 = ruleCreator({
5600
6147
  },
5601
6148
  name: "typescript/no-redundant-undefined-default-parameter"
5602
6149
  });
5603
- var typescript_no_redundant_undefined_default_parameter_default = rule89;
6150
+ var typescript_no_redundant_undefined_default_parameter_default = rule92;
5604
6151
 
5605
6152
  // dist/rules/typescript-no-redundant-undefined-let.js
5606
- var import_ts_extras54 = require("ts-extras");
6153
+ var import_ts_extras57 = require("ts-extras");
5607
6154
  var buildFixedTypeText3 = (sourceCode, unionType) => {
5608
6155
  let nonUndefinedTypeTexts = [];
5609
6156
  for (const typeNode of unionType.types) {
@@ -5615,19 +6162,19 @@ var buildFixedTypeText3 = (sourceCode, unionType) => {
5615
6162
  sourceCode.getText(typeNode)
5616
6163
  ];
5617
6164
  }
5618
- if ((0, import_ts_extras54.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6165
+ if ((0, import_ts_extras57.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5619
6166
  return void 0;
5620
6167
  }
5621
- return (0, import_ts_extras54.arrayJoin)(nonUndefinedTypeTexts, " | ");
6168
+ return (0, import_ts_extras57.arrayJoin)(nonUndefinedTypeTexts, " | ");
5622
6169
  };
5623
- var unwrapExpression3 = (expression) => {
6170
+ var unwrapExpression4 = (expression) => {
5624
6171
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
5625
- return unwrapExpression3(expression.expression);
6172
+ return unwrapExpression4(expression.expression);
5626
6173
  }
5627
6174
  return expression;
5628
6175
  };
5629
6176
  var isDefinitelyDefinedExpression3 = (expression) => {
5630
- const unwrappedExpression = unwrapExpression3(expression);
6177
+ const unwrappedExpression = unwrapExpression4(expression);
5631
6178
  if (unwrappedExpression.type === "ArrayExpression") {
5632
6179
  return true;
5633
6180
  }
@@ -5661,7 +6208,7 @@ var isNeverReassigned = (sourceCode, declarator) => {
5661
6208
  }
5662
6209
  return !declaredVariable.references.some((reference) => reference.isWrite() && reference.init !== true);
5663
6210
  };
5664
- var rule90 = ruleCreator({
6211
+ var rule93 = ruleCreator({
5665
6212
  create: (context) => {
5666
6213
  const sourceCode = context.sourceCode;
5667
6214
  return {
@@ -5688,7 +6235,7 @@ var rule90 = ruleCreator({
5688
6235
  return;
5689
6236
  }
5690
6237
  const fixedTypeText = buildFixedTypeText3(sourceCode, typeAnnotation.typeAnnotation);
5691
- if (!(0, import_ts_extras54.isDefined)(fixedTypeText)) {
6238
+ if (!(0, import_ts_extras57.isDefined)(fixedTypeText)) {
5692
6239
  return;
5693
6240
  }
5694
6241
  const fix = (fixer) => fixer.replaceText(typeAnnotation.typeAnnotation, fixedTypeText);
@@ -5726,11 +6273,11 @@ var rule90 = ruleCreator({
5726
6273
  },
5727
6274
  name: "typescript/no-redundant-undefined-let"
5728
6275
  });
5729
- var typescript_no_redundant_undefined_let_default = rule90;
6276
+ var typescript_no_redundant_undefined_let_default = rule93;
5730
6277
 
5731
6278
  // dist/rules/typescript-no-redundant-undefined-optional.js
5732
- var import_ts_extras55 = require("ts-extras");
5733
- var selector14 = (0, import_ts_extras55.arrayJoin)([
6279
+ var import_ts_extras58 = require("ts-extras");
6280
+ var selector14 = (0, import_ts_extras58.arrayJoin)([
5734
6281
  "Identifier[optional=true] > TSTypeAnnotation > TSUnionType",
5735
6282
  "TSNamedTupleMember[optional=true] > TSUnionType",
5736
6283
  "TSOptionalType > TSUnionType"
@@ -5746,12 +6293,12 @@ var buildFixedTypeText4 = (sourceCode, unionType) => {
5746
6293
  sourceCode.getText(typeNode)
5747
6294
  ];
5748
6295
  }
5749
- if ((0, import_ts_extras55.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6296
+ if ((0, import_ts_extras58.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5750
6297
  return void 0;
5751
6298
  }
5752
- return (0, import_ts_extras55.arrayJoin)(nonUndefinedTypeTexts, " | ");
6299
+ return (0, import_ts_extras58.arrayJoin)(nonUndefinedTypeTexts, " | ");
5753
6300
  };
5754
- var rule91 = ruleCreator({
6301
+ var rule94 = ruleCreator({
5755
6302
  create: (context) => {
5756
6303
  const sourceCode = context.sourceCode;
5757
6304
  return {
@@ -5760,7 +6307,7 @@ var rule91 = ruleCreator({
5760
6307
  return;
5761
6308
  }
5762
6309
  const fixedTypeText = buildFixedTypeText4(sourceCode, node);
5763
- if (!(0, import_ts_extras55.isDefined)(fixedTypeText)) {
6310
+ if (!(0, import_ts_extras58.isDefined)(fixedTypeText)) {
5764
6311
  return;
5765
6312
  }
5766
6313
  const fix = (fixer) => fixer.replaceText(node, fixedTypeText);
@@ -5798,10 +6345,10 @@ var rule91 = ruleCreator({
5798
6345
  },
5799
6346
  name: "typescript/no-redundant-undefined-optional"
5800
6347
  });
5801
- var typescript_no_redundant_undefined_optional_default = rule91;
6348
+ var typescript_no_redundant_undefined_optional_default = rule94;
5802
6349
 
5803
6350
  // dist/rules/typescript-no-redundant-undefined-promise-return-type.js
5804
- var import_ts_extras56 = require("ts-extras");
6351
+ var import_ts_extras59 = require("ts-extras");
5805
6352
  var buildFixedTypeText5 = (sourceCode, unionType) => {
5806
6353
  let nonUndefinedTypeTexts = [];
5807
6354
  for (const typeNode of unionType.types) {
@@ -5813,19 +6360,19 @@ var buildFixedTypeText5 = (sourceCode, unionType) => {
5813
6360
  sourceCode.getText(typeNode)
5814
6361
  ];
5815
6362
  }
5816
- if ((0, import_ts_extras56.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6363
+ if ((0, import_ts_extras59.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5817
6364
  return void 0;
5818
6365
  }
5819
- return (0, import_ts_extras56.arrayJoin)(nonUndefinedTypeTexts, " | ");
6366
+ return (0, import_ts_extras59.arrayJoin)(nonUndefinedTypeTexts, " | ");
5820
6367
  };
5821
- var unwrapExpression4 = (expression) => {
6368
+ var unwrapExpression5 = (expression) => {
5822
6369
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
5823
- return unwrapExpression4(expression.expression);
6370
+ return unwrapExpression5(expression.expression);
5824
6371
  }
5825
6372
  return expression;
5826
6373
  };
5827
6374
  var isDefinitelyDefinedExpression4 = (expression) => {
5828
- const unwrappedExpression = unwrapExpression4(expression);
6375
+ const unwrappedExpression = unwrapExpression5(expression);
5829
6376
  if (unwrappedExpression.type === "ArrayExpression") {
5830
6377
  return true;
5831
6378
  }
@@ -5854,7 +6401,7 @@ var isDefinitelyDefinedExpression4 = (expression) => {
5854
6401
  return true;
5855
6402
  }
5856
6403
  if (unwrappedExpression.type === "SequenceExpression") {
5857
- const lastExpression = (0, import_ts_extras56.arrayAt)(unwrappedExpression.expressions, -1);
6404
+ const lastExpression = (0, import_ts_extras59.arrayAt)(unwrappedExpression.expressions, -1);
5858
6405
  return lastExpression !== void 0 && isDefinitelyDefinedExpression4(lastExpression);
5859
6406
  }
5860
6407
  if (unwrappedExpression.type === "TemplateLiteral") {
@@ -5870,7 +6417,7 @@ var hasDefinitelyDefinedReturnValue = (node) => {
5870
6417
  if (body.body.length !== 1) {
5871
6418
  return false;
5872
6419
  }
5873
- const statement = (0, import_ts_extras56.arrayFirst)(body.body);
6420
+ const statement = (0, import_ts_extras59.arrayFirst)(body.body);
5874
6421
  if (statement === void 0) {
5875
6422
  return false;
5876
6423
  }
@@ -5906,7 +6453,7 @@ var getPromiseValueUnionType = (returnType) => {
5906
6453
  }
5907
6454
  return promiseValueType;
5908
6455
  };
5909
- var rule92 = ruleCreator({
6456
+ var rule95 = ruleCreator({
5910
6457
  create: (context) => {
5911
6458
  const sourceCode = context.sourceCode;
5912
6459
  return {
@@ -5926,7 +6473,7 @@ var rule92 = ruleCreator({
5926
6473
  return;
5927
6474
  }
5928
6475
  const fixedPromiseValueTypeText = buildFixedTypeText5(sourceCode, promiseValueUnionType);
5929
- if (!(0, import_ts_extras56.isDefined)(fixedPromiseValueTypeText)) {
6476
+ if (!(0, import_ts_extras59.isDefined)(fixedPromiseValueTypeText)) {
5930
6477
  return;
5931
6478
  }
5932
6479
  const fix = (fixer) => fixer.replaceText(promiseValueUnionType, fixedPromiseValueTypeText);
@@ -5964,10 +6511,10 @@ var rule92 = ruleCreator({
5964
6511
  },
5965
6512
  name: "typescript/no-redundant-undefined-promise-return-type"
5966
6513
  });
5967
- var typescript_no_redundant_undefined_promise_return_type_default = rule92;
6514
+ var typescript_no_redundant_undefined_promise_return_type_default = rule95;
5968
6515
 
5969
6516
  // dist/rules/typescript-no-redundant-undefined-readonly-property.js
5970
- var import_ts_extras57 = require("ts-extras");
6517
+ var import_ts_extras60 = require("ts-extras");
5971
6518
  var buildFixedTypeText6 = (sourceCode, unionType) => {
5972
6519
  let nonUndefinedTypeTexts = [];
5973
6520
  for (const typeNode of unionType.types) {
@@ -5979,19 +6526,19 @@ var buildFixedTypeText6 = (sourceCode, unionType) => {
5979
6526
  sourceCode.getText(typeNode)
5980
6527
  ];
5981
6528
  }
5982
- if ((0, import_ts_extras57.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6529
+ if ((0, import_ts_extras60.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
5983
6530
  return void 0;
5984
6531
  }
5985
- return (0, import_ts_extras57.arrayJoin)(nonUndefinedTypeTexts, " | ");
6532
+ return (0, import_ts_extras60.arrayJoin)(nonUndefinedTypeTexts, " | ");
5986
6533
  };
5987
- var unwrapExpression5 = (expression) => {
6534
+ var unwrapExpression6 = (expression) => {
5988
6535
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
5989
- return unwrapExpression5(expression.expression);
6536
+ return unwrapExpression6(expression.expression);
5990
6537
  }
5991
6538
  return expression;
5992
6539
  };
5993
6540
  var isDefinitelyDefinedExpression5 = (expression) => {
5994
- const unwrappedExpression = unwrapExpression5(expression);
6541
+ const unwrappedExpression = unwrapExpression6(expression);
5995
6542
  if (unwrappedExpression.type === "ArrayExpression") {
5996
6543
  return true;
5997
6544
  }
@@ -6018,7 +6565,7 @@ var isDefinitelyDefinedExpression5 = (expression) => {
6018
6565
  }
6019
6566
  return false;
6020
6567
  };
6021
- var rule93 = ruleCreator({
6568
+ var rule96 = ruleCreator({
6022
6569
  create: (context) => {
6023
6570
  const sourceCode = context.sourceCode;
6024
6571
  return {
@@ -6043,7 +6590,7 @@ var rule93 = ruleCreator({
6043
6590
  return;
6044
6591
  }
6045
6592
  const fixedTypeText = buildFixedTypeText6(sourceCode, typeAnnotation.typeAnnotation);
6046
- if (!(0, import_ts_extras57.isDefined)(fixedTypeText)) {
6593
+ if (!(0, import_ts_extras60.isDefined)(fixedTypeText)) {
6047
6594
  return;
6048
6595
  }
6049
6596
  const fix = (fixer) => fixer.replaceText(typeAnnotation.typeAnnotation, fixedTypeText);
@@ -6081,10 +6628,10 @@ var rule93 = ruleCreator({
6081
6628
  },
6082
6629
  name: "typescript/no-redundant-undefined-readonly-property"
6083
6630
  });
6084
- var typescript_no_redundant_undefined_readonly_property_default = rule93;
6631
+ var typescript_no_redundant_undefined_readonly_property_default = rule96;
6085
6632
 
6086
6633
  // dist/rules/typescript-no-redundant-undefined-return-type.js
6087
- var import_ts_extras58 = require("ts-extras");
6634
+ var import_ts_extras61 = require("ts-extras");
6088
6635
  var buildFixedTypeText7 = (sourceCode, unionType) => {
6089
6636
  let nonUndefinedTypeTexts = [];
6090
6637
  for (const typeNode of unionType.types) {
@@ -6096,19 +6643,19 @@ var buildFixedTypeText7 = (sourceCode, unionType) => {
6096
6643
  sourceCode.getText(typeNode)
6097
6644
  ];
6098
6645
  }
6099
- if ((0, import_ts_extras58.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6646
+ if ((0, import_ts_extras61.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6100
6647
  return void 0;
6101
6648
  }
6102
- return (0, import_ts_extras58.arrayJoin)(nonUndefinedTypeTexts, " | ");
6649
+ return (0, import_ts_extras61.arrayJoin)(nonUndefinedTypeTexts, " | ");
6103
6650
  };
6104
- var unwrapExpression6 = (expression) => {
6651
+ var unwrapExpression7 = (expression) => {
6105
6652
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
6106
- return unwrapExpression6(expression.expression);
6653
+ return unwrapExpression7(expression.expression);
6107
6654
  }
6108
6655
  return expression;
6109
6656
  };
6110
6657
  var isDefinitelyDefinedExpression6 = (expression) => {
6111
- const unwrappedExpression = unwrapExpression6(expression);
6658
+ const unwrappedExpression = unwrapExpression7(expression);
6112
6659
  if (unwrappedExpression.type === "ArrayExpression") {
6113
6660
  return true;
6114
6661
  }
@@ -6137,7 +6684,7 @@ var isDefinitelyDefinedExpression6 = (expression) => {
6137
6684
  return true;
6138
6685
  }
6139
6686
  if (unwrappedExpression.type === "SequenceExpression") {
6140
- const lastExpression = (0, import_ts_extras58.arrayAt)(unwrappedExpression.expressions, -1);
6687
+ const lastExpression = (0, import_ts_extras61.arrayAt)(unwrappedExpression.expressions, -1);
6141
6688
  return lastExpression !== void 0 && isDefinitelyDefinedExpression6(lastExpression);
6142
6689
  }
6143
6690
  if (unwrappedExpression.type === "TemplateLiteral") {
@@ -6153,7 +6700,7 @@ var hasDefinitelyDefinedReturnValue2 = (node) => {
6153
6700
  if (body.body.length !== 1) {
6154
6701
  return false;
6155
6702
  }
6156
- const statement = (0, import_ts_extras58.arrayFirst)(body.body);
6703
+ const statement = (0, import_ts_extras61.arrayFirst)(body.body);
6157
6704
  if (statement === void 0) {
6158
6705
  return false;
6159
6706
  }
@@ -6165,7 +6712,7 @@ var hasDefinitelyDefinedReturnValue2 = (node) => {
6165
6712
  }
6166
6713
  return isDefinitelyDefinedExpression6(statement.argument);
6167
6714
  };
6168
- var rule94 = ruleCreator({
6715
+ var rule97 = ruleCreator({
6169
6716
  create: (context) => {
6170
6717
  const sourceCode = context.sourceCode;
6171
6718
  return {
@@ -6184,7 +6731,7 @@ var rule94 = ruleCreator({
6184
6731
  return;
6185
6732
  }
6186
6733
  const fixedTypeText = buildFixedTypeText7(sourceCode, returnType.typeAnnotation);
6187
- if (!(0, import_ts_extras58.isDefined)(fixedTypeText)) {
6734
+ if (!(0, import_ts_extras61.isDefined)(fixedTypeText)) {
6188
6735
  return;
6189
6736
  }
6190
6737
  const fix = (fixer) => fixer.replaceText(returnType.typeAnnotation, fixedTypeText);
@@ -6222,10 +6769,10 @@ var rule94 = ruleCreator({
6222
6769
  },
6223
6770
  name: "typescript/no-redundant-undefined-return-type"
6224
6771
  });
6225
- var typescript_no_redundant_undefined_return_type_default = rule94;
6772
+ var typescript_no_redundant_undefined_return_type_default = rule97;
6226
6773
 
6227
6774
  // dist/rules/typescript-no-redundant-undefined-var.js
6228
- var import_ts_extras59 = require("ts-extras");
6775
+ var import_ts_extras62 = require("ts-extras");
6229
6776
  var buildFixedTypeText8 = (sourceCode, unionType) => {
6230
6777
  let nonUndefinedTypeTexts = [];
6231
6778
  for (const typeNode of unionType.types) {
@@ -6237,19 +6784,19 @@ var buildFixedTypeText8 = (sourceCode, unionType) => {
6237
6784
  sourceCode.getText(typeNode)
6238
6785
  ];
6239
6786
  }
6240
- if ((0, import_ts_extras59.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6787
+ if ((0, import_ts_extras62.isEmpty)(nonUndefinedTypeTexts) || nonUndefinedTypeTexts.length === unionType.types.length) {
6241
6788
  return void 0;
6242
6789
  }
6243
- return (0, import_ts_extras59.arrayJoin)(nonUndefinedTypeTexts, " | ");
6790
+ return (0, import_ts_extras62.arrayJoin)(nonUndefinedTypeTexts, " | ");
6244
6791
  };
6245
- var unwrapExpression7 = (expression) => {
6792
+ var unwrapExpression8 = (expression) => {
6246
6793
  if (expression.type === "TSAsExpression" || expression.type === "TSSatisfiesExpression" || expression.type === "TSNonNullExpression" || expression.type === "TSTypeAssertion") {
6247
- return unwrapExpression7(expression.expression);
6794
+ return unwrapExpression8(expression.expression);
6248
6795
  }
6249
6796
  return expression;
6250
6797
  };
6251
6798
  var isDefinitelyDefinedExpression7 = (expression) => {
6252
- const unwrappedExpression = unwrapExpression7(expression);
6799
+ const unwrappedExpression = unwrapExpression8(expression);
6253
6800
  if (unwrappedExpression.type === "ArrayExpression") {
6254
6801
  return true;
6255
6802
  }
@@ -6283,7 +6830,7 @@ var isNeverReassigned2 = (sourceCode, declarator) => {
6283
6830
  }
6284
6831
  return !declaredVariable.references.some((reference) => reference.isWrite() && reference.init !== true);
6285
6832
  };
6286
- var rule95 = ruleCreator({
6833
+ var rule98 = ruleCreator({
6287
6834
  create: (context) => {
6288
6835
  const sourceCode = context.sourceCode;
6289
6836
  return {
@@ -6310,7 +6857,7 @@ var rule95 = ruleCreator({
6310
6857
  return;
6311
6858
  }
6312
6859
  const fixedTypeText = buildFixedTypeText8(sourceCode, typeAnnotation.typeAnnotation);
6313
- if (!(0, import_ts_extras59.isDefined)(fixedTypeText)) {
6860
+ if (!(0, import_ts_extras62.isDefined)(fixedTypeText)) {
6314
6861
  return;
6315
6862
  }
6316
6863
  const fix = (fixer) => fixer.replaceText(typeAnnotation.typeAnnotation, fixedTypeText);
@@ -6348,7 +6895,7 @@ var rule95 = ruleCreator({
6348
6895
  },
6349
6896
  name: "typescript/no-redundant-undefined-var"
6350
6897
  });
6351
- var typescript_no_redundant_undefined_var_default = rule95;
6898
+ var typescript_no_redundant_undefined_var_default = rule98;
6352
6899
 
6353
6900
  // dist/rules/typescript-no-restricted-syntax.js
6354
6901
  var typescriptNoRestrictedSyntaxRule = {
@@ -6387,7 +6934,7 @@ var typescript_no_restricted_syntax_default = deprecatedRule26;
6387
6934
  var import_type_utils9 = require("@typescript-eslint/type-utils");
6388
6935
  var import_utils12 = require("@typescript-eslint/utils");
6389
6936
  var tsutils4 = __toESM(require("tsutils"), 1);
6390
- var rule96 = ruleCreator({
6937
+ var rule99 = ruleCreator({
6391
6938
  create: (context) => {
6392
6939
  const parserServices = import_utils12.ESLintUtils.getParserServices(context);
6393
6940
  const checker = parserServices.program.getTypeChecker();
@@ -6428,10 +6975,10 @@ var rule96 = ruleCreator({
6428
6975
  },
6429
6976
  name: "typescript/no-unsafe-object-assign"
6430
6977
  });
6431
- var typescript_no_unsafe_object_assign_default = rule96;
6978
+ var typescript_no_unsafe_object_assign_default = rule99;
6432
6979
 
6433
6980
  // dist/rules/typescript-no-unsafe-object-assignment.js
6434
- var rule97 = {
6981
+ var rule100 = {
6435
6982
  ...typescript_no_unsafe_object_assign_default,
6436
6983
  meta: {
6437
6984
  deprecated: false,
@@ -6445,11 +6992,11 @@ var rule97 = {
6445
6992
  }
6446
6993
  }
6447
6994
  };
6448
- var typescript_no_unsafe_object_assignment_default = rule97;
6995
+ var typescript_no_unsafe_object_assignment_default = rule100;
6449
6996
 
6450
6997
  // dist/rules/typescript-prefer-array-type-alias.js
6451
6998
  var selector15 = String.raw`TSTypeAliasDeclaration > Identifier.id:matches([parent.typeAnnotation.type='TSArrayType'], [parent.typeAnnotation.type='TSTupleType']):not([name=/^(?:[A-Z][a-z\d]*)+(?:Array|s)$/u])`;
6452
- var rule98 = ruleCreator({
6999
+ var rule101 = ruleCreator({
6453
7000
  create: (context) => ({
6454
7001
  [selector15]: (node) => {
6455
7002
  context.report({
@@ -6476,11 +7023,11 @@ var rule98 = ruleCreator({
6476
7023
  },
6477
7024
  name: "typescript/prefer-array-type-alias"
6478
7025
  });
6479
- var typescript_prefer_array_type_alias_default = rule98;
7026
+ var typescript_prefer_array_type_alias_default = rule101;
6480
7027
 
6481
7028
  // dist/rules/typescript-prefer-class-method.js
6482
7029
  var selector16 = "PropertyDefinition:not([typeAnnotation]) > ArrowFunctionExpression";
6483
- var rule99 = ruleCreator({
7030
+ var rule102 = ruleCreator({
6484
7031
  create: (context) => ({
6485
7032
  [selector16]: (node) => {
6486
7033
  context.report({
@@ -6507,12 +7054,12 @@ var rule99 = ruleCreator({
6507
7054
  },
6508
7055
  name: "typescript/prefer-class-method"
6509
7056
  });
6510
- var typescript_prefer_class_method_default = rule99;
7057
+ var typescript_prefer_class_method_default = rule102;
6511
7058
 
6512
7059
  // dist/rules/typescript-prefer-enum.js
6513
7060
  var import_type_utils10 = require("@typescript-eslint/type-utils");
6514
7061
  var import_utils13 = require("@typescript-eslint/utils");
6515
- var import_ts_extras60 = require("ts-extras");
7062
+ var import_ts_extras63 = require("ts-extras");
6516
7063
  var tsutils5 = __toESM(require("tsutils"), 1);
6517
7064
  var import_typescript = __toESM(require("typescript"), 1);
6518
7065
  var isEnumLikeOrUndefinedType = (checker, type) => {
@@ -6531,7 +7078,7 @@ var isEnumLikeOrUndefinedType = (checker, type) => {
6531
7078
  return hasEnumLike;
6532
7079
  };
6533
7080
  var isStringLiteral = (node) => node.type === "Literal" && typeof node.value === "string";
6534
- var rule100 = ruleCreator({
7081
+ var rule103 = ruleCreator({
6535
7082
  create: (context) => {
6536
7083
  const parserServices = import_utils13.ESLintUtils.getParserServices(context);
6537
7084
  const checker = parserServices.program.getTypeChecker();
@@ -6573,9 +7120,9 @@ var rule100 = ruleCreator({
6573
7120
  if (functionNode === null) {
6574
7121
  return;
6575
7122
  }
6576
- const signature = (0, import_ts_extras60.arrayFirst)((0, import_type_utils10.getConstrainedTypeAtLocation)(parserServices, functionNode).getCallSignatures());
6577
- const returnType = (0, import_ts_extras60.isDefined)(signature) ? checker.getReturnTypeOfSignature(signature) : void 0;
6578
- if (!(0, import_ts_extras60.isDefined)(returnType)) {
7123
+ const signature = (0, import_ts_extras63.arrayFirst)((0, import_type_utils10.getConstrainedTypeAtLocation)(parserServices, functionNode).getCallSignatures());
7124
+ const returnType = (0, import_ts_extras63.isDefined)(signature) ? checker.getReturnTypeOfSignature(signature) : void 0;
7125
+ if (!(0, import_ts_extras63.isDefined)(returnType)) {
6579
7126
  return;
6580
7127
  }
6581
7128
  if (!isEnumLikeOrUndefinedType(checker, returnType)) {
@@ -6626,7 +7173,7 @@ var rule100 = ruleCreator({
6626
7173
  },
6627
7174
  name: "typescript/prefer-enum"
6628
7175
  });
6629
- var typescript_prefer_enum_default = rule100;
7176
+ var typescript_prefer_enum_default = rule103;
6630
7177
 
6631
7178
  // dist/rules/typescript-prefer-named-tuple-members.js
6632
7179
  var isUnnamedTupleElement = (tupleElement) => {
@@ -6663,7 +7210,7 @@ var getTupleMemberReplacementText = (tupleElement, memberName2, sourceCode) => {
6663
7210
  }
6664
7211
  return `${memberName2}: ${sourceCode.getText(tupleElement)}`;
6665
7212
  };
6666
- var rule101 = ruleCreator({
7213
+ var rule104 = ruleCreator({
6667
7214
  create: (context) => {
6668
7215
  const sourceCode = context.sourceCode;
6669
7216
  return {
@@ -6729,7 +7276,7 @@ var rule101 = ruleCreator({
6729
7276
  },
6730
7277
  name: "typescript/prefer-named-tuple-members"
6731
7278
  });
6732
- var typescript_prefer_named_tuple_members_default = rule101;
7279
+ var typescript_prefer_named_tuple_members_default = rule104;
6733
7280
 
6734
7281
  // dist/rules/typescript-prefer-readonly-array-parameter.js
6735
7282
  var functionLikeNodeSelector2 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -6783,7 +7330,7 @@ var buildReadonlyArrayLikeFix = (node, sourceCode) => {
6783
7330
  }
6784
7331
  return (fixer) => fixer.replaceText(node, `readonly ${sourceCode.getText(node)}`);
6785
7332
  };
6786
- var rule102 = ruleCreator({
7333
+ var rule105 = ruleCreator({
6787
7334
  create: (context) => {
6788
7335
  const sourceCode = context.sourceCode;
6789
7336
  return {
@@ -6836,15 +7383,15 @@ var rule102 = ruleCreator({
6836
7383
  },
6837
7384
  name: "typescript/prefer-readonly-array-parameter"
6838
7385
  });
6839
- var typescript_prefer_readonly_array_parameter_default = rule102;
7386
+ var typescript_prefer_readonly_array_parameter_default = rule105;
6840
7387
 
6841
7388
  // dist/rules/typescript-prefer-readonly-array.js
6842
- var import_ts_extras61 = require("ts-extras");
6843
- var selector17 = (0, import_ts_extras61.arrayJoin)([
7389
+ var import_ts_extras64 = require("ts-extras");
7390
+ var selector17 = (0, import_ts_extras64.arrayJoin)([
6844
7391
  ":not(TSTypeOperator[operator='readonly']) > :matches(TSArrayType, TSTupleType)",
6845
7392
  "TSTypeReference > Identifier[name='Array']"
6846
7393
  ], ", ");
6847
- var rule103 = ruleCreator({
7394
+ var rule106 = ruleCreator({
6848
7395
  create: (context) => {
6849
7396
  const sourceCode = context.sourceCode;
6850
7397
  return {
@@ -6880,11 +7427,11 @@ var rule103 = ruleCreator({
6880
7427
  },
6881
7428
  name: "typescript/prefer-readonly-array"
6882
7429
  });
6883
- var typescript_prefer_readonly_array_default = rule103;
7430
+ var typescript_prefer_readonly_array_default = rule106;
6884
7431
 
6885
7432
  // dist/rules/typescript-prefer-readonly-index-signature.js
6886
7433
  var selector18 = "TSIndexSignature[readonly!=true]";
6887
- var rule104 = ruleCreator({
7434
+ var rule107 = ruleCreator({
6888
7435
  create: (context) => ({
6889
7436
  [selector18]: (node) => {
6890
7437
  if (node.type !== "TSIndexSignature" || node.readonly) {
@@ -6916,11 +7463,11 @@ var rule104 = ruleCreator({
6916
7463
  },
6917
7464
  name: "typescript/prefer-readonly-index-signature"
6918
7465
  });
6919
- var typescript_prefer_readonly_index_signature_default = rule104;
7466
+ var typescript_prefer_readonly_index_signature_default = rule107;
6920
7467
 
6921
7468
  // dist/rules/typescript-prefer-readonly-map.js
6922
7469
  var selector19 = "TSTypeReference > Identifier[name='Map']";
6923
- var rule105 = ruleCreator({
7470
+ var rule108 = ruleCreator({
6924
7471
  create: (context) => ({
6925
7472
  [selector19]: (node) => {
6926
7473
  if (node.type !== "Identifier") {
@@ -6952,12 +7499,12 @@ var rule105 = ruleCreator({
6952
7499
  },
6953
7500
  name: "typescript/prefer-readonly-map"
6954
7501
  });
6955
- var typescript_prefer_readonly_map_default = rule105;
7502
+ var typescript_prefer_readonly_map_default = rule108;
6956
7503
 
6957
7504
  // dist/rules/typescript-prefer-readonly-property.js
6958
- var import_ts_extras62 = require("ts-extras");
7505
+ var import_ts_extras65 = require("ts-extras");
6959
7506
  var selector20 = ":matches(PropertyDefinition, TSPropertySignature)[readonly!=true]";
6960
- var rule106 = ruleCreator({
7507
+ var rule109 = ruleCreator({
6961
7508
  create: (context) => ({
6962
7509
  [selector20]: (node) => {
6963
7510
  if (node.type !== "PropertyDefinition" && node.type !== "TSPropertySignature") {
@@ -6968,7 +7515,7 @@ var rule106 = ruleCreator({
6968
7515
  context.report({
6969
7516
  messageId: "forbidden",
6970
7517
  node,
6971
- ...(0, import_ts_extras62.isDefined)(fix) ? {
7518
+ ...(0, import_ts_extras65.isDefined)(fix) ? {
6972
7519
  fix,
6973
7520
  suggest: [
6974
7521
  {
@@ -7000,7 +7547,7 @@ var rule106 = ruleCreator({
7000
7547
  },
7001
7548
  name: "typescript/prefer-readonly-property"
7002
7549
  });
7003
- var typescript_prefer_readonly_property_default = rule106;
7550
+ var typescript_prefer_readonly_property_default = rule109;
7004
7551
 
7005
7552
  // dist/rules/typescript-prefer-readonly-record.js
7006
7553
  var selector21 = "TSTypeReference > Identifier[name='Record']";
@@ -7012,7 +7559,7 @@ var isReadonlyWrappedRecord = (typeReference) => {
7012
7559
  const maybeReadonlyTypeReference = parent.parent;
7013
7560
  return maybeReadonlyTypeReference?.type === "TSTypeReference" && maybeReadonlyTypeReference.typeName.type === "Identifier" && maybeReadonlyTypeReference.typeName.name === "Readonly";
7014
7561
  };
7015
- var rule107 = ruleCreator({
7562
+ var rule110 = ruleCreator({
7016
7563
  create: (context) => ({
7017
7564
  [selector21]: (node) => {
7018
7565
  if (node.type !== "Identifier") {
@@ -7051,11 +7598,11 @@ var rule107 = ruleCreator({
7051
7598
  },
7052
7599
  name: "typescript/prefer-readonly-record"
7053
7600
  });
7054
- var typescript_prefer_readonly_record_default = rule107;
7601
+ var typescript_prefer_readonly_record_default = rule110;
7055
7602
 
7056
7603
  // dist/rules/typescript-prefer-readonly-set.js
7057
7604
  var selector22 = "TSTypeReference > Identifier[name='Set']";
7058
- var rule108 = ruleCreator({
7605
+ var rule111 = ruleCreator({
7059
7606
  create: (context) => ({
7060
7607
  [selector22]: (node) => {
7061
7608
  if (node.type !== "Identifier") {
@@ -7087,12 +7634,12 @@ var rule108 = ruleCreator({
7087
7634
  },
7088
7635
  name: "typescript/prefer-readonly-set"
7089
7636
  });
7090
- var typescript_prefer_readonly_set_default = rule108;
7637
+ var typescript_prefer_readonly_set_default = rule111;
7091
7638
 
7092
7639
  // dist/rules/typescript-require-prop-type-annotation.js
7093
- var import_ts_extras63 = require("ts-extras");
7640
+ var import_ts_extras66 = require("ts-extras");
7094
7641
  var selector23 = "PropertyDefinition[typeAnnotation=undefined][value=null]";
7095
- var rule109 = ruleCreator({
7642
+ var rule112 = ruleCreator({
7096
7643
  create: (context) => ({
7097
7644
  [selector23]: (node) => {
7098
7645
  if (node.type !== "PropertyDefinition") {
@@ -7103,7 +7650,7 @@ var rule109 = ruleCreator({
7103
7650
  context.report({
7104
7651
  messageId: "forbidden",
7105
7652
  node,
7106
- ...(0, import_ts_extras63.isDefined)(fix) ? {
7653
+ ...(0, import_ts_extras66.isDefined)(fix) ? {
7107
7654
  fix,
7108
7655
  suggest: [
7109
7656
  {
@@ -7135,7 +7682,7 @@ var rule109 = ruleCreator({
7135
7682
  },
7136
7683
  name: "typescript/require-prop-type-annotation"
7137
7684
  });
7138
- var typescript_require_prop_type_annotation_default = rule109;
7685
+ var typescript_require_prop_type_annotation_default = rule112;
7139
7686
 
7140
7687
  // dist/rules/typescript-require-readonly-array-property-type.js
7141
7688
  var isArrayTypeReference2 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Array";
@@ -7171,7 +7718,7 @@ var isTopLevelPropertySignature = (node) => {
7171
7718
  const maybeTypeAliasDeclaration = parent.parent;
7172
7719
  return maybeTypeAliasDeclaration?.type === "TSTypeAliasDeclaration";
7173
7720
  };
7174
- var rule110 = ruleCreator({
7721
+ var rule113 = ruleCreator({
7175
7722
  create: (context) => {
7176
7723
  const sourceCode = context.sourceCode;
7177
7724
  return {
@@ -7221,7 +7768,7 @@ var rule110 = ruleCreator({
7221
7768
  },
7222
7769
  name: "typescript/require-readonly-array-property-type"
7223
7770
  });
7224
- var typescript_require_readonly_array_property_type_default = rule110;
7771
+ var typescript_require_readonly_array_property_type_default = rule113;
7225
7772
 
7226
7773
  // dist/rules/typescript-require-readonly-array-return-type.js
7227
7774
  var functionLikeNodeSelector3 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -7253,7 +7800,7 @@ var buildReadonlyArrayLikeFix3 = (node, sourceCode) => {
7253
7800
  }
7254
7801
  return (fixer) => fixer.replaceText(node, `readonly ${sourceCode.getText(node)}`);
7255
7802
  };
7256
- var rule111 = ruleCreator({
7803
+ var rule114 = ruleCreator({
7257
7804
  create: (context) => {
7258
7805
  const sourceCode = context.sourceCode;
7259
7806
  return {
@@ -7300,7 +7847,7 @@ var rule111 = ruleCreator({
7300
7847
  },
7301
7848
  name: "typescript/require-readonly-array-return-type"
7302
7849
  });
7303
- var typescript_require_readonly_array_return_type_default = rule111;
7850
+ var typescript_require_readonly_array_return_type_default = rule114;
7304
7851
 
7305
7852
  // dist/rules/typescript-require-readonly-array-type-alias.js
7306
7853
  var isArrayTypeReference4 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Array";
@@ -7325,7 +7872,7 @@ var buildReadonlyArrayLikeFix4 = (node, sourceCode) => {
7325
7872
  }
7326
7873
  return (fixer) => fixer.replaceText(node, `readonly ${sourceCode.getText(node)}`);
7327
7874
  };
7328
- var rule112 = ruleCreator({
7875
+ var rule115 = ruleCreator({
7329
7876
  create: (context) => {
7330
7877
  const sourceCode = context.sourceCode;
7331
7878
  return {
@@ -7368,7 +7915,7 @@ var rule112 = ruleCreator({
7368
7915
  },
7369
7916
  name: "typescript/require-readonly-array-type-alias"
7370
7917
  });
7371
- var typescript_require_readonly_array_type_alias_default = rule112;
7918
+ var typescript_require_readonly_array_type_alias_default = rule115;
7372
7919
 
7373
7920
  // dist/rules/typescript-require-readonly-map-parameter-type.js
7374
7921
  var functionLikeNodeSelector4 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -7411,7 +7958,7 @@ var collectMutableMapTypeNodes = (typeNode) => {
7411
7958
  return [typeNode.typeName];
7412
7959
  };
7413
7960
  var buildReadonlyMapFix = (node) => (fixer) => fixer.replaceText(node, "ReadonlyMap");
7414
- var rule113 = ruleCreator({
7961
+ var rule116 = ruleCreator({
7415
7962
  create: (context) => ({
7416
7963
  [functionLikeNodeSelector4]: (node) => {
7417
7964
  const parameters = getParametersFromFunctionLikeNode3(node);
@@ -7461,7 +8008,7 @@ var rule113 = ruleCreator({
7461
8008
  },
7462
8009
  name: "typescript/require-readonly-map-parameter-type"
7463
8010
  });
7464
- var typescript_require_readonly_map_parameter_type_default = rule113;
8011
+ var typescript_require_readonly_map_parameter_type_default = rule116;
7465
8012
 
7466
8013
  // dist/rules/typescript-require-readonly-map-property-type.js
7467
8014
  var isMapTypeReference2 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Map";
@@ -7486,7 +8033,7 @@ var isTopLevelPropertySignature2 = (node) => {
7486
8033
  const maybeTypeAliasDeclaration = parent.parent;
7487
8034
  return maybeTypeAliasDeclaration?.type === "TSTypeAliasDeclaration";
7488
8035
  };
7489
- var rule114 = ruleCreator({
8036
+ var rule117 = ruleCreator({
7490
8037
  create: (context) => ({
7491
8038
  "TSPropertySignature[typeAnnotation!=null]": (node) => {
7492
8039
  if (!isTopLevelPropertySignature2(node)) {
@@ -7533,7 +8080,7 @@ var rule114 = ruleCreator({
7533
8080
  },
7534
8081
  name: "typescript/require-readonly-map-property-type"
7535
8082
  });
7536
- var typescript_require_readonly_map_property_type_default = rule114;
8083
+ var typescript_require_readonly_map_property_type_default = rule117;
7537
8084
 
7538
8085
  // dist/rules/typescript-require-readonly-map-return-type.js
7539
8086
  var functionLikeNodeSelector5 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -7554,7 +8101,7 @@ var collectMutableMapTypeNodes3 = (typeNode) => {
7554
8101
  return [typeNode.typeName];
7555
8102
  };
7556
8103
  var buildReadonlyMapFix3 = (node) => (fixer) => fixer.replaceText(node, "ReadonlyMap");
7557
- var rule115 = ruleCreator({
8104
+ var rule118 = ruleCreator({
7558
8105
  create: (context) => ({
7559
8106
  [functionLikeNodeSelector5]: (node) => {
7560
8107
  const returnTypeAnnotation = getReturnTypeAnnotationFromFunctionLikeNode2(node);
@@ -7598,7 +8145,7 @@ var rule115 = ruleCreator({
7598
8145
  },
7599
8146
  name: "typescript/require-readonly-map-return-type"
7600
8147
  });
7601
- var typescript_require_readonly_map_return_type_default = rule115;
8148
+ var typescript_require_readonly_map_return_type_default = rule118;
7602
8149
 
7603
8150
  // dist/rules/typescript-require-readonly-map-type-alias.js
7604
8151
  var isMapTypeReference4 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Map";
@@ -7612,7 +8159,7 @@ var collectMutableMapTypeNodes4 = (typeNode) => {
7612
8159
  return [typeNode.typeName];
7613
8160
  };
7614
8161
  var buildReadonlyMapFix4 = (node) => (fixer) => fixer.replaceText(node, "ReadonlyMap");
7615
- var rule116 = ruleCreator({
8162
+ var rule119 = ruleCreator({
7616
8163
  create: (context) => ({
7617
8164
  TSTypeAliasDeclaration: (node) => {
7618
8165
  const mutableMapTypeNodes = collectMutableMapTypeNodes4(node.typeAnnotation);
@@ -7652,7 +8199,7 @@ var rule116 = ruleCreator({
7652
8199
  },
7653
8200
  name: "typescript/require-readonly-map-type-alias"
7654
8201
  });
7655
- var typescript_require_readonly_map_type_alias_default = rule116;
8202
+ var typescript_require_readonly_map_type_alias_default = rule119;
7656
8203
 
7657
8204
  // dist/rules/typescript-require-readonly-record-parameter-type.js
7658
8205
  var functionLikeNodeSelector6 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -7706,7 +8253,7 @@ var buildReadonlyRecordFix = (node) => (fixer) => [
7706
8253
  fixer.replaceText(node.typeName, "Readonly<Record"),
7707
8254
  fixer.insertTextAfter(node, ">")
7708
8255
  ];
7709
- var rule117 = ruleCreator({
8256
+ var rule120 = ruleCreator({
7710
8257
  create: (context) => ({
7711
8258
  [functionLikeNodeSelector6]: (node) => {
7712
8259
  const parameters = getParametersFromFunctionLikeNode4(node);
@@ -7756,7 +8303,7 @@ var rule117 = ruleCreator({
7756
8303
  },
7757
8304
  name: "typescript/require-readonly-record-parameter-type"
7758
8305
  });
7759
- var typescript_require_readonly_record_parameter_type_default = rule117;
8306
+ var typescript_require_readonly_record_parameter_type_default = rule120;
7760
8307
 
7761
8308
  // dist/rules/typescript-require-readonly-record-property-type.js
7762
8309
  var isRecordTypeReference2 = (typeNode) => typeNode.type === "TSTypeReference" && typeNode.typeName.type === "Identifier" && typeNode.typeName.name === "Record";
@@ -7792,7 +8339,7 @@ var isTopLevelPropertySignature3 = (node) => {
7792
8339
  const maybeTypeAliasDeclaration = parent.parent;
7793
8340
  return maybeTypeAliasDeclaration?.type === "TSTypeAliasDeclaration";
7794
8341
  };
7795
- var rule118 = ruleCreator({
8342
+ var rule121 = ruleCreator({
7796
8343
  create: (context) => ({
7797
8344
  "TSPropertySignature[typeAnnotation!=null]": (node) => {
7798
8345
  if (!isTopLevelPropertySignature3(node)) {
@@ -7839,7 +8386,7 @@ var rule118 = ruleCreator({
7839
8386
  },
7840
8387
  name: "typescript/require-readonly-record-property-type"
7841
8388
  });
7842
- var typescript_require_readonly_record_property_type_default = rule118;
8389
+ var typescript_require_readonly_record_property_type_default = rule121;
7843
8390
 
7844
8391
  // dist/rules/typescript-require-readonly-record-return-type.js
7845
8392
  var functionLikeNodeSelector7 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -7871,7 +8418,7 @@ var buildReadonlyRecordFix3 = (node) => (fixer) => [
7871
8418
  fixer.replaceText(node.typeName, "Readonly<Record"),
7872
8419
  fixer.insertTextAfter(node, ">")
7873
8420
  ];
7874
- var rule119 = ruleCreator({
8421
+ var rule122 = ruleCreator({
7875
8422
  create: (context) => ({
7876
8423
  [functionLikeNodeSelector7]: (node) => {
7877
8424
  const returnTypeAnnotation = getReturnTypeAnnotationFromFunctionLikeNode3(node);
@@ -7915,7 +8462,7 @@ var rule119 = ruleCreator({
7915
8462
  },
7916
8463
  name: "typescript/require-readonly-record-return-type"
7917
8464
  });
7918
- var typescript_require_readonly_record_return_type_default = rule119;
8465
+ var typescript_require_readonly_record_return_type_default = rule122;
7919
8466
 
7920
8467
  // dist/rules/typescript-require-readonly-record-type-alias.js
7921
8468
  var isRecordTypeReference4 = (typeNode) => typeNode.type === "TSTypeReference" && typeNode.typeName.type === "Identifier" && typeNode.typeName.name === "Record";
@@ -7940,7 +8487,7 @@ var buildReadonlyRecordFix4 = (node) => (fixer) => [
7940
8487
  fixer.replaceText(node.typeName, "Readonly<Record"),
7941
8488
  fixer.insertTextAfter(node, ">")
7942
8489
  ];
7943
- var rule120 = ruleCreator({
8490
+ var rule123 = ruleCreator({
7944
8491
  create: (context) => ({
7945
8492
  TSTypeAliasDeclaration: (node) => {
7946
8493
  const mutableRecordTypeNodes = collectMutableRecordTypeNodes4(node.typeAnnotation);
@@ -7980,7 +8527,7 @@ var rule120 = ruleCreator({
7980
8527
  },
7981
8528
  name: "typescript/require-readonly-record-type-alias"
7982
8529
  });
7983
- var typescript_require_readonly_record_type_alias_default = rule120;
8530
+ var typescript_require_readonly_record_type_alias_default = rule123;
7984
8531
 
7985
8532
  // dist/rules/typescript-require-readonly-set-parameter-type.js
7986
8533
  var functionLikeNodeSelector8 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -8023,7 +8570,7 @@ var collectMutableSetTypeNodes = (typeNode) => {
8023
8570
  return [typeNode.typeName];
8024
8571
  };
8025
8572
  var buildReadonlySetFix = (node) => (fixer) => fixer.replaceText(node, "ReadonlySet");
8026
- var rule121 = ruleCreator({
8573
+ var rule124 = ruleCreator({
8027
8574
  create: (context) => ({
8028
8575
  [functionLikeNodeSelector8]: (node) => {
8029
8576
  const parameters = getParametersFromFunctionLikeNode5(node);
@@ -8073,7 +8620,7 @@ var rule121 = ruleCreator({
8073
8620
  },
8074
8621
  name: "typescript/require-readonly-set-parameter-type"
8075
8622
  });
8076
- var typescript_require_readonly_set_parameter_type_default = rule121;
8623
+ var typescript_require_readonly_set_parameter_type_default = rule124;
8077
8624
 
8078
8625
  // dist/rules/typescript-require-readonly-set-property-type.js
8079
8626
  var isSetTypeReference2 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Set";
@@ -8098,7 +8645,7 @@ var isTopLevelPropertySignature4 = (node) => {
8098
8645
  const maybeTypeAliasDeclaration = parent.parent;
8099
8646
  return maybeTypeAliasDeclaration?.type === "TSTypeAliasDeclaration";
8100
8647
  };
8101
- var rule122 = ruleCreator({
8648
+ var rule125 = ruleCreator({
8102
8649
  create: (context) => ({
8103
8650
  "TSPropertySignature[typeAnnotation!=null]": (node) => {
8104
8651
  if (!isTopLevelPropertySignature4(node)) {
@@ -8145,7 +8692,7 @@ var rule122 = ruleCreator({
8145
8692
  },
8146
8693
  name: "typescript/require-readonly-set-property-type"
8147
8694
  });
8148
- var typescript_require_readonly_set_property_type_default = rule122;
8695
+ var typescript_require_readonly_set_property_type_default = rule125;
8149
8696
 
8150
8697
  // dist/rules/typescript-require-readonly-set-return-type.js
8151
8698
  var functionLikeNodeSelector9 = ":matches(ArrowFunctionExpression, FunctionDeclaration, FunctionExpression, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSEmptyBodyFunctionExpression, TSFunctionType, TSMethodSignature)";
@@ -8166,7 +8713,7 @@ var collectMutableSetTypeNodes3 = (typeNode) => {
8166
8713
  return [typeNode.typeName];
8167
8714
  };
8168
8715
  var buildReadonlySetFix3 = (node) => (fixer) => fixer.replaceText(node, "ReadonlySet");
8169
- var rule123 = ruleCreator({
8716
+ var rule126 = ruleCreator({
8170
8717
  create: (context) => ({
8171
8718
  [functionLikeNodeSelector9]: (node) => {
8172
8719
  const returnTypeAnnotation = getReturnTypeAnnotationFromFunctionLikeNode4(node);
@@ -8210,7 +8757,7 @@ var rule123 = ruleCreator({
8210
8757
  },
8211
8758
  name: "typescript/require-readonly-set-return-type"
8212
8759
  });
8213
- var typescript_require_readonly_set_return_type_default = rule123;
8760
+ var typescript_require_readonly_set_return_type_default = rule126;
8214
8761
 
8215
8762
  // dist/rules/typescript-require-readonly-set-type-alias.js
8216
8763
  var isSetTypeReference4 = (node) => node.typeName.type === "Identifier" && node.typeName.name === "Set";
@@ -8224,7 +8771,7 @@ var collectMutableSetTypeNodes4 = (typeNode) => {
8224
8771
  return [typeNode.typeName];
8225
8772
  };
8226
8773
  var buildReadonlySetFix4 = (node) => (fixer) => fixer.replaceText(node, "ReadonlySet");
8227
- var rule124 = ruleCreator({
8774
+ var rule127 = ruleCreator({
8228
8775
  create: (context) => ({
8229
8776
  TSTypeAliasDeclaration: (node) => {
8230
8777
  const mutableSetTypeNodes = collectMutableSetTypeNodes4(node.typeAnnotation);
@@ -8264,13 +8811,13 @@ var rule124 = ruleCreator({
8264
8811
  },
8265
8812
  name: "typescript/require-readonly-set-type-alias"
8266
8813
  });
8267
- var typescript_require_readonly_set_type_alias_default = rule124;
8814
+ var typescript_require_readonly_set_type_alias_default = rule127;
8268
8815
 
8269
8816
  // dist/rules/typescript-require-this-void.js
8270
- var import_ts_extras64 = require("ts-extras");
8817
+ var import_ts_extras67 = require("ts-extras");
8271
8818
  var selector24 = "MethodDefinition[static=true] > FunctionExpression:not([params.0.name='this'][params.0.typeAnnotation.typeAnnotation.type='TSVoidKeyword'])";
8272
8819
  var createThisVoidSuggestionFix = (sourceCode, functionExpression) => {
8273
- const firstParameter = (0, import_ts_extras64.arrayFirst)(functionExpression.params);
8820
+ const firstParameter = (0, import_ts_extras67.arrayFirst)(functionExpression.params);
8274
8821
  if (firstParameter?.type === "Identifier" && firstParameter.name === "this") {
8275
8822
  const existingTypeAnnotation = firstParameter.typeAnnotation;
8276
8823
  if (existingTypeAnnotation === void 0) {
@@ -8284,7 +8831,7 @@ var createThisVoidSuggestionFix = (sourceCode, functionExpression) => {
8284
8831
  }
8285
8832
  return (fixer) => fixer.insertTextAfter(openingParenthesisToken, firstParameter === void 0 ? "this: void" : "this: void, ");
8286
8833
  };
8287
- var rule125 = ruleCreator({
8834
+ var rule128 = ruleCreator({
8288
8835
  create: (context) => {
8289
8836
  const sourceCode = context.sourceCode;
8290
8837
  return {
@@ -8329,13 +8876,13 @@ var rule125 = ruleCreator({
8329
8876
  },
8330
8877
  name: "typescript/require-this-void"
8331
8878
  });
8332
- var typescript_require_this_void_default = rule125;
8879
+ var typescript_require_this_void_default = rule128;
8333
8880
 
8334
8881
  // dist/rules/underscore-internal.js
8335
8882
  var internalTagPattern = /@internal\b/u;
8336
8883
  var isNonUnderscoreIdentifier = (identifier) => !identifier.name.startsWith("_");
8337
8884
  var isExportDeclaration = (node) => node?.type === "ExportDefaultDeclaration" || node?.type === "ExportNamedDeclaration";
8338
- var rule126 = ruleCreator({
8885
+ var rule129 = ruleCreator({
8339
8886
  create: (context) => {
8340
8887
  const hasInternalTag = (node) => {
8341
8888
  let commentTargets = [node];
@@ -8438,12 +8985,12 @@ var rule126 = ruleCreator({
8438
8985
  },
8439
8986
  name: "underscore-internal"
8440
8987
  });
8441
- var underscore_internal_default = rule126;
8988
+ var underscore_internal_default = rule129;
8442
8989
 
8443
8990
  // dist/rules/unused-internal-properties.js
8444
8991
  var import_eslint_plugin_unicorn3 = __toESM(require("eslint-plugin-unicorn"), 1);
8445
- var rule127 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn3.default, "no-unused-properties", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/unused-internal-properties");
8446
- var deprecatedRule27 = withDeprecatedRuleLifecycle(rule127, {
8992
+ var rule130 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn3.default, "no-unused-properties", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/unused-internal-properties");
8993
+ var deprecatedRule27 = withDeprecatedRuleLifecycle(rule130, {
8447
8994
  message: "Deprecated in favor of unicorn/no-unused-properties.",
8448
8995
  replacedBy: [
8449
8996
  createReplacementRuleInfo({
@@ -8463,8 +9010,8 @@ var unused_internal_properties_default = deprecatedRule27;
8463
9010
 
8464
9011
  // dist/rules/uppercase-iife.js
8465
9012
  var import_eslint_plugin_unicorn4 = __toESM(require("eslint-plugin-unicorn"), 1);
8466
- var rule128 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn4.default, "no-unreadable-iife", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/uppercase-iife");
8467
- var deprecatedRule28 = withDeprecatedRuleLifecycle(rule128, {
9013
+ var rule131 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_unicorn4.default, "no-unreadable-iife", "eslint-plugin-unicorn"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/uppercase-iife");
9014
+ var deprecatedRule28 = withDeprecatedRuleLifecycle(rule131, {
8468
9015
  message: "Deprecated in favor of unicorn/no-unreadable-iife.",
8469
9016
  replacedBy: [
8470
9017
  createReplacementRuleInfo({
@@ -8484,8 +9031,8 @@ var uppercase_iife_default = deprecatedRule28;
8484
9031
 
8485
9032
  // dist/rules/words.js
8486
9033
  var import_eslint_plugin_write_good_comments_2 = __toESM(require("eslint-plugin-write-good-comments-2"), 1);
8487
- var rule129 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_write_good_comments_2.default, "write-good-comments", "eslint-plugin-write-good-comments-2"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/words");
8488
- var deprecatedRule29 = withDeprecatedRuleLifecycle(rule129, {
9034
+ var rule132 = adaptExternalRule(getExternalRuleFromPlugin(import_eslint_plugin_write_good_comments_2.default, "write-good-comments", "eslint-plugin-write-good-comments-2"), "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/words");
9035
+ var deprecatedRule29 = withDeprecatedRuleLifecycle(rule132, {
8489
9036
  message: "Deprecated in favor of write-good-comments/write-good-comments.",
8490
9037
  replacedBy: [
8491
9038
  createReplacementRuleInfo({
@@ -8521,6 +9068,7 @@ var recommendedRuleNames = /* @__PURE__ */ new Set([
8521
9068
  "consistent-optional-props",
8522
9069
  "no-assign-mutated-array",
8523
9070
  "no-const-enum",
9071
+ "no-function-declare-after-return",
8524
9072
  "no-implicit-any-catch",
8525
9073
  "no-internal",
8526
9074
  "no-t",
@@ -8528,6 +9076,7 @@ var recommendedRuleNames = /* @__PURE__ */ new Set([
8528
9076
  "no-unnecessary-break",
8529
9077
  "no-unnecessary-initialization",
8530
9078
  "no-unnecessary-template-literal",
9079
+ "no-vulnerable",
8531
9080
  "throw-error",
8532
9081
  "typescript/no-boolean-literal-type",
8533
9082
  "typescript/prefer-readonly-array",
@@ -8566,6 +9115,7 @@ var baseRules = {
8566
9115
  "no-enum": no_enum_default,
8567
9116
  "no-expression-empty-lines": no_expression_empty_lines_default,
8568
9117
  "no-foreach": no_foreach_default,
9118
+ "no-function-declare-after-return": no_function_declare_after_return_default,
8569
9119
  "no-implicit-any-catch": no_implicit_any_catch_default,
8570
9120
  "no-index-import": no_index_import_default,
8571
9121
  "no-internal": no_internal_default,
@@ -8590,8 +9140,10 @@ var baseRules = {
8590
9140
  "no-unnecessary-initialization": no_unnecessary_initialization_default,
8591
9141
  "no-unnecessary-template-literal": no_unnecessary_template_literal_default,
8592
9142
  "no-unused-disable": no_unused_disable_default,
9143
+ "no-use-extend-native": no_use_extend_native_default,
8593
9144
  "no-useless-generics": no_useless_generics_default,
8594
9145
  "no-value-tostring": no_value_tostring_default,
9146
+ "no-vulnerable": no_vulnerable_default,
8595
9147
  "no-writeonly": no_writeonly_default,
8596
9148
  "object-format": object_format_default,
8597
9149
  "only-export-name": only_export_name_default,
@@ -8672,7 +9224,7 @@ var baseRules = {
8672
9224
  "uppercase-iife": uppercase_iife_default,
8673
9225
  words: words_default
8674
9226
  };
8675
- var ruleCatalog = buildRuleCatalog((0, import_ts_extras65.objectKeys)(baseRules));
9227
+ var ruleCatalog = buildRuleCatalog((0, import_ts_extras68.objectKeys)(baseRules));
8676
9228
  var ruleCatalogEntries = ruleCatalog.ordered;
8677
9229
  var ruleCatalogByRuleName = ruleCatalog.byRuleName;
8678
9230
  var ruleCatalogByDocId = ruleCatalog.byDocId;
@@ -8681,8 +9233,8 @@ var withCatalogDocsMetadata = (ruleName, ruleModule) => {
8681
9233
  if (!catalogEntry) {
8682
9234
  throw new Error(`Missing rule catalog entry for rule "${ruleName}".`);
8683
9235
  }
8684
- const currentDocsMetadata = (0, import_ts_extras65.safeCastTo)(ruleModule.meta.docs ?? {});
8685
- const hasRequiredTypeChecking = (0, import_ts_extras65.setHas)(rulesWithRequiredTypeChecking, ruleName);
9236
+ const currentDocsMetadata = (0, import_ts_extras68.safeCastTo)(ruleModule.meta.docs ?? {});
9237
+ const hasRequiredTypeChecking = (0, import_ts_extras68.setHas)(rulesWithRequiredTypeChecking, ruleName);
8686
9238
  const deprecatedMetadata = ruleModule.meta.deprecated ?? false;
8687
9239
  const isDeprecatedRule = deprecatedMetadata !== false;
8688
9240
  const docsWithCatalogMetadata = {
@@ -8691,7 +9243,7 @@ var withCatalogDocsMetadata = (ruleName, ruleModule) => {
8691
9243
  catalogIndex: catalogEntry.catalogIndex,
8692
9244
  deprecated: currentDocsMetadata.deprecated ?? isDeprecatedRule,
8693
9245
  frozen: currentDocsMetadata.frozen ?? currentDocsMetadata.deprecated ?? isDeprecatedRule,
8694
- recommended: (0, import_ts_extras65.setHas)(recommendedRuleNames, ruleName),
9246
+ recommended: (0, import_ts_extras68.setHas)(recommendedRuleNames, ruleName),
8695
9247
  requiresTypeChecking: currentDocsMetadata.requiresTypeChecking ?? hasRequiredTypeChecking,
8696
9248
  ruleName
8697
9249
  };
@@ -8704,7 +9256,7 @@ var withCatalogDocsMetadata = (ruleName, ruleModule) => {
8704
9256
  }
8705
9257
  };
8706
9258
  };
8707
- var decoratedRuleEntries = (0, import_ts_extras65.objectEntries)(baseRules).map(([ruleName, ruleModule]) => [ruleName, withCatalogDocsMetadata(ruleName, ruleModule)]);
9259
+ var decoratedRuleEntries = (0, import_ts_extras68.objectEntries)(baseRules).map(([ruleName, ruleModule]) => [ruleName, withCatalogDocsMetadata(ruleName, ruleModule)]);
8708
9260
  var decoratedRulesAccumulator = {};
8709
9261
  for (const [ruleName, ruleModule] of decoratedRuleEntries) {
8710
9262
  decoratedRulesAccumulator = {
@@ -8716,35 +9268,39 @@ var decoratedRules = decoratedRulesAccumulator;
8716
9268
  var rules = Object.freeze(decoratedRules);
8717
9269
 
8718
9270
  // dist/configs/all-strict.js
8719
- var allStrictRuleEntries = (0, import_ts_extras66.objectEntries)(rules).map(([ruleName, ruleModule]) => [
9271
+ var allStrictRuleEntries = (0, import_ts_extras69.objectEntries)(rules).map(([ruleName, ruleModule]) => [
8720
9272
  `etc-misc/${ruleName}`,
8721
9273
  ruleModule.meta.deprecated === false ? "error" : "warn"
8722
9274
  ]);
8723
- var allStrictRules = (0, import_ts_extras66.objectFromEntries)(allStrictRuleEntries);
9275
+ var allStrictRules = (0, import_ts_extras69.objectFromEntries)(allStrictRuleEntries);
8724
9276
  var allStrict = {
9277
+ name: "etc-misc/all-strict",
8725
9278
  rules: allStrictRules
8726
9279
  };
8727
9280
 
8728
9281
  // dist/configs/all.js
8729
- var import_ts_extras67 = require("ts-extras");
9282
+ var import_ts_extras70 = require("ts-extras");
8730
9283
  var getAllPresetSeverity = (ruleModule) => {
8731
9284
  if (ruleModule.meta.deprecated !== false) {
8732
9285
  return "warn";
8733
9286
  }
8734
9287
  return ruleModule.meta.type === "problem" ? "error" : "warn";
8735
9288
  };
8736
- var allRuleEntries = (0, import_ts_extras67.objectEntries)(rules).map(([ruleName, ruleModule]) => [`etc-misc/${ruleName}`, getAllPresetSeverity(ruleModule)]);
8737
- var allRules = (0, import_ts_extras67.objectFromEntries)(allRuleEntries);
9289
+ var allRuleEntries = (0, import_ts_extras70.objectEntries)(rules).map(([ruleName, ruleModule]) => [`etc-misc/${ruleName}`, getAllPresetSeverity(ruleModule)]);
9290
+ var allRules = (0, import_ts_extras70.objectFromEntries)(allRuleEntries);
8738
9291
  var all = {
9292
+ name: "etc-misc/all",
8739
9293
  rules: allRules
8740
9294
  };
8741
9295
 
8742
9296
  // dist/configs/minimal.js
8743
9297
  var minimal = {
9298
+ name: "etc-misc/minimal",
8744
9299
  rules: {
8745
9300
  "etc-misc/consistent-optional-props": "warn",
8746
9301
  "etc-misc/no-assign-mutated-array": "error",
8747
9302
  "etc-misc/no-const-enum": "warn",
9303
+ "etc-misc/no-function-declare-after-return": "warn",
8748
9304
  "etc-misc/no-implicit-any-catch": "error",
8749
9305
  "etc-misc/no-internal": "error",
8750
9306
  "etc-misc/no-t": "error",
@@ -8752,6 +9308,7 @@ var minimal = {
8752
9308
  "etc-misc/no-unnecessary-break": "warn",
8753
9309
  "etc-misc/no-unnecessary-initialization": "warn",
8754
9310
  "etc-misc/no-unnecessary-template-literal": "warn",
9311
+ "etc-misc/no-vulnerable": "error",
8755
9312
  "etc-misc/throw-error": "error",
8756
9313
  "etc-misc/typescript/no-boolean-literal-type": "error",
8757
9314
  "etc-misc/typescript/require-readonly-array-return-type": "warn",
@@ -8761,10 +9318,12 @@ var minimal = {
8761
9318
 
8762
9319
  // dist/configs/recommended.js
8763
9320
  var recommended = {
9321
+ name: "etc-misc/recommended",
8764
9322
  rules: {
8765
9323
  "etc-misc/consistent-optional-props": "warn",
8766
9324
  "etc-misc/no-assign-mutated-array": "error",
8767
9325
  "etc-misc/no-const-enum": "warn",
9326
+ "etc-misc/no-function-declare-after-return": "warn",
8768
9327
  "etc-misc/no-implicit-any-catch": "error",
8769
9328
  "etc-misc/no-internal": "error",
8770
9329
  "etc-misc/no-t": "error",
@@ -8772,6 +9331,7 @@ var recommended = {
8772
9331
  "etc-misc/no-unnecessary-break": "warn",
8773
9332
  "etc-misc/no-unnecessary-initialization": "warn",
8774
9333
  "etc-misc/no-unnecessary-template-literal": "warn",
9334
+ "etc-misc/no-vulnerable": "error",
8775
9335
  "etc-misc/throw-error": "error",
8776
9336
  "etc-misc/typescript/no-boolean-literal-type": "error",
8777
9337
  "etc-misc/typescript/prefer-readonly-array": "warn",
@@ -8787,18 +9347,19 @@ var recommended = {
8787
9347
  };
8788
9348
 
8789
9349
  // dist/configs/strict-type-checked.js
8790
- var import_ts_extras69 = require("ts-extras");
9350
+ var import_ts_extras72 = require("ts-extras");
8791
9351
 
8792
9352
  // dist/configs/strict.js
8793
- var import_ts_extras68 = require("ts-extras");
8794
- var recommendedRuleNames2 = (0, import_ts_extras68.safeCastTo)((0, import_ts_extras68.objectKeys)(recommended.rules));
8795
- var strictRules = (0, import_ts_extras68.objectFromEntries)(recommendedRuleNames2.map((ruleName) => [ruleName, "error"]));
9353
+ var import_ts_extras71 = require("ts-extras");
9354
+ var recommendedRuleNames2 = (0, import_ts_extras71.safeCastTo)((0, import_ts_extras71.objectKeys)(recommended.rules));
9355
+ var strictRules = (0, import_ts_extras71.objectFromEntries)(recommendedRuleNames2.map((ruleName) => [ruleName, "error"]));
8796
9356
  var strict = {
9357
+ name: "etc-misc/strict",
8797
9358
  rules: strictRules
8798
9359
  };
8799
9360
 
8800
9361
  // dist/configs/strict-type-checked.js
8801
- var additionalTypeCheckedRuleEntries = (0, import_ts_extras69.objectEntries)(rules).flatMap(([ruleName, ruleModule]) => {
9362
+ var additionalTypeCheckedRuleEntries = (0, import_ts_extras72.objectEntries)(rules).flatMap(([ruleName, ruleModule]) => {
8802
9363
  if (ruleModule.meta.deprecated !== false) {
8803
9364
  return [];
8804
9365
  }
@@ -8807,14 +9368,14 @@ var additionalTypeCheckedRuleEntries = (0, import_ts_extras69.objectEntries)(rul
8807
9368
  return [];
8808
9369
  }
8809
9370
  const qualifiedRuleName = `etc-misc/${ruleName}`;
8810
- if ((0, import_ts_extras69.keyIn)(strict.rules, qualifiedRuleName)) {
9371
+ if ((0, import_ts_extras72.keyIn)(strict.rules, qualifiedRuleName)) {
8811
9372
  return [];
8812
9373
  }
8813
9374
  return [[qualifiedRuleName, "error"]];
8814
9375
  });
8815
9376
  var strictTypeCheckedRules = {
8816
9377
  ...strict.rules,
8817
- ...(0, import_ts_extras69.objectFromEntries)(additionalTypeCheckedRuleEntries)
9378
+ ...(0, import_ts_extras72.objectFromEntries)(additionalTypeCheckedRuleEntries)
8818
9379
  };
8819
9380
  var strictTypeChecked = {
8820
9381
  languageOptions: {
@@ -8822,6 +9383,7 @@ var strictTypeChecked = {
8822
9383
  projectService: true
8823
9384
  }
8824
9385
  },
9386
+ name: "etc-misc/strict-type-checked",
8825
9387
  rules: strictTypeCheckedRules
8826
9388
  };
8827
9389
 
@@ -8831,6 +9393,7 @@ var pluginReference = {
8831
9393
  rules
8832
9394
  };
8833
9395
  var withPluginReference = (config) => ({
9396
+ name: config.name,
8834
9397
  plugins: {
8835
9398
  [pluginMeta.namespace]: pluginReference
8836
9399
  },