UNPKG

1.76 kBJavaScriptView Raw
1var assert = require('assert');
2var activeLoaders = {};
3var activeCompiler = null;
4
5var HappyRPCHandler = exports;
6
7HappyRPCHandler.registerActiveCompiler = function(compiler) {
8 activeCompiler = compiler;
9};
10
11HappyRPCHandler.registerActiveLoader = function(id, instance) {
12 activeLoaders[id] = instance;
13};
14
15HappyRPCHandler.unregisterActiveLoader = function(id) {
16 delete activeLoaders[id];
17};
18
19HappyRPCHandler.execute = function(type, payload, done) {
20 var loader;
21
22 if (type === 'resolve') {
23 assertCompilerIsActive();
24
25 activeCompiler.resolvers.normal.resolve(payload.context, payload.resource, done);
26 }
27 else { // a loader RPC:
28 assertLoaderIsActive(payload.remoteLoaderId);
29 loader = activeLoaders[payload.remoteLoaderId];
30
31 if (type === 'emitWarning') {
32 loader.emitWarning(payload.message);
33 }
34 else if (type === 'emitError') {
35 loader.emitError(payload.message);
36 }
37 else if (type === 'emitFile') {
38 loader.emitFile(payload.name, payload.contents, JSON.parse(payload.sourceMap));
39 }
40 else if (type === 'addDependency') {
41 loader.addDependency(payload.file);
42 }
43 else if (type === 'addContextDependency') {
44 loader.addContextDependency(payload.file);
45 }
46 else if (type === 'clearDependencies') {
47 loader.clearDependencies();
48 }
49 else {
50 assert(false, "Unrecognized RPC '" + type + '"');
51 }
52
53 }
54};
55
56function assertCompilerIsActive() {
57 assert(!!activeCompiler,
58 "A compiler RPC was dispatched, but no compiler instance was registered!"
59 );
60}
61
62function assertLoaderIsActive(id) {
63 assert(activeLoaders.hasOwnProperty(id),
64 "A loader RPC was dispatched to HappyLoader[" + id + "] but no such loader is active!"
65 );
66}
67
68module.exports = HappyRPCHandler;