@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.js CHANGED
@@ -303,7 +303,7 @@ var TEST_INTEGRATION_BASENAME_RE = /\.integration\.[cm]?[jt]sx?$/;
303
303
  var TEST_DIR_RE = /(^|\/)(tests?|__tests__|__mocks__|fixtures|__fixtures__|__testfixtures__|e2e|integration)\//;
304
304
  var FIXTURE_TREE_RE = /(^|\/)fixture\//;
305
305
  function isTestFile(filename, gates = []) {
306
- const normalized = filename.replaceAll("\\", "/");
306
+ const normalized = scopedFilename(filename);
307
307
  const base = normalized.slice(normalized.lastIndexOf("/") + 1);
308
308
  if (TEST_BASENAME_RE.test(base) || TEST_INTEGRATION_BASENAME_RE.test(base)) {
309
309
  return true;
@@ -314,14 +314,14 @@ function isTestFile(filename, gates = []) {
314
314
  return gates.includes("fixtureTree") && FIXTURE_TREE_RE.test(normalized);
315
315
  }
316
316
  function isStoryFile(filename, gates = []) {
317
- const normalized = filename.replaceAll("\\", "/");
317
+ const normalized = scopedFilename(filename);
318
318
  if (STORY_FILE_RE.test(normalized)) {
319
319
  return true;
320
320
  }
321
321
  return gates.includes("storyTree") && STORY_TREE_RE.test(normalized);
322
322
  }
323
323
  function isGeneratedFile(filename, sourceText = "", gates = []) {
324
- const normalized = filename.replaceAll("\\", "/");
324
+ const normalized = scopedFilename(filename);
325
325
  if (GENERATED_FILE_RE.test(normalized)) {
326
326
  return true;
327
327
  }
@@ -370,7 +370,10 @@ function leadingCommentBodies(sourceText) {
370
370
  return bodies;
371
371
  }
372
372
  function isScriptFile(filename) {
373
- return SCRIPT_FILE_RE.test(filename);
373
+ return SCRIPT_FILE_RE.test(scopedFilename(filename));
374
+ }
375
+ function scopedFilename(input) {
376
+ return (typeof input === "string" ? input : input.filename).replaceAll("\\", "/");
374
377
  }
375
378
  function matchesAnyPattern(filename, patterns) {
376
379
  const normalized = filename.replaceAll("\\", "/");
@@ -641,7 +644,7 @@ var no_credential_in_browser_storage_default = createRule({
641
644
  },
642
645
  defaultOptions: [],
643
646
  create(context) {
644
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
647
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
645
648
  const { sourceCode } = context;
646
649
  const report2 = (node, key) => {
647
650
  if (key !== null && isAuthSecretName(key) && !tokenize(key).some((word) => METADATA_WORDS.has(word))) {
@@ -762,7 +765,7 @@ var no_numeric_search_param_coercion_default = createRule({
762
765
  },
763
766
  defaultOptions: [],
764
767
  create(context) {
765
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename)) return {};
768
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context)) return {};
766
769
  let services;
767
770
  try {
768
771
  services = ESLintUtils2.getParserServices(context);
@@ -819,7 +822,7 @@ function isSearchParamReceiver(call, services) {
819
822
  // package.json
820
823
  var package_default = {
821
824
  name: "@sarj/eslint-plugin",
822
- version: "16.22.3",
825
+ version: "16.23.1",
823
826
  packageManager: "npm@12.2.0",
824
827
  description: "Custom ESLint rules for hypermodern TypeScript / React / Next.js projects",
825
828
  type: "module",
@@ -854,7 +857,7 @@ var package_default = {
854
857
  scripts: {
855
858
  build: "tsup",
856
859
  dogfood: "npm run build && npm run dogfood:built",
857
- lint: "eslint . ../../.github/scripts ../standards/src ../standards/eslint.config.mts --max-warnings 0",
860
+ 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',
858
861
  prepack: "npm run build && npm run verify-package",
859
862
  test: "vitest run",
860
863
  typecheck: "tsc --noEmit && tsc --project tsconfig.tools.json",
@@ -991,49 +994,52 @@ function memberName(node) {
991
994
  if (ts.isElementAccessExpression(node) && ts.isStringLiteralLike(node.argumentExpression)) return node.argumentExpression.text;
992
995
  return null;
993
996
  }
994
- function ownedSource(source) {
995
- return !source.isDeclarationFile && !/(?:^|[/\\])(?:node_modules|vendor|vendored|generated|dist)(?:[/\\])/u.test(source.fileName) && !isGeneratedFile(source.fileName, source.text);
997
+ function ownedSource(source, cwd) {
998
+ const path = { filename: source.fileName, cwd };
999
+ return !source.isDeclarationFile && !/(?:^|[/\\])(?:node_modules|vendor|vendored|generated|dist)(?:[/\\])/u.test(scopedFilename(path)) && !isGeneratedFile(path, source.text);
996
1000
  }
997
- function escapedClasses(program, checker) {
998
- const cached = ESCAPED_CLASSES.get(program);
1001
+ function escapedClasses(program, checker, cwd) {
1002
+ const scopes = ESCAPED_CLASSES.get(program) ?? /* @__PURE__ */ new Map();
1003
+ const cached = scopes.get(cwd);
999
1004
  if (cached !== void 0) return cached;
1000
1005
  const escaped = /* @__PURE__ */ new Set();
1001
1006
  const namespaceValues = /* @__PURE__ */ new Map();
1002
1007
  function visit(node) {
1003
1008
  if (ts.isTypeNode(node) || ts.isImportDeclaration(node)) return;
1004
1009
  if (ts.isIdentifier(node) || ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {
1005
- recordEscapedReference(checker, node, escaped, namespaceValues);
1010
+ recordEscapedReference(checker, node, escaped, namespaceValues, cwd);
1006
1011
  }
1007
1012
  ts.forEachChild(node, visit);
1008
1013
  }
1009
- for (const source of program.getSourceFiles()) if (ownedSource(source)) visit(source);
1010
- ESCAPED_CLASSES.set(program, escaped);
1014
+ for (const source of program.getSourceFiles()) if (ownedSource(source, cwd)) visit(source);
1015
+ scopes.set(cwd, escaped);
1016
+ ESCAPED_CLASSES.set(program, scopes);
1011
1017
  return escaped;
1012
1018
  }
1013
- function recordEscapedReference(checker, node, escaped, namespaceValues) {
1019
+ function recordEscapedReference(checker, node, escaped, namespaceValues, cwd) {
1014
1020
  const symbol = canonicalSymbol(checker, node);
1015
1021
  if (symbol !== void 0) {
1016
1022
  let values = namespaceValues.get(symbol);
1017
1023
  if (values === void 0) {
1018
- values = ownedClassValues(checker, symbol);
1024
+ values = ownedClassValues(checker, symbol, cwd);
1019
1025
  namespaceValues.set(symbol, values);
1020
1026
  }
1021
1027
  if (!namespacePrefix(symbol, node) && !safeClassReference(node)) for (const value of values) escaped.add(value);
1022
1028
  }
1023
1029
  if (ts.isElementAccessExpression(node) && !safeClassReference(node)) {
1024
1030
  const receiver = canonicalSymbol(checker, node.expression) ?? checker.getTypeAtLocation(node.expression).getSymbol();
1025
- if (receiver !== void 0) for (const value of ownedClassValues(checker, receiver)) escaped.add(value);
1031
+ if (receiver !== void 0) for (const value of ownedClassValues(checker, receiver, cwd)) escaped.add(value);
1026
1032
  }
1027
1033
  }
1028
- function ownedClassValues(checker, original, seen = /* @__PURE__ */ new Set()) {
1034
+ function ownedClassValues(checker, original, cwd, seen = /* @__PURE__ */ new Set()) {
1029
1035
  const symbol = original.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(original) : original;
1030
1036
  const values = /* @__PURE__ */ new Set();
1031
1037
  if (seen.has(symbol)) return values;
1032
1038
  seen.add(symbol);
1033
- if (symbol.declarations?.some((declaration) => ts.isClassDeclaration(declaration) && ownedSource(declaration.getSourceFile()))) values.add(symbol);
1034
- if (symbol.declarations?.some((declaration) => (ts.isSourceFile(declaration) || ts.isModuleDeclaration(declaration)) && ownedSource(declaration.getSourceFile()))) {
1039
+ if (symbol.declarations?.some((declaration) => ts.isClassDeclaration(declaration) && ownedSource(declaration.getSourceFile(), cwd))) values.add(symbol);
1040
+ if (symbol.declarations?.some((declaration) => (ts.isSourceFile(declaration) || ts.isModuleDeclaration(declaration)) && ownedSource(declaration.getSourceFile(), cwd))) {
1035
1041
  for (const exported of checker.getExportsOfModule(symbol)) {
1036
- for (const value of ownedClassValues(checker, exported, seen)) values.add(value);
1042
+ for (const value of ownedClassValues(checker, exported, cwd, seen)) values.add(value);
1037
1043
  }
1038
1044
  }
1039
1045
  return values;
@@ -1049,7 +1055,7 @@ function namespacePrefix(symbol, node) {
1049
1055
  const memberCall = (ts.isPropertyAccessExpression(parent) || ts.isElementAccessExpression(parent)) && ts.isCallExpression(parent.parent) && parent.parent.expression === parent;
1050
1056
  return !symbol.declarations?.some(ts.isClassDeclaration) && (ts.isPropertyAccessExpression(parent) || ts.isElementAccessExpression(parent)) && parent.expression === node && !memberCall;
1051
1057
  }
1052
- function closedNominalBoundary(program, checker, call, consumer, missing) {
1058
+ function closedNominalBoundary(program, checker, call, consumer, missing, cwd) {
1053
1059
  const { implementation, contractSymbol } = missing;
1054
1060
  const implementationSymbol = implementation.name === void 0 ? void 0 : canonicalSymbol(checker, implementation.name);
1055
1061
  const consumerSymbol = consumer.name === void 0 ? void 0 : canonicalSymbol(checker, consumer.name);
@@ -1058,7 +1064,7 @@ function closedNominalBoundary(program, checker, call, consumer, missing) {
1058
1064
  if (contract === void 0) return false;
1059
1065
  const targets = /* @__PURE__ */ new Set([consumerSymbol, ...classHierarchySymbols(checker, contract), ...classHierarchySymbols(checker, implementation)]);
1060
1066
  const sources = /* @__PURE__ */ new Set([call.getSourceFile(), consumer.getSourceFile(), implementation.getSourceFile(), ...contractSymbol.declarations?.map((item) => item.getSourceFile()) ?? []]);
1061
- return ![...sources].some(hasPrototypeMutation) && ![...targets].some((target) => escapedClasses(program, checker).has(target));
1067
+ return ![...sources].some(hasPrototypeMutation) && ![...targets].some((target) => escapedClasses(program, checker, cwd).has(target));
1062
1068
  }
1063
1069
  function classHierarchySymbols(checker, declaration, seen = /* @__PURE__ */ new Set()) {
1064
1070
  const symbol = declaration.name === void 0 ? void 0 : canonicalSymbol(checker, declaration.name);
@@ -1181,7 +1187,7 @@ var require_explicit_contract_implementation_default = createRule({
1181
1187
  },
1182
1188
  defaultOptions: [],
1183
1189
  create(context) {
1184
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
1190
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
1185
1191
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
1186
1192
  const services = ESLintUtils3.getParserServices(context);
1187
1193
  const checker = services.program.getTypeChecker();
@@ -1199,7 +1205,7 @@ var require_explicit_contract_implementation_default = createRule({
1199
1205
  if (parameter === void 0) continue;
1200
1206
  const tsArgument = services.esTreeNodeToTSNodeMap.get(argument);
1201
1207
  const missing = missingImplementation(checker, signature, parameter, tsNode, tsArgument);
1202
- if (missing === null || !closedNominalBoundary(services.program, checker, tsNode, consumer, missing)) continue;
1208
+ if (missing === null || !closedNominalBoundary(services.program, checker, tsNode, consumer, missing, context.cwd)) continue;
1203
1209
  context.report({
1204
1210
  node: argument,
1205
1211
  messageId: "declareActualContract",
@@ -1798,9 +1804,8 @@ var require_port_for_service_default = createRule({
1798
1804
  },
1799
1805
  defaultOptions: [],
1800
1806
  create(context) {
1801
- const { filename } = context;
1802
- if (isTestFile(filename) || isStoryFile(filename) || isScriptFile(filename)) return {};
1803
- if (isGeneratedFile(filename, context.sourceCode.getText())) return {};
1807
+ if (isTestFile(context) || isStoryFile(context) || isScriptFile(context)) return {};
1808
+ if (isGeneratedFile(context, context.sourceCode.getText())) return {};
1804
1809
  let declaredTypes = null;
1805
1810
  const detachedExports = detachedValueExports(context.sourceCode.ast);
1806
1811
  const localClasses = localClassAbstractness(context.sourceCode.ast);
@@ -2075,14 +2080,14 @@ var require_explicit_service_contract_default = createRule({
2075
2080
  },
2076
2081
  defaultOptions: [],
2077
2082
  create(context) {
2078
- if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2083
+ if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isGeneratedFile(context, context.sourceCode.text)) return {};
2079
2084
  const program = context.sourceCode.ast;
2080
2085
  const operationsFor = createServiceOperationResolver(program);
2081
2086
  const isExportedServiceClass = createExportedServiceClassResolver(program);
2082
2087
  return {
2083
2088
  ClassDeclaration(node) {
2084
2089
  if (node.id === null || node.abstract || node.decorators.length > 0 || !isServiceRole(node.id.name, context.filename)) return;
2085
- if (isExportedServiceClass(node) && !isTestFile(context.filename) && !isStoryFile(context.filename) && !isScriptFile(context.filename)) return;
2090
+ if (isExportedServiceClass(node) && !isTestFile(context) && !isStoryFile(context) && !isScriptFile(context)) return;
2086
2091
  const operations = operationsFor(node);
2087
2092
  if (operations.length === 0 || hasDeclaredServiceContract(node, operations, program) !== false) return;
2088
2093
  context.report({
@@ -2164,7 +2169,7 @@ var no_conditional_empty_object_spread_default = createRule({
2164
2169
  },
2165
2170
  defaultOptions: [],
2166
2171
  create(context) {
2167
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2172
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2168
2173
  return {
2169
2174
  SpreadElement(node) {
2170
2175
  if (node.parent.type !== AST_NODE_TYPES8.ObjectExpression || node.argument.type !== AST_NODE_TYPES8.ConditionalExpression)
@@ -2240,7 +2245,7 @@ var prefer_typed_reflection_default = createRule({
2240
2245
  },
2241
2246
  defaultOptions: [],
2242
2247
  create(context) {
2243
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2248
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2244
2249
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap)
2245
2250
  return {};
2246
2251
  const services = ESLintUtils4.getParserServices(context);
@@ -2360,7 +2365,7 @@ var no_broad_return_type_default = createRule({
2360
2365
  },
2361
2366
  defaultOptions: [],
2362
2367
  create(context) {
2363
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2368
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2364
2369
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap)
2365
2370
  return {};
2366
2371
  const services = ESLintUtils5.getParserServices(context);
@@ -2436,7 +2441,7 @@ var no_reduce_accumulator_copy_default = createRule({
2436
2441
  } },
2437
2442
  defaultOptions: [],
2438
2443
  create(context) {
2439
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2444
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2440
2445
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
2441
2446
  const services = ESLintUtils6.getParserServices(context);
2442
2447
  const program = services.program;
@@ -2523,7 +2528,7 @@ var no_known_value_widening_default = createRule({
2523
2528
  },
2524
2529
  defaultOptions: [],
2525
2530
  create(context) {
2526
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
2531
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
2527
2532
  if (!context.sourceCode.parserServices?.program || !context.sourceCode.parserServices.esTreeNodeToTSNodeMap) return {};
2528
2533
  const services = ESLintUtils7.getParserServices(context);
2529
2534
  if (services.program === null) return {};
@@ -2577,7 +2582,7 @@ var no_invalid_typed_mutation_default = createRule({
2577
2582
  },
2578
2583
  defaultOptions: [],
2579
2584
  create(context) {
2580
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2585
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2581
2586
  const services = ESLintUtils8.getParserServices(context);
2582
2587
  const checker = services.program.getTypeChecker();
2583
2588
  const candidates = [];
@@ -2982,7 +2987,7 @@ var no_contradictory_type_predicate_default = createRule({
2982
2987
  },
2983
2988
  defaultOptions: [],
2984
2989
  create(context) {
2985
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2990
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
2986
2991
  const services = ESLintUtils9.getParserServices(context);
2987
2992
  const checker = services.program.getTypeChecker();
2988
2993
  const uncheckedArray = contradictoryArrayPredicate(context.sourceCode, services);
@@ -3143,7 +3148,7 @@ var no_partial_type_predicate_default = createRule({
3143
3148
  },
3144
3149
  defaultOptions: [],
3145
3150
  create(context) {
3146
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3151
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3147
3152
  const services = ESLintUtils10.getParserServices(context);
3148
3153
  function inspect(node) {
3149
3154
  const predicate = primitivePredicate(node, services);
@@ -3580,7 +3585,7 @@ var no_boolean_selector_parameter_default = createRule({
3580
3585
  },
3581
3586
  defaultOptions: [],
3582
3587
  create(context) {
3583
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3588
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3584
3589
  const services = ESLintUtils11.getParserServices(context);
3585
3590
  const reported = /* @__PURE__ */ new Set();
3586
3591
  function report2(identifier) {
@@ -3670,7 +3675,7 @@ var no_invalid_zod_custom_parse_default = createRule({
3670
3675
  },
3671
3676
  defaultOptions: [],
3672
3677
  create(context) {
3673
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3678
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3674
3679
  const services = ESLintUtils12.getParserServices(context);
3675
3680
  const checker = services.program.getTypeChecker();
3676
3681
  const options = services.program.getCompilerOptions();
@@ -3787,7 +3792,7 @@ var no_contradictory_overload_return_default = createRule({
3787
3792
  },
3788
3793
  defaultOptions: [],
3789
3794
  create(context) {
3790
- if (isGeneratedFile(context.filename, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3795
+ if (isGeneratedFile(context, context.sourceCode.text) || !context.sourceCode.parserServices?.program) return {};
3791
3796
  const services = ESLintUtils13.getParserServices(context);
3792
3797
  const checker = services.program.getTypeChecker();
3793
3798
  const options = services.program.getCompilerOptions();
@@ -4141,7 +4146,7 @@ var require_button_accessible_name_default = createRule({
4141
4146
  },
4142
4147
  defaultOptions: [{}],
4143
4148
  create(context, [options]) {
4144
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4149
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4145
4150
  return {};
4146
4151
  const iconModules = options?.iconModules ?? ["lucide-react"];
4147
4152
  return {
@@ -4219,7 +4224,7 @@ var require_camelcase_properties_default = createRule({
4219
4224
  },
4220
4225
  defaultOptions: [],
4221
4226
  create(context) {
4222
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
4227
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
4223
4228
  const checkProperty = (node) => {
4224
4229
  if (node.computed === true || node.key.type !== AST_NODE_TYPES23.Identifier) return;
4225
4230
  if (!SNAKE_CASE_RE.test(node.key.name)) return;
@@ -4298,7 +4303,7 @@ var require_svg_accessible_name_default = createRule({
4298
4303
  },
4299
4304
  defaultOptions: [],
4300
4305
  create(context) {
4301
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4306
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4302
4307
  return {};
4303
4308
  return {
4304
4309
  JSXElement(node) {
@@ -4459,7 +4464,7 @@ var prefer_logical_tailwind_utilities_default = createRule({
4459
4464
  },
4460
4465
  defaultOptions: [{ enabled: true, checkInsets: false, allowUtilities: [] }],
4461
4466
  create(context, [options]) {
4462
- if (options?.enabled === false || isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename))
4467
+ if (options?.enabled === false || isGeneratedFile(context, context.sourceCode.text) || isTestFile(context) || isStoryFile(context))
4463
4468
  return {};
4464
4469
  return {
4465
4470
  JSXOpeningElement(node) {
@@ -4610,7 +4615,7 @@ var no_unlocalized_toast_default = createRule({
4610
4615
  },
4611
4616
  defaultOptions: [{ enabled: true }],
4612
4617
  create(context, [options]) {
4613
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4618
+ if (localizationExcluded(context, context.sourceCode.text, options))
4614
4619
  return {};
4615
4620
  const functions = options?.functions ?? [
4616
4621
  { module: "sonner", export: "toast" },
@@ -4722,7 +4727,7 @@ var no_unlocalized_jsx_attributes_default = createRule({
4722
4727
  },
4723
4728
  defaultOptions: [{ enabled: true }],
4724
4729
  create(context, [options]) {
4725
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4730
+ if (localizationExcluded(context, context.sourceCode.text, options))
4726
4731
  return {};
4727
4732
  const attributes = options?.attributes ?? [
4728
4733
  "title",
@@ -4800,7 +4805,7 @@ var no_unlocalized_jsx_text_default = createRule({
4800
4805
  },
4801
4806
  defaultOptions: [{ enabled: true }],
4802
4807
  create(context, [options]) {
4803
- if (localizationExcluded(context.filename, context.sourceCode.text, options))
4808
+ if (localizationExcluded(context, context.sourceCode.text, options))
4804
4809
  return {};
4805
4810
  return {
4806
4811
  JSXText(node) {
@@ -5092,7 +5097,7 @@ var enforce_file_structure_default = createRule({
5092
5097
  },
5093
5098
  defaultOptions: [],
5094
5099
  create(context) {
5095
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
5100
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
5096
5101
  return {};
5097
5102
  }
5098
5103
  return {
@@ -5474,7 +5479,7 @@ var duplicate_test_body_default = createRule({
5474
5479
  },
5475
5480
  defaultOptions: [],
5476
5481
  create(context) {
5477
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
5482
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
5478
5483
  return {};
5479
5484
  }
5480
5485
  const siblings = /* @__PURE__ */ new Map();
@@ -5716,7 +5721,7 @@ var excessive_commentary_default = createRule({
5716
5721
  create(context) {
5717
5722
  return {
5718
5723
  Program() {
5719
- for (const group of proseGroups(context.filename, context.sourceCode)) {
5724
+ for (const group of proseGroups(context, context.sourceCode)) {
5720
5725
  const lines = lineCount(group.text);
5721
5726
  const words2 = wordCount(group.text);
5722
5727
  if (isJSDoc(group.comment)) {
@@ -6507,7 +6512,7 @@ var no_comment_cruft_default = createRule({
6507
6512
  },
6508
6513
  defaultOptions: [],
6509
6514
  create(context) {
6510
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
6515
+ if (isGeneratedFile(context, context.sourceCode.text)) {
6511
6516
  return {};
6512
6517
  }
6513
6518
  const sourceCode = context.sourceCode;
@@ -6606,7 +6611,7 @@ var no_comment_cruft_default = createRule({
6606
6611
  return {
6607
6612
  Program() {
6608
6613
  const comments = sourceCode.getAllComments();
6609
- const callMatrixStems = isTestFile(context.filename) ? testCallMatrixStems(comments) : /* @__PURE__ */ new Set();
6614
+ const callMatrixStems = isTestFile(context) ? testCallMatrixStems(comments) : /* @__PURE__ */ new Set();
6610
6615
  const walls = findCommentWalls(comments);
6611
6616
  const wallByLeader = new Map(walls.map((wall) => [wall.leader, wall]));
6612
6617
  const wallMembers = new Set(walls.flatMap((wall) => [...wall.members]));
@@ -7055,7 +7060,7 @@ var no_duplicate_lifecycle_refresh_listeners_default = createRule({
7055
7060
  },
7056
7061
  defaultOptions: [],
7057
7062
  create(context) {
7058
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
7063
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
7059
7064
  const routerHooks = /* @__PURE__ */ new Set();
7060
7065
  const routers = /* @__PURE__ */ new Set();
7061
7066
  const functionCallbacks = /* @__PURE__ */ new Map();
@@ -7726,7 +7731,7 @@ var no_enum_default = createRule({
7726
7731
  const filename = context.filename;
7727
7732
  const sourceText = context.sourceCode.getText();
7728
7733
  const isIgnoredByOption = ignoreFiles.length > 0 && matchesAnyPattern(filename, ignoreFiles);
7729
- if (isIgnoredByOption || isGeneratedFile(filename, sourceText)) {
7734
+ if (isIgnoredByOption || isGeneratedFile(context, sourceText)) {
7730
7735
  return {};
7731
7736
  }
7732
7737
  return {
@@ -7880,7 +7885,7 @@ var no_excessive_cognitive_complexity_default = createRule({
7880
7885
  },
7881
7886
  defaultOptions: [],
7882
7887
  create(context) {
7883
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
7888
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
7884
7889
  function check(node) {
7885
7890
  const points = functionComplexity(node, context.sourceCode.visitorKeys);
7886
7891
  const score = points.reduce((sum, point) => sum + point.amount, 0);
@@ -8281,7 +8286,7 @@ var no_fat_try_blocks_default = createRule({
8281
8286
  },
8282
8287
  defaultOptions: [{ max: MAX_TRY_BODY_STATEMENTS }],
8283
8288
  create(context, [options]) {
8284
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
8289
+ if (isGeneratedFile(context, context.sourceCode.text)) {
8285
8290
  return {};
8286
8291
  }
8287
8292
  const sourceCode = context.sourceCode;
@@ -8459,7 +8464,7 @@ var no_hand_rolled_sleep_default = createRule({
8459
8464
  defaultOptions: [{}],
8460
8465
  create(context, [optionsArg]) {
8461
8466
  const { filename, sourceCode } = context;
8462
- if (isTestFile(filename) || isScriptFile(filename) || isGeneratedFile(filename, sourceCode.getText())) {
8467
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, sourceCode.getText())) {
8463
8468
  return {};
8464
8469
  }
8465
8470
  const allowIn = optionsArg?.allowIn ?? [];
@@ -8606,7 +8611,7 @@ var no_hand_rolled_spinner_default = createRule({
8606
8611
  },
8607
8612
  defaultOptions: [],
8608
8613
  create(context) {
8609
- if (DESIGN_SYSTEM_PATH.test(context.filename) || isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
8614
+ if (DESIGN_SYSTEM_PATH.test(context.filename) || isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
8610
8615
  return {};
8611
8616
  }
8612
8617
  return {
@@ -8727,7 +8732,7 @@ var no_insecure_random_id_default = createRule({
8727
8732
  },
8728
8733
  defaultOptions: [],
8729
8734
  create(context) {
8730
- if (isTestFile(context.filename)) {
8735
+ if (isTestFile(context)) {
8731
8736
  return {};
8732
8737
  }
8733
8738
  return {
@@ -8820,7 +8825,7 @@ var no_detached_global_fetch_default = createRule({
8820
8825
  defaultOptions: [],
8821
8826
  create(context) {
8822
8827
  const sourceCode = context.sourceCode;
8823
- if (isTestFile(context.filename) || isScriptFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
8828
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
8824
8829
  const aliases = /* @__PURE__ */ new Set();
8825
8830
  function bindingOf(identifier) {
8826
8831
  return ASTUtils24.findVariable(sourceCode.getScope(identifier), identifier.name);
@@ -8978,7 +8983,7 @@ var no_exception_text_in_5xx_response_default = createRule({
8978
8983
  defaultOptions: [],
8979
8984
  create(context) {
8980
8985
  const sourceCode = context.sourceCode;
8981
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
8986
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
8982
8987
  const candidates = [];
8983
8988
  const changedErrors = /* @__PURE__ */ new Set();
8984
8989
  const stableBindings = /* @__PURE__ */ new WeakMap();
@@ -9710,7 +9715,7 @@ var no_json_stringify_object_equality_default = createRule({
9710
9715
  defaultOptions: [],
9711
9716
  create(context) {
9712
9717
  const sourceCode = context.sourceCode;
9713
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) {
9718
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.text)) {
9714
9719
  return {};
9715
9720
  }
9716
9721
  let services;
@@ -9907,7 +9912,7 @@ var no_impossible_zod_literal_bounds_default = createRule({
9907
9912
  defaultOptions: [{}],
9908
9913
  create(context, [options]) {
9909
9914
  const sourceCode = context.sourceCode;
9910
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
9915
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
9911
9916
  return {};
9912
9917
  }
9913
9918
  const namespaces = /* @__PURE__ */ new Set();
@@ -10188,7 +10193,7 @@ var no_in_operator_on_built_in_collections_default = createRule({
10188
10193
  },
10189
10194
  defaultOptions: [],
10190
10195
  create(context) {
10191
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
10196
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
10192
10197
  let services;
10193
10198
  try {
10194
10199
  services = ESLintUtils15.getParserServices(context);
@@ -10320,7 +10325,7 @@ var no_redundant_optional_array_default_default = createRule({
10320
10325
  defaultOptions: [],
10321
10326
  create(context) {
10322
10327
  const sourceCode = context.sourceCode;
10323
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
10328
+ if (isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
10324
10329
  return {};
10325
10330
  }
10326
10331
  const namespaces = /* @__PURE__ */ new Set();
@@ -10519,7 +10524,7 @@ var interface_contract_members_private_default = createRule({
10519
10524
  },
10520
10525
  defaultOptions: [],
10521
10526
  create(context) {
10522
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
10527
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
10523
10528
  let services;
10524
10529
  try {
10525
10530
  services = ESLintUtils16.getParserServices(context);
@@ -10815,7 +10820,7 @@ var no_log_only_catch_default = createRule({
10815
10820
  const above = sourceCode.getCommentsBefore(node).at(-1);
10816
10821
  return above !== void 0 && above.loc.end.line === node.loc.start.line - 1;
10817
10822
  }
10818
- if (isTestFile(filename) || BENCHMARK_DIR_RE.test(filename.replaceAll("\\", "/"))) {
10823
+ if (isTestFile(context) || BENCHMARK_DIR_RE.test(filename.replaceAll("\\", "/"))) {
10819
10824
  return {};
10820
10825
  }
10821
10826
  return {
@@ -10987,7 +10992,7 @@ var no_bare_return_from_test_catch_default = createRule({
10987
10992
  },
10988
10993
  defaultOptions: [],
10989
10994
  create(context) {
10990
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
10995
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
10991
10996
  return {
10992
10997
  ReturnStatement(node) {
10993
10998
  if (node.argument !== null) return;
@@ -11114,7 +11119,7 @@ var no_bespoke_api_case_conversion_default = createRule({
11114
11119
  create(context) {
11115
11120
  const filename = context.filename.replaceAll("\\", "/");
11116
11121
  const basename = filename.slice(filename.lastIndexOf("/") + 1);
11117
- if (!ADAPTER_BASENAME_RE.test(basename) || isGeneratedFile(filename, context.sourceCode.text) || isTestFile(filename, ["fixtureTree"])) {
11122
+ if (!ADAPTER_BASENAME_RE.test(basename) || isGeneratedFile(context, context.sourceCode.text) || isTestFile(context, ["fixtureTree"])) {
11118
11123
  return {};
11119
11124
  }
11120
11125
  const hasApiReceiver = (value) => {
@@ -11246,7 +11251,7 @@ var no_long_comment_default = createRule({
11246
11251
  if (VERSIONED_DEPENDENCY_TREE_RE.test(normalizedFilename)) return {};
11247
11252
  return {
11248
11253
  Program() {
11249
- for (const group of proseGroups(context.filename, context.sourceCode)) {
11254
+ for (const group of proseGroups(context, context.sourceCode)) {
11250
11255
  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;
11251
11256
  context.report({ node: group.comment, messageId: "tooLong" });
11252
11257
  }
@@ -11258,7 +11263,7 @@ var no_long_comment_default = createRule({
11258
11263
  // src/rules/no-vague-suppression-description.ts
11259
11264
  var ESLINT_DIRECTIVE_WITH_DESCRIPTION_RE = /^eslint-(?:disable|disable-next-line|disable-line)\b[^:\n]*?\s*(?::|--)\s*(.+?)\s*$/iu;
11260
11265
  var TS_EXPECT_ERROR_WITH_DESCRIPTION_RE = /^@ts-expect-error\b(?:(?:\s*(?::|--)\s*)|\s+)(.+?)\s*$/iu;
11261
- var VAGUE_RE = /^(?:needed|required|intentional(?:ly)?|ignore(?:d)?|false positive|type error|typescript|to satisfy (?:the )?(?:linter|typescript|type checker))\.?$/iu;
11266
+ 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;
11262
11267
  var NO_VAGUE_SUPPRESSION_DESCRIPTION_DOCUMENTATION = {
11263
11268
  summary: "Require suppression descriptions to name the concrete mismatch or invariant instead of a generic non-reason.",
11264
11269
  rationale: "Generic phrases satisfy require-description mechanically while leaving reviewers unable to audit the risk or remove stale debt.",
@@ -11267,7 +11272,7 @@ var NO_VAGUE_SUPPRESSION_DESCRIPTION_DOCUMENTATION = {
11267
11272
  limitations: [
11268
11273
  "Only ESLint disable comments and TypeScript expect-error directives are checked.",
11269
11274
  "The rule uses a small anchored vocabulary and does not score prose quality generally.",
11270
- "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."
11275
+ "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."
11271
11276
  ],
11272
11277
  examples: [
11273
11278
  {
@@ -11318,15 +11323,13 @@ var no_vague_suppression_description_default = createRule({
11318
11323
  },
11319
11324
  defaultOptions: [],
11320
11325
  create(context) {
11321
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
11322
- return {};
11323
- }
11324
11326
  return {
11325
11327
  Program() {
11326
11328
  for (const comment of context.sourceCode.getAllComments()) {
11327
11329
  const text = comment.value.trim();
11328
11330
  const description = suppressionDescription(text);
11329
- if (description === void 0 || !VAGUE_RE.test(description)) continue;
11331
+ if (description === void 0 || !VAGUE_RE.test(description))
11332
+ continue;
11330
11333
  context.report({
11331
11334
  loc: comment.loc,
11332
11335
  messageId: "vagueDescription",
@@ -11512,7 +11515,7 @@ var no_generic_single_export_module_default = createRule({
11512
11515
  create(context) {
11513
11516
  const file = fileParts(context.filename);
11514
11517
  const { stem: stem4 } = file;
11515
- if (!GENERIC_MODULE_STEMS.has(stem4) || isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
11518
+ if (!GENERIC_MODULE_STEMS.has(stem4) || isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
11516
11519
  let hasCommonJsExport = false;
11517
11520
  return {
11518
11521
  "CallExpression, MemberExpression"(node) {
@@ -11571,7 +11574,7 @@ var no_offset_pagination_default = createRule({
11571
11574
  },
11572
11575
  defaultOptions: [],
11573
11576
  create(context) {
11574
- if (isTestFile(context.filename)) {
11577
+ if (isTestFile(context)) {
11575
11578
  return {};
11576
11579
  }
11577
11580
  return createSqlListener((sql, node) => {
@@ -11840,7 +11843,7 @@ var no_positional_tuple_return_default = createRule({
11840
11843
  },
11841
11844
  defaultOptions: [],
11842
11845
  create(context) {
11843
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
11846
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
11844
11847
  const specifierExports = specifierExportedNames(context.sourceCode.ast);
11845
11848
  const typeExports = publiclyReachableTypeNames(
11846
11849
  context.sourceCode.ast,
@@ -12108,7 +12111,7 @@ var no_raw_env_default = createRule({
12108
12111
  defaultOptions: [],
12109
12112
  create(context) {
12110
12113
  const filename = context.filename;
12111
- if (isTestFile(filename) || isScriptFile(filename) || CONFIG_FILE_RE.test(filename.replaceAll("\\", "/"))) {
12114
+ if (isTestFile(context) || isScriptFile(context) || CONFIG_FILE_RE.test(filename.replaceAll("\\", "/"))) {
12112
12115
  return {};
12113
12116
  }
12114
12117
  const reads = [];
@@ -12309,7 +12312,7 @@ var no_raw_fetch_outside_clients_default = createRule({
12309
12312
  defaultOptions: [{}],
12310
12313
  create(context, [options]) {
12311
12314
  const filename = context.filename;
12312
- if (isTestFile(filename) || isScriptFile(filename) || NON_PRODUCTION_TREE_RE.test(filename)) {
12315
+ if (isTestFile(context) || isScriptFile(context) || NON_PRODUCTION_TREE_RE.test(filename)) {
12313
12316
  return {};
12314
12317
  }
12315
12318
  const patterns = options?.allow ?? DEFAULT_ALLOW;
@@ -12586,7 +12589,7 @@ var no_router_refresh_polling_default = createRule({
12586
12589
  },
12587
12590
  defaultOptions: [],
12588
12591
  create(context) {
12589
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
12592
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
12590
12593
  const routerHooks = /* @__PURE__ */ new Set();
12591
12594
  const routers = /* @__PURE__ */ new Set();
12592
12595
  const reportedCallbacks = /* @__PURE__ */ new WeakSet();
@@ -12692,7 +12695,7 @@ var no_repeated_string_literal_default = createRule({
12692
12695
  },
12693
12696
  defaultOptions: [],
12694
12697
  create(context) {
12695
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
12698
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
12696
12699
  return {};
12697
12700
  }
12698
12701
  const occurrences = /* @__PURE__ */ new Map();
@@ -12845,7 +12848,7 @@ var no_restated_comment_default = createRule({
12845
12848
  },
12846
12849
  defaultOptions: [],
12847
12850
  create(context) {
12848
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
12851
+ if (isGeneratedFile(context, context.sourceCode.text)) {
12849
12852
  return {};
12850
12853
  }
12851
12854
  const sourceCode = context.sourceCode;
@@ -13031,7 +13034,7 @@ var no_restated_jsdoc_default = createRule({
13031
13034
  },
13032
13035
  defaultOptions: [],
13033
13036
  create(context) {
13034
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
13037
+ if (isGeneratedFile(context, context.sourceCode.text)) {
13035
13038
  return {};
13036
13039
  }
13037
13040
  const sourceCode = context.sourceCode;
@@ -13366,7 +13369,7 @@ var no_secret_in_log_default = createRule({
13366
13369
  defaultOptions: [{}],
13367
13370
  create(context, [loggingOptions]) {
13368
13371
  const matcher = createLogMatcher(loggingOptions);
13369
- const blobArmApplies = !isTestFile(context.filename);
13372
+ const blobArmApplies = !isTestFile(context);
13370
13373
  function resolvesToGlobal(identifier) {
13371
13374
  const variable = ASTUtils40.findVariable(context.sourceCode.getScope(identifier), identifier.name);
13372
13375
  return variable === null || variable.defs.length === 0;
@@ -13638,7 +13641,7 @@ var no_select_star_default = createRule({
13638
13641
  },
13639
13642
  defaultOptions: [],
13640
13643
  create(context) {
13641
- if (isTestFile(context.filename)) {
13644
+ if (isTestFile(context)) {
13642
13645
  return {};
13643
13646
  }
13644
13647
  return createSqlListener((sql, node) => {
@@ -14016,7 +14019,7 @@ var no_sentinel_return_on_catch_default = createRule({
14016
14019
  },
14017
14020
  defaultOptions: [{}],
14018
14021
  create(context, [loggingOptions]) {
14019
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
14022
+ if (isGeneratedFile(context, context.sourceCode.text)) {
14020
14023
  return {};
14021
14024
  }
14022
14025
  const matcher = createLogMatcher(loggingOptions);
@@ -14256,7 +14259,7 @@ var no_silent_promise_catch_default = createRule({
14256
14259
  },
14257
14260
  defaultOptions: [],
14258
14261
  create(context) {
14259
- if (isTestFile(context.filename) || isScriptFile(context.filename)) {
14262
+ if (isTestFile(context) || isScriptFile(context)) {
14260
14263
  return {};
14261
14264
  }
14262
14265
  function isZodSchema(node, seen = /* @__PURE__ */ new Set()) {
@@ -14451,7 +14454,7 @@ var no_sleep_in_test_body_default = createRule({
14451
14454
  },
14452
14455
  defaultOptions: [],
14453
14456
  create(context) {
14454
- if (!isTestFile(context.filename)) {
14457
+ if (!isTestFile(context)) {
14455
14458
  return {};
14456
14459
  }
14457
14460
  const report2 = (node) => {
@@ -14589,7 +14592,7 @@ var no_storage_in_stateless_modules_default = createRule({
14589
14592
  },
14590
14593
  defaultOptions: [{}],
14591
14594
  create(context, [options]) {
14592
- if (isTestFile(context.filename)) {
14595
+ if (isTestFile(context)) {
14593
14596
  return {};
14594
14597
  }
14595
14598
  const modules = options?.modules ?? [];
@@ -14829,7 +14832,7 @@ var no_string_concat_in_loop_default = createRule({
14829
14832
  },
14830
14833
  defaultOptions: [],
14831
14834
  create(context) {
14832
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
14835
+ if (isGeneratedFile(context, context.sourceCode.text)) {
14833
14836
  return {};
14834
14837
  }
14835
14838
  const reported = /* @__PURE__ */ new WeakMap();
@@ -14990,7 +14993,7 @@ var no_duplicate_test_case_default = createRule({
14990
14993
  },
14991
14994
  defaultOptions: [],
14992
14995
  create(context) {
14993
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
14996
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
14994
14997
  const inspected = /* @__PURE__ */ new Set();
14995
14998
  return {
14996
14999
  CallExpression(node) {
@@ -15343,7 +15346,7 @@ var no_tautological_expect_default = createRule({
15343
15346
  },
15344
15347
  defaultOptions: [],
15345
15348
  create(context) {
15346
- if (!isTestFile(context.filename)) {
15349
+ if (!isTestFile(context)) {
15347
15350
  return {};
15348
15351
  }
15349
15352
  const customized = customizedMatchers(context.sourceCode);
@@ -15569,7 +15572,7 @@ var no_typed_doc_sections_default = createRule({
15569
15572
  create(context) {
15570
15573
  return {
15571
15574
  Program() {
15572
- for (const group of proseGroups(context.filename, context.sourceCode, true)) {
15575
+ for (const group of proseGroups(context, context.sourceCode, true)) {
15573
15576
  const signature = documentedSignature(context.sourceCode, group.comment);
15574
15577
  if (group.hasTypedTags && signature !== null && typedTags(group.text).some((tag) => isVacuousTag(tag, signature, context.sourceCode))) {
15575
15578
  context.report({ node: group.comment, messageId: "typedSection" });
@@ -15745,7 +15748,7 @@ var no_trailing_value_narration_default = createRule({
15745
15748
  },
15746
15749
  defaultOptions: [],
15747
15750
  create(context) {
15748
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
15751
+ if (isGeneratedFile(context, context.sourceCode.text)) {
15749
15752
  return {};
15750
15753
  }
15751
15754
  const sourceCode = context.sourceCode;
@@ -16019,7 +16022,7 @@ var no_declaration_comment_wall_default = createRule({
16019
16022
  create(context, [provided]) {
16020
16023
  const options = { ...WALL_DEFAULTS, ...provided };
16021
16024
  const sourceCode = context.sourceCode;
16022
- if (isGeneratedFile(context.filename, sourceCode.text) || isTestFile(context.filename) || isStoryFile(context.filename)) {
16025
+ if (isGeneratedFile(context, sourceCode.text) || isTestFile(context) || isStoryFile(context)) {
16023
16026
  return {};
16024
16027
  }
16025
16028
  const endingOn = /* @__PURE__ */ new Map();
@@ -16199,7 +16202,7 @@ var no_union_in_comment_default = createRule({
16199
16202
  defaultOptions: [],
16200
16203
  create(context) {
16201
16204
  const sourceCode = context.sourceCode;
16202
- if (isGeneratedFile(context.filename, sourceCode.text)) {
16205
+ if (isGeneratedFile(context, sourceCode.text)) {
16203
16206
  return {};
16204
16207
  }
16205
16208
  function annotated(comment) {
@@ -16300,7 +16303,7 @@ var no_type_member_comment_wall_default = createRule({
16300
16303
  create(context, [provided]) {
16301
16304
  const options = { ...WALL_DEFAULTS, ...provided };
16302
16305
  const sourceCode = context.sourceCode;
16303
- if (isGeneratedFile(context.filename, sourceCode.text, ["externalTree"]) || isTestFile(context.filename, ["fixtureTree"]) || isStoryFile(context.filename, ["storyTree"])) {
16306
+ if (isGeneratedFile(context, sourceCode.text, ["externalTree"]) || isTestFile(context, ["fixtureTree"]) || isStoryFile(context, ["storyTree"])) {
16304
16307
  return {};
16305
16308
  }
16306
16309
  const endingOn = /* @__PURE__ */ new Map();
@@ -16687,7 +16690,7 @@ var no_unsafe_mock_casting_default = createRule({
16687
16690
  },
16688
16691
  defaultOptions: [],
16689
16692
  create(context) {
16690
- if (isGeneratedFile(context.filename, context.sourceCode.text)) {
16693
+ if (isGeneratedFile(context, context.sourceCode.text)) {
16691
16694
  return {};
16692
16695
  }
16693
16696
  const directBindings = /* @__PURE__ */ new Set();
@@ -16780,7 +16783,7 @@ var no_unsafe_test_double_cast_default = createRule({
16780
16783
  },
16781
16784
  defaultOptions: [],
16782
16785
  create(context) {
16783
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
16786
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
16784
16787
  return {
16785
16788
  TSAsExpression(node) {
16786
16789
  if ((node.expression.type === AST_NODE_TYPES78.TSAsExpression || node.expression.type === AST_NODE_TYPES78.TSTypeAssertion) && isUnknown(node.expression.typeAnnotation) && containsMockFactory(node.expression.expression, context.sourceCode)) context.report({ node, messageId: "noUnsafeTestDoubleCast" });
@@ -16819,7 +16822,7 @@ var no_first_party_module_mock_default = createRule({
16819
16822
  },
16820
16823
  defaultOptions: [{ additionalModulePrefixes: [] }],
16821
16824
  create(context, [options]) {
16822
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
16825
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
16823
16826
  return {
16824
16827
  CallExpression(node) {
16825
16828
  const unwrappedNodeCallee = unwrapExpression(node.callee);
@@ -16955,10 +16958,10 @@ var no_zod_native_enum_default = createRule({
16955
16958
  defaultOptions: [],
16956
16959
  create(context) {
16957
16960
  const sourceCode = context.sourceCode;
16958
- if (isGeneratedFile(context.filename, sourceCode.getText())) {
16961
+ if (isGeneratedFile(context, sourceCode.getText())) {
16959
16962
  return {};
16960
16963
  }
16961
- if (isTestFile(context.filename)) {
16964
+ if (isTestFile(context)) {
16962
16965
  return {};
16963
16966
  }
16964
16967
  let services;
@@ -17165,7 +17168,7 @@ var test_loops_over_literal_cases_default = createRule({
17165
17168
  },
17166
17169
  defaultOptions: [],
17167
17170
  create(context) {
17168
- if (!isTestFile(context.filename)) {
17171
+ if (!isTestFile(context)) {
17169
17172
  return {};
17170
17173
  }
17171
17174
  const isFrameworkTest = (identifier) => TEST_CALLERS3.has(runtimeTestFrameworkName(context.sourceCode, identifier, "test") ?? "");
@@ -17277,7 +17280,7 @@ var test_phase_label_comment_default = createRule({
17277
17280
  },
17278
17281
  defaultOptions: [],
17279
17282
  create(context) {
17280
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
17283
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
17281
17284
  return {
17282
17285
  Program() {
17283
17286
  const comments = context.sourceCode.getAllComments();
@@ -17381,7 +17384,7 @@ var prefer_constant_time_secret_compare_default = createRule({
17381
17384
  },
17382
17385
  defaultOptions: [],
17383
17386
  create(context) {
17384
- if (isTestFile(context.filename)) {
17387
+ if (isTestFile(context)) {
17385
17388
  return {};
17386
17389
  }
17387
17390
  const sourceCode = context.sourceCode;
@@ -17521,7 +17524,7 @@ var prefer_ecmascript_private_members_default = createRule({
17521
17524
  },
17522
17525
  defaultOptions: [],
17523
17526
  create(context) {
17524
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
17527
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
17525
17528
  let services;
17526
17529
  try {
17527
17530
  services = ESLintUtils18.getParserServices(context);
@@ -17926,7 +17929,7 @@ var prefer_discriminated_union_default = createRule({
17926
17929
  },
17927
17930
  defaultOptions: [],
17928
17931
  create(context) {
17929
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
17932
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
17930
17933
  return {};
17931
17934
  }
17932
17935
  const reportedContracts = /* @__PURE__ */ new Set();
@@ -18207,7 +18210,7 @@ var prefer_millisecond_control_duration_schema_default = createRule({
18207
18210
  },
18208
18211
  defaultOptions: [],
18209
18212
  create(context) {
18210
- if (isGeneratedFile(context.filename, context.sourceCode.text) || isTestFile(context.filename, ["fixtureTree"])) {
18213
+ if (isGeneratedFile(context, context.sourceCode.text) || isTestFile(context, ["fixtureTree"])) {
18211
18214
  return {};
18212
18215
  }
18213
18216
  const zodNamespaces = /* @__PURE__ */ new Set();
@@ -18512,7 +18515,7 @@ var prefer_immutable_module_constant_default = createRule({
18512
18515
  const declaration = definitions2.length === 1 ? definitions2[0]?.node : void 0;
18513
18516
  return declaration?.type === AST_NODE_TYPES89.TSTypeAliasDeclaration || declaration?.type === AST_NODE_TYPES89.TSTypeParameter ? declaration : void 0;
18514
18517
  };
18515
- if (JAVASCRIPT_FILE_RE.test(context.filename) || isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.getText())) {
18518
+ if (JAVASCRIPT_FILE_RE.test(context.filename) || isTestFile(context) || isGeneratedFile(context, sourceCode.getText())) {
18516
18519
  return {};
18517
18520
  }
18518
18521
  const exportedNames2 = /* @__PURE__ */ new Set();
@@ -18926,7 +18929,7 @@ var prefer_shadcn_primitives_default = createRule({
18926
18929
  defaultOptions: [{}],
18927
18930
  create(context, [options]) {
18928
18931
  const filename = context.filename.replaceAll("\\", "/");
18929
- if (isTestFile(filename) || isStoryFile(filename) || isGeneratedFile(filename, context.sourceCode.text) || SHARED_PRIMITIVE_IMPLEMENTATION_RE.test(filename)) {
18932
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text) || SHARED_PRIMITIVE_IMPLEMENTATION_RE.test(filename)) {
18930
18933
  return {};
18931
18934
  }
18932
18935
  const detectsProject = options?.detectProjectPrimitives === true;
@@ -19238,7 +19241,7 @@ var prefer_module_level_constant_default = createRule({
19238
19241
  if (isIgnoredFile(filename, sourceCode.getText())) {
19239
19242
  return {};
19240
19243
  }
19241
- if (ignoreTestFiles && isLocalFixtureFile(filename)) {
19244
+ if (ignoreTestFiles && isLocalFixtureFile(context)) {
19242
19245
  return {};
19243
19246
  }
19244
19247
  function allReferencesAreSafeReads(declarator) {
@@ -19572,11 +19575,10 @@ var prefer_module_level_schema_default = createRule({
19572
19575
  const memoCallees = new Set(options?.memoCallees ?? MEMO_CALLEES);
19573
19576
  const minProperties = options?.minProperties ?? DEFAULT_MIN_PROPERTIES;
19574
19577
  const sourceCode = context.sourceCode;
19575
- const filename = context.filename;
19576
- if (isGeneratedFile(filename, sourceCode.getText())) {
19578
+ if (isGeneratedFile(context, sourceCode.getText())) {
19577
19579
  return {};
19578
19580
  }
19579
- if (ignoreTestFiles && isTestFile(filename)) {
19581
+ if (ignoreTestFiles && isTestFile(context)) {
19580
19582
  return {};
19581
19583
  }
19582
19584
  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) {
@@ -20225,7 +20227,7 @@ var prefer_multi_value_zod_literal_default = createRule({
20225
20227
  },
20226
20228
  defaultOptions: [{}],
20227
20229
  create(context, [options]) {
20228
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text))
20230
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text))
20229
20231
  return {};
20230
20232
  const zodBindings = /* @__PURE__ */ new Set();
20231
20233
  const zod4Bindings = /* @__PURE__ */ new Set();
@@ -20410,7 +20412,7 @@ var prefer_nominal_id_types_default = createRule({
20410
20412
  },
20411
20413
  defaultOptions: [],
20412
20414
  create(context) {
20413
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20415
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
20414
20416
  return {
20415
20417
  ArrowFunctionExpression: (node) => checkBoundary(node, context),
20416
20418
  FunctionDeclaration: (node) => checkBoundary(node, context),
@@ -20462,7 +20464,7 @@ var prefer_named_callback_domain_default = createRule({
20462
20464
  },
20463
20465
  defaultOptions: [],
20464
20466
  create(context) {
20465
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20467
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
20466
20468
  return {
20467
20469
  TSFunctionType(node) {
20468
20470
  if (!exportedContract(node)) return;
@@ -20528,7 +20530,7 @@ var prefer_named_complex_return_type_default = createRule({
20528
20530
  },
20529
20531
  defaultOptions: [],
20530
20532
  create(context) {
20531
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
20533
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
20532
20534
  return {
20533
20535
  ArrowFunctionExpression: (node) => report(context, node),
20534
20536
  FunctionDeclaration: (node) => report(context, node),
@@ -20834,7 +20836,7 @@ var prefer_node_fs_promises_default = createRule({
20834
20836
  defaultOptions: [],
20835
20837
  create(context) {
20836
20838
  const normalizedFilename = context.filename.replaceAll("\\", "/");
20837
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text) || normalizedFilename.includes("src/rules/"))
20839
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text) || normalizedFilename.includes("src/rules/"))
20838
20840
  return {};
20839
20841
  const namespaces = /* @__PURE__ */ new Set();
20840
20842
  const bindingOf = (node) => ASTUtils62.findVariable(context.sourceCode.getScope(node), node.name);
@@ -21255,7 +21257,7 @@ var prefer_non_nullable_collection_default = createRule({
21255
21257
  },
21256
21258
  defaultOptions: [],
21257
21259
  create(context) {
21258
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
21260
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
21259
21261
  return {};
21260
21262
  }
21261
21263
  let shapes = /* @__PURE__ */ new Map();
@@ -21477,7 +21479,7 @@ var prefer_nullish_filter_predicate_default = createRule({
21477
21479
  },
21478
21480
  defaultOptions: [],
21479
21481
  create(context) {
21480
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
21482
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
21481
21483
  let services;
21482
21484
  try {
21483
21485
  services = ESLintUtils19.getParserServices(context);
@@ -22043,7 +22045,7 @@ var prefer_schema_for_api_payload_default = createRule({
22043
22045
  },
22044
22046
  defaultOptions: [],
22045
22047
  create(context) {
22046
- if (isTestFile(context.filename) || isScriptFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
22048
+ if (isTestFile(context) || isScriptFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
22047
22049
  return {};
22048
22050
  }
22049
22051
  const unvalidatedVariables = /* @__PURE__ */ new Set();
@@ -22350,7 +22352,7 @@ var prefer_shared_zod_enum_default = createRule({
22350
22352
  },
22351
22353
  defaultOptions: [],
22352
22354
  create(context) {
22353
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
22355
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
22354
22356
  const zodBindings = /* @__PURE__ */ new Set();
22355
22357
  const bindingOf = (node) => ASTUtils68.findVariable(context.sourceCode.getScope(node), node.name);
22356
22358
  const candidates = /* @__PURE__ */ new Map();
@@ -22438,7 +22440,7 @@ var prefer_switch_for_repeated_equality_default = createRule({
22438
22440
  },
22439
22441
  defaultOptions: [],
22440
22442
  create(context) {
22441
- if (isGeneratedFile(context.filename, context.sourceCode.text)) return {};
22443
+ if (isGeneratedFile(context, context.sourceCode.text)) return {};
22442
22444
  return {
22443
22445
  IfStatement(node) {
22444
22446
  if (node.parent.type === AST_NODE_TYPES107.IfStatement && node.parent.alternate === node) return;
@@ -23334,7 +23336,7 @@ var prefer_whole_object_assertion_default = createRule({
23334
23336
  },
23335
23337
  defaultOptions: [],
23336
23338
  create(context) {
23337
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
23339
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
23338
23340
  return {};
23339
23341
  }
23340
23342
  const { sourceCode } = context;
@@ -23676,7 +23678,7 @@ var repeated_static_call_cases_default = createRule({
23676
23678
  defaultOptions: [],
23677
23679
  create(context) {
23678
23680
  const sourceCode = context.sourceCode;
23679
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, sourceCode.text)) return {};
23681
+ if (!isTestFile(context) || isGeneratedFile(context, sourceCode.text)) return {};
23680
23682
  const duplicateGroups = /* @__PURE__ */ new Map();
23681
23683
  const pending = [];
23682
23684
  return {
@@ -24185,7 +24187,7 @@ var prefer_zod_infer_default = createRule({
24185
24187
  (source) => new RegExp(source, "u")
24186
24188
  );
24187
24189
  const requireIdenticalShape = optionsArg?.requireIdenticalShape ?? true;
24188
- if (isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
24190
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
24189
24191
  return {};
24190
24192
  }
24191
24193
  const zodNamespaces = /* @__PURE__ */ new Set();
@@ -24505,7 +24507,7 @@ var named_child_schema_type_default = createRule({
24505
24507
  defaultOptions: [],
24506
24508
  create(context) {
24507
24509
  const source = context.sourceCode;
24508
- if (isGeneratedFile(context.filename, source.text)) return {};
24510
+ if (isGeneratedFile(context, source.text)) return {};
24509
24511
  const namespaces = /* @__PURE__ */ new Set();
24510
24512
  const bindingOf = (node) => ASTUtils74.findVariable(source.getScope(node), node.name);
24511
24513
  function namespaceOf(type) {
@@ -24984,7 +24986,7 @@ function reportCandidates(context, services, schemas, candidates, zodNamespaces,
24984
24986
  const declaration = handWrittenObjectDeclaration(contractSymbol);
24985
24987
  if (declaration === null || declaration.getSourceFile().isDeclarationFile) return;
24986
24988
  const source = declaration.getSourceFile();
24987
- if (isGeneratedFile(source.fileName, source.text)) return;
24989
+ if (isGeneratedFile({ filename: source.fileName, cwd: context.cwd }, source.text)) return;
24988
24990
  const tsOutput = services.esTreeNodeToTSNodeMap.get(candidate2.output);
24989
24991
  const parsed = checker.getTypeAtLocation(tsOutput);
24990
24992
  if (hasAuthoritativeOutputContract(checker, tsOutput, contractSymbol)) return;
@@ -25066,7 +25068,7 @@ var prefer_zod_parse_output_type_default = createRule({
25066
25068
  },
25067
25069
  defaultOptions: [],
25068
25070
  create(context) {
25069
- if (isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) {
25071
+ if (isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) {
25070
25072
  return {};
25071
25073
  }
25072
25074
  let services;
@@ -25366,7 +25368,7 @@ var require_fetch_timeout_default = createRule({
25366
25368
  },
25367
25369
  defaultOptions: [{}],
25368
25370
  create(context, [optionsArg]) {
25369
- if (isTestFile(context.filename) || isScriptFile(context.filename)) {
25371
+ if (isTestFile(context) || isScriptFile(context)) {
25370
25372
  return {};
25371
25373
  }
25372
25374
  const allowIn = optionsArg?.allowIn ?? [];
@@ -25518,7 +25520,7 @@ var require_interface_for_exported_class_default = createRule({
25518
25520
  },
25519
25521
  defaultOptions: [],
25520
25522
  create(context) {
25521
- if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isTestFile(context.filename) || isStoryFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
25523
+ if (/\.(?:js|jsx|mjs|cjs)$/iu.test(context.filename) || isTestFile(context) || isStoryFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
25522
25524
  return {
25523
25525
  "Program:exit"(program) {
25524
25526
  const classes = /* @__PURE__ */ new Map();
@@ -25839,7 +25841,7 @@ var require_sql_access_class_default = createRule({
25839
25841
  },
25840
25842
  defaultOptions: [],
25841
25843
  create(context) {
25842
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text))
25844
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text))
25843
25845
  return {};
25844
25846
  function knownNonDatabase(node, seen = /* @__PURE__ */ new Set()) {
25845
25847
  const unwrappedNodeCallee = node.type === "CallExpression" || node.type === "NewExpression" ? unwrapExpression(node.callee) : null;
@@ -26269,7 +26271,7 @@ var require_zod_form_validation_default = createRule({
26269
26271
  },
26270
26272
  defaultOptions: [],
26271
26273
  create(context) {
26272
- if (isTestFile(context.filename)) {
26274
+ if (isTestFile(context)) {
26273
26275
  return {};
26274
26276
  }
26275
26277
  const zodBindings = /* @__PURE__ */ new Set();
@@ -26564,7 +26566,7 @@ var store_insert_requires_on_conflict_default = createRule({
26564
26566
  },
26565
26567
  defaultOptions: [],
26566
26568
  create(context) {
26567
- if (isTestFile(context.filename)) {
26569
+ if (isTestFile(context)) {
26568
26570
  return {};
26569
26571
  }
26570
26572
  return createSqlListener((sql, node) => {
@@ -27112,7 +27114,7 @@ var stepdown_default = createRule({
27112
27114
  },
27113
27115
  defaultOptions: [],
27114
27116
  create(context) {
27115
- if (isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
27117
+ if (isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27116
27118
  const classes = [];
27117
27119
  const functionBodies = [];
27118
27120
  return {
@@ -27287,7 +27289,7 @@ function createSourceCoupledRule(name, documentation, sourceSuffixRe) {
27287
27289
  },
27288
27290
  defaultOptions: [],
27289
27291
  create(context) {
27290
- if (!isTestFile(context.filename) || isGeneratedFile(context.filename, context.sourceCode.text)) return {};
27292
+ if (!isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27291
27293
  const scopes = [newScope()];
27292
27294
  const reportedOrigins = /* @__PURE__ */ new Set();
27293
27295
  const currentScope = () => scopes.at(-1) ?? scopes[0];
@@ -27387,7 +27389,7 @@ function createSourceCoupledRule(name, documentation, sourceSuffixRe) {
27387
27389
  };
27388
27390
  const sourcePathValue = (value) => {
27389
27391
  const normalized = posix2.normalize(value.replaceAll("\\", "/"));
27390
- return sourceSuffixRe.test(normalized) && !REPRESENTATION_DIR_RE.test(normalized) && !isGeneratedFile(normalized);
27392
+ return sourceSuffixRe.test(normalized) && !REPRESENTATION_DIR_RE.test(normalized) && !isGeneratedFile({ filename: normalized, cwd: context.cwd });
27391
27393
  };
27392
27394
  const rawRead = (node) => {
27393
27395
  const current = unwrap6(node);
@@ -27679,7 +27681,7 @@ var sole_export_matches_filename_default = createRule({
27679
27681
  create(context) {
27680
27682
  const fileStem = stem3(context.filename);
27681
27683
  const normalizedFilename = context.filename.replaceAll("\\", "/");
27682
- 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 {};
27684
+ if (EXCLUDED_STEMS.has(fileStem) || GENERIC_MODULE_STEMS.has(fileStem) || context.filename.endsWith(".d.ts") || isTestFile(context) || isGeneratedFile(context, context.sourceCode.text)) return {};
27683
27685
  let hasCommonJsExport = false;
27684
27686
  return {
27685
27687
  "CallExpression, MemberExpression"(node) {
@@ -27979,7 +27981,7 @@ var require_pascal_case_zod_schema_name_default = createRule({
27979
27981
  const binding = resolvedBinding(root);
27980
27982
  return binding !== null && zodBindings.has(binding);
27981
27983
  }
27982
- if (isTestFile(context.filename) || BENCHMARK_PATH_RE2.test(context.filename.replaceAll("\\", "/")) || isGeneratedFile(context.filename, context.sourceCode.text)) {
27984
+ if (isTestFile(context) || BENCHMARK_PATH_RE2.test(context.filename.replaceAll("\\", "/")) || isGeneratedFile(context, context.sourceCode.text)) {
27983
27985
  return {};
27984
27986
  }
27985
27987
  return {