UNPKG

@selfage/env_var_getter

Version:

Get optional/required variable from process.env.

52 lines 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnvVar = void 0; exports.getEnvVar = getEnvVar; let GLOBAL_NAMES = new Set(); class EnvVar { constructor(name, value) { this.name = name; this.value = value; } required() { if (this.value == null) { throw new Error(`Env variable ${this.name} is required but not provided.`); } return this; } asString() { return this.value; } asNumber() { if (this.value == null) { return undefined; } let value = Number(this.value); if (isNaN(value)) { throw new Error(`Env variable ${this.name} is not a number`); } return value; } asBoolean() { if (this.value == null) { return undefined; } if (this.value === 'true') { return true; } else if (this.value === 'false') { return false; } else { throw new Error(`Env variable ${this.name}'s value needs to be either true or false.`); } } } exports.EnvVar = EnvVar; function getEnvVar(name) { if (GLOBAL_NAMES.has(name)) { throw new Error(`Env variable ${name} has already been defined.`); } return new EnvVar(name, process.env[name]); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2V0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlDQSw4QkFLQztBQTlDRCxJQUFJLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRXJDLE1BQWEsTUFBTTtJQUNqQixZQUEyQixJQUFZLEVBQVUsS0FBYztRQUFwQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUFHLENBQUM7SUFFNUQsUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksNENBQTRDLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckNELHdCQXFDQztBQUVELFNBQWdCLFNBQVMsQ0FBQyxJQUFZO0lBQ3BDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksNEJBQTRCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgR0xPQkFMX05BTUVTID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBjbGFzcyBFbnZWYXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBzdHJpbmcsIHByaXZhdGUgdmFsdWU/OiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIHJlcXVpcmVkKCk6IHRoaXMge1xuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW52IHZhcmlhYmxlICR7dGhpcy5uYW1lfSBpcyByZXF1aXJlZCBidXQgbm90IHByb3ZpZGVkLmApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGFzTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gTnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW52IHZhcmlhYmxlICR7dGhpcy5uYW1lfSBpcyBub3QgYSBudW1iZXJgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGFzQm9vbGVhbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbnYgdmFyaWFibGUgJHt0aGlzLm5hbWV9J3MgdmFsdWUgbmVlZHMgdG8gYmUgZWl0aGVyIHRydWUgb3IgZmFsc2UuYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnZWYXIobmFtZTogc3RyaW5nKTogRW52VmFyIHtcbiAgaWYgKEdMT0JBTF9OQU1FUy5oYXMobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVudiB2YXJpYWJsZSAke25hbWV9IGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZC5gKTtcbiAgfVxuICByZXR1cm4gbmV3IEVudlZhcihuYW1lLCBwcm9jZXNzLmVudltuYW1lXSk7XG59XG4iXX0=