loose-envify
Advanced tools
Comparing version 1.0.0 to 1.1.0
'use strict'; | ||
var jsTokens = require('js-tokens'); | ||
var stream = require('stream'); | ||
var util = require('util'); | ||
var replace = require('./replace'); | ||
var jsonExtRe = /\.json$/; | ||
var processEnvRe = /\bprocess\.env\.[_$a-zA-Z][$\w]+\b/; | ||
var spaceOrCommentRe = /^(?:\s|\/[/*])/; | ||
@@ -39,58 +37,1 @@ module.exports = function(rootEnv) { | ||
}; | ||
function replace(src, envs) { | ||
if (!processEnvRe.test(src)) { | ||
return src; | ||
} | ||
var out = ''; | ||
var purge = envs.some(function(env) { | ||
return env._ && env._.indexOf('purge') !== -1; | ||
}); | ||
jsTokens.lastIndex = 0 | ||
var parts = src.match(jsTokens); | ||
for (var i = 0; i < parts.length; i++) { | ||
if (parts[i ] === 'process' && | ||
parts[i + 1] === '.' && | ||
parts[i + 2] === 'env' && | ||
parts[i + 3] === '.') { | ||
var prevCodeToken = getAdjacentCodeToken(-1, parts, i); | ||
var nextCodeToken = getAdjacentCodeToken(1, parts, i + 4); | ||
var replacement = getReplacementString(envs, parts[i + 4], purge); | ||
if (prevCodeToken !== '.' && | ||
nextCodeToken !== '.' && | ||
nextCodeToken !== '=' && | ||
typeof replacement === 'string') { | ||
out += replacement; | ||
i += 4; | ||
continue; | ||
} | ||
} | ||
out += parts[i]; | ||
} | ||
return out; | ||
} | ||
function getAdjacentCodeToken(dir, parts, i) { | ||
while (true) { | ||
var part = parts[i += dir]; | ||
if (!spaceOrCommentRe.test(part)) { | ||
return part; | ||
} | ||
} | ||
} | ||
function getReplacementString(envs, name, purge) { | ||
for (var j = 0; j < envs.length; j++) { | ||
var env = envs[j]; | ||
if (typeof env[name] !== 'undefined') { | ||
return JSON.stringify(env[name]); | ||
} | ||
} | ||
if (purge) { | ||
return 'undefined'; | ||
} | ||
} |
{ | ||
"name": "loose-envify", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "Fast (and loose) selective `process.env` replacer using js-tokens instead of an AST", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4234
7
88