Sha256: e7f8f2b9a10c4bc1e2ff8b1ba51234742adb0e4ba5920e715b369bea18d7db7b
Contents?: true
Size: 1.47 KB
Versions: 11
Compression:
Stored size: 1.47 KB
Contents
'use strict'; var jsTokens = require('js-tokens'); var processEnvRe = /\bprocess\.env\.[_$a-zA-Z][$\w]+\b/; var spaceOrCommentRe = /^(?:\s|\/[/*])/; 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'; } } module.exports = replace;
Version data entries
11 entries across 9 versions & 2 rubygems