Comparing version 0.11.3 to 0.11.4
27
index.js
@@ -7,13 +7,13 @@ | ||
const mapMetas = metas => Object.keys(metas).map(key => { | ||
const mapMetas = (metas, env) => Object.keys(metas).map(key => { | ||
const meta = metas[key]; | ||
meta.key = key; | ||
if (objecta.hasFunction(meta, 'requiredEnv')) { | ||
objecta.setBoolean(meta, 'required', meta.requiredEnv(process.env)); | ||
objecta.setBoolean(meta, 'required', meta.requiredEnv(env)); | ||
} | ||
if (meta.defaults) { | ||
const envDefault = meta.defaults[process.env.NODE_ENV]; | ||
const envDefault = meta.defaults[env.NODE_ENV]; | ||
if (envDefault !== undefined) { | ||
if (meta.default !== undefined) { | ||
console.error(clc.yellow(`Overriding ${key} to '${envDefault}' for '${process.env.NODE_ENV}'`)); | ||
console.error(clc.yellow(`Overriding ${key} to '${envDefault}' for '${env.NODE_ENV}'`)); | ||
} | ||
@@ -107,3 +107,3 @@ meta.default = envDefault; | ||
module.exports = (pkg, specf, params, options = {}) => { | ||
module.exports = (pkg, specf, envars, options = {}) => { | ||
pkg = Object.assign({}, pkg, { | ||
@@ -120,6 +120,7 @@ lastName: lodash.last(pkg.name.split('/')) | ||
assert(typeof spec.defaults === 'object', 'spec.defaults object'); | ||
assert(process.env.NODE_ENV, 'NODE_ENV'); | ||
assert(envars.NODE_ENV, 'NODE_ENV'); | ||
assert(spec.env, 'spec.env'); | ||
spec.env = mapMetas(spec.env); | ||
if (process.env.mode === 'help') { | ||
spec.env = mapMetas(spec.env, envars); | ||
console.error('env', spec.env); | ||
if (envars.mode === 'help') { | ||
console.error(clc.green.bold(spec.description)); | ||
@@ -130,4 +131,4 @@ console.error(clc.white.bold('Options:')); | ||
} | ||
const envDefaults = spec.defaults[process.env.NODE_ENV]; | ||
const env = reduceMetas(spec.env, process.env, envDefaults); | ||
const envDefaults = spec.defaults[envars.NODE_ENV]; | ||
const env = reduceMetas(spec.env, envars, envDefaults); | ||
if (!spec.config) { | ||
@@ -137,7 +138,7 @@ return env; | ||
assert(typeof spec.config === 'function', 'spec.config function of env'); | ||
const configMetas = mapMetas(spec.config(env)); | ||
if (process.env.mode === 'help') { | ||
const configMetas = mapMetas(spec.config(env), env); | ||
if (env.mode === 'help') { | ||
console.error(formatMetas(configMetas).join('\n')); | ||
} | ||
return reduceMetas(configMetas, process.env, env); | ||
return reduceMetas(configMetas, env, env); | ||
} catch (err) { | ||
@@ -144,0 +145,0 @@ console.error(clc.green.bold(spec.description)); |
{ | ||
"name": "app-spec", | ||
"version": "0.11.3", | ||
"version": "0.11.4", | ||
"description": "Get application configuration from spec of required environment variables.", | ||
@@ -17,4 +17,4 @@ "main": "index.js", | ||
"dependencies": { | ||
"objecta": "^0.1.2" | ||
"objecta": "^0.1.4" | ||
} | ||
} |
25
test.js
const appSpec = require('./index.js'); | ||
const context = appSpec( | ||
require('./package.json'), | ||
pkg => ({ | ||
description: pkg.description, | ||
env: { | ||
field: { | ||
description: 'the field name for hashes', | ||
requiredEnv: env => ['hget'].includes(env.command) | ||
}, | ||
command: { | ||
description: 'the command to perform', | ||
options: ['del', 'hkeys', 'hgetall', 'llen', 'hget', 'ttl', 'type', 'expire', 'persist'], | ||
default: 'none' | ||
}, | ||
} | ||
}), | ||
{ | ||
NODE_ENV: 'development', | ||
command: 'hget', | ||
field: 'some' | ||
} | ||
); | ||
console.log({context}); |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
7863
196
0
Updatedobjecta@^0.1.4