@sarj/eslint-plugin 9.7.1 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3462,17 +3462,110 @@ var no_raw_fetch_outside_clients_default = createRule({
3462
3462
  }
3463
3463
  });
3464
3464
 
3465
+ // src/rules/no-restricted-library-load.ts
3466
+ import { AST_NODE_TYPES as AST_NODE_TYPES15, ASTUtils as ASTUtils2 } from "@typescript-eslint/utils";
3467
+ function literalModule(node) {
3468
+ return node?.type === AST_NODE_TYPES15.Literal && typeof node.value === "string" ? node.value : null;
3469
+ }
3470
+ function matchesModule(source, module) {
3471
+ return source === module || source.startsWith(`${module}/`);
3472
+ }
3473
+ var no_restricted_library_load_default = createRule({
3474
+ name: "no-restricted-library-load",
3475
+ meta: {
3476
+ type: "problem",
3477
+ docs: {
3478
+ description: "Apply a configured library-replacement policy to literal dynamic imports, CommonJS loads, and TypeScript import-equals declarations."
3479
+ },
3480
+ schema: [
3481
+ {
3482
+ type: "object",
3483
+ additionalProperties: false,
3484
+ required: ["libraries"],
3485
+ properties: {
3486
+ libraries: {
3487
+ type: "array",
3488
+ items: {
3489
+ type: "object",
3490
+ additionalProperties: false,
3491
+ required: ["id", "module", "replacement"],
3492
+ properties: {
3493
+ id: { type: "string", minLength: 1 },
3494
+ module: { type: "string", minLength: 1 },
3495
+ replacement: { type: "string", minLength: 1 },
3496
+ note: { type: "string", minLength: 1 }
3497
+ }
3498
+ }
3499
+ }
3500
+ }
3501
+ }
3502
+ ],
3503
+ messages: {
3504
+ restrictedLibraryLoad: "{{id}}: Replace runtime loading of {{module}} with {{replacement}}.{{note}}"
3505
+ }
3506
+ },
3507
+ defaultOptions: [{ libraries: [] }],
3508
+ create(context, [options]) {
3509
+ const restrictions = options.libraries;
3510
+ function report(node, source) {
3511
+ const restriction = restrictions.find(
3512
+ (entry) => matchesModule(source, entry.module)
3513
+ );
3514
+ if (restriction === void 0) return;
3515
+ context.report({
3516
+ node,
3517
+ messageId: "restrictedLibraryLoad",
3518
+ data: {
3519
+ id: restriction.id,
3520
+ module: restriction.module,
3521
+ replacement: restriction.replacement,
3522
+ note: restriction.note === void 0 ? "" : ` ${restriction.note}`
3523
+ }
3524
+ });
3525
+ }
3526
+ function isUnshadowedRequire(node) {
3527
+ const variable = ASTUtils2.findVariable(
3528
+ context.sourceCode.getScope(node),
3529
+ node.name
3530
+ );
3531
+ return variable === null || variable.defs.length === 0;
3532
+ }
3533
+ return {
3534
+ ImportExpression(node) {
3535
+ const source = literalModule(node.source);
3536
+ if (source !== null) report(node.source, source);
3537
+ },
3538
+ CallExpression(node) {
3539
+ let requireIdentifier = null;
3540
+ if (node.callee.type === AST_NODE_TYPES15.Identifier && node.callee.name === "require") {
3541
+ requireIdentifier = node.callee;
3542
+ } else if (node.callee.type === AST_NODE_TYPES15.MemberExpression && !node.callee.computed && node.callee.object.type === AST_NODE_TYPES15.Identifier && node.callee.object.name === "require" && node.callee.property.type === AST_NODE_TYPES15.Identifier && node.callee.property.name === "resolve") {
3543
+ requireIdentifier = node.callee.object;
3544
+ }
3545
+ if (requireIdentifier === null || !isUnshadowedRequire(requireIdentifier)) return;
3546
+ const source = literalModule(node.arguments[0]);
3547
+ if (source !== null) report(node.arguments[0], source);
3548
+ },
3549
+ TSImportEqualsDeclaration(node) {
3550
+ if (node.moduleReference.type !== AST_NODE_TYPES15.TSExternalModuleReference) return;
3551
+ const source = literalModule(node.moduleReference.expression);
3552
+ if (source !== null) report(node.moduleReference.expression, source);
3553
+ }
3554
+ };
3555
+ }
3556
+ });
3557
+
3465
3558
  // src/rules/no-repeated-string-literal.ts
3466
- import { AST_NODE_TYPES as AST_NODE_TYPES15 } from "@typescript-eslint/utils";
3559
+ import { AST_NODE_TYPES as AST_NODE_TYPES16 } from "@typescript-eslint/utils";
3467
3560
  var MIN_LENGTH = 40;
3468
3561
  var MIN_DISTINCT_SCOPES = 2;
3469
3562
  var PREVIEW_LENGTH = 40;
3470
3563
  var SQL_KEYWORD_RE = /\b(SELECT|INSERT|UPDATE|DELETE|FROM|WHERE|JOIN|VALUES|ON CONFLICT|RETURNING|GROUP BY|ORDER BY)\b/;
3471
3564
  var IDENTIFIER_RE = /^[a-z_][a-z0-9_.]*$/;
3472
3565
  var FUNCTION_TYPES3 = /* @__PURE__ */ new Set([
3473
- AST_NODE_TYPES15.FunctionDeclaration,
3474
- AST_NODE_TYPES15.FunctionExpression,
3475
- AST_NODE_TYPES15.ArrowFunctionExpression
3566
+ AST_NODE_TYPES16.FunctionDeclaration,
3567
+ AST_NODE_TYPES16.FunctionExpression,
3568
+ AST_NODE_TYPES16.ArrowFunctionExpression
3476
3569
  ]);
