{"version":3,"sources":["../src/tree-sitter/languages.ts","../src/pipeline/analyzer.worker.ts"],"names":["path","fileURLToPath","Parser","ParserError","fs","logger","analyzeFileContent"],"mappings":"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","file":"analyzer.worker.cjs","sourcesContent":["import * as Parser from 'web-tree-sitter';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport type { LanguageConfig, LoadedLanguage } from 'repograph-core';\nimport { logger, ParserError } from 'repograph-core';\n\nconst getDirname = () => path.dirname(fileURLToPath(import.meta.url));\nconst loadedLanguages = new Map<string, LoadedLanguage>();\nlet isInitialized = false;\n\nexport const initializeParser = async (): Promise<void> => {\n  if (isInitialized) return;\n  await Parser.Parser.init();\n  isInitialized = true;\n};\n\nconst findWasmFile = async (config: LanguageConfig): Promise<string> => {\n  // wasmPath is like 'tree-sitter-typescript/tree-sitter-typescript.wasm'\n  const wasmFileName = path.basename(config.wasmPath);\n  if (!wasmFileName) {\n    throw new ParserError(`Invalid wasmPath format for ${config.name}: ${config.wasmPath}.`, config.name);\n  }\n\n  const currentDir = getDirname();\n\n  // Path when running from dist (e.g., in a published package)\n  const distWasmPath = path.resolve(currentDir, 'wasm', wasmFileName);\n  if (fs.existsSync(distWasmPath)) return distWasmPath;\n  \n  // Path when running tests from src, looking in dist\n  const projectDistWasmPath = path.resolve(currentDir, '../../dist/wasm', wasmFileName);\n  if (fs.existsSync(projectDistWasmPath)) return projectDistWasmPath;\n\n  // Path for development, resolving from node_modules using robust import.meta.resolve\n  try {\n    const [pkgName, ...rest] = config.wasmPath.split('/');\n    const wasmPathInPkg = rest.join('/');\n    const pkgJsonUrl = await import.meta.resolve(`${pkgName}/package.json`);\n    const pkgDir = path.dirname(fileURLToPath(pkgJsonUrl));\n    const resolvedWasmPath = path.join(pkgDir, wasmPathInPkg);\n    if (fs.existsSync(resolvedWasmPath)) {\n      return resolvedWasmPath;\n    }\n  } catch (e) {\n    // Could not resolve, proceed to throw\n  }\n\n  throw new ParserError(`WASM file for ${config.name} not found. Looked in ${distWasmPath}, ${projectDistWasmPath}, and tried resolving from node_modules.`, config.name);\n};\n\nexport const loadLanguage = async (config: LanguageConfig): Promise<LoadedLanguage> => {\n  if (loadedLanguages.has(config.name)) {\n    return loadedLanguages.get(config.name)!;\n  }\n  await initializeParser();\n\n  try {\n    const wasmPath = await findWasmFile(config);\n    logger.debug(`Loading WASM for ${config.name} from: ${wasmPath}`);\n    const language = await Parser.Language.load(wasmPath);\n    const loadedLanguage: LoadedLanguage = { config, language };\n    loadedLanguages.set(config.name, loadedLanguage);\n    return loadedLanguage;\n  } catch (error) {\n    const message = `Failed to load Tree-sitter WASM file for ${config.name}.`;\n    logger.error(message, error);\n    throw new ParserError(message, config.name, error);\n  }\n};\n\nexport const createParserForLanguage = async (config: LanguageConfig): Promise<Parser.Parser> => {\n  const { language } = await loadLanguage(config);\n  const parser = new Parser.Parser();\n  parser.setLanguage(language);\n  return parser;\n};","import { createParserForLanguage } from '../tree-sitter/languages';\nimport type { LanguageConfig, FileContent } from 'repograph-core';\nimport { analyzeFileContent } from 'repograph-core';\n\nexport default async function processFileInWorker({ file, langConfig }: { file: FileContent; langConfig: LanguageConfig; }) {\n  const parser = await createParserForLanguage(langConfig);\n  return analyzeFileContent({ file, langConfig, parser });\n}"]}