@sarj/eslint-plugin 16.22.3 → 16.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.cjs +147 -145
  2. package/dist/index.js +147 -145
  3. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -354,7 +354,7 @@ var TEST_INTEGRATION_BASENAME_RE = /\.integration\.[cm]?[jt]sx?$/;
354
354
  var TEST_DIR_RE = /(^|\/)(tests?|__tests__|__mocks__|fixtures|__fixtures__|__testfixtures__|e2e|integration)\//;
355
355
  var FIXTURE_TREE_RE = /(^|\/)fixture\//;
356
356
  function isTestFile(filename, gates = []) {
357
- const normalized = filename.replaceAll("\\", "/");
357
+ const normalized = scopedFilename(filename);
358
358
  const base = normalized.slice(normalized.lastIndexOf("/") + 1);
359
359
  if (TEST_BASENAME_RE.test(base) || TEST_INTEGRATION_BASENAME_RE.test(base)) {
360
360
  return true;
@@ -365,14 +365,14 @@ function isTestFile(filename, gates = []) {
365
365
  return gates.includes("fixtureTree") && FIXTURE_TREE_RE.test(normalized);
366
366
  }
367
367
  function isStoryFile(filename, gates = []) {
368
- const normalized = filename.replaceAll("\\", "/");
368
+ const normalized = scopedFilename(filename);
369
369
  if (STORY_FILE_RE.test(normalized)) {
370
370
  return true;
371
371
  }
372
372
  return gates.includes("storyTree") && STORY_TREE_RE.test(normalized);
373
373
  }
374
374
  function isGeneratedFile(filename, sourceText = "", gates = []) {
375
- const normalized = filename.replaceAll("\\", "/");
375
+ const normalized = scopedFilename(filename);
376
376
  if (GENERATED_FILE_RE.test(normalized)) {
377
377
  return true;
378
378
  }
@@ -421,7 +421,10 @@ function leadingCommentBodies(sourceText) {
421
421
  return bodies;
422
422
  }
423
423
  function isScriptFile(filename) {
424
- return SCRIPT_FILE_RE.test(filename);
424
+ return SCRIPT_FILE_RE.test(scopedFilename(filename));
425
+ }
426
+ function scopedFilename(input) {
427
+ return (typeof input === "string" ? input : input.filename).replaceAll("\\", "/");
425
428
  }
426
429
  function matchesAnyPattern(filename, patterns) {
427
430
  const normalized = filename.replaceAll("\\", "/");
@@ -692,7 +695,7 @@ var no_credential_in_browser_storage_default = createRule({
692
695
  },
693
696
  defaultOptions: [],
694
697
  create(context) {
695
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
698
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
696
699
  const { sourceCode } = context;
697
700
  const report2 = (node, key) => {
698
701
  if (key !== null && isAuthSecretName(key) && !tokenize(key).some((word) => METADATA_WORDS.has(word))) {
@@ -809,7 +812,7 @@ var no_numeric_search_param_coercion_default = createRule({
809
812
  },
810
813
  defaultOptions: [],
811
814
  create(context) {
812
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename)) return {};
815
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context)) return {};
813
816
  let services;
814
817
  try {
815
818
  services = import_utils6.ESLintUtils.getParserServices(context);
@@ -866,7 +869,7 @@ function isSearchParamReceiver(call, services) {
866
869
  // package.json
867
870
  var package_default = {
868
871
  name: "@sarj/eslint-plugin",
869
- version: "16.22.3",
872
+ version: "16.23.1",
870
873
  packageManager: "npm@12.2.0",
871
874
  description: "Custom ESLint rules for hypermodern TypeScript / React / Next.js projects",
872
875
  type: "module",
@@ -901,7 +904,7 @@ var package_default = {
901
904
  scripts: {
902
905
  build: "tsup",
903
906
  dogfood: "npm run build && npm run dogfood:built",
904
- lint: "eslint . ../../.github/scripts ../standards/src ../standards/eslint.config.mts --max-warnings 0",
907
+ lint: 'node ../standards/src/sarj_standards/configs/eslint-selected-rules.mts "{\\"full\\":true,\\"config\\":null,\\"rules\\":[],\\"consoleOutput\\":true,\\"failOnWarnings\\":true}" -- . ../../.github/scripts ../standards/src ../standards/eslint.config.mts',
905
908
  prepack: "npm run build && npm run verify-package",
906
909
  test: "vitest run",
907
910
  typecheck: "tsc --noEmit && tsc --project tsconfig.tools.json",
@@ -1038,49 +1041,52 @@ function memberName(node) {
1038
1041
  if (ts.isElementAccessExpression(node) && ts.isStringLiteralLike(node.argumentExpression)) return node.argumentExpression.text;
1039
1042
  return null;
1040
1043
  }
1041
- function ownedSource(source) {
1042
- return !source.isDeclarationFile && !/(?:^|[/\\])(?:node_modules|vendor|vendored|generated|dist)(?:[/\\])/u.test(source.fileName) && !isGeneratedFile(source.fileName, source.text);
1044
+ function ownedSource(source, cwd) {
1045
+ const path = { filename: source.fileName, cwd };
1046
+ return !source.isDeclarationFile && !/(?:^|[/\\])(?:node_modules|vendor|vendored|generated|dist)(?:[/\\])/u.test(scopedFilename(path)) && !isGeneratedFile(path, source.text);
1043
1047
  }
1044
- function escapedClasses(program, checker) {
1045
- const cached = ESCAPED_CLASSES.get(program);
1048
+ function escapedClasses(program, checker, cwd) {
1049
+ const scopes = ESCAPED_CLASSES.get(program) ?? /* @__PURE__ */ new Map();
1050
+ const cached = scopes.get(cwd);
1046
1051
  if (cached !== void 0) return cached;
1047
1052
  const escaped = /* @__PURE__ */ new Set();
1048
1053
  const namespaceValues = /* @__PURE__ */ new Map();
1049
1054
  function visit(node) {
1050
1055
  if (ts.isTypeNode(node) || ts.isImportDeclaration(node)) return;
1051
1056
  if (ts.isIdentifier(node) || ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {
1052
- recordEscapedReference(checker, node, escaped, namespaceValues);
1057
+ recordEscapedReference(checker, node, escaped, namespaceValues, cwd);
1053
1058
  }
1054
1059
  ts.forEachChild(node, visit);
1055
1060
  }
1056
- for (const source of program.getSourceFiles()) if (ownedSource(source)) visit(source);
1057
- ESCAPED_CLASSES.set(program, escaped);
1061
+ for (const source of program.getSourceFiles()) if (ownedSource(source, cwd)) visit(source);
1062
+ scopes.set(cwd, escaped);
1063
+ ESCAPED_CLASSES.set(program, scopes);
1058
1064
  return escaped;
1059
1065
  }
1060
- function recordEscapedReference(checker, node, escaped, namespaceValues) {
1066
+ function recordEscapedReference(checker, node, escaped, namespaceValues, cwd) {
1061
1067
  const symbol = canonicalSymbol(checker, node);
1062
1068
  if (symbol !== void 0) {
1063
1069
  let values = namespaceValues.get(symbol);
1064
1070
  if (values === void 0) {
1065
- values = ownedClassValues(checker, symbol);
1071
+ values = ownedClassValues(checker, symbol, cwd);
1066
1072
  namespaceValues.set(symbol, values);
1067
1073
  }
1068
1074
  if (!namespacePrefix(symbol, node) && !safeClassReference(node)) for (const value of values) escaped.add(value);
1069
1075
  }
1070
1076
  if (ts.isElementAccessExpression(node) && !safeClassReference(node)) {
1071
1077
  const receiver = canonicalSymbol(checker, node.expression) ?? checker.getTypeAtLocation(node.expression).getSymbol();
1072
- if (receiver !== void 0) for (const value of ownedClassValues(checker, receiver)) escaped.add(value);
1078
+ if (receiver !== void 0) for (const value of ownedClassValues(checker, receiver, cwd)) escaped.add(value);
1073
1079
  }
1074
1080
  }
1075
- function ownedClassValues(checker, original, seen = /* @__PURE__ */ new Set()) {
1081
+ function ownedClassValues(checker, original, cwd, seen = /* @__PURE__ */ new Set()) {
1076
1082
  const symbol = original.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(original) : original;
1077
1083
  const values = /* @__PURE__ */ new Set();
1078
1084
  if (seen.has(symbol)) return values;
1079
1085
  seen.add(symbol);
1080
- if (symbol.declarations?.some((declaration) => ts.isClassDeclaration(declaration) && ownedSource(declaration.getSourceFile()))) values.add(symbol);
1081
- if (symbol.declarations?.some((declaration) => (ts.isSourceFile(declaration) || ts.isModuleDeclaration(declaration)) && ownedSource(declaration.getSourceFile()))) {
1086
+ if (symbol.declarations?.some((declaration) => ts.isClassDeclaration(declaration) && ownedSource(declaration.getSourceFile(), cwd))) values.add(symbol);
1087
+ if (symbol.declarations?.some((declaration) => (ts.isSourceFile(declaration) || ts.isModuleDeclaration(declaration)) && ownedSource(declaration.getSourceFile(), cwd))) {
1082
1088
  for (const exported of checker.getExportsOfModule(symbol)) {
1083
- for (const value of ownedClassValues(checker, exported, seen)) values.add(value);
1089
+ for (const value of ownedClassValues(checker, exported, cwd, seen)) values.add(value);
1084
1090
  }
1085
1091
  }
1086
1092
  return values;
@@ -1096,7 +1102,7 @@ function namespacePrefix(symbol, node) {
1096
1102
  const memberCall = (ts.isPropertyAccessExpression(parent) || ts.isElementAccessExpression(parent)) && ts.isCallExpression(parent.parent) && parent.parent.expression === parent;
1097
1103
  return !symbol.declarations?.some(ts.isClassDeclaration) && (ts.isPropertyAccessExpression(parent) || ts.isElementAccessExpression(parent)) && parent.expression === node && !memberCall;
1098
1104
  }
1099
- function closedNominalBoundary(program, checker, call, consumer, missing) {
1105
+ function closedNominalBoundary(program, checker, call, consumer, missing, cwd) {
1100
1106
  const { implementation, contractSymbol } = missing;
1101
1107
  const implementationSymbol = implementation.name === void 0 ? void 0 : canonicalSymbol(checker, implementation.name);
1102
1108
  const consumerSymbol = consumer.name === void 0 ? void 0 : canonicalSymbol(checker, consumer.name);
@@ -1105,7 +1111,7 @@ function closedNominalBoundary(program, checker, call, consumer, missing) {
1105
1111
  if (contract === void 0) return false;
1106
1112
  const targets = /* @__PURE__ */ new Set([consumerSymbol, ...classHierarchySymbols(checker, contract), ...classHierarchySymbols(checker, implementation)]);
1107
1113
  const sources = /* @__PURE__ */ new Set([call.getSourceFile(), consumer.getSourceFile(), implementation.getSourceFile(), ...contractSymbol.declarations?.map((item) => item.getSourceFile()) ?? []]);
1108
- return ![...sources].some(hasPrototypeMutation) && ![...targets].some((target) => escapedClasses(program, checker).has(target));
1114
+ return ![...sources].some(hasPrototypeMutation) && ![...targets].some((target) => escapedClasses(program, checker, cwd).has(target));
1109
1115
  }
1110
1116
  function classHierarchySymbols(checker, declaration, seen = /* @__PURE__ */ new Set()) {
1111
1117
  const symbol = declaration.name === void 0 ? void 0 : canonicalSymbol(checker, declaration.name);
@@ -1228,7 +1234,7 @@ var require_explicit_contract_implementation_default = createRule({
1228
1234
  },
1229
1235
  defaultOptions: [],
1230
1236
  create(context) {
1231
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
1237
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
1232
1238
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
1233
1239
  const services = import_utils7.ESLintUtils.getParserServices(context);
1234
1240
  const checker = services.program.getTypeChecker();
@@ -1246,7 +1252,7 @@ var require_explicit_contract_implementation_default = createRule({
1246
1252
  if (parameter === void 0) continue;
1247
1253
  const tsArgument = services.esTreeNodeToTSNodeMap.get(argument);
1248
1254
  const missing = missingImplementation(checker, signature, parameter, tsNode, tsArgument);
1249
- if (missing === null || !closedNominalBoundary(services.program, checker, tsNode, consumer, missing)) continue;
1255
+ if (missing === null || !closedNominalBoundary(services.program, checker, tsNode, consumer, missing, context.cwd)) continue;
1250
1256
  context.report({
1251
1257
  node: argument,
1252
1258
  messageId: "declareActualContract",
@@ -1845,9 +1851,8 @@ var require_port_for_service_default = createRule({
1845
1851
  },
1846
1852
  defaultOptions: [],
1847
1853
  create(context) {
1848
- const { filename } = context;
1849
- if (isTestFile(filename) || isStoryFile(filename) || isScriptFile(filename)) return {};
1850
- if (isGeneratedFile(filename, context.sourceCode.getText())) return {};
1854
+ if (isTestFile(context) || isStoryFile(context) || isScriptFile(context)) return {};
1855
+ if (isGeneratedFile(context, context.sourceCode.getText())) return {};
1851
1856
  let declaredTypes = null;
1852
1857
  const detachedExports = detachedValueExports(context.sourceCode.ast);
1853
1858
  const localClasses = localClassAbstractness(context.sourceCode.ast);
@@ -2122,14 +2127,14 @@ var require_explicit_service_contract_default = createRule({
2122
2127
  },
2123
2128
  defaultOptions: [],
2124
2129
  create(context) {
2125
- if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2130
+ if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isGeneratedFile(context, context.sourceCode.text)) return {};
2126
2131
  const program = context.sourceCode.ast;
2127
2132
  const operationsFor = createServiceOperationResolver(program);
2128
2133
  const isExportedServiceClass = createExportedServiceClassResolver(program);
2129
2134
  return {
2130
2135
  ClassDeclaration(node) {
2131
2136
  if (node.id === null || node.abstract || node.decorators.length > 0 || !isServiceRole(node.id.name, context.filename)) return;
2132
- if (isExportedServiceClass(node) && !isTestFile(context.filename) && !isStoryFile(context.filename) && !isScriptFile(context.filename)) return;
2137
+ if (isExportedServiceClass(node) && !isTestFile(context) && !isStoryFile(context) && !isScriptFile(context)) return;
2133
2138
  const operations = operationsFor(node);
2134
2139
  if (operations.length === 0 || hasDeclaredServiceContract(node, operations, program) !== false) return;
2135
2140
  context.report({
@@ -2211,7 +2216,7 @@ var no_conditional_empty_object_spread_default = createRule({
2211
2216
  },
2212
2217
  defaultOptions: [],
2213
2218
  create(context) {
2214
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2219
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2215
2220
  return {
2216
2221
  SpreadElement(node) {
2217
2222
  if (node.parent.type !== import_utils10.AST_NODE_TYPES.ObjectExpression || node.argument.type !== import_utils10.AST_NODE_TYPES.ConditionalExpression)
@@ -2283,7 +2288,7 @@ var prefer_typed_reflection_default = createRule({
2283
2288
  },
2284
2289
  defaultOptions: [],
2285
2290
  create(context) {
2286
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2291
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2287
2292
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap)
2288
2293
  return {};
2289
2294
  const services = import_utils11.ESLintUtils.getParserServices(context);
@@ -2400,7 +2405,7 @@ var no_broad_return_type_default = createRule({
2400
2405
  },
2401
2406
  defaultOptions: [],
2402
2407
  create(context) {
2403
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2408
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2404
2409
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap)
2405
2410
  return {};
2406
2411
  const services = import_utils12.ESLintUtils.getParserServices(context);
@@ -2476,7 +2481,7 @@ var no_reduce_accumulator_copy_default = createRule({
2476
2481
  } },
2477
2482
  defaultOptions: [],
2478
2483
  create(context) {
2479
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2484
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2480
2485
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
2481
2486
  const services = import_utils13.ESLintUtils.getParserServices(context);
2482
2487
  const program = services.program;
@@ -2563,7 +2568,7 @@ var no_known_value_widening_default = createRule({
2563
2568
  },
2564
2569
  defaultOptions: [],
2565
2570
  create(context) {
2566
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2571
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2567
2572
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
2568
2573
  const services = import_utils14.ESLintUtils.getParserServices(context);
2569
2574
  if (services.program === null) return {};
@@ -2617,7 +2622,7 @@ var no_invalid_typed_mutation_default = createRule({
2617
2622
  },
2618
2623
  defaultOptions: [],
2619
2624
  create(context) {
2620
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2625
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2621
2626
  const services = import_utils15.ESLintUtils.getParserServices(context);
2622
2627
  const checker = services.program.getTypeChecker();
2623
2628
  const candidates = [];
@@ -3022,7 +3027,7 @@ var no_contradictory_type_predicate_default = createRule({
3022
3027
  },
3023
3028
  defaultOptions: [],
3024
3029
  create(context) {
3025
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3030
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3026
3031
  const services = import_utils17.ESLintUtils.getParserServices(context);
3027
3032
  const checker = services.program.getTypeChecker();
3028
3033
  const uncheckedArray = contradictoryArrayPredicate(context.sourceCode, services);
@@ -3183,7 +3188,7 @@ var no_partial_type_predicate_default = createRule({
3183
3188
  },
3184
3189
  defaultOptions: [],
3185
3190
  create(context) {
3186
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3191
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3187
3192
  const services = import_utils18.ESLintUtils.getParserServices(context);
3188
3193
  function inspect(node) {
3189
3194
  const predicate = primitivePredicate(node, services);
@@ -3620,7 +3625,7 @@ var no_boolean_selector_parameter_default = createRule({
3620
3625
  },
3621
3626
  defaultOptions: [],
3622
3627
  create(context) {
3623
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3628
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3624
3629
  const services = import_utils20.ESLintUtils.getParserServices(context);
3625
3630
  const reported = /* @__PURE__ */ new Set();
3626
3631
  function report2(identifier) {
@@ -3710,7 +3715,7 @@ var no_invalid_zod_custom_parse_default = createRule({
3710
3715
  },
3711
3716
  defaultOptions: [],
3712
3717
  create(context) {
3713
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3718
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3714
3719
  const services = import_utils22.ESLintUtils.getParserServices(context);
3715
3720
  const checker = services.program.getTypeChecker();
3716
3721
  const options = services.program.getCompilerOptions();
@@ -3827,7 +3832,7 @@ var no_contradictory_overload_return_default = createRule({
3827
3832
  },
3828
3833
  defaultOptions: [],
3829
3834
  create(context) {
3830
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3835
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3831
3836
  const services = import_utils23.ESLintUtils.getParserServices(context);
3832
3837
  const checker = services.program.getTypeChecker();
3833
3838
  const options = services.program.getCompilerOptions();
@@ -4178,7 +4183,7 @@ var require_button_accessible_name_default = createRule({
4178
4183
  },
4179
4184
  defaultOptions: [{}],
4180
4185
  create(context, [options]) {
4181
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4186
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4182
4187
  return {};
4183
4188
  const iconModules = options?.iconModules ?? ["lucide-react"];
4184
4189
  return {
@@ -4256,7 +4261,7 @@ var require_camelcase_properties_default = createRule({
4256
4261
  },
4257
4262
  defaultOptions: [],
4258
4263
  create(context) {
4259
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
4264
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
4260
4265
  const checkProperty = (node) => {
4261
4266
  if (node.computed === true || node.key.type !== import_utils26.AST_NODE_TYPES.Identifier) return;
4262
4267
  if (!SNAKE_CASE_RE.test(node.key.name)) return;
@@ -4335,7 +4340,7 @@ var require_svg_accessible_name_default = createRule({
4335
4340
  },
4336
4341
  defaultOptions: [],
4337
4342
  create(context) {
4338
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4343
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4339
4344
  return {};
4340
4345
  return {
4341
4346
  JSXElement(node) {
@@ -4496,7 +4501,7 @@ var prefer_logical_tailwind_utilities_default = createRule({
4496
4501
  },
4497
4502
  defaultOptions: [{ enabled: true, checkInsets: false, allowUtilities: [] }],
4498
4503
  create(context, [options]) {
4499
- if (options?.enabled === false || isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4504
+ if (options?.enabled === false || isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4500
4505
  return {};
4501
4506
  return {
4502
4507
  JSXOpeningElement(node) {
@@ -4645,7 +4650,7 @@ var no_unlocalized_toast_default = createRule({
4645
4650
  },
4646
4651
  defaultOptions: [{ enabled: true }],
4647
4652
  create(context, [options]) {
4648
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4653
+ if (localizationExcluded(context, context.sourceCode.text, options))
4649
4654
  return {};
4650
4655
  const functions = options?.functions ?? [
4651
4656
  { module: "sonner", export: "toast" },
@@ -4757,7 +4762,7 @@ var no_unlocalized_jsx_attributes_default = createRule({
4757
4762
  },
4758
4763
  defaultOptions: [{ enabled: true }],
4759
4764
  create(context, [options]) {
4760
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4765
+ if (localizationExcluded(context, context.sourceCode.text, options))
4761
4766
  return {};
4762
4767
  const attributes = options?.attributes ?? [
4763
4768
  "title",
@@ -4835,7 +4840,7 @@ var no_unlocalized_jsx_text_default = createRule({
4835
4840
  },
4836
4841
  defaultOptions: [{ enabled: true }],
4837
4842
  create(context, [options]) {
4838
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4843
+ if (localizationExcluded(context, context.sourceCode.text, options))
4839
4844
  return {};
4840
4845
  return {
4841
4846
  JSXText(node) {
@@ -5127,7 +5132,7 @@ var enforce_file_structure_default = createRule({
5127
5132
  },
5128
5133
  defaultOptions: [],
5129
5134
  create(context) {
5130
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
5135
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
5131
5136
  return {};
5132
5137
  }
5133
5138
  return {
@@ -5509,7 +5514,7 @@ var duplicate_test_body_default = createRule({
5509
5514
  },
5510
5515
  defaultOptions: [],
5511
5516
  create(context) {
5512
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
5517
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
5513
5518
  return {};
5514
5519
  }
5515
5520
  const siblings = /* @__PURE__ */ new Map();
@@ -5751,7 +5756,7 @@ var excessive_commentary_default = createRule({
5751
5756
  create(context) {
5752
5757
  return {
5753
5758
  Program() {
5754
- for (const group of proseGroups(context.filename, context.sourceCode)) {
5759
+ for (const group of proseGroups(context, context.sourceCode)) {
5755
5760
  const lines = lineCount(group.text);
5756
5761
  const words2 = wordCount(group.text);
5757
5762
  if (isJSDoc(group.comment)) {
@@ -6542,7 +6547,7 @@ var no_comment_cruft_default = createRule({
6542
6547
  },
6543
6548
  defaultOptions: [],
6544
6549
  create(context) {
6545
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
6550
+ if (isGeneratedFile(context, context.sourceCode.text)) {
6546
6551
  return {};
6547
6552
  }
6548
6553
  const sourceCode = context.sourceCode;
@@ -6641,7 +6646,7 @@ var no_comment_cruft_default = createRule({
6641
6646
  return {
6642
6647
  Program() {
6643
6648
  const comments = sourceCode.getAllComments();
6644
- const callMatrixStems = isTestFile(context.filename) ? testCallMatrixStems(comments) : /* @__PURE__ */ new Set();
6649
+ const callMatrixStems = isTestFile(context) ? testCallMatrixStems(comments) : /* @__PURE__ */ new Set();
6645
6650
  const walls = findCommentWalls(comments);
6646
6651
  const wallByLeader = new Map(walls.map((wall) => [wall.leader, wall]));
6647
6652
  const wallMembers = new Set(walls.flatMap((wall) => [...wall.members]));
@@ -7090,7 +7095,7 @@ var no_duplicate_lifecycle_refresh_listeners_default = createRule({
7090
7095
  },
7091
7096
  defaultOptions: [],
7092
7097
  create(context) {
7093
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
7098
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
7094
7099
  const routerHooks = /* @__PURE__ */ new Set();
7095
7100
  const routers = /* @__PURE__ */ new Set();
7096
7101
  const functionCallbacks = /* @__PURE__ */ new Map();
@@ -7761,7 +7766,7 @@ var no_enum_default = createRule({
7761
7766
  const filename = context.filename;
7762
7767
  const sourceText = context.sourceCode.getText();
7763
7768
  const isIgnoredByOption = ignoreFiles.length > 0 && matchesAnyPattern(filename, ignoreFiles);
7764
- if (isIgnoredByOption || isGeneratedFile(filename, sourceText)) {
7769
+ if (isIgnoredByOption || isGeneratedFile(context, sourceText)) {
7765
7770
  return {};
7766
7771
  }
7767
7772
  return {
@@ -7915,7 +7920,7 @@ var no_excessive_cognitive_complexity_default = createRule({
7915
7920
  },
7916
7921
  defaultOptions: [],
7917
7922
  create(context) {
7918
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
7923
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
7919
7924
  function check(node) {
7920
7925
  const points = functionComplexity(node, context.sourceCode.visitorKeys);
7921
7926
  const score = points.reduce((sum, point) => sum + point.amount, 0);
@@ -8316,7 +8321,7 @@ var no_fat_try_blocks_default = createRule({
8316
8321
  },
8317
8322
  defaultOptions: [{ max: MAX_TRY_BODY_STATEMENTS }],
8318
8323
  create(context, [options]) {
8319
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
8324
+ if (isGeneratedFile(context, context.sourceCode.text)) {
8320
8325
  return {};
8321
8326
  }
8322
8327
  const sourceCode = context.sourceCode;
@@ -8494,7 +8499,7 @@ var no_hand_rolled_sleep_default = createRule({
8494
8499
  defaultOptions: [{}],
8495
8500
  create(context, [optionsArg]) {
8496
8501
  const { filename, sourceCode } = context;
8497
- if (isTestFile(filename) || isScriptFile(filename) || isGeneratedFile(filename, sourceCode.getText())) {
8502
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, sourceCode.getText())) {
8498
8503
  return {};
8499
8504
  }
8500
8505
  const allowIn = optionsArg?.allowIn ?? [];
@@ -8641,7 +8646,7 @@ var no_hand_rolled_spinner_default = createRule({
8641
8646
  },
8642
8647
  defaultOptions: [],
8643
8648
  create(context) {
8644
- if (DESIGN_SYSTEM_PATH.test(context.filename) || isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
8649
+ if (DESIGN_SYSTEM_PATH.test(context.filename) || isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
8645
8650
  return {};
8646
8651
  }
8647
8652
  return {
@@ -8762,7 +8767,7 @@ var no_insecure_random_id_default = createRule({
8762
8767
  },
8763
8768
  defaultOptions: [],
8764
8769
  create(context) {
8765
- if (isTestFile(context.filename)) {
8770
+ if (isTestFile(context)) {
8766
8771
  return {};
8767
8772
  }
8768
8773
  return {
@@ -8852,7 +8857,7 @@ var no_detached_global_fetch_default = createRule({
8852
8857
  defaultOptions: [],
8853
8858
  create(context) {
8854
8859
  const sourceCode = context.sourceCode;
8855
- if (isTestFile(context.filename) || isScriptFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
8860
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
8856
8861
  const aliases = /* @__PURE__ */ new Set();
8857
8862
  function bindingOf(identifier) {
8858
8863
  return import_utils52.ASTUtils.findVariable(sourceCode.getScope(identifier), identifier.name);
@@ -9010,7 +9015,7 @@ var no_exception_text_in_5xx_response_default = createRule({
9010
9015
  defaultOptions: [],
9011
9016
  create(context) {
9012
9017
  const sourceCode = context.sourceCode;
9013
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
9018
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
9014
9019
  const candidates = [];
9015
9020
  const changedErrors = /* @__PURE__ */ new Set();
9016
9021
  const stableBindings = /* @__PURE__ */ new WeakMap();
@@ -9738,7 +9743,7 @@ var no_json_stringify_object_equality_default = createRule({
9738
9743
  defaultOptions: [],
9739
9744
  create(context) {
9740
9745
  const sourceCode = context.sourceCode;
9741
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) {
9746
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.text)) {
9742
9747
  return {};
9743
9748
  }
9744
9749
  let services;
@@ -9932,7 +9937,7 @@ var no_impossible_zod_literal_bounds_default = createRule({
9932
9937
  defaultOptions: [{}],
9933
9938
  create(context, [options]) {
9934
9939
  const sourceCode = context.sourceCode;
9935
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
9940
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
9936
9941
  return {};
9937
9942
  }
9938
9943
  const namespaces = /* @__PURE__ */ new Set();
@@ -10211,7 +10216,7 @@ var no_in_operator_on_built_in_collections_default = createRule({
10211
10216
  },
10212
10217
  defaultOptions: [],
10213
10218
  create(context) {
10214
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
10219
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
10215
10220
  let services;
10216
10221
  try {
10217
10222
  services = import_utils57.ESLintUtils.getParserServices(context);
@@ -10340,7 +10345,7 @@ var no_redundant_optional_array_default_default = createRule({
10340
10345
  defaultOptions: [],
10341
10346
  create(context) {
10342
10347
  const sourceCode = context.sourceCode;
10343
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
10348
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
10344
10349
  return {};
10345
10350
  }
10346
10351
  const namespaces = /* @__PURE__ */ new Set();
@@ -10534,7 +10539,7 @@ var interface_contract_members_private_default = createRule({
10534
10539
  },
10535
10540
  defaultOptions: [],
10536
10541
  create(context) {
10537
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
10542
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
10538
10543
  let services;
10539
10544
  try {
10540
10545
  services = import_utils60.ESLintUtils.getParserServices(context);
@@ -10830,7 +10835,7 @@ var no_log_only_catch_default = createRule({
10830
10835
  const above = sourceCode.getCommentsBefore(node).at(-1);
10831
10836
  return above !== void 0 && above.loc.end.line === node.loc.start.line - 1;
10832
10837
  }
10833
- if (isTestFile(filename) || BENCHMARK_DIR_RE.test(filename.replaceAll("\\", "/"))) {
10838
+ if (isTestFile(context) || BENCHMARK_DIR_RE.test(filename.replaceAll("\\", "/"))) {
10834
10839
  return {};
10835
10840
  }
10836
10841
  return {
@@ -11002,7 +11007,7 @@ var no_bare_return_from_test_catch_default = createRule({
11002
11007
  },
11003
11008
  defaultOptions: [],
11004
11009
  create(context) {
11005
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
11010
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
11006
11011
  return {
11007
11012
  ReturnStatement(node) {
11008
11013
  if (node.argument !== null) return;
@@ -11129,7 +11134,7 @@ var no_bespoke_api_case_conversion_default = createRule({
11129
11134
  create(context) {
11130
11135
  const filename = context.filename.replaceAll("\\", "/");
11131
11136
  const basename = filename.slice(filename.lastIndexOf("/") + 1);
11132
- if (!ADAPTER_BASENAME_RE.test(basename) || isGeneratedFile(filename, context.sourceCode.text) || isTestFile(filename, ["fixtureTree"])) {
11137
+ if (!ADAPTER_BASENAME_RE.test(basename) || isGeneratedFile(context, context.sourceCode.text) || isTestFile(context, ["fixtureTree"])) {
11133
11138
  return {};
11134
11139
  }
11135
11140
  const hasApiReceiver = (value) => {
@@ -11261,7 +11266,7 @@ var no_long_comment_default = createRule({
11261
11266
  if (VERSIONED_DEPENDENCY_TREE_RE.test(normalizedFilename)) return {};
11262
11267
  return {
11263
11268
  Program() {
11264
- for (const group of proseGroups(context.filename, context.sourceCode)) {
11269
+ for (const group of proseGroups(context, context.sourceCode)) {
11265
11270
  if (group.comment.type !== "Block" || !group.comment.value.startsWith("*") || group.hasTypedTags || hasDocumentationStructure(group.text) || hasTechnicalAnchor(group.text) || documentsTypedFunction(context.sourceCode, group.comment) || documentsTypeOrMember2(context.sourceCode, group.comment) || sentenceUnits(group.text) < EXCESSIVE_SENTENCE_COUNT && wordUnits(group.text) < EXCESSIVE_WORD_COUNT) continue;
11266
11271
  context.report({ node: group.comment, messageId: "tooLong" });
11267
11272
  }
@@ -11273,7 +11278,7 @@ var no_long_comment_default = createRule({
11273
11278
  // src/rules/no-vague-suppression-description.ts
11274
11279
  var ESLINT_DIRECTIVE_WITH_DESCRIPTION_RE = /^eslint-(?:disable|disable-next-line|disable-line)\b[^:\n]*?\s*(?::|--)\s*(.+?)\s*$/iu;
11275
11280
  var TS_EXPECT_ERROR_WITH_DESCRIPTION_RE = /^@ts-expect-error\b(?:(?:\s*(?::|--)\s*)|\s+)(.+?)\s*$/iu;
11276
- var VAGUE_RE = /^(?:needed|required|intentional(?:ly)?|ignore(?:d)?|false positive|type error|typescript|to satisfy (?:the )?(?:linter|typescript|type checker))\.?$/iu;
11281
+ var VAGUE_RE = /^(?:needed|required|same|n\/a|legacy|intentional(?:ly)?|ignore(?:d)?|false positive|type error|typescript|to satisfy (?:the )?(?:linter|typescript|type checker))\.?$/iu;
11277
11282
  var NO_VAGUE_SUPPRESSION_DESCRIPTION_DOCUMENTATION = {
11278
11283
  summary: "Require suppression descriptions to name the concrete mismatch or invariant instead of a generic non-reason.",
11279
11284
  rationale: "Generic phrases satisfy require-description mechanically while leaving reviewers unable to audit the risk or remove stale debt.",
@@ -11282,7 +11287,7 @@ var NO_VAGUE_SUPPRESSION_DESCRIPTION_DOCUMENTATION = {
11282
11287
  limitations: [
11283
11288
  "Only ESLint disable comments and TypeScript expect-error directives are checked.",
11284
11289
  "The rule uses a small anchored vocabulary and does not score prose quality generally.",
11285
- "Generated files and descriptions outside that exact vocabulary are excluded; an unflagged reason is not proof of a justified suppression. Missing descriptions remain owned by the upstream description requirement."
11290
+ "Descriptions outside that exact vocabulary are excluded; an unflagged reason is not proof of a justified suppression. Missing descriptions remain owned by the upstream description requirement. Explicit path exclusions own generated-source boundaries; a source marker does not waive suppression accountability."
11286
11291
  ],
11287
11292
  examples: [
11288
11293
  {
@@ -11333,15 +11338,13 @@ var no_vague_suppression_description_default = createRule({
11333
11338
  },
11334
11339
  defaultOptions: [],
11335
11340
  create(context) {
11336
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
11337
- return {};
11338
- }
11339
11341
  return {
11340
11342
  Program() {
11341
11343
  for (const comment of context.sourceCode.getAllComments()) {
11342
11344
  const text = comment.value.trim();
11343
11345
  const description = suppressionDescription(text);
11344
- if (description === void 0 || !VAGUE_RE.test(description)) continue;
11346
+ if (description === void 0 || !VAGUE_RE.test(description))
11347
+ continue;
11345
11348
  context.report({
11346
11349
  loc: comment.loc,
11347
11350
  messageId: "vagueDescription",
@@ -11527,7 +11530,7 @@ var no_generic_single_export_module_default = createRule({
11527
11530
  create(context) {
11528
11531
  const file = fileParts(context.filename);
11529
11532
  const { stem: stem4 } = file;
11530
- if (!GENERIC_MODULE_STEMS.has(stem4) || isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
11533
+ if (!GENERIC_MODULE_STEMS.has(stem4) || isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
11531
11534
  let hasCommonJsExport = false;
11532
11535
  return {
11533
11536
  "CallExpression, MemberExpression"(node) {
@@ -11586,7 +11589,7 @@ var no_offset_pagination_default = createRule({
11586
11589
  },
11587
11590
  defaultOptions: [],
11588
11591
  create(context) {
11589
- if (isTestFile(context.filename)) {
11592
+ if (isTestFile(context)) {
11590
11593
  return {};
11591
11594
  }
11592
11595
  return createSqlListener((sql, node) => {
@@ -11855,7 +11858,7 @@ var no_positional_tuple_return_default = createRule({
11855
11858
  },
11856
11859
  defaultOptions: [],
11857
11860
  create(context) {
11858
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
11861
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
11859
11862
  const specifierExports = specifierExportedNames(context.sourceCode.ast);
11860
11863
  const typeExports = publiclyReachableTypeNames(
11861
11864
  context.sourceCode.ast,
@@ -12123,7 +12126,7 @@ var no_raw_env_default = createRule({
12123
12126
  defaultOptions: [],
12124
12127
  create(context) {
12125
12128
  const filename = context.filename;
12126
- if (isTestFile(filename) || isScriptFile(filename) || CONFIG_FILE_RE.test(filename.replaceAll("\\", "/"))) {
12129
+ if (isTestFile(context) || isScriptFile(context) || CONFIG_FILE_RE.test(filename.replaceAll("\\", "/"))) {
12127
12130
  return {};
12128
12131
  }
12129
12132
  const reads = [];
@@ -12324,7 +12327,7 @@ var no_raw_fetch_outside_clients_default = createRule({
12324
12327
  defaultOptions: [{}],
12325
12328
  create(context, [options]) {
12326
12329
  const filename = context.filename;
12327
- if (isTestFile(filename) || isScriptFile(filename) || NON_PRODUCTION_TREE_RE.test(filename)) {
12330
+ if (isTestFile(context) || isScriptFile(context) || NON_PRODUCTION_TREE_RE.test(filename)) {
12328
12331
  return {};
12329
12332
  }
12330
12333
  const patterns = options?.allow ?? DEFAULT_ALLOW;
@@ -12601,7 +12604,7 @@ var no_router_refresh_polling_default = createRule({
12601
12604
  },
12602
12605
  defaultOptions: [],
12603
12606
  create(context) {
12604
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
12607
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
12605
12608
  const routerHooks = /* @__PURE__ */ new Set();
12606
12609
  const routers = /* @__PURE__ */ new Set();
12607
12610
  const reportedCallbacks = /* @__PURE__ */ new WeakSet();
@@ -12707,7 +12710,7 @@ var no_repeated_string_literal_default = createRule({
12707
12710
  },
12708
12711
  defaultOptions: [],
12709
12712
  create(context) {
12710
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
12713
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
12711
12714
  return {};
12712
12715
  }
12713
12716
  const occurrences = /* @__PURE__ */ new Map();
@@ -12860,7 +12863,7 @@ var no_restated_comment_default = createRule({
12860
12863
  },
12861
12864
  defaultOptions: [],
12862
12865
  create(context) {
12863
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
12866
+ if (isGeneratedFile(context, context.sourceCode.text)) {
12864
12867
  return {};
12865
12868
  }
12866
12869
  const sourceCode = context.sourceCode;
@@ -13046,7 +13049,7 @@ var no_restated_jsdoc_default = createRule({
13046
13049
  },
13047
13050
  defaultOptions: [],
13048
13051
  create(context) {
13049
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
13052
+ if (isGeneratedFile(context, context.sourceCode.text)) {
13050
13053
  return {};
13051
13054
  }
13052
13055
  const sourceCode = context.sourceCode;
@@ -13381,7 +13384,7 @@ var no_secret_in_log_default = createRule({
13381
13384
  defaultOptions: [{}],
13382
13385
  create(context, [loggingOptions]) {
13383
13386
  const matcher = createLogMatcher(loggingOptions);
13384
- const blobArmApplies = !isTestFile(context.filename);
13387
+ const blobArmApplies = !isTestFile(context);
13385
13388
  function resolvesToGlobal(identifier) {
13386
13389
  const variable = import_utils77.ASTUtils.findVariable(context.sourceCode.getScope(identifier), identifier.name);
13387
13390
  return variable === null || variable.defs.length === 0;
@@ -13653,7 +13656,7 @@ var no_select_star_default = createRule({
13653
13656
  },
13654
13657
  defaultOptions: [],
13655
13658
  create(context) {
13656
- if (isTestFile(context.filename)) {
13659
+ if (isTestFile(context)) {
13657
13660
  return {};
13658
13661
  }
13659
13662
  return createSqlListener((sql, node) => {
@@ -14031,7 +14034,7 @@ var no_sentinel_return_on_catch_default = createRule({
14031
14034
  },
14032
14035
  defaultOptions: [{}],
14033
14036
  create(context, [loggingOptions]) {
14034
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
14037
+ if (isGeneratedFile(context, context.sourceCode.text)) {
14035
14038
  return {};
14036
14039
  }
14037
14040
  const matcher = createLogMatcher(loggingOptions);
@@ -14271,7 +14274,7 @@ var no_silent_promise_catch_default = createRule({
14271
14274
  },
14272
14275
  defaultOptions: [],
14273
14276
  create(context) {
14274
- if (isTestFile(context.filename) || isScriptFile(context.filename)) {
14277
+ if (isTestFile(context) || isScriptFile(context)) {
14275
14278
  return {};
14276
14279
  }
14277
14280
  function isZodSchema(node, seen = /* @__PURE__ */ new Set()) {
@@ -14466,7 +14469,7 @@ var no_sleep_in_test_body_default = createRule({
14466
14469
  },
14467
14470
  defaultOptions: [],
14468
14471
  create(context) {
14469
- if (!isTestFile(context.filename)) {
14472
+ if (!isTestFile(context)) {
14470
14473
  return {};
14471
14474
  }
14472
14475
  const report2 = (node) => {
@@ -14604,7 +14607,7 @@ var no_storage_in_stateless_modules_default = createRule({
14604
14607
  },
14605
14608
  defaultOptions: [{}],
14606
14609
  create(context, [options]) {
14607
- if (isTestFile(context.filename)) {
14610
+ if (isTestFile(context)) {
14608
14611
  return {};
14609
14612
  }
14610
14613
  const modules = options?.modules ?? [];
@@ -14844,7 +14847,7 @@ var no_string_concat_in_loop_default = createRule({
14844
14847
  },
14845
14848
  defaultOptions: [],
14846
14849
  create(context) {
14847
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
14850
+ if (isGeneratedFile(context, context.sourceCode.text)) {
14848
14851
  return {};
14849
14852
  }
14850
14853
  const reported = /* @__PURE__ */ new WeakMap();
@@ -15005,7 +15008,7 @@ var no_duplicate_test_case_default = createRule({
15005
15008
  },
15006
15009
  defaultOptions: [],
15007
15010
  create(context) {
15008
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
15011
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
15009
15012
  const inspected = /* @__PURE__ */ new Set();
15010
15013
  return {
15011
15014
  CallExpression(node) {
@@ -15358,7 +15361,7 @@ var no_tautological_expect_default = createRule({
15358
15361
  },
15359
15362
  defaultOptions: [],
15360
15363
  create(context) {
15361
- if (!isTestFile(context.filename)) {
15364
+ if (!isTestFile(context)) {
15362
15365
  return {};
15363
15366
  }
15364
15367
  const customized = customizedMatchers(context.sourceCode);
@@ -15584,7 +15587,7 @@ var no_typed_doc_sections_default = createRule({
15584
15587
  create(context) {
15585
15588
  return {
15586
15589
  Program() {
15587
- for (const group of proseGroups(context.filename, context.sourceCode, true)) {
15590
+ for (const group of proseGroups(context, context.sourceCode, true)) {
15588
15591
  const signature = documentedSignature(context.sourceCode, group.comment);
15589
15592
  if (group.hasTypedTags && signature !== null && typedTags(group.text).some((tag) => isVacuousTag(tag, signature, context.sourceCode))) {
15590
15593
  context.report({ node: group.comment, messageId: "typedSection" });
@@ -15760,7 +15763,7 @@ var no_trailing_value_narration_default = createRule({
15760
15763
  },
15761
15764
  defaultOptions: [],
15762
15765
  create(context) {
15763
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
15766
+ if (isGeneratedFile(context, context.sourceCode.text)) {
15764
15767
  return {};
15765
15768
  }
15766
15769
  const sourceCode = context.sourceCode;
@@ -16034,7 +16037,7 @@ var no_declaration_comment_wall_default = createRule({
16034
16037
  create(context, [provided]) {
16035
16038
  const options = { ...WALL_DEFAULTS, ...provided };
16036
16039
  const sourceCode = context.sourceCode;
16037
- if (isGeneratedFile(context.filename, sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename)) {
16040
+ if (isGeneratedFile(context, sourceCode.text) || isTestFile(context) || isStoryFile(context)) {
16038
16041
  return {};
16039
16042
  }
16040
16043
  const endingOn = /* @__PURE__ */ new Map();
@@ -16214,7 +16217,7 @@ var no_union_in_comment_default = createRule({
16214
16217
  defaultOptions: [],
16215
16218
  create(context) {
16216
16219
  const sourceCode = context.sourceCode;
16217
- if (isGeneratedFile(context.filename, sourceCode.text)) {
16220
+ if (isGeneratedFile(context, sourceCode.text)) {
16218
16221
  return {};
16219
16222
  }
16220
16223
  function annotated(comment) {
@@ -16315,7 +16318,7 @@ var no_type_member_comment_wall_default = createRule({
16315
16318
  create(context, [provided]) {
16316
16319
  const options = { ...WALL_DEFAULTS, ...provided };
16317
16320
  const sourceCode = context.sourceCode;
16318
- if (isGeneratedFile(context.filename, sourceCode.text, ["externalTree"]) || isTestFile(context.filename, ["fixtureTree"]) || isStoryFile(context.filename, ["storyTree"])) {
16321
+ if (isGeneratedFile(context, sourceCode.text, ["externalTree"]) || isTestFile(context, ["fixtureTree"]) || isStoryFile(context, ["storyTree"])) {
16319
16322
  return {};
16320
16323
  }
16321
16324
  const endingOn = /* @__PURE__ */ new Map();
@@ -16700,7 +16703,7 @@ var no_unsafe_mock_casting_default = createRule({
16700
16703
  },
16701
16704
  defaultOptions: [],
16702
16705
  create(context) {
16703
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
16706
+ if (isGeneratedFile(context, context.sourceCode.text)) {
16704
16707
  return {};
16705
16708
  }
16706
16709
  const directBindings = /* @__PURE__ */ new Set();
@@ -16793,7 +16796,7 @@ var no_unsafe_test_double_cast_default = createRule({
16793
16796
  },
16794
16797
  defaultOptions: [],
16795
16798
  create(context) {
16796
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
16799
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
16797
16800
  return {
16798
16801
  TSAsExpression(node) {
16799
16802
  if ((node.expression.type === import_utils95.AST_NODE_TYPES.TSAsExpression || node.expression.type === import_utils95.AST_NODE_TYPES.TSTypeAssertion) && isUnknown(node.expression.typeAnnotation) && containsMockFactory(node.expression.expression, context.sourceCode)) context.report({ node, messageId: "noUnsafeTestDoubleCast" });
@@ -16832,7 +16835,7 @@ var no_first_party_module_mock_default = createRule({
16832
16835
  },
16833
16836
  defaultOptions: [{ additionalModulePrefixes: [] }],
16834
16837
  create(context, [options]) {
16835
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
16838
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
16836
16839
  return {
16837
16840
  CallExpression(node) {
16838
16841
  const unwrappedNodeCallee = unwrapExpression(node.callee);
@@ -16964,10 +16967,10 @@ var no_zod_native_enum_default = createRule({
16964
16967
  defaultOptions: [],
16965
16968
  create(context) {
16966
16969
  const sourceCode = context.sourceCode;
16967
- if (isGeneratedFile(context.filename, sourceCode.getText())) {
16970
+ if (isGeneratedFile(context, sourceCode.getText())) {
16968
16971
  return {};
16969
16972
  }
16970
- if (isTestFile(context.filename)) {
16973
+ if (isTestFile(context)) {
16971
16974
  return {};
16972
16975
  }
16973
16976
  let services;
@@ -17174,7 +17177,7 @@ var test_loops_over_literal_cases_default = createRule({
17174
17177
  },
17175
17178
  defaultOptions: [],
17176
17179
  create(context) {
17177
- if (!isTestFile(context.filename)) {
17180
+ if (!isTestFile(context)) {
17178
17181
  return {};
17179
17182
  }
17180
17183
  const isFrameworkTest = (identifier) => TEST_CALLERS3.has(runtimeTestFrameworkName(context.sourceCode, identifier, "test") ?? "");
@@ -17286,7 +17289,7 @@ var test_phase_label_comment_default = createRule({
17286
17289
  },
17287
17290
  defaultOptions: [],
17288
17291
  create(context) {
17289
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
17292
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
17290
17293
  return {
17291
17294
  Program() {
17292
17295
  const comments = context.sourceCode.getAllComments();
@@ -17390,7 +17393,7 @@ var prefer_constant_time_secret_compare_default = createRule({
17390
17393
  },
17391
17394
  defaultOptions: [],
17392
17395
  create(context) {
17393
- if (isTestFile(context.filename)) {
17396
+ if (isTestFile(context)) {
17394
17397
  return {};
17395
17398
  }
17396
17399
  const sourceCode = context.sourceCode;
@@ -17527,7 +17530,7 @@ var prefer_ecmascript_private_members_default = createRule({
17527
17530
  },
17528
17531
  defaultOptions: [],
17529
17532
  create(context) {
17530
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
17533
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
17531
17534
  let services;
17532
17535
  try {
17533
17536
  services = import_utils101.ESLintUtils.getParserServices(context);
@@ -17932,7 +17935,7 @@ var prefer_discriminated_union_default = createRule({
17932
17935
  },
17933
17936
  defaultOptions: [],
17934
17937
  create(context) {
17935
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
17938
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
17936
17939
  return {};
17937
17940
  }
17938
17941
  const reportedContracts = /* @__PURE__ */ new Set();
@@ -18210,7 +18213,7 @@ var prefer_millisecond_control_duration_schema_default = createRule({
18210
18213
  },
18211
18214
  defaultOptions: [],
18212
18215
  create(context) {
18213
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename, ["fixtureTree"])) {
18216
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context, ["fixtureTree"])) {
18214
18217
  return {};
18215
18218
  }
18216
18219
  const zodNamespaces = /* @__PURE__ */ new Set();
@@ -18515,7 +18518,7 @@ var prefer_immutable_module_constant_default = createRule({
18515
18518
  const declaration = definitions2.length === 1 ? definitions2[0]?.node : void 0;
18516
18519
  return declaration?.type === import_utils107.AST_NODE_TYPES.TSTypeAliasDeclaration || declaration?.type === import_utils107.AST_NODE_TYPES.TSTypeParameter ? declaration : void 0;
18517
18520
  };
18518
- if (JAVASCRIPT_FILE_RE.test(context.filename) || isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
18521
+ if (JAVASCRIPT_FILE_RE.test(context.filename) || isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
18519
18522
  return {};
18520
18523
  }
18521
18524
  const exportedNames2 = /* @__PURE__ */ new Set();
@@ -18929,7 +18932,7 @@ var prefer_shadcn_primitives_default = createRule({
18929
18932
  defaultOptions: [{}],
18930
18933
  create(context, [options]) {
18931
18934
  const filename = context.filename.replaceAll("\\", "/");
18932
- if (isTestFile(filename) || isStoryFile(filename) || isGeneratedFile(filename, context.sourceCode.text) || SHARED_PRIMITIVE_IMPLEMENTATION_RE.test(filename)) {
18935
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text) || SHARED_PRIMITIVE_IMPLEMENTATION_RE.test(filename)) {
18933
18936
  return {};
18934
18937
  }
18935
18938
  const detectsProject = options?.detectProjectPrimitives === true;
@@ -19241,7 +19244,7 @@ var prefer_module_level_constant_default = createRule({
19241
19244
  if (isIgnoredFile(filename, sourceCode.getText())) {
19242
19245
  return {};
19243
19246
  }
19244
- if (ignoreTestFiles && isLocalFixtureFile(filename)) {
19247
+ if (ignoreTestFiles && isLocalFixtureFile(context)) {
19245
19248
  return {};
19246
19249
  }
19247
19250
  function allReferencesAreSafeReads(declarator) {
@@ -19575,11 +19578,10 @@ var prefer_module_level_schema_default = createRule({
19575
19578
  const memoCallees = new Set(options?.memoCallees ?? MEMO_CALLEES);
19576
19579
  const minProperties = options?.minProperties ?? DEFAULT_MIN_PROPERTIES;
19577
19580
  const sourceCode = context.sourceCode;
19578
- const filename = context.filename;
19579
- if (isGeneratedFile(filename, sourceCode.getText())) {
19581
+ if (isGeneratedFile(context, sourceCode.getText())) {
19580
19582
  return {};
19581
19583
  }
19582
- if (ignoreTestFiles && isTestFile(filename)) {
19584
+ if (ignoreTestFiles && isTestFile(context)) {
19583
19585
  return {};
19584
19586
  }
19585
19587
  const zodNamespaces = /* @__PURE__ */ new Set();
@@ -20023,7 +20025,7 @@ var prefer_module_level_refined_schema_default = createRule({
20023
20025
  },
20024
20026
  defaultOptions: [],
20025
20027
  create(context) {
20026
- if (isTestFile(context.filename) || BENCHMARK_PATH_RE.test(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text))
20028
+ if (isTestFile(context) || BENCHMARK_PATH_RE.test(context.filename) || isGeneratedFile(context, context.sourceCode.text))
20027
20029
  return {};
20028
20030
  const zodBindings = /* @__PURE__ */ new Set();
20029
20031
  function resolvedBinding(identifier) {
@@ -20222,7 +20224,7 @@ var prefer_multi_value_zod_literal_default = createRule({
20222
20224
  },
20223
20225
  defaultOptions: [{}],
20224
20226
  create(context, [options]) {
20225
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text))
20227
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text))
20226
20228
  return {};
20227
20229
  const zodBindings = /* @__PURE__ */ new Set();
20228
20230
  const zod4Bindings = /* @__PURE__ */ new Set();
@@ -20407,7 +20409,7 @@ var prefer_nominal_id_types_default = createRule({
20407
20409
  },
20408
20410
  defaultOptions: [],
20409
20411
  create(context) {
20410
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20412
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
20411
20413
  return {
20412
20414
  ArrowFunctionExpression: (node) => checkBoundary(node, context),
20413
20415
  FunctionDeclaration: (node) => checkBoundary(node, context),
@@ -20459,7 +20461,7 @@ var prefer_named_callback_domain_default = createRule({
20459
20461
  },
20460
20462
  defaultOptions: [],
20461
20463
  create(context) {
20462
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20464
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
20463
20465
  return {
20464
20466
  TSFunctionType(node) {
20465
20467
  if (!exportedContract(node)) return;
@@ -20525,7 +20527,7 @@ var prefer_named_complex_return_type_default = createRule({
20525
20527
  },
20526
20528
  defaultOptions: [],
20527
20529
  create(context) {
20528
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20530
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
20529
20531
  return {
20530
20532
  ArrowFunctionExpression: (node) => report(context, node),
20531
20533
  FunctionDeclaration: (node) => report(context, node),
@@ -20831,7 +20833,7 @@ var prefer_node_fs_promises_default = createRule({
20831
20833
  defaultOptions: [],
20832
20834
  create(context) {
20833
20835
  const normalizedFilename = context.filename.replaceAll("\\", "/");
20834
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text) || normalizedFilename.includes("src/rules/"))
20836
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text) || normalizedFilename.includes("src/rules/"))
20835
20837
  return {};
20836
20838
  const namespaces = /* @__PURE__ */ new Set();
20837
20839
  const bindingOf = (node) => import_utils118.ASTUtils.findVariable(context.sourceCode.getScope(node), node.name);
@@ -21252,7 +21254,7 @@ var prefer_non_nullable_collection_default = createRule({
21252
21254
  },
21253
21255
  defaultOptions: [],
21254
21256
  create(context) {
21255
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
21257
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
21256
21258
  return {};
21257
21259
  }
21258
21260
  let shapes = /* @__PURE__ */ new Map();
@@ -21470,7 +21472,7 @@ var prefer_nullish_filter_predicate_default = createRule({
21470
21472
  },
21471
21473
  defaultOptions: [],
21472
21474
  create(context) {
21473
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
21475
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
21474
21476
  let services;
21475
21477
  try {
21476
21478
  services = import_utils120.ESLintUtils.getParserServices(context);
@@ -22032,7 +22034,7 @@ var prefer_schema_for_api_payload_default = createRule({
22032
22034
  },
22033
22035
  defaultOptions: [],
22034
22036
  create(context) {
22035
- if (isTestFile(context.filename) || isScriptFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
22037
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
22036
22038
  return {};
22037
22039
  }
22038
22040
  const unvalidatedVariables = /* @__PURE__ */ new Set();
@@ -22339,7 +22341,7 @@ var prefer_shared_zod_enum_default = createRule({
22339
22341
  },
22340
22342
  defaultOptions: [],
22341
22343
  create(context) {
22342
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
22344
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
22343
22345
  const zodBindings = /* @__PURE__ */ new Set();
22344
22346
  const bindingOf = (node) => import_utils124.ASTUtils.findVariable(context.sourceCode.getScope(node), node.name);
22345
22347
  const candidates = /* @__PURE__ */ new Map();
@@ -22427,7 +22429,7 @@ var prefer_switch_for_repeated_equality_default = createRule({
22427
22429
  },
22428
22430
  defaultOptions: [],
22429
22431
  create(context) {
22430
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
22432
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
22431
22433
  return {
22432
22434
  IfStatement(node) {
22433
22435
  if (node.parent.type === import_utils125.AST_NODE_TYPES.IfStatement && node.parent.alternate === node) return;
@@ -23323,7 +23325,7 @@ var prefer_whole_object_assertion_default = createRule({
23323
23325
  },
23324
23326
  defaultOptions: [],
23325
23327
  create(context) {
23326
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
23328
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
23327
23329
  return {};
23328
23330
  }
23329
23331
  const { sourceCode } = context;
@@ -23665,7 +23667,7 @@ var repeated_static_call_cases_default = createRule({
23665
23667
  defaultOptions: [],
23666
23668
  create(context) {
23667
23669
  const sourceCode = context.sourceCode;
23668
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
23670
+ if (!isTestFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
23669
23671
  const duplicateGroups = /* @__PURE__ */ new Map();
23670
23672
  const pending = [];
23671
23673
  return {
@@ -24174,7 +24176,7 @@ var prefer_zod_infer_default = createRule({
24174
24176
  (source) => new RegExp(source, "u")
24175
24177
  );
24176
24178
  const requireIdenticalShape = optionsArg?.requireIdenticalShape ?? true;
24177
- if (isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
24179
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
24178
24180
  return {};
24179
24181
  }
24180
24182
  const zodNamespaces = /* @__PURE__ */ new Set();
@@ -24494,7 +24496,7 @@ var named_child_schema_type_default = createRule({
24494
24496
  defaultOptions: [],
24495
24497
  create(context) {
24496
24498
  const source = context.sourceCode;
24497
- if (isGeneratedFile(context.filename, source.text)) return {};
24499
+ if (isGeneratedFile(context, source.text)) return {};
24498
24500
  const namespaces = /* @__PURE__ */ new Set();
24499
24501
  const bindingOf = (node) => import_utils131.ASTUtils.findVariable(source.getScope(node), node.name);
24500
24502
  function namespaceOf(type) {
@@ -24969,7 +24971,7 @@ function reportCandidates(context, services, schemas, candidates, zodNamespaces,
24969
24971
  const declaration = handWrittenObjectDeclaration(contractSymbol);
24970
24972
  if (declaration === null || declaration.getSourceFile().isDeclarationFile) return;
24971
24973
  const source = declaration.getSourceFile();
24972
- if (isGeneratedFile(source.fileName, source.text)) return;
24974
+ if (isGeneratedFile({ filename: source.fileName, cwd: context.cwd }, source.text)) return;
24973
24975
  const tsOutput = services.esTreeNodeToTSNodeMap.get(candidate2.output);
24974
24976
  const parsed = checker.getTypeAtLocation(tsOutput);
24975
24977
  if (hasAuthoritativeOutputContract(checker, tsOutput, contractSymbol)) return;
@@ -25051,7 +25053,7 @@ var prefer_zod_parse_output_type_default = createRule({
25051
25053
  },
25052
25054
  defaultOptions: [],
25053
25055
  create(context) {
25054
- if (isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
25056
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
25055
25057
  return {};
25056
25058
  }
25057
25059
  let services;
@@ -25345,7 +25347,7 @@ var require_fetch_timeout_default = createRule({
25345
25347
  },
25346
25348
  defaultOptions: [{}],
25347
25349
  create(context, [optionsArg]) {
25348
- if (isTestFile(context.filename) || isScriptFile(context.filename)) {
25350
+ if (isTestFile(context) || isScriptFile(context)) {
25349
25351
  return {};
25350
25352
  }
25351
25353
  const allowIn = optionsArg?.allowIn ?? [];
@@ -25497,7 +25499,7 @@ var require_interface_for_exported_class_default = createRule({
25497
25499
  },
25498
25500
  defaultOptions: [],
25499
25501
  create(context) {
25500
- if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
25502
+ if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
25501
25503
  return {
25502
25504
  "Program:exit"(program) {
25503
25505
  const classes = /* @__PURE__ */ new Map();
@@ -25818,7 +25820,7 @@ var require_sql_access_class_default = createRule({
25818
25820
  },
25819
25821
  defaultOptions: [],
25820
25822
  create(context) {
25821
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text))
25823
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text))
25822
25824
  return {};
25823
25825
  function knownNonDatabase(node, seen = /* @__PURE__ */ new Set()) {
25824
25826
  const unwrappedNodeCallee = node.type === "CallExpression" || node.type === "NewExpression" ? unwrapExpression(node.callee) : null;
@@ -26245,7 +26247,7 @@ var require_zod_form_validation_default = createRule({
26245
26247
  },
26246
26248
  defaultOptions: [],
26247
26249
  create(context) {
26248
- if (isTestFile(context.filename)) {
26250
+ if (isTestFile(context)) {
26249
26251
  return {};
26250
26252
  }
26251
26253
  const zodBindings = /* @__PURE__ */ new Set();
@@ -26540,7 +26542,7 @@ var store_insert_requires_on_conflict_default = createRule({
26540
26542
  },
26541
26543
  defaultOptions: [],
26542
26544
  create(context) {
26543
- if (isTestFile(context.filename)) {
26545
+ if (isTestFile(context)) {
26544
26546
  return {};
26545
26547
  }
26546
26548
  return createSqlListener((sql, node) => {
@@ -27088,7 +27090,7 @@ var stepdown_default = createRule({
27088
27090
  },
27089
27091
  defaultOptions: [],
27090
27092
  create(context) {
27091
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
27093
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27092
27094
  const classes = [];
27093
27095
  const functionBodies = [];
27094
27096
  return {
@@ -27263,7 +27265,7 @@ function createSourceCoupledRule(name, documentation, sourceSuffixRe) {
27263
27265
  },
27264
27266
  defaultOptions: [],
27265
27267
  create(context) {
27266
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
27268
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27267
27269
  const scopes = [newScope()];
27268
27270
  const reportedOrigins = /* @__PURE__ */ new Set();
27269
27271
  const currentScope = () => scopes.at(-1) ?? scopes[0];
@@ -27363,7 +27365,7 @@ function createSourceCoupledRule(name, documentation, sourceSuffixRe) {
27363
27365
  };
27364
27366
  const sourcePathValue = (value) => {
27365
27367
  const normalized = import_node_path3.posix.normalize(value.replaceAll("\\", "/"));
27366
- return sourceSuffixRe.test(normalized) && !REPRESENTATION_DIR_RE.test(normalized) && !isGeneratedFile(normalized);
27368
+ return sourceSuffixRe.test(normalized) && !REPRESENTATION_DIR_RE.test(normalized) && !isGeneratedFile({ filename: normalized, cwd: context.cwd });
27367
27369
  };
27368
27370
  const rawRead = (node) => {
27369
27371
  const current = unwrap6(node);
@@ -27655,7 +27657,7 @@ var sole_export_matches_filename_default = createRule({
27655
27657
  create(context) {
27656
27658
  const fileStem = stem3(context.filename);
27657
27659
  const normalizedFilename = context.filename.replaceAll("\\", "/");
27658
- if (EXCLUDED_STEMS.has(fileStem) || GENERIC_MODULE_STEMS.has(fileStem) || context.filename.endsWith(".d.ts") || isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
27660
+ if (EXCLUDED_STEMS.has(fileStem) || GENERIC_MODULE_STEMS.has(fileStem) || context.filename.endsWith(".d.ts") || isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27659
27661
  let hasCommonJsExport = false;
27660
27662
  return {
27661
27663
  "CallExpression, MemberExpression"(node) {
@@ -27952,7 +27954,7 @@ var require_pascal_case_zod_schema_name_default = createRule({
27952
27954
  const binding = resolvedBinding(root);
27953
27955
  return binding !== null && zodBindings.has(binding);
27954
27956
  }
27955
- if (isTestFile(context.filename) || BENCHMARK_PATH_RE2.test(context.filename.replaceAll("\\", "/")) || isGeneratedFile(context.filename, context.sourceCode.text)) {
27957
+ if (isTestFile(context) || BENCHMARK_PATH_RE2.test(context.filename.replaceAll("\\", "/")) || isGeneratedFile(context, context.sourceCode.text)) {
27956
27958
  return {};
27957
27959
  }
27958
27960
  return {