{"version":3,"file":"scan-chunk.mjs","sources":["../../src/commands/turbo/scan.ts"],"sourcesContent":["import * as path from 'node:path';\nimport ts from 'typescript';\n\nexport function shouldScanTurboFile(fileName: string, turboOutputPaths: Set<string>): boolean {\n  if (turboOutputPaths.has(path.resolve(fileName))) return false;\n  if (fileName.endsWith('.d.ts') || fileName.endsWith('.d.mts') || fileName.endsWith('.d.cts')) {\n    return false;\n  }\n  return !/(^|[/\\\\])node_modules([/\\\\]|$)/.test(fileName);\n}\n\nconst GRAPHQL_DOCUMENT_START = /(?:^|[^\\w])(query|mutation|subscription|fragment)\\b/;\n\nexport function hasGraphQLDocumentCandidate(sourceFile: ts.SourceFile): boolean {\n  if (!sourceFile.text.includes('{')) return false;\n\n  let hasCandidate = false;\n\n  const visit = (node: ts.Node): void => {\n    if (hasCandidate) return;\n\n    if (ts.isCallExpression(node)) {\n      const argument = node.arguments[0];\n      if (argument && ts.isStringLiteralLike(argument)) {\n        const text = argument.text;\n        if (text.includes('{') && isGraphQLDocumentCandidateText(text)) {\n          hasCandidate = true;\n          return;\n        }\n      }\n    }\n\n    ts.forEachChild(node, visit);\n  };\n\n  visit(sourceFile);\n  return hasCandidate;\n}\n\nfunction isGraphQLDocumentCandidateText(text: string): boolean {\n  if (GRAPHQL_DOCUMENT_START.test(text)) return true;\n\n  for (const line of text.split('\\n')) {\n    const trimmed = line.trimStart();\n    if (!trimmed || trimmed.startsWith('#')) continue;\n    return trimmed.startsWith('{');\n  }\n\n  return false;\n}\n"],"names":["shouldScanTurboFile","fileName","turboOutputPaths","has","path","resolve","endsWith","test","GRAPHQL_DOCUMENT_START","hasGraphQLDocumentCandidate","sourceFile","text","includes","hasCandidate","visit","node","ts","isCallExpression","argument","arguments","isStringLiteralLike","isGraphQLDocumentCandidateText","line","split","trimmed","trimStart","startsWith","forEachChild"],"mappings":";;;;AAGO,SAASA,oBAAoBC,GAAkBC;EACpD,IAAIA,EAAiBC,IAAIC,EAAKC,QAAQJ;IAAY,QAAO;;EACzD,IAAIA,EAASK,SAAS,YAAYL,EAASK,SAAS,aAAaL,EAASK,SAAS;IACjF,QAAO;;EAET,QAAQ,iCAAiCC,KAAKN;AAChD;;AAEA,IAAMO,IAAyB;;AAExB,SAASC,4BAA4BC;EAC1C,KAAKA,EAAWC,KAAKC,SAAS;IAAM,QAAO;;EAE3C,IAAIC,KAAe;EAEnB,IAAMC,QAASC;IACb,IAAIF;MAAc;;IAElB,IAAIG,EAAGC,iBAAiBF,IAAO;MAC7B,IAAMG,IAAWH,EAAKI,UAAU;MAChC,IAAID,KAAYF,EAAGI,oBAAoBF,IAAW;QAChD,IAAMP,IAAOO,EAASP;QACtB,IAAIA,EAAKC,SAAS,QAc1B,SAASS,+BAA+BV;UACtC,IAAIH,EAAuBD,KAAKI;YAAO,QAAO;;UAE9C,KAAK,IAAMW,KAAQX,EAAKY,MAAM,OAAO;YACnC,IAAMC,IAAUF,EAAKG;YACrB,KAAKD,KAAWA,EAAQE,WAAW;cAAM;;YACzC,OAAOF,EAAQE,WAAW;AAC5B;UAEA,QAAO;AACT,SAxBkCL,CAA+BV,IAAO;UAC9DE,KAAe;UACf;AACF;AACF;AACF;IAEAG,EAAGW,aAAaZ,GAAMD;AAAM;EAG9BA,MAAMJ;EACN,OAAOG;AACT;;"}