Files
SnowLuma/.pnpm-store/v11/files/f9/299007fc9fb1c316eca2722f01a2d5d9b1ccf5a79e864130b60ef88d4b990a7d10737de034cb50d827ce53189876eac3f68c8d7aeb6030d2e39c9eb0c2a77b
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

38 lines
1.1 KiB
Plaintext

//#region src/helper/adapter/index.ts
const env = (c, runtime) => {
const globalEnv = globalThis?.process?.env;
runtime ??= getRuntimeKey();
return {
bun: () => globalEnv,
node: () => globalEnv,
"edge-light": () => globalEnv,
deno: () => {
return Deno.env.toObject();
},
workerd: () => c.env,
fastly: () => ({}),
other: () => ({})
}[runtime]();
};
const knownUserAgents = {
deno: "Deno",
bun: "Bun",
workerd: "Cloudflare-Workers",
node: "Node.js"
};
const getRuntimeKey = () => {
const global = globalThis;
if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") {
for (const [runtimeKey, userAgent] of Object.entries(knownUserAgents)) if (checkUserAgentEquals(userAgent)) return runtimeKey;
}
if (typeof global?.EdgeRuntime === "string") return "edge-light";
if (global?.fastly !== void 0) return "fastly";
if (global?.process?.release?.name === "node") return "node";
return "other";
};
const checkUserAgentEquals = (platform) => {
return navigator.userAgent.startsWith(platform);
};
//#endregion
export { checkUserAgentEquals, env, getRuntimeKey, knownUserAgents };