{
  "version": 3,
  "sources": ["../../src/runtime/package.ts"],
  "sourcesContent": ["import { join } from \"node:path\";\nimport { parse } from \"smol-toml\";\nimport {\n\tformatVersion,\n\tisRecord,\n\tMAX_METADATA_FILE_BYTES,\n\toptionString,\n\tparentDirectories,\n\tsafeMetadata,\n} from \"./helpers.js\";\nimport type { CollectorContext } from \"./types.js\";\n\nexport async function collectPackage(\n\tcontext: CollectorContext,\n): Promise<Record<string, string> | undefined> {\n\tif (!context.needs(\"package\")) return undefined;\n\tconst versionFormat = optionString(context, \"package\", \"version_format\");\n\tfor (const reader of [readPackageJson, readCargo, readPyproject]) {\n\t\tconst result = await reader(context);\n\t\tif (!result) continue;\n\t\treturn {\n\t\t\tsource: result.source,\n\t\t\tversion: formatVersion(result.version, versionFormat),\n\t\t};\n\t}\n\treturn undefined;\n}\n\ninterface PackageVersion {\n\tversion: string;\n\tsource: string;\n}\n\nasync function readPackageJson(context: CollectorContext): Promise<PackageVersion | undefined> {\n\tconst source = await context.fs.readFile(\n\t\tjoin(context.input.cwd, \"package.json\"),\n\t\tMAX_METADATA_FILE_BYTES,\n\t);\n\tif (!source) return undefined;\n\ttry {\n\t\tconst document = JSON.parse(source) as unknown;\n\t\tconst version = isRecord(document) ? safeVersion(document.version) : undefined;\n\t\treturn version ? { version, source: \"package.json\" } : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nasync function readCargo(context: CollectorContext): Promise<PackageVersion | undefined> {\n\tconst path = join(context.input.cwd, \"Cargo.toml\");\n\tconst source = await context.fs.readFile(path, MAX_METADATA_FILE_BYTES);\n\tif (!source) return undefined;\n\ttry {\n\t\tconst document = parse(source);\n\t\tconst packageTable = isRecord(document.package) ? document.package : undefined;\n\t\tconst direct = safeVersion(packageTable?.version);\n\t\tif (direct) return { version: direct, source: \"Cargo.toml\" };\n\t\tconst inherited = isRecord(packageTable?.version) && packageTable.version.workspace === true;\n\t\tif (!inherited) return undefined;\n\t\tconst localWorkspaceVersion = workspacePackageVersion(document);\n\t\tif (localWorkspaceVersion) {\n\t\t\treturn { version: localWorkspaceVersion, source: \"Cargo.toml workspace\" };\n\t\t}\n\t\tfor (const parent of parentDirectories(context.input.cwd, 8)) {\n\t\t\tconst parentSource = await context.fs.readFile(\n\t\t\t\tjoin(parent, \"Cargo.toml\"),\n\t\t\t\tMAX_METADATA_FILE_BYTES,\n\t\t\t);\n\t\t\tif (!parentSource) continue;\n\t\t\tconst parentDocument = parse(parentSource);\n\t\t\tconst version = workspacePackageVersion(parentDocument);\n\t\t\tif (version) return { version, source: \"Cargo.toml workspace\" };\n\t\t}\n\t\treturn undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction workspacePackageVersion(document: Record<string, unknown>): string | undefined {\n\tconst workspace = isRecord(document.workspace) ? document.workspace : undefined;\n\tconst workspacePackage = isRecord(workspace?.package) ? workspace.package : undefined;\n\treturn safeVersion(workspacePackage?.version);\n}\n\nasync function readPyproject(context: CollectorContext): Promise<PackageVersion | undefined> {\n\tconst source = await context.fs.readFile(\n\t\tjoin(context.input.cwd, \"pyproject.toml\"),\n\t\tMAX_METADATA_FILE_BYTES,\n\t);\n\tif (!source) return undefined;\n\ttry {\n\t\tconst document = parse(source);\n\t\tconst project = isRecord(document.project) ? document.project : undefined;\n\t\tif (Array.isArray(project?.dynamic) && project.dynamic.includes(\"version\")) return undefined;\n\t\tconst pepVersion = safeVersion(project?.version);\n\t\tif (pepVersion) return { version: pepVersion, source: \"pyproject.toml (PEP 621)\" };\n\t\tconst tool = isRecord(document.tool) ? document.tool : undefined;\n\t\tconst poetry = isRecord(tool?.poetry) ? tool.poetry : undefined;\n\t\tconst poetryVersion = safeVersion(poetry?.version);\n\t\treturn poetryVersion\n\t\t\t? { version: poetryVersion, source: \"pyproject.toml (Poetry)\" }\n\t\t\t: undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction safeVersion(value: unknown): string | undefined {\n\tconst version = safeMetadata(value, 80);\n\treturn version && /^[0-9A-Za-z][0-9A-Za-z.+_-]*$/u.test(version) ? version : undefined;\n}\n"],
  "mappings": "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",
  "names": []
}
