Buckets:
| ; | |
| var jsTokens = require('js-tokens').default; | |
| 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.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; | |
Xet Storage Details
- Size:
- 1.53 kB
- Xet hash:
- 5f1c4d7a07b36978f63bdc62705ca0fd3fc817fec9bf129f68c0803925bbda52
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.