'use strict';
var jsTokens = require('js-tokens').default;
var processEnvRe = /bprocess.env.[$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.push(replacement); i += 4; continue; } } out.push(parts[i]); } return out.join('');
}
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;