{
  "version": 3,
  "sources": ["../../src/runtime/development.ts"],
  "sourcesContent": ["import { join } from \"node:path\";\nimport { parse } from \"smol-toml\";\nimport {\n\tdirectMatch,\n\tformatVersion,\n\tisRecord,\n\tMAX_METADATA_FILE_BYTES,\n\toptionBoolean,\n\toptionString,\n\toptionStrings,\n\trunBounded,\n\tsafeMetadata,\n\tsetString,\n} from \"./helpers.js\";\nimport type { CollectorContext, MutableModuleSnapshot } from \"./types.js\";\n\nexport async function collectDevelopment(\n\tcontext: CollectorContext,\n): Promise<MutableModuleSnapshot> {\n\tconst result: MutableModuleSnapshot = {};\n\tconst directNames = [\"mise\", \"direnv\", \"pixi\"] as const;\n\tconst needsListing = directNames.some((name) => context.needs(name));\n\tconst entries = needsListing ? await context.entries() : [];\n\n\tif (\n\t\tcontext.needs(\"mise\") &&\n\t\tdetected(context, entries, \"mise\", [\"mise.toml\", \".mise.toml\", \".tool-versions\"])\n\t) {\n\t\tconst values: Record<string, string> = {};\n\t\tif (context.needs(\"mise\", \"health\")) {\n\t\t\tconst output = await runBounded(context, \"mise\", [\"doctor\"]);\n\t\t\tconst health = output ? parseMiseHealth(output) : undefined;\n\t\t\tif (health) values.health = health;\n\t\t}\n\t\tresult.mise = values;\n\t}\n\n\tif (context.needs(\"direnv\") && detected(context, entries, \"direnv\", [\".envrc\"])) {\n\t\tconst values: Record<string, string> = {};\n\t\tif ([\"rc_path\", \"allowed\", \"loaded\"].some((variable) => context.needs(\"direnv\", variable))) {\n\t\t\tconst output = await runBounded(context, \"direnv\", [\"status\", \"--json\"]);\n\t\t\tif (output) Object.assign(values, parseDirenvStatus(output));\n\t\t}\n\t\tresult.direnv = values;\n\t}\n\n\tconst conda = safeMetadata(context.input.environment.CONDA_DEFAULT_ENV);\n\tif (\n\t\tcontext.needs(\"conda\") &&\n\t\tconda &&\n\t\t!(optionBoolean(context, \"conda\", \"ignore_base\") && conda === \"base\")\n\t) {\n\t\tresult.conda = { environment: conda };\n\t}\n\n\tif (context.needs(\"pixi\") && detected(context, entries, \"pixi\", [\"pixi.toml\", \"pixi.lock\"])) {\n\t\tconst values: Record<string, string> = {};\n\t\tconst environment = safeMetadata(context.input.environment.PIXI_ENVIRONMENT_NAME);\n\t\tif (\n\t\t\tenvironment &&\n\t\t\t(environment !== \"default\" || optionBoolean(context, \"pixi\", \"show_default_environment\"))\n\t\t) {\n\t\t\tvalues.environment = environment;\n\t\t}\n\t\tconst project =\n\t\t\tsafeMetadata(context.input.environment.PIXI_PROJECT_NAME) ?? (await readPixiProject(context));\n\t\tif (project) values.project_name = project;\n\t\tif (context.needs(\"pixi\", \"version\")) {\n\t\t\tconst output = await runBounded(context, \"pixi\", [\"--version\"]);\n\t\t\tconst version = output ? parsePixiVersion(output) : undefined;\n\t\t\tif (version)\n\t\t\t\tvalues.version = formatVersion(version, optionString(context, \"pixi\", \"version_format\"));\n\t\t}\n\t\tresult.pixi = values;\n\t}\n\n\tconst nixState = safeMetadata(context.input.environment.IN_NIX_SHELL);\n\tif (context.needs(\"nix_shell\") && (nixState === \"pure\" || nixState === \"impure\")) {\n\t\tconst values: Record<string, string> = { state: nixState };\n\t\tsetString(values, \"name\", context.input.environment.NIX_SHELL_NAME);\n\t\tsetString(values, \"level\", context.input.environment.NIX_SHELL_LEVEL);\n\t\tresult.nix_shell = values;\n\t}\n\n\tif (context.needs(\"guix_shell\") && safeMetadata(context.input.environment.GUIX_ENVIRONMENT)) {\n\t\tresult.guix_shell = { state: \"active\" };\n\t}\n\treturn result;\n}\n\nfunction detected(\n\tcontext: CollectorContext,\n\tentries: Awaited<ReturnType<CollectorContext[\"entries\"]>>,\n\tname: \"mise\" | \"direnv\" | \"pixi\",\n\tdefaultFiles: string[],\n): boolean {\n\tconst files = optionStrings(context, name, \"detect_files\");\n\treturn directMatch(\n\t\tentries,\n\t\tfiles.length > 0 ? files : defaultFiles,\n\t\toptionStrings(context, name, \"detect_extensions\"),\n\t\toptionStrings(context, name, \"detect_folders\"),\n\t);\n}\n\nexport function parseMiseHealth(output: string): string | undefined {\n\tconst text = safeMetadata(output, 8_192)?.toLowerCase();\n\tif (!text) return undefined;\n\tif (/\\b(?:healthy|no problems found|all checks passed)\\b/u.test(text)) return \"healthy\";\n\tif (/\\b(?:error|unhealthy|problem|warning)\\b/u.test(text)) return \"issues\";\n\treturn undefined;\n}\n\nexport function parseDirenvStatus(output: string): Record<string, string> {\n\ttry {\n\t\tconst document = JSON.parse(output) as unknown;\n\t\tif (!isRecord(document)) return {};\n\t\tconst values: Record<string, string> = {};\n\t\tconst found = isRecord(document.foundRC) ? document.foundRC : undefined;\n\t\tconst loaded = isRecord(document.loadedRC) ? document.loadedRC : undefined;\n\t\tsetString(values, \"rc_path\", found?.path ?? loaded?.path);\n\t\tif (typeof found?.allowed === \"number\" || typeof found?.allowed === \"boolean\") {\n\t\t\tvalues.allowed = found.allowed ? \"allowed\" : \"denied\";\n\t\t}\n\t\tif (loaded) values.loaded = \"loaded\";\n\t\telse if (found) values.loaded = \"not loaded\";\n\t\treturn values;\n\t} catch {\n\t\tconst path = /^Found RC path ([^\\r\\n]+)$/mu.exec(output)?.[1];\n\t\treturn path ? { rc_path: safeMetadata(path) ?? \"\" } : {};\n\t}\n}\n\nasync function readPixiProject(context: CollectorContext): Promise<string | undefined> {\n\tconst source = await context.fs.readFile(\n\t\tjoin(context.input.cwd, \"pixi.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\tconst workspace = isRecord(document.workspace) ? document.workspace : undefined;\n\t\treturn safeMetadata(project?.name ?? workspace?.name);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction parsePixiVersion(output: string): string | undefined {\n\tconst match = /^(?:pixi\\s+)?(\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?)$/u.exec(output.trim());\n\treturn match?.[1] ? `v${match[1]}` : undefined;\n}\n"],
  "mappings": "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",
  "names": []
}
