nestworker 2.1.0 → 2.1.3

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.
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const node_worker_threads_1 = require("node:worker_threads");
7
4
  const node_async_hooks_1 = require("node:async_hooks");
8
- const node_crypto_1 = __importDefault(require("node:crypto"));
9
5
  const worker_container_1 = require("../di/worker-container");
10
6
  const services = node_worker_threads_1.workerData?.services ?? [];
11
7
  const container = new worker_container_1.WorkerContainer();
@@ -14,20 +10,26 @@ const instances = new Map();
14
10
  for (const svc of services) {
15
11
  instances.set(svc.name, container.get(svc.name));
16
12
  }
17
- node_worker_threads_1.parentPort?.postMessage({ type: 'worker:ready' });
13
+ // Stash parentPort once `parentPort` is a module getter; caching the
14
+ // reference avoids the getter call on every postMessage on the hot path.
15
+ const port = node_worker_threads_1.parentPort;
16
+ port.postMessage({ type: 'worker:ready' });
18
17
  // ── Pending IPC calls ─────────────────────────────────────────────────────
19
18
  const pendingIpc = new Map();
20
19
  // ── Pending AbortControllers (keyed by abortSignalId) ────────────────────
21
20
  const pendingAborts = new Map();
22
21
  // ── Internal ALS for context propagation ─────────────────────────────────
23
- // One ALS instance per context key — we use a single generic ALS that holds
24
- // the full context map, then the user's ALS instances read from it via
25
- // the context restoration path in WorkerService.
26
22
  const workerAls = new node_async_hooks_1.AsyncLocalStorage();
