UNPKG

happypack

Version:

webpack speed booster, makes you happy!

69 lines (56 loc) 1.76 kB
var assert = require('assert'); var activeLoaders = {}; var activeCompiler = null; var HappyRPCHandler = exports; HappyRPCHandler.registerActiveCompiler = function(compiler) { activeCompiler = compiler; }; HappyRPCHandler.registerActiveLoader = function(id, instance) { activeLoaders[id] = instance; }; HappyRPCHandler.unregisterActiveLoader = function(id) { delete activeLoaders[id]; }; HappyRPCHandler.execute = function(type, payload, done) { var loader; if (type === 'resolve') { assertCompilerIsActive(); activeCompiler.resolvers.normal.resolve(payload.context, payload.resource, done); } else { // a loader RPC: assertLoaderIsActive(payload.remoteLoaderId); loader = activeLoaders[payload.remoteLoaderId]; if (type === 'emitWarning') { loader.emitWarning(payload.message); } else if (type === 'emitError') { loader.emitError(payload.message); } else if (type === 'emitFile') { loader.emitFile(payload.name, payload.contents, JSON.parse(payload.sourceMap)); } else if (type === 'addDependency') { loader.addDependency(payload.file); } else if (type === 'addContextDependency') { loader.addContextDependency(payload.file); } else if (type === 'clearDependencies') { loader.clearDependencies(); } else { assert(false, "Unrecognized RPC '" + type + '"'); } } }; function assertCompilerIsActive() { assert(!!activeCompiler, "A compiler RPC was dispatched, but no compiler instance was registered!" ); } function assertLoaderIsActive(id) { assert(activeLoaders.hasOwnProperty(id), "A loader RPC was dispatched to HappyLoader[" + id + "] but no such loader is active!" ); } module.exports = HappyRPCHandler;