Skip to content

Commit c6cfd77

Browse files
committed
chore: revert partial for upstream merge
1 parent 2958e41 commit c6cfd77

File tree

8 files changed

+178
-0
lines changed

8 files changed

+178
-0
lines changed

src/WorkerPool.js

+58
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class PoolWorker {
2121
this.activeJobs = 0;
2222
this.onJobDone = onJobDone;
2323
this.id = workerId;
24+
this.logger = Object.create(null);
2425

2526
workerId += 1;
2627
// Empty or invalid node args would break the child process
@@ -271,6 +272,63 @@ class PoolWorker {
271272
finalCallback();
272273
break;
273274
}
275+
case 'getLogger': {
276+
const { data: name } = message;
277+
const { data: jobData } = this.jobs[id];
278+
if (!this.logger[name]) {
279+
this.logger[name] = jobData.getLogger(name);
280+
}
281+
finalCallback();
282+
break;
283+
}
284+
case 'emitLoggingWarning': {
285+
const {
286+
data: { message: warningMessage, name },
287+
} = message;
288+
const { data: jobData } = this.jobs[id];
289+
if (!this.logger[name]) {
290+
this.logger[name] = jobData.getLogger(name);
291+
}
292+
this.logger[name].warn(warningMessage);
293+
finalCallback();
294+
break;
295+
}
296+
case 'emitLoggingError': {
297+
const {
298+
data: { message: errorMessage, name },
299+
} = message;
300+
const { data: jobData } = this.jobs[id];
301+
if (!this.logger[name]) {
302+
this.logger[name] = jobData.getLogger(name);
303+
}
304+
this.logger[name].error(errorMessage);
305+
finalCallback();
306+
break;
307+
}
308+
case 'emitLoggingLog': {
309+
const {
310+
data: { message: logMessage, name },
311+
} = message;
312+
const { data: jobData } = this.jobs[id];
313+
if (!this.logger[name]) {
314+
this.logger[name] = jobData.getLogger(name);
315+
}
316+
this.logger[name].info(logMessage);
317+
finalCallback();
318+
break;
319+
}
320+
case 'emitLoggingDebug': {
321+
const {
322+
data: { message: debugMessage, name },
323+
} = message;
324+
const { data: jobData } = this.jobs[id];
325+
if (!this.logger[name]) {
326+
this.logger[name] = jobData.getLogger(name);
327+
}
328+
this.logger[name].debug(debugMessage);
329+
finalCallback();
330+
break;
331+
}
274332
case 'emitWarning': {
275333
const { data } = message;
276334
const { data: jobData } = this.jobs[id];

src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ function pitch() {
5050
resourceQuery: this.resourceQuery,
5151
optionsContext: this.rootContext || this.options.context,
5252
rootContext: this.rootContext,
53+
getLogger: this.getLogger,
5354
},
5455
(err, r) => {
5556
if (r) {

src/worker.js

+49
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,55 @@ const queue = asyncQueue(({ id, data }, taskCallback) => {
130130
context: {
131131
version: 2,
132132
fs,
133+
getLogger: (name) => {
134+
writeJson({
135+
type: 'getLogger',
136+
id,
137+
data: name,
138+
});
139+
return {
140+
warn: (warningMessage) => {
141+
writeJson({
142+
type: 'emitLoggingWarning',
143+
id,
144+
data: {
145+
message: warningMessage,
146+
name,
147+
},
148+
});
149+
},
150+
log: (logMesssage) => {
151+
writeJson({
152+
type: 'emitLoggingLog',
153+
id,
154+
data: {
155+
message: logMesssage,
156+
name,
157+
},
158+
});
159+
},
160+
debug: (debugMesssage) => {
161+
writeJson({
162+
type: 'emitLoggingDebug',
163+
id,
164+
data: {
165+
message: debugMesssage,
166+
name,
167+
},
168+
});
169+
},
170+
error: (errorMesssage) => {
171+
writeJson({
172+
type: 'emitLoggingError',
173+
id,
174+
data: {
175+
message: errorMesssage,
176+
name,
177+
},
178+
});
179+
},
180+
};
181+
},
133182
loadModule: (request, callback) => {
134183
callbackMap[nextQuestionId] = (error, result) =>
135184
callback(error, ...result);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
body {
2+
background: red;
3+
}

test/less-loader-example/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import './assets/style.less';

test/less-loader-example/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const path = require('path');
2+
3+
const threadLoader = require('../../src'); // eslint-disable-line import/no-extraneous-dependencies
4+
5+
module.exports = (env) => {
6+
const workerPool = {
7+
workers: +env.threads,
8+
poolTimeout: env.watch ? Infinity : 2000,
9+
};
10+
if (+env.threads > 0) {
11+
threadLoader.warmup(workerPool, ['less-loader']);
12+
}
13+
return {
14+
experiments: {
15+
css: true,
16+
},
17+
mode: 'none',
18+
context: __dirname,
19+
devtool: false,
20+
entry: ['./index.js'],
21+
output: {
22+
path: path.resolve('dist'),
23+
filename: 'bundle.js',
24+
},
25+
module: {
26+
rules: [
27+
{
28+
test: /\.less$/,
29+
use: [
30+
env.threads !== 0 && {
31+
loader: path.resolve(__dirname, '../../dist/index.js'),
32+
options: workerPool,
33+
},
34+
'less-loader',
35+
],
36+
type: 'css/auto',
37+
},
38+
],
39+
},
40+
stats: {
41+
children: false,
42+
},
43+
};
44+
};

test/webpack.test.js

+21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import webpack from 'webpack';
22

33
import sassLoaderConfig from './sass-loader-example/webpack.config';
44
import tsLoaderConfig from './ts-loader-example/webpack.config';
5+
import lessLoaderConfig from './less-loader-example/webpack.config';
56

67
test("Processes sass-loader's @import correctly", (done) => {
78
const config = sassLoaderConfig({});
@@ -42,3 +43,23 @@ test('Processes ts-loader correctly', (done) => {
4243
done();
4344
});
4445
}, 30000);
46+
47+
test('Processes less-loader correctly', (done) => {
48+
const config = lessLoaderConfig({});
49+
50+
webpack(config, (err, stats) => {
51+
if (err) {
52+
// eslint-disable-next-line no-console
53+
console.error(err);
54+
}
55+
56+
expect(err).toBe(null);
57+
58+
if (stats.hasErrors()) {
59+
// eslint-disable-next-line no-console
60+
console.error(stats.toJson().errors);
61+
}
62+
expect(stats.hasErrors()).toBe(false);
63+
done();
64+
});
65+
}, 30000);

0 commit comments

Comments
 (0)