hono
Version:
Web framework built on Web Standards
56 lines (55 loc) • 1.36 kB
JavaScript
// src/helper/adapter/index.ts
var env = (c, runtime) => {
const global = globalThis;
const globalEnv = global?.process?.env;
runtime ??= getRuntimeKey();
const runtimeEnvHandlers = {
bun: () => globalEnv,
node: () => globalEnv,
"edge-light": () => globalEnv,
deno: () => {
return Deno.env.toObject();
},
workerd: () => c.env,
fastly: () => ({}),
other: () => ({})
};
return runtimeEnvHandlers[runtime]();
};
var knownUserAgents = {
deno: "Deno",
bun: "Bun",
workerd: "Cloudflare-Workers",
node: "Node.js"
};
var getRuntimeKey = () => {
const global = globalThis;
const userAgentSupported = typeof navigator !== "undefined" && typeof navigator.userAgent === "string";
if (userAgentSupported) {
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";
};
var checkUserAgentEquals = (platform) => {
const userAgent = navigator.userAgent;
return userAgent.startsWith(platform);
};
export {
checkUserAgentEquals,
env,
getRuntimeKey,
knownUserAgents
};