{"version":3,"file":"paths.cjs","names":[],"sources":["../../../src/support/paths.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { isAbsolute, join, relative, resolve } from \"node:path\";\n\nexport function toPosixPath(filePath: string): string {\n  return filePath.replaceAll(\"\\\\\", \"/\");\n}\n\nexport function ensureRelativePrefix(path: string): string {\n  return path.startsWith(\".\") ? path : `./${path}`;\n}\n\nexport type AliasImportRewriterOptions = {\n  outputDir: string;\n  routesDir: string;\n  aliasBase: string;\n  stripImportExtension?: boolean | undefined;\n};\n\nexport function createAliasImportRewriter(\n  options: AliasImportRewriterOptions,\n): (spec: string) => string {\n  const resolvedOutputDir = resolve(options.outputDir);\n  const resolvedRoutesDir = resolve(options.routesDir);\n  const aliasPrefix = `${options.aliasBase}/`;\n\n  return (spec) => {\n    const targetAbs = spec.startsWith(aliasPrefix)\n      ? join(resolvedRoutesDir, spec.slice(aliasPrefix.length))\n      : resolve(spec);\n    let rel = toPosixPath(relative(resolvedOutputDir, targetAbs));\n    if (options.stripImportExtension) {\n      rel = rel.replace(/\\.(js|mjs|cjs)$/, \"\");\n    }\n    return ensureRelativePrefix(rel);\n  };\n}\n\nconst COMMON_JS_EXTS = [\".ts\", \".js\", \".tsx\", \".jsx\", \".mts\", \".mjs\"];\n\nexport function resolveServerDir(rootDir: string, serverDir?: string): string {\n  const resolvedRoot = resolve(rootDir || process.cwd());\n  if (serverDir) {\n    const candidate = isAbsolute(serverDir) ? serverDir : resolve(resolvedRoot, serverDir);\n    if (existsSync(candidate)) {\n      return toPosixPath(candidate);\n    }\n    throw new Error(\n      `[taserjs] Configured serverDir does not exist: \"${toPosixPath(candidate)}\". Please check your taser configuration.`,\n    );\n  }\n\n  const srcDir = resolve(resolvedRoot, \"src\");\n  if (existsSync(srcDir)) {\n    return toPosixPath(srcDir);\n  }\n  return toPosixPath(resolvedRoot);\n}\n\nexport function resolveServerEntry(\n  rootDir: string,\n  serverDir: string,\n  serverEntry?: string,\n): string | undefined {\n  const resolvedRoot = resolve(rootDir || process.cwd());\n\n  if (serverEntry) {\n    const candidate = isAbsolute(serverEntry) ? serverEntry : resolve(serverDir, serverEntry);\n    if (existsSync(candidate)) {\n      return toPosixPath(candidate);\n    }\n    const withoutExt = candidate.replace(/\\.[cm]?[jt]sx?$/, \"\");\n    for (const ext of COMMON_JS_EXTS) {\n      const withExt = `${withoutExt}${ext}`;\n      if (existsSync(withExt)) {\n        return toPosixPath(withExt);\n      }\n    }\n    throw new Error(\n      `[taserjs] Configured serverEntry does not exist: \"${toPosixPath(candidate)}\".`,\n    );\n  }\n\n  const defaultNames = [\"server.node.ts\", \"server.node.js\", \"server.ts\", \"server.js\", \"server.mjs\"];\n  for (const name of defaultNames) {\n    const candidate = resolve(serverDir, name);\n    if (existsSync(candidate)) {\n      return toPosixPath(candidate);\n    }\n  }\n  if (serverDir !== resolvedRoot) {\n    for (const name of defaultNames) {\n      const candidate = resolve(resolvedRoot, name);\n      if (existsSync(candidate)) {\n        return toPosixPath(candidate);\n      }\n    }\n  }\n  return undefined;\n}\n\nexport function resolveRoutesDir(rootDir: string, serverDir: string, routesDir?: string): string {\n  const resolvedRoot = resolve(rootDir || process.cwd());\n\n  if (routesDir) {\n    const candidate = isAbsolute(routesDir) ? routesDir : resolve(serverDir, routesDir);\n    if (existsSync(candidate)) {\n      return toPosixPath(candidate);\n    }\n    const rootCandidate = resolve(resolvedRoot, routesDir);\n    if (existsSync(rootCandidate)) {\n      return toPosixPath(rootCandidate);\n    }\n    return toPosixPath(candidate);\n  }\n\n  const serverRoutes = resolve(serverDir, \"routes\");\n  if (existsSync(serverRoutes)) {\n    return toPosixPath(serverRoutes);\n  }\n  const rootRoutes = resolve(resolvedRoot, \"routes\");\n  if (existsSync(rootRoutes)) {\n    return toPosixPath(rootRoutes);\n  }\n  return toPosixPath(serverRoutes);\n}\n\nexport function resolveTaserEntryPath(\n  rootDir: string,\n  serverDir: string,\n  entry?: string,\n): string | undefined {\n  const resolvedRoot = resolve(rootDir || process.cwd());\n\n  if (entry && !entry.startsWith(\"#\")) {\n    const candidate = isAbsolute(entry) ? entry : resolve(serverDir, entry);\n    if (existsSync(candidate)) return toPosixPath(resolve(candidate));\n    const rootCandidate = resolve(resolvedRoot, entry);\n    if (existsSync(rootCandidate)) return toPosixPath(resolve(rootCandidate));\n  }\n  const defaultCandidate = join(serverDir, \"taser.ts\");\n  if (existsSync(defaultCandidate)) {\n    return toPosixPath(resolve(defaultCandidate));\n  }\n  const rootSrcCandidate = join(resolvedRoot, \"src\", \"taser.ts\");\n  if (existsSync(rootSrcCandidate)) {\n    return toPosixPath(resolve(rootSrcCandidate));\n  }\n  const rootCandidate = join(resolvedRoot, \"taser.ts\");\n  if (existsSync(rootCandidate)) {\n    return toPosixPath(resolve(rootCandidate));\n  }\n  return undefined;\n}\n"],"mappings":"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"}