UNPKG

@app.json/cli

Version:

Capture what your app needs to be deployed and run

58 lines (57 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@app.json/core"); var fs_1 = require("fs"); var path_1 = require("path"); var prettier_1 = require("prettier"); function exportTs(appJsonPath) { var appJson = core_1.loadAppJson(appJsonPath); var code = [ "function getEnvSafe(name: string): string {\n const value = process.env[name];\n if (!value) {\n throw new Error(`Environment variable ${name} was undefined`)\n }\n return value;\n }" ]; code.push.apply(code, generateConfigTs(appJson)); var configPath = path_1.resolve(path_1.parse(appJsonPath).dir, 'config.ts'); fs_1.writeFileSync(configPath, prettier_1.format(code.join('\n'), { singleQuote: true, tabWidth: 4, filepath: 'config.ts' })); } exports.exportTs = exportTs; function generateConfigTs(appJson) { var env = appJson.env; if (!env) { return []; } var code = ['export const config = {']; Object.keys(env).forEach(function (key) { code.push(generateEnvGetter(key)); }); code.push.apply(code, generateComponentsTs(appJson)); code.push('};'); return code; } function generateComponentsTs(appJson) { var components = appJson.components; if (!components) { return []; } var code = ["components: {"]; components.forEach(function (component) { code.push.apply(code, generateComponentTs(component)); }); code.push('},'); return code; } function generateComponentTs(component) { var code = ["get " + core_1.camelize(component.name) + "() {"]; code.push('return {'); component.variables.forEach(function (key) { code.push(core_1.camelize(key.toLowerCase()) + ": getEnvSafe('" + key + "'),"); }); code.push('}},'); return code; } function generateEnvGetter(key) { return "get " + core_1.camelize(key.toLowerCase()) + "(): string {return getEnvSafe('" + key + "')},"; }