@sveltejs/kit
Version:
SvelteKit is the fastest way to build Svelte apps
40 lines (34 loc) • 1.29 kB
JavaScript
/** @import { EnvVarConfig } from '@sveltejs/kit/env' */
import path from 'node:path';
import { create_explicit_env_types } from '../env.js';
import { write_if_changed } from './utils.js';
import { posixify } from '../../utils/os.js';
const DOCS = '// See https://svelte.dev/docs/kit/environment-variables for more information';
/**
* Writes ambient declarations including types reference to @sveltejs/kit,
* and the existing environment variables in process.env to
* $env/static/private and $env/static/public
* @param {string | null} entry
* @param {Record<string, EnvVarConfig<any>> | null} env_config
* @param {string} root
*/
export function write_env(entry, env_config, root) {
const content = [];
const dir = path.join(root, 'node_modules/$app/types');
const out = path.join(dir, 'env.d.ts');
if (entry && env_config) {
const relative = posixify(path.relative(dir, entry));
content.push(
`// This file is generated from ${relative}.\n${DOCS}`,
create_explicit_env_types(env_config, relative, 'private'),
create_explicit_env_types(env_config, relative, 'public')
);
} else {
content.push(
DOCS,
create_explicit_env_types({}, '', 'private'),
create_explicit_env_types({}, '', 'public')
);
}
write_if_changed(out, content.join('\n\n'));
}