{"version":3,"sources":["jsdelivr-header.js","/npm/happypack@5.0.1/lib/HappyPlugin.js"],"names":[],"mappings":"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","file":"/npm/happypack@5.0.1/lib/HappyPlugin.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/happypack@5.0.1/lib/HappyPlugin.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var async = require('async');\nvar HappyThreadPool = require('./HappyThreadPool');\nvar HappyForegroundThreadPool = require('./HappyForegroundThreadPool');\nvar WebpackUtils = require('./WebpackUtils');\nvar OptionParser = require('./OptionParser');\nvar JSONSerializer = require('./JSONSerializer');\nvar SourceMapSerializer = require('./SourceMapSerializer');\nvar fnOnce = require('./fnOnce');\nvar ErrorSerializer = require('./ErrorSerializer');\nvar pick = require('./pick');\nvar pkg = require('../package.json');\n\nfunction HappyPlugin(userConfig) {\n  if (!(this instanceof HappyPlugin)) {\n    return new HappyPlugin(userConfig);\n  }\n\n  this.name = 'HappyPack';\n  this.state = {\n    loaders: [],\n    baseLoaderRequest: '',\n    foregroundThreadPool: null,\n    verbose: false,\n    debug: false,\n  };\n\n  this.config = OptionParser(userConfig, {\n    id:                       { type: 'string', default: '1' },\n    compilerId:               { type: 'string', default: 'default' },\n    tempDir:                  { deprecated: true },\n    threads:                  { type: 'number', default: 3 },\n    threadPool:               { type: 'object', default: null },\n    cache:                    { deprecated: true },\n    cachePath:                { deprecated: true },\n    cacheContext:             { deprecated: true },\n    cacheSignatureGenerator:  { deprecated: true },\n    verbose:                  { type: 'boolean', default: true },\n    verboseWhenProfiling:     { type: 'boolean', default: false },\n    debug:                    { type: 'boolean', default: process.env.DEBUG === '1' },\n    enabled:                  { deprecated: true },\n    // we don't want this to be documented / exposed since it's an\n    // implementation detail + not having it on means a bug, but we're making it\n    // configurable for testing purposes\n    bufferedMessaging:        { type: 'boolean', default: process.platform === 'win32' },\n    loaders:                  {\n      alias: 'use',\n      validate: value => {\n        if (!Array.isArray(value)) {\n          return 'Loaders must be an array!';\n        }\n        else if (value.length === 0) {\n          return 'You must specify at least one loader!';\n        }\n        else if (value.some(function(loader) {\n          return typeof loader !== 'string' && !loader.path && !loader.loader;\n        })) {\n          return 'Loader must have a @path or @loader property or be a string.'\n        }\n      }\n    }\n  }, \"HappyPack\");\n\n  this.id = this.config.id;\n\n  return this;\n}\n\nHappyPlugin.prototype.apply = function(compiler) {\n  var that, engageWatchMode;\n\n  that = this;\n\n  this.state.verbose = isVerbose(compiler, this);\n  this.state.debug = isDebug(compiler, this);\n\n  this.threadPool = this.config.threadPool || HappyThreadPool({\n    id: this.id,\n    size: this.config.threads,\n    verbose: this.state.verbose,\n    debug: this.state.debug,\n    bufferedMessaging: this.config.bufferedMessaging,\n  });\n\n  engageWatchMode = fnOnce(function() {\n    // Once the initial build has completed, we create a foreground worker and\n    // perform all compilations in this thread instead:\n    WebpackUtils.tapInto(compiler, 'done', function() {\n      that.state.foregroundThreadPool = HappyForegroundThreadPool({\n        loaders: that.state.loaders,\n      });\n\n      that.state.foregroundThreadPool.start(that.config.compilerId, compiler, '{}', Function.prototype);\n    });\n  });\n\n  WebpackUtils.tapAsyncInto(compiler, 'watch-run', function(_, done) {\n    if (engageWatchMode() === fnOnce.ALREADY_CALLED) {\n      done();\n    }\n    else {\n      that.start(compiler, done);\n    }\n  });\n\n  WebpackUtils.tapAsyncInto(compiler, 'run', that.start.bind(that));\n\n  // cleanup hooks:\n  WebpackUtils.tapInto(compiler, 'done', that.stop.bind(that));\n\n  if (compiler.options.bail) {\n    WebpackUtils.tapInto(compiler, 'compilation', function(compilation) {\n      WebpackUtils.tapInto(compilation, 'failed-module', that.stop.bind(that));\n    });\n  }\n};\n\nHappyPlugin.prototype.start = function(compiler, done) {\n  var that = this;\n\n  if (that.state.verbose) {\n    console.log('Happy[%s]: Version: %s. Threads: %d%s',\n      that.id, pkg.version,\n      that.threadPool.size,\n      that.config.threadPool ? ' (shared pool)' : ''\n    );\n  }\n\n  async.series([\n    function resolveLoaders(callback) {\n      var loaderSpecs = that.config.loaders || that.config.use;\n      var normalLoaders = loaderSpecs.reduce(function(list, entry) {\n        return list.concat(WebpackUtils.normalizeLoader(entry));\n      }, []);\n\n      var loaderPaths = normalLoaders.map(function(loader) {\n        return loader.path;\n      });\n\n      WebpackUtils.resolveLoaders(compiler, loaderPaths, function(err, resolvedPaths) {\n        if (err) return callback(err);\n\n        var withResolvedPaths = normalLoaders.map(function(loader, index) {\n          var resolvedPath = resolvedPaths[index];\n\n          return Object.assign({}, loader, {\n            path: resolvedPath,\n            request: loader.query ? (loader.path + loader.query) : loader.path\n          })\n        })\n\n        that.state.loaders = withResolvedPaths;\n        that.state.baseLoaderRequest = withResolvedPaths.map(function(loader) {\n          return loader.path + (loader.query || '');\n        }).join('!');\n\n        callback();\n      });\n    },\n\n    function launchAndConfigureThreads(callback) {\n      var serializedOptions;\n      var compilerOptions = pick(HappyPlugin.SERIALIZABLE_OPTIONS)(compiler.options);\n\n      try {\n        serializedOptions = JSONSerializer.serialize(compilerOptions);\n      }\n      catch(e) {\n        console.error('Happy[%s]: Internal error; unable to serialize options!!!', that.id);\n        console.error(compilerOptions);\n\n        return callback(e);\n      }\n\n      that.threadPool.start(that.config.compilerId, compiler, serializedOptions, callback);\n    },\n\n    function announceReadiness(callback) {\n      if (that.state.verbose) {\n        console.log('Happy[%s]: All set; signaling webpack to proceed.', that.id);\n      }\n\n      callback();\n    }\n  ], done);\n};\n\nHappyPlugin.prototype.stop = function() {\n  this.threadPool.stop(this.config.compilerId);\n};\n\nHappyPlugin.prototype.compile = function(loader, loaderContext, done) {\n  var threadPool = this.state.foregroundThreadPool || this.threadPool;\n\n  threadPool.compile(loaderContext.remoteLoaderId, loader, {\n    loaders: this.state.loaders,\n    loaderContext: loaderContext,\n  }, function(err, result) {\n    if (err) {\n      done(ErrorSerializer.deserialize(err));\n    }\n    else {\n      done(null,\n        result.compiledSource || '',\n        SourceMapSerializer.deserialize(result.compiledMap)\n      );\n    }\n  });\n};\n\nHappyPlugin.prototype.generateRequest = function(resource) {\n  return this.state.baseLoaderRequest + '!' + resource;\n};\n\n// export this so that users get to override if needed\nHappyPlugin.SERIALIZABLE_OPTIONS = [\n  'amd',\n  'bail',\n  'cache',\n  'context',\n  'entry',\n  'externals',\n  'debug',\n  'devtool',\n  'devServer',\n  'loader',\n  'module',\n  'node',\n  'output',\n  'profile',\n  'recordsPath',\n  'recordsInputPath',\n  'recordsOutputPath',\n  'resolve',\n  'resolveLoader',\n  'target',\n  'watch',\n];\n\n// convenience accessor to relieve people from requiring the file directly:\nHappyPlugin.ThreadPool = HappyThreadPool;\n\nfunction isVerbose(compiler, plugin) {\n  return plugin.config.verbose && (\n    !compiler.options.profile ||\n    plugin.config.verboseWhenProfiling\n  );\n};\n\nfunction isDebug(compiler, plugin) {\n  return plugin.config.debug && (\n    !compiler.options.profile ||\n    plugin.config.verboseWhenProfiling\n  );\n};\n\nmodule.exports = HappyPlugin;\n"]}