3477
3570
  function isStructured(value) {
3478
3571
  return value.includes("\n") || SQL_KEYWORD_RE.test(value) || IDENTIFIER_RE.test(value);
@@ -3494,8 +3587,8 @@ function isScaffolding(node) {
3494
3587
  if (parent === void 0) {
3495
3588
  return true;
3496
3589
  }
3497
- const isRequireSource = parent.type === AST_NODE_TYPES15.CallExpression && parent.callee.type === AST_NODE_TYPES15.Identifier && parent.callee.name === "require";
3498
- return parent.type === AST_NODE_TYPES15.ImportDeclaration || parent.type === AST_NODE_TYPES15.ImportExpression || parent.type === AST_NODE_TYPES15.ExportNamedDeclaration || parent.type === AST_NODE_TYPES15.ExportAllDeclaration || parent.type === AST_NODE_TYPES15.TSImportType || parent.type === AST_NODE_TYPES15.JSXAttribute || parent.type === AST_NODE_TYPES15.TSLiteralType || isRequireSource;
3590
+ const isRequireSource = parent.type === AST_NODE_TYPES16.CallExpression && parent.callee.type === AST_NODE_TYPES16.Identifier && parent.callee.name === "require";
3591
+ return parent.type === AST_NODE_TYPES16.ImportDeclaration || parent.type === AST_NODE_TYPES16.ImportExpression || parent.type === AST_NODE_TYPES16.ExportNamedDeclaration || parent.type === AST_NODE_TYPES16.ExportAllDeclaration || parent.type === AST_NODE_TYPES16.TSImportType || parent.type === AST_NODE_TYPES16.JSXAttribute || parent.type === AST_NODE_TYPES16.TSLiteralType || isRequireSource;
3499
3592
  }
3500
3593
  var no_repeated_string_literal_default = createRule({
3501
3594
  name: "no-repeated-string-literal",
@@ -3535,7 +3628,7 @@ var no_repeated_string_literal_default = createRule({
3535
3628
  }
3536
3629
  },
3537
3630
  TemplateLiteral(node) {
3538
- if (node.parent.type === AST_NODE_TYPES15.TaggedTemplateExpression) {
3631
+ if (node.parent.type === AST_NODE_TYPES16.TaggedTemplateExpression) {
3539
3632
  return;
3540
3633
  }
3541
3634
  const [only] = node.quasis;
@@ -3569,7 +3662,7 @@ var no_repeated_string_literal_default = createRule({
3569
3662
  });
3570
3663
 
3571
3664
  // src/rules/no-restated-comment.ts
3572
- import { AST_NODE_TYPES as AST_NODE_TYPES16 } from "@typescript-eslint/utils";
3665
+ import { AST_NODE_TYPES as AST_NODE_TYPES17 } from "@typescript-eslint/utils";
3573
3666
  var MAX_WORDS = 8;
3574
3667
  var MIN_CONTENT_TOKENS = 2;
3575
3668
  var DIRECTIVE_RE3 = /^(eslint\b|eslint-|sarj-noqa\b|@ts-|prettier-ignore|prettier\b|biome-|c8\b|v8\b|istanbul\b|@type\b|@vite|webpack|<reference|<amd|global\b|noinspection|todo\b|fixme\b|hack\b|xxx\b)/i;
@@ -3622,7 +3715,7 @@ var no_restated_comment_default = createRule({
3622
3715
  function labelsASiblingRun(comment) {
3623
3716
  const token = sourceCode.getTokenAfter(comment, { includeComments: false });
3624
3717
  if (token === null) return false;
3625
- for (let node = sourceCode.getNodeByRangeIndex(token.range[0]); node != null && node.type !== AST_NODE_TYPES16.Program; node = node.parent) {
3718
+ for (let node = sourceCode.getNodeByRangeIndex(token.range[0]); node != null && node.type !== AST_NODE_TYPES17.Program; node = node.parent) {
3626
3719
  if (headsSiblingRun(node)) return true;
3627
3720
  }
3628
3721
  return false;
@@ -3682,7 +3775,7 @@ var no_restated_comment_default = createRule({
3682
3775
  });
3683
3776
 
3684
3777
  // src/rules/no-restated-jsdoc.ts
3685
- import { AST_NODE_TYPES as AST_NODE_TYPES17 } from "@typescript-eslint/utils";
3778
+ import { AST_NODE_TYPES as AST_NODE_TYPES18 } from "@typescript-eslint/utils";
3686
3779
  var MODELLED_TAGS = /* @__PURE__ */ new Set([
3687
3780
  "arg",
3688
3781
  "argument",
@@ -3736,30 +3829,30 @@ function declarationNames(node) {
3736
3829
  switch (node.type) {
3737
3830
  // `export function f()` — the JSDoc sits above the `export`, so the token
3738
3831
  // after it resolves to the wrapper, not to the thing being documented.
3739
- case AST_NODE_TYPES17.ExportNamedDeclaration:
3740
- case AST_NODE_TYPES17.ExportDefaultDeclaration:
3832
+ case AST_NODE_TYPES18.ExportNamedDeclaration:
3833
+ case AST_NODE_TYPES18.ExportDefaultDeclaration:
3741
3834
  return node.declaration == null ? null : declarationNames(node.declaration);
3742
- case AST_NODE_TYPES17.FunctionDeclaration:
3743
- case AST_NODE_TYPES17.TSDeclareFunction:
3835
+ case AST_NODE_TYPES18.FunctionDeclaration:
3836
+ case AST_NODE_TYPES18.TSDeclareFunction:
3744
3837
  return node.id === null ? null : { name: node.id.name, params: paramNames(node.params) };
3745
- case AST_NODE_TYPES17.ClassDeclaration:
3746
- case AST_NODE_TYPES17.TSInterfaceDeclaration:
3747
- case AST_NODE_TYPES17.TSTypeAliasDeclaration:
3748
- case AST_NODE_TYPES17.TSEnumDeclaration:
3838
+ case AST_NODE_TYPES18.ClassDeclaration:
3839
+ case AST_NODE_TYPES18.TSInterfaceDeclaration:
3840
+ case AST_NODE_TYPES18.TSTypeAliasDeclaration:
3841
+ case AST_NODE_TYPES18.TSEnumDeclaration:
3749
3842
  return node.id === null ? null : { name: node.id.name, params: [] };
3750
- case AST_NODE_TYPES17.VariableDeclaration: {
3843
+ case AST_NODE_TYPES18.VariableDeclaration: {
3751
3844
  const declarator = node.declarations[0];
3752
- if (declarator === void 0 || declarator.id.type !== AST_NODE_TYPES17.Identifier) return null;
3845
+ if (declarator === void 0 || declarator.id.type !== AST_NODE_TYPES18.Identifier) return null;
3753
3846
  const init = declarator.init;
3754
- const params = init != null && (init.type === AST_NODE_TYPES17.ArrowFunctionExpression || init.type === AST_NODE_TYPES17.FunctionExpression) ? paramNames(init.params) : [];
3847
+ const params = init != null && (init.type === AST_NODE_TYPES18.ArrowFunctionExpression || init.type === AST_NODE_TYPES18.FunctionExpression) ? paramNames(init.params) : [];
3755
3848
  return { name: declarator.id.name, params };
3756
3849
  }
3757
- case AST_NODE_TYPES17.MethodDefinition:
3758
- case AST_NODE_TYPES17.PropertyDefinition:
3759
- case AST_NODE_TYPES17.TSMethodSignature:
3760
- case AST_NODE_TYPES17.TSPropertySignature: {
3761
- if (node.key.type !== AST_NODE_TYPES17.Identifier) return null;
3762
- const params = node.type === AST_NODE_TYPES17.MethodDefinition ? paramNames(node.value.params) : node.type === AST_NODE_TYPES17.TSMethodSignature ? paramNames(node.params) : [];
3850
+ case AST_NODE_TYPES18.MethodDefinition:
3851
+ case AST_NODE_TYPES18.PropertyDefinition:
3852
+ case AST_NODE_TYPES18.TSMethodSignature:
3853
+ case AST_NODE_TYPES18.TSPropertySignature: {
3854
+ if (node.key.type !== AST_NODE_TYPES18.Identifier) return null;
3855
+ const params = node.type === AST_NODE_TYPES18.MethodDefinition ? paramNames(node.value.params) : node.type === AST_NODE_TYPES18.TSMethodSignature ? paramNames(node.params) : [];
3763
3856
  return { name: node.key.name, params };
3764
3857
  }
3765
3858
  default:
@@ -3769,9 +3862,9 @@ function declarationNames(node) {
3769
3862
  function paramNames(params) {
3770
3863
  const names = [];
3771
3864
  for (const param of params) {
3772
- const target = param.type === AST_NODE_TYPES17.AssignmentPattern ? param.left : param;
3773
- if (target.type === AST_NODE_TYPES17.Identifier) names.push(target.name);
3774
- else if (target.type === AST_NODE_TYPES17.TSParameterProperty) continue;
3865
+ const target = param.type === AST_NODE_TYPES18.AssignmentPattern ? param.left : param;
3866
+ if (target.type === AST_NODE_TYPES18.Identifier) names.push(target.name);
3867
+ else if (target.type === AST_NODE_TYPES18.TSParameterProperty) continue;
3775
3868
  }
3776
3869
  return names;
3777
3870
  }
@@ -3813,7 +3906,7 @@ var no_restated_jsdoc_default = createRule({
3813
3906
  if (token === null || token.loc.start.line !== comment.loc.end.line + 1) continue;
3814
3907
  let node = sourceCode.getNodeByRangeIndex(token.range[0]);
3815
3908
  let declaration = null;
3816
- while (node != null && node.type !== AST_NODE_TYPES17.Program) {
3909
+ while (node != null && node.type !== AST_NODE_TYPES18.Program) {
3817
3910
  declaration = declarationNames(node);
3818
3911
  if (declaration !== null) break;
3819
3912
  node = node.parent ?? null;
@@ -4272,12 +4365,12 @@ var no_select_star_default = createRule({
4272
4365
  });
4273
4366
 
4274
4367
  // src/rules/no-sentinel-return-on-catch.ts
4275
- import { AST_NODE_TYPES as AST_NODE_TYPES18 } from "@typescript-eslint/utils";
4368
+ import { AST_NODE_TYPES as AST_NODE_TYPES19 } from "@typescript-eslint/utils";
4276
4369
  function sentinelKind(arg) {
4277
4370
  if (arg === null) {
4278
4371
  return null;
4279
4372
  }
4280
- if (arg.type === AST_NODE_TYPES18.Literal) {
4373
+ if (arg.type === AST_NODE_TYPES19.Literal) {
4281
4374
  if (arg.value === null) {
4282
4375
  return "nullish";
4283
4376
  }
@@ -4289,13 +4382,13 @@ function sentinelKind(arg) {
4289
4382
  }
4290
4383
  return null;
4291
4384
  }
4292
- if (arg.type === AST_NODE_TYPES18.Identifier && arg.name === "undefined") {
4385
+ if (arg.type === AST_NODE_TYPES19.Identifier && arg.name === "undefined") {
4293
4386
  return "nullish";
4294
4387
  }
4295
- if (arg.type === AST_NODE_TYPES18.ArrayExpression) {
4388
+ if (arg.type === AST_NODE_TYPES19.ArrayExpression) {
4296
4389
  return "array";
4297
4390
  }
4298
- if (arg.type === AST_NODE_TYPES18.ObjectExpression) {
4391
+ if (arg.type === AST_NODE_TYPES19.ObjectExpression) {
4299
4392
  return "object";
4300
4393
  }
4301
4394
  return null;
@@ -4304,25 +4397,25 @@ function isSentinelArgument(arg) {
4304
4397
  if (arg === null) {
4305
4398
  return false;
4306
4399
  }
4307
- if (arg.type === AST_NODE_TYPES18.Literal && arg.value === null) {
4400
+ if (arg.type === AST_NODE_TYPES19.Literal && arg.value === null) {
4308
4401
  return true;
4309
4402
  }
4310
- if (arg.type === AST_NODE_TYPES18.Literal && arg.value === false) {
4403
+ if (arg.type === AST_NODE_TYPES19.Literal && arg.value === false) {
4311
4404
  return true;
4312
4405
  }
4313
- if (arg.type === AST_NODE_TYPES18.Identifier && arg.name === "undefined") {
4406
+ if (arg.type === AST_NODE_TYPES19.Identifier && arg.name === "undefined") {
4314
4407
  return true;
4315
4408
  }
4316
- if (arg.type === AST_NODE_TYPES18.ArrayExpression && arg.elements.length === 0) {
4409
+ if (arg.type === AST_NODE_TYPES19.ArrayExpression && arg.elements.length === 0) {
4317
4410
  return true;
4318
4411
  }
4319
- if (arg.type === AST_NODE_TYPES18.ObjectExpression && arg.properties.length === 0) {
4412
+ if (arg.type === AST_NODE_TYPES19.ObjectExpression && arg.properties.length === 0) {
4320
4413
  return true;
4321
4414
  }
4322
4415
  return false;
4323
4416
  }
4324
4417
  function isFunctionNode(node) {
4325
- return node.type === AST_NODE_TYPES18.FunctionDeclaration || node.type === AST_NODE_TYPES18.FunctionExpression || node.type === AST_NODE_TYPES18.ArrowFunctionExpression;
4418
+ return node.type === AST_NODE_TYPES19.FunctionDeclaration || node.type === AST_NODE_TYPES19.FunctionExpression || node.type === AST_NODE_TYPES19.ArrowFunctionExpression;
4326
4419
  }
4327
4420
  function isNode3(value) {
4328
4421
  return typeof value === "object" && value !== null && typeof value.type === "string";
@@ -4362,24 +4455,24 @@ function walkWithinScope(node, visit) {
4362
4455
  function containsThrow(node) {
4363
4456
  return walkWithinScope(
4364
4457
  node,
4365
- (current) => current.type === AST_NODE_TYPES18.ThrowStatement
4458
+ (current) => current.type === AST_NODE_TYPES19.ThrowStatement
4366
4459
  );
4367
4460
  }
4368
4461
  function bindsName(param, name) {
4369
4462
  switch (param.type) {
4370
- case AST_NODE_TYPES18.Identifier:
4463
+ case AST_NODE_TYPES19.Identifier:
4371
4464
  return param.name === name;
4372
- case AST_NODE_TYPES18.AssignmentPattern:
4465
+ case AST_NODE_TYPES19.AssignmentPattern:
4373
4466
  return bindsName(param.left, name);
4374
- case AST_NODE_TYPES18.RestElement:
4467
+ case AST_NODE_TYPES19.RestElement:
4375
4468
  return bindsName(param.argument, name);
4376
- case AST_NODE_TYPES18.ArrayPattern:
4469
+ case AST_NODE_TYPES19.ArrayPattern:
4377
4470
  return param.elements.some(
4378
4471
  (element) => element !== null && bindsName(element, name)
4379
4472
  );
4380
- case AST_NODE_TYPES18.ObjectPattern:
4473
+ case AST_NODE_TYPES19.ObjectPattern:
4381
4474
  return param.properties.some(
4382
- (property) => property.type === AST_NODE_TYPES18.RestElement ? bindsName(property.argument, name) : bindsName(property.value, name)
4475
+ (property) => property.type === AST_NODE_TYPES19.RestElement ? bindsName(property.argument, name) : bindsName(property.value, name)
4383
4476
  );
4384
4477
  default:
4385
4478
  return false;
@@ -4394,7 +4487,7 @@ function subtreeReadsName(node, name) {
4394
4487
  if (found) {
4395
4488
  return;
4396
4489
  }
4397
- if (current.type === AST_NODE_TYPES18.Identifier && current.name === name) {
4490
+ if (current.type === AST_NODE_TYPES19.Identifier && current.name === name) {
4398
4491
  found = true;
4399
4492
  return;
4400
4493
  }
@@ -4405,10 +4498,10 @@ function subtreeReadsName(node, name) {
4405
4498
  if (key === "parent") {
4406
4499
  continue;
4407
4500
  }
4408
- if (key === "key" && current.type === AST_NODE_TYPES18.Property && !current.computed) {
4501
+ if (key === "key" && current.type === AST_NODE_TYPES19.Property && !current.computed) {
4409
4502
  continue;
4410
4503
  }
4411
- if (key === "property" && current.type === AST_NODE_TYPES18.MemberExpression && !current.computed) {
4504
+ if (key === "property" && current.type === AST_NODE_TYPES19.MemberExpression && !current.computed) {
4412
4505
  continue;
4413
4506
  }
4414
4507
  const value = current[key];
@@ -4441,10 +4534,10 @@ var SAFE_PARSE_CONSTRUCTORS = /* @__PURE__ */ new Set([
4441
4534
  "URLPattern"
4442
4535
  ]);
4443
4536
  function isParseShapedNode(node) {
4444
- if (node.type === AST_NODE_TYPES18.CallExpression && node.callee.type === AST_NODE_TYPES18.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES18.Identifier) {
4537
+ if (node.type === AST_NODE_TYPES19.CallExpression && node.callee.type === AST_NODE_TYPES19.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES19.Identifier) {
4445
4538
  return node.callee.property.name === "parse";
4446
4539
  }
4447
- if (node.type === AST_NODE_TYPES18.NewExpression && node.callee.type === AST_NODE_TYPES18.Identifier) {
4540
+ if (node.type === AST_NODE_TYPES19.NewExpression && node.callee.type === AST_NODE_TYPES19.Identifier) {
4448
4541
  return SAFE_PARSE_CONSTRUCTORS.has(node.callee.name);
4449
4542
  }
4450
4543
  return false;
@@ -4455,10 +4548,10 @@ var BODY_DECODE_METHODS = /* @__PURE__ */ new Set([
4455
4548
  "arrayBuffer"
4456
4549
  ]);
4457
4550
  function isBodyDecodeNode(node) {
4458
- return node.type === AST_NODE_TYPES18.CallExpression && node.callee.type === AST_NODE_TYPES18.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES18.Identifier && BODY_DECODE_METHODS.has(node.callee.property.name);
4551
+ return node.type === AST_NODE_TYPES19.CallExpression && node.callee.type === AST_NODE_TYPES19.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES19.Identifier && BODY_DECODE_METHODS.has(node.callee.property.name);
4459
4552
  }
4460
4553
  function returnsMatching(stmt, predicate) {
4461
- return stmt.type === AST_NODE_TYPES18.ReturnStatement && stmt.argument !== null && walkWithinScope(stmt.argument, predicate);
4554
+ return stmt.type === AST_NODE_TYPES19.ReturnStatement && stmt.argument !== null && walkWithinScope(stmt.argument, predicate);
4462
4555
  }
4463
4556
  function enclosingReturnTypeNode(node) {
4464
4557
  let current = node.parent;
@@ -4476,11 +4569,11 @@ function enclosingFunctionName(node) {
4476
4569
  let current = node.parent;
4477
4570
  while (current !== void 0 && current !== null) {
4478
4571
  if (isFunctionNode(current)) {
4479
- if ("id" in current && isNode3(current.id) && current.id.type === AST_NODE_TYPES18.Identifier) {
4572
+ if ("id" in current && isNode3(current.id) && current.id.type === AST_NODE_TYPES19.Identifier) {
4480
4573
  return current.id.name;
4481
4574
  }
4482
4575
  const parent = current.parent;
4483
- if (parent?.type === AST_NODE_TYPES18.VariableDeclarator && parent.id.type === AST_NODE_TYPES18.Identifier) {
4576
+ if (parent?.type === AST_NODE_TYPES19.VariableDeclarator && parent.id.type === AST_NODE_TYPES19.Identifier) {
4484
4577
  return parent.id.name;
4485
4578
  }
4486
4579
  return null;
@@ -4501,10 +4594,10 @@ function isDeclaredBooleanPredicate(catchNode, kind) {
4501
4594
  return false;
4502
4595
  }
4503
4596
  let declared = enclosingReturnTypeNode(catchNode);
4504
- if (declared?.type === AST_NODE_TYPES18.TSTypeReference && declared.typeName.type === AST_NODE_TYPES18.Identifier && declared.typeName.name === "Promise") {
4597
+ if (declared?.type === AST_NODE_TYPES19.TSTypeReference && declared.typeName.type === AST_NODE_TYPES19.Identifier && declared.typeName.name === "Promise") {
4505
4598
  declared = declared.typeArguments?.params[0] ?? null;
4506
4599
  }
4507
- return declared?.type === AST_NODE_TYPES18.TSBooleanKeyword;
4600
+ return declared?.type === AST_NODE_TYPES19.TSBooleanKeyword;
4508
4601
  }
4509
4602
  function tryReturnsSafeParse(catchNode) {
4510
4603
  const tryBlock = tryBlockOf(catchNode);
@@ -4520,7 +4613,7 @@ function tryReturnsSafeParse(catchNode) {
4520
4613
  function enclosingFunctionBody(node) {
4521
4614
  let current = node.parent;
4522
4615
  while (current !== void 0 && current !== null) {
4523
- if (isFunctionNode(current) && "body" in current && isNode3(current.body) && current.body.type === AST_NODE_TYPES18.BlockStatement) {
4616
+ if (isFunctionNode(current) && "body" in current && isNode3(current.body) && current.body.type === AST_NODE_TYPES19.BlockStatement) {
4524
4617
  return current.body;
4525
4618
  }
4526
4619
  current = current.parent;
@@ -4533,7 +4626,7 @@ function functionReturnsSameSentinelKindElsewhere(catchNode, kind) {
4533
4626
  return false;
4534
4627
  }
4535
4628
  return walkWithinScope(functionBody, (current) => {
4536
- if (current.type !== AST_NODE_TYPES18.ReturnStatement) {
4629
+ if (current.type !== AST_NODE_TYPES19.ReturnStatement) {
4537
4630
  return false;
4538
4631
  }
4539
4632
  if (isWithin(current, catchNode.body)) {
@@ -4552,13 +4645,13 @@ function returnedSentinelKinds(arg) {
4552
4645
  kinds.add(direct);
4553
4646
  return kinds;
4554
4647
  }
4555
- if (arg.type === AST_NODE_TYPES18.ConditionalExpression) {
4648
+ if (arg.type === AST_NODE_TYPES19.ConditionalExpression) {
4556
4649
  for (const branch of [arg.consequent, arg.alternate]) {
4557
4650
  for (const nested of returnedSentinelKinds(branch)) {
4558
4651
  kinds.add(nested);
4559
4652
  }
4560
4653
  }
4561
- } else if (arg.type === AST_NODE_TYPES18.LogicalExpression && (arg.operator === "??" || arg.operator === "||")) {
4654
+ } else if (arg.type === AST_NODE_TYPES19.LogicalExpression && (arg.operator === "??" || arg.operator === "||")) {
4562
4655
  for (const nested of returnedSentinelKinds(arg.right)) {
4563
4656
  kinds.add(nested);
4564
4657
  }
@@ -4601,7 +4694,7 @@ var no_sentinel_return_on_catch_default = createRule({
4601
4694
  const matcher = createLogMatcher(loggingOptions);
4602
4695
  function logsOrReportsError(catchBody, caughtName) {
4603
4696
  return walkWithinScope(catchBody, (current) => {
4604
- if (current.type !== AST_NODE_TYPES18.CallExpression) {
4697
+ if (current.type !== AST_NODE_TYPES19.CallExpression) {
4605
4698
  return false;
4606
4699
  }
4607
4700
  if (matcher.isLoggingCall(current)) {
@@ -4618,7 +4711,7 @@ var no_sentinel_return_on_catch_default = createRule({
4618
4711
  return;
4619
4712
  }
4620
4713
  const last = body2[body2.length - 1];
4621
- if (last === void 0 || last.type !== AST_NODE_TYPES18.ReturnStatement) {
4714
+ if (last === void 0 || last.type !== AST_NODE_TYPES19.ReturnStatement) {
4622
4715
  return;
4623
4716
  }
4624
4717
  if (!isSentinelArgument(last.argument)) {
@@ -4627,7 +4720,7 @@ var no_sentinel_return_on_catch_default = createRule({
4627
4720
  if (containsThrow(node.body)) {
4628
4721
  return;
4629
4722
  }
4630
- const caughtName = node.param?.type === AST_NODE_TYPES18.Identifier ? node.param.name : null;
4723
+ const caughtName = node.param?.type === AST_NODE_TYPES19.Identifier ? node.param.name : null;
4631
4724
  if (logsOrReportsError(node.body, caughtName)) {
4632
4725
  return;
4633
4726
  }
@@ -4654,9 +4747,9 @@ var no_sentinel_return_on_catch_default = createRule({
4654
4747
  });
4655
4748
 
4656
4749
  // src/rules/no-silent-promise-catch.ts
4657
- import { AST_NODE_TYPES as AST_NODE_TYPES19 } from "@typescript-eslint/utils";
4750
+ import { AST_NODE_TYPES as AST_NODE_TYPES20 } from "@typescript-eslint/utils";
4658
4751
  function isBodyParseCall(node) {
4659
- return node.type === AST_NODE_TYPES19.CallExpression && node.arguments.length === 0 && node.callee.type === AST_NODE_TYPES19.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES19.Identifier && (node.callee.property.name === "json" || node.callee.property.name === "text");
4752
+ return node.type === AST_NODE_TYPES20.CallExpression && node.arguments.length === 0 && node.callee.type === AST_NODE_TYPES20.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES20.Identifier && (node.callee.property.name === "json" || node.callee.property.name === "text");
4660
4753
  }
4661
4754
  var TEARDOWN_METHODS = /* @__PURE__ */ new Set([
4662
4755
  "cancel",
@@ -4671,21 +4764,21 @@ var TEARDOWN_METHODS = /* @__PURE__ */ new Set([
4671
4764
  var DIRECTIVE_COMMENT_RE = /^\s*(eslint-|@ts-|prettier-ignore|biome-ignore|c8 |v8 |istanbul )/;
4672
4765
  var isExplanatory = (comment) => !DIRECTIVE_COMMENT_RE.test(comment.value);
4673
4766
  function isTeardownCall(node) {
4674
- return node.type === AST_NODE_TYPES19.CallExpression && node.callee.type === AST_NODE_TYPES19.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES19.Identifier && TEARDOWN_METHODS.has(node.callee.property.name);
4767
+ return node.type === AST_NODE_TYPES20.CallExpression && node.callee.type === AST_NODE_TYPES20.MemberExpression && !node.callee.computed && node.callee.property.type === AST_NODE_TYPES20.Identifier && TEARDOWN_METHODS.has(node.callee.property.name);
4675
4768
  }
4676
4769
  function isSilentExpression(node) {
4677
4770
  switch (node.type) {
4678
- case AST_NODE_TYPES19.Literal:
4771
+ case AST_NODE_TYPES20.Literal:
4679
4772
  return !("regex" in node);
4680
- case AST_NODE_TYPES19.Identifier:
4773
+ case AST_NODE_TYPES20.Identifier:
4681
4774
  return node.name === "undefined";
4682
- case AST_NODE_TYPES19.UnaryExpression:
4683
- return node.operator === "void" && node.argument.type === AST_NODE_TYPES19.Literal;
4684
- case AST_NODE_TYPES19.ObjectExpression:
4775
+ case AST_NODE_TYPES20.UnaryExpression:
4776
+ return node.operator === "void" && node.argument.type === AST_NODE_TYPES20.Literal;
4777
+ case AST_NODE_TYPES20.ObjectExpression:
4685
4778
  return node.properties.length === 0;
4686
- case AST_NODE_TYPES19.ArrayExpression:
4779
+ case AST_NODE_TYPES20.ArrayExpression:
4687
4780
  return node.elements.length === 0;
4688
- case AST_NODE_TYPES19.TSAsExpression:
4781
+ case AST_NODE_TYPES20.TSAsExpression:
4689
4782
  return isSilentExpression(node.expression);
4690
4783
  default:
4691
4784
  return false;
@@ -4693,7 +4786,7 @@ function isSilentExpression(node) {
4693
4786
  }
4694
4787
  function isSilentHandler(handler) {
4695
4788
  const body2 = handler.body;
4696
- if (body2.type !== AST_NODE_TYPES19.BlockStatement) {
4789
+ if (body2.type !== AST_NODE_TYPES20.BlockStatement) {
4697
4790
  return isSilentExpression(body2);
4698
4791
  }
4699
4792
  if (body2.body.length === 0) {
@@ -4701,7 +4794,7 @@ function isSilentHandler(handler) {
4701
4794
  }
4702
4795
  if (body2.body.length === 1) {
4703
4796
  const only = body2.body[0];
4704
- if (only !== void 0 && only.type === AST_NODE_TYPES19.ReturnStatement) {
4797
+ if (only !== void 0 && only.type === AST_NODE_TYPES20.ReturnStatement) {
4705
4798
  return only.argument === null || isSilentExpression(only.argument);
4706
4799
  }
4707
4800
  }
@@ -4730,7 +4823,7 @@ var no_silent_promise_catch_default = createRule({
4730
4823
  return true;
4731
4824
  }
4732
4825
  let statement = call;
4733
- while (statement.parent !== void 0 && statement.parent !== null && !statement.type.endsWith("Statement") && statement.type !== AST_NODE_TYPES19.VariableDeclaration) {
4826
+ while (statement.parent !== void 0 && statement.parent !== null && !statement.type.endsWith("Statement") && statement.type !== AST_NODE_TYPES20.VariableDeclaration) {
4734
4827
  statement = statement.parent;
4735
4828
  }
4736
4829
  if (sourceCode.getCommentsBefore(statement).some(isExplanatory)) {
@@ -4742,7 +4835,7 @@ var no_silent_promise_catch_default = createRule({
4742
4835
  };
4743
4836
  return {
4744
4837
  CallExpression(node) {
4745
- if (node.callee.type !== AST_NODE_TYPES19.MemberExpression || node.callee.computed || node.callee.property.type !== AST_NODE_TYPES19.Identifier || node.callee.property.name !== "catch") {
4838
+ if (node.callee.type !== AST_NODE_TYPES20.MemberExpression || node.callee.computed || node.callee.property.type !== AST_NODE_TYPES20.Identifier || node.callee.property.name !== "catch") {
4746
4839
  return;
4747
4840
  }
4748
4841
  if (isBodyParseCall(node.callee.object)) {
@@ -4751,14 +4844,14 @@ var no_silent_promise_catch_default = createRule({
4751
4844
  if (isTeardownCall(node.callee.object)) {
4752
4845
  return;
4753
4846
  }
4754
- if (node.parent.type === AST_NODE_TYPES19.MemberExpression && node.parent.object === node) {
4847
+ if (node.parent.type === AST_NODE_TYPES20.MemberExpression && node.parent.object === node) {
4755
4848
  return;
4756
4849
  }
4757
4850
  if (node.arguments.length !== 1) {
4758
4851
  return;
4759
4852
  }
4760
4853
  const handler = node.arguments[0];
4761
- if (handler === void 0 || handler.type !== AST_NODE_TYPES19.ArrowFunctionExpression && handler.type !== AST_NODE_TYPES19.FunctionExpression) {
4854
+ if (handler === void 0 || handler.type !== AST_NODE_TYPES20.ArrowFunctionExpression && handler.type !== AST_NODE_TYPES20.FunctionExpression) {
4762
4855
  return;
4763
4856
  }
4764
4857
  if (hasExplanatoryComment(node, handler)) {
@@ -4773,7 +4866,7 @@ var no_silent_promise_catch_default = createRule({
4773
4866
  });
4774
4867
 
4775
4868
  // src/rules/no-sleep-in-test-body.ts
4776
- import { AST_NODE_TYPES as AST_NODE_TYPES20 } from "@typescript-eslint/utils";
4869
+ import { AST_NODE_TYPES as AST_NODE_TYPES21 } from "@typescript-eslint/utils";
4777
4870
  var SLEEP_HELPERS = /* @__PURE__ */ new Set(["sleep", "delay", "wait", "pause"]);
4778
4871
  var TEST_CALLERS2 = /* @__PURE__ */ new Set([
4779
4872
  "it",
@@ -4782,34 +4875,34 @@ var TEST_CALLERS2 = /* @__PURE__ */ new Set([
4782
4875
  "afterEach"
4783
4876
  ]);
4784
4877
  var FUNCTION_TYPES4 = /* @__PURE__ */ new Set([
4785
- AST_NODE_TYPES20.FunctionDeclaration,
4786
- AST_NODE_TYPES20.FunctionExpression,
4787
- AST_NODE_TYPES20.ArrowFunctionExpression
4878
+ AST_NODE_TYPES21.FunctionDeclaration,
4879
+ AST_NODE_TYPES21.FunctionExpression,
4880
+ AST_NODE_TYPES21.ArrowFunctionExpression
4788
4881
  ]);
4789
4882
  function isNonzeroNumericLiteral(node) {
4790
- return node?.type === AST_NODE_TYPES20.Literal && typeof node.value === "number" && node.value !== 0;
4883
+ return node?.type === AST_NODE_TYPES21.Literal && typeof node.value === "number" && node.value !== 0;
4791
4884
  }
4792
4885
  function isTimedSetTimeout(node) {
4793
- return node.type === AST_NODE_TYPES20.CallExpression && node.callee.type === AST_NODE_TYPES20.Identifier && node.callee.name === "setTimeout" && node.arguments.length >= 2 && isNonzeroNumericLiteral(node.arguments[1]);
4886
+ return node.type === AST_NODE_TYPES21.CallExpression && node.callee.type === AST_NODE_TYPES21.Identifier && node.callee.name === "setTimeout" && node.arguments.length >= 2 && isNonzeroNumericLiteral(node.arguments[1]);
4794
4887
  }
4795
4888
  function isPromiseSleep(node) {
4796
- if (node.callee.type !== AST_NODE_TYPES20.Identifier || node.callee.name !== "Promise") {
4889
+ if (node.callee.type !== AST_NODE_TYPES21.Identifier || node.callee.name !== "Promise") {
4797
4890
  return false;
4798
4891
  }
4799
4892
  const executor = node.arguments[0];
4800
- if (executor?.type !== AST_NODE_TYPES20.ArrowFunctionExpression && executor?.type !== AST_NODE_TYPES20.FunctionExpression) {
4893
+ if (executor?.type !== AST_NODE_TYPES21.ArrowFunctionExpression && executor?.type !== AST_NODE_TYPES21.FunctionExpression) {
4801
4894
  return false;
4802
4895
  }
4803
4896
  const body2 = executor.body;
4804
- if (body2.type !== AST_NODE_TYPES20.BlockStatement) {
4897
+ if (body2.type !== AST_NODE_TYPES21.BlockStatement) {
4805
4898
  return isTimedSetTimeout(body2);
4806
4899
  }
4807
4900
  return body2.body.some(
4808
- (stmt) => stmt.type === AST_NODE_TYPES20.ExpressionStatement && isTimedSetTimeout(stmt.expression)
4901
+ (stmt) => stmt.type === AST_NODE_TYPES21.ExpressionStatement && isTimedSetTimeout(stmt.expression)
4809
4902
  );
4810
4903
  }
4811
4904
  function isHelperSleep(node) {
4812
- return node.callee.type === AST_NODE_TYPES20.Identifier && SLEEP_HELPERS.has(node.callee.name) && node.arguments.length >= 1 && isNonzeroNumericLiteral(node.arguments[0]);
4905
+ return node.callee.type === AST_NODE_TYPES21.Identifier && SLEEP_HELPERS.has(node.callee.name) && node.arguments.length >= 1 && isNonzeroNumericLiteral(node.arguments[0]);
4813
4906
  }
4814
4907
  function nearestEnclosingFunction2(node) {
4815
4908
  for (let current = node.parent; current != null; current = current.parent) {
@@ -4817,7 +4910,7 @@ function nearestEnclosingFunction2(node) {
4817
4910
  continue;
4818
4911
  }
4819
4912
  const grandparent = current.parent;
4820
- const isPromiseExecutor = grandparent?.type === AST_NODE_TYPES20.NewExpression && isPromiseSleep(grandparent);
4913
+ const isPromiseExecutor = grandparent?.type === AST_NODE_TYPES21.NewExpression && isPromiseSleep(grandparent);
4821
4914
  if (!isPromiseExecutor) {
4822
4915
  return current;
4823
4916
  }
@@ -4825,23 +4918,23 @@ function nearestEnclosingFunction2(node) {
4825
4918
  return null;
4826
4919
  }
4827
4920
  function testCallerName2(callee) {
4828
- if (callee.type === AST_NODE_TYPES20.Identifier) {
4921
+ if (callee.type === AST_NODE_TYPES21.Identifier) {
4829
4922
  return callee.name;
4830
4923
  }
4831
- if (callee.type === AST_NODE_TYPES20.MemberExpression) {
4924
+ if (callee.type === AST_NODE_TYPES21.MemberExpression) {
4832
4925
  return testCallerName2(callee.object);
4833
4926
  }
4834
- if (callee.type === AST_NODE_TYPES20.CallExpression) {
4927
+ if (callee.type === AST_NODE_TYPES21.CallExpression) {
4835
4928
  return testCallerName2(callee.callee);
4836
4929
  }
4837
- if (callee.type === AST_NODE_TYPES20.TaggedTemplateExpression) {
4930
+ if (callee.type === AST_NODE_TYPES21.TaggedTemplateExpression) {
4838
4931
  return testCallerName2(callee.tag);
4839
4932
  }
4840
4933
  return null;
4841
4934
  }
4842
4935
  function isTestBody2(fn) {
4843
4936
  const call = fn.parent;
4844
- if (call?.type !== AST_NODE_TYPES20.CallExpression || !call.arguments.some((argument) => argument === fn)) {
4937
+ if (call?.type !== AST_NODE_TYPES21.CallExpression || !call.arguments.some((argument) => argument === fn)) {
4845
4938
  return false;
4846
4939
  }
4847
4940
  const name = testCallerName2(call.callee);
@@ -4887,7 +4980,7 @@ var no_sleep_in_test_body_default = createRule({
4887
4980
  });
4888
4981
 
4889
4982
  // src/rules/no-storage-in-stateless-modules.ts
4890
- import { AST_NODE_TYPES as AST_NODE_TYPES21 } from "@typescript-eslint/utils";
4983
+ import { AST_NODE_TYPES as AST_NODE_TYPES22 } from "@typescript-eslint/utils";
4891
4984
  var DEFAULT_METHODS2 = [
4892
4985
  "prepare",
4893
4986
  "put",
@@ -4906,7 +4999,7 @@ function compile2(patterns) {
4906
4999
  }
4907
5000
  function storageMethodName(node, methods) {
4908
5001
  const callee = node.callee;
4909
- if (callee.type !== AST_NODE_TYPES21.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES21.Identifier) {
5002
+ if (callee.type !== AST_NODE_TYPES22.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES22.Identifier) {
4910
5003
  return null;
4911
5004
  }
4912
5005
  const name = callee.property.name;
@@ -5120,7 +5213,7 @@ var no_string_concat_in_loop_default = createRule({
5120
5213
  });
5121
5214
 
5122
5215
  // src/rules/no-tautological-expect.ts
5123
- import { AST_NODE_TYPES as AST_NODE_TYPES22 } from "@typescript-eslint/utils";
5216
+ import { AST_NODE_TYPES as AST_NODE_TYPES23 } from "@typescript-eslint/utils";
5124
5217
  var EQUALITY_MATCHERS = /* @__PURE__ */ new Set(["toBe", "toEqual", "toStrictEqual"]);
5125
5218
  var ZERO_ARG_MATCHERS = /* @__PURE__ */ new Set([
5126
5219
  "toBeDefined",
@@ -5134,17 +5227,17 @@ var OPERAND_PREVIEW_CHARS = 40;
5134
5227
  var NUMERIC_SIGNS = /* @__PURE__ */ new Set(["-", "+"]);
5135
5228
  function isLiteral(node) {
5136
5229
  switch (node.type) {
5137
- case AST_NODE_TYPES22.Literal:
5230
+ case AST_NODE_TYPES23.Literal:
5138
5231
  return true;
5139
- case AST_NODE_TYPES22.TemplateLiteral:
5232
+ case AST_NODE_TYPES23.TemplateLiteral:
5140
5233
  return node.expressions.length === 0;
5141
- case AST_NODE_TYPES22.UnaryExpression:
5234
+ case AST_NODE_TYPES23.UnaryExpression:
5142
5235
  return NUMERIC_SIGNS.has(node.operator) && isLiteral(node.argument);
5143
- case AST_NODE_TYPES22.ArrayExpression:
5236
+ case AST_NODE_TYPES23.ArrayExpression:
5144
5237
  return node.elements.every((element) => element !== null && isLiteral(element));
5145
- case AST_NODE_TYPES22.ObjectExpression:
5238
+ case AST_NODE_TYPES23.ObjectExpression:
5146
5239
  return node.properties.every(
5147
- (property) => property.type === AST_NODE_TYPES22.Property && !property.computed && isLiteral(property.value)
5240
+ (property) => property.type === AST_NODE_TYPES23.Property && !property.computed && isLiteral(property.value)
5148
5241
  );
5149
5242
  default:
5150
5243
  return false;
@@ -5152,7 +5245,7 @@ function isLiteral(node) {
5152
5245
  }
5153
5246
  function expectOperand(callee) {
5154
5247
  const receiver = callee.object;
5155
- if (receiver.type !== AST_NODE_TYPES22.CallExpression || receiver.callee.type !== AST_NODE_TYPES22.Identifier || receiver.callee.name !== "expect" || receiver.arguments.length !== 1) {
5248
+ if (receiver.type !== AST_NODE_TYPES23.CallExpression || receiver.callee.type !== AST_NODE_TYPES23.Identifier || receiver.callee.name !== "expect" || receiver.arguments.length !== 1) {
5156
5249
  return null;
5157
5250
  }
5158
5251
  return receiver.arguments[0] ?? null;
@@ -5182,10 +5275,10 @@ var no_tautological_expect_default = createRule({
5182
5275
  return {
5183
5276
  CallExpression(node) {
5184
5277
  const callee = node.callee;
5185
- if (callee.type !== AST_NODE_TYPES22.MemberExpression || callee.computed) {
5278
+ if (callee.type !== AST_NODE_TYPES23.MemberExpression || callee.computed) {
5186
5279
  return;
5187
5280
  }
5188
- if (callee.property.type !== AST_NODE_TYPES22.Identifier) {
5281
+ if (callee.property.type !== AST_NODE_TYPES23.Identifier) {
5189
5282
  return;
5190
5283
  }
5191
5284
  const matcher = callee.property.name;
@@ -5379,10 +5472,10 @@ var no_trailing_value_narration_default = createRule({
5379
5472
  });
5380
5473
 
5381
5474
  // src/rules/no-declaration-comment-wall.ts
5382
- import { AST_NODE_TYPES as AST_NODE_TYPES24 } from "@typescript-eslint/utils";
5475
+ import { AST_NODE_TYPES as AST_NODE_TYPES25 } from "@typescript-eslint/utils";
5383
5476
 
5384
5477
  // src/rules/_comment-wall.ts
5385
- import { AST_NODE_TYPES as AST_NODE_TYPES23 } from "@typescript-eslint/utils";
5478
+ import { AST_NODE_TYPES as AST_NODE_TYPES24 } from "@typescript-eslint/utils";
5386
5479
  var WALL_DEFAULTS = {
5387
5480
  // Below three rows "a wall" is not a fair description of what the reader sees.
5388
5481
  minCommentedMembers: 3,
@@ -5486,10 +5579,10 @@ function isWall(members, commented, restated, options) {
5486
5579
  return commented >= options.minCommentedMembers && commented / members >= options.minCommentedRatio && restated / commented >= options.minRestatedRatio;
5487
5580
  }
5488
5581
  var OPAQUE_VALUE_TYPES = /* @__PURE__ */ new Set([
5489
- AST_NODE_TYPES23.FunctionExpression,
5490
- AST_NODE_TYPES23.ArrowFunctionExpression,
5491
- AST_NODE_TYPES23.ObjectExpression,
5492
- AST_NODE_TYPES23.ArrayExpression
5582
+ AST_NODE_TYPES24.FunctionExpression,
5583
+ AST_NODE_TYPES24.ArrowFunctionExpression,
5584
+ AST_NODE_TYPES24.ObjectExpression,
5585
+ AST_NODE_TYPES24.ArrayExpression
5493
5586
  ]);
5494
5587
  function declarationRange(member) {
5495
5588
  const body2 = bodyOf(member);
@@ -5497,10 +5590,10 @@ function declarationRange(member) {
5497
5590
  return [member.range[0], body2.range[0]];
5498
5591
  }
5499
5592
  function bodyOf(member) {
5500
- if (member.type === AST_NODE_TYPES23.MethodDefinition || member.type === AST_NODE_TYPES23.TSAbstractMethodDefinition) {
5593
+ if (member.type === AST_NODE_TYPES24.MethodDefinition || member.type === AST_NODE_TYPES24.TSAbstractMethodDefinition) {
5501
5594
  return member.value.body ?? void 0;
5502
5595
  }
5503
- if (member.type === AST_NODE_TYPES23.Property || member.type === AST_NODE_TYPES23.PropertyDefinition) {
5596
+ if (member.type === AST_NODE_TYPES24.Property || member.type === AST_NODE_TYPES24.PropertyDefinition) {
5504
5597
  const value = member.value;
5505
5598
  if (value !== null && OPAQUE_VALUE_TYPES.has(value.type)) return value;
5506
5599
  }
@@ -5510,12 +5603,12 @@ function bodyOf(member) {
5510
5603
  // src/rules/no-declaration-comment-wall.ts
5511
5604
  function named(node) {
5512
5605
  switch (node.type) {
5513
- case AST_NODE_TYPES24.TSEnumMember:
5606
+ case AST_NODE_TYPES25.TSEnumMember:
5514
5607
  return { node, key: node.id };
5515
- case AST_NODE_TYPES24.PropertyDefinition:
5516
- case AST_NODE_TYPES24.TSAbstractPropertyDefinition:
5517
- case AST_NODE_TYPES24.MethodDefinition:
5518
- case AST_NODE_TYPES24.TSAbstractMethodDefinition:
5608
+ case AST_NODE_TYPES25.PropertyDefinition:
5609
+ case AST_NODE_TYPES25.TSAbstractPropertyDefinition:
5610
+ case AST_NODE_TYPES25.MethodDefinition:
5611
+ case AST_NODE_TYPES25.TSAbstractMethodDefinition:
5519
5612
  return node.computed ? void 0 : { node, key: node.key };
5520
5613
  default:
5521
5614
  return void 0;
@@ -5615,7 +5708,7 @@ var no_declaration_comment_wall_default = createRule({
5615
5708
  });
5616
5709
 
5617
5710
  // src/rules/no-union-in-comment.ts
5618
- import { AST_NODE_TYPES as AST_NODE_TYPES25 } from "@typescript-eslint/utils";
5711
+ import { AST_NODE_TYPES as AST_NODE_TYPES26 } from "@typescript-eslint/utils";
5619
5712
  var MAX_LITERAL_LENGTH = 28;
5620
5713
  var LITERAL = String.raw`(?:'[^'\n]*'|"[^"\n]*"|\`[^\`\n]*\`)`;
5621
5714
  var LEAD_IN_RE2 = /^(?:one of|either|values?|allowed(?: values)?|options?|possible(?: values)?)\s*[:=-]?\s*/i;
@@ -5634,14 +5727,14 @@ var STRING_BUILDERS = /* @__PURE__ */ new Set([
5634
5727
  function isBareString(node) {
5635
5728
  if (node === void 0) return false;
5636
5729
  switch (node.type) {
5637
- case AST_NODE_TYPES25.TSStringKeyword:
5730
+ case AST_NODE_TYPES26.TSStringKeyword:
5638
5731
  return true;
5639
5732
  // `string[]` holds members of the same closed set, one element at a time.
5640
- case AST_NODE_TYPES25.TSArrayType:
5733
+ case AST_NODE_TYPES26.TSArrayType:
5641
5734
  return isBareString(node.elementType);
5642
5735
  // `string | null` is still an unconstrained string, and so is `string | "a"`
5643
5736
  // — the checker collapses that one to `string`.
5644
- case AST_NODE_TYPES25.TSUnionType:
5737
+ case AST_NODE_TYPES26.TSUnionType:
5645
5738
  return node.types.some((member) => isBareString(member));
5646
5739
  default:
5647
5740
  return false;
@@ -5651,13 +5744,13 @@ function rootCallee(node) {
5651
5744
  let current = node;
5652
5745
  for (let hops = 0; current != null && hops < 12; hops += 1) {
5653
5746
  switch (current.type) {
5654
- case AST_NODE_TYPES25.CallExpression:
5747
+ case AST_NODE_TYPES26.CallExpression:
5655
5748
  current = current.callee;
5656
5749
  break;
5657
- case AST_NODE_TYPES25.MemberExpression:
5750
+ case AST_NODE_TYPES26.MemberExpression:
5658
5751
  current = current.object;
5659
5752
  break;
5660
- case AST_NODE_TYPES25.Identifier:
5753
+ case AST_NODE_TYPES26.Identifier:
5661
5754
  return current.name;
5662
5755
  default:
5663
5756
  return null;
@@ -5666,26 +5759,26 @@ function rootCallee(node) {
5666
5759
  return null;
5667
5760
  }
5668
5761
  function nameOf(key) {
5669
- if (key.type === AST_NODE_TYPES25.Identifier) return key.name;
5670
- if (key.type === AST_NODE_TYPES25.Literal && typeof key.value === "string") return key.value;
5762
+ if (key.type === AST_NODE_TYPES26.Identifier) return key.name;
5763
+ if (key.type === AST_NODE_TYPES26.Literal && typeof key.value === "string") return key.value;
5671
5764
  return null;
5672
5765
  }
5673
5766
  function targetOf(node) {
5674
5767
  switch (node.type) {
5675
- case AST_NODE_TYPES25.TSPropertySignature:
5676
- case AST_NODE_TYPES25.PropertyDefinition: {
5768
+ case AST_NODE_TYPES26.TSPropertySignature:
5769
+ case AST_NODE_TYPES26.PropertyDefinition: {
5677
5770
  const name = node.computed ? null : nameOf(node.key);
5678
5771
  if (name === null || !isBareString(node.typeAnnotation?.typeAnnotation)) return null;
5679
5772
  return { node, name };
5680
5773
  }
5681
- case AST_NODE_TYPES25.Property: {
5774
+ case AST_NODE_TYPES26.Property: {
5682
5775
  const name = node.computed || node.shorthand ? null : nameOf(node.key);
5683
5776
  const callee = rootCallee(node.value);
5684
5777
  if (name === null || callee === null || !STRING_BUILDERS.has(callee)) return null;
5685
5778
  return { node, name };
5686
5779
  }
5687
- case AST_NODE_TYPES25.VariableDeclarator: {
5688
- if (node.id.type !== AST_NODE_TYPES25.Identifier) return null;
5780
+ case AST_NODE_TYPES26.VariableDeclarator: {
5781
+ if (node.id.type !== AST_NODE_TYPES26.Identifier) return null;
5689
5782
  if (!isBareString(node.id.typeAnnotation?.typeAnnotation)) return null;
5690
5783
  return { node, name: node.id.name };
5691
5784
  }
@@ -5734,7 +5827,7 @@ var no_union_in_comment_default = createRule({
5734
5827
  if (after === null || after.loc.start.line !== comment.loc.end.line + 1) return null;
5735
5828
  anchor = sourceCode.getNodeByRangeIndex(after.range[0]);
5736
5829
  }
5737
- for (let node = anchor; node != null && node.type !== AST_NODE_TYPES25.Program; node = node.parent) {
5830
+ for (let node = anchor; node != null && node.type !== AST_NODE_TYPES26.Program; node = node.parent) {
5738
5831
  const target = targetOf(node);
5739
5832
  if (target !== null) return target;
5740
5833
  }
@@ -5763,9 +5856,9 @@ var no_union_in_comment_default = createRule({
5763
5856
  });
5764
5857
 
5765
5858
  // src/rules/no-type-member-comment-wall.ts
5766
- import { AST_NODE_TYPES as AST_NODE_TYPES26 } from "@typescript-eslint/utils";
5859
+ import { AST_NODE_TYPES as AST_NODE_TYPES27 } from "@typescript-eslint/utils";
5767
5860
  function isNamedMember(node) {
5768
- return (node.type === AST_NODE_TYPES26.TSPropertySignature || node.type === AST_NODE_TYPES26.TSMethodSignature) && !node.computed;
5861
+ return (node.type === AST_NODE_TYPES27.TSPropertySignature || node.type === AST_NODE_TYPES27.TSMethodSignature) && !node.computed;
5769
5862
  }
5770
5863
  var no_type_member_comment_wall_default = createRule({
5771
5864
  name: "no-type-member-comment-wall",
@@ -5812,7 +5905,7 @@ var no_type_member_comment_wall_default = createRule({
5812
5905
  return headsRun || lineAbove !== void 0 && lineAbove.trim().length === 0;
5813
5906
  }
5814
5907
  function check(node) {
5815
- const members = node.type === AST_NODE_TYPES26.TSInterfaceBody ? node.body : node.members;
5908
+ const members = node.type === AST_NODE_TYPES27.TSInterfaceBody ? node.body : node.members;
5816
5909
  const named2 = members.filter(isNamedMember);
5817
5910
  if (named2.length === 0) return;
5818
5911
  const documented = named2.map((member) => ({ member, comment: documentingComment(member) }));
@@ -5852,7 +5945,7 @@ var no_type_member_comment_wall_default = createRule({
5852
5945
  });
5853
5946
 
5854
5947
  // src/rules/no-unnecessary-use-client.ts
5855
- import { AST_NODE_TYPES as AST_NODE_TYPES27 } from "@typescript-eslint/utils";
5948
+ import { AST_NODE_TYPES as AST_NODE_TYPES28 } from "@typescript-eslint/utils";
5856
5949
  var HOOK_REGEX = /^use([A-Z]|$)/;
5857
5950
  var EVENT_PROP_REGEX = /^on[A-Z]/;
5858
5951
  var ERROR_FILE_REGEX = /\b(?:global-)?error\.[jt]sx?$/;
@@ -5878,13 +5971,13 @@ var CLIENT_ONLY_PACKAGES_REGEX = /^(?:@radix-ui\/|framer-motion|react-dom|react-
5878
5971
  var isBareSpecifier = (source) => !source.startsWith(".") && !source.startsWith("/") && !source.startsWith("@/") && !source.startsWith("~");
5879
5972
  var jsxRootName = (name) => {
5880
5973
  let current = name;
5881
- while (current.type === AST_NODE_TYPES27.JSXMemberExpression) {
5974
+ while (current.type === AST_NODE_TYPES28.JSXMemberExpression) {
5882
5975
  current = current.object;
5883
5976
  }
5884
- return current.type === AST_NODE_TYPES27.JSXIdentifier ? current.name : "";
5977
+ return current.type === AST_NODE_TYPES28.JSXIdentifier ? current.name : "";
5885
5978
  };
5886
5979
  var subtreeReadsImportedBinding = (node, imported) => {
5887
- if (node.type === AST_NODE_TYPES27.Identifier) {
5980
+ if (node.type === AST_NODE_TYPES28.Identifier) {
5888
5981
  return imported.has(node.name);
5889
5982
  }
5890
5983
  for (const key of Object.keys(node)) {
@@ -5899,16 +5992,16 @@ var subtreeReadsImportedBinding = (node, imported) => {
5899
5992
  return false;
5900
5993
  };
5901
5994
  var isUseClientDirective = (node) => {
5902
- return node.type === AST_NODE_TYPES27.ExpressionStatement && node.expression.type === AST_NODE_TYPES27.Literal && node.expression.value === "use client";
5995
+ return node.type === AST_NODE_TYPES28.ExpressionStatement && node.expression.type === AST_NODE_TYPES28.Literal && node.expression.value === "use client";
5903
5996
  };
5904
5997
  var isGlobalReference = (node, context) => {
5905
5998
  if (!BROWSER_GLOBALS.has(node.name)) return false;
5906
5999
  const parent = node.parent;
5907
6000
  if (parent !== void 0) {
5908
- if (parent.type === AST_NODE_TYPES27.MemberExpression && parent.property === node && !parent.computed) {
6001
+ if (parent.type === AST_NODE_TYPES28.MemberExpression && parent.property === node && !parent.computed) {
5909
6002
  return false;
5910
6003
  }
5911
- if (parent.type === AST_NODE_TYPES27.Property && parent.key === node && !parent.computed) {
6004
+ if (parent.type === AST_NODE_TYPES28.Property && parent.key === node && !parent.computed) {
5912
6005
  return false;
5913
6006
  }
5914
6007
  if (parent.type.startsWith("TS")) {
@@ -5948,13 +6041,13 @@ var no_unnecessary_use_client_default = createRule({
5948
6041
  const importedLocals = /* @__PURE__ */ new Set();
5949
6042
  const externalLocals = /* @__PURE__ */ new Set();
5950
6043
  const markIfHookOrContext = (callee) => {
5951
- if (callee.type === AST_NODE_TYPES27.Identifier) {
6044
+ if (callee.type === AST_NODE_TYPES28.Identifier) {
5952
6045
  if (HOOK_REGEX.test(callee.name) || callee.name === "createContext") {
5953
6046
  hasClientIndicator = true;
5954
6047
  }
5955
6048
  return;
5956
6049
  }
5957
- if (callee.type === AST_NODE_TYPES27.MemberExpression && callee.property.type === AST_NODE_TYPES27.Identifier) {
6050
+ if (callee.type === AST_NODE_TYPES28.MemberExpression && callee.property.type === AST_NODE_TYPES28.Identifier) {
5958
6051
  const name = callee.property.name;
5959
6052
  if (HOOK_REGEX.test(name) || name === "createContext") {
5960
6053
  hasClientIndicator = true;
@@ -5964,7 +6057,7 @@ var no_unnecessary_use_client_default = createRule({
5964
6057
  return {
5965
6058
  Program(node) {
5966
6059
  for (const stmt of node.body) {
5967
- if (stmt.type !== AST_NODE_TYPES27.ExpressionStatement) break;
6060
+ if (stmt.type !== AST_NODE_TYPES28.ExpressionStatement) break;
5968
6061
  if (isUseClientDirective(stmt)) {
5969
6062
  directiveNode = stmt;
5970
6063
  break;
@@ -5977,7 +6070,7 @@ var no_unnecessary_use_client_default = createRule({
5977
6070
  },
5978
6071
  JSXAttribute(node) {
5979
6072
  if (directiveNode === null) return;
5980
- if (node.name.type === AST_NODE_TYPES27.JSXIdentifier && EVENT_PROP_REGEX.test(node.name.name)) {
6073
+ if (node.name.type === AST_NODE_TYPES28.JSXIdentifier && EVENT_PROP_REGEX.test(node.name.name)) {
5981
6074
  hasClientIndicator = true;
5982
6075
  }
5983
6076
  },
@@ -6045,17 +6138,17 @@ var no_unnecessary_use_client_default = createRule({
6045
6138
 
6046
6139
  // src/rules/no-unsafe-mock-casting.ts
6047
6140
  import "@typescript-eslint/utils";
6048
- import { AST_NODE_TYPES as AST_NODE_TYPES28 } from "@typescript-eslint/utils";
6141
+ import { AST_NODE_TYPES as AST_NODE_TYPES29 } from "@typescript-eslint/utils";
6049
6142
  function isMockTypeReference(node) {
6050
- if (node.type !== AST_NODE_TYPES28.TSTypeReference) {
6143
+ if (node.type !== AST_NODE_TYPES29.TSTypeReference) {
6051
6144
  return false;
6052
6145
  }
6053
6146
  const typeName = node.typeName;
6054
- if (typeName.type === AST_NODE_TYPES28.Identifier) {
6147
+ if (typeName.type === AST_NODE_TYPES29.Identifier) {
6055
6148
  const name = typeName.name;
6056
6149
  return name === "Mock" || name === "MockInstance" || name === "SpyInstance";
6057
6150
  }
6058
- if (typeName.type === AST_NODE_TYPES28.TSQualifiedName) {
6151
+ if (typeName.type === AST_NODE_TYPES29.TSQualifiedName) {
6059
6152
  const rightName = typeName.right.name;
6060
6153
  return rightName === "Mock" || rightName === "MockInstance" || rightName === "SpyInstance";
6061
6154
  }
@@ -6093,7 +6186,7 @@ var no_unsafe_mock_casting_default = createRule({
6093
6186
  // src/rules/no-zod-native-enum.ts
6094
6187
  import {
6095
6188
  ESLintUtils as ESLintUtils2,
6096
- AST_NODE_TYPES as AST_NODE_TYPES29
6189
+ AST_NODE_TYPES as AST_NODE_TYPES30
6097
6190
  } from "@typescript-eslint/utils";
6098
6191
  import * as ts from "typescript";
6099
6192
  var IGNORE_PATTERNS = [
@@ -6112,7 +6205,7 @@ function isZodModule(source) {
6112
6205
  return /(^|[/@-])zod([/-]|$)/.test(source);
6113
6206
  }
6114
6207
  function unwrap2(node) {
6115
- if (node.type === AST_NODE_TYPES29.TSAsExpression || node.type === AST_NODE_TYPES29.TSSatisfiesExpression) {
6208
+ if (node.type === AST_NODE_TYPES30.TSAsExpression || node.type === AST_NODE_TYPES30.TSSatisfiesExpression) {
6116
6209
  return unwrap2(node.expression);
6117
6210
  }
6118
6211
  return node;
@@ -6120,14 +6213,14 @@ function unwrap2(node) {
6120
6213
  function stringValueTexts(node, sourceCode) {
6121
6214
  const texts = [];
6122
6215
  for (const prop of node.properties) {
6123
- if (prop.type !== AST_NODE_TYPES29.Property) {
6216
+ if (prop.type !== AST_NODE_TYPES30.Property) {
6124
6217
  return null;
6125
6218
  }
6126
6219
  if (prop.computed || prop.shorthand || prop.method || prop.kind !== "init") {
6127
6220
  return null;
6128
6221
  }
6129
6222
  const value = prop.value;
6130
- if (value.type !== AST_NODE_TYPES29.Literal || typeof value.value !== "string") {
6223
+ if (value.type !== AST_NODE_TYPES30.Literal || typeof value.value !== "string") {
6131
6224
  return null;
6132
6225
  }
6133
6226
  const text = sourceCode.getText(value);
@@ -6143,7 +6236,7 @@ function resolvesToLocalEnum(node, scope) {
6143
6236
  const variable = current.variables.find((v) => v.name === node.name);
6144
6237
  if (variable !== void 0) {
6145
6238
  return variable.defs.some(
6146
- (def) => def.node.type === AST_NODE_TYPES29.TSEnumDeclaration
6239
+ (def) => def.node.type === AST_NODE_TYPES30.TSEnumDeclaration
6147
6240
  );
6148
6241
  }
6149
6242
  current = current.upper;
@@ -6195,25 +6288,25 @@ var no_zod_native_enum_default = createRule({
6195
6288
  const zodImportedNames = /* @__PURE__ */ new Map();
6196
6289
  function isZodMemberCall(node, api) {
6197
6290
  const callee = node.callee;
6198
- if (callee.type === AST_NODE_TYPES29.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES29.Identifier) {
6291
+ if (callee.type === AST_NODE_TYPES30.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES30.Identifier) {
6199
6292
  return callee.property.name === api;
6200
6293
  }
6201
- if (callee.type === AST_NODE_TYPES29.Identifier) {
6294
+ if (callee.type === AST_NODE_TYPES30.Identifier) {
6202
6295
  return zodImportedNames.get(callee.name) === api;
6203
6296
  }
6204
6297
  return false;
6205
6298
  }
6206
6299
  function buildFix(node) {
6207
6300
  const callee = node.callee;
6208
- if (callee.type !== AST_NODE_TYPES29.MemberExpression || callee.property.type !== AST_NODE_TYPES29.Identifier) {
6301
+ if (callee.type !== AST_NODE_TYPES30.MemberExpression || callee.property.type !== AST_NODE_TYPES30.Identifier) {
6209
6302
  return null;
6210
6303
  }
6211
6304
  const arg = node.arguments[0];
6212
- if (arg === void 0 || node.arguments.length !== 1 || arg.type === AST_NODE_TYPES29.SpreadElement) {
6305
+ if (arg === void 0 || node.arguments.length !== 1 || arg.type === AST_NODE_TYPES30.SpreadElement) {
6213
6306
  return null;
6214
6307
  }
6215
6308
  const inner = unwrap2(arg);
6216
- if (inner.type !== AST_NODE_TYPES29.ObjectExpression) {
6309
+ if (inner.type !== AST_NODE_TYPES30.ObjectExpression) {
6217
6310
  return null;
6218
6311
  }
6219
6312
  const values = stringValueTexts(inner, sourceCode);
@@ -6233,7 +6326,7 @@ var no_zod_native_enum_default = createRule({
6233
6326
  return;
6234
6327
  }
6235
6328
  for (const spec of node.specifiers) {
6236
- if (spec.type === AST_NODE_TYPES29.ImportSpecifier && spec.imported.type === AST_NODE_TYPES29.Identifier) {
6329
+ if (spec.type === AST_NODE_TYPES30.ImportSpecifier && spec.imported.type === AST_NODE_TYPES30.Identifier) {
6237
6330
  zodImportedNames.set(spec.local.name, spec.imported.name);
6238
6331
  }
6239
6332
  }
@@ -6252,7 +6345,7 @@ var no_zod_native_enum_default = createRule({
6252
6345
  return;
6253
6346
  }
6254
6347
  const arg = node.arguments[0];
6255
- if (arg === void 0 || arg.type !== AST_NODE_TYPES29.Identifier) {
6348
+ if (arg === void 0 || arg.type !== AST_NODE_TYPES30.Identifier) {
6256
6349
  return;
6257
6350
  }
6258
6351
  const isEnum = resolvesToLocalEnum(arg, sourceCode.getScope(arg)) || services !== null && resolvesToImportedEnum(arg, services);
@@ -6269,7 +6362,7 @@ var no_zod_native_enum_default = createRule({
6269
6362
  });
6270
6363
 
6271
6364
  // src/rules/prefer-constant-time-secret-compare.ts
6272
- import { AST_NODE_TYPES as AST_NODE_TYPES30 } from "@typescript-eslint/utils";
6365
+ import { AST_NODE_TYPES as AST_NODE_TYPES31 } from "@typescript-eslint/utils";
6273
6366
  var EQUALITY_OPERATORS = /* @__PURE__ */ new Set(["===", "!==", "==", "!="]);
6274
6367
  var SENTINEL_IDENTIFIERS = /* @__PURE__ */ new Set(["undefined", "NaN"]);
6275
6368
  var SENTINEL_WORDS = /(^|_)(SENTINEL|EMPTY|NONE|NULL|UNSET|MISSING|PLACEHOLDER|DUMMY|FAKE|EXAMPLE)(_|$)/;
@@ -6282,36 +6375,36 @@ function isConstantReference(identifier) {
6282
6375
  }
6283
6376
  function isExcludedOperand(node) {
6284
6377
  switch (node.type) {
6285
- case AST_NODE_TYPES30.Literal:
6378
+ case AST_NODE_TYPES31.Literal:
6286
6379
  return true;
6287
- case AST_NODE_TYPES30.TemplateLiteral:
6380
+ case AST_NODE_TYPES31.TemplateLiteral:
6288
6381
  return node.expressions.length === 0;
6289
- case AST_NODE_TYPES30.Identifier:
6382
+ case AST_NODE_TYPES31.Identifier:
6290
6383
  return SENTINEL_IDENTIFIERS.has(node.name) || SENTINEL_PREFIX_RE.test(node.name) || isConstantReference(node.name);
6291
- case AST_NODE_TYPES30.MemberExpression:
6292
- return !node.computed && node.property.type === AST_NODE_TYPES30.Identifier && (SENTINEL_PREFIX_RE.test(node.property.name) || isConstantReference(node.property.name));
6384
+ case AST_NODE_TYPES31.MemberExpression:
6385
+ return !node.computed && node.property.type === AST_NODE_TYPES31.Identifier && (SENTINEL_PREFIX_RE.test(node.property.name) || isConstantReference(node.property.name));
6293
6386
  default:
6294
6387
  return false;
6295
6388
  }
6296
6389
  }
6297
6390
  function operandName(node) {
6298
- if (node.type === AST_NODE_TYPES30.Identifier) {
6391
+ if (node.type === AST_NODE_TYPES31.Identifier) {
6299
6392
  return node.name;
6300
6393
  }
6301
- if (node.type === AST_NODE_TYPES30.MemberExpression && !node.computed && node.property.type === AST_NODE_TYPES30.Identifier) {
6394
+ if (node.type === AST_NODE_TYPES31.MemberExpression && !node.computed && node.property.type === AST_NODE_TYPES31.Identifier) {
6302
6395
  return node.property.name;
6303
6396
  }
6304
6397
  return null;
6305
6398
  }
6306
6399
  function isSecretOperand(node) {
6307
- if (node.type === AST_NODE_TYPES30.TemplateLiteral) {
6400
+ if (node.type === AST_NODE_TYPES31.TemplateLiteral) {
6308
6401
  return node.expressions.some((expression) => isSecretOperand(expression));
6309
6402
  }
6310
6403
  const name = operandName(node);
6311
6404
  return name !== null && isAuthSecretName(name);
6312
6405
  }
6313
6406
  function secretNameOf(node) {
6314
- if (node.type === AST_NODE_TYPES30.TemplateLiteral) {
6407
+ if (node.type === AST_NODE_TYPES31.TemplateLiteral) {
6315
6408
  for (const expression of node.expressions) {
6316
6409
  const nested = secretNameOf(expression);
6317
6410
  if (nested !== null) {
@@ -6364,7 +6457,7 @@ var prefer_constant_time_secret_compare_default = createRule({
6364
6457
 
6365
6458
  // src/rules/prefer-discriminated-union.ts
6366
6459
  import "@typescript-eslint/utils";
6367
- import { AST_NODE_TYPES as AST_NODE_TYPES31 } from "@typescript-eslint/utils";
6460
+ import { AST_NODE_TYPES as AST_NODE_TYPES32 } from "@typescript-eslint/utils";
6368
6461
  var STATUS_MEMBER_NAMES = /* @__PURE__ */ new Set([
6369
6462
  "success",
6370
6463
  "ok",
@@ -6374,27 +6467,27 @@ var STATUS_MEMBER_NAMES = /* @__PURE__ */ new Set([
6374
6467
  ]);
6375
6468
  var MIN_OPTIONAL_MEMBERS = 2;
6376
6469
  function getMemberName(member) {
6377
- if (member.type !== AST_NODE_TYPES31.TSPropertySignature) {
6470
+ if (member.type !== AST_NODE_TYPES32.TSPropertySignature) {
6378
6471
  return null;
6379
6472
  }
6380
6473
  const { key } = member;
6381
- if (key.type === AST_NODE_TYPES31.Identifier) {
6474
+ if (key.type === AST_NODE_TYPES32.Identifier) {
6382
6475
  return key.name;
6383
6476
  }
6384
- if (key.type === AST_NODE_TYPES31.Literal && typeof key.value === "string") {
6477
+ if (key.type === AST_NODE_TYPES32.Literal && typeof key.value === "string") {
6385
6478
  return key.value;
6386
6479
  }
6387
6480
  return null;
6388
6481
  }
6389
6482
  function isBooleanTyped(member) {
6390
- return member.typeAnnotation?.typeAnnotation.type === AST_NODE_TYPES31.TSBooleanKeyword;
6483
+ return member.typeAnnotation?.typeAnnotation.type === AST_NODE_TYPES32.TSBooleanKeyword;
6391
6484
  }
6392
6485
  function looksLikeMutuallyExclusiveState(typeLiteral) {
6393
6486
  let hasStatusBoolean = false;
6394
6487
  let optionalCount = 0;
6395
6488
  let optionalPayloadCount = 0;
6396
6489
  for (const member of typeLiteral.members) {
6397
- if (member.type !== AST_NODE_TYPES31.TSPropertySignature) {
6490
+ if (member.type !== AST_NODE_TYPES32.TSPropertySignature) {
6398
6491
  continue;
6399
6492
  }
6400
6493
  if (member.optional) {
@@ -6436,7 +6529,7 @@ var prefer_discriminated_union_default = createRule({
6436
6529
  TSInterfaceDeclaration(node) {
6437
6530
  const synthetic = {
6438
6531
  ...node.body,
6439
- type: AST_NODE_TYPES31.TSTypeLiteral,
6532
+ type: AST_NODE_TYPES32.TSTypeLiteral,
6440
6533
  members: node.body.body
6441
6534
  };
6442
6535
  checkTypeLiteral(synthetic, node);
@@ -6449,7 +6542,7 @@ var prefer_discriminated_union_default = createRule({
6449
6542
  });
6450
6543
 
6451
6544
  // src/rules/prefer-module-level-constant.ts
6452
- import { AST_NODE_TYPES as AST_NODE_TYPES32 } from "@typescript-eslint/utils";
6545
+ import { AST_NODE_TYPES as AST_NODE_TYPES33 } from "@typescript-eslint/utils";
6453
6546
  var DEFAULT_MIN_ELEMENTS = 3;
6454
6547
  var MAX_LITERAL_DEPTH = 4;
6455
6548
  var IGNORE_PATTERNS2 = [
@@ -6478,9 +6571,9 @@ var MUTATING_METHODS = /* @__PURE__ */ new Set([
6478
6571
  "assign"
6479
6572
  ]);
6480
6573
  var FUNCTION_TYPES5 = /* @__PURE__ */ new Set([
6481
- AST_NODE_TYPES32.FunctionDeclaration,
6482
- AST_NODE_TYPES32.FunctionExpression,
6483
- AST_NODE_TYPES32.ArrowFunctionExpression
6574
+ AST_NODE_TYPES33.FunctionDeclaration,
6575
+ AST_NODE_TYPES33.FunctionExpression,
6576
+ AST_NODE_TYPES33.ArrowFunctionExpression
6484
6577
  ]);
6485
6578
  var COLLECTION_CONSTRUCTORS = /* @__PURE__ */ new Set(["Set", "Map"]);
6486
6579
  function isIgnoredFile2(filename, sourceText) {
@@ -6493,14 +6586,14 @@ function isLocalFixtureFile(filename) {
6493
6586
  return isTestFile(filename) || isStoryFile(filename);
6494
6587
  }
6495
6588
  function unwrap3(node) {
6496
- if (node.type === AST_NODE_TYPES32.TSAsExpression || node.type === AST_NODE_TYPES32.TSSatisfiesExpression || node.type === AST_NODE_TYPES32.TSNonNullExpression) {
6589
+ if (node.type === AST_NODE_TYPES33.TSAsExpression || node.type === AST_NODE_TYPES33.TSSatisfiesExpression || node.type === AST_NODE_TYPES33.TSNonNullExpression) {
6497
6590
  return unwrap3(node.expression);
6498
6591
  }
6499
6592
  return node;
6500
6593
  }
6501
6594
  var HAS_STATEFUL_FLAG_RE = /[gy]/;
6502
6595
  function isRegexLiteral(node) {
6503
- return node.type === AST_NODE_TYPES32.Literal && "regex" in node && node.regex !== void 0;
6596
+ return node.type === AST_NODE_TYPES33.Literal && "regex" in node && node.regex !== void 0;
6504
6597
  }
6505
6598
  function isLiteralOnly(node, depth) {
6506
6599
  if (depth > MAX_LITERAL_DEPTH) {
@@ -6508,29 +6601,29 @@ function isLiteralOnly(node, depth) {
6508
6601
  }
6509
6602
  const inner = unwrap3(node);
6510
6603
  switch (inner.type) {
6511
- case AST_NODE_TYPES32.Literal: {
6604
+ case AST_NODE_TYPES33.Literal: {
6512
6605
  return !(isRegexLiteral(inner) && HAS_STATEFUL_FLAG_RE.test(inner.regex.flags));
6513
6606
  }
6514
- case AST_NODE_TYPES32.TemplateLiteral: {
6607
+ case AST_NODE_TYPES33.TemplateLiteral: {
6515
6608
  return inner.expressions.length === 0;
6516
6609
  }
6517
- case AST_NODE_TYPES32.UnaryExpression: {
6518
- return (inner.operator === "-" || inner.operator === "+") && inner.argument.type === AST_NODE_TYPES32.Literal && typeof inner.argument.value === "number";
6610
+ case AST_NODE_TYPES33.UnaryExpression: {
6611
+ return (inner.operator === "-" || inner.operator === "+") && inner.argument.type === AST_NODE_TYPES33.Literal && typeof inner.argument.value === "number";
6519
6612
  }
6520
- case AST_NODE_TYPES32.ArrayExpression: {
6613
+ case AST_NODE_TYPES33.ArrayExpression: {
6521
6614
  return inner.elements.every(
6522
- (el) => el !== null && el.type !== AST_NODE_TYPES32.SpreadElement && isLiteralOnly(el, depth + 1)
6615
+ (el) => el !== null && el.type !== AST_NODE_TYPES33.SpreadElement && isLiteralOnly(el, depth + 1)
6523
6616
  );
6524
6617
  }
6525
- case AST_NODE_TYPES32.ObjectExpression: {
6618
+ case AST_NODE_TYPES33.ObjectExpression: {
6526
6619
  return inner.properties.every((prop) => {
6527
- if (prop.type !== AST_NODE_TYPES32.Property) {
6620
+ if (prop.type !== AST_NODE_TYPES33.Property) {
6528
6621
  return false;
6529
6622
  }
6530
6623
  if (prop.shorthand || prop.method || prop.kind !== "init") {
6531
6624
  return false;
6532
6625
  }
6533
- if (prop.computed && prop.key.type !== AST_NODE_TYPES32.Literal) {
6626
+ if (prop.computed && prop.key.type !== AST_NODE_TYPES33.Literal) {
6534
6627
  return false;
6535
6628
  }
6536
6629
  return isLiteralOnly(prop.value, depth + 1);
@@ -6543,7 +6636,7 @@ function isLiteralOnly(node, depth) {
6543
6636
  }
6544
6637
  function unwrapObjectFreeze(node) {
6545
6638
  const inner = unwrap3(node);
6546
- if (inner.type === AST_NODE_TYPES32.CallExpression && inner.callee.type === AST_NODE_TYPES32.MemberExpression && !inner.callee.computed && inner.callee.object.type === AST_NODE_TYPES32.Identifier && inner.callee.object.name === "Object" && inner.callee.property.type === AST_NODE_TYPES32.Identifier && inner.callee.property.name === "freeze" && inner.arguments.length === 1 && inner.arguments[0] !== void 0 && inner.arguments[0].type !== AST_NODE_TYPES32.SpreadElement) {
6639
+ if (inner.type === AST_NODE_TYPES33.CallExpression && inner.callee.type === AST_NODE_TYPES33.MemberExpression && !inner.callee.computed && inner.callee.object.type === AST_NODE_TYPES33.Identifier && inner.callee.object.name === "Object" && inner.callee.property.type === AST_NODE_TYPES33.Identifier && inner.callee.property.name === "freeze" && inner.arguments.length === 1 && inner.arguments[0] !== void 0 && inner.arguments[0].type !== AST_NODE_TYPES33.SpreadElement) {
6547
6640
  return unwrap3(inner.arguments[0]);
6548
6641
  }
6549
6642
  return inner;
@@ -6559,19 +6652,19 @@ function classify(init, checkRegex) {
6559
6652
  }
6560
6653
  return { kind: "regex", size: 1 };
6561
6654
  }
6562
- if (node.type === AST_NODE_TYPES32.ArrayExpression) {
6655
+ if (node.type === AST_NODE_TYPES33.ArrayExpression) {
6563
6656
  return isLiteralOnly(node, 0) ? { kind: "array", size: node.elements.length } : null;
6564
6657
  }
6565
- if (node.type === AST_NODE_TYPES32.ObjectExpression) {
6658
+ if (node.type === AST_NODE_TYPES33.ObjectExpression) {
6566
6659
  return isLiteralOnly(node, 0) ? { kind: "object", size: node.properties.length } : null;
6567
6660
  }
6568
- if (node.type === AST_NODE_TYPES32.NewExpression && node.callee.type === AST_NODE_TYPES32.Identifier && COLLECTION_CONSTRUCTORS.has(node.callee.name)) {
6661
+ if (node.type === AST_NODE_TYPES33.NewExpression && node.callee.type === AST_NODE_TYPES33.Identifier && COLLECTION_CONSTRUCTORS.has(node.callee.name)) {
6569
6662
  const arg = node.arguments[0];
6570
- if (node.arguments.length !== 1 || arg === void 0 || arg.type === AST_NODE_TYPES32.SpreadElement) {
6663
+ if (node.arguments.length !== 1 || arg === void 0 || arg.type === AST_NODE_TYPES33.SpreadElement) {
6571
6664
  return null;
6572
6665
  }
6573
6666
  const entries = unwrap3(arg);
6574
- if (entries.type !== AST_NODE_TYPES32.ArrayExpression) {
6667
+ if (entries.type !== AST_NODE_TYPES33.ArrayExpression) {
6575
6668
  return null;
6576
6669
  }
6577
6670
  return isLiteralOnly(entries, 0) ? { kind: node.callee.name === "Set" ? "Set" : "Map", size: entries.elements.length } : null;
@@ -6600,10 +6693,10 @@ var NON_RETAINING_BUILTINS = /* @__PURE__ */ new Map(
6600
6693
  );
6601
6694
  function isNonRetainingBuiltinCall(node, argument) {
6602
6695
  const callee = node.callee;
6603
- if (callee.type === AST_NODE_TYPES32.Identifier && callee.name === "structuredClone") {
6696
+ if (callee.type === AST_NODE_TYPES33.Identifier && callee.name === "structuredClone") {
6604
6697
  return true;
6605
6698
  }
6606
- if (callee.type !== AST_NODE_TYPES32.MemberExpression || callee.computed || callee.object.type !== AST_NODE_TYPES32.Identifier || callee.property.type !== AST_NODE_TYPES32.Identifier) {
6699
+ if (callee.type !== AST_NODE_TYPES33.MemberExpression || callee.computed || callee.object.type !== AST_NODE_TYPES33.Identifier || callee.property.type !== AST_NODE_TYPES33.Identifier) {
6607
6700
  return false;
6608
6701
  }
6609
6702
  const members = NON_RETAINING_BUILTINS.get(callee.object.name);
@@ -6617,38 +6710,38 @@ function isNonRetainingBuiltinCall(node, argument) {
6617
6710
  }
6618
6711
  function isSafeRead(identifier) {
6619
6712
  const parent = identifier.parent;
6620
- if (parent.type === AST_NODE_TYPES32.MemberExpression) {
6713
+ if (parent.type === AST_NODE_TYPES33.MemberExpression) {
6621
6714
  if (parent.object !== identifier) {
6622
6715
  return true;
6623
6716
  }
6624
6717
  const grandparent = parent.parent;
6625
- if (grandparent.type === AST_NODE_TYPES32.AssignmentExpression && grandparent.left === parent) {
6718
+ if (grandparent.type === AST_NODE_TYPES33.AssignmentExpression && grandparent.left === parent) {
6626
6719
  return false;
6627
6720
  }
6628
- if (grandparent.type === AST_NODE_TYPES32.UpdateExpression) {
6721
+ if (grandparent.type === AST_NODE_TYPES33.UpdateExpression) {
6629
6722
  return false;
6630
6723
  }
6631
- if (grandparent.type === AST_NODE_TYPES32.UnaryExpression && grandparent.operator === "delete") {
6724
+ if (grandparent.type === AST_NODE_TYPES33.UnaryExpression && grandparent.operator === "delete") {
6632
6725
  return false;
6633
6726
  }
6634
- if (!parent.computed && parent.property.type === AST_NODE_TYPES32.Identifier && MUTATING_METHODS.has(parent.property.name) && grandparent.type === AST_NODE_TYPES32.CallExpression && grandparent.callee === parent) {
6727
+ if (!parent.computed && parent.property.type === AST_NODE_TYPES33.Identifier && MUTATING_METHODS.has(parent.property.name) && grandparent.type === AST_NODE_TYPES33.CallExpression && grandparent.callee === parent) {
6635
6728
  return false;
6636
6729
  }
6637
6730
  return true;
6638
6731
  }
6639
- if (parent.type === AST_NODE_TYPES32.ForOfStatement && parent.right === identifier) {
6732
+ if (parent.type === AST_NODE_TYPES33.ForOfStatement && parent.right === identifier) {
6640
6733
  return true;
6641
6734
  }
6642
- if (parent.type === AST_NODE_TYPES32.SpreadElement) {
6735
+ if (parent.type === AST_NODE_TYPES33.SpreadElement) {
6643
6736
  return true;
6644
6737
  }
6645
- if (parent.type === AST_NODE_TYPES32.BinaryExpression) {
6738
+ if (parent.type === AST_NODE_TYPES33.BinaryExpression) {
6646
6739
  return true;
6647
6740
  }
6648
- if (parent.type === AST_NODE_TYPES32.CallExpression && parent.arguments.includes(identifier) && isNonRetainingBuiltinCall(parent, identifier)) {
6741
+ if (parent.type === AST_NODE_TYPES33.CallExpression && parent.arguments.includes(identifier) && isNonRetainingBuiltinCall(parent, identifier)) {
6649
6742
  return true;
6650
6743
  }
6651
- if (parent.type === AST_NODE_TYPES32.UnaryExpression && parent.operator !== "delete") {
6744
+ if (parent.type === AST_NODE_TYPES33.UnaryExpression && parent.operator !== "delete") {
6652
6745
  return true;
6653
6746
  }
6654
6747
  return false;
@@ -6703,7 +6796,7 @@ var prefer_module_level_constant_default = createRule({
6703
6796
  if (reference.isWrite()) {
6704
6797
  return false;
6705
6798
  }
6706
- if (reference.identifier.type !== AST_NODE_TYPES32.Identifier) {
6799
+ if (reference.identifier.type !== AST_NODE_TYPES33.Identifier) {
6707
6800
  return false;
6708
6801
  }
6709
6802
  if (!isSafeRead(reference.identifier)) {
@@ -6715,10 +6808,10 @@ var prefer_module_level_constant_default = createRule({
6715
6808
  return {
6716
6809
  VariableDeclarator(node) {
6717
6810
  const declaration = node.parent;
6718
- if (declaration.type !== AST_NODE_TYPES32.VariableDeclaration || declaration.kind !== "const" || declaration.declare === true) {
6811
+ if (declaration.type !== AST_NODE_TYPES33.VariableDeclaration || declaration.kind !== "const" || declaration.declare === true) {
6719
6812
  return;
6720
6813
  }
6721
- if (node.id.type !== AST_NODE_TYPES32.Identifier || node.init === null) {
6814
+ if (node.id.type !== AST_NODE_TYPES33.Identifier || node.init === null) {
6722
6815
  return;
6723
6816
  }
6724
6817
  if (enclosingFunction2(node) === null) {
@@ -6745,7 +6838,7 @@ var prefer_module_level_constant_default = createRule({
6745
6838
  });
6746
6839
 
6747
6840
  // src/rules/prefer-module-level-schema.ts
6748
- import { AST_NODE_TYPES as AST_NODE_TYPES33 } from "@typescript-eslint/utils";
6841
+ import { AST_NODE_TYPES as AST_NODE_TYPES34 } from "@typescript-eslint/utils";
6749
6842
 
6750
6843
  // src/rules/_zod.ts
6751
6844
  var ZOD_PREFIX_RE = /^Z[A-Z]/;
@@ -6811,9 +6904,9 @@ var I18N_RECEIVER_NAMES = /* @__PURE__ */ new Set([
6811
6904
  "intl"
6812
6905
  ]);
6813
6906
  var FUNCTION_TYPES6 = /* @__PURE__ */ new Set([
6814
- AST_NODE_TYPES33.ArrowFunctionExpression,
6815
- AST_NODE_TYPES33.FunctionDeclaration,
6816
- AST_NODE_TYPES33.FunctionExpression
6907
+ AST_NODE_TYPES34.ArrowFunctionExpression,
6908
+ AST_NODE_TYPES34.FunctionDeclaration,
6909
+ AST_NODE_TYPES34.FunctionExpression
6817
6910
  ]);
6818
6911
  function schemaExpression(node) {
6819
6912
  let current = node;
@@ -6822,10 +6915,10 @@ function schemaExpression(node) {
6822
6915
  if (parent === void 0) {
6823
6916
  return current;
6824
6917
  }
6825
- if (parent.type === AST_NODE_TYPES33.MemberExpression && parent.object === current && !parent.computed && parent.property.type === AST_NODE_TYPES33.Identifier && TERMINAL_METHODS.has(parent.property.name)) {
6918
+ if (parent.type === AST_NODE_TYPES34.MemberExpression && parent.object === current && !parent.computed && parent.property.type === AST_NODE_TYPES34.Identifier && TERMINAL_METHODS.has(parent.property.name)) {
6826
6919
  return current;
6827
6920
  }
6828
- if (parent.type === AST_NODE_TYPES33.MemberExpression && parent.object === current || parent.type === AST_NODE_TYPES33.CallExpression && parent.callee === current || parent.type === AST_NODE_TYPES33.TSAsExpression && parent.expression === current || parent.type === AST_NODE_TYPES33.TSNonNullExpression && parent.expression === current) {
6921
+ if (parent.type === AST_NODE_TYPES34.MemberExpression && parent.object === current || parent.type === AST_NODE_TYPES34.CallExpression && parent.callee === current || parent.type === AST_NODE_TYPES34.TSAsExpression && parent.expression === current || parent.type === AST_NODE_TYPES34.TSNonNullExpression && parent.expression === current) {
6829
6922
  current = parent;
6830
6923
  continue;
6831
6924
  }
@@ -6876,22 +6969,22 @@ function subtreeSome(root, predicate) {
6876
6969
  function readsReceiver(node) {
6877
6970
  return subtreeSome(
6878
6971
  node,
6879
- (inner) => inner.type === AST_NODE_TYPES33.ThisExpression || inner.type === AST_NODE_TYPES33.Super || inner.type === AST_NODE_TYPES33.Identifier && inner.name === "arguments"
6972
+ (inner) => inner.type === AST_NODE_TYPES34.ThisExpression || inner.type === AST_NODE_TYPES34.Super || inner.type === AST_NODE_TYPES34.Identifier && inner.name === "arguments"
6880
6973
  );
6881
6974
  }
6882
6975
  function buildsLocalizedText(node) {
6883
6976
  return subtreeSome(node, (inner) => {
6884
- if (inner.type === AST_NODE_TYPES33.TaggedTemplateExpression) {
6977
+ if (inner.type === AST_NODE_TYPES34.TaggedTemplateExpression) {
6885
6978
  return true;
6886
6979
  }
6887
- if (inner.type !== AST_NODE_TYPES33.CallExpression) {
6980
+ if (inner.type !== AST_NODE_TYPES34.CallExpression) {
6888
6981
  return false;
6889
6982
  }
6890
6983
  const { callee } = inner;
6891
- if (callee.type === AST_NODE_TYPES33.Identifier) {
6984
+ if (callee.type === AST_NODE_TYPES34.Identifier) {
6892
6985
  return I18N_CALLEE_NAMES.has(callee.name);
6893
6986
  }
6894
- return callee.type === AST_NODE_TYPES33.MemberExpression && !callee.computed && callee.object.type === AST_NODE_TYPES33.Identifier && I18N_RECEIVER_NAMES.has(callee.object.name);
6987
+ return callee.type === AST_NODE_TYPES34.MemberExpression && !callee.computed && callee.object.type === AST_NODE_TYPES34.Identifier && I18N_RECEIVER_NAMES.has(callee.object.name);
6895
6988
  });
6896
6989
  }
6897
6990
  function collectReferences(scope, out) {
@@ -6948,15 +7041,15 @@ var prefer_module_level_schema_default = createRule({
6948
7041
  }
6949
7042
  const zodNamespaces = /* @__PURE__ */ new Set();
6950
7043
  function isZodCall(node) {
6951
- return node.type === AST_NODE_TYPES33.CallExpression && node.callee.type === AST_NODE_TYPES33.MemberExpression && !node.callee.computed && node.callee.object.type === AST_NODE_TYPES33.Identifier && zodNamespaces.has(node.callee.object.name);
7044
+ return node.type === AST_NODE_TYPES34.CallExpression && node.callee.type === AST_NODE_TYPES34.MemberExpression && !node.callee.computed && node.callee.object.type === AST_NODE_TYPES34.Identifier && zodNamespaces.has(node.callee.object.name);
6952
7045
  }
6953
7046
  function isCovered(node) {
6954
7047
  let current = node.parent ?? void 0;
6955
7048
  while (current !== void 0) {
6956
- if (current !== node && isZodCall(current) && current.callee.type === AST_NODE_TYPES33.MemberExpression && current.callee.property.type === AST_NODE_TYPES33.Identifier && factories.has(current.callee.property.name)) {
7049
+ if (current !== node && isZodCall(current) && current.callee.type === AST_NODE_TYPES34.MemberExpression && current.callee.property.type === AST_NODE_TYPES34.Identifier && factories.has(current.callee.property.name)) {
6957
7050
  return true;
6958
7051
  }
6959
- if (current.type === AST_NODE_TYPES33.CallExpression && (current.callee.type === AST_NODE_TYPES33.Identifier && MEMO_CALLEES.has(current.callee.name) || current.callee.type === AST_NODE_TYPES33.MemberExpression && !current.callee.computed && current.callee.property.type === AST_NODE_TYPES33.Identifier && MEMO_CALLEES.has(current.callee.property.name))) {
7052
+ if (current.type === AST_NODE_TYPES34.CallExpression && (current.callee.type === AST_NODE_TYPES34.Identifier && MEMO_CALLEES.has(current.callee.name) || current.callee.type === AST_NODE_TYPES34.MemberExpression && !current.callee.computed && current.callee.property.type === AST_NODE_TYPES34.Identifier && MEMO_CALLEES.has(current.callee.property.name))) {
6960
7053
  return true;
6961
7054
  }
6962
7055
  current = current.parent ?? void 0;
@@ -6971,11 +7064,11 @@ var prefer_module_level_schema_default = createRule({
6971
7064
  if (parent === void 0) {
6972
7065
  return confirmed;
6973
7066
  }
6974
- if (parent.type === AST_NODE_TYPES33.Property && parent.value === current || parent.type === AST_NODE_TYPES33.ObjectExpression || parent.type === AST_NODE_TYPES33.ArrayExpression) {
7067
+ if (parent.type === AST_NODE_TYPES34.Property && parent.value === current || parent.type === AST_NODE_TYPES34.ObjectExpression || parent.type === AST_NODE_TYPES34.ArrayExpression) {
6975
7068
  current = parent;
6976
7069
  continue;
6977
7070
  }
6978
- if (parent.type === AST_NODE_TYPES33.CallExpression && parent.arguments.includes(current) && isSchemaComposition(parent)) {
7071
+ if (parent.type === AST_NODE_TYPES34.CallExpression && parent.arguments.includes(current) && isSchemaComposition(parent)) {
6979
7072
  current = schemaExpression(parent);
6980
7073
  confirmed = current;
6981
7074
  continue;
@@ -6985,7 +7078,7 @@ var prefer_module_level_schema_default = createRule({
6985
7078
  }
6986
7079
  function isSchemaComposition(node) {
6987
7080
  const { callee } = node;
6988
- const isCombinator = callee.type === AST_NODE_TYPES33.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES33.Identifier && ZOD_COMBINATOR_METHODS.has(callee.property.name);
7081
+ const isCombinator = callee.type === AST_NODE_TYPES34.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES34.Identifier && ZOD_COMBINATOR_METHODS.has(callee.property.name);
6989
7082
  return isCombinator || isZodCall(node);
6990
7083
  }
6991
7084
  function closesOverNothing(node, enclosing) {
@@ -7019,13 +7112,13 @@ var prefer_module_level_schema_default = createRule({
7019
7112
  }
7020
7113
  function ownerName(enclosing) {
7021
7114
  const parent = enclosing.parent ?? void 0;
7022
- if (enclosing.type === AST_NODE_TYPES33.FunctionDeclaration && enclosing.id !== null) {
7115
+ if (enclosing.type === AST_NODE_TYPES34.FunctionDeclaration && enclosing.id !== null) {
7023
7116
  return enclosing.id.name;
7024
7117
  }
7025
- if (parent !== void 0 && parent.type === AST_NODE_TYPES33.VariableDeclarator && parent.id.type === AST_NODE_TYPES33.Identifier) {
7118
+ if (parent !== void 0 && parent.type === AST_NODE_TYPES34.VariableDeclarator && parent.id.type === AST_NODE_TYPES34.Identifier) {
7026
7119
  return parent.id.name;
7027
7120
  }
7028
- if (parent !== void 0 && (parent.type === AST_NODE_TYPES33.MethodDefinition || parent.type === AST_NODE_TYPES33.Property) && parent.key.type === AST_NODE_TYPES33.Identifier) {
7121
+ if (parent !== void 0 && (parent.type === AST_NODE_TYPES34.MethodDefinition || parent.type === AST_NODE_TYPES34.Property) && parent.key.type === AST_NODE_TYPES34.Identifier) {
7029
7122
  return parent.key.name;
7030
7123
  }
7031
7124
  return "this function";
@@ -7036,7 +7129,7 @@ var prefer_module_level_schema_default = createRule({
7036
7129
  return;
7037
7130
  }
7038
7131
  for (const specifier of node.specifiers) {
7039
- if (specifier.type === AST_NODE_TYPES33.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES33.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES33.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES33.Identifier && specifier.imported.name === "z") {
7132
+ if (specifier.type === AST_NODE_TYPES34.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES34.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES34.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES34.Identifier && specifier.imported.name === "z") {
7040
7133
  zodNamespaces.add(specifier.local.name);
7041
7134
  }
7042
7135
  }
@@ -7046,7 +7139,7 @@ var prefer_module_level_schema_default = createRule({
7046
7139
  return;
7047
7140
  }
7048
7141
  const callee = node.callee;
7049
- if (callee.property.type !== AST_NODE_TYPES33.Identifier) {
7142
+ if (callee.property.type !== AST_NODE_TYPES34.Identifier) {
7050
7143
  return;
7051
7144
  }
7052
7145
  const factory = callee.property.name;
@@ -7061,7 +7154,7 @@ var prefer_module_level_schema_default = createRule({
7061
7154
  return;
7062
7155
  }
7063
7156
  const shape = node.arguments[0];
7064
- if (shape !== void 0 && shape.type === AST_NODE_TYPES33.ObjectExpression && shape.properties.length < minProperties) {
7157
+ if (shape !== void 0 && shape.type === AST_NODE_TYPES34.ObjectExpression && shape.properties.length < minProperties) {
7065
7158
  return;
7066
7159
  }
7067
7160
  const expression = schemaExpression(node);
@@ -7089,20 +7182,20 @@ var prefer_module_level_schema_default = createRule({
7089
7182
  });
7090
7183
 
7091
7184
  // src/rules/prefer-non-nullable-collection.ts
7092
- import { AST_NODE_TYPES as AST_NODE_TYPES34 } from "@typescript-eslint/utils";
7185
+ import { AST_NODE_TYPES as AST_NODE_TYPES35 } from "@typescript-eslint/utils";
7093
7186
  var ARRAY_TYPE_NAMES = /* @__PURE__ */ new Set(["Array", "ReadonlyArray"]);
7094
7187
  function propertyName(node) {
7095
7188
  const key = node.key;
7096
- if (key.type === AST_NODE_TYPES34.Identifier) return key.name;
7097
- if (key.type === AST_NODE_TYPES34.Literal) return String(key.value);
7189
+ if (key.type === AST_NODE_TYPES35.Identifier) return key.name;
7190
+ if (key.type === AST_NODE_TYPES35.Literal) return String(key.value);
7098
7191
  return "collection";
7099
7192
  }
7100
7193
  function isArrayType(node) {
7101
- if (node.type === AST_NODE_TYPES34.TSArrayType) return true;
7102
- return node.type === AST_NODE_TYPES34.TSTypeReference && node.typeName.type === AST_NODE_TYPES34.Identifier && ARRAY_TYPE_NAMES.has(node.typeName.name);
7194
+ if (node.type === AST_NODE_TYPES35.TSArrayType) return true;
7195
+ return node.type === AST_NODE_TYPES35.TSTypeReference && node.typeName.type === AST_NODE_TYPES35.Identifier && ARRAY_TYPE_NAMES.has(node.typeName.name);
7103
7196
  }
7104
7197
  function isNullishType(node) {
7105
- return node.type === AST_NODE_TYPES34.TSNullKeyword || node.type === AST_NODE_TYPES34.TSUndefinedKeyword;
7198
+ return node.type === AST_NODE_TYPES35.TSNullKeyword || node.type === AST_NODE_TYPES35.TSUndefinedKeyword;
7106
7199
  }
7107
7200
  function isNullableArrayOnly(node) {
7108
7201
  const values = node.types.filter((member) => !isNullishType(member));
@@ -7130,7 +7223,7 @@ var prefer_non_nullable_collection_default = createRule({
7130
7223
  if (node.optional) return;
7131
7224
  const annotation = node.typeAnnotation?.typeAnnotation;
7132
7225
  if (annotation === void 0) return;
7133
- if (annotation.type !== AST_NODE_TYPES34.TSUnionType || !isNullableArrayOnly(annotation)) {
7226
+ if (annotation.type !== AST_NODE_TYPES35.TSUnionType || !isNullableArrayOnly(annotation)) {
7134
7227
  return;
7135
7228
  }
7136
7229
  context.report({
@@ -7143,7 +7236,7 @@ var prefer_non_nullable_collection_default = createRule({
7143
7236
  TSPropertySignature: checkOptionalProperty,
7144
7237
  PropertyDefinition: checkOptionalProperty,
7145
7238
  TSTypeAliasDeclaration(node) {
7146
- if (node.typeAnnotation.type !== AST_NODE_TYPES34.TSUnionType) return;
7239
+ if (node.typeAnnotation.type !== AST_NODE_TYPES35.TSUnionType) return;
7147
7240
  if (!isNullableArrayOnly(node.typeAnnotation)) return;
7148
7241
  context.report({
7149
7242
  node,
@@ -7155,14 +7248,100 @@ var prefer_non_nullable_collection_default = createRule({
7155
7248
  }
7156
7249
  });
7157
7250
 
7251
+ // src/rules/prefer-native-random-uuid.ts
7252
+ import { AST_NODE_TYPES as AST_NODE_TYPES36, ASTUtils as ASTUtils3 } from "@typescript-eslint/utils";
7253
+ function requireUuid(node) {
7254
+ return node?.type === AST_NODE_TYPES36.CallExpression && node.callee.type === AST_NODE_TYPES36.Identifier && node.callee.name === "require" && node.arguments.length === 1 && node.arguments[0]?.type === AST_NODE_TYPES36.Literal && node.arguments[0].value === "uuid";
7255
+ }
7256
+ var prefer_native_random_uuid_default = createRule({
7257
+ name: "prefer-native-random-uuid",
7258
+ meta: {
7259
+ type: "suggestion",
7260
+ docs: {
7261
+ description: "Prefer `globalThis.crypto.randomUUID()` over resolved zero-argument UUID v4 bindings from the `uuid` package."
7262
+ },
7263
+ hasSuggestions: true,
7264
+ schema: [],
7265
+ messages: {
7266
+ preferNative: "Use the Node 22 native `globalThis.crypto.randomUUID()` instead of the `uuid` package for UUID v4.",
7267
+ replaceWithNative: "Replace this UUID v4 call with the native implementation."
7268
+ }
7269
+ },
7270
+ defaultOptions: [],
7271
+ create(context) {
7272
+ const directBindings = /* @__PURE__ */ new Set();
7273
+ const namespaceBindings = /* @__PURE__ */ new Set();
7274
+ function resolve(identifier) {
7275
+ return ASTUtils3.findVariable(context.sourceCode.getScope(identifier), identifier.name);
7276
+ }
7277
+ function record(identifier, destination) {
7278
+ const variable = resolve(identifier);
7279
+ if (variable !== null) destination.add(variable);
7280
+ }
7281
+ function report(node) {
7282
+ context.report({
7283
+ node,
7284
+ messageId: "preferNative",
7285
+ suggest: [
7286
+ {
7287
+ messageId: "replaceWithNative",
7288
+ fix: (fixer) => fixer.replaceText(node, "globalThis.crypto.randomUUID()")
7289
+ }
7290
+ ]
7291
+ });
7292
+ }
7293
+ return {
7294
+ ImportDeclaration(node) {
7295
+ if (node.source.value !== "uuid") return;
7296
+ for (const specifier of node.specifiers) {
7297
+ if (specifier.type === AST_NODE_TYPES36.ImportSpecifier && (specifier.imported.type === AST_NODE_TYPES36.Identifier ? specifier.imported.name === "v4" : specifier.imported.value === "v4")) {
7298
+ record(specifier.local, directBindings);
7299
+ } else if (specifier.type === AST_NODE_TYPES36.ImportNamespaceSpecifier) {
7300
+ record(specifier.local, namespaceBindings);
7301
+ }
7302
+ }
7303
+ },
7304
+ VariableDeclarator(node) {
7305
+ if (node.parent.kind !== "const" || !requireUuid(node.init)) return;
7306
+ if (node.init?.type !== AST_NODE_TYPES36.CallExpression || node.init.callee.type !== AST_NODE_TYPES36.Identifier || (resolve(node.init.callee)?.defs.length ?? 0) > 0) {
7307
+ return;
7308
+ }
7309
+ if (node.id.type === AST_NODE_TYPES36.Identifier) {
7310
+ record(node.id, namespaceBindings);
7311
+ return;
7312
+ }
7313
+ if (node.id.type !== AST_NODE_TYPES36.ObjectPattern) return;
7314
+ for (const property of node.id.properties) {
7315
+ if (property.type === AST_NODE_TYPES36.Property && !property.computed && (property.key.type === AST_NODE_TYPES36.Identifier && property.key.name === "v4" || property.key.type === AST_NODE_TYPES36.Literal && property.key.value === "v4") && property.value.type === AST_NODE_TYPES36.Identifier) {
7316
+ record(property.value, directBindings);
7317
+ }
7318
+ }
7319
+ },
7320
+ "CallExpression:exit"(node) {
7321
+ if (node.arguments.length !== 0) return;
7322
+ if (node.callee.type === AST_NODE_TYPES36.Identifier) {
7323
+ const variable2 = resolve(node.callee);
7324
+ if (variable2 !== null && directBindings.has(variable2)) report(node);
7325
+ return;
7326
+ }
7327
+ if (node.callee.type !== AST_NODE_TYPES36.MemberExpression || node.callee.computed || node.callee.object.type !== AST_NODE_TYPES36.Identifier || node.callee.property.type !== AST_NODE_TYPES36.Identifier || node.callee.property.name !== "v4") {
7328
+ return;
7329
+ }
7330
+ const variable = resolve(node.callee.object);
7331
+ if (variable !== null && namespaceBindings.has(variable)) report(node);
7332
+ }
7333
+ };
7334
+ }
7335
+ });
7336
+
7158
7337
  // src/rules/prefer-schema-for-api-payload.ts
7159
- import { AST_NODE_TYPES as AST_NODE_TYPES35 } from "@typescript-eslint/utils";
7338
+ import { AST_NODE_TYPES as AST_NODE_TYPES37 } from "@typescript-eslint/utils";
7160
7339
  var unwrap4 = (node) => {
7161
7340
  let current = node;
7162
7341
  while (current !== null && current !== void 0) {
7163
- if (current.type === AST_NODE_TYPES35.TSAsExpression || current.type === AST_NODE_TYPES35.TSTypeAssertion || current.type === AST_NODE_TYPES35.TSNonNullExpression || current.type === AST_NODE_TYPES35.TSSatisfiesExpression) {
7342
+ if (current.type === AST_NODE_TYPES37.TSAsExpression || current.type === AST_NODE_TYPES37.TSTypeAssertion || current.type === AST_NODE_TYPES37.TSNonNullExpression || current.type === AST_NODE_TYPES37.TSSatisfiesExpression) {
7164
7343
  current = current.expression;
7165
- } else if (current.type === AST_NODE_TYPES35.ChainExpression) {
7344
+ } else if (current.type === AST_NODE_TYPES37.ChainExpression) {
7166
7345
  current = current.expression;
7167
7346
  } else {
7168
7347
  break;
@@ -7177,23 +7356,23 @@ var PROMISE_CHAIN_METHODS = /* @__PURE__ */ new Set([
7177
7356
  ]);
7178
7357
  var isSchemaParseReference = (node) => {
7179
7358
  const inner = unwrap4(node);
7180
- return inner !== null && inner.type === AST_NODE_TYPES35.MemberExpression && !inner.computed && inner.property.type === AST_NODE_TYPES35.Identifier && (inner.property.name === "parse" || inner.property.name === "safeParse");
7359
+ return inner !== null && inner.type === AST_NODE_TYPES37.MemberExpression && !inner.computed && inner.property.type === AST_NODE_TYPES37.Identifier && (inner.property.name === "parse" || inner.property.name === "safeParse");
7181
7360
  };
7182
7361
  var isRawPayloadSource = (node) => {
7183
7362
  let current = unwrap4(node);
7184
7363
  if (current === null) return false;
7185
- if (current.type === AST_NODE_TYPES35.AwaitExpression) {
7364
+ if (current.type === AST_NODE_TYPES37.AwaitExpression) {
7186
7365
  current = unwrap4(current.argument);
7187
7366
  }
7188
- if (current === null || current.type !== AST_NODE_TYPES35.CallExpression) {
7367
+ if (current === null || current.type !== AST_NODE_TYPES37.CallExpression) {
7189
7368
  return false;
7190
7369
  }
7191
7370
  const callee = unwrap4(current.callee);
7192
- if (callee === null || callee.type !== AST_NODE_TYPES35.MemberExpression) {
7371
+ if (callee === null || callee.type !== AST_NODE_TYPES37.MemberExpression) {
7193
7372
  return false;
7194
7373
  }
7195
7374
  const property = unwrap4(callee.property);
7196
- if (property === null || property.type !== AST_NODE_TYPES35.Identifier) {
7375
+ if (property === null || property.type !== AST_NODE_TYPES37.Identifier) {
7197
7376
  return false;
7198
7377
  }
7199
7378
  if (property.name === "json") {
@@ -7203,16 +7382,16 @@ var isRawPayloadSource = (node) => {
7203
7382
  return !current.arguments.some(isSchemaParseReference) && isRawPayloadSource(callee.object);
7204
7383
  }
7205
7384
  const object = unwrap4(callee.object);
7206
- return property.name === "parse" && object !== null && object.type === AST_NODE_TYPES35.Identifier && object.name === "JSON" && !isLocalFileRead(current.arguments[0]);
7385
+ return property.name === "parse" && object !== null && object.type === AST_NODE_TYPES37.Identifier && object.name === "JSON" && !isLocalFileRead(current.arguments[0]);
7207
7386
  };
7208
7387
  var FILE_READ_RE = /^(readFile|readFileSync|readJson|readJsonSync|readJSON)$/;
7209
7388
  var isLocalFileRead = (node) => {
7210
7389
  let found = false;
7211
7390
  const visit = (current) => {
7212
7391
  if (found || current === null || current === void 0) return;
7213
- if (current.type === AST_NODE_TYPES35.CallExpression) {
7392
+ if (current.type === AST_NODE_TYPES37.CallExpression) {
7214
7393
  const callee = unwrap4(current.callee);
7215
- const name = callee?.type === AST_NODE_TYPES35.Identifier ? callee.name : callee?.type === AST_NODE_TYPES35.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES35.Identifier ? callee.property.name : null;
7394
+ const name = callee?.type === AST_NODE_TYPES37.Identifier ? callee.name : callee?.type === AST_NODE_TYPES37.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES37.Identifier ? callee.property.name : null;
7216
7395
  if (name !== null && FILE_READ_RE.test(name)) {
7217
7396
  found = true;
7218
7397
  return;
@@ -7234,15 +7413,15 @@ var isLocalFileRead = (node) => {
7234
7413
  var ASSERTION_CALLEE_RE = /^(expect|assert|should|invariant)$/;
7235
7414
  var isInsideAssertion = (node) => {
7236
7415
  for (let current = node.parent; current !== void 0 && current !== null; current = current.parent) {
7237
- if (current.type !== AST_NODE_TYPES35.CallExpression) continue;
7416
+ if (current.type !== AST_NODE_TYPES37.CallExpression) continue;
7238
7417
  let callee = current.callee;
7239
- while (callee.type === AST_NODE_TYPES35.MemberExpression) {
7418
+ while (callee.type === AST_NODE_TYPES37.MemberExpression) {
7240
7419
  callee = callee.object;
7241
7420
  }
7242
- if (callee.type === AST_NODE_TYPES35.CallExpression) {
7421
+ if (callee.type === AST_NODE_TYPES37.CallExpression) {
7243
7422
  callee = callee.callee;
7244
7423
  }
7245
- if (callee.type === AST_NODE_TYPES35.Identifier && ASSERTION_CALLEE_RE.test(callee.name)) {
7424
+ if (callee.type === AST_NODE_TYPES37.Identifier && ASSERTION_CALLEE_RE.test(callee.name)) {
7246
7425
  return true;
7247
7426
  }
7248
7427
  }
@@ -7261,39 +7440,39 @@ var GUARD_NAME_RE = /^(?:is|validate|parse|assert|decode|coerce)[A-Z]/;
7261
7440
  var isValidationRead = (node) => {
7262
7441
  let current = node;
7263
7442
  let parent = current.parent;
7264
- while (parent !== null && parent !== void 0 && (parent.type === AST_NODE_TYPES35.TSAsExpression || parent.type === AST_NODE_TYPES35.TSTypeAssertion || parent.type === AST_NODE_TYPES35.TSNonNullExpression || parent.type === AST_NODE_TYPES35.TSSatisfiesExpression || parent.type === AST_NODE_TYPES35.ChainExpression)) {
7443
+ while (parent !== null && parent !== void 0 && (parent.type === AST_NODE_TYPES37.TSAsExpression || parent.type === AST_NODE_TYPES37.TSTypeAssertion || parent.type === AST_NODE_TYPES37.TSNonNullExpression || parent.type === AST_NODE_TYPES37.TSSatisfiesExpression || parent.type === AST_NODE_TYPES37.ChainExpression)) {
7265
7444
  current = parent;
7266
7445
  parent = parent.parent;
7267
7446
  }
7268
7447
  if (parent === null || parent === void 0) return false;
7269
- if (parent.type === AST_NODE_TYPES35.UnaryExpression && parent.operator === "typeof" && parent.argument === current) {
7448
+ if (parent.type === AST_NODE_TYPES37.UnaryExpression && parent.operator === "typeof" && parent.argument === current) {
7270
7449
  return true;
7271
7450
  }
7272
- if (parent.type !== AST_NODE_TYPES35.CallExpression || !parent.arguments.some((arg) => arg === current)) {
7451
+ if (parent.type !== AST_NODE_TYPES37.CallExpression || !parent.arguments.some((arg) => arg === current)) {
7273
7452
  return false;
7274
7453
  }
7275
7454
  const callee = parent.callee;
7276
- if (callee.type === AST_NODE_TYPES35.MemberExpression && !callee.computed && callee.object.type === AST_NODE_TYPES35.Identifier && callee.object.name === "Array" && callee.property.type === AST_NODE_TYPES35.Identifier && callee.property.name === "isArray") {
7455
+ if (callee.type === AST_NODE_TYPES37.MemberExpression && !callee.computed && callee.object.type === AST_NODE_TYPES37.Identifier && callee.object.name === "Array" && callee.property.type === AST_NODE_TYPES37.Identifier && callee.property.name === "isArray") {
7277
7456
  return parent.arguments.length === 1;
7278
7457
  }
7279
- return callee.type === AST_NODE_TYPES35.Identifier && GUARD_NAME_RE.test(callee.name);
7458
+ return callee.type === AST_NODE_TYPES37.Identifier && GUARD_NAME_RE.test(callee.name);
7280
7459
  };
7281
7460
  var isGuardTestPosition = (node) => {
7282
7461
  let current = node;
7283
7462
  let parent = current.parent;
7284
7463
  while (parent !== void 0 && parent !== null) {
7285
7464
  switch (parent.type) {
7286
- case AST_NODE_TYPES35.UnaryExpression:
7287
- case AST_NODE_TYPES35.LogicalExpression:
7288
- case AST_NODE_TYPES35.ChainExpression:
7465
+ case AST_NODE_TYPES37.UnaryExpression:
7466
+ case AST_NODE_TYPES37.LogicalExpression:
7467
+ case AST_NODE_TYPES37.ChainExpression:
7289
7468
  current = parent;
7290
7469
  parent = parent.parent;
7291
7470
  continue;
7292
- case AST_NODE_TYPES35.IfStatement:
7293
- case AST_NODE_TYPES35.ConditionalExpression:
7294
- case AST_NODE_TYPES35.WhileStatement:
7295
- case AST_NODE_TYPES35.DoWhileStatement:
7296
- case AST_NODE_TYPES35.ForStatement:
7471
+ case AST_NODE_TYPES37.IfStatement:
7472
+ case AST_NODE_TYPES37.ConditionalExpression:
7473
+ case AST_NODE_TYPES37.WhileStatement:
7474
+ case AST_NODE_TYPES37.DoWhileStatement:
7475
+ case AST_NODE_TYPES37.ForStatement:
7297
7476
  return parent.test === current;
7298
7477
  default:
7299
7478
  return false;
@@ -7303,7 +7482,7 @@ var isGuardTestPosition = (node) => {
7303
7482
  };
7304
7483
  var isUnvalidatedVariableRef = (node, scope, tracked) => {
7305
7484
  const unwrapped = unwrap4(node);
7306
- if (unwrapped === null || unwrapped.type !== AST_NODE_TYPES35.Identifier) {
7485
+ if (unwrapped === null || unwrapped.type !== AST_NODE_TYPES37.Identifier) {
7307
7486
  return false;
7308
7487
  }
7309
7488
  const variable = findVariable2(scope, unwrapped.name);
@@ -7346,11 +7525,11 @@ var prefer_schema_for_api_payload_default = createRule({
7346
7525
  return {
7347
7526
  VariableDeclarator(node) {
7348
7527
  const scope = context.sourceCode.getScope(node);
7349
- if (node.id.type === AST_NODE_TYPES35.Identifier) {
7528
+ if (node.id.type === AST_NODE_TYPES37.Identifier) {
7350
7529
  trackInitializer(node);
7351
7530
  return;
7352
7531
  }
7353
- if (node.id.type === AST_NODE_TYPES35.ObjectPattern || node.id.type === AST_NODE_TYPES35.ArrayPattern) {
7532
+ if (node.id.type === AST_NODE_TYPES37.ObjectPattern || node.id.type === AST_NODE_TYPES37.ArrayPattern) {
7354
7533
  if (isRawPayloadSource(node.init)) {
7355
7534
  if (!isFullyNarrowedPattern(node)) {
7356
7535
  context.report({ node: node.id, messageId: "unparsedJsonAccess" });
@@ -7364,7 +7543,7 @@ var prefer_schema_for_api_payload_default = createRule({
7364
7543
  },
7365
7544
  AssignmentExpression(node) {
7366
7545
  const scope = context.sourceCode.getScope(node);
7367
- if (node.left.type === AST_NODE_TYPES35.Identifier) {
7546
+ if (node.left.type === AST_NODE_TYPES37.Identifier) {
7368
7547
  const variable = findVariable2(scope, node.left.name);
7369
7548
  if (variable === null) return;
7370
7549
  if (isRawPayloadSource(node.right)) {
@@ -7374,7 +7553,7 @@ var prefer_schema_for_api_payload_default = createRule({
7374
7553
  }
7375
7554
  return;
7376
7555
  }
7377
- if (node.left.type === AST_NODE_TYPES35.ObjectPattern || node.left.type === AST_NODE_TYPES35.ArrayPattern) {
7556
+ if (node.left.type === AST_NODE_TYPES37.ObjectPattern || node.left.type === AST_NODE_TYPES37.ArrayPattern) {
7378
7557
  if (isRawPayloadSource(node.right)) {
7379
7558
  context.report({
7380
7559
  node: node.left,
@@ -7391,15 +7570,15 @@ var prefer_schema_for_api_payload_default = createRule({
7391
7570
  }
7392
7571
  },
7393
7572
  CallExpression(node) {
7394
- if (node.callee.type !== AST_NODE_TYPES35.Identifier) return;
7573
+ if (node.callee.type !== AST_NODE_TYPES37.Identifier) return;
7395
7574
  if (!GUARD_NAME_RE.test(node.callee.name) && !isGuardTestPosition(node)) {
7396
7575
  return;
7397
7576
  }
7398
7577
  const scope = context.sourceCode.getScope(node);
7399
7578
  for (const arg of node.arguments) {
7400
- if (arg.type === AST_NODE_TYPES35.SpreadElement) continue;
7579
+ if (arg.type === AST_NODE_TYPES37.SpreadElement) continue;
7401
7580
  const unwrapped = unwrap4(arg);
7402
- if (unwrapped === null || unwrapped.type !== AST_NODE_TYPES35.Identifier) {
7581
+ if (unwrapped === null || unwrapped.type !== AST_NODE_TYPES37.Identifier) {
7403
7582
  continue;
7404
7583
  }
7405
7584
  const variable = findVariable2(scope, unwrapped.name);
@@ -7413,13 +7592,13 @@ var prefer_schema_for_api_payload_default = createRule({
7413
7592
  const obj = unwrap4(node.object);
7414
7593
  if (isRawPayloadSource(obj)) {
7415
7594
  const parent = node.parent;
7416
- if (parent.type === AST_NODE_TYPES35.CallExpression && parent.callee === node && node.property.type === AST_NODE_TYPES35.Identifier && (node.property.name === "parse" || node.property.name === "safeParse" || PROMISE_CHAIN_METHODS.has(node.property.name))) {
7595
+ if (parent.type === AST_NODE_TYPES37.CallExpression && parent.callee === node && node.property.type === AST_NODE_TYPES37.Identifier && (node.property.name === "parse" || node.property.name === "safeParse" || PROMISE_CHAIN_METHODS.has(node.property.name))) {
7417
7596
  return;
7418
7597
  }
7419
7598
  context.report({ node, messageId: "unparsedJsonAccess" });
7420
7599
  return;
7421
7600
  }
7422
- if (obj !== null && obj.type === AST_NODE_TYPES35.Identifier && isUnvalidatedVariableRef(obj, scope, unvalidatedVariables)) {
7601
+ if (obj !== null && obj.type === AST_NODE_TYPES37.Identifier && isUnvalidatedVariableRef(obj, scope, unvalidatedVariables)) {
7423
7602
  context.report({ node, messageId: "unparsedJsonAccess" });
7424
7603
  const variable = findVariable2(scope, obj.name);
7425
7604
  if (variable !== null) {
@@ -7432,7 +7611,7 @@ var prefer_schema_for_api_payload_default = createRule({
7432
7611
  });
7433
7612
 
7434
7613
  // src/rules/prefer-semantic-colors.ts
7435
- import { AST_NODE_TYPES as AST_NODE_TYPES36 } from "@typescript-eslint/utils";
7614
+ import { AST_NODE_TYPES as AST_NODE_TYPES38 } from "@typescript-eslint/utils";
7436
7615
  import { existsSync, readdirSync, readFileSync } from "fs";
7437
7616
  import { dirname, join, parse } from "path";
7438
7617
 
@@ -7532,8 +7711,8 @@ var SVG_EXEMPT_COLOR_VALUES = /* @__PURE__ */ new Set([
7532
7711
  ]);
7533
7712
  function jsxElementName(node) {
7534
7713
  const name = node.openingElement.name;
7535
- if (name.type === AST_NODE_TYPES36.JSXIdentifier) return name.name;
7536
- if (name.type === AST_NODE_TYPES36.JSXMemberExpression && name.property.type === AST_NODE_TYPES36.JSXIdentifier) {
7714
+ if (name.type === AST_NODE_TYPES38.JSXIdentifier) return name.name;
7715
+ if (name.type === AST_NODE_TYPES38.JSXMemberExpression && name.property.type === AST_NODE_TYPES38.JSXIdentifier) {
7537
7716
  return name.property.name;
7538
7717
  }
7539
7718
  return null;
@@ -7559,7 +7738,7 @@ var EMAIL_OR_PDF_MODULE_RE = /^@react-(?:email|pdf)\//;
7559
7738
  var isInsideSvg = (node) => {
7560
7739
  let current = node.parent;
7561
7740
  while (current !== void 0 && current !== null) {
7562
- if (current.type === AST_NODE_TYPES36.JSXElement) {
7741
+ if (current.type === AST_NODE_TYPES38.JSXElement) {
7563
7742
  const name = jsxElementName(current);
7564
7743
  if (name !== null && isSvgLikeElementName(name)) return true;
7565
7744
  }
@@ -7570,7 +7749,7 @@ var isInsideSvg = (node) => {
7570
7749
  var isInsideIconFactoryPath = (node) => {
7571
7750
  let current = node.parent;
7572
7751
  while (current !== void 0 && current !== null) {
7573
- if (current.type === AST_NODE_TYPES36.Property && propName(current.key) === "path" && current.parent.type === AST_NODE_TYPES36.ObjectExpression && current.parent.parent.type === AST_NODE_TYPES36.CallExpression && current.parent.parent.callee.type === AST_NODE_TYPES36.Identifier && current.parent.parent.callee.name === "createIcon") {
7752
+ if (current.type === AST_NODE_TYPES38.Property && propName(current.key) === "path" && current.parent.type === AST_NODE_TYPES38.ObjectExpression && current.parent.parent.type === AST_NODE_TYPES38.CallExpression && current.parent.parent.callee.type === AST_NODE_TYPES38.Identifier && current.parent.parent.callee.name === "createIcon") {
7574
7753
  return true;
7575
7754
  }
7576
7755
  current = current.parent;
@@ -7707,12 +7886,12 @@ var hasSemanticTokenSystem = (filename) => {
7707
7886
  return root !== null && workspaceHasMarker(root);
7708
7887
  };
7709
7888
  var propName = (key) => {
7710
- if (key.type === AST_NODE_TYPES36.Identifier) return key.name;
7711
- if (key.type === AST_NODE_TYPES36.Literal && typeof key.value === "string") return key.value;
7889
+ if (key.type === AST_NODE_TYPES38.Identifier) return key.name;
7890
+ if (key.type === AST_NODE_TYPES38.Literal && typeof key.value === "string") return key.value;
7712
7891
  return null;
7713
7892
  };
7714
7893
  var staticallyImportsEmailOrPdfRenderer = (program) => program.body.some((statement) => {
7715
- if (statement.type !== AST_NODE_TYPES36.ImportDeclaration && statement.type !== AST_NODE_TYPES36.ExportNamedDeclaration && statement.type !== AST_NODE_TYPES36.ExportAllDeclaration) {
7894
+ if (statement.type !== AST_NODE_TYPES38.ImportDeclaration && statement.type !== AST_NODE_TYPES38.ExportNamedDeclaration && statement.type !== AST_NODE_TYPES38.ExportAllDeclaration) {
7716
7895
  return false;
7717
7896
  }
7718
7897
  return statement.source !== null && typeof statement.source.value === "string" && EMAIL_OR_PDF_MODULE_RE.test(statement.source.value);
@@ -7764,27 +7943,27 @@ var prefer_semantic_colors_default = createRule({
7764
7943
  const checkClassNode = (node) => {
7765
7944
  if (node === null) return;
7766
7945
  switch (node.type) {
7767
- case AST_NODE_TYPES36.Literal:
7946
+ case AST_NODE_TYPES38.Literal:
7768
7947
  if (typeof node.value === "string") reportClasses(node.value, node);
7769
7948
  break;
7770
- case AST_NODE_TYPES36.TemplateLiteral:
7949
+ case AST_NODE_TYPES38.TemplateLiteral:
7771
7950
  for (const quasi of node.quasis) reportClasses(quasi.value.cooked ?? "", quasi);
7772
7951
  break;
7773
- case AST_NODE_TYPES36.ArrayExpression:
7952
+ case AST_NODE_TYPES38.ArrayExpression:
7774
7953
  for (const element of node.elements) {
7775
- if (element !== null && element.type !== AST_NODE_TYPES36.SpreadElement) checkClassNode(element);
7954
+ if (element !== null && element.type !== AST_NODE_TYPES38.SpreadElement) checkClassNode(element);
7776
7955
  }
7777
7956
  break;
7778
- case AST_NODE_TYPES36.ObjectExpression:
7957
+ case AST_NODE_TYPES38.ObjectExpression:
7779
7958
  for (const property of node.properties) {
7780
- if (property.type === AST_NODE_TYPES36.Property) checkClassNode(property.value);
7959
+ if (property.type === AST_NODE_TYPES38.Property) checkClassNode(property.value);
7781
7960
  }
7782
7961
  break;
7783
- case AST_NODE_TYPES36.ConditionalExpression:
7962
+ case AST_NODE_TYPES38.ConditionalExpression:
7784
7963
  checkClassNode(node.consequent);
7785
7964
  checkClassNode(node.alternate);
7786
7965
  break;
7787
- case AST_NODE_TYPES36.LogicalExpression:
7966
+ case AST_NODE_TYPES38.LogicalExpression:
7788
7967
  checkClassNode(node.right);
7789
7968
  break;
7790
7969
  default:
@@ -7792,32 +7971,32 @@ var prefer_semantic_colors_default = createRule({
7792
7971
  }
7793
7972
  };
7794
7973
  const checkColorValueNode = (node) => {
7795
- if (node.type === AST_NODE_TYPES36.Literal && typeof node.value === "string" && RAW_COLOR_VALUE_RE.test(node.value) && !CSS_VAR_REFERENCE_RE.test(node.value)) {
7974
+ if (node.type === AST_NODE_TYPES38.Literal && typeof node.value === "string" && RAW_COLOR_VALUE_RE.test(node.value) && !CSS_VAR_REFERENCE_RE.test(node.value)) {
7796
7975
  report(node, "inlineColor", { value: node.value });
7797
7976
  }
7798
7977
  };
7799
7978
  return {
7800
7979
  "JSXAttribute[name.name='className']"(node) {
7801
7980
  if (node.value === null) return;
7802
- if (node.value.type === AST_NODE_TYPES36.Literal) checkClassNode(node.value);
7803
- else if (node.value.type === AST_NODE_TYPES36.JSXExpressionContainer) {
7804
- if (node.value.expression.type !== AST_NODE_TYPES36.JSXEmptyExpression) {
7981
+ if (node.value.type === AST_NODE_TYPES38.Literal) checkClassNode(node.value);
7982
+ else if (node.value.type === AST_NODE_TYPES38.JSXExpressionContainer) {
7983
+ if (node.value.expression.type !== AST_NODE_TYPES38.JSXEmptyExpression) {
7805
7984
  checkClassNode(node.value.expression);
7806
7985
  }
7807
7986
  }
7808
7987
  },
7809
7988
  CallExpression(node) {
7810
- if (node.callee.type === AST_NODE_TYPES36.Identifier && node.callee.name === "require" && node.arguments[0]?.type === AST_NODE_TYPES36.Literal && typeof node.arguments[0].value === "string" && EMAIL_OR_PDF_MODULE_RE.test(node.arguments[0].value)) {
7989
+ if (node.callee.type === AST_NODE_TYPES38.Identifier && node.callee.name === "require" && node.arguments[0]?.type === AST_NODE_TYPES38.Literal && typeof node.arguments[0].value === "string" && EMAIL_OR_PDF_MODULE_RE.test(node.arguments[0].value)) {
7811
7990
  importsEmailOrPdfRenderer = true;
7812
7991
  }
7813
- if (node.callee.type === AST_NODE_TYPES36.Identifier && CLASS_FNS.has(node.callee.name)) {
7992
+ if (node.callee.type === AST_NODE_TYPES38.Identifier && CLASS_FNS.has(node.callee.name)) {
7814
7993
  for (const arg of node.arguments) {
7815
- if (arg.type !== AST_NODE_TYPES36.SpreadElement) checkClassNode(arg);
7994
+ if (arg.type !== AST_NODE_TYPES38.SpreadElement) checkClassNode(arg);
7816
7995
  }
7817
7996
  }
7818
7997
  },
7819
7998
  VariableDeclarator(node) {
7820
- if (node.id.type === AST_NODE_TYPES36.Identifier && CLASS_NAME_RE.test(node.id.name)) {
7999
+ if (node.id.type === AST_NODE_TYPES38.Identifier && CLASS_NAME_RE.test(node.id.name)) {
7821
8000
  checkClassNode(node.init);
7822
8001
  }
7823
8002
  },
@@ -7827,9 +8006,9 @@ var prefer_semantic_colors_default = createRule({
7827
8006
  },
7828
8007
  // SVG artwork colors are exempt; component presentation colors still report.
7829
8008
  "JSXAttribute[name.name=/^(fill|stroke|color)$/]"(node) {
7830
- if (node.value?.type !== AST_NODE_TYPES36.Literal) return;
8009
+ if (node.value?.type !== AST_NODE_TYPES38.Literal) return;
7831
8010
  const owner = node.parent.name;
7832
- if (owner.type === AST_NODE_TYPES36.JSXIdentifier && SVG_SHAPE_PRIMITIVES.has(owner.name)) {
8011
+ if (owner.type === AST_NODE_TYPES38.JSXIdentifier && SVG_SHAPE_PRIMITIVES.has(owner.name)) {
7833
8012
  return;
7834
8013
  }
7835
8014
  if (typeof node.value.value === "string" && SVG_EXEMPT_COLOR_VALUES.has(node.value.value.toLowerCase())) {
@@ -7843,7 +8022,7 @@ var prefer_semantic_colors_default = createRule({
7843
8022
  if (name !== null && STYLE_COLOR_PROPS.has(name)) checkColorValueNode(node.value);
7844
8023
  },
7845
8024
  ImportExpression(node) {
7846
- if (node.source.type === AST_NODE_TYPES36.Literal && typeof node.source.value === "string" && EMAIL_OR_PDF_MODULE_RE.test(node.source.value)) {
8025
+ if (node.source.type === AST_NODE_TYPES38.Literal && typeof node.source.value === "string" && EMAIL_OR_PDF_MODULE_RE.test(node.source.value)) {
7847
8026
  importsEmailOrPdfRenderer = true;
7848
8027
  }
7849
8028
  },
@@ -8049,7 +8228,7 @@ var prefer_single_sentence_comment_default = createRule({
8049
8228
  // src/rules/prefer-string-literal-union.ts
8050
8229
  import {
8051
8230
  ESLintUtils as ESLintUtils3,
8052
- AST_NODE_TYPES as AST_NODE_TYPES37
8231
+ AST_NODE_TYPES as AST_NODE_TYPES39
8053
8232
  } from "@typescript-eslint/utils";
8054
8233
  import * as ts2 from "typescript";
8055
8234
  var CHOICE_TOKENS = /* @__PURE__ */ new Set([
@@ -8093,19 +8272,19 @@ function isChoiceLikeName(name) {
8093
8272
  return CHOICE_TOKENS.has(lastWord(name));
8094
8273
  }
8095
8274
  function keyName(key) {
8096
- if (key.type === AST_NODE_TYPES37.Identifier) {
8275
+ if (key.type === AST_NODE_TYPES39.Identifier) {
8097
8276
  return key.name;
8098
8277
  }
8099
- if (key.type === AST_NODE_TYPES37.Literal && typeof key.value === "string") {
8278
+ if (key.type === AST_NODE_TYPES39.Literal && typeof key.value === "string") {
8100
8279
  return key.value;
8101
8280
  }
8102
8281
  return null;
8103
8282
  }
8104
8283
  function isStringLiteralMember(t) {
8105
- return t.type === AST_NODE_TYPES37.TSLiteralType && t.literal.type === AST_NODE_TYPES37.Literal && typeof t.literal.value === "string";
8284
+ return t.type === AST_NODE_TYPES39.TSLiteralType && t.literal.type === AST_NODE_TYPES39.Literal && typeof t.literal.value === "string";
8106
8285
  }
8107
8286
  function isStringLiteralUnion(node) {
8108
- if (node?.type !== AST_NODE_TYPES37.TSUnionType) {
8287
+ if (node?.type !== AST_NODE_TYPES39.TSUnionType) {
8109
8288
  return false;
8110
8289
  }
8111
8290
  return node.types.filter(isStringLiteralMember).length >= MIN_CLUSTER_SIZE;
@@ -8134,12 +8313,12 @@ function bindingSourceExpression(decl) {
8134
8313
  return ts2.isForOfStatement(node) ? node.expression : node.initializer;
8135
8314
  }
8136
8315
  function refKey(node) {
8137
- if (node.type === AST_NODE_TYPES37.Identifier) {
8316
+ if (node.type === AST_NODE_TYPES39.Identifier) {
8138
8317
  return node.name;
8139
8318
  }
8140
- if (node.type === AST_NODE_TYPES37.MemberExpression && !node.computed) {
8319
+ if (node.type === AST_NODE_TYPES39.MemberExpression && !node.computed) {
8141
8320
  const inner = refKey(node.object);
8142
- if (inner === null || node.property.type !== AST_NODE_TYPES37.Identifier) {
8321
+ if (inner === null || node.property.type !== AST_NODE_TYPES39.Identifier) {
8143
8322
  return null;
8144
8323
  }
8145
8324
  return `${inner}.${node.property.name}`;
@@ -8147,7 +8326,7 @@ function refKey(node) {
8147
8326
  return null;
8148
8327
  }
8149
8328
  function strLiteral(node) {
8150
- if (node.type === AST_NODE_TYPES37.Literal && typeof node.value === "string") {
8329
+ if (node.type === AST_NODE_TYPES39.Literal && typeof node.value === "string") {
8151
8330
  return node.value;
8152
8331
  }
8153
8332
  return null;
@@ -8300,7 +8479,7 @@ var prefer_string_literal_union_default = createRule({
8300
8479
  containersWithUnion.add(container);
8301
8480
  return;
8302
8481
  }
8303
- if (typeNode?.type !== AST_NODE_TYPES37.TSStringKeyword) {
8482
+ if (typeNode?.type !== AST_NODE_TYPES39.TSStringKeyword) {
8304
8483
  return;
8305
8484
  }
8306
8485
  const name = keyName(key);
@@ -8388,10 +8567,10 @@ var prefer_string_literal_union_default = createRule({
8388
8567
  }
8389
8568
  };
8390
8569
  function refKeyText(node) {
8391
- if (node.type === AST_NODE_TYPES37.BinaryExpression) {
8570
+ if (node.type === AST_NODE_TYPES39.BinaryExpression) {
8392
8571
  return refKey(node.left) ?? refKey(node.right) ?? "value";
8393
8572
  }
8394
- if (node.type === AST_NODE_TYPES37.SwitchStatement) {
8573
+ if (node.type === AST_NODE_TYPES39.SwitchStatement) {
8395
8574
  return refKey(node.discriminant) ?? "value";
8396
8575
  }
8397
8576
  return "value";
@@ -8400,7 +8579,7 @@ var prefer_string_literal_union_default = createRule({
8400
8579
  });
8401
8580
 
8402
8581
  // src/rules/prefer-whole-object-assertion.ts
8403
- import { AST_NODE_TYPES as AST_NODE_TYPES38 } from "@typescript-eslint/utils";
8582
+ import { AST_NODE_TYPES as AST_NODE_TYPES40 } from "@typescript-eslint/utils";
8404
8583
  var MERGEABLE_MATCHERS = /* @__PURE__ */ new Set(["toBe", "toEqual", "toStrictEqual"]);
8405
8584
  var ARRAY_MATCHERS = /* @__PURE__ */ new Set(["toEqual", "toStrictEqual"]);
8406
8585
  var COLLECTION_PROPERTIES = /* @__PURE__ */ new Set(["length", "size"]);
@@ -8409,11 +8588,11 @@ var NUMERIC_SIGNS2 = /* @__PURE__ */ new Set(["-", "+"]);
8409
8588
  var MIN_RUN_LENGTH = 2;
8410
8589
  function literalText(node, getText) {
8411
8590
  switch (node.type) {
8412
- case AST_NODE_TYPES38.Literal:
8591
+ case AST_NODE_TYPES40.Literal:
8413
8592
  return "regex" in node ? null : getText(node);
8414
- case AST_NODE_TYPES38.TemplateLiteral:
8593
+ case AST_NODE_TYPES40.TemplateLiteral:
8415
8594
  return node.expressions.length === 0 ? getText(node) : null;
8416
- case AST_NODE_TYPES38.UnaryExpression:
8595
+ case AST_NODE_TYPES40.UnaryExpression:
8417
8596
  return NUMERIC_SIGNS2.has(node.operator) && literalText(node.argument, getText) !== null ? getText(node) : null;
8418
8597
  default:
8419
8598
  return null;
@@ -8421,15 +8600,15 @@ function literalText(node, getText) {
8421
8600
  }
8422
8601
  function isPureReceiver(node) {
8423
8602
  switch (node.type) {
8424
- case AST_NODE_TYPES38.Identifier:
8425
- case AST_NODE_TYPES38.ThisExpression:
8603
+ case AST_NODE_TYPES40.Identifier:
8604
+ case AST_NODE_TYPES40.ThisExpression:
8426
8605
  return true;
8427
- case AST_NODE_TYPES38.MemberExpression:
8606
+ case AST_NODE_TYPES40.MemberExpression:
8428
8607
  if (node.optional) {
8429
8608
  return false;
8430
8609
  }
8431
8610
  if (node.computed) {
8432
- return node.property.type === AST_NODE_TYPES38.Literal && isPureReceiver(node.object);
8611
+ return node.property.type === AST_NODE_TYPES40.Literal && isPureReceiver(node.object);
8433
8612
  }
8434
8613
  return isPureReceiver(node.object);
8435
8614
  default:
@@ -8437,7 +8616,7 @@ function isPureReceiver(node) {
8437
8616
  }
8438
8617
  }
8439
8618
  function literalIndex(node) {
8440
- if (node.type !== AST_NODE_TYPES38.Literal || typeof node.value !== "number") {
8619
+ if (node.type !== AST_NODE_TYPES40.Literal || typeof node.value !== "number") {
8441
8620
  return null;
8442
8621
  }
8443
8622
  return Number.isInteger(node.value) && node.value >= 0 ? node.value : null;
@@ -8463,24 +8642,24 @@ var prefer_whole_object_assertion_default = createRule({
8463
8642
  }
8464
8643
  const { sourceCode } = context;
8465
8644
  function parseAssertion(statement) {
8466
- if (statement.type !== AST_NODE_TYPES38.ExpressionStatement) {
8645
+ if (statement.type !== AST_NODE_TYPES40.ExpressionStatement) {
8467
8646
  return null;
8468
8647
  }
8469
8648
  const call = statement.expression;
8470
- if (call.type !== AST_NODE_TYPES38.CallExpression) {
8649
+ if (call.type !== AST_NODE_TYPES40.CallExpression) {
8471
8650
  return null;
8472
8651
  }
8473
8652
  const callee = call.callee;
8474
- if (callee.type !== AST_NODE_TYPES38.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES38.Identifier) {
8653
+ if (callee.type !== AST_NODE_TYPES40.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES40.Identifier) {
8475
8654
  return null;
8476
8655
  }
8477
8656
  const matcher = callee.property.name;
8478
8657
  const expectCall = callee.object;
8479
- if (expectCall.type !== AST_NODE_TYPES38.CallExpression || expectCall.callee.type !== AST_NODE_TYPES38.Identifier || expectCall.callee.name !== "expect" || expectCall.arguments.length !== 1) {
8658
+ if (expectCall.type !== AST_NODE_TYPES40.CallExpression || expectCall.callee.type !== AST_NODE_TYPES40.Identifier || expectCall.callee.name !== "expect" || expectCall.arguments.length !== 1) {
8480
8659
  return null;
8481
8660
  }
8482
8661
  const actual = expectCall.arguments[0];
8483
- if (actual === void 0 || actual.type !== AST_NODE_TYPES38.MemberExpression || actual.optional) {
8662
+ if (actual === void 0 || actual.type !== AST_NODE_TYPES40.MemberExpression || actual.optional) {
8484
8663
  return null;
8485
8664
  }
8486
8665
  if (!isPureReceiver(actual.object)) {
@@ -8494,7 +8673,7 @@ var prefer_whole_object_assertion_default = createRule({
8494
8673
  }
8495
8674
  key = { kind: "index", index };
8496
8675
  } else {
8497
- if (actual.property.type !== AST_NODE_TYPES38.Identifier || COLLECTION_PROPERTIES.has(actual.property.name) || LITERAL_KEY_HAZARDS.has(actual.property.name)) {
8676
+ if (actual.property.type !== AST_NODE_TYPES40.Identifier || COLLECTION_PROPERTIES.has(actual.property.name) || LITERAL_KEY_HAZARDS.has(actual.property.name)) {
8498
8677
  return null;
8499
8678
  }
8500
8679
  key = { kind: "property", name: actual.property.name };
@@ -8506,7 +8685,7 @@ var prefer_whole_object_assertion_default = createRule({
8506
8685
  return null;
8507
8686
  }
8508
8687
  const expected = call.arguments[0];
8509
- if (call.arguments.length !== 1 || expected === void 0 || expected.type === AST_NODE_TYPES38.SpreadElement) {
8688
+ if (call.arguments.length !== 1 || expected === void 0 || expected.type === AST_NODE_TYPES40.SpreadElement) {
8510
8689
  return null;
8511
8690
  }
8512
8691
  const literal = literalText(expected, (node) => sourceCode.getText(node));
@@ -8621,7 +8800,7 @@ var prefer_whole_object_assertion_default = createRule({
8621
8800
  });
8622
8801
 
8623
8802
  // src/rules/prefer-zod-enum.ts
8624
- import { AST_NODE_TYPES as AST_NODE_TYPES39 } from "@typescript-eslint/utils";
8803
+ import { AST_NODE_TYPES as AST_NODE_TYPES41 } from "@typescript-eslint/utils";
8625
8804
  var prefer_zod_enum_default = createRule({
8626
8805
  name: "prefer-zod-enum",
8627
8806
  meta: {
@@ -8641,25 +8820,25 @@ var prefer_zod_enum_default = createRule({
8641
8820
  const zodNamespaces = /* @__PURE__ */ new Set();
8642
8821
  function enumValues(node) {
8643
8822
  const callee = node.callee;
8644
- if (callee.type !== AST_NODE_TYPES39.MemberExpression || callee.computed || callee.object.type !== AST_NODE_TYPES39.Identifier || !zodNamespaces.has(callee.object.name) || callee.property.type !== AST_NODE_TYPES39.Identifier || callee.property.name !== "union" || node.arguments.length !== 1) {
8823
+ if (callee.type !== AST_NODE_TYPES41.MemberExpression || callee.computed || callee.object.type !== AST_NODE_TYPES41.Identifier || !zodNamespaces.has(callee.object.name) || callee.property.type !== AST_NODE_TYPES41.Identifier || callee.property.name !== "union" || node.arguments.length !== 1) {
8645
8824
  return null;
8646
8825
  }
8647
8826
  const argument = node.arguments[0];
8648
- if (argument === void 0 || argument.type !== AST_NODE_TYPES39.ArrayExpression || argument.elements.length === 0) {
8827
+ if (argument === void 0 || argument.type !== AST_NODE_TYPES41.ArrayExpression || argument.elements.length === 0) {
8649
8828
  return null;
8650
8829
  }
8651
8830
  const values = [];
8652
8831
  let canFix = true;
8653
8832
  for (const element of argument.elements) {
8654
- if (element?.type === AST_NODE_TYPES39.SpreadElement) {
8833
+ if (element?.type === AST_NODE_TYPES41.SpreadElement) {
8655
8834
  canFix = false;
8656
8835
  continue;
8657
8836
  }
8658
- if (element === null || element.type !== AST_NODE_TYPES39.CallExpression || element.callee.type !== AST_NODE_TYPES39.MemberExpression || element.callee.computed || element.callee.object.type !== AST_NODE_TYPES39.Identifier || !zodNamespaces.has(element.callee.object.name) || element.callee.property.type !== AST_NODE_TYPES39.Identifier || element.callee.property.name !== "literal") {
8837
+ if (element === null || element.type !== AST_NODE_TYPES41.CallExpression || element.callee.type !== AST_NODE_TYPES41.MemberExpression || element.callee.computed || element.callee.object.type !== AST_NODE_TYPES41.Identifier || !zodNamespaces.has(element.callee.object.name) || element.callee.property.type !== AST_NODE_TYPES41.Identifier || element.callee.property.name !== "literal") {
8659
8838
  return null;
8660
8839
  }
8661
8840
  const value = element.arguments[0];
8662
- if (element.arguments.length !== 1 || value === void 0 || value.type !== AST_NODE_TYPES39.Literal || typeof value.value !== "string") {
8841
+ if (element.arguments.length !== 1 || value === void 0 || value.type !== AST_NODE_TYPES41.Literal || typeof value.value !== "string") {
8663
8842
  canFix = false;
8664
8843
  continue;
8665
8844
  }
@@ -8669,11 +8848,11 @@ var prefer_zod_enum_default = createRule({
8669
8848
  }
8670
8849
  function buildFix(node, values) {
8671
8850
  const argument = node.arguments[0];
8672
- if (argument === void 0 || argument.type !== AST_NODE_TYPES39.ArrayExpression || sourceCode.getCommentsInside(argument).length > 0) {
8851
+ if (argument === void 0 || argument.type !== AST_NODE_TYPES41.ArrayExpression || sourceCode.getCommentsInside(argument).length > 0) {
8673
8852
  return void 0;
8674
8853
  }
8675
8854
  const callee = node.callee;
8676
- if (callee.type !== AST_NODE_TYPES39.MemberExpression || callee.property.type !== AST_NODE_TYPES39.Identifier) {
8855
+ if (callee.type !== AST_NODE_TYPES41.MemberExpression || callee.property.type !== AST_NODE_TYPES41.Identifier) {
8677
8856
  return void 0;
8678
8857
  }
8679
8858
  return (fixer) => [
@@ -8690,7 +8869,7 @@ var prefer_zod_enum_default = createRule({
8690
8869
  return;
8691
8870
  }
8692
8871
  for (const specifier of node.specifiers) {
8693
- if (specifier.type === AST_NODE_TYPES39.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES39.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES39.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES39.Identifier && specifier.imported.name === "z") {
8872
+ if (specifier.type === AST_NODE_TYPES41.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES41.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES41.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES41.Identifier && specifier.imported.name === "z") {
8694
8873
  zodNamespaces.add(specifier.local.name);
8695
8874
  }
8696
8875
  }
@@ -8712,7 +8891,7 @@ var prefer_zod_enum_default = createRule({
8712
8891
  });
8713
8892
 
8714
8893
  // src/rules/prefer-zod-infer.ts
8715
- import { AST_NODE_TYPES as AST_NODE_TYPES40 } from "@typescript-eslint/utils";
8894
+ import { AST_NODE_TYPES as AST_NODE_TYPES42 } from "@typescript-eslint/utils";
8716
8895
  var SHAPE_PRESERVING_METHODS = /* @__PURE__ */ new Set([
8717
8896
  "describe",
8718
8897
  "refine",
@@ -8749,44 +8928,44 @@ var ZOD_TYPE_CONSTRAINTS = /* @__PURE__ */ new Set([
8749
8928
  "Schema"
8750
8929
  ]);
8751
8930
  var LEAF_NODE_TYPES = {
8752
- string: [AST_NODE_TYPES40.TSStringKeyword],
8753
- email: [AST_NODE_TYPES40.TSStringKeyword],
8754
- url: [AST_NODE_TYPES40.TSStringKeyword],
8755
- uuid: [AST_NODE_TYPES40.TSStringKeyword],
8756
- ulid: [AST_NODE_TYPES40.TSStringKeyword],
8757
- cuid: [AST_NODE_TYPES40.TSStringKeyword],
8758
- cuid2: [AST_NODE_TYPES40.TSStringKeyword],
8759
- nanoid: [AST_NODE_TYPES40.TSStringKeyword],
8760
- iso: [AST_NODE_TYPES40.TSStringKeyword],
8761
- number: [AST_NODE_TYPES40.TSNumberKeyword],
8762
- int: [AST_NODE_TYPES40.TSNumberKeyword],
8763
- float32: [AST_NODE_TYPES40.TSNumberKeyword],
8764
- float64: [AST_NODE_TYPES40.TSNumberKeyword],
8765
- boolean: [AST_NODE_TYPES40.TSBooleanKeyword],
8766
- bigint: [AST_NODE_TYPES40.TSBigIntKeyword],
8767
- symbol: [AST_NODE_TYPES40.TSSymbolKeyword],
8768
- any: [AST_NODE_TYPES40.TSAnyKeyword],
8769
- unknown: [AST_NODE_TYPES40.TSUnknownKeyword],
8770
- never: [AST_NODE_TYPES40.TSNeverKeyword],
8771
- void: [AST_NODE_TYPES40.TSVoidKeyword],
8772
- null: [AST_NODE_TYPES40.TSNullKeyword],
8773
- undefined: [AST_NODE_TYPES40.TSUndefinedKeyword],
8774
- literal: [AST_NODE_TYPES40.TSLiteralType],
8775
- date: [AST_NODE_TYPES40.TSTypeReference],
8776
- array: [AST_NODE_TYPES40.TSArrayType, AST_NODE_TYPES40.TSTypeReference],
8777
- tuple: [AST_NODE_TYPES40.TSTupleType],
8778
- object: [AST_NODE_TYPES40.TSTypeLiteral, AST_NODE_TYPES40.TSTypeReference],
8779
- strictObject: [AST_NODE_TYPES40.TSTypeLiteral, AST_NODE_TYPES40.TSTypeReference],
8780
- looseObject: [AST_NODE_TYPES40.TSTypeLiteral, AST_NODE_TYPES40.TSTypeReference],
8781
- record: [AST_NODE_TYPES40.TSTypeReference, AST_NODE_TYPES40.TSTypeLiteral],
8782
- map: [AST_NODE_TYPES40.TSTypeReference],
8783
- set: [AST_NODE_TYPES40.TSTypeReference],
8784
- promise: [AST_NODE_TYPES40.TSTypeReference],
8785
- enum: [AST_NODE_TYPES40.TSUnionType, AST_NODE_TYPES40.TSTypeReference, AST_NODE_TYPES40.TSLiteralType],
8786
- nativeEnum: [AST_NODE_TYPES40.TSUnionType, AST_NODE_TYPES40.TSTypeReference, AST_NODE_TYPES40.TSLiteralType],
8787
- union: [AST_NODE_TYPES40.TSUnionType, AST_NODE_TYPES40.TSTypeReference],
8788
- discriminatedUnion: [AST_NODE_TYPES40.TSUnionType, AST_NODE_TYPES40.TSTypeReference],
8789
- intersection: [AST_NODE_TYPES40.TSIntersectionType, AST_NODE_TYPES40.TSTypeReference]
8931
+ string: [AST_NODE_TYPES42.TSStringKeyword],
8932
+ email: [AST_NODE_TYPES42.TSStringKeyword],
8933
+ url: [AST_NODE_TYPES42.TSStringKeyword],
8934
+ uuid: [AST_NODE_TYPES42.TSStringKeyword],
8935
+ ulid: [AST_NODE_TYPES42.TSStringKeyword],
8936
+ cuid: [AST_NODE_TYPES42.TSStringKeyword],
8937
+ cuid2: [AST_NODE_TYPES42.TSStringKeyword],
8938
+ nanoid: [AST_NODE_TYPES42.TSStringKeyword],
8939
+ iso: [AST_NODE_TYPES42.TSStringKeyword],
8940
+ number: [AST_NODE_TYPES42.TSNumberKeyword],
8941
+ int: [AST_NODE_TYPES42.TSNumberKeyword],
8942
+ float32: [AST_NODE_TYPES42.TSNumberKeyword],
8943
+ float64: [AST_NODE_TYPES42.TSNumberKeyword],
8944
+ boolean: [AST_NODE_TYPES42.TSBooleanKeyword],
8945
+ bigint: [AST_NODE_TYPES42.TSBigIntKeyword],
8946
+ symbol: [AST_NODE_TYPES42.TSSymbolKeyword],
8947
+ any: [AST_NODE_TYPES42.TSAnyKeyword],
8948
+ unknown: [AST_NODE_TYPES42.TSUnknownKeyword],
8949
+ never: [AST_NODE_TYPES42.TSNeverKeyword],
8950
+ void: [AST_NODE_TYPES42.TSVoidKeyword],
8951
+ null: [AST_NODE_TYPES42.TSNullKeyword],
8952
+ undefined: [AST_NODE_TYPES42.TSUndefinedKeyword],
8953
+ literal: [AST_NODE_TYPES42.TSLiteralType],
8954
+ date: [AST_NODE_TYPES42.TSTypeReference],
8955
+ array: [AST_NODE_TYPES42.TSArrayType, AST_NODE_TYPES42.TSTypeReference],
8956
+ tuple: [AST_NODE_TYPES42.TSTupleType],
8957
+ object: [AST_NODE_TYPES42.TSTypeLiteral, AST_NODE_TYPES42.TSTypeReference],
8958
+ strictObject: [AST_NODE_TYPES42.TSTypeLiteral, AST_NODE_TYPES42.TSTypeReference],
8959
+ looseObject: [AST_NODE_TYPES42.TSTypeLiteral, AST_NODE_TYPES42.TSTypeReference],
8960
+ record: [AST_NODE_TYPES42.TSTypeReference, AST_NODE_TYPES42.TSTypeLiteral],
8961
+ map: [AST_NODE_TYPES42.TSTypeReference],
8962
+ set: [AST_NODE_TYPES42.TSTypeReference],
8963
+ promise: [AST_NODE_TYPES42.TSTypeReference],
8964
+ enum: [AST_NODE_TYPES42.TSUnionType, AST_NODE_TYPES42.TSTypeReference, AST_NODE_TYPES42.TSLiteralType],
8965
+ nativeEnum: [AST_NODE_TYPES42.TSUnionType, AST_NODE_TYPES42.TSTypeReference, AST_NODE_TYPES42.TSLiteralType],
8966
+ union: [AST_NODE_TYPES42.TSUnionType, AST_NODE_TYPES42.TSTypeReference],
8967
+ discriminatedUnion: [AST_NODE_TYPES42.TSUnionType, AST_NODE_TYPES42.TSTypeReference],
8968
+ intersection: [AST_NODE_TYPES42.TSIntersectionType, AST_NODE_TYPES42.TSTypeReference]
8790
8969
  };
8791
8970
  function normalizeSchemaName(name) {
8792
8971
  return name.replace(/Schema$/i, "").replace(/^Z(?=[A-Z])/, "").toLowerCase();
@@ -8795,20 +8974,20 @@ function normalizeTypeName(name) {
8795
8974
  return name.replace(/Type$/, "").toLowerCase();
8796
8975
  }
8797
8976
  function unwrapNullish(annotation) {
8798
- if (annotation.type !== AST_NODE_TYPES40.TSUnionType) {
8977
+ if (annotation.type !== AST_NODE_TYPES42.TSUnionType) {
8799
8978
  return {
8800
8979
  core: annotation,
8801
- nullable: annotation.type === AST_NODE_TYPES40.TSNullKeyword
8980
+ nullable: annotation.type === AST_NODE_TYPES42.TSNullKeyword
8802
8981
  };
8803
8982
  }
8804
8983
  const rest = [];
8805
8984
  let nullable = false;
8806
8985
  for (const member of annotation.types) {
8807
- if (member.type === AST_NODE_TYPES40.TSNullKeyword) {
8986
+ if (member.type === AST_NODE_TYPES42.TSNullKeyword) {
8808
8987
  nullable = true;
8809
8988
  continue;
8810
8989
  }
8811
- if (member.type === AST_NODE_TYPES40.TSUndefinedKeyword) {
8990
+ if (member.type === AST_NODE_TYPES42.TSUndefinedKeyword) {
8812
8991
  continue;
8813
8992
  }
8814
8993
  rest.push(member);
@@ -8873,14 +9052,14 @@ var prefer_zod_infer_default = createRule({
8873
9052
  function zodCallChain(node) {
8874
9053
  const chain = [];
8875
9054
  let current = node;
8876
- while (current.type === AST_NODE_TYPES40.CallExpression) {
9055
+ while (current.type === AST_NODE_TYPES42.CallExpression) {
8877
9056
  const callee = current.callee;
8878
- if (callee.type !== AST_NODE_TYPES40.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES40.Identifier) {
9057
+ if (callee.type !== AST_NODE_TYPES42.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES42.Identifier) {
8879
9058
  return null;
8880
9059
  }
8881
9060
  chain.push(current);
8882
9061
  const receiver = callee.object;
8883
- if (receiver.type === AST_NODE_TYPES40.Identifier) {
9062
+ if (receiver.type === AST_NODE_TYPES42.Identifier) {
8884
9063
  return zodNamespaces.has(receiver.name) ? chain.reverse() : null;
8885
9064
  }
8886
9065
  current = receiver;
@@ -8889,19 +9068,19 @@ var prefer_zod_infer_default = createRule({
8889
9068
  }
8890
9069
  function methodName(call) {
8891
9070
  const callee = call.callee;
8892
- return callee.type === AST_NODE_TYPES40.MemberExpression && callee.property.type === AST_NODE_TYPES40.Identifier ? callee.property.name : "";
9071
+ return callee.type === AST_NODE_TYPES42.MemberExpression && callee.property.type === AST_NODE_TYPES42.Identifier ? callee.property.name : "";
8893
9072
  }
8894
9073
  function schemaField(node) {
8895
9074
  const modifiers = [];
8896
9075
  let current = node;
8897
9076
  let leaf = null;
8898
- while (current.type === AST_NODE_TYPES40.CallExpression) {
9077
+ while (current.type === AST_NODE_TYPES42.CallExpression) {
8899
9078
  const callee = current.callee;
8900
- if (callee.type !== AST_NODE_TYPES40.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES40.Identifier) {
9079
+ if (callee.type !== AST_NODE_TYPES42.MemberExpression || callee.computed || callee.property.type !== AST_NODE_TYPES42.Identifier) {
8901
9080
  break;
8902
9081
  }
8903
9082
  const receiver = callee.object;
8904
- if (receiver.type === AST_NODE_TYPES40.Identifier && zodNamespaces.has(receiver.name)) {
9083
+ if (receiver.type === AST_NODE_TYPES42.Identifier && zodNamespaces.has(receiver.name)) {
8905
9084
  leaf = callee.property.name;
8906
9085
  break;
8907
9086
  }
@@ -8932,16 +9111,16 @@ var prefer_zod_infer_default = createRule({
8932
9111
  return null;
8933
9112
  }
8934
9113
  const shape = base.arguments[0];
8935
- if (shape === void 0 || shape.type !== AST_NODE_TYPES40.ObjectExpression) {
9114
+ if (shape === void 0 || shape.type !== AST_NODE_TYPES42.ObjectExpression) {
8936
9115
  return null;
8937
9116
  }
8938
9117
  const fields = /* @__PURE__ */ new Map();
8939
9118
  for (const property of shape.properties) {
8940
- if (property.type !== AST_NODE_TYPES40.Property || property.computed) {
9119
+ if (property.type !== AST_NODE_TYPES42.Property || property.computed) {
8941
9120
  return null;
8942
9121
  }
8943
9122
  const { key } = property;
8944
- const name = key.type === AST_NODE_TYPES40.Identifier ? key.name : key.type === AST_NODE_TYPES40.Literal && typeof key.value === "string" ? key.value : null;
9123
+ const name = key.type === AST_NODE_TYPES42.Identifier ? key.name : key.type === AST_NODE_TYPES42.Literal && typeof key.value === "string" ? key.value : null;
8945
9124
  if (name === null) {
8946
9125
  return null;
8947
9126
  }
@@ -8952,11 +9131,11 @@ var prefer_zod_infer_default = createRule({
8952
9131
  function typeMembers(members) {
8953
9132
  const result = /* @__PURE__ */ new Map();
8954
9133
  for (const member of members) {
8955
- if (member.type !== AST_NODE_TYPES40.TSPropertySignature || member.computed) {
9134
+ if (member.type !== AST_NODE_TYPES42.TSPropertySignature || member.computed) {
8956
9135
  return null;
8957
9136
  }
8958
9137
  const { key } = member;
8959
- const name = key.type === AST_NODE_TYPES40.Identifier ? key.name : key.type === AST_NODE_TYPES40.Literal && typeof key.value === "string" ? key.value : null;
9138
+ const name = key.type === AST_NODE_TYPES42.Identifier ? key.name : key.type === AST_NODE_TYPES42.Literal && typeof key.value === "string" ? key.value : null;
8960
9139
  if (name === null) {
8961
9140
  return null;
8962
9141
  }
@@ -8970,8 +9149,8 @@ var prefer_zod_infer_default = createRule({
8970
9149
  return result.size === 0 ? null : result;
8971
9150
  }
8972
9151
  function collectConstrainedNames(node) {
8973
- if (node.type === AST_NODE_TYPES40.TSTypeReference) {
8974
- if (node.typeName.type === AST_NODE_TYPES40.Identifier) {
9152
+ if (node.type === AST_NODE_TYPES42.TSTypeReference) {
9153
+ if (node.typeName.type === AST_NODE_TYPES42.Identifier) {
8975
9154
  constrainedTypeNames.add(node.typeName.name);
8976
9155
  }
8977
9156
  for (const argument of node.typeArguments?.params ?? []) {
@@ -8979,11 +9158,11 @@ var prefer_zod_infer_default = createRule({
8979
9158
  }
8980
9159
  return;
8981
9160
  }
8982
- if (node.type === AST_NODE_TYPES40.TSArrayType) {
9161
+ if (node.type === AST_NODE_TYPES42.TSArrayType) {
8983
9162
  collectConstrainedNames(node.elementType);
8984
9163
  return;
8985
9164
  }
8986
- if (node.type === AST_NODE_TYPES40.TSUnionType || node.type === AST_NODE_TYPES40.TSIntersectionType) {
9165
+ if (node.type === AST_NODE_TYPES42.TSUnionType || node.type === AST_NODE_TYPES42.TSIntersectionType) {
8987
9166
  for (const member of node.types) {
8988
9167
  collectConstrainedNames(member);
8989
9168
  }
@@ -9027,13 +9206,13 @@ var prefer_zod_infer_default = createRule({
9027
9206
  return;
9028
9207
  }
9029
9208
  for (const specifier of node.specifiers) {
9030
- if (specifier.type === AST_NODE_TYPES40.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES40.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES40.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES40.Identifier && specifier.imported.name === "z") {
9209
+ if (specifier.type === AST_NODE_TYPES42.ImportNamespaceSpecifier || specifier.type === AST_NODE_TYPES42.ImportDefaultSpecifier || specifier.type === AST_NODE_TYPES42.ImportSpecifier && specifier.imported.type === AST_NODE_TYPES42.Identifier && specifier.imported.name === "z") {
9031
9210
  zodNamespaces.add(specifier.local.name);
9032
9211
  }
9033
9212
  }
9034
9213
  },
9035
9214
  VariableDeclarator(node) {
9036
- if (node.id.type !== AST_NODE_TYPES40.Identifier || node.init == null) {
9215
+ if (node.id.type !== AST_NODE_TYPES42.Identifier || node.init == null) {
9037
9216
  return;
9038
9217
  }
9039
9218
  const fields = schemaFields(node.init);
@@ -9043,14 +9222,14 @@ var prefer_zod_infer_default = createRule({
9043
9222
  },
9044
9223
  /** Records `XSchema.transform(...)` and equivalent module-level reshaping. */
9045
9224
  "MemberExpression[computed=false]"(node) {
9046
- if (node.object.type === AST_NODE_TYPES40.Identifier && node.property.type === AST_NODE_TYPES40.Identifier && MODULE_LEVEL_RESHAPERS.has(node.property.name)) {
9225
+ if (node.object.type === AST_NODE_TYPES42.Identifier && node.property.type === AST_NODE_TYPES42.Identifier && MODULE_LEVEL_RESHAPERS.has(node.property.name)) {
9047
9226
  reshapedSchemaNames.add(node.object.name);
9048
9227
  }
9049
9228
  },
9050
9229
  /** Records every type argument carried by a Zod constraint. */
9051
9230
  TSTypeReference(node) {
9052
9231
  const { typeName } = node;
9053
- const referenced = typeName.type === AST_NODE_TYPES40.Identifier ? typeName.name : typeName.type === AST_NODE_TYPES40.TSQualifiedName && typeName.right.type === AST_NODE_TYPES40.Identifier ? typeName.right.name : null;
9232
+ const referenced = typeName.type === AST_NODE_TYPES42.Identifier ? typeName.name : typeName.type === AST_NODE_TYPES42.TSQualifiedName && typeName.right.type === AST_NODE_TYPES42.Identifier ? typeName.right.name : null;
9054
9233
  if (referenced === null || !ZOD_TYPE_CONSTRAINTS.has(referenced)) {
9055
9234
  return;
9056
9235
  }
@@ -9068,7 +9247,7 @@ var prefer_zod_infer_default = createRule({
9068
9247
  }
9069
9248
  },
9070
9249
  TSTypeAliasDeclaration(node) {
9071
- if (node.typeParameters !== void 0 || node.typeAnnotation.type !== AST_NODE_TYPES40.TSTypeLiteral) {
9250
+ if (node.typeParameters !== void 0 || node.typeAnnotation.type !== AST_NODE_TYPES42.TSTypeLiteral) {
9072
9251
  return;
9073
9252
  }
9074
9253
  const members = typeMembers(node.typeAnnotation.members);
@@ -9113,10 +9292,10 @@ var prefer_zod_infer_default = createRule({
9113
9292
  });
9114
9293
 
9115
9294
  // src/rules/require-assert-never.ts
9116
- import { AST_NODE_TYPES as AST_NODE_TYPES41 } from "@typescript-eslint/utils";
9295
+ import { AST_NODE_TYPES as AST_NODE_TYPES43 } from "@typescript-eslint/utils";
9117
9296
  var isRuntimeHandlingStatement = (statement) => {
9118
- if (statement.type === AST_NODE_TYPES41.EmptyStatement) return false;
9119
- if (statement.type === AST_NODE_TYPES41.BlockStatement) {
9297
+ if (statement.type === AST_NODE_TYPES43.EmptyStatement) return false;
9298
+ if (statement.type === AST_NODE_TYPES43.BlockStatement) {
9120
9299
  return statement.body.some(isRuntimeHandlingStatement);
9121
9300
  }
9122
9301
  return true;
@@ -9132,7 +9311,7 @@ var isCommentOnlyNoopDefault = (defaultCase, sourceCode) => {
9132
9311
  return colonToken !== null && sourceCode.getCommentsAfter(colonToken).length > 0;
9133
9312
  }
9134
9313
  const only = defaultCase.consequent[0];
9135
- if (only !== void 0 && defaultCase.consequent.length === 1 && only.type === AST_NODE_TYPES41.BlockStatement && only.body.length === 0) {
9314
+ if (only !== void 0 && defaultCase.consequent.length === 1 && only.type === AST_NODE_TYPES43.BlockStatement && only.body.length === 0) {
9136
9315
  return sourceCode.getCommentsInside(only).length > 0;
9137
9316
  }
9138
9317
  return false;
@@ -9172,7 +9351,7 @@ var require_assert_never_default = createRule({
9172
9351
  });
9173
9352
 
9174
9353
  // src/rules/require-fetch-timeout.ts
9175
- import { AST_NODE_TYPES as AST_NODE_TYPES42, ASTUtils as ASTUtils2 } from "@typescript-eslint/utils";
9354
+ import { AST_NODE_TYPES as AST_NODE_TYPES44, ASTUtils as ASTUtils4 } from "@typescript-eslint/utils";
9176
9355
  var GLOBAL_OBJECTS2 = /* @__PURE__ */ new Set([
9177
9356
  "globalThis",
9178
9357
  "window",
@@ -9188,14 +9367,14 @@ function matchesAnyPattern3(filename, patterns) {
9188
9367
  return false;
9189
9368
  }
9190
9369
  function initProvablyLacksSignal(init) {
9191
- if (init.type !== AST_NODE_TYPES42.ObjectExpression) {
9370
+ if (init.type !== AST_NODE_TYPES44.ObjectExpression) {
9192
9371
  return false;
9193
9372
  }
9194
9373
  for (const prop of init.properties) {
9195
- if (prop.type === AST_NODE_TYPES42.SpreadElement) {
9374
+ if (prop.type === AST_NODE_TYPES44.SpreadElement) {
9196
9375
  return false;
9197
9376
  }
9198
- if (prop.key.type === AST_NODE_TYPES42.Identifier && prop.key.name === "signal" || prop.key.type === AST_NODE_TYPES42.Literal && prop.key.value === "signal") {
9377
+ if (prop.key.type === AST_NODE_TYPES44.Identifier && prop.key.name === "signal" || prop.key.type === AST_NODE_TYPES44.Literal && prop.key.value === "signal") {
9199
9378
  return false;
9200
9379
  }
9201
9380
  if (prop.computed) {
@@ -9205,7 +9384,7 @@ function initProvablyLacksSignal(init) {
9205
9384
  return true;
9206
9385
  }
9207
9386
  function isStringish(node) {
9208
- return node.type === AST_NODE_TYPES42.Literal && typeof node.value === "string" || node.type === AST_NODE_TYPES42.TemplateLiteral;
9387
+ return node.type === AST_NODE_TYPES44.Literal && typeof node.value === "string" || node.type === AST_NODE_TYPES44.TemplateLiteral;
9209
9388
  }
9210
9389
  var require_fetch_timeout_default = createRule({
9211
9390
  name: "require-fetch-timeout",
@@ -9242,14 +9421,14 @@ var require_fetch_timeout_default = createRule({
9242
9421
  }
9243
9422
  function resolvesToGlobal(identifier) {
9244
9423
  const scope = context.sourceCode.getScope(identifier);
9245
- const variable = ASTUtils2.findVariable(scope, identifier.name);
9424
+ const variable = ASTUtils4.findVariable(scope, identifier.name);
9246
9425
  return variable === null || variable.defs.length === 0;
9247
9426
  }
9248
9427
  function isGlobalFetchCall2(callee) {
9249
- if (callee.type === AST_NODE_TYPES42.Identifier) {
9428
+ if (callee.type === AST_NODE_TYPES44.Identifier) {
9250
9429
  return callee.name === "fetch" && resolvesToGlobal(callee);
9251
9430
  }
9252
- return callee.type === AST_NODE_TYPES42.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES42.Identifier && callee.property.name === "fetch" && callee.object.type === AST_NODE_TYPES42.Identifier && GLOBAL_OBJECTS2.has(callee.object.name) && resolvesToGlobal(callee.object);
9431
+ return callee.type === AST_NODE_TYPES44.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES44.Identifier && callee.property.name === "fetch" && callee.object.type === AST_NODE_TYPES44.Identifier && GLOBAL_OBJECTS2.has(callee.object.name) && resolvesToGlobal(callee.object);
9253
9432
  }
9254
9433
  return {
9255
9434
  CallExpression(node) {
@@ -9269,7 +9448,7 @@ var require_fetch_timeout_default = createRule({
9269
9448
  });
9270
9449
 
9271
9450
  // src/rules/require-interface-for-injected-service.ts
9272
- import { AST_NODE_TYPES as AST_NODE_TYPES43 } from "@typescript-eslint/utils";
9451
+ import { AST_NODE_TYPES as AST_NODE_TYPES45 } from "@typescript-eslint/utils";
9273
9452
  var CONFIGISH_TYPE_RE = /(?:Options|Opts|Config|Configuration|Settings|Params|Props|Args|Env|Environment|Callbacks|Flags)$/;
9274
9453
  var CONFIGISH_NAME_RE = /^(?:options|opts|config|configuration|settings|params|props|args|env|environment|callbacks|flags|logger|log|clock)$/i;
9275
9454
  var HTTP_TRANSPORT_TYPE_RE = /^(?:KyInstance|AxiosInstance|Session)$/;
@@ -9277,20 +9456,20 @@ var BUILTIN_CONTAINER_TYPE_RE = /^(?:Record|Map|WeakMap|Set|WeakSet|Array|Readon
9277
9456
  var TRANSPORT_WRAPPER_NAME_RE = /Client$/;
9278
9457
  var ROUTER_FACTORY_NAME = "Router";
9279
9458
  var FRAMEWORK_HTTP_TYPES = /* @__PURE__ */ new Set(["Request", "Response", "NextFunction"]);
9280
- var isExportedClass = (node) => node.parent.type === AST_NODE_TYPES43.ExportNamedDeclaration || node.parent.type === AST_NODE_TYPES43.ExportDefaultDeclaration;
9281
- var qualifiedName = (name) => name.type === AST_NODE_TYPES43.Identifier ? name.name : name.type === AST_NODE_TYPES43.TSQualifiedName ? `${qualifiedName(name.left)}.${name.right.name}` : "";
9459
+ var isExportedClass = (node) => node.parent.type === AST_NODE_TYPES45.ExportNamedDeclaration || node.parent.type === AST_NODE_TYPES45.ExportDefaultDeclaration;
9460
+ var qualifiedName = (name) => name.type === AST_NODE_TYPES45.Identifier ? name.name : name.type === AST_NODE_TYPES45.TSQualifiedName ? `${qualifiedName(name.left)}.${name.right.name}` : "";
9282
9461
  var readTypeReference = (annotation) => {
9283
- if (annotation === void 0 || annotation.type !== AST_NODE_TYPES43.TSTypeReference) return null;
9462
+ if (annotation === void 0 || annotation.type !== AST_NODE_TYPES45.TSTypeReference) return null;
9284
9463
  const { typeName } = annotation;
9285
- const rightmost = typeName.type === AST_NODE_TYPES43.Identifier ? typeName.name : typeName.type === AST_NODE_TYPES43.TSQualifiedName ? typeName.right.name : null;
9464
+ const rightmost = typeName.type === AST_NODE_TYPES45.Identifier ? typeName.name : typeName.type === AST_NODE_TYPES45.TSQualifiedName ? typeName.right.name : null;
9286
9465
  if (rightmost === null) return null;
9287
9466
  return { typeName: rightmost, display: qualifiedName(typeName) };
9288
9467
  };
9289
9468
  var namedParameterCollaborator = (annotated) => {
9290
9469
  let target = annotated;
9291
- if (target.type === AST_NODE_TYPES43.TSParameterProperty) target = target.parameter;
9292
- if (target.type === AST_NODE_TYPES43.AssignmentPattern) target = target.left;
9293
- if (target.type !== AST_NODE_TYPES43.Identifier) return null;
9470
+ if (target.type === AST_NODE_TYPES45.TSParameterProperty) target = target.parameter;
9471
+ if (target.type === AST_NODE_TYPES45.AssignmentPattern) target = target.left;
9472
+ if (target.type !== AST_NODE_TYPES45.Identifier) return null;
9294
9473
  const reference = readTypeReference(target.typeAnnotation?.typeAnnotation);
9295
9474
  if (reference === null) return null;
9296
9475
  return { name: target.name, ...reference };
@@ -9298,8 +9477,8 @@ var namedParameterCollaborator = (annotated) => {
9298
9477
  var propertySignatureTypes = (members) => {
9299
9478
  const types = /* @__PURE__ */ new Map();
9300
9479
  for (const member of members) {
9301
- if (member.type !== AST_NODE_TYPES43.TSPropertySignature) continue;
9302
- if (member.computed || member.key.type !== AST_NODE_TYPES43.Identifier) continue;
9480
+ if (member.type !== AST_NODE_TYPES45.TSPropertySignature) continue;
9481
+ if (member.computed || member.key.type !== AST_NODE_TYPES45.Identifier) continue;
9303
9482
  const reference = readTypeReference(member.typeAnnotation?.typeAnnotation);
9304
9483
  if (reference === null) continue;
9305
9484
  types.set(member.key.name, reference);
@@ -9310,18 +9489,18 @@ var fileTypeIndex = (program) => {
9310
9489
  const objects = /* @__PURE__ */ new Map();
9311
9490
  const functionAliases = /* @__PURE__ */ new Set();
9312
9491
  for (const statement of program.body) {
9313
- const declaration = statement.type === AST_NODE_TYPES43.ExportNamedDeclaration ? statement.declaration : statement;
9314
- if (declaration?.type === AST_NODE_TYPES43.TSInterfaceDeclaration) {
9492
+ const declaration = statement.type === AST_NODE_TYPES45.ExportNamedDeclaration ? statement.declaration : statement;
9493
+ if (declaration?.type === AST_NODE_TYPES45.TSInterfaceDeclaration) {
9315
9494
  objects.set(declaration.id.name, propertySignatureTypes(declaration.body.body));
9316
9495
  continue;
9317
9496
  }
9318
- if (declaration?.type !== AST_NODE_TYPES43.TSTypeAliasDeclaration) continue;
9497
+ if (declaration?.type !== AST_NODE_TYPES45.TSTypeAliasDeclaration) continue;
9319
9498
  const aliased = declaration.typeAnnotation;
9320
- if (aliased.type === AST_NODE_TYPES43.TSFunctionType || aliased.type === AST_NODE_TYPES43.TSConstructorType) {
9499
+ if (aliased.type === AST_NODE_TYPES45.TSFunctionType || aliased.type === AST_NODE_TYPES45.TSConstructorType) {
9321
9500
  functionAliases.add(declaration.id.name);
9322
9501
  continue;
9323
9502
  }
9324
- const literals = aliased.type === AST_NODE_TYPES43.TSTypeLiteral ? [aliased] : aliased.type === AST_NODE_TYPES43.TSIntersectionType ? aliased.types.filter((part) => part.type === AST_NODE_TYPES43.TSTypeLiteral) : [];
9503
+ const literals = aliased.type === AST_NODE_TYPES45.TSTypeLiteral ? [aliased] : aliased.type === AST_NODE_TYPES45.TSIntersectionType ? aliased.types.filter((part) => part.type === AST_NODE_TYPES45.TSTypeLiteral) : [];
9325
9504
  if (literals.length === 0) continue;
9326
9505
  const merged = /* @__PURE__ */ new Map();
9327
9506
  for (const literal of literals) {
@@ -9334,10 +9513,10 @@ var fileTypeIndex = (program) => {
9334
9513
  return { objects, functionAliases };
9335
9514
  };
9336
9515
  var bagMemberTypes = (annotation, declared) => {
9337
- if (annotation.type === AST_NODE_TYPES43.TSTypeLiteral) {
9516
+ if (annotation.type === AST_NODE_TYPES45.TSTypeLiteral) {
9338
9517
  return propertySignatureTypes(annotation.members);
9339
9518
  }
9340
- if (annotation.type !== AST_NODE_TYPES43.TSTypeReference || annotation.typeName.type !== AST_NODE_TYPES43.Identifier) {
9519
+ if (annotation.type !== AST_NODE_TYPES45.TSTypeReference || annotation.typeName.type !== AST_NODE_TYPES45.Identifier) {
9341
9520
  return null;
9342
9521
  }
9343
9522
  return declared().objects.get(annotation.typeName.name) ?? null;
@@ -9349,11 +9528,11 @@ var objectPatternCollaborators = (pattern, declared) => {
9349
9528
  if (members === null) return [];
9350
9529
  const collaborators = [];
9351
9530
  for (const property of pattern.properties) {
9352
- if (property.type !== AST_NODE_TYPES43.Property || property.computed) continue;
9353
- if (property.key.type !== AST_NODE_TYPES43.Identifier) continue;
9531
+ if (property.type !== AST_NODE_TYPES45.Property || property.computed) continue;
9532
+ if (property.key.type !== AST_NODE_TYPES45.Identifier) continue;
9354
9533
  const key = property.key.name;
9355
- const bound = property.value.type === AST_NODE_TYPES43.AssignmentPattern ? property.value.left : property.value;
9356
- if (bound.type !== AST_NODE_TYPES43.Identifier) continue;
9534
+ const bound = property.value.type === AST_NODE_TYPES45.AssignmentPattern ? property.value.left : property.value;
9535
+ if (bound.type !== AST_NODE_TYPES45.Identifier) continue;
9357
9536
  if (CONFIGISH_NAME_RE.test(key)) continue;
9358
9537
  const reference = members.get(key);
9359
9538
  if (reference === void 0) continue;
@@ -9363,8 +9542,8 @@ var objectPatternCollaborators = (pattern, declared) => {
9363
9542
  };
9364
9543
  var parameterCollaborators = (parameter, declared) => {
9365
9544
  let target = parameter;
9366
- if (target.type === AST_NODE_TYPES43.AssignmentPattern) target = target.left;
9367
- if (target.type === AST_NODE_TYPES43.ObjectPattern) {
9545
+ if (target.type === AST_NODE_TYPES45.AssignmentPattern) target = target.left;
9546
+ if (target.type === AST_NODE_TYPES45.ObjectPattern) {
9368
9547
  return objectPatternCollaborators(target, declared);
9369
9548
  }
9370
9549
  const named2 = namedParameterCollaborator(parameter);
@@ -9383,17 +9562,17 @@ var readConstructor = (ctor, declared, typeParameters) => {
9383
9562
  let constructedFields = 0;
9384
9563
  if (body2 !== null && body2 !== void 0) {
9385
9564
  for (const statement of body2.body) {
9386
- if (statement.type !== AST_NODE_TYPES43.ExpressionStatement) continue;
9565
+ if (statement.type !== AST_NODE_TYPES45.ExpressionStatement) continue;
9387
9566
  const expression = statement.expression;
9388
- if (expression.type !== AST_NODE_TYPES43.AssignmentExpression || expression.operator !== "=" || expression.left.type !== AST_NODE_TYPES43.MemberExpression || expression.left.object.type !== AST_NODE_TYPES43.ThisExpression) {
9567
+ if (expression.type !== AST_NODE_TYPES45.AssignmentExpression || expression.operator !== "=" || expression.left.type !== AST_NODE_TYPES45.MemberExpression || expression.left.object.type !== AST_NODE_TYPES45.ThisExpression) {
9389
9568
  continue;
9390
9569
  }
9391
9570
  const source = expression.right;
9392
- if (source.type === AST_NODE_TYPES43.NewExpression) {
9571
+ if (source.type === AST_NODE_TYPES45.NewExpression) {
9393
9572
  constructedFields += 1;
9394
- } else if (source.type === AST_NODE_TYPES43.Identifier) {
9573
+ } else if (source.type === AST_NODE_TYPES45.Identifier) {
9395
9574
  storedFrom.add(source.name);
9396
- } else if (source.type === AST_NODE_TYPES43.MemberExpression && source.object.type === AST_NODE_TYPES43.Identifier) {
9575
+ } else if (source.type === AST_NODE_TYPES45.MemberExpression && source.object.type === AST_NODE_TYPES45.Identifier) {
9397
9576
  storedFrom.add(source.object.name);
9398
9577
  }
9399
9578
  }
@@ -9401,7 +9580,7 @@ var readConstructor = (ctor, declared, typeParameters) => {
9401
9580
  const collaborators = [];
9402
9581
  for (const parameter of ctor.value.params) {
9403
9582
  for (const reference of parameterCollaborators(parameter, declared)) {
9404
- const stored = parameter.type === AST_NODE_TYPES43.TSParameterProperty || storedFrom.has(reference.name);
9583
+ const stored = parameter.type === AST_NODE_TYPES45.TSParameterProperty || storedFrom.has(reference.name);
9405
9584
  if (!stored) continue;
9406
9585
  if (CONFIGISH_TYPE_RE.test(reference.typeName)) continue;
9407
9586
  if (CONFIGISH_NAME_RE.test(reference.name)) continue;
@@ -9435,19 +9614,19 @@ var subtreeHas = (root, found) => {
9435
9614
  return hit;
9436
9615
  };
9437
9616
  var isFrameworkWiring = (body2) => subtreeHas(body2, (node) => {
9438
- if (node.type === AST_NODE_TYPES43.CallExpression) {
9617
+ if (node.type === AST_NODE_TYPES45.CallExpression) {
9439
9618
  const { callee } = node;
9440
- if (callee.type === AST_NODE_TYPES43.Identifier) return callee.name === ROUTER_FACTORY_NAME;
9441
- return callee.type === AST_NODE_TYPES43.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES43.Identifier && callee.property.name === ROUTER_FACTORY_NAME;
9619
+ if (callee.type === AST_NODE_TYPES45.Identifier) return callee.name === ROUTER_FACTORY_NAME;
9620
+ return callee.type === AST_NODE_TYPES45.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES45.Identifier && callee.property.name === ROUTER_FACTORY_NAME;
9442
9621
  }
9443
- return node.type === AST_NODE_TYPES43.TSTypeReference && node.typeName.type === AST_NODE_TYPES43.TSQualifiedName && FRAMEWORK_HTTP_TYPES.has(node.typeName.right.name);
9622
+ return node.type === AST_NODE_TYPES45.TSTypeReference && node.typeName.type === AST_NODE_TYPES45.TSQualifiedName && FRAMEWORK_HTTP_TYPES.has(node.typeName.right.name);
9444
9623
  });
9445
9624
  var stem2 = (name) => name.replace(/^I(?=[A-Z])/, "").replace(/Impl$/, "");
9446
9625
  var fileInterfaceNames = (program) => {
9447
9626
  const names = [];
9448
9627
  for (const statement of program.body) {
9449
- const declaration = statement.type === AST_NODE_TYPES43.ExportNamedDeclaration ? statement.declaration : statement;
9450
- if (declaration?.type === AST_NODE_TYPES43.TSInterfaceDeclaration) names.push(declaration.id.name);
9628
+ const declaration = statement.type === AST_NODE_TYPES45.ExportNamedDeclaration ? statement.declaration : statement;
9629
+ if (declaration?.type === AST_NODE_TYPES45.TSInterfaceDeclaration) names.push(declaration.id.name);
9451
9630
  }
9452
9631
  return names;
9453
9632
  };
@@ -9465,11 +9644,11 @@ var isTransportWrapper = (className, collaborators, program) => {
9465
9644
  var publicMethodNames = (body2) => {
9466
9645
  const names = [];
9467
9646
  for (const member of body2.body) {
9468
- if (member.type !== AST_NODE_TYPES43.MethodDefinition) continue;
9647
+ if (member.type !== AST_NODE_TYPES45.MethodDefinition) continue;
9469
9648
  if (member.kind !== "method" || member.static) continue;
9470
9649
  if (member.accessibility === "private" || member.accessibility === "protected") continue;
9471
- if (member.key.type === AST_NODE_TYPES43.PrivateIdentifier) continue;
9472
- if (member.key.type === AST_NODE_TYPES43.Identifier) names.push(member.key.name);
9650
+ if (member.key.type === AST_NODE_TYPES45.PrivateIdentifier) continue;
9651
+ if (member.key.type === AST_NODE_TYPES45.Identifier) names.push(member.key.name);
9473
9652
  else names.push("\u2026");
9474
9653
  }
9475
9654
  return names;
@@ -9502,7 +9681,7 @@ var require_interface_for_injected_service_default = createRule({
9502
9681
  if (node.implements.length > 0) return;
9503
9682
  if (node.decorators.length > 0) return;
9504
9683
  const ctor = node.body.body.find(
9505
- (member) => member.type === AST_NODE_TYPES43.MethodDefinition && member.kind === "constructor"
9684
+ (member) => member.type === AST_NODE_TYPES45.MethodDefinition && member.kind === "constructor"
9506
9685
  );
9507
9686
  if (ctor === void 0) return;
9508
9687
  const { collaborators, constructedFields } = readConstructor(
@@ -9531,18 +9710,18 @@ var require_interface_for_injected_service_default = createRule({
9531
9710
  });
9532
9711
 
9533
9712
  // src/rules/require-zod-form-validation.ts
9534
- import { AST_NODE_TYPES as AST_NODE_TYPES44 } from "@typescript-eslint/utils";
9713
+ import { AST_NODE_TYPES as AST_NODE_TYPES46 } from "@typescript-eslint/utils";
9535
9714
  var looksLikeZodSchema = (node) => {
9536
9715
  let current = node;
9537
9716
  while (true) {
9538
- if (current.type === AST_NODE_TYPES44.Identifier) {
9717
+ if (current.type === AST_NODE_TYPES46.Identifier) {
9539
9718
  return current.name === "z" || ZOD_SCHEMA_NAME_RE.test(current.name);
9540
9719
  }
9541
- if (current.type === AST_NODE_TYPES44.CallExpression) {
9720
+ if (current.type === AST_NODE_TYPES46.CallExpression) {
9542
9721
  current = current.callee;
9543
9722
  continue;
9544
9723
  }
9545
- if (current.type === AST_NODE_TYPES44.MemberExpression) {
9724
+ if (current.type === AST_NODE_TYPES46.MemberExpression) {
9546
9725
  current = current.object;
9547
9726
  continue;
9548
9727
  }
@@ -9550,23 +9729,23 @@ var looksLikeZodSchema = (node) => {
9550
9729
  }
9551
9730
  };
9552
9731
  var isZodParseCall = (node) => {
9553
- if (node.type !== AST_NODE_TYPES44.CallExpression) return false;
9732
+ if (node.type !== AST_NODE_TYPES46.CallExpression) return false;
9554
9733
  const callee = node.callee;
9555
- if (callee.type !== AST_NODE_TYPES44.MemberExpression) return false;
9734
+ if (callee.type !== AST_NODE_TYPES46.MemberExpression) return false;
9556
9735
  if (callee.computed) return false;
9557
- if (callee.property.type !== AST_NODE_TYPES44.Identifier) return false;
9736
+ if (callee.property.type !== AST_NODE_TYPES46.Identifier) return false;
9558
9737
  const method = callee.property.name;
9559
9738
  if (method !== "parse" && method !== "safeParse") return false;
9560
9739
  return looksLikeZodSchema(callee.object);
9561
9740
  };
9562
9741
  var isFormDataMethodCall = (node) => {
9563
9742
  let current = node;
9564
- if (current.type === AST_NODE_TYPES44.AwaitExpression) {
9743
+ if (current.type === AST_NODE_TYPES46.AwaitExpression) {
9565
9744
  current = current.argument;
9566
9745
  }
9567
- if (current.type !== AST_NODE_TYPES44.CallExpression) return false;
9746
+ if (current.type !== AST_NODE_TYPES46.CallExpression) return false;
9568
9747
  const callee = current.callee;
9569
- return callee.type === AST_NODE_TYPES44.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES44.Identifier && callee.property.name === "formData";
9748
+ return callee.type === AST_NODE_TYPES46.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES46.Identifier && callee.property.name === "formData";
9570
9749
  };
9571
9750
  var require_zod_form_validation_default = createRule({
9572
9751
  name: "require-zod-form-validation",
@@ -9586,14 +9765,14 @@ var require_zod_form_validation_default = createRule({
9586
9765
  return {};
9587
9766
  }
9588
9767
  const isFormSourceIdentifier = (node) => {
9589
- if (node.type !== AST_NODE_TYPES44.Identifier) return false;
9768
+ if (node.type !== AST_NODE_TYPES46.Identifier) return false;
9590
9769
  if (/formdata/i.test(node.name)) return true;
9591
9770
  let scope = context.sourceCode.getScope(node);
9592
9771
  while (scope !== null) {
9593
9772
  const variable = scope.set.get(node.name);
9594
9773
  if (variable !== void 0 && variable.defs.length === 1) {
9595
9774
  const def = variable.defs[0];
9596
- if (def !== void 0 && def.type === "Variable" && def.node.type === AST_NODE_TYPES44.VariableDeclarator && def.node.init !== null) {
9775
+ if (def !== void 0 && def.type === "Variable" && def.node.type === AST_NODE_TYPES46.VariableDeclarator && def.node.init !== null) {
9597
9776
  return isFormDataMethodCall(def.node.init);
9598
9777
  }
9599
9778
  return false;
@@ -9604,8 +9783,8 @@ var require_zod_form_validation_default = createRule({
9604
9783
  };
9605
9784
  const isFormDataGetCall = (node) => {
9606
9785
  const callee = node.callee;
9607
- if (callee.type !== AST_NODE_TYPES44.MemberExpression) return false;
9608
- if (callee.property.type !== AST_NODE_TYPES44.Identifier || callee.property.name !== "get") {
9786
+ if (callee.type !== AST_NODE_TYPES46.MemberExpression) return false;
9787
+ if (callee.property.type !== AST_NODE_TYPES46.Identifier || callee.property.name !== "get") {
9609
9788
  return false;
9610
9789
  }
9611
9790
  return isFormSourceIdentifier(callee.object);
@@ -9620,11 +9799,11 @@ var require_zod_form_validation_default = createRule({
9620
9799
  };
9621
9800
  const isInstanceofNarrowing = (node) => {
9622
9801
  const parent = node.parent;
9623
- return parent !== null && parent !== void 0 && parent.type === AST_NODE_TYPES44.BinaryExpression && parent.operator === "instanceof" && parent.left === node && parent.right.type === AST_NODE_TYPES44.Identifier && (parent.right.name === "File" || parent.right.name === "Blob");
9802
+ return parent !== null && parent !== void 0 && parent.type === AST_NODE_TYPES46.BinaryExpression && parent.operator === "instanceof" && parent.left === node && parent.right.type === AST_NODE_TYPES46.Identifier && (parent.right.name === "File" || parent.right.name === "Blob");
9624
9803
  };
9625
9804
  const boundDeclarator = (node) => {
9626
9805
  const parent = node.parent;
9627
- if (parent.type === AST_NODE_TYPES44.VariableDeclarator && parent.init === node && parent.id.type === AST_NODE_TYPES44.Identifier) {
9806
+ if (parent.type === AST_NODE_TYPES46.VariableDeclarator && parent.init === node && parent.id.type === AST_NODE_TYPES46.Identifier) {
9628
9807
  return parent;
9629
9808
  }
9630
9809
  return null;
@@ -9683,7 +9862,7 @@ var store_insert_requires_on_conflict_default = createRule({
9683
9862
  });
9684
9863
 
9685
9864
  // src/rules/zod-naming-convention.ts
9686
- import { AST_NODE_TYPES as AST_NODE_TYPES45 } from "@typescript-eslint/utils";
9865
+ import { AST_NODE_TYPES as AST_NODE_TYPES47 } from "@typescript-eslint/utils";
9687
9866
  var CONVENTIONS = {
9688
9867
  prefix: { test: ZOD_PREFIX_RE, messageId: "zPrefix" },
9689
9868
  suffix: { test: ZOD_SUFFIX_RE, messageId: "schemaSuffix" },
@@ -9708,15 +9887,15 @@ var NON_SCHEMA_TERMINALS = /* @__PURE__ */ new Set([
9708
9887
  "registry",
9709
9888
  "implement"
9710
9889
  ]);
9711
- var terminalMethodName = (callee) => !callee.computed && callee.property.type === AST_NODE_TYPES45.Identifier ? callee.property.name : null;
9890
+ var terminalMethodName = (callee) => !callee.computed && callee.property.type === AST_NODE_TYPES47.Identifier ? callee.property.name : null;
9712
9891
  var calleeChainStartsWithZ = (node) => {
9713
9892
  let current = node;
9714
- while (current.type === AST_NODE_TYPES45.MemberExpression) {
9893
+ while (current.type === AST_NODE_TYPES47.MemberExpression) {
9715
9894
  const receiver = current.object;
9716
- if (receiver.type === AST_NODE_TYPES45.Identifier && receiver.name === "z") {
9895
+ if (receiver.type === AST_NODE_TYPES47.Identifier && receiver.name === "z") {
9717
9896
  return true;
9718
9897
  }
9719
- if (receiver.type === AST_NODE_TYPES45.CallExpression) {
9898
+ if (receiver.type === AST_NODE_TYPES47.CallExpression) {
9720
9899
  current = receiver.callee;
9721
9900
  continue;
9722
9901
  }
@@ -9761,13 +9940,13 @@ var zod_naming_convention_default = createRule({
9761
9940
  VariableDeclarator(node) {
9762
9941
  const init = node.init;
9763
9942
  if (init === null || init === void 0) return;
9764
- if (init.type !== AST_NODE_TYPES45.CallExpression) return;
9943
+ if (init.type !== AST_NODE_TYPES47.CallExpression) return;
9765
9944
  const callee = init.callee;
9766
- if (callee.type !== AST_NODE_TYPES45.MemberExpression) return;
9945
+ if (callee.type !== AST_NODE_TYPES47.MemberExpression) return;
9767
9946
  if (!calleeChainStartsWithZ(callee)) return;
9768
9947
  const terminal = terminalMethodName(callee);
9769
9948
  if (terminal !== null && NON_SCHEMA_TERMINALS.has(terminal)) return;
9770
- if (node.id.type !== AST_NODE_TYPES45.Identifier) return;
9949
+ if (node.id.type !== AST_NODE_TYPES47.Identifier) return;
9771
9950
  if (test.test(node.id.name)) return;
9772
9951
  if (acceptsSchemaWord && CONTAINS_SCHEMA_RE.test(node.id.name)) return;
9773
9952
  context.report({
@@ -9855,6 +10034,7 @@ var rules = {
9855
10034
  "no-positional-tuple-return": no_positional_tuple_return_default,
9856
10035
  "no-raw-env": no_raw_env_default,
9857
10036
  "no-raw-fetch-outside-clients": no_raw_fetch_outside_clients_default,
10037
+ "no-restricted-library-load": no_restricted_library_load_default,
9858
10038
  "no-repeated-string-literal": no_repeated_string_literal_default,
9859
10039
  "no-restated-comment": no_restated_comment_default,
9860
10040
  "no-restated-jsdoc": no_restated_jsdoc_default,
@@ -9879,6 +10059,7 @@ var rules = {
9879
10059
  "prefer-module-level-constant": prefer_module_level_constant_default,
9880
10060
  "prefer-module-level-schema": prefer_module_level_schema_default,
9881
10061
  "prefer-non-nullable-collection": prefer_non_nullable_collection_default,
10062
+ "prefer-native-random-uuid": prefer_native_random_uuid_default,
9882
10063
  "prefer-schema-for-api-payload": prefer_schema_for_api_payload_default,
9883
10064
  "prefer-semantic-colors": prefer_semantic_colors_default,
9884
10065
  "prefer-server-actions": prefer_server_actions_default,
@@ -9896,8 +10077,12 @@ var rules = {
9896
10077
  };
9897
10078
  var meta = {
9898
10079
  name: "@sarj/eslint-plugin",
9899
- version: "9.7.1"
10080
+ version: "9.8.0"
9900
10081
  };
10082
+ var applicationOnlyRules = [
10083
+ "no-restricted-library-load",
10084
+ "prefer-native-random-uuid"
10085
+ ];
9901
10086
  var recommendedRules = {
9902
10087
  "@sarj/enforce-file-structure": "warn",
9903
10088
  "@sarj/no-async-callback-in-wait-for": "warn",
@@ -10033,6 +10218,7 @@ plugin.configs.strict = {
10033
10218
  };
10034
10219
  var index_default = plugin;
10035
10220
  export {
10221
+ applicationOnlyRules,
10036
10222
  index_default as default,
10037
10223
  recommendedRules,
10038
10224
  renamedRules,