UNPKG

env-type-defs

Version:

Automatically generate TypeScript type definitions for environment variables based on the content of your env files.

36 lines (35 loc) 1.64 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateEnvTypes = void 0; const config_1 = require("../config"); const paths_1 = require("./paths"); const dotenv_1 = __importDefault(require("dotenv")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const determine_type_1 = require("./determine-type"); const envs = {}; const generateEnvTypes = (pathArg) => { const envFiles = (0, paths_1.getEnvPath)(); envFiles.forEach((env) => { const envPath = pathArg || path_1.default.join(config_1.DIRECTORY_PATH, env); const envConfig = dotenv_1.default.parse(fs_1.default.readFileSync(envPath)); Object.keys(envConfig).forEach((key) => { envs[key] = (0, determine_type_1.determineType)(envConfig[key]); }); }); const envPathName = path_1.default.join(config_1.DIRECTORY_PATH, config_1.ENV_TYPE_PATH); let envObject = ""; const envObjKeys = Object.keys(envs); envObjKeys.forEach((key, index) => { envObject += "\t" + key + ":" + envs[key]; if (index != envObjKeys.length - 1) { envObject += ",\n\t"; } }); fs_1.default.writeFileSync(envPathName, `// generated by env-type-defs https://www.npmjs.com/package/env-type-defs\ndeclare global {\n namespace NodeJS {\n interface ProcessEnv {\n ${envObject}\n }\n }\n}\nexport {};\n `, {}); return envs; }; exports.generateEnvTypes = generateEnvTypes;