Sha256: a4dabca37568849a2abc1f283897061b5fc2de235a720f80366a703395f28118

Contents?: true

Size: 1.58 KB

Versions: 8

Compression:

Stored size: 1.58 KB

Contents

/* */ 
(function(process) {
  'use strict';
  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;
})(require('process'));

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
sequenceserver-3.1.3 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-3.1.2 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-3.1.1 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-3.1.0 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-3.0.1 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-3.0 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-2.2.0 public/vendor/npm/loose-envify@1.4.0/replace.js
sequenceserver-2.1.0 public/vendor/npm/loose-envify@1.4.0/replace.js