@parcel/workers 2.0.0-nightly.122 → 2.0.0-nightly.1222

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/lib/WorkerFarm.js CHANGED
@@ -11,15 +11,55 @@ Object.defineProperty(exports, "Handle", {
11
11
  });
12
12
  exports.default = void 0;
13
13
 
14
- var _assert = _interopRequireDefault(require("assert"));
14
+ function _assert() {
15
+ const data = _interopRequireDefault(require("assert"));
15
16
 
16
- var _nullthrows = _interopRequireDefault(require("nullthrows"));
17
+ _assert = function () {
18
+ return data;
19
+ };
17
20
 
18
- var _events = _interopRequireDefault(require("events"));
21
+ return data;
22
+ }
23
+
24
+ function _nullthrows() {
25
+ const data = _interopRequireDefault(require("nullthrows"));
26
+
27
+ _nullthrows = function () {
28
+ return data;
29
+ };
30
+
31
+ return data;
32
+ }
33
+
34
+ function _events() {
35
+ const data = _interopRequireDefault(require("events"));
36
+
37
+ _events = function () {
38
+ return data;
39
+ };
40
+
41
+ return data;
42
+ }
43
+
44
+ function _core() {
45
+ const data = require("@parcel/core");
46
+
47
+ _core = function () {
48
+ return data;
49
+ };
50
+
51
+ return data;
52
+ }
53
+
54
+ function _diagnostic() {
55
+ const data = _interopRequireWildcard(require("@parcel/diagnostic"));
19
56
 
20
- var _core = require("@parcel/core");
57
+ _diagnostic = function () {
58
+ return data;
59
+ };
21
60
 
22
- var _diagnostic = _interopRequireWildcard(require("@parcel/diagnostic"));
61
+ return data;
62
+ }
23
63
 
24
64
  var _Worker = _interopRequireDefault(require("./Worker"));
25
65
 
@@ -35,83 +75,59 @@ var _Profiler = _interopRequireDefault(require("./Profiler"));
35
75
 
36
76
  var _Trace = _interopRequireDefault(require("./Trace"));
37
77
 
38
- var _fs = _interopRequireDefault(require("fs"));
78
+ function _fs() {
79
+ const data = _interopRequireDefault(require("fs"));
39
80
 
40
- var _logger = _interopRequireDefault(require("@parcel/logger"));
81
+ _fs = function () {
82
+ return data;
83
+ };
41
84
 
42
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
85
+ return data;
86
+ }
43
87
 
44
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
88
+ function _logger() {
89
+ const data = _interopRequireDefault(require("@parcel/logger"));
45
90
 
46
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
91
+ _logger = function () {
92
+ return data;
93
+ };
47
94
 
48
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
95
+ return data;
96
+ }
49
97
 
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
98
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
99
 
52
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
100
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
101
+
102
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
103
 
54
- let profileId = 1;
55
104
  let referenceId = 1;
56
105
 
57
106
  /**
58
107
  * workerPath should always be defined inside farmOptions
59
108
  */
