Skip to content

Commit ea5c9ad

Browse files
authored
fix: loadModule and fs are now available in a loader context (#88)
1 parent 488300f commit ea5c9ad

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/WorkerPool.js

+23
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,29 @@ class PoolWorker {
188188
});
189189
break;
190190
}
191+
case 'loadModule': {
192+
const { request, questionId } = message;
193+
const { data } = this.jobs[id];
194+
data.loadModule(request, (error, source, sourceMap, module) => {
195+
this.writeJson({
196+
type: 'result',
197+
id: questionId,
198+
error: error ? {
199+
message: error.message,
200+
details: error.details,
201+
missing: error.missing,
202+
} : null,
203+
result: [
204+
source,
205+
sourceMap,
206+
// TODO: Serialize module?
207+
// module,
208+
],
209+
});
210+
});
211+
finalCallback();
212+
break;
213+
}
191214
case 'resolve': {
192215
const { context, request, questionId } = message;
193216
const { data } = this.jobs[id];

src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ function pitch() {
2020
sourceMap: this.sourceMap,
2121
emitError: this.emitError,
2222
emitWarning: this.emitWarning,
23+
loadModule: this.loadModule,
2324
resolve: this.resolve,
2425
target: this.target,
2526
minimize: this.minimize,

src/worker.js

+11
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,17 @@ const queue = asyncQueue(({ id, data }, taskCallback) => {
107107
readResource: fs.readFile.bind(fs),
108108
context: {
109109
version: 2,
110+
fs,
111+
loadModule: (request, callback) => {
112+
callbackMap[nextQuestionId] = (error, result) => callback(error, ...result);
113+
writeJson({
114+
type: 'loadModule',
115+
id,
116+
questionId: nextQuestionId,
117+
request,
118+
});
119+
nextQuestionId += 1;
120+
},
110121
resolve: (context, request, callback) => {
111122
callbackMap[nextQuestionId] = callback;
112123
writeJson({

0 commit comments

Comments
 (0)