@reliverse/rse
Version:
@reliverse/rse is your all-in-one companion for bootstrapping and improving any kind of projects (especially web apps built with frameworks like Next.js) — whether you're kicking off something new or upgrading an existing app. It is also a little AI-power
96 lines (95 loc) • 2.12 kB
JavaScript
export function addSvelteKitEnvModules(aliases) {
aliases["$env/dynamic/private"] = createDataUriModule(
createDynamicEnvModule()
);
aliases["$env/dynamic/public"] = createDataUriModule(
createDynamicEnvModule()
);
aliases["$env/static/private"] = createDataUriModule(
createStaticEnvModule(filterPrivateEnv("PUBLIC_", ""))
);
aliases["$env/static/public"] = createDataUriModule(
createStaticEnvModule(filterPublicEnv("PUBLIC_", ""))
);
}
function createDataUriModule(module) {
return `data:text/javascript;charset=utf-8,${encodeURIComponent(module)}`;
}
function createStaticEnvModule(env) {
const declarations = Object.keys(env).filter((k) => validIdentifier.test(k) && !reserved.has(k)).map((k) => `export const ${k} = ${JSON.stringify(env[k])};`);
return `
${declarations.join("\n")}
// jiti dirty hack: .unknown
`;
}
function createDynamicEnvModule() {
return `
export const env = process.env;
// jiti dirty hack: .unknown
`;
}
export function filterPrivateEnv(publicPrefix, privatePrefix) {
return Object.fromEntries(
Object.entries(process.env).filter(
([k]) => k.startsWith(privatePrefix) && (publicPrefix === "" || !k.startsWith(publicPrefix))
)
);
}
export function filterPublicEnv(publicPrefix, privatePrefix) {
return Object.fromEntries(
Object.entries(process.env).filter(
([k]) => k.startsWith(publicPrefix) && (privatePrefix === "" || !k.startsWith(privatePrefix))
)
);
}
const validIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
const reserved = /* @__PURE__ */ new Set([
"do",
"if",
"in",
"for",
"let",
"new",
"try",
"var",
"case",
"else",
"enum",
"eval",
"null",
"this",
"true",
"void",
"with",
"await",
"break",
"catch",
"class",
"const",
"false",
"super",
"throw",
"while",
"yield",
"delete",
"export",
"import",
"public",
"return",
"static",
"switch",
"typeof",
"default",
"extends",
"finally",
"package",
"private",
"continue",
"debugger",
"function",
"arguments",
"interface",
"protected",
"implements",
"instanceof"
]);