UNPKG

2.7 kBJavaScriptView Raw
1function HappyFakeLoaderContext(initialValues) {
2 var loader = {};
3
4 // for compiler RPCs, like this.resolve()
5 loader._compiler = null;
6
7 // for loader RPCs, like this.emitWarning()
8 loader._remoteLoaderId = null;
9
10 loader.version = 1; // https://webpack.github.io/docs/loaders.html#version
11 loader.webpack = false;
12 loader.request = null;
13 loader.query = null;
14
15 loader.context = null;
16 loader.resource = null;
17 loader.resourcePath = null;
18 loader.resourceQuery = null;
19
20 loader.data = {};
21 loader.loaders = [{}];
22 loader.loaderIndex = 0;
23
24 loader.options = null; // TODO: we should read this from compiler options
25 loader.result = null;
26
27 loader.sourceMap = false;
28 loader.fs = null;
29
30 // TODO
31 loader.cacheable = function() {};
32 loader.callback = null; // will be defined at runtime
33 loader.async = null; // will be defined at runtime
34
35 loader.exec = NotSupported('this.exec()');
36
37 loader.emitWarning = function(message) {
38 loader._compiler._sendMessage('emitWarning', {
39 remoteLoaderId: loader._remoteLoaderId,
40 message: message
41 });
42 };
43
44 loader.emitError = function(message) {
45 loader._compiler._sendMessage('emitError', {
46 remoteLoaderId: loader._remoteLoaderId,
47 message: message
48 });
49 };
50
51 loader.resolve = function(context, resource, done) {
52 loader._compiler.resolve(context, resource, done);
53 };
54
55 loader.resolveSync = NotSupported('this.resolveSync()');
56
57 loader.addDependency = function(file) {
58 loader._compiler._sendMessage('addDependency', {
59 remoteLoaderId: loader._remoteLoaderId,
60 file: file
61 });
62 };
63
64 loader.addContextDependency = function(file) {
65 loader._compiler._sendMessage('addContextDependency', {
66 remoteLoaderId: loader._remoteLoaderId,
67 file: file
68 });
69 };
70
71 loader.clearDependencies = function() {
72 loader._compiler._sendMessage('clearDependencies', {
73 remoteLoaderId: loader._remoteLoaderId
74 });
75 };
76
77 loader.emitFile = function(name, contents, sourceMap) {
78 loader._compiler._sendMessage('emitFile', {
79 remoteLoaderId: loader._remoteLoaderId,
80 name: name,
81 contents: contents,
82 sourceMap: JSON.stringify(sourceMap || {})
83 });
84 };
85
86 // alias
87 loader.dependency = loader.addDependency;
88
89 Object.keys(initialValues || {}).forEach(function(key) {
90 if (!loader.hasOwnProperty(key)) {
91 console.warn('Unrecognized fake loader context attribute "%s".', key);
92 }
93
94 loader[key] = initialValues[key];
95 });
96
97 return loader;
98}
99
100function NotSupported(fnName) {
101 return function() {
102 throw new Error('HappyPack: ' + fnName + ' is not supported for happy loaders.');
103 }
104}
105module.exports = HappyFakeLoaderContext;
\No newline at end of file