27
- node_worker_threads_1.parentPort?.on('message', (msg) => {
23
+ // Cache built proxies per descriptor signature — proxy descriptors are
24
+ // static per service, but the previous code rebuilt them on every job and
25
+ // mutated the shared service instance each time. Cache by propertyKey.
26
+ const proxyCache = new Map();
27
+ const proxiesInstalled = new Set(); // `${serviceName}:${propertyKey}`
28
+ port.on('message', (msg) => {
28
29
  const message = msg;
30
+ const t = message.type;
29
31
  // IPC result from main thread
30
- if (message.type === 'ipc:result') {
32
+ if (t === 'ipc:result') {
31
33
  const res = message;
32
34
  const pending = pendingIpc.get(res.callId);
33
35
  if (!pending)
@@ -37,104 +39,178 @@ node_worker_threads_1.parentPort?.on('message', (msg) => {
37
39
  return;
38
40
  }
39
41
  // Abort signal from main thread
40
- if (message.type === 'abort') {
42
+ if (t === 'abort') {
41
43
  const abort = message;
42
44
  pendingAborts.get(abort.abortSignalId)?.abort();
43
45
  return;
44
46
  }
45
- // Normal job
46
- queue.push(message);
47
- runNext();
47
+ // Batched jobs — process each. All sync-resolving results get auto-batched
48
+ // back into a single results envelope via the result flush microtask.
49
+ if (t === 'batch') {
50
+ const batch = message;
51
+ const jobs = batch.jobs;
52
+ for (let i = 0; i < jobs.length; i++)
53
+ runJob(jobs[i]);
54
+ return;
55
+ }
56
+ // Single job — pool sends this when only one job was dispatched in the
57
+ // schedule pass (no batching benefit to wrap a 1-element envelope).
58
+ runJob(message);
48
59
  });
49
60
  function buildProxy(descriptor) {
61
+ const cached = proxyCache.get(descriptor.propertyKey);
62
+ if (cached)
63
+ return cached;
50
64
  const proxy = {};
65
+ const propertyKey = descriptor.propertyKey;
51
66
  for (const methodName of descriptor.methodNames) {
52
67
  proxy[methodName] = (...args) => new Promise((resolve, reject) => {
53
- const callId = node_crypto_1.default.randomUUID();
68
+ const callId = ++__callCounter;
54
69
  pendingIpc.set(callId, { resolve, reject });
55
70
  const request = {
56
- type: 'ipc:invoke', callId,
57
- propertyKey: descriptor.propertyKey,
58
- methodName, args,
71
+ type: 'ipc:invoke',
72
+ callId,
73
+ propertyKey,
74
+ methodName,
75
+ args,
59
76
  };
60
77
  try {
61
- node_worker_threads_1.parentPort?.postMessage(request);
78
+ port.postMessage(request);
62
79
  }
63
80
  catch (err) {
64
81
  pendingIpc.delete(callId);
65
- reject(new Error(`IPC proxy "${descriptor.propertyKey}.${methodName}" could not serialise args: ` +
82
+ reject(new Error(`IPC proxy "${propertyKey}.${methodName}" could not serialise args: ` +
66
83
  `${err.message}`));
67
84
  }
68
85
  });
69
86
  }
87
+ proxyCache.set(descriptor.propertyKey, proxy);
70
88
  return proxy;
71
89
  }
72
- const queue = [];
73
- let busy = false;
74
- async function runNext() {
75
- if (busy || queue.length === 0)
90
+ // Counter-based call IDs — far cheaper than crypto.randomUUID() and only
91
+ // need to be unique within this worker process. Numeric IDs clone faster
92
+ // and hash cheaper than strings.
93
+ let __callCounter = 0;
94
+ // ── Outgoing result batching ─────────────────────────────────────────────
95
+ //
96
+ // We accumulate results into a single envelope per microtask tick. When a
97
+ // batch of jobs is dispatched at once, their resolved Promises all fire on
98
+ // the same microtask drain; the flush microtask is scheduled at the first
99
+ // postResult call and runs AFTER every queued .then, so it captures the
100
+ // entire batch and sends it in ONE postMessage. This collapses the per-job
101
+ // structuredClone fixed cost into a single per-batch one.
102
+ const resultBuffer = [];
103
+ let flushScheduled = false;
104
+ function scheduleFlush() {
105
+ if (flushScheduled)
106
+ return;
107
+ flushScheduled = true;
108
+ queueMicrotask(flushResults);
109
+ }
110
+ function flushResults() {
111
+ flushScheduled = false;
112
+ const n = resultBuffer.length;
113
+ if (n === 0)
114
+ return;
115
+ if (n === 1) {
116
+ const only = resultBuffer[0];
117
+ resultBuffer.length = 0;
118
+ port.postMessage(only);
76
119
  return;
77
- busy = true;
78
- const job = queue.shift();
79
- // Set up AbortController for this job
80
- const abortController = new AbortController();
81
- if (job.abortSignalId) {
82
- pendingAborts.set(job.abortSignalId, abortController);
83
120
  }
84
- // Inject proxy stubs
85
- if (job.proxyServices?.length) {
121
+ // Move out of the shared buffer before postMessage in case the clone
122
+ // triggers further microtasks that try to flush again.
123
+ const batch = { type: 'results', results: resultBuffer.slice(0, n) };
124
+ resultBuffer.length = 0;
125
+ port.postMessage(batch);
126
+ }
127
+ function postResult(res) {
128
+ resultBuffer.push(res);
129
+ scheduleFlush();
130
+ }
131
+ function runJob(job) {
132
+ // Inject proxy stubs the first time we see a (service, propertyKey) pair.
133
+ // Proxies are static per service — re-mutating per job was wasted work.
134
+ const proxyServices = job.proxyServices;
135
+ if (proxyServices && proxyServices.length > 0) {
86
136
  const inst = instances.get(job.serviceName);
87
137
  if (inst) {
88
- for (const descriptor of job.proxyServices) {
89
- inst[descriptor.propertyKey] = buildProxy(descriptor);
138
+ for (let i = 0; i < proxyServices.length; i++) {
139
+ const d = proxyServices[i];
140
+ const key = job.serviceName + ':' + d.propertyKey;
141
+ if (!proxiesInstalled.has(key)) {
142
+ inst[d.propertyKey] = buildProxy(d);
143
+ proxiesInstalled.add(key);
144
+ }
90
145
  }
91
146
  }
92
147
  }
93
- // Restore ALS context and run the task inside it
94
- const alsContext = job.alsContext ?? {};
95
- const run = async () => {
96
- const inst = instances.get(job.serviceName);
97
- if (!inst)
98
- throw new Error(`Service "${job.serviceName}" is not registered`);
99
- const fn = inst[job.methodName];
100
- if (typeof fn !== 'function') {
101
- throw new Error(`Task "${job.serviceName}.${job.methodName}" is not registered`);
102
- }
103
- // Inject AbortSignal as a last argument if the job has an abortSignalId.
104
- // Call via inst.method() — not as a detached fn() — so `this` is preserved.
105
- const args = job.abortSignalId
106
- ? [...job.args, abortController.signal]
107
- : job.args;
108
- return inst[job.methodName](...args);
148
+ const jobId = job.jobId;
149
+ const inst = instances.get(job.serviceName);
150
+ if (!inst) {
151
+ postError(jobId, new Error(`Service "${job.serviceName}" is not registered`));
152
+ return;
153
+ }
154
+ const fn = inst[job.methodName];
155
+ if (typeof fn !== 'function') {
156
+ postError(jobId, new Error(`Task "${job.serviceName}.${job.methodName}" is not registered`));
157
+ return;
158
+ }
159
+ const abortSignalId = job.abortSignalId;
160
+ let abortController;
161
+ let args = job.args;
162
+ if (abortSignalId !== undefined) {
163
+ abortController = new AbortController();
164
+ pendingAborts.set(abortSignalId, abortController);
165
+ args = [...job.args, abortController.signal];
166
+ }
167
+ const finish = () => {
168
+ if (abortSignalId !== undefined)
169
+ pendingAborts.delete(abortSignalId);
109
170
  };
171
+ const exec = () => inst[job.methodName](...args);
110
172
  try {
111
- // Run the task inside the ALS context so any nested ALS.getStore() calls
112
- // inside the task body see the propagated main-thread context.
113
- const data = await workerAls.run(alsContext, run);
114
- node_worker_threads_1.parentPort?.postMessage({ ok: true, data });
173
+ const alsContext = job.alsContext;
174
+ const result = alsContext !== undefined
175
+ ? workerAls.run(alsContext, exec)
176
+ : exec();
177
+ // Sync fast path: avoid Promise allocation + microtask roundtrip when
178
+ // the task returned a plain value.
179
+ if (result === null ||
180
+ typeof result !== 'object' ||
181
+ typeof result.then !== 'function') {
182
+ finish();
183
+ postResult({ type: 'result', ok: true, data: result, jobId });
184
+ return;
185
+ }
186
+ result.then((data) => {
187
+ finish();
188
+ postResult({ type: 'result', ok: true, data, jobId });
189
+ }, (error) => {
190
+ finish();
191
+ postError(jobId, error);
192
+ });
115
193
  }
116
194
  catch (error) {
117
- const e = error;
118
- const serialized = {
119
- name: e.name ?? 'Error',
120
- message: e.message,
121
- stack: e.stack,
122
- code: e.code,
123
- // Capture any extra own enumerable properties (e.g. HttpException.status)
124
- extra: serializeExtraProps(e),
125
- };
126
- node_worker_threads_1.parentPort?.postMessage({ ok: false, error: serialized });
127
- }
128
- finally {
129
- if (job.abortSignalId) {
130
- pendingAborts.delete(job.abortSignalId);
131
- }
132
- busy = false;
133
- runNext();
195
+ finish();
196
+ postError(jobId, error);
134
197
  }
135
198
  }
199
+ function postError(jobId, error) {
200
+ const e = error;
201
+ const serialized = {
202
+ name: e?.name ?? 'Error',
203
+ message: e?.message ?? String(error),
204
+ stack: e?.stack,
205
+ code: e?.code,
206
+ extra: serializeExtraProps(e),
207
+ };
208
+ postResult({ type: 'result', ok: false, error: serialized, jobId });
209
+ }
136
210
  function serializeExtraProps(err) {
137
- const skip = new Set(['name', 'message', 'stack', 'code']);
211
+ if (!err || typeof err !== 'object')
212
+ return undefined;
213
+ const skip = SKIP_ERR_KEYS;
138
214
  const extra = {};
139
215
  let hasExtra = false;
140
216
  for (const key of Object.keys(err)) {
@@ -145,8 +221,10 @@ function serializeExtraProps(err) {
145
221
  extra[key] = err[key];
146
222
  hasExtra = true;
147
223
  }
148
- catch { /* skip non-cloneable */ }
224
+ catch { /* skip non-cloneable */
225
+ }
149
226
  }
150
227
  return hasExtra ? extra : undefined;
151
228
  }
229
+ const SKIP_ERR_KEYS = new Set(['name', 'message', 'stack', 'code']);
152
230
  //# sourceMappingURL=worker-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../src/worker/worker-runtime.ts"],"names":[],"mappings":";;;;;AAAA,6DAA6D;AAC7D,uDAAqD;AACrD,8DAAiC;AACjC,6DAAyD;AAYzD,MAAM,QAAQ,GAAwB,gCAAU,EAAE,QAAQ,IAAI,EAAE,CAAC;AACjE,MAAM,SAAS,GAAG,IAAI,kCAAe,EAAE,CAAC;AACxC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAIzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;AACrD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAkB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,gCAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAElD,6EAA6E;AAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;AAEJ,4EAA4E;AAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEzD,4EAA4E;AAC5E,4EAA4E;AAC5E,uEAAuE;AACvE,iDAAiD;AACjD,MAAM,SAAS,GAAG,IAAI,oCAAiB,EAA2B,CAAC;AAEnE,gCAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;IACzC,MAAM,OAAO,GAAG,GAA2B,CAAC;IAE5C,8BAA8B;IAC9B,IAAK,OAA6B,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACzD,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,IAAK,OAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,OAA6B,CAAC;QAC5C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,aAAa;IACb,KAAK,CAAC,IAAI,CAAC,OAAoB,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,UAAkC;IACpD,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,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,qBAAM,CAAC,UAAU,EAAE,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAqB;gBAChC,IAAI,EAAE,YAAY,EAAE,MAAM;gBAC1B,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,UAAU,EAAE,IAAI;aACjB,CAAC;YACF,IAAI,CAAC;gBACH,gCAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,CACd,cAAc,UAAU,CAAC,WAAW,IAAI,UAAU,8BAA8B;oBAChF,GAAI,GAAa,CAAC,OAAO,EAAE,CAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,KAAK,GAAgB,EAAE,CAAC;AAC9B,IAAI,IAAI,GAAG,KAAK,CAAC;AAEjB,KAAK,UAAU,OAAO;IACpB,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACvC,IAAI,GAAG,IAAI,CAAC;IACZ,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;IAE3B,sCAAsC;IACtC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACxD,CAAC;IAED,qBAAqB;IACrB,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAA+C,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,WAAW,qBAAqB,CAAC,CAAC;QAE7E,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,qBAAqB,CAAC,CAAC;QACnF,CAAC;QAED,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa;YAC5B,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClD,gCAAU,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAAmE,CAAC;QAC9E,MAAM,UAAU,GAAoB;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO;YACvB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,0EAA0E;YAC1E,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;SAC9B,CAAC;QACF,gCAAU,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,GAAG,KAAK,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAoC;IAEpC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,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,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../src/worker/worker-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "nestworker",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
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",
@@ -13,6 +21,7 @@
13
21
  "build": "tsc -p tsconfig.build.json",
14
22
  "build:watch": "tsc -p tsconfig.build.json --watch",
15
23
  "example": "npm run build && node dist/example/main.js",
24
+ "bench": "npm run build && node dist/example/bench.js",
16
25
  "prepublishOnly": "npm run build"
17
26
  },
18
27
  "keywords": [