@r_masseater/oxlint-typed-rules 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Record } from "effect";
2
- import ts from "typescript";
2
+ import ts from "typescript-6";
3
3
  import { Context, CreateRule, Location, Range, RuleMeta, Visitor } from "vite-plus/lint/plugins";
4
4
  interface RangedNode {
5
5
  readonly range: Readonly<Range>;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export { t as typedRules, n as withTypeInformation } from "./typed-rule-Cp7XL2SV.mjs";
1
+ export { t as typedRules, n as withTypeInformation } from "./typed-rule-Bitx6iIi.mjs";
@@ -1,5 +1,5 @@
1
- import { t as typedRules } from "./typed-rule-Cp7XL2SV.mjs";
2
- import * as ts$1 from "typescript";
1
+ import { t as typedRules } from "./typed-rule-Bitx6iIi.mjs";
2
+ import * as ts from "typescript-6";
3
3
  import path from "node:path";
4
4
  // \0rolldown/runtime.js
5
5
  var __create = Object.create;
@@ -35,7 +35,7 @@ function createUseClientResolver(program) {
35
35
  if (!sourceFile) return false;
36
36
  const firstStmt = sourceFile.statements[0];
37
37
  if (!firstStmt) return false;
38
- if (ts$1.isExpressionStatement(firstStmt) && ts$1.isStringLiteral(firstStmt.expression)) return firstStmt.expression.text === "use client";
38
+ if (ts.isExpressionStatement(firstStmt) && ts.isStringLiteral(firstStmt.expression)) return firstStmt.expression.text === "use client";
39
39
  return false;
40
40
  }
41
41
  return { hasUseClientDirective };
@@ -4032,11 +4032,11 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4032
4032
  const checker = program.getTypeChecker();
4033
4033
  const allowedHooks = /* @__PURE__ */ new Set([...DEFAULT_ALLOWED_HOOKS, ...options.allowedServerHooks]);
4034
4034
  const useClientResolver = createUseClientResolver(program);
4035
- const violationDetector = createViolationDetector(ts$1, {
4035
+ const violationDetector = createViolationDetector(ts, {
4036
4036
  allowedHooks,
4037
4037
  checker
4038
4038
  });
4039
- const transitiveAnalyzer = createTransitiveAnalyzer(ts$1, program, checker, useClientResolver, violationDetector);
4039
+ const transitiveAnalyzer = createTransitiveAnalyzer(ts, program, checker, useClientResolver, violationDetector);
4040
4040
  return { CallExpression(node) {
4041
4041
  const sourceFile = services.esTreeNodeToTSNodeMap.get(node).getSourceFile();
4042
4042
  if (useClientResolver.hasUseClientDirective(sourceFile.fileName)) return;
@@ -4046,8 +4046,8 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4046
4046
  const callback = node.arguments[0];
4047
4047
  if (!callback) return;
4048
4048
  const tsNode = services.esTreeNodeToTSNodeMap.get(callback);
4049
- if (ts$1.isFunctionLike(tsNode)) analyzeServerComponentCallback(tsNode, node, rootKind);
4050
- else if (ts$1.isIdentifier(tsNode)) analyzeDirectComponentReference(tsNode, node, rootKind);
4049
+ if (ts.isFunctionLike(tsNode)) analyzeServerComponentCallback(tsNode, node, rootKind);
4050
+ else if (ts.isIdentifier(tsNode)) analyzeDirectComponentReference(tsNode, node, rootKind);
4051
4051
  return;
4052
4052
  }
4053
4053
  const element = node.arguments[0];
@@ -4085,7 +4085,7 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4085
4085
  for (const ref of componentRefs) {
4086
4086
  const symbol = checker.getSymbolAtLocation(ref);
4087
4087
  if (!symbol) continue;
4088
- const resolvedSymbol = ts$1.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4088
+ const resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4089
4089
  const result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);
4090
4090
  if (result.isClientBoundary) continue;
4091
4091
  for (const violation of result.violations) {
@@ -4124,7 +4124,7 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4124
4124
  const symbol = checker.getSymbolAtLocation(ref);
4125
4125
  if (!symbol) continue;
4126
4126
  if (symbol.getDeclarations()?.some((d) => isWithinParameters(d, callback))) continue;
4127
- const resolvedSymbol = ts$1.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4127
+ const resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4128
4128
  const result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);
4129
4129
  if (result.isClientBoundary) continue;
4130
4130
  for (const violation of result.violations) {
@@ -4142,7 +4142,7 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4142
4142
  function analyzeDirectComponentReference(ref, eslintNode, rootKind = "createCompositeComponent") {
4143
4143
  const symbol = checker.getSymbolAtLocation(ref);
4144
4144
  if (!symbol) return;
4145
- const resolvedSymbol = ts$1.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4145
+ const resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;
4146
4146
  const result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);
4147
4147
  if (result.isClientBoundary) return;
4148
4148
  const reportedViolations = /* @__PURE__ */ new Set();
@@ -4159,10 +4159,10 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4159
4159
  */
4160
4160
  function collectParameterBindings(bindingName, names) {
4161
4161
  function collectFromBinding(node) {
4162
- if (ts$1.isIdentifier(node)) names.add(node.text);
4163
- else if (ts$1.isObjectBindingPattern(node)) for (const element of node.elements) collectFromBinding(element.name);
4164
- else if (ts$1.isArrayBindingPattern(node)) {
4165
- for (const element of node.elements) if (ts$1.isBindingElement(element)) collectFromBinding(element.name);
4162
+ if (ts.isIdentifier(node)) names.add(node.text);
4163
+ else if (ts.isObjectBindingPattern(node)) for (const element of node.elements) collectFromBinding(element.name);
4164
+ else if (ts.isArrayBindingPattern(node)) {
4165
+ for (const element of node.elements) if (ts.isBindingElement(element)) collectFromBinding(element.name);
4166
4166
  }
4167
4167
  }
4168
4168
  collectFromBinding(bindingName);
@@ -4173,9 +4173,9 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4173
4173
  function isWithinParameters(decl, callback) {
4174
4174
  let current = decl;
4175
4175
  while (current) {
4176
- if (ts$1.isParameter(current)) {
4176
+ if (ts.isParameter(current)) {
4177
4177
  const paramParent = current.parent;
4178
- if (ts$1.isFunctionLike(paramParent) && paramParent === callback) return true;
4178
+ if (ts.isFunctionLike(paramParent) && paramParent === callback) return true;
4179
4179
  }
4180
4180
  current = current.parent;
4181
4181
  }
@@ -4184,15 +4184,15 @@ var rule$1 = import_eslint_utils.RuleCreator(getDocsUrl)({
4184
4184
  function findComponentReferences(node) {
4185
4185
  const refs = [];
4186
4186
  function visit(n) {
4187
- if (ts$1.isJsxOpeningElement(n) || ts$1.isJsxSelfClosingElement(n)) {
4187
+ if (ts.isJsxOpeningElement(n) || ts.isJsxSelfClosingElement(n)) {
4188
4188
  const tagName = n.tagName;
4189
- if (ts$1.isIdentifier(tagName) && /^[A-Z]/.test(tagName.text)) refs.push(tagName);
4189
+ if (ts.isIdentifier(tagName) && /^[A-Z]/.test(tagName.text)) refs.push(tagName);
4190
4190
  }
4191
- if (ts$1.isCallExpression(n)) {
4191
+ if (ts.isCallExpression(n)) {
4192
4192
  const callee = n.expression;
4193
- if (ts$1.isIdentifier(callee) && /^[A-Z]/.test(callee.text)) refs.push(callee);
4193
+ if (ts.isIdentifier(callee) && /^[A-Z]/.test(callee.text)) refs.push(callee);
4194
4194
  }
4195
- ts$1.forEachChild(n, visit);
4195
+ ts.forEachChild(n, visit);
4196
4196
  }
4197
4197
  visit(node);
4198
4198
  return refs;
@@ -4660,7 +4660,7 @@ var rule = import_eslint_utils.RuleCreator(getDocsUrl)({
4660
4660
  let cached = perProgramCache.get(program);
4661
4661
  if (!cached) {
4662
4662
  cached = {
4663
- builder: createRenderGraphBuilder(ts$1, program, checker),
4663
+ builder: createRenderGraphBuilder(ts, program, checker),
4664
4664
  graphBuilt: false
4665
4665
  };
4666
4666
  perProgramCache.set(program, cached);
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-start.mjs","names":["ts","globals","name","rule","ESLintUtils","ts","ESLintUtils","ts","name","rule","name$1","rule$1","plugin","tanstackStart"],"sources":["../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/utils/get-docs-url.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/shared/use-client-resolver.js","../../../node_modules/.pnpm/globals@16.4.0/node_modules/globals/globals.json","../../../node_modules/.pnpm/globals@16.4.0/node_modules/globals/index.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/constants.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/violation-detector.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/transitive-analyzer.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/deepMerge.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/applyDefault.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/parserSeemsToBeTSESLint.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/InferTypesFromRule.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/nullThrows.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/index.js","../src/typescript-eslint-utils.ts","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/constants.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/render-graph-builder.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/context-analyzer.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/no-async-client-component.rule.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/index.js","../src/tanstack-start.ts"],"sourcesContent":["//#region src/utils/get-docs-url.ts\nvar getDocsUrl = (ruleName) => `https://tanstack.com/start/latest/docs/eslint/${ruleName}`;\n//#endregion\nexport { getDocsUrl };\n\n//# sourceMappingURL=get-docs-url.js.map","import * as ts from \"typescript\";\n//#region src/shared/use-client-resolver.ts\n/**\n* Creates a resolver that checks for 'use client' directive in source files\n*/\nfunction createUseClientResolver(program) {\n\tfunction hasUseClientDirective(fileName) {\n\t\tconst sourceFile = program.getSourceFile(fileName);\n\t\tif (!sourceFile) return false;\n\t\tconst firstStmt = sourceFile.statements[0];\n\t\tif (!firstStmt) return false;\n\t\tif (ts.isExpressionStatement(firstStmt) && ts.isStringLiteral(firstStmt.expression)) return firstStmt.expression.text === \"use client\";\n\t\treturn false;\n\t}\n\treturn { hasUseClientDirective };\n}\n//#endregion\nexport { createUseClientResolver };\n\n//# sourceMappingURL=use-client-resolver.js.map","","'use strict';\nmodule.exports = require('./globals.json');\n","import globals from \"globals\";\n//#region src/rules/no-client-code-in-server-component/constants.ts\n/**\n* Hooks allowed in server components\n*/\nvar DEFAULT_ALLOWED_HOOKS = new Set([\"useId\"]);\n/**\n* Browser-only globals not available in server context\n* Dynamically computed from globals package: browser globals that are NOT in node\n*/\nvar BROWSER_ONLY_GLOBALS = (() => {\n\tconst browserGlobals = Object.keys(globals.browser);\n\tconst nodeGlobals = new Set(Object.keys(globals.node));\n\tconst browserOnly = /* @__PURE__ */ new Set();\n\tfor (const name of browserGlobals) if (!nodeGlobals.has(name)) browserOnly.add(name);\n\treturn browserOnly;\n})();\n/**\n* React event handler props - comprehensive list from React types\n*/\nvar REACT_EVENT_HANDLERS = new Set([\n\t\"onCopy\",\n\t\"onCopyCapture\",\n\t\"onCut\",\n\t\"onCutCapture\",\n\t\"onPaste\",\n\t\"onPasteCapture\",\n\t\"onCompositionEnd\",\n\t\"onCompositionEndCapture\",\n\t\"onCompositionStart\",\n\t\"onCompositionStartCapture\",\n\t\"onCompositionUpdate\",\n\t\"onCompositionUpdateCapture\",\n\t\"onFocus\",\n\t\"onFocusCapture\",\n\t\"onBlur\",\n\t\"onBlurCapture\",\n\t\"onChange\",\n\t\"onChangeCapture\",\n\t\"onBeforeInput\",\n\t\"onBeforeInputCapture\",\n\t\"onInput\",\n\t\"onInputCapture\",\n\t\"onReset\",\n\t\"onResetCapture\",\n\t\"onSubmit\",\n\t\"onSubmitCapture\",\n\t\"onInvalid\",\n\t\"onInvalidCapture\",\n\t\"onLoad\",\n\t\"onLoadCapture\",\n\t\"onError\",\n\t\"onErrorCapture\",\n\t\"onKeyDown\",\n\t\"onKeyDownCapture\",\n\t\"onKeyPress\",\n\t\"onKeyPressCapture\",\n\t\"onKeyUp\",\n\t\"onKeyUpCapture\",\n\t\"onAbort\",\n\t\"onAbortCapture\",\n\t\"onCanPlay\",\n\t\"onCanPlayCapture\",\n\t\"onCanPlayThrough\",\n\t\"onCanPlayThroughCapture\",\n\t\"onDurationChange\",\n\t\"onDurationChangeCapture\",\n\t\"onEmptied\",\n\t\"onEmptiedCapture\",\n\t\"onEncrypted\",\n\t\"onEncryptedCapture\",\n\t\"onEnded\",\n\t\"onEndedCapture\",\n\t\"onLoadedData\",\n\t\"onLoadedDataCapture\",\n\t\"onLoadedMetadata\",\n\t\"onLoadedMetadataCapture\",\n\t\"onLoadStart\",\n\t\"onLoadStartCapture\",\n\t\"onPause\",\n\t\"onPauseCapture\",\n\t\"onPlay\",\n\t\"onPlayCapture\",\n\t\"onPlaying\",\n\t\"onPlayingCapture\",\n\t\"onProgress\",\n\t\"onProgressCapture\",\n\t\"onRateChange\",\n\t\"onRateChangeCapture\",\n\t\"onResize\",\n\t\"onResizeCapture\",\n\t\"onSeeked\",\n\t\"onSeekedCapture\",\n\t\"onSeeking\",\n\t\"onSeekingCapture\",\n\t\"onStalled\",\n\t\"onStalledCapture\",\n\t\"onSuspend\",\n\t\"onSuspendCapture\",\n\t\"onTimeUpdate\",\n\t\"onTimeUpdateCapture\",\n\t\"onVolumeChange\",\n\t\"onVolumeChangeCapture\",\n\t\"onWaiting\",\n\t\"onWaitingCapture\",\n\t\"onAuxClick\",\n\t\"onAuxClickCapture\",\n\t\"onClick\",\n\t\"onClickCapture\",\n\t\"onContextMenu\",\n\t\"onContextMenuCapture\",\n\t\"onDoubleClick\",\n\t\"onDoubleClickCapture\",\n\t\"onDrag\",\n\t\"onDragCapture\",\n\t\"onDragEnd\",\n\t\"onDragEndCapture\",\n\t\"onDragEnter\",\n\t\"onDragEnterCapture\",\n\t\"onDragExit\",\n\t\"onDragExitCapture\",\n\t\"onDragLeave\",\n\t\"onDragLeaveCapture\",\n\t\"onDragOver\",\n\t\"onDragOverCapture\",\n\t\"onDragStart\",\n\t\"onDragStartCapture\",\n\t\"onDrop\",\n\t\"onDropCapture\",\n\t\"onMouseDown\",\n\t\"onMouseDownCapture\",\n\t\"onMouseEnter\",\n\t\"onMouseLeave\",\n\t\"onMouseMove\",\n\t\"onMouseMoveCapture\",\n\t\"onMouseOut\",\n\t\"onMouseOutCapture\",\n\t\"onMouseOver\",\n\t\"onMouseOverCapture\",\n\t\"onMouseUp\",\n\t\"onMouseUpCapture\",\n\t\"onSelect\",\n\t\"onSelectCapture\",\n\t\"onTouchCancel\",\n\t\"onTouchCancelCapture\",\n\t\"onTouchEnd\",\n\t\"onTouchEndCapture\",\n\t\"onTouchMove\",\n\t\"onTouchMoveCapture\",\n\t\"onTouchStart\",\n\t\"onTouchStartCapture\",\n\t\"onPointerDown\",\n\t\"onPointerDownCapture\",\n\t\"onPointerMove\",\n\t\"onPointerMoveCapture\",\n\t\"onPointerUp\",\n\t\"onPointerUpCapture\",\n\t\"onPointerCancel\",\n\t\"onPointerCancelCapture\",\n\t\"onPointerEnter\",\n\t\"onPointerEnterCapture\",\n\t\"onPointerLeave\",\n\t\"onPointerLeaveCapture\",\n\t\"onPointerOver\",\n\t\"onPointerOverCapture\",\n\t\"onPointerOut\",\n\t\"onPointerOutCapture\",\n\t\"onGotPointerCapture\",\n\t\"onGotPointerCaptureCapture\",\n\t\"onLostPointerCapture\",\n\t\"onLostPointerCaptureCapture\",\n\t\"onScroll\",\n\t\"onScrollCapture\",\n\t\"onWheel\",\n\t\"onWheelCapture\",\n\t\"onAnimationStart\",\n\t\"onAnimationStartCapture\",\n\t\"onAnimationEnd\",\n\t\"onAnimationEndCapture\",\n\t\"onAnimationIteration\",\n\t\"onAnimationIterationCapture\",\n\t\"onTransitionEnd\",\n\t\"onTransitionEndCapture\"\n]);\n/**\n* Check if a prop name is a React event handler\n*/\nfunction isReactEventHandler(name) {\n\treturn REACT_EVENT_HANDLERS.has(name);\n}\n/**\n* Check if a hook name is client-only (not allowed in server components)\n*/\nfunction isClientOnlyHook(name, allowedHooks = DEFAULT_ALLOWED_HOOKS) {\n\tif (!/^use[A-Z]/.test(name)) return false;\n\tif (allowedHooks.has(name)) return false;\n\treturn true;\n}\n//#endregion\nexport { BROWSER_ONLY_GLOBALS, DEFAULT_ALLOWED_HOOKS, isClientOnlyHook, isReactEventHandler };\n\n//# sourceMappingURL=constants.js.map","import { BROWSER_ONLY_GLOBALS, DEFAULT_ALLOWED_HOOKS, isClientOnlyHook, isReactEventHandler } from \"./constants.js\";\n//#region src/rules/no-client-code-in-server-component/violation-detector.ts\n/**\n* Get line and column position for a node\n*/\nfunction getPosition(node, sourceFile) {\n\tconst { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n\treturn {\n\t\tline: line + 1,\n\t\tcolumn: character + 1\n\t};\n}\n/**\n* Creates a detector that finds client-only code violations in TypeScript AST\n*/\nfunction createViolationDetector(tsLib, options = {}) {\n\tconst allowedHooks = options.allowedHooks ?? DEFAULT_ALLOWED_HOOKS;\n\tconst checker = options.checker;\n\t/**\n\t* Check if a class declaration extends React.Component or React.PureComponent\n\t*/\n\tfunction isReactClassComponent(node) {\n\t\tif (!node.heritageClauses) return false;\n\t\tfor (const clause of node.heritageClauses) {\n\t\t\tif (clause.token !== tsLib.SyntaxKind.ExtendsKeyword) continue;\n\t\t\tfor (const type of clause.types) {\n\t\t\t\tconst expr = type.expression;\n\t\t\t\tif (tsLib.isPropertyAccessExpression(expr)) {\n\t\t\t\t\tconst propName = expr.name.text;\n\t\t\t\t\tif (propName === \"Component\" || propName === \"PureComponent\") {\n\t\t\t\t\t\tif (tsLib.isIdentifier(expr.expression)) {\n\t\t\t\t\t\t\tif (expr.expression.text === \"React\") return true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tsLib.isIdentifier(expr)) {\n\t\t\t\t\tconst name = expr.text;\n\t\t\t\t\tif (name === \"Component\" || name === \"PureComponent\") return true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Shared visitor logic that collects violations into the provided array\n\t*/\n\tfunction visitNode(node, sourceFile, violations) {\n\t\tif (tsLib.isClassDeclaration(node) && isReactClassComponent(node)) {\n\t\t\tconst name = node.name?.text ?? \"ClassComponent\";\n\t\t\tviolations.push({\n\t\t\t\ttype: \"class-component\",\n\t\t\t\tname,\n\t\t\t\tnode,\n\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t});\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst callee = node.expression;\n\t\t\tlet name = \"\";\n\t\t\tif (tsLib.isIdentifier(callee)) name = callee.text;\n\t\t\telse if (tsLib.isPropertyAccessExpression(callee)) name = callee.name.text;\n\t\t\tif (name && isClientOnlyHook(name, allowedHooks)) violations.push({\n\t\t\t\ttype: \"hook\",\n\t\t\t\tname,\n\t\t\t\tnode,\n\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t});\n\t\t}\n\t\tif (tsLib.isIdentifier(node)) {\n\t\t\tconst name = node.text;\n\t\t\tif (BROWSER_ONLY_GLOBALS.has(name)) {\n\t\t\t\tconst parent = node.parent;\n\t\t\t\tif (tsLib.isPropertyAccessExpression(parent) && parent.name === node) {} else if (tsLib.isPropertyAssignment(parent) && parent.name === node) {} else if (tsLib.isTypeReferenceNode(parent) || tsLib.isInterfaceDeclaration(parent) || tsLib.isTypeAliasDeclaration(parent)) {} else if (tsLib.isParameter(parent) && parent.name === node || tsLib.isVariableDeclaration(parent) && parent.name === node) {} else if (tsLib.isImportSpecifier(parent) || tsLib.isImportClause(parent)) {} else if (checker) {\n\t\t\t\t\tconst symbol = checker.getSymbolAtLocation(node);\n\t\t\t\t\tif (symbol) {\n\t\t\t\t\t\tconst declarations = symbol.getDeclarations();\n\t\t\t\t\t\tif (declarations?.length) if (declarations.some((decl) => {\n\t\t\t\t\t\t\tconst fileName = decl.getSourceFile().fileName;\n\t\t\t\t\t\t\treturn !fileName.includes(\"/node_modules/\") && !fileName.includes(\"/typescript/lib/\");\n\t\t\t\t\t\t})) {} else violations.push({\n\t\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t\t});\n\t\t\t\t\t\telse violations.push({\n\t\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t\t});\n\t\t\t\t\t} else violations.push({\n\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t});\n\t\t\t\t} else violations.push({\n\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\tname,\n\t\t\t\t\tnode,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isJsxAttribute(node)) {\n\t\t\tconst attrName = node.name;\n\t\t\tif (tsLib.isIdentifier(attrName)) {\n\t\t\t\tconst name = attrName.text;\n\t\t\t\tconst value = node.initializer;\n\t\t\t\tif (isReactEventHandler(name)) violations.push({\n\t\t\t\t\ttype: \"event-handler\",\n\t\t\t\t\tname,\n\t\t\t\t\tnode,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t});\n\t\t\t\telse if (name !== \"style\" && name !== \"className\" && name !== \"key\" && name !== \"ref\" && name !== \"dangerouslySetInnerHTML\" && value && tsLib.isJsxExpression(value) && value.expression) {\n\t\t\t\t\tconst expr = value.expression;\n\t\t\t\t\tif (tsLib.isArrowFunction(expr) || tsLib.isFunctionExpression(expr)) violations.push({\n\t\t\t\t\t\ttype: \"function-prop\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttsLib.forEachChild(node, (child) => visitNode(child, sourceFile, violations));\n\t}\n\tfunction detectViolations(sourceFile) {\n\t\tconst violations = [];\n\t\ttsLib.forEachChild(sourceFile, (child) => visitNode(child, sourceFile, violations));\n\t\treturn violations;\n\t}\n\tfunction detectViolationsInNode(node, sourceFile) {\n\t\tconst violations = [];\n\t\tvisitNode(node, sourceFile, violations);\n\t\treturn violations;\n\t}\n\treturn {\n\t\tdetectViolations,\n\t\tdetectViolationsInNode\n\t};\n}\n//#endregion\nexport { createViolationDetector };\n\n//# sourceMappingURL=violation-detector.js.map","//#region src/rules/no-client-code-in-server-component/transitive-analyzer.ts\n/**\n* Creates an analyzer that follows reachable symbol references\n* to find transitive violations, stopping at 'use client' boundaries.\n*/\nfunction createTransitiveAnalyzer(tsLib, program, checker, useClientResolver, violationDetector) {\n\tconst visitedSymbols = /* @__PURE__ */ new Set();\n\tconst analysisCache = /* @__PURE__ */ new Map();\n\tfunction symbolKey(symbol) {\n\t\treturn `${(symbol.getDeclarations()?.[0])?.getSourceFile().fileName ?? \"unknown\"}::${symbol.getName()}`;\n\t}\n\tfunction analyzeEntrySymbol(entrySymbol) {\n\t\tvisitedSymbols.clear();\n\t\tconst cached = analysisCache.get(symbolKey(entrySymbol));\n\t\tif (cached) return cached;\n\t\tconst violations = [];\n\t\tfunction visitSymbol(symbol, chain) {\n\t\t\tconst key = symbolKey(symbol);\n\t\t\tif (visitedSymbols.has(key)) return false;\n\t\t\tvisitedSymbols.add(key);\n\t\t\tconst decl = symbol.getDeclarations()?.[0];\n\t\t\tif (!decl) return false;\n\t\t\tconst sourceFile = decl.getSourceFile();\n\t\t\tconst fileName = sourceFile.fileName;\n\t\t\tif (fileName.includes(\"/node_modules/\") || fileName.endsWith(\".d.ts\")) return false;\n\t\t\tif (useClientResolver.hasUseClientDirective(fileName)) return true;\n\t\t\tconst traversalRoots = getTraversalRoots(decl);\n\t\t\tfor (const root of traversalRoots) {\n\t\t\t\tconst rootViolations = violationDetector.detectViolationsInNode(root, sourceFile);\n\t\t\t\tfor (const v of rootViolations) violations.push({\n\t\t\t\t\t...v,\n\t\t\t\t\tchain: [...chain]\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const root of traversalRoots) {\n\t\t\t\tconst identifiers = collectReachableIdentifiers(root, decl);\n\t\t\t\tfor (const ident of identifiers) {\n\t\t\t\t\tconst refSym = checker.getSymbolAtLocation(ident);\n\t\t\t\t\tif (!refSym) continue;\n\t\t\t\t\tconst aliased = tsLib.SymbolFlags.Alias & refSym.flags ? checker.getAliasedSymbol(refSym) : refSym;\n\t\t\t\t\tconst refFile = (aliased.getDeclarations()?.[0])?.getSourceFile().fileName;\n\t\t\t\t\tif (!refFile) continue;\n\t\t\t\t\tif (refFile.includes(\"/node_modules/\") || refFile.endsWith(\".d.ts\")) continue;\n\t\t\t\t\tconst edge = {\n\t\t\t\t\t\tfromFile: fileName,\n\t\t\t\t\t\ttoFile: refFile,\n\t\t\t\t\t\tviaSymbol: aliased.getName()\n\t\t\t\t\t};\n\t\t\t\t\tvisitSymbol(aliased, [...chain, edge]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\t/**\n\t\t* Get traversal roots based on declaration kind\n\t\t*/\n\t\tfunction getTraversalRoots(decl) {\n\t\t\tif (tsLib.isFunctionDeclaration(decl) && decl.body) return [decl.body];\n\t\t\tif (tsLib.isFunctionExpression(decl)) return [decl.body];\n\t\t\tif (tsLib.isArrowFunction(decl)) return [decl.body];\n\t\t\tif (tsLib.isVariableDeclaration(decl) && decl.initializer) {\n\t\t\t\tif (tsLib.isFunctionExpression(decl.initializer) || tsLib.isArrowFunction(decl.initializer)) return [decl.initializer.body];\n\t\t\t\treturn [decl.initializer];\n\t\t\t}\n\t\t\tif (tsLib.isClassDeclaration(decl) || tsLib.isClassExpression(decl)) {\n\t\t\t\tconst roots = [];\n\t\t\t\tfor (const member of decl.members) {\n\t\t\t\t\tif (tsLib.isMethodDeclaration(member) && member.body) roots.push(member.body);\n\t\t\t\t\tif (tsLib.isPropertyDeclaration(member) && member.initializer) roots.push(member.initializer);\n\t\t\t\t}\n\t\t\t\treturn roots;\n\t\t\t}\n\t\t\treturn [decl];\n\t\t}\n\t\t/**\n\t\t* Collect identifier nodes from a traversal root, skipping:\n\t\t* - The defining identifier for the symbol (avoid self-loop)\n\t\t* - Type-only positions\n\t\t* - Property names when not computed\n\t\t*/\n\t\tfunction collectReachableIdentifiers(root, originalDecl) {\n\t\t\tconst identifiers = [];\n\t\t\tlet declName;\n\t\t\tif (\"name\" in originalDecl && originalDecl.name) {\n\t\t\t\tconst nameNode = originalDecl.name;\n\t\t\t\tif (tsLib.isIdentifier(nameNode)) declName = nameNode.text;\n\t\t\t}\n\t\t\tfunction visit(node) {\n\t\t\t\tif (tsLib.isTypeReferenceNode(node) || tsLib.isInterfaceDeclaration(node) || tsLib.isTypeAliasDeclaration(node) || tsLib.isTypeQueryNode(node) || tsLib.isTypeParameterDeclaration(node)) return;\n\t\t\t\tif (tsLib.isIdentifier(node)) {\n\t\t\t\t\tif (node.text === declName) return;\n\t\t\t\t\tconst parent = node.parent;\n\t\t\t\t\tif (tsLib.isPropertyAccessExpression(parent) && parent.name === node) return;\n\t\t\t\t\tif (tsLib.isPropertyAssignment(parent) && parent.name === node) return;\n\t\t\t\t\tif (tsLib.isParameter(parent) && parent.name === node || tsLib.isVariableDeclaration(parent) && parent.name === node) return;\n\t\t\t\t\tidentifiers.push(node);\n\t\t\t\t}\n\t\t\t\ttsLib.forEachChild(node, visit);\n\t\t\t}\n\t\t\tvisit(root);\n\t\t\treturn identifiers;\n\t\t}\n\t\tconst result = {\n\t\t\tisClientBoundary: visitSymbol(entrySymbol, []),\n\t\t\tviolations\n\t\t};\n\t\tanalysisCache.set(symbolKey(entrySymbol), result);\n\t\treturn result;\n\t}\n\treturn { analyzeEntrySymbol };\n}\n//#endregion\nexport { createTransitiveAnalyzer };\n\n//# sourceMappingURL=transitive-analyzer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObjectNotArray = isObjectNotArray;\nexports.deepMerge = deepMerge;\n/**\n * Check if the variable contains an object strictly rejecting arrays\n * @returns `true` if obj is an object\n */\nfunction isObjectNotArray(obj) {\n return typeof obj === 'object' && obj != null && !Array.isArray(obj);\n}\n/**\n * Pure function - doesn't mutate either parameter!\n * Merges two objects together deeply, overwriting the properties in first with the properties in second\n * @param first The first object\n * @param second The second object\n * @returns a new object\n */\nfunction deepMerge(first = {}, second = {}) {\n // get the unique set of keys across both objects\n const keys = new Set([...Object.keys(first), ...Object.keys(second)]);\n return Object.fromEntries([...keys].map(key => {\n const firstHasKey = key in first;\n const secondHasKey = key in second;\n const firstValue = first[key];\n const secondValue = second[key];\n let value;\n if (firstHasKey && secondHasKey) {\n if (isObjectNotArray(firstValue) && isObjectNotArray(secondValue)) {\n // object type\n value = deepMerge(firstValue, secondValue);\n }\n else {\n // value type\n value = secondValue;\n }\n }\n else if (firstHasKey) {\n value = firstValue;\n }\n else {\n value = secondValue;\n }\n return [key, value];\n }));\n}\n//# sourceMappingURL=deepMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyDefault = applyDefault;\nconst deepMerge_1 = require(\"./deepMerge\");\n/**\n * Pure function - doesn't mutate either parameter!\n * Uses the default options and overrides with the options provided by the user\n * @param defaultOptions the defaults\n * @param userOptions the user opts\n * @returns the options with defaults\n */\nfunction applyDefault(defaultOptions, userOptions) {\n // clone defaults\n const options = structuredClone(defaultOptions);\n if (userOptions == null) {\n return options;\n }\n // For avoiding the type error\n // `This expression is not callable. Type 'unknown' has no call signatures.ts(2349)`\n options.forEach((opt, i) => {\n // eslint-disable-next-line @typescript-eslint/internal/eqeq-nullish\n if (userOptions[i] !== undefined) {\n const userOpt = userOptions[i];\n if ((0, deepMerge_1.isObjectNotArray)(userOpt) && (0, deepMerge_1.isObjectNotArray)(opt)) {\n options[i] = (0, deepMerge_1.deepMerge)(opt, userOpt);\n }\n else {\n options[i] = userOpt;\n }\n }\n });\n return options;\n}\n//# sourceMappingURL=applyDefault.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parserSeemsToBeTSESLint = parserSeemsToBeTSESLint;\nfunction parserSeemsToBeTSESLint(parser) {\n return !!parser && /(?:typescript-eslint|\\.\\.)[\\w/\\\\]*parser/.test(parser);\n}\n//# sourceMappingURL=parserSeemsToBeTSESLint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParserServices = getParserServices;\nconst parserSeemsToBeTSESLint_1 = require(\"./parserSeemsToBeTSESLint\");\nconst ERROR_MESSAGE_REQUIRES_PARSER_SERVICES = \"You have used a rule which requires type information, but don't have parserOptions set to generate type information for this file. See https://tseslint.com/typed-linting for enabling linting with type information.\";\nconst ERROR_MESSAGE_UNKNOWN_PARSER = 'Note: detected a parser other than @typescript-eslint/parser. Make sure the parser is configured to forward \"parserOptions.project\" to @typescript-eslint/parser.';\nfunction getParserServices(context, allowWithoutFullTypeInformation = false) {\n const parser = \n // eslint-disable-next-line @typescript-eslint/no-deprecated -- For compatibility with ESLint 8\n context.parserPath || context.languageOptions.parser?.meta?.name;\n // This check is unnecessary if the user is using the latest version of our parser.\n //\n // However the world isn't perfect:\n // - Users often use old parser versions.\n // Old versions of the parser would not return any parserServices unless parserOptions.project was set.\n // - Users sometimes use parsers that aren't @typescript-eslint/parser\n // Other parsers won't return the parser services we expect (if they return any at all).\n //\n // This check allows us to handle bad user setups whilst providing a nice user-facing\n // error message explaining the problem.\n if (context.sourceCode.parserServices?.esTreeNodeToTSNodeMap == null ||\n context.sourceCode.parserServices.tsNodeToESTreeNodeMap == null) {\n throwError(parser);\n }\n // if a rule requires full type information, then hard fail if it doesn't exist\n // this forces the user to supply parserOptions.project\n if (context.sourceCode.parserServices.program == null &&\n !allowWithoutFullTypeInformation) {\n throwError(parser);\n }\n return context.sourceCode.parserServices;\n}\n/* eslint-enable @typescript-eslint/unified-signatures */\nfunction throwError(parser) {\n const messages = [\n ERROR_MESSAGE_REQUIRES_PARSER_SERVICES,\n `Parser: ${parser || '(unknown)'}`,\n !(0, parserSeemsToBeTSESLint_1.parserSeemsToBeTSESLint)(parser) && ERROR_MESSAGE_UNKNOWN_PARSER,\n ].filter(Boolean);\n throw new Error(messages.join('\\n'));\n}\n//# sourceMappingURL=getParserServices.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=InferTypesFromRule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullThrowsReasons = void 0;\nexports.nullThrows = nullThrows;\n/**\n * A set of common reasons for calling nullThrows\n */\nexports.NullThrowsReasons = {\n MissingParent: 'Expected node to have a parent.',\n MissingToken: (token, thing) => `Expected to find a ${token} for the ${thing}.`,\n};\n/**\n * Assert that a value must not be null or undefined.\n * This is a nice explicit alternative to the non-null assertion operator.\n */\nfunction nullThrows(value, message) {\n if (value == null) {\n throw new Error(`Non-null Assertion Failed: ${message}`);\n }\n return value;\n}\n//# sourceMappingURL=nullThrows.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuleCreator = RuleCreator;\nconst applyDefault_1 = require(\"./applyDefault\");\n/**\n * Creates reusable function to create rules with default options and docs URLs.\n *\n * @param urlCreator Creates a documentation URL for a given rule name.\n * @returns Function to create a rule with the docs URL format.\n */\nfunction RuleCreator(urlCreator) {\n // This function will get much easier to call when this is merged https://github.com/Microsoft/TypeScript/pull/26349\n // TODO - when the above PR lands; add type checking for the context.report `data` property\n return function createNamedRule({ meta, name, ...rule }) {\n const ruleWithDocs = createRule({\n meta: {\n ...meta,\n docs: {\n ...meta.docs,\n url: urlCreator(name),\n },\n },\n name,\n ...rule,\n });\n return ruleWithDocs;\n };\n}\nfunction createRule({ create, \n// Keep accepting deprecated defaultOptions for backward compatibility.\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ndefaultOptions, meta, name, }) {\n const resolvedDefaultOptions = (meta.defaultOptions ??\n defaultOptions ??\n []);\n return {\n create(context) {\n const optionsWithDefault = (0, applyDefault_1.applyDefault)(resolvedDefaultOptions, context.options);\n return create(context, optionsWithDefault);\n },\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- For compatibility with ESLint 8, see #12842\n defaultOptions,\n meta,\n name,\n };\n}\n/**\n * Creates a well-typed TSESLint custom ESLint rule without a docs URL.\n *\n * @returns Well-typed TSESLint custom ESLint rule.\n * @remarks It is generally better to provide a docs URL function to RuleCreator.\n */\nRuleCreator.withoutDocs = function withoutDocs(args) {\n return createRule(args);\n};\n//# sourceMappingURL=RuleCreator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./applyDefault\"), exports);\n__exportStar(require(\"./deepMerge\"), exports);\n__exportStar(require(\"./getParserServices\"), exports);\n__exportStar(require(\"./InferTypesFromRule\"), exports);\n__exportStar(require(\"./nullThrows\"), exports);\n__exportStar(require(\"./RuleCreator\"), exports);\n//# sourceMappingURL=index.js.map","export * as ESLintUtils from \"@typescript-eslint/utils/eslint-utils\";\n","import { getDocsUrl } from \"../../utils/get-docs-url.js\";\nimport { createUseClientResolver } from \"../../shared/use-client-resolver.js\";\nimport { DEFAULT_ALLOWED_HOOKS } from \"./constants.js\";\nimport { createViolationDetector } from \"./violation-detector.js\";\nimport { createTransitiveAnalyzer } from \"./transitive-analyzer.js\";\nimport path from \"node:path\";\nimport { ESLintUtils } from \"@typescript-eslint/utils\";\nimport * as ts from \"typescript\";\n//#region src/rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.ts\nvar name = \"no-client-code-in-server-component\";\nvar TRIGGER_HINT = \"Triggered by rendering \\\"{{entry}}\\\".\";\nvar rule = ESLintUtils.RuleCreator(getDocsUrl)({\n\tname,\n\tmeta: {\n\t\ttype: \"problem\",\n\t\tdocs: {\n\t\t\tdescription: \"Disallow client-only code inside server components\",\n\t\t\trecommended: \"error\"\n\t\t},\n\t\tschema: [{\n\t\t\ttype: \"object\",\n\t\t\tproperties: { allowedServerHooks: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { type: \"string\" },\n\t\t\t\tdescription: \"Additional hooks that are allowed in server components (e.g., custom server-safe hooks)\"\n\t\t\t} },\n\t\t\tadditionalProperties: false\n\t\t}],\n\t\tmessages: {\n\t\t\thookInServerComponent: \"\\\"{{name}}\\\" hook {{location}} cannot be used in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tbrowserGlobalInServerComponent: \"\\\"{{name}}\\\" browser API {{location}} is not available in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\teventHandlerInServerComponent: \"\\\"{{name}}\\\" event handler {{location}} cannot be used in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tfunctionPropInServerComponent: \"\\\"{{name}}\\\" function prop {{location}} cannot be passed in server components. Functions cannot be serialized from server to client. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tclassComponentInServerComponent: \"\\\"{{name}}\\\" class component {{location}} cannot be used in server components. Class components require client-side lifecycle methods. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\"\n\t\t}\n\t},\n\tdefaultOptions: [{ allowedServerHooks: [] }],\n\tcreate(context, [options]) {\n\t\tconst services = ESLintUtils.getParserServices(context);\n\t\tconst program = services.program;\n\t\tconst checker = program.getTypeChecker();\n\t\tconst allowedHooks = new Set([...DEFAULT_ALLOWED_HOOKS, ...options.allowedServerHooks]);\n\t\tconst useClientResolver = createUseClientResolver(program);\n\t\tconst violationDetector = createViolationDetector(ts, {\n\t\t\tallowedHooks,\n\t\t\tchecker\n\t\t});\n\t\tconst transitiveAnalyzer = createTransitiveAnalyzer(ts, program, checker, useClientResolver, violationDetector);\n\t\treturn { CallExpression(node) {\n\t\t\tconst sourceFile = services.esTreeNodeToTSNodeMap.get(node).getSourceFile();\n\t\t\tif (useClientResolver.hasUseClientDirective(sourceFile.fileName)) return;\n\t\t\tconst rootKind = getServerRootKind(node);\n\t\t\tif (!rootKind) return;\n\t\t\tif (rootKind === \"createCompositeComponent\") {\n\t\t\t\tconst callback = node.arguments[0];\n\t\t\t\tif (!callback) return;\n\t\t\t\tconst tsNode = services.esTreeNodeToTSNodeMap.get(callback);\n\t\t\t\tif (ts.isFunctionLike(tsNode)) analyzeServerComponentCallback(tsNode, node, rootKind);\n\t\t\t\telse if (ts.isIdentifier(tsNode)) analyzeDirectComponentReference(tsNode, node, rootKind);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst element = node.arguments[0];\n\t\t\tif (!element) return;\n\t\t\tanalyzeServerComponentNode(services.esTreeNodeToTSNodeMap.get(element), node, rootKind);\n\t\t} };\n\t\tfunction getServerRootKind(node) {\n\t\t\tif (node.callee.type === \"Identifier\") {\n\t\t\t\tif (node.callee.name === \"createCompositeComponent\") return \"createCompositeComponent\";\n\t\t\t\tif (node.callee.name === \"renderServerComponent\") return \"renderServerComponent\";\n\t\t\t}\n\t\t\tif (node.callee.type === \"MemberExpression\" && node.callee.property.type === \"Identifier\") {\n\t\t\t\tif (node.callee.property.name === \"createCompositeComponent\") return \"createCompositeComponent\";\n\t\t\t\tif (node.callee.property.name === \"renderServerComponent\") return \"renderServerComponent\";\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tfunction analyzeServerComponentNode(node, eslintNode, rootKind) {\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tconst sourceFile = node.getSourceFile();\n\t\t\tconst directViolations = violationDetector.detectViolations(sourceFile);\n\t\t\tconst start = node.getStart();\n\t\t\tconst end = node.getEnd();\n\t\t\tfor (const violation of directViolations) {\n\t\t\t\tconst violationPos = violation.node.getStart();\n\t\t\t\tif (violationPos >= start && violationPos <= end) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, [], rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst componentRefs = findComponentReferences(node);\n\t\t\tfor (const ref of componentRefs) {\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\t\tif (!symbol) continue;\n\t\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\t\tif (result.isClientBoundary) continue;\n\t\t\t\tfor (const violation of result.violations) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction analyzeServerComponentCallback(callback, eslintNode, rootKind) {\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tconst parameterNames = /* @__PURE__ */ new Set();\n\t\t\tfor (const param of callback.parameters) collectParameterBindings(param.name, parameterNames);\n\t\t\tconst body = callback.body;\n\t\t\tif (body) {\n\t\t\t\tconst sourceFile = callback.getSourceFile();\n\t\t\t\tconst directViolations = violationDetector.detectViolations(sourceFile);\n\t\t\t\tconst callbackStart = body.getStart();\n\t\t\t\tconst callbackEnd = body.getEnd();\n\t\t\t\tfor (const violation of directViolations) {\n\t\t\t\t\tconst violationPos = violation.node.getStart();\n\t\t\t\t\tif (violationPos >= callbackStart && violationPos <= callbackEnd) {\n\t\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\t\treportViolation(violation, [], rootKind, eslintNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst componentRefs = findComponentReferences(callback);\n\t\t\tfor (const ref of componentRefs) {\n\t\t\t\tif (parameterNames.has(ref.text)) continue;\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\t\tif (!symbol) continue;\n\t\t\t\tif (symbol.getDeclarations()?.some((d) => isWithinParameters(d, callback))) continue;\n\t\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\t\tif (result.isClientBoundary) continue;\n\t\t\t\tfor (const violation of result.violations) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Analyze a component passed directly to createCompositeComponent(Component)\n\t\t*/\n\t\tfunction analyzeDirectComponentReference(ref, eslintNode, rootKind = \"createCompositeComponent\") {\n\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\tif (!symbol) return;\n\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\tif (result.isClientBoundary) return;\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tfor (const violation of result.violations) {\n\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Collect all binding names from a parameter (handles destructuring)\n\t\t*/\n\t\tfunction collectParameterBindings(bindingName, names) {\n\t\t\tfunction collectFromBinding(node) {\n\t\t\t\tif (ts.isIdentifier(node)) names.add(node.text);\n\t\t\t\telse if (ts.isObjectBindingPattern(node)) for (const element of node.elements) collectFromBinding(element.name);\n\t\t\t\telse if (ts.isArrayBindingPattern(node)) {\n\t\t\t\t\tfor (const element of node.elements) if (ts.isBindingElement(element)) collectFromBinding(element.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcollectFromBinding(bindingName);\n\t\t}\n\t\t/**\n\t\t* Check if a declaration is within the parameters of the callback\n\t\t*/\n\t\tfunction isWithinParameters(decl, callback) {\n\t\t\tlet current = decl;\n\t\t\twhile (current) {\n\t\t\t\tif (ts.isParameter(current)) {\n\t\t\t\t\tconst paramParent = current.parent;\n\t\t\t\t\tif (ts.isFunctionLike(paramParent) && paramParent === callback) return true;\n\t\t\t\t}\n\t\t\t\tcurrent = current.parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tfunction findComponentReferences(node) {\n\t\t\tconst refs = [];\n\t\t\tfunction visit(n) {\n\t\t\t\tif (ts.isJsxOpeningElement(n) || ts.isJsxSelfClosingElement(n)) {\n\t\t\t\t\tconst tagName = n.tagName;\n\t\t\t\t\tif (ts.isIdentifier(tagName) && /^[A-Z]/.test(tagName.text)) refs.push(tagName);\n\t\t\t\t}\n\t\t\t\tif (ts.isCallExpression(n)) {\n\t\t\t\t\tconst callee = n.expression;\n\t\t\t\t\tif (ts.isIdentifier(callee) && /^[A-Z]/.test(callee.text)) refs.push(callee);\n\t\t\t\t}\n\t\t\t\tts.forEachChild(n, visit);\n\t\t\t}\n\t\t\tvisit(node);\n\t\t\treturn refs;\n\t\t}\n\t\tfunction reportViolation(violation, chain, entryComponentName, eslintNode) {\n\t\t\tconst location = formatLocation(violation, chain);\n\t\t\tconst messageId = getMessageId(violation.type);\n\t\t\tcontext.report({\n\t\t\t\tnode: eslintNode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tname: violation.name,\n\t\t\t\t\tlocation,\n\t\t\t\t\tentry: entryComponentName,\n\t\t\t\t\tfileName: getRelativePath(violation.fileName)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tfunction getMessageId(type) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"hook\": return \"hookInServerComponent\";\n\t\t\t\tcase \"browser-global\": return \"browserGlobalInServerComponent\";\n\t\t\t\tcase \"event-handler\": return \"eventHandlerInServerComponent\";\n\t\t\t\tcase \"function-prop\": return \"functionPropInServerComponent\";\n\t\t\t\tcase \"class-component\": return \"classComponentInServerComponent\";\n\t\t\t}\n\t\t}\n\t\tfunction formatLocation(violation, chain) {\n\t\t\tif (chain.length > 0) return `(via ${chain.map((e) => getRelativePath(e.toFile)).join(\" -> \")}) at ${getRelativePath(violation.fileName)}:${violation.line}`;\n\t\t\treturn `at ${getRelativePath(violation.fileName)}:${violation.line}`;\n\t\t}\n\t\tfunction getRelativePath(fileName) {\n\t\t\tconst cwd = context.cwd;\n\t\t\treturn path.relative(cwd, fileName);\n\t\t}\n\t}\n});\n//#endregion\nexport { name, rule };\n\n//# sourceMappingURL=no-client-code-in-server-component.rule.js.map","//#region src/rules/no-async-client-component/constants.ts\n/**\n* Route option names that accept component references.\n* These make the referenced component a \"client root\".\n*/\nvar ROUTE_COMPONENT_OPTION_NAMES = [\n\t\"component\",\n\t\"pendingComponent\",\n\t\"errorComponent\",\n\t\"notFoundComponent\"\n];\n/**\n* Function names that create routes (client entry points).\n*/\nvar ROUTE_CREATOR_NAMES = [\n\t\"createFileRoute\",\n\t\"createRootRoute\",\n\t\"createRootRouteWithContext\"\n];\n/**\n* Function names that create server-component roots.\n*/\nvar SERVER_COMPONENT_ROOTS = [\"renderServerComponent\", \"createCompositeComponent\"];\n//#endregion\nexport { ROUTE_COMPONENT_OPTION_NAMES, ROUTE_CREATOR_NAMES, SERVER_COMPONENT_ROOTS };\n\n//# sourceMappingURL=constants.js.map","import { ROUTE_COMPONENT_OPTION_NAMES, ROUTE_CREATOR_NAMES, SERVER_COMPONENT_ROOTS } from \"./constants.js\";\n//#region src/rules/no-async-client-component/render-graph-builder.ts\n/**\n* Builds a render graph from the TypeScript program.\n* Indexes components, JSX edges, server roots, and client roots.\n*/\nfunction createRenderGraphBuilder(tsLib, program, checker) {\n\tconst graph = {\n\t\tcomponents: /* @__PURE__ */ new Map(),\n\t\tedges: [],\n\t\tserverRoots: /* @__PURE__ */ new Set(),\n\t\tclientRoots: /* @__PURE__ */ new Set(),\n\t\tuseClientFiles: /* @__PURE__ */ new Set(),\n\t\trouteOptionUsages: /* @__PURE__ */ new Map(),\n\t\trouteOptionRootsByFile: /* @__PURE__ */ new Map()\n\t};\n\treturn {\n\t\tbuild() {\n\t\t\tfor (const sourceFile of program.getSourceFiles()) {\n\t\t\t\tif (sourceFile.isDeclarationFile) continue;\n\t\t\t\tif (sourceFile.fileName.includes(\"node_modules\")) continue;\n\t\t\t\tif (!fileCanContribute(sourceFile)) continue;\n\t\t\t\tprocessSourceFile(sourceFile);\n\t\t\t}\n\t\t\treturn graph;\n\t\t},\n\t\tgetGraph() {\n\t\t\treturn graph;\n\t\t}\n\t};\n\t/**\n\t* Quick text-based check to skip files that can't contribute edges or roots.\n\t* A file can contribute if it might have:\n\t* - JSX (components, edges)\n\t* - 'use client' directive (client roots)\n\t* - createFileRoute/createRootRoute (route-option roots)\n\t* - renderServerComponent/createCompositeComponent (server roots)\n\t\n\t*/\n\tfunction fileCanContribute(sourceFile) {\n\t\tconst text = sourceFile.text;\n\t\tconst hasJsx = text.includes(\"<\") && (text.includes(\"/>\") || text.includes(\"</\"));\n\t\tconst hasUseClient = text.includes(\"use client\");\n\t\tconst hasRouteCreator = text.includes(\"createFileRoute\") || text.includes(\"createRootRoute\") || text.includes(\"createRootRouteWithContext\");\n\t\tconst hasServerComponentRoot = SERVER_COMPONENT_ROOTS.some((name) => text.includes(name));\n\t\treturn hasJsx || hasUseClient || hasRouteCreator || hasServerComponentRoot;\n\t}\n\tfunction processSourceFile(sourceFile) {\n\t\tif (hasUseClientDirective(sourceFile)) graph.useClientFiles.add(sourceFile.fileName);\n\t\tvisitNode(sourceFile, sourceFile, null);\n\t}\n\tfunction hasUseClientDirective(sourceFile) {\n\t\tconst firstStatement = sourceFile.statements[0];\n\t\tif (!firstStatement) return false;\n\t\tif (tsLib.isExpressionStatement(firstStatement) && tsLib.isStringLiteral(firstStatement.expression) && firstStatement.expression.text === \"use client\") return true;\n\t\treturn false;\n\t}\n\tfunction visitNode(node, sourceFile, currentComponent) {\n\t\tif (tsLib.isFunctionDeclaration(node) && node.name) {\n\t\t\tif (isPascalCase(node.name.text)) {\n\t\t\t\tconst key = makeKey(sourceFile.fileName, node.name.text);\n\t\t\t\tgraph.components.set(key, {\n\t\t\t\t\tname: node.name.text,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\tnode,\n\t\t\t\t\tisAsync: hasAsyncModifier(node),\n\t\t\t\t\tline: getLine(sourceFile, node)\n\t\t\t\t});\n\t\t\t\tif (graph.useClientFiles.has(sourceFile.fileName)) graph.clientRoots.add(key);\n\t\t\t\tif (node.body) tsLib.forEachChild(node.body, (child) => visitNode(child, sourceFile, key));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isVariableStatement(node)) {\n\t\t\tfor (const decl of node.declarationList.declarations) if (tsLib.isIdentifier(decl.name) && isPascalCase(decl.name.text) && decl.initializer && isFunctionLike(decl.initializer)) {\n\t\t\t\tconst key = makeKey(sourceFile.fileName, decl.name.text);\n\t\t\t\tgraph.components.set(key, {\n\t\t\t\t\tname: decl.name.text,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tisAsync: isAsyncFunctionLike(decl.initializer),\n\t\t\t\t\tline: getLine(sourceFile, decl)\n\t\t\t\t});\n\t\t\t\tif (graph.useClientFiles.has(sourceFile.fileName)) graph.clientRoots.add(key);\n\t\t\t\tconst funcNode = decl.initializer;\n\t\t\t\ttsLib.forEachChild(funcNode.body, (child) => visitNode(child, sourceFile, key));\n\t\t\t} else if (decl.initializer) visitNode(decl.initializer, sourceFile, currentComponent);\n\t\t\treturn;\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst serverRootKind = getServerRootKind(node, checker);\n\t\t\tif (serverRootKind === \"createCompositeComponent\") {\n\t\t\t\tconst callback = node.arguments[0];\n\t\t\t\tif (callback && isFunctionLike(callback)) collectJsxComponentRefs(callback, sourceFile, currentComponent, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (serverRootKind === \"renderServerComponent\") {\n\t\t\t\tconst element = node.arguments[0];\n\t\t\t\tif (element) collectJsxComponentRefs(element, sourceFile, currentComponent, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst routeOptions = getRouteOptionsObject(node);\n\t\t\tif (routeOptions) {\n\t\t\t\tfor (const prop of routeOptions.properties) if (tsLib.isPropertyAssignment(prop) && tsLib.isIdentifier(prop.name) && ROUTE_COMPONENT_OPTION_NAMES.includes(prop.name.text)) markAsClientRoot(prop.initializer, sourceFile, currentComponent, prop);\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isJsxOpeningElement(node) || tsLib.isJsxSelfClosingElement(node)) {\n\t\t\tconst tagName = node.tagName;\n\t\t\tif (tsLib.isIdentifier(tagName) && isPascalCase(tagName.text)) {\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(tagName);\n\t\t\t\tif (symbol) {\n\t\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\t\tconst toKey = makeKey(declFile, tagName.text);\n\t\t\t\t\t\t\tif (currentComponent) graph.edges.push({\n\t\t\t\t\t\t\t\tfromFile: sourceFile.fileName,\n\t\t\t\t\t\t\t\tfromComponent: currentComponent.split(\":\")[1],\n\t\t\t\t\t\t\t\ttoFile: declFile,\n\t\t\t\t\t\t\t\ttoComponent: tagName.text,\n\t\t\t\t\t\t\t\ttoComponentKey: toKey,\n\t\t\t\t\t\t\t\tjsxNode: node,\n\t\t\t\t\t\t\t\tjsxLine: getLine(sourceFile, node)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttsLib.forEachChild(node, (child) => visitNode(child, sourceFile, currentComponent));\n\t}\n\tfunction getServerRootKind(node, _checker) {\n\t\tif (tsLib.isIdentifier(node.expression)) {\n\t\t\tconst name = node.expression.text;\n\t\t\treturn SERVER_COMPONENT_ROOTS.includes(name) ? name : null;\n\t\t}\n\t\tif (tsLib.isPropertyAccessExpression(node.expression) && tsLib.isIdentifier(node.expression.name)) {\n\t\t\tconst name = node.expression.name.text;\n\t\t\treturn SERVER_COMPONENT_ROOTS.includes(name) ? name : null;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getRouteOptionsObject(node) {\n\t\tconst optionsArg = node.arguments[0];\n\t\tif (!optionsArg || !tsLib.isObjectLiteralExpression(optionsArg)) return;\n\t\tconst routeCreator = findRouteCreatorFromCallee(node.expression);\n\t\tif (!routeCreator) return;\n\t\tconst routeCreatorName = tsLib.isIdentifier(routeCreator) ? routeCreator.text : routeCreator.name.text;\n\t\tif (ROUTE_CREATOR_NAMES.includes(routeCreatorName)) return optionsArg;\n\t}\n\tfunction findRouteCreatorFromCallee(expr) {\n\t\tif (tsLib.isParenthesizedExpression(expr)) return findRouteCreatorFromCallee(expr.expression);\n\t\tif (tsLib.isCallExpression(expr)) return findRouteCreatorFromCallee(expr.expression);\n\t\tif (tsLib.isPropertyAccessExpression(expr)) {\n\t\t\tif (tsLib.isIdentifier(expr.name)) {\n\t\t\t\tif (ROUTE_CREATOR_NAMES.includes(expr.name.text)) return expr;\n\t\t\t}\n\t\t\treturn findRouteCreatorFromCallee(expr.expression);\n\t\t}\n\t\tif (tsLib.isIdentifier(expr)) return expr;\n\t}\n\tfunction markAsClientRoot(node, sourceFile, _currentComponent, usageNode) {\n\t\tif (tsLib.isIdentifier(node)) {\n\t\t\tconst componentName = node.text;\n\t\t\tconst symbol = checker.getSymbolAtLocation(node);\n\t\t\tif (symbol) {\n\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\tif (resolved) {\n\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\tconst key = makeKey(declFile, componentName);\n\t\t\t\t\t\tgraph.clientRoots.add(key);\n\t\t\t\t\t\tif (usageNode) {\n\t\t\t\t\t\t\tgraph.routeOptionUsages.set(key, {\n\t\t\t\t\t\t\t\tcomponentKey: key,\n\t\t\t\t\t\t\t\tusageNode,\n\t\t\t\t\t\t\t\tusageLine: getLine(sourceFile, usageNode),\n\t\t\t\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst fallbackKey = makeKey(sourceFile.fileName, componentName);\n\t\t\tgraph.clientRoots.add(fallbackKey);\n\t\t\tif (usageNode) {\n\t\t\t\tgraph.routeOptionUsages.set(fallbackKey, {\n\t\t\t\t\tcomponentKey: fallbackKey,\n\t\t\t\t\tusageNode,\n\t\t\t\t\tusageLine: getLine(sourceFile, usageNode),\n\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t});\n\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, fallbackKey);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isFunctionLike(node)) collectJsxComponentRefs(node, sourceFile, null, false, usageNode);\n\t}\n\tfunction collectJsxComponentRefs(node, sourceFile, _currentComponent, isServerContext, usageNode) {\n\t\tfunction walk(n) {\n\t\t\tif (tsLib.isJsxOpeningElement(n) || tsLib.isJsxSelfClosingElement(n)) {\n\t\t\t\tconst tagName = n.tagName;\n\t\t\t\tif (tsLib.isIdentifier(tagName) && isPascalCase(tagName.text)) {\n\t\t\t\t\tconst symbol = checker.getSymbolAtLocation(tagName);\n\t\t\t\t\tif (symbol) {\n\t\t\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\t\t\tconst key = makeKey(declFile, tagName.text);\n\t\t\t\t\t\t\t\tif (isServerContext) graph.serverRoots.add(key);\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tgraph.clientRoots.add(key);\n\t\t\t\t\t\t\t\t\tconst effectiveUsageNode = usageNode ?? n;\n\t\t\t\t\t\t\t\t\tgraph.routeOptionUsages.set(key, {\n\t\t\t\t\t\t\t\t\t\tcomponentKey: key,\n\t\t\t\t\t\t\t\t\t\tusageNode: effectiveUsageNode,\n\t\t\t\t\t\t\t\t\t\tusageLine: getLine(sourceFile, effectiveUsageNode),\n\t\t\t\t\t\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, key);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsLib.forEachChild(n, walk);\n\t\t}\n\t\twalk(node);\n\t}\n\tfunction resolveSymbol(symbol) {\n\t\tif (symbol.flags & tsLib.SymbolFlags.Alias) return checker.getAliasedSymbol(symbol);\n\t\treturn symbol;\n\t}\n\tfunction isPascalCase(name) {\n\t\treturn /^[A-Z]/.test(name);\n\t}\n\tfunction hasAsyncModifier(node) {\n\t\treturn node.modifiers?.some((mod) => mod.kind === tsLib.SyntaxKind.AsyncKeyword) ?? false;\n\t}\n\tfunction isFunctionLike(node) {\n\t\treturn tsLib.isArrowFunction(node) || tsLib.isFunctionExpression(node) || tsLib.isFunctionDeclaration(node);\n\t}\n\tfunction isAsyncFunctionLike(node) {\n\t\tif (tsLib.isArrowFunction(node) || tsLib.isFunctionExpression(node)) return hasAsyncModifier(node);\n\t\treturn false;\n\t}\n\tfunction makeKey(fileName, componentName) {\n\t\treturn `${fileName}:${componentName}`;\n\t}\n\tfunction getLine(sourceFile, node) {\n\t\treturn sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1;\n\t}\n\tfunction addToRouteOptionRootsByFile(fileName, key) {\n\t\tlet set = graph.routeOptionRootsByFile.get(fileName);\n\t\tif (!set) {\n\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\tgraph.routeOptionRootsByFile.set(fileName, set);\n\t\t}\n\t\tset.add(key);\n\t}\n}\n//#endregion\nexport { createRenderGraphBuilder };\n\n//# sourceMappingURL=render-graph-builder.js.map","//#region src/rules/no-async-client-component/context-analyzer.ts\n/**\n* Analyzes the render graph to propagate server/client context.\n*\n* Algorithm:\n* 1. Mark server roots as server context, propagate to descendants\n* 2. Stop propagation at 'use client' boundaries\n* 3. Mark client roots as client context, propagate to descendants\n* 4. Components reachable from both => client wins (tainted)\n\n*/\nfunction analyzeContext(graph) {\n\tconst contexts = /* @__PURE__ */ new Map();\n\tfor (const [key, component] of graph.components) contexts.set(key, {\n\t\tkey,\n\t\tcomponent,\n\t\tisServerContext: false,\n\t\tisClientContext: false\n\t});\n\tconst adjacency = buildAdjacencyList(graph.edges);\n\tconst serverVisited = /* @__PURE__ */ new Set();\n\tfor (const serverRoot of graph.serverRoots) propagateServerContext(serverRoot, serverVisited, graph, contexts, adjacency);\n\tconst clientVisited = /* @__PURE__ */ new Set();\n\tfor (const clientRoot of graph.clientRoots) {\n\t\tconst ctx = contexts.get(clientRoot);\n\t\tif (!ctx) continue;\n\t\tlet reason;\n\t\tif (graph.useClientFiles.has(ctx.component.fileName)) reason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t\telse {\n\t\t\tconst routeUsage = graph.routeOptionUsages.get(clientRoot);\n\t\t\treason = {\n\t\t\t\ttype: \"route-option\",\n\t\t\t\tfileName: ctx.component.fileName,\n\t\t\t\tusageFile: routeUsage?.fileName,\n\t\t\t\tusageNode: routeUsage?.usageNode,\n\t\t\t\tusageLine: routeUsage?.usageLine\n\t\t\t};\n\t\t}\n\t\tpropagateClientContext(clientRoot, clientVisited, contexts, adjacency, reason);\n\t}\n\tfor (const [_key, ctx] of contexts) if (graph.useClientFiles.has(ctx.component.fileName) && !ctx.isClientContext) {\n\t\tctx.isClientContext = true;\n\t\tctx.clientReason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t}\n\tconst clientEdges = [];\n\tfor (const edge of graph.edges) {\n\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\tif (contexts.get(fromKey)?.isClientContext) clientEdges.push(edge);\n\t}\n\treturn {\n\t\tcontexts,\n\t\tclientEdges\n\t};\n}\nfunction buildAdjacencyList(edges) {\n\tconst adj = /* @__PURE__ */ new Map();\n\tfor (const edge of edges) {\n\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\tif (!adj.has(fromKey)) adj.set(fromKey, []);\n\t\tadj.get(fromKey).push(edge);\n\t}\n\treturn adj;\n}\nfunction propagateServerContext(key, visited, graph, contexts, adjacency) {\n\tif (visited.has(key)) return;\n\tvisited.add(key);\n\tconst ctx = contexts.get(key);\n\tif (!ctx) return;\n\tif (graph.useClientFiles.has(ctx.component.fileName)) {\n\t\tctx.isClientContext = true;\n\t\tctx.clientReason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t\treturn;\n\t}\n\tctx.isServerContext = true;\n\tconst edges = adjacency.get(key) ?? [];\n\tfor (const edge of edges) propagateServerContext(edge.toComponentKey, visited, graph, contexts, adjacency);\n}\nfunction propagateClientContext(key, visited, contexts, adjacency, reason) {\n\tif (visited.has(key)) return;\n\tvisited.add(key);\n\tconst ctx = contexts.get(key);\n\tif (!ctx) return;\n\tctx.isClientContext = true;\n\tif (!ctx.clientReason) ctx.clientReason = reason;\n\tconst edges = adjacency.get(key) ?? [];\n\tfor (const edge of edges) propagateClientContext(edge.toComponentKey, visited, contexts, adjacency, {\n\t\ttype: \"rendered-by-client\",\n\t\tparentComponent: ctx.component.name,\n\t\tparentFile: ctx.component.fileName\n\t});\n}\n//#endregion\nexport { analyzeContext };\n\n//# sourceMappingURL=context-analyzer.js.map","import { getDocsUrl } from \"../../utils/get-docs-url.js\";\nimport { createRenderGraphBuilder } from \"./render-graph-builder.js\";\nimport { analyzeContext } from \"./context-analyzer.js\";\nimport path from \"node:path\";\nimport { ESLintUtils } from \"@typescript-eslint/utils\";\nimport * as ts from \"typescript\";\n//#region src/rules/no-async-client-component/no-async-client-component.rule.ts\nvar name = \"no-async-client-component\";\nvar perProgramCache = /* @__PURE__ */ new WeakMap();\nvar onDemandCache = /* @__PURE__ */ new WeakMap();\nvar adjacencyCache = /* @__PURE__ */ new WeakMap();\nvar rule = ESLintUtils.RuleCreator(getDocsUrl)({\n\tname,\n\tmeta: {\n\t\ttype: \"problem\",\n\t\tdocs: {\n\t\t\tdescription: \"Disallow async components in client context. Async components are only valid inside server components.\",\n\t\t\trecommended: \"error\"\n\t\t},\n\t\tschema: [{\n\t\t\ttype: \"object\",\n\t\t\tproperties: { ignorePatterns: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { type: \"string\" },\n\t\t\t\tdescription: \"File patterns to ignore\"\n\t\t\t} },\n\t\t\tadditionalProperties: false\n\t\t}],\n\t\tmessages: {\n\t\t\tasyncClientComponentDefinition: \"Async component \\\"{{name}}\\\" cannot be used in client context. Async components are only valid inside server components. Either remove \\\"async\\\" or ensure this component is only rendered within server components. {{reason}}\",\n\t\t\tasyncClientComponentUsage: \"Async component \\\"{{name}}\\\" is rendered in client context here. Async components are only valid inside server components. Move this to a server component or use a non-async version.\"\n\t\t}\n\t},\n\tdefaultOptions: [{ ignorePatterns: [] }],\n\tcreate(context, [options]) {\n\t\tconst services = ESLintUtils.getParserServices(context);\n\t\tconst program = services.program;\n\t\tconst checker = program.getTypeChecker();\n\t\tconst currentFile = path.isAbsolute(context.filename) ? context.filename : path.resolve(context.cwd, context.filename);\n\t\tif (shouldIgnore(currentFile, [...options.ignorePatterns])) return {};\n\t\tlet cached = perProgramCache.get(program);\n\t\tif (!cached) {\n\t\t\tcached = {\n\t\t\t\tbuilder: createRenderGraphBuilder(ts, program, checker),\n\t\t\t\tgraphBuilt: false\n\t\t\t};\n\t\t\tperProgramCache.set(program, cached);\n\t\t}\n\t\tconst reported = /* @__PURE__ */ new Set();\n\t\treturn { Program() {\n\t\t\tconst sourceFile = program.getSourceFile(currentFile);\n\t\t\tif (!sourceFile) return;\n\t\t\tif (fileContainsRouteOptions(sourceFile)) {}\n\t\t\tconst analysis = getOnDemandAnalysis(currentFile);\n\t\t\tfor (const [key, ctx] of analysis.contexts) {\n\t\t\t\tif (!ctx.component.isAsync || !ctx.isClientContext) continue;\n\t\t\t\tconst reportKey = `def:${key}`;\n\t\t\t\tif (reported.has(reportKey)) continue;\n\t\t\t\tif (ctx.clientReason?.type === \"route-option\") {\n\t\t\t\t\tconst usageFile = ctx.clientReason.usageFile;\n\t\t\t\t\tif (usageFile && usageFile === currentFile) {\n\t\t\t\t\t\tconst usageTsNode = ctx.clientReason.usageNode;\n\t\t\t\t\t\tconst usageEslintNode = services.tsNodeToESTreeNodeMap.get(usageTsNode);\n\t\t\t\t\t\tif (usageEslintNode) {\n\t\t\t\t\t\t\treported.add(reportKey);\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: usageEslintNode,\n\t\t\t\t\t\t\t\tmessageId: \"asyncClientComponentDefinition\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tname: ctx.component.name,\n\t\t\t\t\t\t\t\t\treason: formatReason(ctx.clientReason, context.cwd)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treported.add(reportKey);\n\t\t\t\tconst tsNode = ctx.component.node;\n\t\t\t\tconst eslintNode = services.tsNodeToESTreeNodeMap.get(tsNode);\n\t\t\t\tif (eslintNode) context.report({\n\t\t\t\t\tnode: eslintNode,\n\t\t\t\t\tmessageId: \"asyncClientComponentDefinition\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: ctx.component.name,\n\t\t\t\t\t\treason: ctx.clientReason ? formatReason(ctx.clientReason, context.cwd) : \"\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const edge of analysis.clientEdges) {\n\t\t\t\tif (!analysis.contexts.get(edge.toComponentKey)?.component.isAsync) continue;\n\t\t\t\tif (edge.fromFile !== currentFile) continue;\n\t\t\t\tconst reportKey = `usage:${edge.fromFile}:${edge.jsxLine}:${edge.toComponent}`;\n\t\t\t\tif (reported.has(reportKey)) continue;\n\t\t\t\treported.add(reportKey);\n\t\t\t\tconst eslintNode = services.tsNodeToESTreeNodeMap.get(edge.jsxNode);\n\t\t\t\tif (eslintNode) context.report({\n\t\t\t\t\tnode: eslintNode,\n\t\t\t\t\tmessageId: \"asyncClientComponentUsage\",\n\t\t\t\t\tdata: { name: edge.toComponent }\n\t\t\t\t});\n\t\t\t}\n\t\t} };\n\t\tfunction shouldIgnore(filePath, patterns) {\n\t\t\tfor (const pattern of patterns) if (filePath.includes(pattern)) return true;\n\t\t\treturn false;\n\t\t}\n\t\tfunction formatReason(reason, cwd) {\n\t\t\tswitch (reason.type) {\n\t\t\t\tcase \"use-client\": return `File has \"use client\" directive.`;\n\t\t\t\tcase \"route-option\": return `Component is referenced by a route option (createFileRoute/createRootRoute).`;\n\t\t\t\tcase \"rendered-by-client\": return `Rendered by client component \"${reason.parentComponent}\" in ${path.relative(cwd, reason.parentFile)}.`;\n\t\t\t}\n\t\t}\n\t\tfunction getOnDemandAnalysis(entryFile) {\n\t\t\tlet programCache = onDemandCache.get(program);\n\t\t\tif (!programCache) {\n\t\t\t\tprogramCache = /* @__PURE__ */ new Map();\n\t\t\t\tonDemandCache.set(program, programCache);\n\t\t\t}\n\t\t\tconst cachedResult = programCache.get(entryFile);\n\t\t\tif (cachedResult) return cachedResult.analysis;\n\t\t\tif (!cached.graphBuilt) {\n\t\t\t\tcached.builder.build();\n\t\t\t\tcached.graphBuilt = true;\n\t\t\t}\n\t\t\tconst full = cached.builder.getGraph();\n\t\t\tconst subgraph = sliceGraphForEntryFile(full, entryFile);\n\t\t\tconst entrySourceFile = program.getSourceFile(entryFile);\n\t\t\tconst analysis = !!entrySourceFile && subgraph.clientRoots.size === 0 && subgraph.serverRoots.size === 0 ? analyzeContext(full) : analyzeContext(subgraph);\n\t\t\tprogramCache.set(entryFile, {\n\t\t\t\tgraph: subgraph,\n\t\t\t\tanalysis\n\t\t\t});\n\t\t\treturn analysis;\n\t\t}\n\t\tfunction sliceGraphForEntryFile(full, entryFile) {\n\t\t\tconst components = full.components;\n\t\t\tconst edges = full.edges;\n\t\t\tconst serverRoots = full.serverRoots;\n\t\t\tconst clientRoots = full.clientRoots;\n\t\t\tconst useClientFiles = full.useClientFiles;\n\t\t\tconst routeOptionUsages = full.routeOptionUsages;\n\t\t\tconst entryClientRoots = /* @__PURE__ */ new Set();\n\t\t\tconst entryServerRoots = /* @__PURE__ */ new Set();\n\t\t\tconst routeRootsInFile = routeOptionUsages.size > 0 ? full.routeOptionRootsByFile.get(entryFile) : void 0;\n\t\t\tif (routeRootsInFile) {\n\t\t\t\tfor (const key of routeRootsInFile) if (clientRoots.has(key)) entryClientRoots.add(key);\n\t\t\t}\n\t\t\tfor (const key of serverRoots) if (components.get(key)?.fileName === entryFile) entryServerRoots.add(key);\n\t\t\tif (useClientFiles.has(entryFile)) {\n\t\t\t\tfor (const [key, component] of components) if (component.fileName === entryFile) entryClientRoots.add(key);\n\t\t\t}\n\t\t\tconst reachable = /* @__PURE__ */ new Set();\n\t\t\tconst queue = [];\n\t\t\tfor (const r of entryClientRoots) queue.push(r);\n\t\t\tfor (const r of entryServerRoots) queue.push(r);\n\t\t\tconst adjacency = getAdjacency(full);\n\t\t\twhile (queue.length) {\n\t\t\t\tconst key = queue.pop();\n\t\t\t\tif (reachable.has(key)) continue;\n\t\t\t\treachable.add(key);\n\t\t\t\tconst children = adjacency.get(key);\n\t\t\t\tif (!children) continue;\n\t\t\t\tfor (const toKey of children) if (!reachable.has(toKey)) queue.push(toKey);\n\t\t\t}\n\t\t\tconst subComponents = /* @__PURE__ */ new Map();\n\t\t\tfor (const key of reachable) {\n\t\t\t\tconst comp = components.get(key);\n\t\t\t\tif (comp) subComponents.set(key, comp);\n\t\t\t}\n\t\t\tconst subEdges = edges.filter((edge) => {\n\t\t\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\t\t\treturn reachable.has(fromKey) && reachable.has(edge.toComponentKey);\n\t\t\t});\n\t\t\tconst subServerRoots = new Set([...entryServerRoots].filter((k) => reachable.has(k)));\n\t\t\tconst subClientRoots = new Set([...entryClientRoots].filter((k) => reachable.has(k)));\n\t\t\tconst subRouteOptionUsages = /* @__PURE__ */ new Map();\n\t\t\tconst subRouteOptionRootsByFile = /* @__PURE__ */ new Map();\n\t\t\tfor (const key of subClientRoots) {\n\t\t\t\tconst usage = routeOptionUsages.get(key);\n\t\t\t\tif (usage) {\n\t\t\t\t\tsubRouteOptionUsages.set(key, usage);\n\t\t\t\t\tlet set = subRouteOptionRootsByFile.get(usage.fileName);\n\t\t\t\t\tif (!set) {\n\t\t\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\t\t\tsubRouteOptionRootsByFile.set(usage.fileName, set);\n\t\t\t\t\t}\n\t\t\t\t\tset.add(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcomponents: subComponents,\n\t\t\t\tedges: subEdges,\n\t\t\t\tserverRoots: subServerRoots,\n\t\t\t\tclientRoots: subClientRoots,\n\t\t\t\tuseClientFiles,\n\t\t\t\trouteOptionUsages: subRouteOptionUsages,\n\t\t\t\trouteOptionRootsByFile: subRouteOptionRootsByFile\n\t\t\t};\n\t\t}\n\t\tfunction getAdjacency(full) {\n\t\t\tlet cachedAdjacency = adjacencyCache.get(program);\n\t\t\tif (cachedAdjacency) return cachedAdjacency;\n\t\t\tcachedAdjacency = /* @__PURE__ */ new Map();\n\t\t\tfor (const edge of full.edges) {\n\t\t\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\t\t\tlet set = cachedAdjacency.get(fromKey);\n\t\t\t\tif (!set) {\n\t\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\t\tcachedAdjacency.set(fromKey, set);\n\t\t\t\t}\n\t\t\t\tset.add(edge.toComponentKey);\n\t\t\t}\n\t\t\tadjacencyCache.set(program, cachedAdjacency);\n\t\t\treturn cachedAdjacency;\n\t\t}\n\t\tfunction fileHasUseClientDirective(sourceFile) {\n\t\t\tconst firstStmt = sourceFile.statements[0];\n\t\t\tif (!firstStmt) return false;\n\t\t\treturn ts.isExpressionStatement(firstStmt) && ts.isStringLiteral(firstStmt.expression) && firstStmt.expression.text === \"use client\";\n\t\t}\n\t\tfunction fileContainsServerComponentRoots(sourceFile) {\n\t\t\tconst text = sourceFile.text;\n\t\t\treturn text.includes(\"renderServerComponent\") || text.includes(\"createCompositeComponent\");\n\t\t}\n\t\tfunction fileContainsRouteOptions(sourceFile) {\n\t\t\tconst text = sourceFile.text;\n\t\t\tif (!text.includes(\"createFileRoute\") && !text.includes(\"createRootRoute\") && !text.includes(\"createRootRouteWithContext\")) return false;\n\t\t\treturn text.includes(\"component\") || text.includes(\"pendingComponent\") || text.includes(\"errorComponent\") || text.includes(\"notFoundComponent\");\n\t\t}\n\t}\n});\n//#endregion\nexport { name, rule };\n\n//# sourceMappingURL=no-async-client-component.rule.js.map","import { name, rule } from \"./rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.js\";\nimport { name as name$1, rule as rule$1 } from \"./rules/no-async-client-component/no-async-client-component.rule.js\";\n//#region src/rules.ts\nvar rules = {\n\t[name]: rule,\n\t[name$1]: rule$1\n};\n//#endregion\nexport { rules };\n\n//# sourceMappingURL=rules.js.map","import { rules } from \"./rules.js\";\n//#region src/index.ts\nvar plugin = {\n\tmeta: { name: \"@tanstack/eslint-plugin-start\" },\n\tconfigs: {},\n\trules\n};\nObject.assign(plugin.configs, {\n\trecommended: {\n\t\tplugins: [\"@tanstack/eslint-plugin-start\"],\n\t\trules: {\n\t\t\t\"@tanstack/start/no-client-code-in-server-component\": \"error\",\n\t\t\t\"@tanstack/start/no-async-client-component\": \"error\"\n\t\t}\n\t},\n\t\"flat/recommended\": [{\n\t\tplugins: { \"@tanstack/start\": plugin },\n\t\trules: {\n\t\t\t\"@tanstack/start/no-client-code-in-server-component\": \"error\",\n\t\t\t\"@tanstack/start/no-async-client-component\": \"error\"\n\t\t}\n\t}]\n});\n//#endregion\nexport { plugin as default };\n\n//# sourceMappingURL=index.js.map","import tanstackStart from \"@tanstack/eslint-plugin-start\";\nimport type { Plugin } from \"vite-plus/lint/plugins\";\n\nimport { typedRules } from \"./typed-rule.ts\";\n\nconst plugin = {\n meta: { name: \"tanstack-start\" },\n rules: typedRules(tanstackStart.rules),\n} as const satisfies Plugin;\n\nexport default plugin;\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAI,cAAc,aAAa,iDAAiD;;;;;ACIhF,SAAS,wBAAwB,SAAS;CACzC,SAAS,sBAAsB,UAAU;EACxC,MAAM,aAAa,QAAQ,cAAc,QAAQ;EACjD,IAAI,CAAC,YAAY,OAAO;EACxB,MAAM,YAAY,WAAW,WAAW;EACxC,IAAI,CAAC,WAAW,OAAO;EACvB,IAAIA,KAAG,sBAAsB,SAAS,KAAKA,KAAG,gBAAgB,UAAU,UAAU,GAAG,OAAO,UAAU,WAAW,SAAS;EAC1H,OAAO;CACR;CACA,OAAO,EAAE,sBAAsB;AAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CEdA,OAAO,UAAA,kBAAA;;;;;ACIP,IAAI,wCAAwB,IAAI,IAAI,CAAC,OAAO,CAAC;;;;;AAK7C,IAAI,8BAA8B;CACjC,MAAM,iBAAiB,OAAO,KAAKC,eAAAA,QAAQ,OAAO;CAClD,MAAM,cAAc,IAAI,IAAI,OAAO,KAAKA,eAAAA,QAAQ,IAAI,CAAC;CACrD,MAAM,8BAA8B,IAAI,IAAI;CAC5C,KAAK,MAAM,QAAQ,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI;CACnF,OAAO;AACR,EAAA,CAAG;;;;AAIH,IAAI,uCAAuB,IAAI,IAAI;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;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"}
1
+ {"version":3,"file":"tanstack-start.mjs","names":["globals","name","rule","ESLintUtils","ESLintUtils","name","rule","name$1","rule$1","plugin","tanstackStart"],"sources":["../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/utils/get-docs-url.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/shared/use-client-resolver.js","../../../node_modules/.pnpm/globals@16.4.0/node_modules/globals/globals.json","../../../node_modules/.pnpm/globals@16.4.0/node_modules/globals/index.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/constants.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/violation-detector.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/transitive-analyzer.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/deepMerge.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/applyDefault.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/parserSeemsToBeTSESLint.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/InferTypesFromRule.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/nullThrows.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js","../../../node_modules/.pnpm/@typescript-eslint+utils@8.72.1_eslint@9.39.5_jiti@2.7.0_supports-color@7.2.0__supports-color@7.2.0_typescript@6.0.3/node_modules/@typescript-eslint/utils/dist/eslint-utils/index.js","../src/typescript-eslint-utils.ts","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/constants.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/render-graph-builder.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/context-analyzer.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules/no-async-client-component/no-async-client-component.rule.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/rules.js","../../../node_modules/.pnpm/@tanstack+eslint-plugin-start@0.1.0_patch_hash=364cc40b73326fe59c5d685ac247690de2302e3e_1ecd472b6714c9eeb7d387901cbbf798/node_modules/@tanstack/eslint-plugin-start/dist/esm/index.js","../src/tanstack-start.ts"],"sourcesContent":["//#region src/utils/get-docs-url.ts\nvar getDocsUrl = (ruleName) => `https://tanstack.com/start/latest/docs/eslint/${ruleName}`;\n//#endregion\nexport { getDocsUrl };\n\n//# sourceMappingURL=get-docs-url.js.map","import * as ts from \"typescript\";\n//#region src/shared/use-client-resolver.ts\n/**\n* Creates a resolver that checks for 'use client' directive in source files\n*/\nfunction createUseClientResolver(program) {\n\tfunction hasUseClientDirective(fileName) {\n\t\tconst sourceFile = program.getSourceFile(fileName);\n\t\tif (!sourceFile) return false;\n\t\tconst firstStmt = sourceFile.statements[0];\n\t\tif (!firstStmt) return false;\n\t\tif (ts.isExpressionStatement(firstStmt) && ts.isStringLiteral(firstStmt.expression)) return firstStmt.expression.text === \"use client\";\n\t\treturn false;\n\t}\n\treturn { hasUseClientDirective };\n}\n//#endregion\nexport { createUseClientResolver };\n\n//# sourceMappingURL=use-client-resolver.js.map","","'use strict';\nmodule.exports = require('./globals.json');\n","import globals from \"globals\";\n//#region src/rules/no-client-code-in-server-component/constants.ts\n/**\n* Hooks allowed in server components\n*/\nvar DEFAULT_ALLOWED_HOOKS = new Set([\"useId\"]);\n/**\n* Browser-only globals not available in server context\n* Dynamically computed from globals package: browser globals that are NOT in node\n*/\nvar BROWSER_ONLY_GLOBALS = (() => {\n\tconst browserGlobals = Object.keys(globals.browser);\n\tconst nodeGlobals = new Set(Object.keys(globals.node));\n\tconst browserOnly = /* @__PURE__ */ new Set();\n\tfor (const name of browserGlobals) if (!nodeGlobals.has(name)) browserOnly.add(name);\n\treturn browserOnly;\n})();\n/**\n* React event handler props - comprehensive list from React types\n*/\nvar REACT_EVENT_HANDLERS = new Set([\n\t\"onCopy\",\n\t\"onCopyCapture\",\n\t\"onCut\",\n\t\"onCutCapture\",\n\t\"onPaste\",\n\t\"onPasteCapture\",\n\t\"onCompositionEnd\",\n\t\"onCompositionEndCapture\",\n\t\"onCompositionStart\",\n\t\"onCompositionStartCapture\",\n\t\"onCompositionUpdate\",\n\t\"onCompositionUpdateCapture\",\n\t\"onFocus\",\n\t\"onFocusCapture\",\n\t\"onBlur\",\n\t\"onBlurCapture\",\n\t\"onChange\",\n\t\"onChangeCapture\",\n\t\"onBeforeInput\",\n\t\"onBeforeInputCapture\",\n\t\"onInput\",\n\t\"onInputCapture\",\n\t\"onReset\",\n\t\"onResetCapture\",\n\t\"onSubmit\",\n\t\"onSubmitCapture\",\n\t\"onInvalid\",\n\t\"onInvalidCapture\",\n\t\"onLoad\",\n\t\"onLoadCapture\",\n\t\"onError\",\n\t\"onErrorCapture\",\n\t\"onKeyDown\",\n\t\"onKeyDownCapture\",\n\t\"onKeyPress\",\n\t\"onKeyPressCapture\",\n\t\"onKeyUp\",\n\t\"onKeyUpCapture\",\n\t\"onAbort\",\n\t\"onAbortCapture\",\n\t\"onCanPlay\",\n\t\"onCanPlayCapture\",\n\t\"onCanPlayThrough\",\n\t\"onCanPlayThroughCapture\",\n\t\"onDurationChange\",\n\t\"onDurationChangeCapture\",\n\t\"onEmptied\",\n\t\"onEmptiedCapture\",\n\t\"onEncrypted\",\n\t\"onEncryptedCapture\",\n\t\"onEnded\",\n\t\"onEndedCapture\",\n\t\"onLoadedData\",\n\t\"onLoadedDataCapture\",\n\t\"onLoadedMetadata\",\n\t\"onLoadedMetadataCapture\",\n\t\"onLoadStart\",\n\t\"onLoadStartCapture\",\n\t\"onPause\",\n\t\"onPauseCapture\",\n\t\"onPlay\",\n\t\"onPlayCapture\",\n\t\"onPlaying\",\n\t\"onPlayingCapture\",\n\t\"onProgress\",\n\t\"onProgressCapture\",\n\t\"onRateChange\",\n\t\"onRateChangeCapture\",\n\t\"onResize\",\n\t\"onResizeCapture\",\n\t\"onSeeked\",\n\t\"onSeekedCapture\",\n\t\"onSeeking\",\n\t\"onSeekingCapture\",\n\t\"onStalled\",\n\t\"onStalledCapture\",\n\t\"onSuspend\",\n\t\"onSuspendCapture\",\n\t\"onTimeUpdate\",\n\t\"onTimeUpdateCapture\",\n\t\"onVolumeChange\",\n\t\"onVolumeChangeCapture\",\n\t\"onWaiting\",\n\t\"onWaitingCapture\",\n\t\"onAuxClick\",\n\t\"onAuxClickCapture\",\n\t\"onClick\",\n\t\"onClickCapture\",\n\t\"onContextMenu\",\n\t\"onContextMenuCapture\",\n\t\"onDoubleClick\",\n\t\"onDoubleClickCapture\",\n\t\"onDrag\",\n\t\"onDragCapture\",\n\t\"onDragEnd\",\n\t\"onDragEndCapture\",\n\t\"onDragEnter\",\n\t\"onDragEnterCapture\",\n\t\"onDragExit\",\n\t\"onDragExitCapture\",\n\t\"onDragLeave\",\n\t\"onDragLeaveCapture\",\n\t\"onDragOver\",\n\t\"onDragOverCapture\",\n\t\"onDragStart\",\n\t\"onDragStartCapture\",\n\t\"onDrop\",\n\t\"onDropCapture\",\n\t\"onMouseDown\",\n\t\"onMouseDownCapture\",\n\t\"onMouseEnter\",\n\t\"onMouseLeave\",\n\t\"onMouseMove\",\n\t\"onMouseMoveCapture\",\n\t\"onMouseOut\",\n\t\"onMouseOutCapture\",\n\t\"onMouseOver\",\n\t\"onMouseOverCapture\",\n\t\"onMouseUp\",\n\t\"onMouseUpCapture\",\n\t\"onSelect\",\n\t\"onSelectCapture\",\n\t\"onTouchCancel\",\n\t\"onTouchCancelCapture\",\n\t\"onTouchEnd\",\n\t\"onTouchEndCapture\",\n\t\"onTouchMove\",\n\t\"onTouchMoveCapture\",\n\t\"onTouchStart\",\n\t\"onTouchStartCapture\",\n\t\"onPointerDown\",\n\t\"onPointerDownCapture\",\n\t\"onPointerMove\",\n\t\"onPointerMoveCapture\",\n\t\"onPointerUp\",\n\t\"onPointerUpCapture\",\n\t\"onPointerCancel\",\n\t\"onPointerCancelCapture\",\n\t\"onPointerEnter\",\n\t\"onPointerEnterCapture\",\n\t\"onPointerLeave\",\n\t\"onPointerLeaveCapture\",\n\t\"onPointerOver\",\n\t\"onPointerOverCapture\",\n\t\"onPointerOut\",\n\t\"onPointerOutCapture\",\n\t\"onGotPointerCapture\",\n\t\"onGotPointerCaptureCapture\",\n\t\"onLostPointerCapture\",\n\t\"onLostPointerCaptureCapture\",\n\t\"onScroll\",\n\t\"onScrollCapture\",\n\t\"onWheel\",\n\t\"onWheelCapture\",\n\t\"onAnimationStart\",\n\t\"onAnimationStartCapture\",\n\t\"onAnimationEnd\",\n\t\"onAnimationEndCapture\",\n\t\"onAnimationIteration\",\n\t\"onAnimationIterationCapture\",\n\t\"onTransitionEnd\",\n\t\"onTransitionEndCapture\"\n]);\n/**\n* Check if a prop name is a React event handler\n*/\nfunction isReactEventHandler(name) {\n\treturn REACT_EVENT_HANDLERS.has(name);\n}\n/**\n* Check if a hook name is client-only (not allowed in server components)\n*/\nfunction isClientOnlyHook(name, allowedHooks = DEFAULT_ALLOWED_HOOKS) {\n\tif (!/^use[A-Z]/.test(name)) return false;\n\tif (allowedHooks.has(name)) return false;\n\treturn true;\n}\n//#endregion\nexport { BROWSER_ONLY_GLOBALS, DEFAULT_ALLOWED_HOOKS, isClientOnlyHook, isReactEventHandler };\n\n//# sourceMappingURL=constants.js.map","import { BROWSER_ONLY_GLOBALS, DEFAULT_ALLOWED_HOOKS, isClientOnlyHook, isReactEventHandler } from \"./constants.js\";\n//#region src/rules/no-client-code-in-server-component/violation-detector.ts\n/**\n* Get line and column position for a node\n*/\nfunction getPosition(node, sourceFile) {\n\tconst { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n\treturn {\n\t\tline: line + 1,\n\t\tcolumn: character + 1\n\t};\n}\n/**\n* Creates a detector that finds client-only code violations in TypeScript AST\n*/\nfunction createViolationDetector(tsLib, options = {}) {\n\tconst allowedHooks = options.allowedHooks ?? DEFAULT_ALLOWED_HOOKS;\n\tconst checker = options.checker;\n\t/**\n\t* Check if a class declaration extends React.Component or React.PureComponent\n\t*/\n\tfunction isReactClassComponent(node) {\n\t\tif (!node.heritageClauses) return false;\n\t\tfor (const clause of node.heritageClauses) {\n\t\t\tif (clause.token !== tsLib.SyntaxKind.ExtendsKeyword) continue;\n\t\t\tfor (const type of clause.types) {\n\t\t\t\tconst expr = type.expression;\n\t\t\t\tif (tsLib.isPropertyAccessExpression(expr)) {\n\t\t\t\t\tconst propName = expr.name.text;\n\t\t\t\t\tif (propName === \"Component\" || propName === \"PureComponent\") {\n\t\t\t\t\t\tif (tsLib.isIdentifier(expr.expression)) {\n\t\t\t\t\t\t\tif (expr.expression.text === \"React\") return true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tsLib.isIdentifier(expr)) {\n\t\t\t\t\tconst name = expr.text;\n\t\t\t\t\tif (name === \"Component\" || name === \"PureComponent\") return true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Shared visitor logic that collects violations into the provided array\n\t*/\n\tfunction visitNode(node, sourceFile, violations) {\n\t\tif (tsLib.isClassDeclaration(node) && isReactClassComponent(node)) {\n\t\t\tconst name = node.name?.text ?? \"ClassComponent\";\n\t\t\tviolations.push({\n\t\t\t\ttype: \"class-component\",\n\t\t\t\tname,\n\t\t\t\tnode,\n\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t});\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst callee = node.expression;\n\t\t\tlet name = \"\";\n\t\t\tif (tsLib.isIdentifier(callee)) name = callee.text;\n\t\t\telse if (tsLib.isPropertyAccessExpression(callee)) name = callee.name.text;\n\t\t\tif (name && isClientOnlyHook(name, allowedHooks)) violations.push({\n\t\t\t\ttype: \"hook\",\n\t\t\t\tname,\n\t\t\t\tnode,\n\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t});\n\t\t}\n\t\tif (tsLib.isIdentifier(node)) {\n\t\t\tconst name = node.text;\n\t\t\tif (BROWSER_ONLY_GLOBALS.has(name)) {\n\t\t\t\tconst parent = node.parent;\n\t\t\t\tif (tsLib.isPropertyAccessExpression(parent) && parent.name === node) {} else if (tsLib.isPropertyAssignment(parent) && parent.name === node) {} else if (tsLib.isTypeReferenceNode(parent) || tsLib.isInterfaceDeclaration(parent) || tsLib.isTypeAliasDeclaration(parent)) {} else if (tsLib.isParameter(parent) && parent.name === node || tsLib.isVariableDeclaration(parent) && parent.name === node) {} else if (tsLib.isImportSpecifier(parent) || tsLib.isImportClause(parent)) {} else if (checker) {\n\t\t\t\t\tconst symbol = checker.getSymbolAtLocation(node);\n\t\t\t\t\tif (symbol) {\n\t\t\t\t\t\tconst declarations = symbol.getDeclarations();\n\t\t\t\t\t\tif (declarations?.length) if (declarations.some((decl) => {\n\t\t\t\t\t\t\tconst fileName = decl.getSourceFile().fileName;\n\t\t\t\t\t\t\treturn !fileName.includes(\"/node_modules/\") && !fileName.includes(\"/typescript/lib/\");\n\t\t\t\t\t\t})) {} else violations.push({\n\t\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t\t});\n\t\t\t\t\t\telse violations.push({\n\t\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t\t});\n\t\t\t\t\t} else violations.push({\n\t\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t});\n\t\t\t\t} else violations.push({\n\t\t\t\t\ttype: \"browser-global\",\n\t\t\t\t\tname,\n\t\t\t\t\tnode,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isJsxAttribute(node)) {\n\t\t\tconst attrName = node.name;\n\t\t\tif (tsLib.isIdentifier(attrName)) {\n\t\t\t\tconst name = attrName.text;\n\t\t\t\tconst value = node.initializer;\n\t\t\t\tif (isReactEventHandler(name)) violations.push({\n\t\t\t\t\ttype: \"event-handler\",\n\t\t\t\t\tname,\n\t\t\t\t\tnode,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t});\n\t\t\t\telse if (name !== \"style\" && name !== \"className\" && name !== \"key\" && name !== \"ref\" && name !== \"dangerouslySetInnerHTML\" && value && tsLib.isJsxExpression(value) && value.expression) {\n\t\t\t\t\tconst expr = value.expression;\n\t\t\t\t\tif (tsLib.isArrowFunction(expr) || tsLib.isFunctionExpression(expr)) violations.push({\n\t\t\t\t\t\ttype: \"function-prop\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\t\t...getPosition(node, sourceFile)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttsLib.forEachChild(node, (child) => visitNode(child, sourceFile, violations));\n\t}\n\tfunction detectViolations(sourceFile) {\n\t\tconst violations = [];\n\t\ttsLib.forEachChild(sourceFile, (child) => visitNode(child, sourceFile, violations));\n\t\treturn violations;\n\t}\n\tfunction detectViolationsInNode(node, sourceFile) {\n\t\tconst violations = [];\n\t\tvisitNode(node, sourceFile, violations);\n\t\treturn violations;\n\t}\n\treturn {\n\t\tdetectViolations,\n\t\tdetectViolationsInNode\n\t};\n}\n//#endregion\nexport { createViolationDetector };\n\n//# sourceMappingURL=violation-detector.js.map","//#region src/rules/no-client-code-in-server-component/transitive-analyzer.ts\n/**\n* Creates an analyzer that follows reachable symbol references\n* to find transitive violations, stopping at 'use client' boundaries.\n*/\nfunction createTransitiveAnalyzer(tsLib, program, checker, useClientResolver, violationDetector) {\n\tconst visitedSymbols = /* @__PURE__ */ new Set();\n\tconst analysisCache = /* @__PURE__ */ new Map();\n\tfunction symbolKey(symbol) {\n\t\treturn `${(symbol.getDeclarations()?.[0])?.getSourceFile().fileName ?? \"unknown\"}::${symbol.getName()}`;\n\t}\n\tfunction analyzeEntrySymbol(entrySymbol) {\n\t\tvisitedSymbols.clear();\n\t\tconst cached = analysisCache.get(symbolKey(entrySymbol));\n\t\tif (cached) return cached;\n\t\tconst violations = [];\n\t\tfunction visitSymbol(symbol, chain) {\n\t\t\tconst key = symbolKey(symbol);\n\t\t\tif (visitedSymbols.has(key)) return false;\n\t\t\tvisitedSymbols.add(key);\n\t\t\tconst decl = symbol.getDeclarations()?.[0];\n\t\t\tif (!decl) return false;\n\t\t\tconst sourceFile = decl.getSourceFile();\n\t\t\tconst fileName = sourceFile.fileName;\n\t\t\tif (fileName.includes(\"/node_modules/\") || fileName.endsWith(\".d.ts\")) return false;\n\t\t\tif (useClientResolver.hasUseClientDirective(fileName)) return true;\n\t\t\tconst traversalRoots = getTraversalRoots(decl);\n\t\t\tfor (const root of traversalRoots) {\n\t\t\t\tconst rootViolations = violationDetector.detectViolationsInNode(root, sourceFile);\n\t\t\t\tfor (const v of rootViolations) violations.push({\n\t\t\t\t\t...v,\n\t\t\t\t\tchain: [...chain]\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const root of traversalRoots) {\n\t\t\t\tconst identifiers = collectReachableIdentifiers(root, decl);\n\t\t\t\tfor (const ident of identifiers) {\n\t\t\t\t\tconst refSym = checker.getSymbolAtLocation(ident);\n\t\t\t\t\tif (!refSym) continue;\n\t\t\t\t\tconst aliased = tsLib.SymbolFlags.Alias & refSym.flags ? checker.getAliasedSymbol(refSym) : refSym;\n\t\t\t\t\tconst refFile = (aliased.getDeclarations()?.[0])?.getSourceFile().fileName;\n\t\t\t\t\tif (!refFile) continue;\n\t\t\t\t\tif (refFile.includes(\"/node_modules/\") || refFile.endsWith(\".d.ts\")) continue;\n\t\t\t\t\tconst edge = {\n\t\t\t\t\t\tfromFile: fileName,\n\t\t\t\t\t\ttoFile: refFile,\n\t\t\t\t\t\tviaSymbol: aliased.getName()\n\t\t\t\t\t};\n\t\t\t\t\tvisitSymbol(aliased, [...chain, edge]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\t/**\n\t\t* Get traversal roots based on declaration kind\n\t\t*/\n\t\tfunction getTraversalRoots(decl) {\n\t\t\tif (tsLib.isFunctionDeclaration(decl) && decl.body) return [decl.body];\n\t\t\tif (tsLib.isFunctionExpression(decl)) return [decl.body];\n\t\t\tif (tsLib.isArrowFunction(decl)) return [decl.body];\n\t\t\tif (tsLib.isVariableDeclaration(decl) && decl.initializer) {\n\t\t\t\tif (tsLib.isFunctionExpression(decl.initializer) || tsLib.isArrowFunction(decl.initializer)) return [decl.initializer.body];\n\t\t\t\treturn [decl.initializer];\n\t\t\t}\n\t\t\tif (tsLib.isClassDeclaration(decl) || tsLib.isClassExpression(decl)) {\n\t\t\t\tconst roots = [];\n\t\t\t\tfor (const member of decl.members) {\n\t\t\t\t\tif (tsLib.isMethodDeclaration(member) && member.body) roots.push(member.body);\n\t\t\t\t\tif (tsLib.isPropertyDeclaration(member) && member.initializer) roots.push(member.initializer);\n\t\t\t\t}\n\t\t\t\treturn roots;\n\t\t\t}\n\t\t\treturn [decl];\n\t\t}\n\t\t/**\n\t\t* Collect identifier nodes from a traversal root, skipping:\n\t\t* - The defining identifier for the symbol (avoid self-loop)\n\t\t* - Type-only positions\n\t\t* - Property names when not computed\n\t\t*/\n\t\tfunction collectReachableIdentifiers(root, originalDecl) {\n\t\t\tconst identifiers = [];\n\t\t\tlet declName;\n\t\t\tif (\"name\" in originalDecl && originalDecl.name) {\n\t\t\t\tconst nameNode = originalDecl.name;\n\t\t\t\tif (tsLib.isIdentifier(nameNode)) declName = nameNode.text;\n\t\t\t}\n\t\t\tfunction visit(node) {\n\t\t\t\tif (tsLib.isTypeReferenceNode(node) || tsLib.isInterfaceDeclaration(node) || tsLib.isTypeAliasDeclaration(node) || tsLib.isTypeQueryNode(node) || tsLib.isTypeParameterDeclaration(node)) return;\n\t\t\t\tif (tsLib.isIdentifier(node)) {\n\t\t\t\t\tif (node.text === declName) return;\n\t\t\t\t\tconst parent = node.parent;\n\t\t\t\t\tif (tsLib.isPropertyAccessExpression(parent) && parent.name === node) return;\n\t\t\t\t\tif (tsLib.isPropertyAssignment(parent) && parent.name === node) return;\n\t\t\t\t\tif (tsLib.isParameter(parent) && parent.name === node || tsLib.isVariableDeclaration(parent) && parent.name === node) return;\n\t\t\t\t\tidentifiers.push(node);\n\t\t\t\t}\n\t\t\t\ttsLib.forEachChild(node, visit);\n\t\t\t}\n\t\t\tvisit(root);\n\t\t\treturn identifiers;\n\t\t}\n\t\tconst result = {\n\t\t\tisClientBoundary: visitSymbol(entrySymbol, []),\n\t\t\tviolations\n\t\t};\n\t\tanalysisCache.set(symbolKey(entrySymbol), result);\n\t\treturn result;\n\t}\n\treturn { analyzeEntrySymbol };\n}\n//#endregion\nexport { createTransitiveAnalyzer };\n\n//# sourceMappingURL=transitive-analyzer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObjectNotArray = isObjectNotArray;\nexports.deepMerge = deepMerge;\n/**\n * Check if the variable contains an object strictly rejecting arrays\n * @returns `true` if obj is an object\n */\nfunction isObjectNotArray(obj) {\n return typeof obj === 'object' && obj != null && !Array.isArray(obj);\n}\n/**\n * Pure function - doesn't mutate either parameter!\n * Merges two objects together deeply, overwriting the properties in first with the properties in second\n * @param first The first object\n * @param second The second object\n * @returns a new object\n */\nfunction deepMerge(first = {}, second = {}) {\n // get the unique set of keys across both objects\n const keys = new Set([...Object.keys(first), ...Object.keys(second)]);\n return Object.fromEntries([...keys].map(key => {\n const firstHasKey = key in first;\n const secondHasKey = key in second;\n const firstValue = first[key];\n const secondValue = second[key];\n let value;\n if (firstHasKey && secondHasKey) {\n if (isObjectNotArray(firstValue) && isObjectNotArray(secondValue)) {\n // object type\n value = deepMerge(firstValue, secondValue);\n }\n else {\n // value type\n value = secondValue;\n }\n }\n else if (firstHasKey) {\n value = firstValue;\n }\n else {\n value = secondValue;\n }\n return [key, value];\n }));\n}\n//# sourceMappingURL=deepMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyDefault = applyDefault;\nconst deepMerge_1 = require(\"./deepMerge\");\n/**\n * Pure function - doesn't mutate either parameter!\n * Uses the default options and overrides with the options provided by the user\n * @param defaultOptions the defaults\n * @param userOptions the user opts\n * @returns the options with defaults\n */\nfunction applyDefault(defaultOptions, userOptions) {\n // clone defaults\n const options = structuredClone(defaultOptions);\n if (userOptions == null) {\n return options;\n }\n // For avoiding the type error\n // `This expression is not callable. Type 'unknown' has no call signatures.ts(2349)`\n options.forEach((opt, i) => {\n // eslint-disable-next-line @typescript-eslint/internal/eqeq-nullish\n if (userOptions[i] !== undefined) {\n const userOpt = userOptions[i];\n if ((0, deepMerge_1.isObjectNotArray)(userOpt) && (0, deepMerge_1.isObjectNotArray)(opt)) {\n options[i] = (0, deepMerge_1.deepMerge)(opt, userOpt);\n }\n else {\n options[i] = userOpt;\n }\n }\n });\n return options;\n}\n//# sourceMappingURL=applyDefault.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parserSeemsToBeTSESLint = parserSeemsToBeTSESLint;\nfunction parserSeemsToBeTSESLint(parser) {\n return !!parser && /(?:typescript-eslint|\\.\\.)[\\w/\\\\]*parser/.test(parser);\n}\n//# sourceMappingURL=parserSeemsToBeTSESLint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParserServices = getParserServices;\nconst parserSeemsToBeTSESLint_1 = require(\"./parserSeemsToBeTSESLint\");\nconst ERROR_MESSAGE_REQUIRES_PARSER_SERVICES = \"You have used a rule which requires type information, but don't have parserOptions set to generate type information for this file. See https://tseslint.com/typed-linting for enabling linting with type information.\";\nconst ERROR_MESSAGE_UNKNOWN_PARSER = 'Note: detected a parser other than @typescript-eslint/parser. Make sure the parser is configured to forward \"parserOptions.project\" to @typescript-eslint/parser.';\nfunction getParserServices(context, allowWithoutFullTypeInformation = false) {\n const parser = \n // eslint-disable-next-line @typescript-eslint/no-deprecated -- For compatibility with ESLint 8\n context.parserPath || context.languageOptions.parser?.meta?.name;\n // This check is unnecessary if the user is using the latest version of our parser.\n //\n // However the world isn't perfect:\n // - Users often use old parser versions.\n // Old versions of the parser would not return any parserServices unless parserOptions.project was set.\n // - Users sometimes use parsers that aren't @typescript-eslint/parser\n // Other parsers won't return the parser services we expect (if they return any at all).\n //\n // This check allows us to handle bad user setups whilst providing a nice user-facing\n // error message explaining the problem.\n if (context.sourceCode.parserServices?.esTreeNodeToTSNodeMap == null ||\n context.sourceCode.parserServices.tsNodeToESTreeNodeMap == null) {\n throwError(parser);\n }\n // if a rule requires full type information, then hard fail if it doesn't exist\n // this forces the user to supply parserOptions.project\n if (context.sourceCode.parserServices.program == null &&\n !allowWithoutFullTypeInformation) {\n throwError(parser);\n }\n return context.sourceCode.parserServices;\n}\n/* eslint-enable @typescript-eslint/unified-signatures */\nfunction throwError(parser) {\n const messages = [\n ERROR_MESSAGE_REQUIRES_PARSER_SERVICES,\n `Parser: ${parser || '(unknown)'}`,\n !(0, parserSeemsToBeTSESLint_1.parserSeemsToBeTSESLint)(parser) && ERROR_MESSAGE_UNKNOWN_PARSER,\n ].filter(Boolean);\n throw new Error(messages.join('\\n'));\n}\n//# sourceMappingURL=getParserServices.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=InferTypesFromRule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullThrowsReasons = void 0;\nexports.nullThrows = nullThrows;\n/**\n * A set of common reasons for calling nullThrows\n */\nexports.NullThrowsReasons = {\n MissingParent: 'Expected node to have a parent.',\n MissingToken: (token, thing) => `Expected to find a ${token} for the ${thing}.`,\n};\n/**\n * Assert that a value must not be null or undefined.\n * This is a nice explicit alternative to the non-null assertion operator.\n */\nfunction nullThrows(value, message) {\n if (value == null) {\n throw new Error(`Non-null Assertion Failed: ${message}`);\n }\n return value;\n}\n//# sourceMappingURL=nullThrows.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuleCreator = RuleCreator;\nconst applyDefault_1 = require(\"./applyDefault\");\n/**\n * Creates reusable function to create rules with default options and docs URLs.\n *\n * @param urlCreator Creates a documentation URL for a given rule name.\n * @returns Function to create a rule with the docs URL format.\n */\nfunction RuleCreator(urlCreator) {\n // This function will get much easier to call when this is merged https://github.com/Microsoft/TypeScript/pull/26349\n // TODO - when the above PR lands; add type checking for the context.report `data` property\n return function createNamedRule({ meta, name, ...rule }) {\n const ruleWithDocs = createRule({\n meta: {\n ...meta,\n docs: {\n ...meta.docs,\n url: urlCreator(name),\n },\n },\n name,\n ...rule,\n });\n return ruleWithDocs;\n };\n}\nfunction createRule({ create, \n// Keep accepting deprecated defaultOptions for backward compatibility.\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ndefaultOptions, meta, name, }) {\n const resolvedDefaultOptions = (meta.defaultOptions ??\n defaultOptions ??\n []);\n return {\n create(context) {\n const optionsWithDefault = (0, applyDefault_1.applyDefault)(resolvedDefaultOptions, context.options);\n return create(context, optionsWithDefault);\n },\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- For compatibility with ESLint 8, see #12842\n defaultOptions,\n meta,\n name,\n };\n}\n/**\n * Creates a well-typed TSESLint custom ESLint rule without a docs URL.\n *\n * @returns Well-typed TSESLint custom ESLint rule.\n * @remarks It is generally better to provide a docs URL function to RuleCreator.\n */\nRuleCreator.withoutDocs = function withoutDocs(args) {\n return createRule(args);\n};\n//# sourceMappingURL=RuleCreator.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./applyDefault\"), exports);\n__exportStar(require(\"./deepMerge\"), exports);\n__exportStar(require(\"./getParserServices\"), exports);\n__exportStar(require(\"./InferTypesFromRule\"), exports);\n__exportStar(require(\"./nullThrows\"), exports);\n__exportStar(require(\"./RuleCreator\"), exports);\n//# sourceMappingURL=index.js.map","export * as ESLintUtils from \"@typescript-eslint/utils/eslint-utils\";\n","import { getDocsUrl } from \"../../utils/get-docs-url.js\";\nimport { createUseClientResolver } from \"../../shared/use-client-resolver.js\";\nimport { DEFAULT_ALLOWED_HOOKS } from \"./constants.js\";\nimport { createViolationDetector } from \"./violation-detector.js\";\nimport { createTransitiveAnalyzer } from \"./transitive-analyzer.js\";\nimport path from \"node:path\";\nimport { ESLintUtils } from \"@typescript-eslint/utils\";\nimport * as ts from \"typescript\";\n//#region src/rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.ts\nvar name = \"no-client-code-in-server-component\";\nvar TRIGGER_HINT = \"Triggered by rendering \\\"{{entry}}\\\".\";\nvar rule = ESLintUtils.RuleCreator(getDocsUrl)({\n\tname,\n\tmeta: {\n\t\ttype: \"problem\",\n\t\tdocs: {\n\t\t\tdescription: \"Disallow client-only code inside server components\",\n\t\t\trecommended: \"error\"\n\t\t},\n\t\tschema: [{\n\t\t\ttype: \"object\",\n\t\t\tproperties: { allowedServerHooks: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { type: \"string\" },\n\t\t\t\tdescription: \"Additional hooks that are allowed in server components (e.g., custom server-safe hooks)\"\n\t\t\t} },\n\t\t\tadditionalProperties: false\n\t\t}],\n\t\tmessages: {\n\t\t\thookInServerComponent: \"\\\"{{name}}\\\" hook {{location}} cannot be used in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tbrowserGlobalInServerComponent: \"\\\"{{name}}\\\" browser API {{location}} is not available in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\teventHandlerInServerComponent: \"\\\"{{name}}\\\" event handler {{location}} cannot be used in server components. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tfunctionPropInServerComponent: \"\\\"{{name}}\\\" function prop {{location}} cannot be passed in server components. Functions cannot be serialized from server to client. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\",\n\t\t\tclassComponentInServerComponent: \"\\\"{{name}}\\\" class component {{location}} cannot be used in server components. Class components require client-side lifecycle methods. \" + TRIGGER_HINT + \" To use client functionality, either: (1) pass the client component as a prop/slot to the server component, or (2) move this code to a separate file and add \\\"use client\\\" directive.\"\n\t\t}\n\t},\n\tdefaultOptions: [{ allowedServerHooks: [] }],\n\tcreate(context, [options]) {\n\t\tconst services = ESLintUtils.getParserServices(context);\n\t\tconst program = services.program;\n\t\tconst checker = program.getTypeChecker();\n\t\tconst allowedHooks = new Set([...DEFAULT_ALLOWED_HOOKS, ...options.allowedServerHooks]);\n\t\tconst useClientResolver = createUseClientResolver(program);\n\t\tconst violationDetector = createViolationDetector(ts, {\n\t\t\tallowedHooks,\n\t\t\tchecker\n\t\t});\n\t\tconst transitiveAnalyzer = createTransitiveAnalyzer(ts, program, checker, useClientResolver, violationDetector);\n\t\treturn { CallExpression(node) {\n\t\t\tconst sourceFile = services.esTreeNodeToTSNodeMap.get(node).getSourceFile();\n\t\t\tif (useClientResolver.hasUseClientDirective(sourceFile.fileName)) return;\n\t\t\tconst rootKind = getServerRootKind(node);\n\t\t\tif (!rootKind) return;\n\t\t\tif (rootKind === \"createCompositeComponent\") {\n\t\t\t\tconst callback = node.arguments[0];\n\t\t\t\tif (!callback) return;\n\t\t\t\tconst tsNode = services.esTreeNodeToTSNodeMap.get(callback);\n\t\t\t\tif (ts.isFunctionLike(tsNode)) analyzeServerComponentCallback(tsNode, node, rootKind);\n\t\t\t\telse if (ts.isIdentifier(tsNode)) analyzeDirectComponentReference(tsNode, node, rootKind);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst element = node.arguments[0];\n\t\t\tif (!element) return;\n\t\t\tanalyzeServerComponentNode(services.esTreeNodeToTSNodeMap.get(element), node, rootKind);\n\t\t} };\n\t\tfunction getServerRootKind(node) {\n\t\t\tif (node.callee.type === \"Identifier\") {\n\t\t\t\tif (node.callee.name === \"createCompositeComponent\") return \"createCompositeComponent\";\n\t\t\t\tif (node.callee.name === \"renderServerComponent\") return \"renderServerComponent\";\n\t\t\t}\n\t\t\tif (node.callee.type === \"MemberExpression\" && node.callee.property.type === \"Identifier\") {\n\t\t\t\tif (node.callee.property.name === \"createCompositeComponent\") return \"createCompositeComponent\";\n\t\t\t\tif (node.callee.property.name === \"renderServerComponent\") return \"renderServerComponent\";\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\tfunction analyzeServerComponentNode(node, eslintNode, rootKind) {\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tconst sourceFile = node.getSourceFile();\n\t\t\tconst directViolations = violationDetector.detectViolations(sourceFile);\n\t\t\tconst start = node.getStart();\n\t\t\tconst end = node.getEnd();\n\t\t\tfor (const violation of directViolations) {\n\t\t\t\tconst violationPos = violation.node.getStart();\n\t\t\t\tif (violationPos >= start && violationPos <= end) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, [], rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst componentRefs = findComponentReferences(node);\n\t\t\tfor (const ref of componentRefs) {\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\t\tif (!symbol) continue;\n\t\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\t\tif (result.isClientBoundary) continue;\n\t\t\t\tfor (const violation of result.violations) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction analyzeServerComponentCallback(callback, eslintNode, rootKind) {\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tconst parameterNames = /* @__PURE__ */ new Set();\n\t\t\tfor (const param of callback.parameters) collectParameterBindings(param.name, parameterNames);\n\t\t\tconst body = callback.body;\n\t\t\tif (body) {\n\t\t\t\tconst sourceFile = callback.getSourceFile();\n\t\t\t\tconst directViolations = violationDetector.detectViolations(sourceFile);\n\t\t\t\tconst callbackStart = body.getStart();\n\t\t\t\tconst callbackEnd = body.getEnd();\n\t\t\t\tfor (const violation of directViolations) {\n\t\t\t\t\tconst violationPos = violation.node.getStart();\n\t\t\t\t\tif (violationPos >= callbackStart && violationPos <= callbackEnd) {\n\t\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\t\treportViolation(violation, [], rootKind, eslintNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst componentRefs = findComponentReferences(callback);\n\t\t\tfor (const ref of componentRefs) {\n\t\t\t\tif (parameterNames.has(ref.text)) continue;\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\t\tif (!symbol) continue;\n\t\t\t\tif (symbol.getDeclarations()?.some((d) => isWithinParameters(d, callback))) continue;\n\t\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\t\tif (result.isClientBoundary) continue;\n\t\t\t\tfor (const violation of result.violations) {\n\t\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Analyze a component passed directly to createCompositeComponent(Component)\n\t\t*/\n\t\tfunction analyzeDirectComponentReference(ref, eslintNode, rootKind = \"createCompositeComponent\") {\n\t\t\tconst symbol = checker.getSymbolAtLocation(ref);\n\t\t\tif (!symbol) return;\n\t\t\tconst resolvedSymbol = ts.SymbolFlags.Alias & symbol.flags ? checker.getAliasedSymbol(symbol) : symbol;\n\t\t\tconst result = transitiveAnalyzer.analyzeEntrySymbol(resolvedSymbol);\n\t\t\tif (result.isClientBoundary) return;\n\t\t\tconst reportedViolations = /* @__PURE__ */ new Set();\n\t\t\tfor (const violation of result.violations) {\n\t\t\t\tconst key = `${violation.fileName}:${violation.line}:${violation.name}`;\n\t\t\t\tif (!reportedViolations.has(key)) {\n\t\t\t\t\treportedViolations.add(key);\n\t\t\t\t\treportViolation(violation, violation.chain, rootKind, eslintNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* Collect all binding names from a parameter (handles destructuring)\n\t\t*/\n\t\tfunction collectParameterBindings(bindingName, names) {\n\t\t\tfunction collectFromBinding(node) {\n\t\t\t\tif (ts.isIdentifier(node)) names.add(node.text);\n\t\t\t\telse if (ts.isObjectBindingPattern(node)) for (const element of node.elements) collectFromBinding(element.name);\n\t\t\t\telse if (ts.isArrayBindingPattern(node)) {\n\t\t\t\t\tfor (const element of node.elements) if (ts.isBindingElement(element)) collectFromBinding(element.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcollectFromBinding(bindingName);\n\t\t}\n\t\t/**\n\t\t* Check if a declaration is within the parameters of the callback\n\t\t*/\n\t\tfunction isWithinParameters(decl, callback) {\n\t\t\tlet current = decl;\n\t\t\twhile (current) {\n\t\t\t\tif (ts.isParameter(current)) {\n\t\t\t\t\tconst paramParent = current.parent;\n\t\t\t\t\tif (ts.isFunctionLike(paramParent) && paramParent === callback) return true;\n\t\t\t\t}\n\t\t\t\tcurrent = current.parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tfunction findComponentReferences(node) {\n\t\t\tconst refs = [];\n\t\t\tfunction visit(n) {\n\t\t\t\tif (ts.isJsxOpeningElement(n) || ts.isJsxSelfClosingElement(n)) {\n\t\t\t\t\tconst tagName = n.tagName;\n\t\t\t\t\tif (ts.isIdentifier(tagName) && /^[A-Z]/.test(tagName.text)) refs.push(tagName);\n\t\t\t\t}\n\t\t\t\tif (ts.isCallExpression(n)) {\n\t\t\t\t\tconst callee = n.expression;\n\t\t\t\t\tif (ts.isIdentifier(callee) && /^[A-Z]/.test(callee.text)) refs.push(callee);\n\t\t\t\t}\n\t\t\t\tts.forEachChild(n, visit);\n\t\t\t}\n\t\t\tvisit(node);\n\t\t\treturn refs;\n\t\t}\n\t\tfunction reportViolation(violation, chain, entryComponentName, eslintNode) {\n\t\t\tconst location = formatLocation(violation, chain);\n\t\t\tconst messageId = getMessageId(violation.type);\n\t\t\tcontext.report({\n\t\t\t\tnode: eslintNode,\n\t\t\t\tmessageId,\n\t\t\t\tdata: {\n\t\t\t\t\tname: violation.name,\n\t\t\t\t\tlocation,\n\t\t\t\t\tentry: entryComponentName,\n\t\t\t\t\tfileName: getRelativePath(violation.fileName)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tfunction getMessageId(type) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"hook\": return \"hookInServerComponent\";\n\t\t\t\tcase \"browser-global\": return \"browserGlobalInServerComponent\";\n\t\t\t\tcase \"event-handler\": return \"eventHandlerInServerComponent\";\n\t\t\t\tcase \"function-prop\": return \"functionPropInServerComponent\";\n\t\t\t\tcase \"class-component\": return \"classComponentInServerComponent\";\n\t\t\t}\n\t\t}\n\t\tfunction formatLocation(violation, chain) {\n\t\t\tif (chain.length > 0) return `(via ${chain.map((e) => getRelativePath(e.toFile)).join(\" -> \")}) at ${getRelativePath(violation.fileName)}:${violation.line}`;\n\t\t\treturn `at ${getRelativePath(violation.fileName)}:${violation.line}`;\n\t\t}\n\t\tfunction getRelativePath(fileName) {\n\t\t\tconst cwd = context.cwd;\n\t\t\treturn path.relative(cwd, fileName);\n\t\t}\n\t}\n});\n//#endregion\nexport { name, rule };\n\n//# sourceMappingURL=no-client-code-in-server-component.rule.js.map","//#region src/rules/no-async-client-component/constants.ts\n/**\n* Route option names that accept component references.\n* These make the referenced component a \"client root\".\n*/\nvar ROUTE_COMPONENT_OPTION_NAMES = [\n\t\"component\",\n\t\"pendingComponent\",\n\t\"errorComponent\",\n\t\"notFoundComponent\"\n];\n/**\n* Function names that create routes (client entry points).\n*/\nvar ROUTE_CREATOR_NAMES = [\n\t\"createFileRoute\",\n\t\"createRootRoute\",\n\t\"createRootRouteWithContext\"\n];\n/**\n* Function names that create server-component roots.\n*/\nvar SERVER_COMPONENT_ROOTS = [\"renderServerComponent\", \"createCompositeComponent\"];\n//#endregion\nexport { ROUTE_COMPONENT_OPTION_NAMES, ROUTE_CREATOR_NAMES, SERVER_COMPONENT_ROOTS };\n\n//# sourceMappingURL=constants.js.map","import { ROUTE_COMPONENT_OPTION_NAMES, ROUTE_CREATOR_NAMES, SERVER_COMPONENT_ROOTS } from \"./constants.js\";\n//#region src/rules/no-async-client-component/render-graph-builder.ts\n/**\n* Builds a render graph from the TypeScript program.\n* Indexes components, JSX edges, server roots, and client roots.\n*/\nfunction createRenderGraphBuilder(tsLib, program, checker) {\n\tconst graph = {\n\t\tcomponents: /* @__PURE__ */ new Map(),\n\t\tedges: [],\n\t\tserverRoots: /* @__PURE__ */ new Set(),\n\t\tclientRoots: /* @__PURE__ */ new Set(),\n\t\tuseClientFiles: /* @__PURE__ */ new Set(),\n\t\trouteOptionUsages: /* @__PURE__ */ new Map(),\n\t\trouteOptionRootsByFile: /* @__PURE__ */ new Map()\n\t};\n\treturn {\n\t\tbuild() {\n\t\t\tfor (const sourceFile of program.getSourceFiles()) {\n\t\t\t\tif (sourceFile.isDeclarationFile) continue;\n\t\t\t\tif (sourceFile.fileName.includes(\"node_modules\")) continue;\n\t\t\t\tif (!fileCanContribute(sourceFile)) continue;\n\t\t\t\tprocessSourceFile(sourceFile);\n\t\t\t}\n\t\t\treturn graph;\n\t\t},\n\t\tgetGraph() {\n\t\t\treturn graph;\n\t\t}\n\t};\n\t/**\n\t* Quick text-based check to skip files that can't contribute edges or roots.\n\t* A file can contribute if it might have:\n\t* - JSX (components, edges)\n\t* - 'use client' directive (client roots)\n\t* - createFileRoute/createRootRoute (route-option roots)\n\t* - renderServerComponent/createCompositeComponent (server roots)\n\t\n\t*/\n\tfunction fileCanContribute(sourceFile) {\n\t\tconst text = sourceFile.text;\n\t\tconst hasJsx = text.includes(\"<\") && (text.includes(\"/>\") || text.includes(\"</\"));\n\t\tconst hasUseClient = text.includes(\"use client\");\n\t\tconst hasRouteCreator = text.includes(\"createFileRoute\") || text.includes(\"createRootRoute\") || text.includes(\"createRootRouteWithContext\");\n\t\tconst hasServerComponentRoot = SERVER_COMPONENT_ROOTS.some((name) => text.includes(name));\n\t\treturn hasJsx || hasUseClient || hasRouteCreator || hasServerComponentRoot;\n\t}\n\tfunction processSourceFile(sourceFile) {\n\t\tif (hasUseClientDirective(sourceFile)) graph.useClientFiles.add(sourceFile.fileName);\n\t\tvisitNode(sourceFile, sourceFile, null);\n\t}\n\tfunction hasUseClientDirective(sourceFile) {\n\t\tconst firstStatement = sourceFile.statements[0];\n\t\tif (!firstStatement) return false;\n\t\tif (tsLib.isExpressionStatement(firstStatement) && tsLib.isStringLiteral(firstStatement.expression) && firstStatement.expression.text === \"use client\") return true;\n\t\treturn false;\n\t}\n\tfunction visitNode(node, sourceFile, currentComponent) {\n\t\tif (tsLib.isFunctionDeclaration(node) && node.name) {\n\t\t\tif (isPascalCase(node.name.text)) {\n\t\t\t\tconst key = makeKey(sourceFile.fileName, node.name.text);\n\t\t\t\tgraph.components.set(key, {\n\t\t\t\t\tname: node.name.text,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\tnode,\n\t\t\t\t\tisAsync: hasAsyncModifier(node),\n\t\t\t\t\tline: getLine(sourceFile, node)\n\t\t\t\t});\n\t\t\t\tif (graph.useClientFiles.has(sourceFile.fileName)) graph.clientRoots.add(key);\n\t\t\t\tif (node.body) tsLib.forEachChild(node.body, (child) => visitNode(child, sourceFile, key));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isVariableStatement(node)) {\n\t\t\tfor (const decl of node.declarationList.declarations) if (tsLib.isIdentifier(decl.name) && isPascalCase(decl.name.text) && decl.initializer && isFunctionLike(decl.initializer)) {\n\t\t\t\tconst key = makeKey(sourceFile.fileName, decl.name.text);\n\t\t\t\tgraph.components.set(key, {\n\t\t\t\t\tname: decl.name.text,\n\t\t\t\t\tfileName: sourceFile.fileName,\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tisAsync: isAsyncFunctionLike(decl.initializer),\n\t\t\t\t\tline: getLine(sourceFile, decl)\n\t\t\t\t});\n\t\t\t\tif (graph.useClientFiles.has(sourceFile.fileName)) graph.clientRoots.add(key);\n\t\t\t\tconst funcNode = decl.initializer;\n\t\t\t\ttsLib.forEachChild(funcNode.body, (child) => visitNode(child, sourceFile, key));\n\t\t\t} else if (decl.initializer) visitNode(decl.initializer, sourceFile, currentComponent);\n\t\t\treturn;\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst serverRootKind = getServerRootKind(node, checker);\n\t\t\tif (serverRootKind === \"createCompositeComponent\") {\n\t\t\t\tconst callback = node.arguments[0];\n\t\t\t\tif (callback && isFunctionLike(callback)) collectJsxComponentRefs(callback, sourceFile, currentComponent, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (serverRootKind === \"renderServerComponent\") {\n\t\t\t\tconst element = node.arguments[0];\n\t\t\t\tif (element) collectJsxComponentRefs(element, sourceFile, currentComponent, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isCallExpression(node)) {\n\t\t\tconst routeOptions = getRouteOptionsObject(node);\n\t\t\tif (routeOptions) {\n\t\t\t\tfor (const prop of routeOptions.properties) if (tsLib.isPropertyAssignment(prop) && tsLib.isIdentifier(prop.name) && ROUTE_COMPONENT_OPTION_NAMES.includes(prop.name.text)) markAsClientRoot(prop.initializer, sourceFile, currentComponent, prop);\n\t\t\t}\n\t\t}\n\t\tif (tsLib.isJsxOpeningElement(node) || tsLib.isJsxSelfClosingElement(node)) {\n\t\t\tconst tagName = node.tagName;\n\t\t\tif (tsLib.isIdentifier(tagName) && isPascalCase(tagName.text)) {\n\t\t\t\tconst symbol = checker.getSymbolAtLocation(tagName);\n\t\t\t\tif (symbol) {\n\t\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\t\tconst toKey = makeKey(declFile, tagName.text);\n\t\t\t\t\t\t\tif (currentComponent) graph.edges.push({\n\t\t\t\t\t\t\t\tfromFile: sourceFile.fileName,\n\t\t\t\t\t\t\t\tfromComponent: currentComponent.split(\":\")[1],\n\t\t\t\t\t\t\t\ttoFile: declFile,\n\t\t\t\t\t\t\t\ttoComponent: tagName.text,\n\t\t\t\t\t\t\t\ttoComponentKey: toKey,\n\t\t\t\t\t\t\t\tjsxNode: node,\n\t\t\t\t\t\t\t\tjsxLine: getLine(sourceFile, node)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttsLib.forEachChild(node, (child) => visitNode(child, sourceFile, currentComponent));\n\t}\n\tfunction getServerRootKind(node, _checker) {\n\t\tif (tsLib.isIdentifier(node.expression)) {\n\t\t\tconst name = node.expression.text;\n\t\t\treturn SERVER_COMPONENT_ROOTS.includes(name) ? name : null;\n\t\t}\n\t\tif (tsLib.isPropertyAccessExpression(node.expression) && tsLib.isIdentifier(node.expression.name)) {\n\t\t\tconst name = node.expression.name.text;\n\t\t\treturn SERVER_COMPONENT_ROOTS.includes(name) ? name : null;\n\t\t}\n\t\treturn null;\n\t}\n\tfunction getRouteOptionsObject(node) {\n\t\tconst optionsArg = node.arguments[0];\n\t\tif (!optionsArg || !tsLib.isObjectLiteralExpression(optionsArg)) return;\n\t\tconst routeCreator = findRouteCreatorFromCallee(node.expression);\n\t\tif (!routeCreator) return;\n\t\tconst routeCreatorName = tsLib.isIdentifier(routeCreator) ? routeCreator.text : routeCreator.name.text;\n\t\tif (ROUTE_CREATOR_NAMES.includes(routeCreatorName)) return optionsArg;\n\t}\n\tfunction findRouteCreatorFromCallee(expr) {\n\t\tif (tsLib.isParenthesizedExpression(expr)) return findRouteCreatorFromCallee(expr.expression);\n\t\tif (tsLib.isCallExpression(expr)) return findRouteCreatorFromCallee(expr.expression);\n\t\tif (tsLib.isPropertyAccessExpression(expr)) {\n\t\t\tif (tsLib.isIdentifier(expr.name)) {\n\t\t\t\tif (ROUTE_CREATOR_NAMES.includes(expr.name.text)) return expr;\n\t\t\t}\n\t\t\treturn findRouteCreatorFromCallee(expr.expression);\n\t\t}\n\t\tif (tsLib.isIdentifier(expr)) return expr;\n\t}\n\tfunction markAsClientRoot(node, sourceFile, _currentComponent, usageNode) {\n\t\tif (tsLib.isIdentifier(node)) {\n\t\t\tconst componentName = node.text;\n\t\t\tconst symbol = checker.getSymbolAtLocation(node);\n\t\t\tif (symbol) {\n\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\tif (resolved) {\n\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\tconst key = makeKey(declFile, componentName);\n\t\t\t\t\t\tgraph.clientRoots.add(key);\n\t\t\t\t\t\tif (usageNode) {\n\t\t\t\t\t\t\tgraph.routeOptionUsages.set(key, {\n\t\t\t\t\t\t\t\tcomponentKey: key,\n\t\t\t\t\t\t\t\tusageNode,\n\t\t\t\t\t\t\t\tusageLine: getLine(sourceFile, usageNode),\n\t\t\t\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst fallbackKey = makeKey(sourceFile.fileName, componentName);\n\t\t\tgraph.clientRoots.add(fallbackKey);\n\t\t\tif (usageNode) {\n\t\t\t\tgraph.routeOptionUsages.set(fallbackKey, {\n\t\t\t\t\tcomponentKey: fallbackKey,\n\t\t\t\t\tusageNode,\n\t\t\t\t\tusageLine: getLine(sourceFile, usageNode),\n\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t});\n\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, fallbackKey);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isFunctionLike(node)) collectJsxComponentRefs(node, sourceFile, null, false, usageNode);\n\t}\n\tfunction collectJsxComponentRefs(node, sourceFile, _currentComponent, isServerContext, usageNode) {\n\t\tfunction walk(n) {\n\t\t\tif (tsLib.isJsxOpeningElement(n) || tsLib.isJsxSelfClosingElement(n)) {\n\t\t\t\tconst tagName = n.tagName;\n\t\t\t\tif (tsLib.isIdentifier(tagName) && isPascalCase(tagName.text)) {\n\t\t\t\t\tconst symbol = checker.getSymbolAtLocation(tagName);\n\t\t\t\t\tif (symbol) {\n\t\t\t\t\t\tconst resolved = resolveSymbol(symbol);\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tconst decls = resolved.getDeclarations();\n\t\t\t\t\t\t\tif (decls && decls.length > 0) {\n\t\t\t\t\t\t\t\tconst declFile = decls[0].getSourceFile().fileName;\n\t\t\t\t\t\t\t\tconst key = makeKey(declFile, tagName.text);\n\t\t\t\t\t\t\t\tif (isServerContext) graph.serverRoots.add(key);\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tgraph.clientRoots.add(key);\n\t\t\t\t\t\t\t\t\tconst effectiveUsageNode = usageNode ?? n;\n\t\t\t\t\t\t\t\t\tgraph.routeOptionUsages.set(key, {\n\t\t\t\t\t\t\t\t\t\tcomponentKey: key,\n\t\t\t\t\t\t\t\t\t\tusageNode: effectiveUsageNode,\n\t\t\t\t\t\t\t\t\t\tusageLine: getLine(sourceFile, effectiveUsageNode),\n\t\t\t\t\t\t\t\t\t\tfileName: sourceFile.fileName\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\taddToRouteOptionRootsByFile(sourceFile.fileName, key);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsLib.forEachChild(n, walk);\n\t\t}\n\t\twalk(node);\n\t}\n\tfunction resolveSymbol(symbol) {\n\t\tif (symbol.flags & tsLib.SymbolFlags.Alias) return checker.getAliasedSymbol(symbol);\n\t\treturn symbol;\n\t}\n\tfunction isPascalCase(name) {\n\t\treturn /^[A-Z]/.test(name);\n\t}\n\tfunction hasAsyncModifier(node) {\n\t\treturn node.modifiers?.some((mod) => mod.kind === tsLib.SyntaxKind.AsyncKeyword) ?? false;\n\t}\n\tfunction isFunctionLike(node) {\n\t\treturn tsLib.isArrowFunction(node) || tsLib.isFunctionExpression(node) || tsLib.isFunctionDeclaration(node);\n\t}\n\tfunction isAsyncFunctionLike(node) {\n\t\tif (tsLib.isArrowFunction(node) || tsLib.isFunctionExpression(node)) return hasAsyncModifier(node);\n\t\treturn false;\n\t}\n\tfunction makeKey(fileName, componentName) {\n\t\treturn `${fileName}:${componentName}`;\n\t}\n\tfunction getLine(sourceFile, node) {\n\t\treturn sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1;\n\t}\n\tfunction addToRouteOptionRootsByFile(fileName, key) {\n\t\tlet set = graph.routeOptionRootsByFile.get(fileName);\n\t\tif (!set) {\n\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\tgraph.routeOptionRootsByFile.set(fileName, set);\n\t\t}\n\t\tset.add(key);\n\t}\n}\n//#endregion\nexport { createRenderGraphBuilder };\n\n//# sourceMappingURL=render-graph-builder.js.map","//#region src/rules/no-async-client-component/context-analyzer.ts\n/**\n* Analyzes the render graph to propagate server/client context.\n*\n* Algorithm:\n* 1. Mark server roots as server context, propagate to descendants\n* 2. Stop propagation at 'use client' boundaries\n* 3. Mark client roots as client context, propagate to descendants\n* 4. Components reachable from both => client wins (tainted)\n\n*/\nfunction analyzeContext(graph) {\n\tconst contexts = /* @__PURE__ */ new Map();\n\tfor (const [key, component] of graph.components) contexts.set(key, {\n\t\tkey,\n\t\tcomponent,\n\t\tisServerContext: false,\n\t\tisClientContext: false\n\t});\n\tconst adjacency = buildAdjacencyList(graph.edges);\n\tconst serverVisited = /* @__PURE__ */ new Set();\n\tfor (const serverRoot of graph.serverRoots) propagateServerContext(serverRoot, serverVisited, graph, contexts, adjacency);\n\tconst clientVisited = /* @__PURE__ */ new Set();\n\tfor (const clientRoot of graph.clientRoots) {\n\t\tconst ctx = contexts.get(clientRoot);\n\t\tif (!ctx) continue;\n\t\tlet reason;\n\t\tif (graph.useClientFiles.has(ctx.component.fileName)) reason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t\telse {\n\t\t\tconst routeUsage = graph.routeOptionUsages.get(clientRoot);\n\t\t\treason = {\n\t\t\t\ttype: \"route-option\",\n\t\t\t\tfileName: ctx.component.fileName,\n\t\t\t\tusageFile: routeUsage?.fileName,\n\t\t\t\tusageNode: routeUsage?.usageNode,\n\t\t\t\tusageLine: routeUsage?.usageLine\n\t\t\t};\n\t\t}\n\t\tpropagateClientContext(clientRoot, clientVisited, contexts, adjacency, reason);\n\t}\n\tfor (const [_key, ctx] of contexts) if (graph.useClientFiles.has(ctx.component.fileName) && !ctx.isClientContext) {\n\t\tctx.isClientContext = true;\n\t\tctx.clientReason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t}\n\tconst clientEdges = [];\n\tfor (const edge of graph.edges) {\n\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\tif (contexts.get(fromKey)?.isClientContext) clientEdges.push(edge);\n\t}\n\treturn {\n\t\tcontexts,\n\t\tclientEdges\n\t};\n}\nfunction buildAdjacencyList(edges) {\n\tconst adj = /* @__PURE__ */ new Map();\n\tfor (const edge of edges) {\n\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\tif (!adj.has(fromKey)) adj.set(fromKey, []);\n\t\tadj.get(fromKey).push(edge);\n\t}\n\treturn adj;\n}\nfunction propagateServerContext(key, visited, graph, contexts, adjacency) {\n\tif (visited.has(key)) return;\n\tvisited.add(key);\n\tconst ctx = contexts.get(key);\n\tif (!ctx) return;\n\tif (graph.useClientFiles.has(ctx.component.fileName)) {\n\t\tctx.isClientContext = true;\n\t\tctx.clientReason = {\n\t\t\ttype: \"use-client\",\n\t\t\tfileName: ctx.component.fileName\n\t\t};\n\t\treturn;\n\t}\n\tctx.isServerContext = true;\n\tconst edges = adjacency.get(key) ?? [];\n\tfor (const edge of edges) propagateServerContext(edge.toComponentKey, visited, graph, contexts, adjacency);\n}\nfunction propagateClientContext(key, visited, contexts, adjacency, reason) {\n\tif (visited.has(key)) return;\n\tvisited.add(key);\n\tconst ctx = contexts.get(key);\n\tif (!ctx) return;\n\tctx.isClientContext = true;\n\tif (!ctx.clientReason) ctx.clientReason = reason;\n\tconst edges = adjacency.get(key) ?? [];\n\tfor (const edge of edges) propagateClientContext(edge.toComponentKey, visited, contexts, adjacency, {\n\t\ttype: \"rendered-by-client\",\n\t\tparentComponent: ctx.component.name,\n\t\tparentFile: ctx.component.fileName\n\t});\n}\n//#endregion\nexport { analyzeContext };\n\n//# sourceMappingURL=context-analyzer.js.map","import { getDocsUrl } from \"../../utils/get-docs-url.js\";\nimport { createRenderGraphBuilder } from \"./render-graph-builder.js\";\nimport { analyzeContext } from \"./context-analyzer.js\";\nimport path from \"node:path\";\nimport { ESLintUtils } from \"@typescript-eslint/utils\";\nimport * as ts from \"typescript\";\n//#region src/rules/no-async-client-component/no-async-client-component.rule.ts\nvar name = \"no-async-client-component\";\nvar perProgramCache = /* @__PURE__ */ new WeakMap();\nvar onDemandCache = /* @__PURE__ */ new WeakMap();\nvar adjacencyCache = /* @__PURE__ */ new WeakMap();\nvar rule = ESLintUtils.RuleCreator(getDocsUrl)({\n\tname,\n\tmeta: {\n\t\ttype: \"problem\",\n\t\tdocs: {\n\t\t\tdescription: \"Disallow async components in client context. Async components are only valid inside server components.\",\n\t\t\trecommended: \"error\"\n\t\t},\n\t\tschema: [{\n\t\t\ttype: \"object\",\n\t\t\tproperties: { ignorePatterns: {\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: { type: \"string\" },\n\t\t\t\tdescription: \"File patterns to ignore\"\n\t\t\t} },\n\t\t\tadditionalProperties: false\n\t\t}],\n\t\tmessages: {\n\t\t\tasyncClientComponentDefinition: \"Async component \\\"{{name}}\\\" cannot be used in client context. Async components are only valid inside server components. Either remove \\\"async\\\" or ensure this component is only rendered within server components. {{reason}}\",\n\t\t\tasyncClientComponentUsage: \"Async component \\\"{{name}}\\\" is rendered in client context here. Async components are only valid inside server components. Move this to a server component or use a non-async version.\"\n\t\t}\n\t},\n\tdefaultOptions: [{ ignorePatterns: [] }],\n\tcreate(context, [options]) {\n\t\tconst services = ESLintUtils.getParserServices(context);\n\t\tconst program = services.program;\n\t\tconst checker = program.getTypeChecker();\n\t\tconst currentFile = path.isAbsolute(context.filename) ? context.filename : path.resolve(context.cwd, context.filename);\n\t\tif (shouldIgnore(currentFile, [...options.ignorePatterns])) return {};\n\t\tlet cached = perProgramCache.get(program);\n\t\tif (!cached) {\n\t\t\tcached = {\n\t\t\t\tbuilder: createRenderGraphBuilder(ts, program, checker),\n\t\t\t\tgraphBuilt: false\n\t\t\t};\n\t\t\tperProgramCache.set(program, cached);\n\t\t}\n\t\tconst reported = /* @__PURE__ */ new Set();\n\t\treturn { Program() {\n\t\t\tconst sourceFile = program.getSourceFile(currentFile);\n\t\t\tif (!sourceFile) return;\n\t\t\tif (fileContainsRouteOptions(sourceFile)) {}\n\t\t\tconst analysis = getOnDemandAnalysis(currentFile);\n\t\t\tfor (const [key, ctx] of analysis.contexts) {\n\t\t\t\tif (!ctx.component.isAsync || !ctx.isClientContext) continue;\n\t\t\t\tconst reportKey = `def:${key}`;\n\t\t\t\tif (reported.has(reportKey)) continue;\n\t\t\t\tif (ctx.clientReason?.type === \"route-option\") {\n\t\t\t\t\tconst usageFile = ctx.clientReason.usageFile;\n\t\t\t\t\tif (usageFile && usageFile === currentFile) {\n\t\t\t\t\t\tconst usageTsNode = ctx.clientReason.usageNode;\n\t\t\t\t\t\tconst usageEslintNode = services.tsNodeToESTreeNodeMap.get(usageTsNode);\n\t\t\t\t\t\tif (usageEslintNode) {\n\t\t\t\t\t\t\treported.add(reportKey);\n\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\tnode: usageEslintNode,\n\t\t\t\t\t\t\t\tmessageId: \"asyncClientComponentDefinition\",\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tname: ctx.component.name,\n\t\t\t\t\t\t\t\t\treason: formatReason(ctx.clientReason, context.cwd)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treported.add(reportKey);\n\t\t\t\tconst tsNode = ctx.component.node;\n\t\t\t\tconst eslintNode = services.tsNodeToESTreeNodeMap.get(tsNode);\n\t\t\t\tif (eslintNode) context.report({\n\t\t\t\t\tnode: eslintNode,\n\t\t\t\t\tmessageId: \"asyncClientComponentDefinition\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tname: ctx.component.name,\n\t\t\t\t\t\treason: ctx.clientReason ? formatReason(ctx.clientReason, context.cwd) : \"\"\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const edge of analysis.clientEdges) {\n\t\t\t\tif (!analysis.contexts.get(edge.toComponentKey)?.component.isAsync) continue;\n\t\t\t\tif (edge.fromFile !== currentFile) continue;\n\t\t\t\tconst reportKey = `usage:${edge.fromFile}:${edge.jsxLine}:${edge.toComponent}`;\n\t\t\t\tif (reported.has(reportKey)) continue;\n\t\t\t\treported.add(reportKey);\n\t\t\t\tconst eslintNode = services.tsNodeToESTreeNodeMap.get(edge.jsxNode);\n\t\t\t\tif (eslintNode) context.report({\n\t\t\t\t\tnode: eslintNode,\n\t\t\t\t\tmessageId: \"asyncClientComponentUsage\",\n\t\t\t\t\tdata: { name: edge.toComponent }\n\t\t\t\t});\n\t\t\t}\n\t\t} };\n\t\tfunction shouldIgnore(filePath, patterns) {\n\t\t\tfor (const pattern of patterns) if (filePath.includes(pattern)) return true;\n\t\t\treturn false;\n\t\t}\n\t\tfunction formatReason(reason, cwd) {\n\t\t\tswitch (reason.type) {\n\t\t\t\tcase \"use-client\": return `File has \"use client\" directive.`;\n\t\t\t\tcase \"route-option\": return `Component is referenced by a route option (createFileRoute/createRootRoute).`;\n\t\t\t\tcase \"rendered-by-client\": return `Rendered by client component \"${reason.parentComponent}\" in ${path.relative(cwd, reason.parentFile)}.`;\n\t\t\t}\n\t\t}\n\t\tfunction getOnDemandAnalysis(entryFile) {\n\t\t\tlet programCache = onDemandCache.get(program);\n\t\t\tif (!programCache) {\n\t\t\t\tprogramCache = /* @__PURE__ */ new Map();\n\t\t\t\tonDemandCache.set(program, programCache);\n\t\t\t}\n\t\t\tconst cachedResult = programCache.get(entryFile);\n\t\t\tif (cachedResult) return cachedResult.analysis;\n\t\t\tif (!cached.graphBuilt) {\n\t\t\t\tcached.builder.build();\n\t\t\t\tcached.graphBuilt = true;\n\t\t\t}\n\t\t\tconst full = cached.builder.getGraph();\n\t\t\tconst subgraph = sliceGraphForEntryFile(full, entryFile);\n\t\t\tconst entrySourceFile = program.getSourceFile(entryFile);\n\t\t\tconst analysis = !!entrySourceFile && subgraph.clientRoots.size === 0 && subgraph.serverRoots.size === 0 ? analyzeContext(full) : analyzeContext(subgraph);\n\t\t\tprogramCache.set(entryFile, {\n\t\t\t\tgraph: subgraph,\n\t\t\t\tanalysis\n\t\t\t});\n\t\t\treturn analysis;\n\t\t}\n\t\tfunction sliceGraphForEntryFile(full, entryFile) {\n\t\t\tconst components = full.components;\n\t\t\tconst edges = full.edges;\n\t\t\tconst serverRoots = full.serverRoots;\n\t\t\tconst clientRoots = full.clientRoots;\n\t\t\tconst useClientFiles = full.useClientFiles;\n\t\t\tconst routeOptionUsages = full.routeOptionUsages;\n\t\t\tconst entryClientRoots = /* @__PURE__ */ new Set();\n\t\t\tconst entryServerRoots = /* @__PURE__ */ new Set();\n\t\t\tconst routeRootsInFile = routeOptionUsages.size > 0 ? full.routeOptionRootsByFile.get(entryFile) : void 0;\n\t\t\tif (routeRootsInFile) {\n\t\t\t\tfor (const key of routeRootsInFile) if (clientRoots.has(key)) entryClientRoots.add(key);\n\t\t\t}\n\t\t\tfor (const key of serverRoots) if (components.get(key)?.fileName === entryFile) entryServerRoots.add(key);\n\t\t\tif (useClientFiles.has(entryFile)) {\n\t\t\t\tfor (const [key, component] of components) if (component.fileName === entryFile) entryClientRoots.add(key);\n\t\t\t}\n\t\t\tconst reachable = /* @__PURE__ */ new Set();\n\t\t\tconst queue = [];\n\t\t\tfor (const r of entryClientRoots) queue.push(r);\n\t\t\tfor (const r of entryServerRoots) queue.push(r);\n\t\t\tconst adjacency = getAdjacency(full);\n\t\t\twhile (queue.length) {\n\t\t\t\tconst key = queue.pop();\n\t\t\t\tif (reachable.has(key)) continue;\n\t\t\t\treachable.add(key);\n\t\t\t\tconst children = adjacency.get(key);\n\t\t\t\tif (!children) continue;\n\t\t\t\tfor (const toKey of children) if (!reachable.has(toKey)) queue.push(toKey);\n\t\t\t}\n\t\t\tconst subComponents = /* @__PURE__ */ new Map();\n\t\t\tfor (const key of reachable) {\n\t\t\t\tconst comp = components.get(key);\n\t\t\t\tif (comp) subComponents.set(key, comp);\n\t\t\t}\n\t\t\tconst subEdges = edges.filter((edge) => {\n\t\t\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\t\t\treturn reachable.has(fromKey) && reachable.has(edge.toComponentKey);\n\t\t\t});\n\t\t\tconst subServerRoots = new Set([...entryServerRoots].filter((k) => reachable.has(k)));\n\t\t\tconst subClientRoots = new Set([...entryClientRoots].filter((k) => reachable.has(k)));\n\t\t\tconst subRouteOptionUsages = /* @__PURE__ */ new Map();\n\t\t\tconst subRouteOptionRootsByFile = /* @__PURE__ */ new Map();\n\t\t\tfor (const key of subClientRoots) {\n\t\t\t\tconst usage = routeOptionUsages.get(key);\n\t\t\t\tif (usage) {\n\t\t\t\t\tsubRouteOptionUsages.set(key, usage);\n\t\t\t\t\tlet set = subRouteOptionRootsByFile.get(usage.fileName);\n\t\t\t\t\tif (!set) {\n\t\t\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\t\t\tsubRouteOptionRootsByFile.set(usage.fileName, set);\n\t\t\t\t\t}\n\t\t\t\t\tset.add(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcomponents: subComponents,\n\t\t\t\tedges: subEdges,\n\t\t\t\tserverRoots: subServerRoots,\n\t\t\t\tclientRoots: subClientRoots,\n\t\t\t\tuseClientFiles,\n\t\t\t\trouteOptionUsages: subRouteOptionUsages,\n\t\t\t\trouteOptionRootsByFile: subRouteOptionRootsByFile\n\t\t\t};\n\t\t}\n\t\tfunction getAdjacency(full) {\n\t\t\tlet cachedAdjacency = adjacencyCache.get(program);\n\t\t\tif (cachedAdjacency) return cachedAdjacency;\n\t\t\tcachedAdjacency = /* @__PURE__ */ new Map();\n\t\t\tfor (const edge of full.edges) {\n\t\t\t\tconst fromKey = `${edge.fromFile}:${edge.fromComponent}`;\n\t\t\t\tlet set = cachedAdjacency.get(fromKey);\n\t\t\t\tif (!set) {\n\t\t\t\t\tset = /* @__PURE__ */ new Set();\n\t\t\t\t\tcachedAdjacency.set(fromKey, set);\n\t\t\t\t}\n\t\t\t\tset.add(edge.toComponentKey);\n\t\t\t}\n\t\t\tadjacencyCache.set(program, cachedAdjacency);\n\t\t\treturn cachedAdjacency;\n\t\t}\n\t\tfunction fileHasUseClientDirective(sourceFile) {\n\t\t\tconst firstStmt = sourceFile.statements[0];\n\t\t\tif (!firstStmt) return false;\n\t\t\treturn ts.isExpressionStatement(firstStmt) && ts.isStringLiteral(firstStmt.expression) && firstStmt.expression.text === \"use client\";\n\t\t}\n\t\tfunction fileContainsServerComponentRoots(sourceFile) {\n\t\t\tconst text = sourceFile.text;\n\t\t\treturn text.includes(\"renderServerComponent\") || text.includes(\"createCompositeComponent\");\n\t\t}\n\t\tfunction fileContainsRouteOptions(sourceFile) {\n\t\t\tconst text = sourceFile.text;\n\t\t\tif (!text.includes(\"createFileRoute\") && !text.includes(\"createRootRoute\") && !text.includes(\"createRootRouteWithContext\")) return false;\n\t\t\treturn text.includes(\"component\") || text.includes(\"pendingComponent\") || text.includes(\"errorComponent\") || text.includes(\"notFoundComponent\");\n\t\t}\n\t}\n});\n//#endregion\nexport { name, rule };\n\n//# sourceMappingURL=no-async-client-component.rule.js.map","import { name, rule } from \"./rules/no-client-code-in-server-component/no-client-code-in-server-component.rule.js\";\nimport { name as name$1, rule as rule$1 } from \"./rules/no-async-client-component/no-async-client-component.rule.js\";\n//#region src/rules.ts\nvar rules = {\n\t[name]: rule,\n\t[name$1]: rule$1\n};\n//#endregion\nexport { rules };\n\n//# sourceMappingURL=rules.js.map","import { rules } from \"./rules.js\";\n//#region src/index.ts\nvar plugin = {\n\tmeta: { name: \"@tanstack/eslint-plugin-start\" },\n\tconfigs: {},\n\trules\n};\nObject.assign(plugin.configs, {\n\trecommended: {\n\t\tplugins: [\"@tanstack/eslint-plugin-start\"],\n\t\trules: {\n\t\t\t\"@tanstack/start/no-client-code-in-server-component\": \"error\",\n\t\t\t\"@tanstack/start/no-async-client-component\": \"error\"\n\t\t}\n\t},\n\t\"flat/recommended\": [{\n\t\tplugins: { \"@tanstack/start\": plugin },\n\t\trules: {\n\t\t\t\"@tanstack/start/no-client-code-in-server-component\": \"error\",\n\t\t\t\"@tanstack/start/no-async-client-component\": \"error\"\n\t\t}\n\t}]\n});\n//#endregion\nexport { plugin as default };\n\n//# sourceMappingURL=index.js.map","import tanstackStart from \"@tanstack/eslint-plugin-start\";\nimport type { Plugin } from \"vite-plus/lint/plugins\";\n\nimport { typedRules } from \"./typed-rule.ts\";\n\nconst plugin = {\n meta: { name: \"tanstack-start\" },\n rules: typedRules(tanstackStart.rules),\n} as const satisfies Plugin;\n\nexport default plugin;\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAI,cAAc,aAAa,iDAAiD;;;;;ACIhF,SAAS,wBAAwB,SAAS;CACzC,SAAS,sBAAsB,UAAU;EACxC,MAAM,aAAa,QAAQ,cAAc,QAAQ;EACjD,IAAI,CAAC,YAAY,OAAO;EACxB,MAAM,YAAY,WAAW,WAAW;EACxC,IAAI,CAAC,WAAW,OAAO;EACvB,IAAI,GAAG,sBAAsB,SAAS,KAAK,GAAG,gBAAgB,UAAU,UAAU,GAAG,OAAO,UAAU,WAAW,SAAS;EAC1H,OAAO;CACR;CACA,OAAO,EAAE,sBAAsB;AAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CEdA,OAAO,UAAA,kBAAA;;;;;ACIP,IAAI,wCAAwB,IAAI,IAAI,CAAC,OAAO,CAAC;;;;;AAK7C,IAAI,8BAA8B;CACjC,MAAM,iBAAiB,OAAO,KAAKA,eAAAA,QAAQ,OAAO;CAClD,MAAM,cAAc,IAAI,IAAI,OAAO,KAAKA,eAAAA,QAAQ,IAAI,CAAC;CACrD,MAAM,8BAA8B,IAAI,IAAI;CAC5C,KAAK,MAAM,QAAQ,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI;CACnF,OAAO;AACR,EAAA,CAAG;;;;AAIH,IAAI,uCAAuB,IAAI,IAAI;CAClC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CA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"}
@@ -1,5 +1,5 @@
1
1
  import { Cause, Effect, Exit, Layer, ManagedRuntime, Option, Path, Predicate, Record, pipe } from "effect";
2
- import ts from "typescript";
2
+ import ts from "typescript-6";
3
3
  import { NodeServices } from "@effect/platform-node";
4
4
  import { FetchHttpClient } from "effect/http";
5
5
  import { OtlpSerialization, OtlpTracer } from "effect/observability";
@@ -152,4 +152,4 @@ const withTypeInformation = (rule) => ({
152
152
  const typedRules = (rules) => pipe(rules, Record.filter(isTypedRule), Record.map(withTypeInformation));
153
153
  export { withTypeInformation as n, typedRules as t };
154
154
 
155
- //# sourceMappingURL=typed-rule-Cp7XL2SV.mjs.map
155
+ //# sourceMappingURL=typed-rule-Bitx6iIi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-rule-Bitx6iIi.mjs","names":[],"sources":["../src/parser-services.ts","../src/program.ts","../src/typed-rule.ts"],"sourcesContent":["import { Option } from \"effect\";\nimport ts from \"typescript-6\";\nimport type { Context, Location, Range } from \"vite-plus/lint/plugins\";\n\ninterface RangedNode {\n readonly range: Readonly<Range>;\n}\n\ninterface MappedNode {\n readonly type: string;\n readonly range: Readonly<Range>;\n readonly loc: Location;\n}\n\ninterface ParserServices {\n readonly program: ts.Program;\n readonly esTreeNodeToTSNodeMap: { readonly get: (node: RangedNode) => ts.Node };\n readonly tsNodeToESTreeNodeMap: { readonly get: (node: ts.Node) => MappedNode | undefined };\n}\n\ninterface FileProgram {\n readonly context: Context;\n readonly program: ts.Program;\n readonly sourceFile: ts.SourceFile;\n}\n\nconst covers = (node: ts.Node, sourceFile: ts.SourceFile, [start, end]: Readonly<Range>): boolean =>\n node.getStart(sourceFile) <= start && node.end >= end;\n\nconst spans = (node: ts.Node, sourceFile: ts.SourceFile, [start, end]: Readonly<Range>): boolean =>\n node.getStart(sourceFile) === start && node.end === end;\n\nconst innermostSpanning = (sourceFile: ts.SourceFile, range: Readonly<Range>): ts.Node => {\n const visit = (node: ts.Node, found: ts.Node): ts.Node => {\n if (!covers(node, sourceFile, range)) {\n return found;\n }\n const matched = Option.liftPredicate(node, (candidate) =>\n spans(candidate, sourceFile, range),\n ).pipe(Option.getOrElse(() => found));\n return Option.fromNullishOr(\n ts.forEachChild(node, (child) =>\n Option.liftPredicate(visit(child, matched), (deeper) => deeper !== matched).pipe(\n Option.getOrUndefined,\n ),\n ),\n ).pipe(Option.getOrElse(() => matched));\n };\n return visit(sourceFile, sourceFile);\n};\n\nconst toMappedNode = ({ context, sourceFile }: FileProgram, node: ts.Node): MappedNode => {\n const start = node.getStart(sourceFile);\n return {\n type: ts.SyntaxKind[node.kind],\n range: [start, node.end],\n loc: {\n start: context.sourceCode.getLocFromIndex(start),\n end: context.sourceCode.getLocFromIndex(node.end),\n },\n };\n};\n\nconst createParserServices = (file: FileProgram): ParserServices => {\n const toTs = new WeakMap<RangedNode, ts.Node>();\n return {\n program: file.program,\n esTreeNodeToTSNodeMap: {\n get: (node) =>\n Option.fromNullishOr(toTs.get(node)).pipe(\n Option.getOrElse(() => {\n const found = innermostSpanning(file.sourceFile, node.range);\n toTs.set(node, found);\n return found;\n }),\n ),\n },\n tsNodeToESTreeNodeMap: {\n get: (node) =>\n Option.liftPredicate(\n node,\n (candidate) => candidate.getSourceFile().fileName === file.sourceFile.fileName,\n ).pipe(\n Option.map((candidate) => toMappedNode(file, candidate)),\n Option.getOrUndefined,\n ),\n },\n };\n};\n\nexport { createParserServices };\nexport type { FileProgram, MappedNode, ParserServices, RangedNode };\n","import { NodeServices } from \"@effect/platform-node\";\nimport { Cause, Effect, Exit, Layer, ManagedRuntime, Option, Path } from \"effect\";\nimport { FetchHttpClient } from \"effect/http\";\nimport { OtlpSerialization, OtlpTracer } from \"effect/observability\";\nimport ts from \"typescript-6\";\n\nconst tracing = OtlpTracer.layerFromConfig({\n resource: { serviceName: \"oxlint-typed-rules\" },\n}).pipe(Layer.provide(OtlpSerialization.layerJson), Layer.provide(FetchHttpClient.layer));\n\nconst runtime = ManagedRuntime.make(Layer.mergeAll(tracing, NodeServices.layer));\n\nprocess.once(\"beforeExit\", () => {\n Effect.runFork(runtime.disposeEffect);\n});\n\nconst sourceFiles = new Map<string, ts.SourceFile>();\n\nconst cachingHost = (options: ts.CompilerOptions): ts.CompilerHost => {\n const host = ts.createCompilerHost(options, true);\n return {\n ...host,\n getSourceFile: (...args) => {\n const [fileName, languageVersion] = args;\n const key = `${fileName}\\0${JSON.stringify(languageVersion)}`;\n return Option.fromNullishOr(sourceFiles.get(key)).pipe(\n Option.orElse(() =>\n Option.fromNullishOr(host.getSourceFile(...args)).pipe(\n Option.tap((created) => Option.some(sourceFiles.set(key, created))),\n ),\n ),\n Option.getOrUndefined,\n );\n },\n };\n};\n\nconst ignoreUnrecoverable = (): void => {\n Option.none();\n};\n\nconst parseConfig = (configPath: string): Option.Option<ts.ParsedCommandLine> =>\n Option.fromNullishOr(\n ts.getParsedCommandLineOfConfigFile(\n configPath,\n {},\n { ...ts.sys, onUnRecoverableConfigFileDiagnostic: ignoreUnrecoverable },\n ),\n );\n\ninterface Overlay {\n readonly fileName: string;\n readonly text: string;\n}\n\nconst overlayHost = (host: ts.CompilerHost, overlay: Overlay): ts.CompilerHost => ({\n ...host,\n fileExists: (fileName) => fileName === overlay.fileName || host.fileExists(fileName),\n readFile: (fileName) =>\n Option.match(\n Option.liftPredicate(fileName, (name) => name === overlay.fileName),\n {\n onNone: () => host.readFile(fileName),\n onSome: () => overlay.text,\n },\n ),\n getSourceFile: (...args) => {\n const [fileName, languageVersion] = args;\n return Option.match(\n Option.liftPredicate(fileName, (name) => name === overlay.fileName),\n {\n onNone: () => host.getSourceFile(...args),\n onSome: () => ts.createSourceFile(fileName, overlay.text, languageVersion, true),\n },\n );\n },\n});\n\nconst withProjectReferences = (\n config: ts.ParsedCommandLine,\n): Readonly<{ projectReferences?: readonly ts.ProjectReference[] }> =>\n Option.match(Option.fromNullishOr(config.projectReferences), {\n onNone: () => ({}),\n onSome: (projectReferences) => ({ projectReferences }),\n });\n\nconst buildProgram = (configPath: string): Effect.Effect<Option.Option<BaseProgram>> =>\n Effect.sync(() =>\n parseConfig(configPath).pipe(\n Option.map((config) => ({\n config,\n program: ts.createProgram({\n rootNames: config.fileNames,\n options: config.options,\n host: cachingHost(config.options),\n ...withProjectReferences(config),\n }),\n })),\n ),\n ).pipe(Effect.withSpan(\"oxlint-typed-rules.build-program\", { attributes: { configPath } }));\n\ninterface BaseProgram {\n readonly config: ts.ParsedCommandLine;\n readonly program: ts.Program;\n}\n\nconst programs = new Map<string, Option.Option<BaseProgram>>();\n\nconst cachedProgram = (configPath: string): Effect.Effect<Option.Option<BaseProgram>> =>\n Option.fromNullishOr(programs.get(configPath)).pipe(\n Option.match({\n onSome: Effect.succeed,\n onNone: () =>\n buildProgram(configPath).pipe(\n Effect.tap((built) => Effect.sync(() => programs.set(configPath, built))),\n ),\n }),\n );\n\nconst overlays = new Map<string, ts.Program>();\n\nconst buildOverlayProgram = (\n configPath: string,\n base: BaseProgram,\n overlay: Overlay,\n): Effect.Effect<ts.Program> =>\n Effect.sync(() =>\n ts.createProgram({\n rootNames: [...new Set([...base.config.fileNames, overlay.fileName])],\n options: base.config.options,\n host: overlayHost(cachingHost(base.config.options), overlay),\n oldProgram: base.program,\n ...withProjectReferences(base.config),\n }),\n ).pipe(\n Effect.tap((program) => Effect.sync(() => overlays.set(configPath, program))),\n Effect.withSpan(\"oxlint-typed-rules.build-overlay-program\", {\n attributes: { fileName: overlay.fileName },\n }),\n );\n\nconst matchesText = (program: ts.Program, overlay: Overlay): boolean =>\n Option.fromNullishOr(program.getSourceFile(overlay.fileName)).pipe(\n Option.exists((sourceFile) => sourceFile.getFullText() === overlay.text),\n );\n\nconst programWithText = (\n configPath: string,\n base: BaseProgram,\n overlay: Overlay,\n): Effect.Effect<ts.Program> =>\n Option.liftPredicate(base.program, (program) => matchesText(program, overlay)).pipe(\n Option.orElse(() =>\n Option.fromNullishOr(overlays.get(configPath)).pipe(\n Option.filter((program) => matchesText(program, overlay)),\n ),\n ),\n Option.match({\n onSome: Effect.succeed,\n onNone: () => buildOverlayProgram(configPath, base, overlay),\n }),\n );\n\nconst fileExists = (fileName: string): boolean => ts.sys.fileExists(fileName);\n\nconst programOfFile = (\n overlay: Overlay,\n): Effect.Effect<Option.Option<ts.Program>, never, Path.Path> =>\n Effect.gen(function* findProgram() {\n const path = yield* Path.Path;\n const configPath = Option.fromNullishOr(\n ts.findConfigFile(path.dirname(overlay.fileName), fileExists),\n );\n return yield* Option.match(configPath, {\n onNone: () => Effect.succeedNone,\n onSome: (found) =>\n cachedProgram(found).pipe(\n Effect.flatMap(\n Option.match({\n onNone: () => Effect.succeedNone,\n onSome: (base) => programWithText(found, base, overlay).pipe(Effect.asSome),\n }),\n ),\n ),\n });\n });\n\nconst programFor = (overlay: Overlay): Option.Option<ts.Program> =>\n Exit.match(runtime.runSyncExit(programOfFile(overlay)), {\n onSuccess: (program) => program,\n onFailure: (cause) => {\n throw Cause.squash(cause);\n },\n });\n\nexport type { Overlay };\nexport { programFor };\n","import { Option, Predicate, Record, pipe } from \"effect\";\nimport type { Context, CreateRule, RuleMeta, Visitor } from \"vite-plus/lint/plugins\";\n\nimport { createParserServices } from \"./parser-services.ts\";\nimport type { ParserServices } from \"./parser-services.ts\";\nimport { programFor } from \"./program.ts\";\n\ninterface TypedContext {\n readonly filename: string;\n readonly cwd: string;\n readonly options: readonly unknown[];\n readonly languageOptions: Readonly<Context[\"languageOptions\"]>;\n readonly report: Context[\"report\"];\n readonly sourceCode: { readonly parserServices: ParserServices };\n}\n\ninterface TypedRule {\n readonly meta: RuleMeta;\n readonly create: (context: TypedContext) => Visitor;\n}\n\nconst isTypedRule = <Rule>(rule: Rule): rule is Rule & TypedRule =>\n Predicate.hasProperty(rule, \"meta\") &&\n Predicate.hasProperty(rule, \"create\") &&\n Predicate.isFunction(rule.create);\n\nconst typedContext = (context: Context, parserServices: ParserServices): TypedContext => ({\n filename: context.filename,\n cwd: context.cwd,\n options: context.options,\n languageOptions: context.languageOptions,\n report: (diagnostic) => {\n context.report(diagnostic);\n },\n sourceCode: { parserServices },\n});\n\nconst withTypeInformation = (rule: TypedRule): CreateRule => ({\n meta: rule.meta,\n create: (context) =>\n programFor({ fileName: context.filename, text: context.sourceCode.text }).pipe(\n Option.flatMap((program) =>\n Option.fromNullishOr(program.getSourceFile(context.filename)).pipe(\n Option.map((sourceFile) =>\n rule.create(\n typedContext(context, createParserServices({ context, program, sourceFile })),\n ),\n ),\n ),\n ),\n Option.getOrElse(() => ({})),\n ),\n});\n\nconst typedRules = (\n rules: Record.ReadonlyRecord<string, unknown>,\n): Record.ReadonlyRecord<string, CreateRule> =>\n pipe(rules, Record.filter(isTypedRule), Record.map(withTypeInformation));\n\nexport type { TypedContext, TypedRule };\nexport { typedRules, withTypeInformation };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r_masseater/oxlint-typed-rules",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Run ESLint rules that need type information as oxlint JS plugins, starting with TanStack Start's React Server Component rules.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -42,7 +42,7 @@
42
42
  "dependencies": {
43
43
  "@effect/platform-node": "4.0.7",
44
44
  "effect": "4.0.7",
45
- "typescript": "6.0.3"
45
+ "typescript-6": "npm:typescript@6.0.3"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@tanstack/eslint-plugin-start": "0.1.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"typed-rule-Cp7XL2SV.mjs","names":[],"sources":["../src/parser-services.ts","../src/program.ts","../src/typed-rule.ts"],"sourcesContent":["import { Option } from \"effect\";\nimport ts from \"typescript\";\nimport type { Context, Location, Range } from \"vite-plus/lint/plugins\";\n\ninterface RangedNode {\n readonly range: Readonly<Range>;\n}\n\ninterface MappedNode {\n readonly type: string;\n readonly range: Readonly<Range>;\n readonly loc: Location;\n}\n\ninterface ParserServices {\n readonly program: ts.Program;\n readonly esTreeNodeToTSNodeMap: { readonly get: (node: RangedNode) => ts.Node };\n readonly tsNodeToESTreeNodeMap: { readonly get: (node: ts.Node) => MappedNode | undefined };\n}\n\ninterface FileProgram {\n readonly context: Context;\n readonly program: ts.Program;\n readonly sourceFile: ts.SourceFile;\n}\n\nconst covers = (node: ts.Node, sourceFile: ts.SourceFile, [start, end]: Readonly<Range>): boolean =>\n node.getStart(sourceFile) <= start && node.end >= end;\n\nconst spans = (node: ts.Node, sourceFile: ts.SourceFile, [start, end]: Readonly<Range>): boolean =>\n node.getStart(sourceFile) === start && node.end === end;\n\nconst innermostSpanning = (sourceFile: ts.SourceFile, range: Readonly<Range>): ts.Node => {\n const visit = (node: ts.Node, found: ts.Node): ts.Node => {\n if (!covers(node, sourceFile, range)) {\n return found;\n }\n const matched = Option.liftPredicate(node, (candidate) =>\n spans(candidate, sourceFile, range),\n ).pipe(Option.getOrElse(() => found));\n return Option.fromNullishOr(\n ts.forEachChild(node, (child) =>\n Option.liftPredicate(visit(child, matched), (deeper) => deeper !== matched).pipe(\n Option.getOrUndefined,\n ),\n ),\n ).pipe(Option.getOrElse(() => matched));\n };\n return visit(sourceFile, sourceFile);\n};\n\nconst toMappedNode = ({ context, sourceFile }: FileProgram, node: ts.Node): MappedNode => {\n const start = node.getStart(sourceFile);\n return {\n type: ts.SyntaxKind[node.kind],\n range: [start, node.end],\n loc: {\n start: context.sourceCode.getLocFromIndex(start),\n end: context.sourceCode.getLocFromIndex(node.end),\n },\n };\n};\n\nconst createParserServices = (file: FileProgram): ParserServices => {\n const toTs = new WeakMap<RangedNode, ts.Node>();\n return {\n program: file.program,\n esTreeNodeToTSNodeMap: {\n get: (node) =>\n Option.fromNullishOr(toTs.get(node)).pipe(\n Option.getOrElse(() => {\n const found = innermostSpanning(file.sourceFile, node.range);\n toTs.set(node, found);\n return found;\n }),\n ),\n },\n tsNodeToESTreeNodeMap: {\n get: (node) =>\n Option.liftPredicate(\n node,\n (candidate) => candidate.getSourceFile().fileName === file.sourceFile.fileName,\n ).pipe(\n Option.map((candidate) => toMappedNode(file, candidate)),\n Option.getOrUndefined,\n ),\n },\n };\n};\n\nexport { createParserServices };\nexport type { FileProgram, MappedNode, ParserServices, RangedNode };\n","import { NodeServices } from \"@effect/platform-node\";\nimport { Cause, Effect, Exit, Layer, ManagedRuntime, Option, Path } from \"effect\";\nimport { FetchHttpClient } from \"effect/http\";\nimport { OtlpSerialization, OtlpTracer } from \"effect/observability\";\nimport ts from \"typescript\";\n\nconst tracing = OtlpTracer.layerFromConfig({\n resource: { serviceName: \"oxlint-typed-rules\" },\n}).pipe(Layer.provide(OtlpSerialization.layerJson), Layer.provide(FetchHttpClient.layer));\n\nconst runtime = ManagedRuntime.make(Layer.mergeAll(tracing, NodeServices.layer));\n\nprocess.once(\"beforeExit\", () => {\n Effect.runFork(runtime.disposeEffect);\n});\n\nconst sourceFiles = new Map<string, ts.SourceFile>();\n\nconst cachingHost = (options: ts.CompilerOptions): ts.CompilerHost => {\n const host = ts.createCompilerHost(options, true);\n return {\n ...host,\n getSourceFile: (...args) => {\n const [fileName, languageVersion] = args;\n const key = `${fileName}\\0${JSON.stringify(languageVersion)}`;\n return Option.fromNullishOr(sourceFiles.get(key)).pipe(\n Option.orElse(() =>\n Option.fromNullishOr(host.getSourceFile(...args)).pipe(\n Option.tap((created) => Option.some(sourceFiles.set(key, created))),\n ),\n ),\n Option.getOrUndefined,\n );\n },\n };\n};\n\nconst ignoreUnrecoverable = (): void => {\n Option.none();\n};\n\nconst parseConfig = (configPath: string): Option.Option<ts.ParsedCommandLine> =>\n Option.fromNullishOr(\n ts.getParsedCommandLineOfConfigFile(\n configPath,\n {},\n { ...ts.sys, onUnRecoverableConfigFileDiagnostic: ignoreUnrecoverable },\n ),\n );\n\ninterface Overlay {\n readonly fileName: string;\n readonly text: string;\n}\n\nconst overlayHost = (host: ts.CompilerHost, overlay: Overlay): ts.CompilerHost => ({\n ...host,\n fileExists: (fileName) => fileName === overlay.fileName || host.fileExists(fileName),\n readFile: (fileName) =>\n Option.match(\n Option.liftPredicate(fileName, (name) => name === overlay.fileName),\n {\n onNone: () => host.readFile(fileName),\n onSome: () => overlay.text,\n },\n ),\n getSourceFile: (...args) => {\n const [fileName, languageVersion] = args;\n return Option.match(\n Option.liftPredicate(fileName, (name) => name === overlay.fileName),\n {\n onNone: () => host.getSourceFile(...args),\n onSome: () => ts.createSourceFile(fileName, overlay.text, languageVersion, true),\n },\n );\n },\n});\n\nconst withProjectReferences = (\n config: ts.ParsedCommandLine,\n): Readonly<{ projectReferences?: readonly ts.ProjectReference[] }> =>\n Option.match(Option.fromNullishOr(config.projectReferences), {\n onNone: () => ({}),\n onSome: (projectReferences) => ({ projectReferences }),\n });\n\nconst buildProgram = (configPath: string): Effect.Effect<Option.Option<BaseProgram>> =>\n Effect.sync(() =>\n parseConfig(configPath).pipe(\n Option.map((config) => ({\n config,\n program: ts.createProgram({\n rootNames: config.fileNames,\n options: config.options,\n host: cachingHost(config.options),\n ...withProjectReferences(config),\n }),\n })),\n ),\n ).pipe(Effect.withSpan(\"oxlint-typed-rules.build-program\", { attributes: { configPath } }));\n\ninterface BaseProgram {\n readonly config: ts.ParsedCommandLine;\n readonly program: ts.Program;\n}\n\nconst programs = new Map<string, Option.Option<BaseProgram>>();\n\nconst cachedProgram = (configPath: string): Effect.Effect<Option.Option<BaseProgram>> =>\n Option.fromNullishOr(programs.get(configPath)).pipe(\n Option.match({\n onSome: Effect.succeed,\n onNone: () =>\n buildProgram(configPath).pipe(\n Effect.tap((built) => Effect.sync(() => programs.set(configPath, built))),\n ),\n }),\n );\n\nconst overlays = new Map<string, ts.Program>();\n\nconst buildOverlayProgram = (\n configPath: string,\n base: BaseProgram,\n overlay: Overlay,\n): Effect.Effect<ts.Program> =>\n Effect.sync(() =>\n ts.createProgram({\n rootNames: [...new Set([...base.config.fileNames, overlay.fileName])],\n options: base.config.options,\n host: overlayHost(cachingHost(base.config.options), overlay),\n oldProgram: base.program,\n ...withProjectReferences(base.config),\n }),\n ).pipe(\n Effect.tap((program) => Effect.sync(() => overlays.set(configPath, program))),\n Effect.withSpan(\"oxlint-typed-rules.build-overlay-program\", {\n attributes: { fileName: overlay.fileName },\n }),\n );\n\nconst matchesText = (program: ts.Program, overlay: Overlay): boolean =>\n Option.fromNullishOr(program.getSourceFile(overlay.fileName)).pipe(\n Option.exists((sourceFile) => sourceFile.getFullText() === overlay.text),\n );\n\nconst programWithText = (\n configPath: string,\n base: BaseProgram,\n overlay: Overlay,\n): Effect.Effect<ts.Program> =>\n Option.liftPredicate(base.program, (program) => matchesText(program, overlay)).pipe(\n Option.orElse(() =>\n Option.fromNullishOr(overlays.get(configPath)).pipe(\n Option.filter((program) => matchesText(program, overlay)),\n ),\n ),\n Option.match({\n onSome: Effect.succeed,\n onNone: () => buildOverlayProgram(configPath, base, overlay),\n }),\n );\n\nconst fileExists = (fileName: string): boolean => ts.sys.fileExists(fileName);\n\nconst programOfFile = (\n overlay: Overlay,\n): Effect.Effect<Option.Option<ts.Program>, never, Path.Path> =>\n Effect.gen(function* findProgram() {\n const path = yield* Path.Path;\n const configPath = Option.fromNullishOr(\n ts.findConfigFile(path.dirname(overlay.fileName), fileExists),\n );\n return yield* Option.match(configPath, {\n onNone: () => Effect.succeedNone,\n onSome: (found) =>\n cachedProgram(found).pipe(\n Effect.flatMap(\n Option.match({\n onNone: () => Effect.succeedNone,\n onSome: (base) => programWithText(found, base, overlay).pipe(Effect.asSome),\n }),\n ),\n ),\n });\n });\n\nconst programFor = (overlay: Overlay): Option.Option<ts.Program> =>\n Exit.match(runtime.runSyncExit(programOfFile(overlay)), {\n onSuccess: (program) => program,\n onFailure: (cause) => {\n throw Cause.squash(cause);\n },\n });\n\nexport type { Overlay };\nexport { programFor };\n","import { Option, Predicate, Record, pipe } from \"effect\";\nimport type { Context, CreateRule, RuleMeta, Visitor } from \"vite-plus/lint/plugins\";\n\nimport { createParserServices } from \"./parser-services.ts\";\nimport type { ParserServices } from \"./parser-services.ts\";\nimport { programFor } from \"./program.ts\";\n\ninterface TypedContext {\n readonly filename: string;\n readonly cwd: string;\n readonly options: readonly unknown[];\n readonly languageOptions: Readonly<Context[\"languageOptions\"]>;\n readonly report: Context[\"report\"];\n readonly sourceCode: { readonly parserServices: ParserServices };\n}\n\ninterface TypedRule {\n readonly meta: RuleMeta;\n readonly create: (context: TypedContext) => Visitor;\n}\n\nconst isTypedRule = <Rule>(rule: Rule): rule is Rule & TypedRule =>\n Predicate.hasProperty(rule, \"meta\") &&\n Predicate.hasProperty(rule, \"create\") &&\n Predicate.isFunction(rule.create);\n\nconst typedContext = (context: Context, parserServices: ParserServices): TypedContext => ({\n filename: context.filename,\n cwd: context.cwd,\n options: context.options,\n languageOptions: context.languageOptions,\n report: (diagnostic) => {\n context.report(diagnostic);\n },\n sourceCode: { parserServices },\n});\n\nconst withTypeInformation = (rule: TypedRule): CreateRule => ({\n meta: rule.meta,\n create: (context) =>\n programFor({ fileName: context.filename, text: context.sourceCode.text }).pipe(\n Option.flatMap((program) =>\n Option.fromNullishOr(program.getSourceFile(context.filename)).pipe(\n Option.map((sourceFile) =>\n rule.create(\n typedContext(context, createParserServices({ context, program, sourceFile })),\n ),\n ),\n ),\n ),\n Option.getOrElse(() => ({})),\n ),\n});\n\nconst typedRules = (\n rules: Record.ReadonlyRecord<string, unknown>,\n): Record.ReadonlyRecord<string, CreateRule> =>\n pipe(rules, Record.filter(isTypedRule), Record.map(withTypeInformation));\n\nexport type { TypedContext, TypedRule };\nexport { typedRules, withTypeInformation };\n"],"mappings":"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"}