{
  "version": 3,
  "sources": ["../../src/runtime/execution.ts"],
  "sourcesContent": ["import {\n\texactAlias,\n\toptionBoolean,\n\toptionMap,\n\toptionString,\n\toptionStrings,\n\tsafeMetadata,\n} from \"./helpers.js\";\nimport {\n\ttype CollectorContext,\n\ttype MutableModuleSnapshot,\n\tPRIVATE_STYLE_SELECTOR,\n} from \"./types.js\";\n\nexport async function collectExecution(context: CollectorContext): Promise<MutableModuleSnapshot> {\n\tif (context.input.reason === \"periodic\" && context.input.previous) {\n\t\tconst retained: MutableModuleSnapshot = {};\n\t\tfor (const name of [\"os\", \"container\", \"hostname\", \"username\"] as const) {\n\t\t\tconst values = context.input.previous.modules[name];\n\t\t\tif (!context.needs(name) || !values) continue;\n\t\t\tconst selector = context.input.previous.styleSelectors?.[name];\n\t\t\tretained[name] = {\n\t\t\t\t...values,\n\t\t\t\t...(selector === undefined ? {} : { [PRIVATE_STYLE_SELECTOR]: selector }),\n\t\t\t};\n\t\t}\n\t\treturn retained;\n\t}\n\tconst result: MutableModuleSnapshot = {};\n\tif (context.needs(\"os\")) result.os = await osValues(context);\n\tconst container = context.needs(\"container\") ? await containerValues(context) : undefined;\n\tif (container) result.container = container;\n\tconst hostname = context.needs(\"hostname\") ? hostnameValues(context) : undefined;\n\tif (hostname) result.hostname = hostname;\n\tconst username = context.needs(\"username\") ? usernameValues(context) : undefined;\n\tif (username) result.username = username;\n\treturn result;\n}\n\nasync function osValues(context: CollectorContext): Promise<Record<string, string>> {\n\tconst wsl = Boolean(safeMetadata(context.input.environment.WSL_DISTRO_NAME));\n\tconst type = wsl ? \"wsl\" : platformType(context.input.platform);\n\tconst details = context.input.platform === \"linux\" ? await linuxRelease(context) : {};\n\tconst symbols = optionMap(context, \"os\", \"symbols\");\n\treturn {\n\t\ttype,\n\t\tname: details.name ?? platformName(context.input.platform, wsl),\n\t\t...(details.version ? { version: details.version } : {}),\n\t\t...(details.edition ? { edition: details.edition } : {}),\n\t\t...(details.codename ? { codename: details.codename } : {}),\n\t\t...(Object.hasOwn(symbols, type) && safeMetadata(symbols[type])\n\t\t\t? { symbol: safeMetadata(symbols[type]) as string }\n\t\t\t: {}),\n\t};\n}\n\nasync function linuxRelease(context: CollectorContext): Promise<{\n\tname?: string;\n\tversion?: string;\n\tedition?: string;\n\tcodename?: string;\n}> {\n\tconst source = await context.fs.readFile(\"/etc/os-release\", 16 * 1024);\n\tif (!source) return {};\n\tconst values: Record<string, string> = {};\n\tfor (const line of source.split(/\\r?\\n/u)) {\n\t\tconst match = /^([A-Z_]+)=(.*)$/u.exec(line);\n\t\tif (!match?.[1] || match[2] === undefined) continue;\n\t\tconst value = safeMetadata(match[2].replace(/^['\"]|['\"]$/gu, \"\"));\n\t\tif (value) values[match[1]] = value;\n\t}\n\treturn {\n\t\tname: values.NAME,\n\t\tversion: values.VERSION_ID,\n\t\tedition: values.ID,\n\t\tcodename: values.VERSION_CODENAME,\n\t};\n}\n\nasync function containerValues(\n\tcontext: CollectorContext,\n): Promise<Record<string, string> | undefined> {\n\tconst env = context.input.environment;\n\tif (safeMetadata(env.REMOTE_CONTAINERS) || safeMetadata(env.CODESPACES)) {\n\t\treturn { name: \"Dev Container\", type: \"devcontainer\" };\n\t}\n\tconst wsl = safeMetadata(env.WSL_DISTRO_NAME);\n\tif (wsl) return { name: `WSL ${wsl}`, type: \"wsl\" };\n\tif (await context.fs.fileExists(\"/.dockerenv\")) return { name: \"Docker\", type: \"docker\" };\n\tif (await context.fs.fileExists(\"/run/.containerenv\")) return { name: \"Podman\", type: \"podman\" };\n\tconst systemd = safeMetadata(await context.fs.readFile(\"/run/systemd/container\", 256));\n\treturn systemd ? { name: systemd, type: \"container\" } : undefined;\n}\n\nfunction hostnameValues(context: CollectorContext): Record<string, string> | undefined {\n\tconst ssh = isSsh(context);\n\tif (optionBoolean(context, \"hostname\", \"ssh_only\") && !ssh) return undefined;\n\tconst raw = safeMetadata(context.input.hostname);\n\tif (!raw) return undefined;\n\tconst aliases = optionMap(context, \"hostname\", \"aliases\");\n\tconst trimAt = optionString(context, \"hostname\", \"trim_at\");\n\tconst index = trimAt ? raw.indexOf(trimAt) : -1;\n\tconst trimmed = index >= 0 ? raw.slice(0, index) : raw;\n\tconst hostname = exactAlias(trimmed, aliases) ?? trimmed;\n\treturn { hostname, ssh_symbol: ssh ? \"\uD83C\uDF10 \" : \"\" };\n}\n\nfunction usernameValues(context: CollectorContext): Record<string, string> | undefined {\n\tconst user = safeMetadata(context.input.username);\n\tif (!user) return undefined;\n\tconst env = context.input.environment;\n\tconst login = safeMetadata(env.LOGNAME ?? env.USER ?? env.USERNAME);\n\tconst privileged = /^(?:root|administrator)$/iu.test(user);\n\tconst detected = optionStrings(context, \"username\", \"detect_env_vars\").some(\n\t\t(name) => safeMetadata(env[name]) !== undefined,\n\t);\n\tif (\n\t\t!optionBoolean(context, \"username\", \"show_always\") &&\n\t\t!isSsh(context) &&\n\t\t!privileged &&\n\t\t!(login && login !== user) &&\n\t\t!detected\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tuser: exactAlias(user, optionMap(context, \"username\", \"aliases\")) ?? user,\n\t\t[PRIVATE_STYLE_SELECTOR]: privileged ? \"root\" : \"user\",\n\t};\n}\n\nfunction isSsh(context: CollectorContext): boolean {\n\treturn Boolean(\n\t\tsafeMetadata(context.input.environment.SSH_CONNECTION) ||\n\t\t\tsafeMetadata(context.input.environment.SSH_TTY),\n\t);\n}\n\nfunction platformType(platform: NodeJS.Platform): string {\n\tif (platform === \"darwin\") return \"macos\";\n\tif (platform === \"win32\") return \"windows\";\n\treturn platform;\n}\n\nfunction platformName(platform: NodeJS.Platform, wsl: boolean): string {\n\tif (wsl) return \"WSL\";\n\tif (platform === \"darwin\") return \"macOS\";\n\tif (platform === \"win32\") return \"Windows\";\n\tif (platform === \"linux\") return \"Linux\";\n\treturn platform;\n}\n"],
  "mappings": "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",
  "names": []
}
