@atlaspack/core 2.38.0 → 2.38.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/dist/atlaspack-v3/NapiWorkerPool.js +33 -0
- package/dist/atlaspack-v3/worker/compat/index.js +0 -1
- package/dist/atlaspack-v3/worker/worker.js +10 -3
- package/lib/atlaspack-v3/NapiWorkerPool.js +35 -0
- package/lib/atlaspack-v3/worker/compat/index.js +0 -11
- package/lib/atlaspack-v3/worker/worker.js +26 -4
- package/lib/types/atlaspack-v3/worker/compat/index.d.ts +0 -1
- package/package.json +13 -13
- package/src/atlaspack-v3/NapiWorkerPool.ts +38 -0
- package/src/atlaspack-v3/worker/compat/index.ts +0 -1
- package/src/atlaspack-v3/worker/worker.ts +11 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/atlaspack-v3/worker/compat/plugin-logger.js +0 -26
- package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
- package/lib/types/atlaspack-v3/worker/compat/plugin-logger.d.ts +0 -9
- package/src/atlaspack-v3/worker/compat/plugin-logger.ts +0 -45
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @atlaspack/core
|
|
2
2
|
|
|
3
|
+
## 2.38.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`7d1839c`](https://github.com/atlassian-labs/atlaspack/commit/7d1839cc7cf0225dd35afecb68109a11fd931f2b)]:
|
|
8
|
+
- @atlaspack/rust@3.28.0
|
|
9
|
+
- @atlaspack/cache@3.2.55
|
|
10
|
+
- @atlaspack/fs@2.15.55
|
|
11
|
+
- @atlaspack/logger@2.14.52
|
|
12
|
+
- @atlaspack/source-map@3.3.4
|
|
13
|
+
- @atlaspack/utils@3.4.2
|
|
14
|
+
- @atlaspack/package-manager@2.14.60
|
|
15
|
+
- @atlaspack/profiler@2.15.21
|
|
16
|
+
- @atlaspack/workers@2.14.60
|
|
17
|
+
- @atlaspack/types@2.15.50
|
|
18
|
+
- @atlaspack/graph@3.6.22
|
|
19
|
+
- @atlaspack/plugin@2.14.60
|
|
20
|
+
|
|
21
|
+
## 2.38.1
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#1059](https://github.com/atlassian-labs/atlaspack/pull/1059) [`1c767e4`](https://github.com/atlassian-labs/atlaspack/commit/1c767e4907664dd490a56276d6562f79dbeea3fb) Thanks [@OscarCookeAbbott](https://github.com/OscarCookeAbbott)! - Improve multithreaded logging
|
|
26
|
+
|
|
27
|
+
- Updated dependencies [[`a958853`](https://github.com/atlassian-labs/atlaspack/commit/a958853ae3de2812bfd032357e9fa7cab6a1ddb6), [`0f5c1ef`](https://github.com/atlassian-labs/atlaspack/commit/0f5c1eff9138728168231efa66202a8d844c33ef)]:
|
|
28
|
+
- @atlaspack/rust@3.27.0
|
|
29
|
+
- @atlaspack/cache@3.2.54
|
|
30
|
+
- @atlaspack/fs@2.15.54
|
|
31
|
+
- @atlaspack/logger@2.14.51
|
|
32
|
+
- @atlaspack/source-map@3.3.3
|
|
33
|
+
- @atlaspack/utils@3.4.1
|
|
34
|
+
- @atlaspack/package-manager@2.14.59
|
|
35
|
+
- @atlaspack/profiler@2.15.20
|
|
36
|
+
- @atlaspack/workers@2.14.59
|
|
37
|
+
- @atlaspack/types@2.15.49
|
|
38
|
+
- @atlaspack/graph@3.6.21
|
|
39
|
+
- @atlaspack/plugin@2.14.59
|
|
40
|
+
|
|
3
41
|
## 2.38.0
|
|
4
42
|
|
|
5
43
|
### Minor Changes
|
|
@@ -20,6 +20,7 @@ const worker_threads_1 = require("worker_threads");
|
|
|
20
20
|
const path_1 = __importDefault(require("path"));
|
|
21
21
|
const process_1 = __importDefault(require("process"));
|
|
22
22
|
const rust_1 = require("@atlaspack/rust");
|
|
23
|
+
const logger_1 = __importDefault(require("@atlaspack/logger"));
|
|
23
24
|
const WORKER_PATH = path_1.default.join(__dirname, 'worker', 'index.js');
|
|
24
25
|
const ATLASPACK_NAPI_WORKERS = process_1.default.env.ATLASPACK_NAPI_WORKERS &&
|
|
25
26
|
parseInt(process_1.default.env.ATLASPACK_NAPI_WORKERS, 10);
|
|
@@ -43,6 +44,32 @@ class NapiWorkerPool {
|
|
|
43
44
|
let worker = new worker_threads_1.Worker(WORKER_PATH);
|
|
44
45
|
__classPrivateFieldGet(this, _NapiWorkerPool_workers, "f").push(worker);
|
|
45
46
|
__classPrivateFieldGet(this, _NapiWorkerPool_napiWorkers, "f").push(new Promise((res) => worker.once('message', res)));
|
|
47
|
+
// Re-emit log events from the worker thread into the main-thread logger
|
|
48
|
+
// so they reach reporters and are subject to log-level filtering.
|
|
49
|
+
worker.on('message', (message) => {
|
|
50
|
+
if (message != null &&
|
|
51
|
+
typeof message === 'object' &&
|
|
52
|
+
message.type === 'logEvent') {
|
|
53
|
+
const event = message.event;
|
|
54
|
+
switch (event.level) {
|
|
55
|
+
case 'verbose':
|
|
56
|
+
logger_1.default.verbose(event.diagnostics);
|
|
57
|
+
break;
|
|
58
|
+
case 'info':
|
|
59
|
+
logger_1.default.info(event.diagnostics);
|
|
60
|
+
break;
|
|
61
|
+
case 'warn':
|
|
62
|
+
logger_1.default.warn(event.diagnostics);
|
|
63
|
+
break;
|
|
64
|
+
case 'error':
|
|
65
|
+
logger_1.default.error(event.diagnostics);
|
|
66
|
+
break;
|
|
67
|
+
case 'progress':
|
|
68
|
+
logger_1.default.progress(event.message);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
46
73
|
}
|
|
47
74
|
}
|
|
48
75
|
clearAllWorkerState() {
|
|
@@ -55,6 +82,12 @@ class NapiWorkerPool {
|
|
|
55
82
|
worker.removeListener('message', messageHandler);
|
|
56
83
|
res();
|
|
57
84
|
}
|
|
85
|
+
else if (message != null &&
|
|
86
|
+
typeof message === 'object' &&
|
|
87
|
+
message.type === 'logEvent') {
|
|
88
|
+
// logEvent messages are forwarded asynchronously from the worker
|
|
89
|
+
// logger bridge and are expected at any time; ignore them here.
|
|
90
|
+
}
|
|
58
91
|
else {
|
|
59
92
|
// Log unexpected messages for debugging
|
|
60
93
|
// eslint-disable-next-line no-console
|
|
@@ -20,6 +20,5 @@ __exportStar(require("./environment"), exports);
|
|
|
20
20
|
__exportStar(require("./target"), exports);
|
|
21
21
|
__exportStar(require("./plugin-config"), exports);
|
|
22
22
|
__exportStar(require("./plugin-tracer"), exports);
|
|
23
|
-
__exportStar(require("./plugin-logger"), exports);
|
|
24
23
|
__exportStar(require("./plugin-options"), exports);
|
|
25
24
|
__exportStar(require("./mutable-asset"), exports);
|
|
@@ -59,8 +59,10 @@ const napi = __importStar(require("@atlaspack/rust"));
|
|
|
59
59
|
const fs_1 = require("@atlaspack/fs");
|
|
60
60
|
const package_manager_1 = require("@atlaspack/package-manager");
|
|
61
61
|
const worker_threads_1 = require("worker_threads");
|
|
62
|
+
const logger_1 = __importDefault(require("@atlaspack/logger"));
|
|
62
63
|
const module = __importStar(require("module"));
|
|
63
64
|
const jsCallable_1 = require("../jsCallable");
|
|
65
|
+
const logger_2 = require("@atlaspack/logger");
|
|
64
66
|
const compat_1 = require("./compat");
|
|
65
67
|
const CONFIG = Symbol.for('parcel-plugin-config');
|
|
66
68
|
class AtlaspackWorker {
|
|
@@ -121,7 +123,7 @@ class AtlaspackWorker {
|
|
|
121
123
|
const env = new compat_1.Environment(napiDependency.env);
|
|
122
124
|
const dependency = new compat_1.Dependency(napiDependency, env);
|
|
123
125
|
const defaultOptions = {
|
|
124
|
-
logger: new
|
|
126
|
+
logger: new logger_2.PluginLogger({ origin: key }),
|
|
125
127
|
tracer: new compat_1.PluginTracer(),
|
|
126
128
|
options: new compat_1.PluginOptions(this.options),
|
|
127
129
|
};
|
|
@@ -201,7 +203,7 @@ class AtlaspackWorker {
|
|
|
201
203
|
contents, env, __classPrivateFieldGet(this, _AtlaspackWorker_fs, "f"), map, this.options.projectRoot);
|
|
202
204
|
const pluginOptions = new compat_1.PluginOptions(this.options);
|
|
203
205
|
const defaultOptions = {
|
|
204
|
-
logger: new
|
|
206
|
+
logger: new logger_2.PluginLogger({ origin: key }),
|
|
205
207
|
tracer: new compat_1.PluginTracer(),
|
|
206
208
|
options: pluginOptions,
|
|
207
209
|
};
|
|
@@ -341,7 +343,7 @@ class AtlaspackWorker {
|
|
|
341
343
|
let packageManager = new package_manager_1.NodePackageManager(__classPrivateFieldGet(this, _AtlaspackWorker_fs, "f"), this.options.projectRoot);
|
|
342
344
|
if (transformer.setup) {
|
|
343
345
|
let setupResult = await transformer.setup({
|
|
344
|
-
logger: new
|
|
346
|
+
logger: new logger_2.PluginLogger({ origin: specifier }),
|
|
345
347
|
options: new compat_1.PluginOptions({
|
|
346
348
|
...this.options,
|
|
347
349
|
shouldAutoInstall: false,
|
|
@@ -378,6 +380,11 @@ class AtlaspackWorker {
|
|
|
378
380
|
}
|
|
379
381
|
exports.AtlaspackWorker = AtlaspackWorker;
|
|
380
382
|
_AtlaspackWorker_resolvers = new WeakMap(), _AtlaspackWorker_transformers = new WeakMap(), _AtlaspackWorker_fs = new WeakMap(), _AtlaspackWorker_packageManager = new WeakMap(), _AtlaspackWorker_options = new WeakMap(), _AtlaspackWorker_sideEffectDetector = new WeakMap();
|
|
383
|
+
// Forward all logger events from this worker thread to the main thread so
|
|
384
|
+
// they are re-emitted into the main-thread logger and reach reporters.
|
|
385
|
+
logger_1.default.onLog((event) => {
|
|
386
|
+
worker_threads_1.parentPort?.postMessage({ type: 'logEvent', event });
|
|
387
|
+
});
|
|
381
388
|
// Create napi worker and send it back to main thread
|
|
382
389
|
const worker = new AtlaspackWorker();
|
|
383
390
|
const napiWorker = napi.newNodejsWorker(worker);
|
|
@@ -32,6 +32,13 @@ function _rust() {
|
|
|
32
32
|
};
|
|
33
33
|
return data;
|
|
34
34
|
}
|
|
35
|
+
function _logger() {
|
|
36
|
+
const data = _interopRequireDefault(require("@atlaspack/logger"));
|
|
37
|
+
_logger = function () {
|
|
38
|
+
return data;
|
|
39
|
+
};
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
35
42
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
43
|
// @ts-expect-error TS2724
|
|
37
44
|
|
|
@@ -60,6 +67,31 @@ class NapiWorkerPool {
|
|
|
60
67
|
let worker = new (_worker_threads().Worker)(WORKER_PATH);
|
|
61
68
|
this.#workers.push(worker);
|
|
62
69
|
this.#napiWorkers.push(new Promise(res => worker.once('message', res)));
|
|
70
|
+
|
|
71
|
+
// Re-emit log events from the worker thread into the main-thread logger
|
|
72
|
+
// so they reach reporters and are subject to log-level filtering.
|
|
73
|
+
worker.on('message', message => {
|
|
74
|
+
if (message != null && typeof message === 'object' && message.type === 'logEvent') {
|
|
75
|
+
const event = message.event;
|
|
76
|
+
switch (event.level) {
|
|
77
|
+
case 'verbose':
|
|
78
|
+
_logger().default.verbose(event.diagnostics);
|
|
79
|
+
break;
|
|
80
|
+
case 'info':
|
|
81
|
+
_logger().default.info(event.diagnostics);
|
|
82
|
+
break;
|
|
83
|
+
case 'warn':
|
|
84
|
+
_logger().default.warn(event.diagnostics);
|
|
85
|
+
break;
|
|
86
|
+
case 'error':
|
|
87
|
+
_logger().default.error(event.diagnostics);
|
|
88
|
+
break;
|
|
89
|
+
case 'progress':
|
|
90
|
+
_logger().default.progress(event.message);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
63
95
|
}
|
|
64
96
|
}
|
|
65
97
|
clearAllWorkerState() {
|
|
@@ -72,6 +104,9 @@ class NapiWorkerPool {
|
|
|
72
104
|
if (message === 'stateCleared') {
|
|
73
105
|
worker.removeListener('message', messageHandler);
|
|
74
106
|
res();
|
|
107
|
+
} else if (message != null && typeof message === 'object' && message.type === 'logEvent') {
|
|
108
|
+
// logEvent messages are forwarded asynchronously from the worker
|
|
109
|
+
// logger bridge and are expected at any time; ignore them here.
|
|
75
110
|
} else {
|
|
76
111
|
// Log unexpected messages for debugging
|
|
77
112
|
// eslint-disable-next-line no-console
|
|
@@ -69,17 +69,6 @@ Object.keys(_pluginTracer).forEach(function (key) {
|
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
|
-
var _pluginLogger = require("./plugin-logger");
|
|
73
|
-
Object.keys(_pluginLogger).forEach(function (key) {
|
|
74
|
-
if (key === "default" || key === "__esModule") return;
|
|
75
|
-
if (key in exports && exports[key] === _pluginLogger[key]) return;
|
|
76
|
-
Object.defineProperty(exports, key, {
|
|
77
|
-
enumerable: true,
|
|
78
|
-
get: function () {
|
|
79
|
-
return _pluginLogger[key];
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
72
|
var _pluginOptions = require("./plugin-options");
|
|
84
73
|
Object.keys(_pluginOptions).forEach(function (key) {
|
|
85
74
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -40,6 +40,13 @@ function _worker_threads() {
|
|
|
40
40
|
};
|
|
41
41
|
return data;
|
|
42
42
|
}
|
|
43
|
+
function _logger() {
|
|
44
|
+
const data = _interopRequireWildcard(require("@atlaspack/logger"));
|
|
45
|
+
_logger = function () {
|
|
46
|
+
return data;
|
|
47
|
+
};
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
43
50
|
function _module() {
|
|
44
51
|
const data = _interopRequireWildcard(require("module"));
|
|
45
52
|
_module = function () {
|
|
@@ -144,7 +151,9 @@ class AtlaspackWorker {
|
|
|
144
151
|
const env = new _compat.Environment(napiDependency.env);
|
|
145
152
|
const dependency = new _compat.Dependency(napiDependency, env);
|
|
146
153
|
const defaultOptions = {
|
|
147
|
-
logger: new
|
|
154
|
+
logger: new (_logger().PluginLogger)({
|
|
155
|
+
origin: key
|
|
156
|
+
}),
|
|
148
157
|
tracer: new _compat.PluginTracer(),
|
|
149
158
|
options: new _compat.PluginOptions(this.options)
|
|
150
159
|
};
|
|
@@ -240,7 +249,9 @@ class AtlaspackWorker {
|
|
|
240
249
|
contents, env, this.#fs, map, this.options.projectRoot);
|
|
241
250
|
const pluginOptions = new _compat.PluginOptions(this.options);
|
|
242
251
|
const defaultOptions = {
|
|
243
|
-
logger: new
|
|
252
|
+
logger: new (_logger().PluginLogger)({
|
|
253
|
+
origin: key
|
|
254
|
+
}),
|
|
244
255
|
tracer: new _compat.PluginTracer(),
|
|
245
256
|
options: pluginOptions
|
|
246
257
|
};
|
|
@@ -369,7 +380,9 @@ class AtlaspackWorker {
|
|
|
369
380
|
if (transformer.setup) {
|
|
370
381
|
var _setupResult$env;
|
|
371
382
|
let setupResult = await transformer.setup({
|
|
372
|
-
logger: new
|
|
383
|
+
logger: new (_logger().PluginLogger)({
|
|
384
|
+
origin: specifier
|
|
385
|
+
}),
|
|
373
386
|
options: new _compat.PluginOptions({
|
|
374
387
|
...this.options,
|
|
375
388
|
shouldAutoInstall: false,
|
|
@@ -406,8 +419,17 @@ class AtlaspackWorker {
|
|
|
406
419
|
}
|
|
407
420
|
}
|
|
408
421
|
|
|
409
|
-
//
|
|
422
|
+
// Forward all logger events from this worker thread to the main thread so
|
|
423
|
+
// they are re-emitted into the main-thread logger and reach reporters.
|
|
410
424
|
exports.AtlaspackWorker = AtlaspackWorker;
|
|
425
|
+
_logger().default.onLog(event => {
|
|
426
|
+
_worker_threads().parentPort === null || _worker_threads().parentPort === void 0 || _worker_threads().parentPort.postMessage({
|
|
427
|
+
type: 'logEvent',
|
|
428
|
+
event
|
|
429
|
+
});
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
// Create napi worker and send it back to main thread
|
|
411
433
|
const worker = new AtlaspackWorker();
|
|
412
434
|
const napiWorker = napi().newNodejsWorker(worker);
|
|
413
435
|
_worker_threads().parentPort === null || _worker_threads().parentPort === void 0 || _worker_threads().parentPort.postMessage(napiWorker);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/core",
|
|
3
|
-
"version": "2.38.
|
|
3
|
+
"version": "2.38.2",
|
|
4
4
|
"license": "(MIT OR Apache-2.0)",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@mischnic/json-sourcemap": "^0.1.0",
|
|
26
26
|
"@atlaspack/build-cache": "2.13.14",
|
|
27
|
-
"@atlaspack/cache": "3.2.
|
|
27
|
+
"@atlaspack/cache": "3.2.55",
|
|
28
28
|
"@atlaspack/diagnostic": "2.14.4",
|
|
29
29
|
"@atlaspack/events": "2.14.4",
|
|
30
30
|
"@atlaspack/feature-flags": "2.31.0",
|
|
31
|
-
"@atlaspack/fs": "2.15.
|
|
32
|
-
"@atlaspack/graph": "3.6.
|
|
33
|
-
"@atlaspack/logger": "2.14.
|
|
34
|
-
"@atlaspack/package-manager": "2.14.
|
|
35
|
-
"@atlaspack/plugin": "2.14.
|
|
36
|
-
"@atlaspack/profiler": "2.15.
|
|
37
|
-
"@atlaspack/rust": "3.
|
|
38
|
-
"@atlaspack/types": "2.15.
|
|
39
|
-
"@atlaspack/utils": "3.4.
|
|
40
|
-
"@atlaspack/workers": "2.14.
|
|
41
|
-
"@atlaspack/source-map": "3.3.
|
|
31
|
+
"@atlaspack/fs": "2.15.55",
|
|
32
|
+
"@atlaspack/graph": "3.6.22",
|
|
33
|
+
"@atlaspack/logger": "2.14.52",
|
|
34
|
+
"@atlaspack/package-manager": "2.14.60",
|
|
35
|
+
"@atlaspack/plugin": "2.14.60",
|
|
36
|
+
"@atlaspack/profiler": "2.15.21",
|
|
37
|
+
"@atlaspack/rust": "3.28.0",
|
|
38
|
+
"@atlaspack/types": "2.15.50",
|
|
39
|
+
"@atlaspack/utils": "3.4.2",
|
|
40
|
+
"@atlaspack/workers": "2.14.60",
|
|
41
|
+
"@atlaspack/source-map": "3.3.4",
|
|
42
42
|
"base-x": "^3.0.8",
|
|
43
43
|
"browserslist": "^4.6.6",
|
|
44
44
|
"clone": "^2.1.1",
|
|
@@ -5,6 +5,8 @@ import process from 'process';
|
|
|
5
5
|
// @ts-expect-error TS2724
|
|
6
6
|
import type {Transferable} from '@atlaspack/rust';
|
|
7
7
|
import {getAvailableThreads} from '@atlaspack/rust';
|
|
8
|
+
import logger from '@atlaspack/logger';
|
|
9
|
+
import type {LogEvent} from '@atlaspack/types-internal';
|
|
8
10
|
|
|
9
11
|
const WORKER_PATH = path.join(__dirname, 'worker', 'index.js');
|
|
10
12
|
const ATLASPACK_NAPI_WORKERS =
|
|
@@ -43,6 +45,35 @@ export class NapiWorkerPool implements INapiWorkerPool {
|
|
|
43
45
|
worker.once('message', res),
|
|
44
46
|
),
|
|
45
47
|
);
|
|
48
|
+
|
|
49
|
+
// Re-emit log events from the worker thread into the main-thread logger
|
|
50
|
+
// so they reach reporters and are subject to log-level filtering.
|
|
51
|
+
worker.on('message', (message: unknown) => {
|
|
52
|
+
if (
|
|
53
|
+
message != null &&
|
|
54
|
+
typeof message === 'object' &&
|
|
55
|
+
(message as {type?: unknown}).type === 'logEvent'
|
|
56
|
+
) {
|
|
57
|
+
const event = (message as {type: string; event: LogEvent}).event;
|
|
58
|
+
switch (event.level) {
|
|
59
|
+
case 'verbose':
|
|
60
|
+
logger.verbose(event.diagnostics);
|
|
61
|
+
break;
|
|
62
|
+
case 'info':
|
|
63
|
+
logger.info(event.diagnostics);
|
|
64
|
+
break;
|
|
65
|
+
case 'warn':
|
|
66
|
+
logger.warn(event.diagnostics);
|
|
67
|
+
break;
|
|
68
|
+
case 'error':
|
|
69
|
+
logger.error(event.diagnostics);
|
|
70
|
+
break;
|
|
71
|
+
case 'progress':
|
|
72
|
+
logger.progress(event.message);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
46
77
|
}
|
|
47
78
|
}
|
|
48
79
|
|
|
@@ -59,6 +90,13 @@ export class NapiWorkerPool implements INapiWorkerPool {
|
|
|
59
90
|
if (message === 'stateCleared') {
|
|
60
91
|
worker.removeListener('message', messageHandler);
|
|
61
92
|
res();
|
|
93
|
+
} else if (
|
|
94
|
+
message != null &&
|
|
95
|
+
typeof message === 'object' &&
|
|
96
|
+
(message as {type?: unknown}).type === 'logEvent'
|
|
97
|
+
) {
|
|
98
|
+
// logEvent messages are forwarded asynchronously from the worker
|
|
99
|
+
// logger bridge and are expected at any time; ignore them here.
|
|
62
100
|
} else {
|
|
63
101
|
// Log unexpected messages for debugging
|
|
64
102
|
// eslint-disable-next-line no-console
|
|
@@ -19,14 +19,15 @@ import type {
|
|
|
19
19
|
} from '@atlaspack/types';
|
|
20
20
|
import type {FeatureFlags} from '@atlaspack/feature-flags';
|
|
21
21
|
import {parentPort} from 'worker_threads';
|
|
22
|
+
import logger from '@atlaspack/logger';
|
|
22
23
|
import * as module from 'module';
|
|
23
24
|
|
|
24
25
|
import {jsCallable} from '../jsCallable';
|
|
26
|
+
import {PluginLogger} from '@atlaspack/logger';
|
|
25
27
|
import {
|
|
26
28
|
Environment,
|
|
27
29
|
Dependency,
|
|
28
30
|
PluginConfig,
|
|
29
|
-
PluginLogger,
|
|
30
31
|
PluginTracer,
|
|
31
32
|
PluginOptions,
|
|
32
33
|
MutableAsset,
|
|
@@ -130,7 +131,7 @@ export class AtlaspackWorker {
|
|
|
130
131
|
const dependency = new Dependency(napiDependency, env);
|
|
131
132
|
|
|
132
133
|
const defaultOptions = {
|
|
133
|
-
logger: new PluginLogger(),
|
|
134
|
+
logger: new PluginLogger({origin: key}),
|
|
134
135
|
tracer: new PluginTracer(),
|
|
135
136
|
options: new PluginOptions(this.options),
|
|
136
137
|
} as const;
|
|
@@ -236,7 +237,7 @@ export class AtlaspackWorker {
|
|
|
236
237
|
|
|
237
238
|
const pluginOptions = new PluginOptions(this.options);
|
|
238
239
|
const defaultOptions = {
|
|
239
|
-
logger: new PluginLogger(),
|
|
240
|
+
logger: new PluginLogger({origin: key}),
|
|
240
241
|
tracer: new PluginTracer(),
|
|
241
242
|
options: pluginOptions,
|
|
242
243
|
} as const;
|
|
@@ -403,7 +404,7 @@ export class AtlaspackWorker {
|
|
|
403
404
|
|
|
404
405
|
if (transformer.setup) {
|
|
405
406
|
let setupResult = await transformer.setup({
|
|
406
|
-
logger: new PluginLogger(),
|
|
407
|
+
logger: new PluginLogger({origin: specifier}),
|
|
407
408
|
options: new PluginOptions({
|
|
408
409
|
...this.options,
|
|
409
410
|
shouldAutoInstall: false,
|
|
@@ -448,6 +449,12 @@ export class AtlaspackWorker {
|
|
|
448
449
|
}
|
|
449
450
|
}
|
|
450
451
|
|
|
452
|
+
// Forward all logger events from this worker thread to the main thread so
|
|
453
|
+
// they are re-emitted into the main-thread logger and reach reporters.
|
|
454
|
+
logger.onLog((event) => {
|
|
455
|
+
parentPort?.postMessage({type: 'logEvent', event});
|
|
456
|
+
});
|
|
457
|
+
|
|
451
458
|
// Create napi worker and send it back to main thread
|
|
452
459
|
const worker = new AtlaspackWorker();
|
|
453
460
|
const napiWorker = napi.newNodejsWorker(worker);
|