nestworker 2.1.1 → 2.1.4

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.
@@ -5,25 +5,49 @@ const node_async_hooks_1 = require("node:async_hooks");
5
5
  const worker_container_1 = require("../di/worker-container");
6
6
  const services = node_worker_threads_1.workerData?.services ?? [];
7
7
  const container = new worker_container_1.WorkerContainer();
8
- container.load(services);
9
8
  const instances = new Map();
10
- for (const svc of services) {
11
- instances.set(svc.name, container.get(svc.name));
9
+ // Index services by name so we can lazily reconstruct each one the first
10
+ // time a job for it arrives. Loading ALL services synchronously before
11
+ // sending `worker:ready` delays the pool from dispatching ANY work to this
12
+ // worker — which is catastrophic for cold-burst throughput when many
13
+ // workers spawn together. Lazy loading lets the pool start dispatching
14
+ // immediately; each service pays its `vm.runInContext` cost on its first
15
+ // invocation and is cached for every subsequent call.
16
+ const servicesByName = new Map();
17
+ for (const svc of services)
18
+ servicesByName.set(svc.name, svc);
19
+ function getInstance(name) {
20
+ let inst = instances.get(name);
21
+ if (inst !== undefined)
22
+ return inst;
23
+ const svc = servicesByName.get(name);
24
+ if (svc === undefined)
25
+ return undefined;
26
+ container.load([svc]);
27
+ inst = container.get(svc.name);
28
+ instances.set(svc.name, inst);
29
+ return inst;
12
30
  }
13
- node_worker_threads_1.parentPort?.postMessage({ type: 'worker:ready' });
31
+ // Stash parentPort once `parentPort` is a module getter; caching the
32
+ // reference avoids the getter call on every postMessage on the hot path.
33
+ const port = node_worker_threads_1.parentPort;
34
+ port.postMessage({ type: 'worker:ready' });
14
35
  // ── Pending IPC calls ─────────────────────────────────────────────────────
15
36
  const pendingIpc = new Map();
16
37
  // ── Pending AbortControllers (keyed by abortSignalId) ────────────────────
17
38
  const pendingAborts = new Map();
18
39
  // ── Internal ALS for context propagation ─────────────────────────────────
19
- // One ALS instance per context key — we use a single generic ALS that holds
20
- // the full context map, then the user's ALS instances read from it via
21
- // the context restoration path in WorkerService.
22
40
  const workerAls = new node_async_hooks_1.AsyncLocalStorage();
23
- node_worker_threads_1.parentPort?.on('message', (msg) => {
41
+ // Cache built proxies per descriptor signature — proxy descriptors are
42
+ // static per service, but the previous code rebuilt them on every job and
43
+ // mutated the shared service instance each time. Cache by propertyKey.
44
+ const proxyCache = new Map();
45
+ const proxiesInstalled = new Set(); // `${serviceName}:${propertyKey}`
46
+ port.on('message', (msg) => {
24
47
  const message = msg;
48
+ const t = message.type;
25
49
  // IPC result from main thread
26
- if (message.type === 'ipc:result') {
50
+ if (t === 'ipc:result') {
27
51
  const res = message;
28
52
  const pending = pendingIpc.get(res.callId);
29
53
  if (!pending)
@@ -33,29 +57,54 @@ node_worker_threads_1.parentPort?.on('message', (msg) => {
33
57
  return;
34
58
  }
35
59
  // Abort signal from main thread
36
- if (message.type === 'abort') {
60
+ if (t === 'abort') {
37
61
  const abort = message;
38
62
  pendingAborts.get(abort.abortSignalId)?.abort();
39
63
  return;
40
64
  }
41
- // Normal job
42
- queue.push(message);
43
- runNext();
65
+ // Batched jobs — process each. All sync-resolving results get auto-batched
66
+ // back into a single results envelope via the result flush microtask.
67
+ if (t === 'batch') {
68
+ const batch = message;
69
+ const jobs = batch.jobs;
70
+ forceBuffer = true;
71
+ try {
72
+ for (let i = 0; i < jobs.length; i++)
73
+ runJob(jobs[i]);
74
+ }
75
+ finally {
76
+ forceBuffer = false;
77
+ }
78
+ // Flush any sync results we accumulated during the loop as one envelope.
79
+ if (resultBuffer.length > 0) {
80
+ flushScheduled = true; // suppress the queued microtask flush
81
+ flushResults();
82
+ }
83
+ return;
84
+ }
85
+ // Single job — pool sends this when only one job was dispatched in the
86
+ // schedule pass (no batching benefit to wrap a 1-element envelope).
87
+ runJob(message);
44
88
  });
45
89
  function buildProxy(descriptor) {
90
+ const cached = proxyCache.get(descriptor.propertyKey);
91
+ if (cached)
92
+ return cached;
46
93
  const proxy = {};
47
94
  const propertyKey = descriptor.propertyKey;
48
95
  for (const methodName of descriptor.methodNames) {
49
96
  proxy[methodName] = (...args) => new Promise((resolve, reject) => {
50
- const callId = nextCallId();
97
+ const callId = ++__callCounter;
51
98
  pendingIpc.set(callId, { resolve, reject });
52
99
  const request = {
53
- type: 'ipc:invoke', callId,
100
+ type: 'ipc:invoke',
101
+ callId,
54
102
  propertyKey,
55
- methodName, args,
103
+ methodName,
104
+ args,
56
105
  };
57
106
  try {
58
- node_worker_threads_1.parentPort.postMessage(request);
107
+ port.postMessage(request);
59
108
  }
60
109
  catch (err) {
61
110
  pendingIpc.delete(callId);
@@ -64,89 +113,151 @@ function buildProxy(descriptor) {
64
113
  }
65
114
  });
66
115
  }
116
+ proxyCache.set(descriptor.propertyKey, proxy);
67
117
  return proxy;
68
118
  }
69
119
  // Counter-based call IDs — far cheaper than crypto.randomUUID() and only
70
- // need to be unique within this worker process.
120
+ // need to be unique within this worker process. Numeric IDs clone faster
121
+ // and hash cheaper than strings.
71
122
  let __callCounter = 0;
72
- const nextCallId = () => 'c' + (++__callCounter).toString(36);
73
- const queue = [];
74
- let busy = false;
75
- async function runNext() {
76
- if (busy || queue.length === 0)
123
+ // ── Outgoing result batching ─────────────────────────────────────────────
124
+ //
125
+ // We accumulate results into a single envelope per microtask tick. When a
126
+ // batch of jobs is dispatched at once, their resolved Promises all fire on
127
+ // the same microtask drain; the flush microtask is scheduled at the first
128
+ // postResult call and runs AFTER every queued .then, so it captures the
129
+ // entire batch and sends it in ONE postMessage. This collapses the per-job
130
+ // structuredClone fixed cost into a single per-batch one.
131
+ const resultBuffer = [];
132
+ let flushScheduled = false;
133
+ // When true, postResult always buffers (we're inside a batch loop and want
134
+ // every sync-resolved result of that batch to coalesce into one postMessage).
135
+ // When false (the steady-state concurrency=1 round-trip path), the FIRST
136
+ // result of the tick is posted immediately and only subsequent ones buffer.
137
+ let forceBuffer = false;
138
+ function scheduleFlush() {
139
+ if (flushScheduled)
140
+ return;
141
+ flushScheduled = true;
142
+ queueMicrotask(flushResults);
143
+ }
144
+ function flushResults() {
145
+ flushScheduled = false;
146
+ const n = resultBuffer.length;
147
+ if (n === 0)
148
+ return;
149
+ if (n === 1) {
150
+ const only = resultBuffer[0];
151
+ resultBuffer.length = 0;
152
+ port.postMessage(only);
153
+ return;
154
+ }
155
+ // Move out of the shared buffer before postMessage in case the clone
156
+ // triggers further microtasks that try to flush again.
157
+ const batch = { type: 'results', results: resultBuffer.slice(0, n) };
158
+ resultBuffer.length = 0;
159
+ port.postMessage(batch);
160
+ }
161
+ function postResult(res) {
162
+ // Fast path: outside any batch loop, no flush pending, buffer empty.
163
+ // This is the steady-state case for single-job dispatches (concurrency=1):
164
+ // sending immediately removes a full microtask hop from the round-trip.
165
+ // Any later results arriving in the SAME tick will queue and flush as
166
+ // a batch as usual.
167
+ if (!forceBuffer && !flushScheduled && resultBuffer.length === 0) {
168
+ port.postMessage(res);
169
+ return;
170
+ }
171
+ resultBuffer.push(res);
172
+ scheduleFlush();
173
+ }
174
+ function runJob(job) {
175
+ const jobId = job.jobId;
176
+ const inst = getInstance(job.serviceName);
177
+ if (!inst) {
178
+ postError(jobId, new Error(`Service "${job.serviceName}" is not registered`));
77
179
  return;
78
- busy = true;
79
- const job = queue.shift();
80
- // Set up AbortController for this job
81
- const abortController = new AbortController();
82
- if (job.abortSignalId) {
83
- pendingAborts.set(job.abortSignalId, abortController);
84
180
  }
85
- // Inject proxy stubs
86
- if (job.proxyServices?.length) {
87
- const inst = instances.get(job.serviceName);
88
- if (inst) {
89
- for (const descriptor of job.proxyServices) {
90
- inst[descriptor.propertyKey] = buildProxy(descriptor);
181
+ // Inject proxy stubs the first time we see a (service, propertyKey) pair.
182
+ // Proxies are static per service — re-mutating per job was wasted work.
183
+ const proxyServices = job.proxyServices;
184
+ if (proxyServices !== undefined && proxyServices.length > 0) {
185
+ for (let i = 0; i < proxyServices.length; i++) {
186
+ const d = proxyServices[i];
187
+ const key = job.serviceName + ':' + d.propertyKey;
188
+ if (!proxiesInstalled.has(key)) {
189
+ inst[d.propertyKey] = buildProxy(d);
190
+ proxiesInstalled.add(key);
91
191
  }
92
192
  }
93
193
  }
94
- // Restore ALS context and run the task inside it
95
- const alsContext = job.alsContext;
96
- const hasAls = alsContext && hasOwnKeys(alsContext);
97
- const run = async () => {
98
- const inst = instances.get(job.serviceName);
99
- if (!inst)
100
- throw new Error(`Service "${job.serviceName}" is not registered`);
101
- const fn = inst[job.methodName];
102
- if (typeof fn !== 'function') {
103
- throw new Error(`Task "${job.serviceName}.${job.methodName}" is not registered`);
104
- }
105
- // Inject AbortSignal as a last argument if the job has an abortSignalId.
106
- // Call via inst.method() — not as a detached fn() — so `this` is preserved.
107
- const args = job.abortSignalId
108
- ? [...job.args, abortController.signal]
109
- : job.args;
110
- return inst[job.methodName](...args);
111
- };
112
- try {
113
- // Skip the ALS wrapper entirely when there's no context to propagate —
114
- // ALS.run() has measurable overhead (async-hooks resource tracking).
115
- const data = hasAls ? await workerAls.run(alsContext, run) : await run();
116
- node_worker_threads_1.parentPort.postMessage({ ok: true, data });
194
+ const fn = inst[job.methodName];
195
+ if (typeof fn !== 'function') {
196
+ postError(jobId, new Error(`Task "${job.serviceName}.${job.methodName}" is not registered`));
197
+ return;
117
198
  }
118
- catch (error) {
119
- const e = error;
120
- const serialized = {
121
- name: e.name ?? 'Error',
122
- message: e.message,
123
- stack: e.stack,
124
- code: e.code,
125
- // Capture any extra own enumerable properties (e.g. HttpException.status)
126
- extra: serializeExtraProps(e),
127
- };
128
- node_worker_threads_1.parentPort.postMessage({ ok: false, error: serialized });
199
+ const abortSignalId = job.abortSignalId;
200
+ const args = job.args;
201
+ let abortController;
202
+ let callArgs = args;
203
+ if (abortSignalId !== undefined) {
204
+ abortController = new AbortController();
205
+ pendingAborts.set(abortSignalId, abortController);
206
+ callArgs = [...args, abortController.signal];
129
207
  }
130
- finally {
131
- if (job.abortSignalId) {
132
- pendingAborts.delete(job.abortSignalId);
208
+ try {
209
+ const alsContext = job.alsContext;
210
+ // Common path: no ALS — call fn directly with `inst` as `this`.
211
+ let result;
212
+ if (alsContext === undefined) {
213
+ // .apply is faster than spread when callArgs is the original array,
214
+ // and avoids an allocation on the no-abort path.
215
+ result = fn.apply(inst, callArgs);
216
+ }
217
+ else {
218
+ result = workerAls.run(alsContext, () => fn.apply(inst, callArgs));
133
219
  }
134
- busy = false;
135
- if (queue.length > 0)
136
- runNext();
220
+ // Sync fast path: avoid Promise allocation + microtask roundtrip when
221
+ // the task returned a plain value.
222
+ if (result === null ||
223
+ typeof result !== 'object' ||
224
+ typeof result.then !== 'function') {
225
+ if (abortSignalId !== undefined)
226
+ pendingAborts.delete(abortSignalId);
227
+ postResult({ type: 'result', ok: true, data: result, jobId });
228
+ return;
229
+ }
230
+ result.then((data) => {
231
+ if (abortSignalId !== undefined)
232
+ pendingAborts.delete(abortSignalId);
233
+ postResult({ type: 'result', ok: true, data, jobId });
234
+ }, (error) => {
235
+ if (abortSignalId !== undefined)
236
+ pendingAborts.delete(abortSignalId);
237
+ postError(jobId, error);
238
+ });
137
239
  }
138
- }
139
- function hasOwnKeys(obj) {
140
- // Cheaper than Object.keys(obj).length > 0 — no array allocation.
141
- // noinspection LoopStatementThatDoesntLoopJS
142
- for (const _k in obj) {
143
- void _k;
144
- return true;
240
+ catch (error) {
241
+ if (abortSignalId !== undefined)
242
+ pendingAborts.delete(abortSignalId);
243
+ postError(jobId, error);
145
244
  }
146
- return false;
245
+ }
246
+ function postError(jobId, error) {
247
+ const e = error;
248
+ const serialized = {
249
+ name: e?.name ?? 'Error',
250
+ message: e?.message ?? String(error),
251
+ stack: e?.stack,
252
+ code: e?.code,
253
+ extra: serializeExtraProps(e),
254
+ };
255
+ postResult({ type: 'result', ok: false, error: serialized, jobId });
147
256
  }
148
257
  function serializeExtraProps(err) {
149
- const skip = new Set(['name', 'message', 'stack', 'code']);
258
+ if (!err || typeof err !== 'object')
259
+ return undefined;
260
+ const skip = SKIP_ERR_KEYS;
150
261
  const extra = {};
151
262
  let hasExtra = false;
152
263
  for (const key of Object.keys(err)) {
@@ -162,4 +273,5 @@ function serializeExtraProps(err) {
162
273
  }
163
274
  return hasExtra ? extra : undefined;
164
275
  }
276
+ const SKIP_ERR_KEYS = new Set(['name', 'message', 'stack', 'code']);
165
277
  //# sourceMappingURL=worker-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../src/worker/worker-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../src/worker/worker-runtime.ts"],"names":[],"mappings":";;AAAA,6DAA6D;AAC7D,uDAAqD;AACrD,6DAAyD;AAezD,MAAM,QAAQ,GAAwB,gCAAU,EAAE,QAAQ,IAAI,EAAE,CAAC;AACjE,MAAM,SAAS,GAAG,IAAI,kCAAe,EAAE,CAAC;AAIxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;AACrD,yEAAyE;AACzE,uEAAuE;AACvE,2EAA2E;AAC3E,qEAAqE;AACrE,uEAAuE;AACvE,yEAAyE;AACzE,sDAAsD;AACtD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;AAC5D,KAAK,MAAM,GAAG,IAAI,QAAQ;IAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE9D,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,GAAG,SAAS,CAAC,GAAG,CAAkB,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uEAAuE;AACvE,yEAAyE;AACzE,MAAM,IAAI,GAAG,gCAAW,CAAC;AACzB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAE3C,6EAA6E;AAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;AAEJ,4EAA4E;AAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,SAAS,GAAG,IAAI,oCAAiB,EAA2B,CAAC;AAEnE,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;AACtD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,kCAAkC;AAE9E,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;IAClC,MAAM,OAAO,GAAG,GAA2B,CAAC;IAC5C,MAAM,CAAC,GAAI,OAA6B,CAAC,IAAI,CAAC;IAE9C,8BAA8B;IAC9B,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,OAA4B,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;QAC1F,OAAO;IACT,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,OAA6B,CAAC;QAC5C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,OAAyB,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,yEAAyE;QACzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,cAAc,GAAG,IAAI,CAAC,CAAC,sCAAsC;YAC7D,YAAY,EAAE,CAAC;QACjB,CAAC;QACD,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,CAAC,OAAoB,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,UAAkC;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC3C,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAChD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAe,EAAoB,EAAE,CAC3D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,EAAE,aAAa,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAqB;gBAChC,IAAI,EAAE,YAAY;gBAClB,MAAM;gBACN,WAAW;gBACX,UAAU;gBACV,IAAI;aACL,CAAC;YACF,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,CACd,cAAc,WAAW,IAAI,UAAU,8BAA8B;oBACrE,GAAI,GAAa,CAAC,OAAO,EAAE,CAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,yEAAyE;AACzE,iCAAiC;AACjC,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,0DAA0D;AAE1D,MAAM,YAAY,GAAmB,EAAE,CAAC;AACxC,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,SAAS,aAAa;IACpB,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY;IACnB,cAAc,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO;IACpB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,qEAAqE;IACrE,uDAAuD;IACvD,MAAM,KAAK,GAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxF,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,GAAiB;IACnC,qEAAqE;IACrE,2EAA2E;IAC3E,wEAAwE;IACxE,sEAAsE;IACtE,oBAAoB;IACpB,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,GAAc;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,WAAW,qBAAqB,CAAC,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACxC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC;YAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAA+C,CAAC;gBAClF,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,qBAAqB,CAAC,CAAC,CAAC;QAC7F,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,eAA4C,CAAC;IACjD,IAAI,QAAQ,GAAc,IAAI,CAAC;IAC/B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAClD,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,gEAAgE;QAChE,IAAI,MAAe,CAAC;QACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,oEAAoE;YACpE,iDAAiD;YACjD,MAAM,GAAI,EAAmC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CACrC,EAAmC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC3D,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,mCAAmC;QACnC,IACE,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,OAAQ,MAA6B,CAAC,IAAI,KAAK,UAAU,EACzD,CAAC;YACD,IAAI,aAAa,KAAK,SAAS;gBAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrE,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACA,MAA2B,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,aAAa,KAAK,SAAS;gBAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrE,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,aAAa,KAAK,SAAS;gBAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,aAAa,KAAK,SAAS;YAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,KAAc;IAC9C,MAAM,CAAC,GAAG,KAAmE,CAAC;IAC9E,MAAM,UAAU,GAAoB;QAClC,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,OAAO;QACxB,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;QACpC,KAAK,EAAE,CAAC,EAAE,KAAK;QACf,IAAI,EAAE,CAAC,EAAE,IAAI;QACb,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAoC;IAEpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC;YACH,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB;QAClC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "nestworker",
3
- "version": "2.1.1",
3
+ "version": "2.1.4",
4
4
  "description": "Enterprise-grade worker thread module for NestJS — priority pool, auto-discovery, DI in workers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
7
15
  "files": [
8
16
  "dist",
9
17
  "README.md",