60
- class WorkerFarm extends _events.default {
109
+ class WorkerFarm extends _events().default {
110
+ callQueue = [];
111
+ ending = false;
112
+ warmWorkers = 0;
113
+ workers = new Map();
114
+ handles = new Map();
115
+ sharedReferences = new Map();
116
+ sharedReferencesByValue = new Map();
117
+ serializedSharedReferences = new Map();
118
+
61
119
  constructor(farmOptions = {}) {
62
120
  super();
63
-
64
- _defineProperty(this, "callQueue", []);
65
-
66
- _defineProperty(this, "ending", false);
67
-
68
- _defineProperty(this, "localWorker", void 0);
69
-
70
- _defineProperty(this, "options", void 0);
71
-
72
- _defineProperty(this, "run", void 0);
73
-
74
- _defineProperty(this, "warmWorkers", 0);
75
-
76
- _defineProperty(this, "workers", new Map());
77
-
78
- _defineProperty(this, "handles", new Map());
79
-
80
- _defineProperty(this, "sharedReferences", new Map());
81
-
82
- _defineProperty(this, "sharedReferencesByValue", new Map());
83
-
84
- _defineProperty(this, "profiler", void 0);
85
-
86
- _defineProperty(this, "workerApi", {
87
- callMaster: async (request, awaitResponse = true) => {
88
- // $FlowFixMe
89
- let result = await this.processRequest(_objectSpread({}, request, {
90
- awaitResponse
91
- }));
92
- return (0, _core.deserialize)((0, _core.serialize)(result));
93
- },
94
- createReverseHandle: fn => this.createReverseHandle(fn),
95
- callChild: (childId, request) => new Promise((resolve, reject) => {
96
- (0, _nullthrows.default)(this.workers.get(childId)).call(_objectSpread({}, request, {
97
- resolve,
98
- reject,
99
- retries: 0
100
- }));
101
- }),
102
- getSharedReference: ref => this.sharedReferences.get(ref),
103
- resolveSharedReference: value => this.sharedReferencesByValue.get(value)
104
- });
105
-
106
- this.options = _objectSpread({
121
+ this.options = {
107
122
  maxConcurrentWorkers: WorkerFarm.getNumWorkers(),
108
123
  maxConcurrentCallsPerWorker: WorkerFarm.getConcurrentCallsPerWorker(),
109
124
  forcedKillTime: 500,
110
125
  warmWorkers: false,
111
126
  useLocalWorker: true,
112
127
  // TODO: setting this to false makes some tests fail, figure out why
113
- backend: (0, _backend.detectBackend)()
114
- }, farmOptions);
128
+ backend: (0, _backend.detectBackend)(),
129
+ ...farmOptions
130
+ };
115
131
 
116
132
  if (!this.options.workerPath) {
117
133
  throw new Error('Please provide a worker path!');
@@ -119,10 +135,44 @@ class WorkerFarm extends _events.default {
119
135
 
120
136
 
121
137
  this.localWorker = require(this.options.workerPath);
122
- this.run = this.createHandle('run');
138
+ this.localWorkerInit = this.localWorker.childInit != null ? this.localWorker.childInit() : null;
139
+ this.run = this.createHandle('run'); // Worker thread stdout is by default piped into the process stdout, if there are enough worker
140
+ // threads to exceed the default listener limit, then anything else piping into stdout will trigger
141
+ // the `MaxListenersExceededWarning`, so we should ensure the max listeners is at least equal to the
142
+ // number of workers + 1 for the main thread.
143
+ //
144
+ // Note this can't be fixed easily where other things pipe into stdout - even after starting > 10 worker
145
+ // threads `process.stdout.getMaxListeners()` will still return 10, however adding another pipe into `stdout`
146
+ // will give the warning with `<worker count + 1>` as the number of listeners.
147
+
148
+ process.stdout.setMaxListeners(Math.max(process.stdout.getMaxListeners(), WorkerFarm.getNumWorkers() + 1));
123
149
  this.startMaxWorkers();
124
150
  }
125
151
 
152
+ workerApi = {
153
+ callMaster: async (request, awaitResponse = true) => {
154
+ // $FlowFixMe
155
+ let result = await this.processRequest({ ...request,
156
+ awaitResponse
157
+ });
158
+ return (0, _core().deserialize)((0, _core().serialize)(result));
159
+ },
160
+ createReverseHandle: fn => this.createReverseHandle(fn),
161
+ callChild: (childId, request) => new Promise((resolve, reject) => {
162
+ (0, _nullthrows().default)(this.workers.get(childId)).call({ ...request,
163
+ resolve,
164
+ reject,
165
+ retries: 0
166
+ });
167
+ }),
168
+ runHandle: (handle, args) => this.workerApi.callChild((0, _nullthrows().default)(handle.childId), {
169
+ handle: handle.id,
170
+ args
171
+ }),
172
+ getSharedReference: ref => this.sharedReferences.get(ref),
173
+ resolveSharedReference: value => this.sharedReferencesByValue.get(value)
174
+ };
175
+
126
176
  warmupWorker(method, args) {
127
177
  // Workers are already stopping
128
178
  if (this.ending) {
@@ -149,19 +199,31 @@ class WorkerFarm extends _events.default {
149
199
  return this.options.maxConcurrentWorkers > 0 || !this.options.useLocalWorker;
150
200
  }
151
201
 
152
- createHandle(method) {
153
- return (...args) => {
202
+ createHandle(method, useMainThread = false) {
203
+ return async (...args) => {
154
204
  // Child process workers are slow to start (~600ms).
155
205
  // While we're waiting, just run on the main thread.
156
206
  // This significantly speeds up startup time.
157
- if (this.shouldUseRemoteWorkers()) {
207
+ if (this.shouldUseRemoteWorkers() && !useMainThread) {
158
208
  return this.addCall(method, [...args, false]);
159
209
  } else {
160
210
  if (this.options.warmWorkers && this.shouldStartRemoteWorkers()) {
161
211
  this.warmupWorker(method, args);
162
212
  }
163
213
 
164
- let processedArgs = (0, _core.restoreDeserializedObject)((0, _core.prepareForSerialization)([...args, false]));
214
+ let processedArgs;
215
+
216
+ if (!useMainThread) {
217
+ processedArgs = (0, _core().restoreDeserializedObject)((0, _core().prepareForSerialization)([...args, false]));
218
+ } else {
219
+ processedArgs = args;
220
+ }
221
+
222
+ if (this.localWorkerInit != null) {
223
+ await this.localWorkerInit;
224
+ this.localWorkerInit = null;
225
+ }
226
+
165
227
  return this.localWorker[method](this.workerApi, ...processedArgs);
166
228
  }
167
229
  };
@@ -171,6 +233,8 @@ class WorkerFarm extends _events.default {
171
233
  // Handle ipc errors
172
234
  if (error.code === 'ERR_IPC_CHANNEL_CLOSED') {
173
235
  return this.stopWorker(worker);
236
+ } else {
237
+ _logger().default.error(error, '@parcel/workers');
174
238
  }
175
239
  }
176
240
 
@@ -178,9 +242,10 @@ class WorkerFarm extends _events.default {
178
242
  let worker = new _Worker.default({
179
243
  forcedKillTime: this.options.forcedKillTime,
180
244
  backend: this.options.backend,
181
- patchConsole: this.options.patchConsole
245
+ shouldPatchConsole: this.options.shouldPatchConsole,
246
+ sharedReferences: this.sharedReferences
182
247
  });
183
- worker.fork((0, _nullthrows.default)(this.options.workerPath));
248
+ worker.fork((0, _nullthrows().default)(this.options.workerPath));
184
249
  worker.on('request', data => this.processRequest(data, worker));
185
250
  worker.on('ready', () => this.processQueue());
186
251
  worker.on('response', () => this.processQueue());
@@ -215,7 +280,9 @@ class WorkerFarm extends _events.default {
215
280
  this.startChild();
216
281
  }
217
282
 
218
- for (let worker of this.workers.values()) {
283
+ let workers = [...this.workers.values()].sort((a, b) => a.calls.size - b.calls.size);
284
+
285
+ for (let worker of workers) {
219
286
  if (!this.callQueue.length) {
220
287
  break;
221
288
  }
@@ -225,9 +292,19 @@ class WorkerFarm extends _events.default {
225
292
  }
226
293
 
227
294
  if (worker.calls.size < this.options.maxConcurrentCallsPerWorker) {
228
- worker.call(this.callQueue.shift());
295
+ this.callWorker(worker, this.callQueue.shift());
296
+ }
297
+ }
298
+ }
299
+
300
+ async callWorker(worker, call) {
301
+ for (let ref of this.sharedReferences.keys()) {
302
+ if (!worker.sentSharedReferences.has(ref)) {
303
+ await worker.sendSharedReference(ref, this.getSerializedSharedReference(ref));
229
304
  }
230
305
  }
306
+
307
+ worker.call(call);
231
308
  }
232
309
 
233
310
  async processRequest(data, worker) {
@@ -242,7 +319,9 @@ class WorkerFarm extends _events.default {
242
319
  let mod;
243
320
 
244
321
  if (handleId != null) {
245
- mod = (0, _nullthrows.default)(this.handles.get(handleId)).fn;
322
+ var _this$handles$get;
323
+
324
+ mod = (0, _nullthrows().default)((_this$handles$get = this.handles.get(handleId)) === null || _this$handles$get === void 0 ? void 0 : _this$handles$get.fn);
246
325
  } else if (location) {
247
326
  // $FlowFixMe this must be dynamic
248
327
  mod = require(location);
@@ -261,27 +340,26 @@ class WorkerFarm extends _events.default {
261
340
  idx,
262
341
  type: 'response',
263
342
  contentType: 'error',
264
- content: (0, _diagnostic.anyToDiagnostic)(e)
343
+ content: (0, _diagnostic().anyToDiagnostic)(e)
265
344
  });
266
345
 
267
346
  let result;
268
347
 
269
348
  if (method == null) {
270
349
  try {
271
- result = responseFromContent((await mod(...args)));
350
+ result = responseFromContent(await mod(...args));
272
351
  } catch (e) {
273
352
  result = errorResponseFromError(e);
274
353
  }
275
354
  } else {
276
355
  // ESModule default interop
277
- // $FlowFixMe
278
356
  if (mod.__esModule && !mod[method] && mod.default) {
279
357
  mod = mod.default;
280
358
  }
281
359
 
282
360
  try {
283
361
  // $FlowFixMe
284
- result = responseFromContent((await mod[method](...args)));
362
+ result = responseFromContent(await mod[method](...args));
285
363
  } catch (e) {
286
364
  result = errorResponseFromError(e);
287
365
  }
@@ -292,7 +370,7 @@ class WorkerFarm extends _events.default {
292
370
  worker.send(result);
293
371
  } else {
294
372
  if (result.contentType === 'error') {
295
- throw new _diagnostic.default({
373
+ throw new (_diagnostic().default)({
296
374
  diagnostic: result.content
297
375
  });
298
376
  }
@@ -321,6 +399,7 @@ class WorkerFarm extends _events.default {
321
399
 
322
400
  async end() {
323
401
  this.ending = true;
402
+ await Promise.all(Array.from(this.workers.values()).map(worker => this.stopWorker(worker)));
324
403
 
325
404
  for (let handle of this.handles.values()) {
326
405
  handle.dispose();
@@ -329,7 +408,6 @@ class WorkerFarm extends _events.default {
329
408
  this.handles = new Map();
330
409
  this.sharedReferences = new Map();
331
410
  this.sharedReferencesByValue = new Map();
332
- await Promise.all(Array.from(this.workers.values()).map(worker => this.stopWorker(worker)));
333
411
  this.ending = false;
334
412
  }
335
413
 
@@ -350,46 +428,42 @@ class WorkerFarm extends _events.default {
350
428
 
351
429
  createReverseHandle(fn) {
352
430
  let handle = new _Handle.default({
353
- fn,
354
- workerApi: this.workerApi
431
+ fn
355
432
  });
356
433
  this.handles.set(handle.id, handle);
357
434
  return handle;
358
435
  }
359
436
 
360
- async createSharedReference(value) {
437
+ createSharedReference(value, isCacheable = true) {
361
438
  let ref = referenceId++;
362
439
  this.sharedReferences.set(ref, value);
363
440
  this.sharedReferencesByValue.set(value, ref);
364
- let promises = [];
365
441
 
366
- for (let worker of this.workers.values()) {
367
- promises.push(new Promise((resolve, reject) => {
368
- worker.call({
369
- method: 'createSharedReference',
370
- args: [ref, value],
371
- resolve,
372
- reject,
373
- retries: 0
374
- });
375
- }));
442
+ if (!isCacheable) {
443
+ this.serializedSharedReferences.set(ref, null);
376
444
  }
377
445
 
378
- await Promise.all(promises);
379
446
  return {
380
447
  ref,
381
448
  dispose: () => {
382
449
  this.sharedReferences.delete(ref);
383
450
  this.sharedReferencesByValue.delete(value);
451
+ this.serializedSharedReferences.delete(ref);
384
452
  let promises = [];
385
453
 
386
454
  for (let worker of this.workers.values()) {
455
+ if (!worker.sentSharedReferences.has(ref)) {
456
+ continue;
457
+ }
458
+
459
+ worker.sentSharedReferences.delete(ref);
387
460
  promises.push(new Promise((resolve, reject) => {
388
461
  worker.call({
389
462
  method: 'deleteSharedReference',
390
463
  args: [ref],
391
464
  resolve,
392
465
  reject,
466
+ skipReadyCheck: true,
393
467
  retries: 0
394
468
  });
395
469
  }));
@@ -400,6 +474,24 @@ class WorkerFarm extends _events.default {
400
474
  };
401
475
  }
402
476
 
477
+ getSerializedSharedReference(ref) {
478
+ let cached = this.serializedSharedReferences.get(ref);
479
+
480
+ if (cached) {
481
+ return cached;
482
+ }
483
+
484
+ let value = this.sharedReferences.get(ref);
485
+ let buf = (0, _core().serialize)(value).buffer; // If the reference was created with the isCacheable option set to false,
486
+ // serializedSharedReferences will contain `null` as the value.
487
+
488
+ if (cached !== null) {
489
+ this.serializedSharedReferences.set(ref, buf);
490
+ }
491
+
492
+ return buf;
493
+ }
494
+
403
495
  async startProfile() {
404
496
  let promises = [];
405
497
 
@@ -410,7 +502,8 @@ class WorkerFarm extends _events.default {
410
502
  args: [],
411
503
  resolve,
412
504
  reject,
413
- retries: 0
505
+ retries: 0,
506
+ skipReadyCheck: true
414
507
  });
415
508
  }));
416
509
  }
@@ -436,15 +529,16 @@ class WorkerFarm extends _events.default {
436
529
  args: [],
437
530
  resolve,
438
531
  reject,
439
- retries: 0
532
+ retries: 0,
533
+ skipReadyCheck: true
440
534
  });
441
535
  }));
442
536
  }
443
537
 
444
538
  var profiles = await Promise.all(promises);
445
539
  let trace = new _Trace.default();
446
- let filename = `profile-${profileId++}.trace`;
447
- let stream = trace.pipe(_fs.default.createWriteStream(filename));
540
+ let filename = `profile-${getTimeId()}.trace`;
541
+ let stream = trace.pipe(_fs().default.createWriteStream(filename));
448
542
 
449
543
  for (let profile of profiles) {
450
544
  trace.addCPUProfile(names.shift(), profile);
@@ -455,14 +549,60 @@ class WorkerFarm extends _events.default {
455
549
  stream.once('finish', resolve);
456
550
  });
457
551
 
458
- _logger.default.info({
552
+ _logger().default.info({
459
553
  origin: '@parcel/workers',
460
- message: `Wrote profile to ${filename}`
554
+ message: (0, _diagnostic().md)`Wrote profile to ${filename}`
461
555
  });
462
556
  }
463
557
 
558
+ async callAllWorkers(method, args) {
559
+ let promises = [];
560
+
561
+ for (let worker of this.workers.values()) {
562
+ promises.push(new Promise((resolve, reject) => {
563
+ worker.call({
564
+ method,
565
+ args,
566
+ resolve,
567
+ reject,
568
+ retries: 0
569
+ });
570
+ }));
571
+ }
572
+
573
+ promises.push(this.localWorker[method](this.workerApi, ...args));
574
+ await Promise.all(promises);
575
+ }
576
+
577
+ async takeHeapSnapshot() {
578
+ let snapshotId = getTimeId();
579
+
580
+ try {
581
+ let snapshotPaths = await Promise.all([...this.workers.values()].map(worker => new Promise((resolve, reject) => {
582
+ worker.call({
583
+ method: 'takeHeapSnapshot',
584
+ args: [snapshotId],
585
+ resolve,
586
+ reject,
587
+ retries: 0,
588
+ skipReadyCheck: true
589
+ });
590
+ })));
591
+
592
+ _logger().default.info({
593
+ origin: '@parcel/workers',
594
+ message: (0, _diagnostic().md)`Wrote heap snapshots to the following paths:\n${snapshotPaths.join('\n')}`
595
+ });
596
+ } catch {
597
+ _logger().default.error({
598
+ origin: '@parcel/workers',
599
+ message: 'Unable to take heap snapshots. Note: requires Node 11.13.0+'
600
+ });
601
+ }
602
+ }
603
+
464
604
  static getNumWorkers() {
465
- return process.env.PARCEL_WORKERS ? parseInt(process.env.PARCEL_WORKERS, 10) : (0, _cpuCount.default)();
605
+ return process.env.PARCEL_WORKERS ? parseInt(process.env.PARCEL_WORKERS, 10) : Math.ceil((0, _cpuCount.default)() / 2);
466
606
  }
467
607
 
468
608
  static isWorker() {
@@ -470,14 +610,19 @@ class WorkerFarm extends _events.default {
470
610
  }
471
611
 
472
612
  static getWorkerApi() {
473
- (0, _assert.default)(_childState.child != null, 'WorkerFarm.getWorkerApi can only be called within workers');
613
+ (0, _assert().default)(_childState.child != null, 'WorkerFarm.getWorkerApi can only be called within workers');
474
614
  return _childState.child.workerApi;
475
615
  }
476
616
 
477
617
  static getConcurrentCallsPerWorker() {
478
- return parseInt(process.env.PARCEL_MAX_CONCURRENT_CALLS, 10) || 5;
618
+ return parseInt(process.env.PARCEL_MAX_CONCURRENT_CALLS, 10) || 30;
479
619
  }
480
620
 
481
621
  }
482
622
 
483
- exports.default = WorkerFarm;
623
+ exports.default = WorkerFarm;
624
+
625
+ function getTimeId() {
626
+ let now = new Date();
627
+ return String(now.getFullYear()) + String(now.getMonth() + 1).padStart(2, '0') + String(now.getDate()).padStart(2, '0') + '-' + String(now.getHours()).padStart(2, '0') + String(now.getMinutes()).padStart(2, '0') + String(now.getSeconds()).padStart(2, '0');
628
+ }
package/lib/bus.js CHANGED
@@ -5,13 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _events = _interopRequireDefault(require("events"));
8
+ function _events() {
9
+ const data = _interopRequireDefault(require("events"));
10
+
11
+ _events = function () {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
9
17
 
10
18
  var _childState = require("./childState");
11
19
 
12
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
21
 
14
- class Bus extends _events.default {
22
+ class Bus extends _events().default {
15
23
  emit(event, ...args) {
16
24
  if (_childState.child) {
17
25
  _childState.child.workerApi.callMaster({