Files
Tiber365/node_modules/astro/dist/env/sync.js

30 lines
843 B
JavaScript

import fsMod from "node:fs";
import { TYPES_TEMPLATE_URL } from "./constants.js";
import { getEnvFieldType } from "./validators.js";
function syncAstroEnv(settings, fs = fsMod) {
if (!settings.config.experimental.env) {
return;
}
const schema = settings.config.experimental.env.schema ?? {};
let client = "";
let server = "";
for (const [key, options] of Object.entries(schema)) {
const str = `export const ${key}: ${getEnvFieldType(options)};
`;
if (options.context === "client") {
client += str;
} else {
server += str;
}
}
const template = fs.readFileSync(TYPES_TEMPLATE_URL, "utf-8");
const content = template.replace("// @@CLIENT@@", client).replace("// @@SERVER@@", server);
settings.injectedTypes.push({
filename: "astro/env.d.ts",
content
});
}
export {
syncAstroEnv
};