text: /*
      MIT License http://www.opensource.org/licenses/mit-license.php
      Authors Simen Brekken @simenbrekken, Einar Löve @einarlove
  */
  "use strict";
  /** @typedef {import("./Compiler")} Compiler */
  const WebpackError = require("./WebpackError");
  const DefinePlugin = require("./DefinePlugin");
  const needsEnvVarFix = ["8", "9"].indexOf(process.versions.node.split(".")[0]) >= 0 &&
      process.platform === "win32";
  class EnvironmentPlugin {
      constructor(...keys) {
          if (keys.length === 1 && Array.isArray(keys[0])) {
              this.keys = keys[0];
              this.defaultValues = {};
          }
          else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
              this.keys = Object.keys(keys[0]);
              this.defaultValues = keys[0];
          }
          else {
              this.keys = keys;
              this.defaultValues = {};
          }
      }
      /**
       * @param {Compiler} compiler webpack compiler instance
       * @returns {void}
       */
      apply(compiler) {
          const definitions = this.keys.reduce((defs, key) => {
              // TODO remove once the fix has made its way into Node 8.
              // Work around https://github.com/nodejs/node/pull/18463,
              // affecting Node 8 & 9 by performing an OS-level
              // operation that always succeeds before reading
              // environment variables:
              if (needsEnvVarFix)
                  require("os").cpus();
              const value = process.env[key] !== undefined
                  ? process.env[key]
                  : this.defaultValues[key];
              if (value === undefined) {
                  compiler.hooks.thisCompilation.tap("EnvironmentPlugin", compilation => {
                      const error = new WebpackError(`EnvironmentPlugin - ${key} environment variable is undefined.\n\n` +
                          "You can pass an object with default values to suppress this warning.\n" +
                          "See https://webpack.js.org/plugins/environment-plugin for example.");
                      error.name = "EnvVariableNotDefinedError";
                      compilation.warnings.push(error);
                  });
              }
              defs[`process.env.${key}`] =
                  value === undefined ? "undefined" : JSON.stringify(value);
              return defs;
          }, {});
          new DefinePlugin(definitions).apply(compiler);
      }
  }
  module.exports = EnvironmentPlugin;
  //# sourceMappingURL=EnvironmentPlugin.js.map