UNPKG

claire-framework

Version:

- được viết bằng TypeScript - hỗ trợ websocket và HTTP request - hỗ trợ CLI để generate base project (claire-cli)

81 lines 6.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const AbstractEnvProvider_1 = require("../environment/AbstractEnvProvider"); const ClaireError_1 = require("../system/ClaireError"); const core_1 = require("../decorator/core"); const errors_1 = require("../system/errors"); class DefaultEnvProvider extends AbstractEnvProvider_1.AbstractEnvProvider { constructor() { super(); } load(templateClass) { if (!this.envVariables) { this.envVariables = {}; if (!process.env.NODE_ENV) { throw "NODE_ENV not set."; } this.currentEnv = process.env.NODE_ENV; if (this.envFilePath && this.fileNameResolver) { this.envFilePath = path_1.default.join(this.envFilePath, this.fileNameResolver(this.currentEnv)); } if (!templateClass.prototype || !templateClass.prototype[core_1.METADATA]) { throw "Invalid env prototype. Make sure to use the @Env() decorator."; } let env; if (this.envFilePath) { try { env = require(this.envFilePath); } catch (err) { throw new ClaireError_1.ClaireError(errors_1.FILE_ACCESS_ERROR, this.envFilePath); } //-- list all properties of env let keys = Object.keys(env); if (!keys || !keys.length) { throw new ClaireError_1.ClaireError(errors_1.INVALID_ENV_FILE, this.envFilePath); } let envVars = env[keys[0]]; let envKeys = Object.keys(envVars); //-- set values from env file envKeys.forEach((key) => { this.envVariables[key] = envVars[key]; }); } //-- set value from environment variables let allKeys = Object.keys(templateClass.prototype[core_1.METADATA]); allKeys.forEach((key) => { let envValue = process.env[key]; if (envValue !== undefined) { switch (templateClass.prototype[core_1.METADATA][key]) { case "Number": let numberValue = Number(envValue); if (isNaN(numberValue)) { throw new ClaireError_1.ClaireError(errors_1.INVALID_NUMERIC_VALUE, `${key}: ${envValue}`); } this.envVariables[key] = numberValue; break; case "Boolean": this.envVariables[key] = envValue === "true"; break; case "String": this.envVariables[key] = envValue; break; } } }); //-- check again for missing value allKeys.forEach((key) => { if (this.envVariables[key] === undefined) { throw `Env var not set for key: ${key}`; } }); } return this.envVariables; } } exports.DefaultEnvProvider = DefaultEnvProvider; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVudlByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2RlZmF1bHQtaW1wbGVtZW50YXRpb25zL0RlZmF1bHRFbnZQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qiw0RUFBdUU7QUFDdkUsdURBQWtEO0FBQ2xELDRDQUEyQztBQUMzQyw2Q0FJMEI7QUFFMUIsTUFBYSxrQkFBbUIsU0FBUSx5Q0FBbUI7SUFFdkQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTSxJQUFJLENBQUksYUFBdUM7UUFFbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFFcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFFdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUN2QixNQUFNLG1CQUFtQixDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUV2QyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDMUY7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsZUFBUSxDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sK0RBQStELENBQUM7YUFDekU7WUFFRCxJQUFJLEdBQUcsQ0FBQztZQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbEIsSUFBSTtvQkFDQSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENB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