synckit 0.10.1 → 0.10.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/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
12
12
  [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
13
13
 
14
- Perform async work synchronously in Node.js using `worker_threads` with first-class TypeScript and Yarn P'n'P support.
14
+ Perform async work synchronously in Node.js/Bun using `worker_threads` with first-class TypeScript and Yarn P'n'P support.
15
15
 
16
16
  ## TOC <!-- omit in toc -->
17
17
 
@@ -22,7 +22,8 @@ Perform async work synchronously in Node.js using `worker_threads` with first-cl
22
22
  - [Options](#options)
23
23
  - [Envs](#envs)
24
24
  - [TypeScript](#typescript)
25
- - [`node` (Default, Node 23.6+)](#node-default-node-236)
25
+ - [`node` (Default, Node 22.6+)](#node-default-node-226)
26
+ - [`bun` (Default, Bun)](#bun-default-bun)
26
27
  - [`ts-node` (Default)](#ts-node-default)
27
28
  - [`esbuild-register`](#esbuild-register)
28
29
  - [`esbuild-runner`](#esbuild-runner)
@@ -31,6 +32,8 @@ Perform async work synchronously in Node.js using `worker_threads` with first-cl
31
32
  - [Benchmark](#benchmark)
32
33
  - [Sponsors](#sponsors)
33
34
  - [Backers](#backers)
35
+ - [Who are using `synckit`](#who-are-using-synckit)
36
+ - [Acknowledgements](#acknowledgements)
34
37
  - [Changelog](#changelog)
35
38
  - [License](#license)
36
39
 
@@ -127,17 +130,25 @@ export interface GlobalShim {
127
130
 
128
131
  ### TypeScript
129
132
 
130
- #### `node` (Default, Node 23.6+)
133
+ #### `node` (Default, Node 22.6+)
131
134
 
132
- On recent Node versions, you may select this runner to execute your worker file (a `.ts` file) in the native runtime.
135
+ On recent `Node` versions, you may select this runner to execute your worker file (a `.ts` file) in the native runtime.
133
136
 
134
- As of Node v23.6, this feature is supported out of the box. To enable it in the current LTS, you can pass the [`--experimental-strip-types`](https://nodejs.org/docs/latest-v22.x/api/typescript.html#type-stripping) flag to the process. Visit the [documentation](https://nodejs.org/docs/latest/api/typescript.html#type-stripping) to learn more.
137
+ As of `Node` v23.6, this feature is supported out of the box. For `Node` `>=22.6 <23.6`, this feature is supported via `--experimental-strip-types` flag. Visit the [documentation](https://nodejs.org/docs/latest/api/typescript.html#type-stripping) to learn more.
135
138
 
136
- When `synckit` detects the process to be running with this flag, it will execute the worker file with the `node` runner by default.
139
+ When `synckit` detects the process to be running with supported `Node` versions (>=22.6), it will execute the worker file with the `node` runner by default, you can disable this behavior by setting `--no-experimental-strip-types` flag via `NODE_OPTIONS` env or cli arg.
140
+
141
+ #### `bun` (Default, Bun)
142
+
143
+ [`Bun`](https://bun.sh/docs/typescript) supports `TypeScript` natively.
144
+
145
+ When `synckit` detects the process to be running with `Bun`, it will execute the worker file with the `bun` runner by default.
146
+
147
+ In this case, `synckit` doesn't do anything to the worker itself, it just passes through the worker directly.
137
148
 
138
149
  #### `ts-node` (Default)
139
150
 
140
- Prior to Node v23.6, you may want to use `ts-node` to execute your worker file (a `.ts` file).
151
+ Prior to Node v22.6, you may want to use `ts-node` to execute your worker file (a `.ts` file).
141
152
 
142
153
  If you want to use a custom tsconfig as project instead of default `tsconfig.json`, use `TS_NODE_PROJECT` env. Please view [ts-node](https://github.com/TypeStrong/ts-node#tsconfig) for more details.
143
154
 
@@ -161,9 +172,29 @@ Please view [`tsx`][] for its document
161
172
 
162
173
  ## Benchmark
163
174
 
164
- It is about 50x faster than [`sync-threads`](https://github.com/lambci/sync-threads) but 10x slower than native for reading the file content itself 1000 times during runtime, and 40x faster than `sync-threads` but 10x slower than native for total time on my personal MacBook Pro with 64G M1 Max.
175
+ The following are the benchmark results of `synckit` against other libraries with Node.js v20.19.0 on my personal MacBook Pro with 64G M1 Max:
165
176
 
166
- And it's almost 5x faster than [`deasync`](https://github.com/abbr/deasync) but requires no native bindings or `node-gyp`.
177
+ ```sh
178
+ # cjs
179
+ ┌───────────┬────────────┬──────────────┬───────────────────┬─────────────┬────────────────┬───────────────────┬────────────────────────┬───────────┬─────────────────┐
180
+ │ (index) │ synckit │ sync-threads │ perf sync-threads │ deasync │ perf deasync │ make-synchronized │ perf make-synchronized │ native │ perf native │
181
+ ├───────────┼────────────┼──────────────┼───────────────────┼─────────────┼────────────────┼───────────────────┼────────────────────────┼───────────┼─────────────────┤
182
+ │ loadTime │ '17.26ms' │ '1.49ms' │ '11.57x slower' │ '146.55ms' │ '8.49x faster' │ '1025.77ms' │ '59.42x faster' │ '0.29ms' │ '59.71x slower' │
183
+ │ runTime │ '143.12ms' │ '3689.15ms' │ '25.78x faster' │ '1221.11ms' │ '8.53x faster' │ '2842.50ms' │ '19.86x faster' │ '12.64ms' │ '11.33x slower' │
184
+ │ totalTime │ '160.38ms' │ '3690.64ms' │ '23.01x faster' │ '1367.66ms' │ '8.53x faster' │ '3868.27ms' │ '24.12x faster' │ '12.93ms' │ '12.41x slower' │
185
+ └───────────┴────────────┴──────────────┴───────────────────┴─────────────┴────────────────┴───────────────────┴────────────────────────┴───────────┴─────────────────┘
186
+ ```
187
+
188
+ ```sh
189
+ # esm
190
+ ┌───────────┬────────────┬──────────────┬───────────────────┬─────────────┬────────────────┬───────────────────┬────────────────────────┬───────────┬─────────────────┐
191
+ │ (index) │ synckit │ sync-threads │ perf sync-threads │ deasync │ perf deasync │ make-synchronized │ perf make-synchronized │ native │ perf native │
192
+ ├───────────┼────────────┼──────────────┼───────────────────┼─────────────┼────────────────┼───────────────────┼────────────────────────┼───────────┼─────────────────┤
193
+ │ loadTime │ '23.88ms' │ '2.03ms' │ '11.75x slower' │ '70.95ms' │ '2.97x faster' │ '400.24ms' │ '16.76x faster' │ '0.44ms' │ '54.70x slower' │
194
+ │ runTime │ '139.56ms' │ '3570.12ms' │ '25.58x faster' │ '1150.99ms' │ '8.25x faster' │ '3484.04ms' │ '24.96x faster' │ '12.98ms' │ '10.75x slower' │
195
+ │ totalTime │ '163.44ms' │ '3572.15ms' │ '21.86x faster' │ '1221.93ms' │ '7.48x faster' │ '3884.28ms' │ '23.77x faster' │ '13.42ms' │ '12.18x slower' │
196
+ └───────────┴────────────┴──────────────┴───────────────────┴─────────────┴────────────────┴───────────────────┴────────────────────────┴───────────┴─────────────────┘
197
+ ```
167
198
 
168
199
  See [benchmark.cjs](./benchmarks/benchmark.cjs.txt) and [benchmark.esm](./benchmarks/benchmark.esm.txt) for more details.
169
200
 
@@ -183,6 +214,20 @@ You can try it with running `yarn benchmark` by yourself. [Here](./benchmarks/be
183
214
  | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
184
215
  | [![1stG Open Collective backers and sponsors](https://opencollective.com/1stG/individuals.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers and sponsors](https://opencollective.com/rxts/individuals.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers and sponsors](https://opencollective.com/unts/individuals.svg)](https://opencollective.com/unts) |
185
216
 
217
+ ## Who are using `synckit`
218
+
219
+ - [`@cspell/eslint-plugin`](https://github.com/streetsidesoftware/cspell/blob/ec04bcee0c90ff4e2a9fb5ef4421714796fb58ba/packages/cspell-eslint-plugin/package.json#L80)
220
+ - [`astrojs-compiler-sync`](https://github.com/ota-meshi/astrojs-compiler-sync/blob/da4e86fd601755e40599d7f5121bc83d08255c42/package.json#L52)
221
+ - [`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier/blob/ca5eb3ec11c4ae511e1da22736c73b253210b73b/package.json#L67)
222
+ - [`eslint-plugin-prettier-vue`](https://github.com/meteorlxy/eslint-plugin-prettier-vue/blob/d3f6722303d66a2b223df2f750982e33c1143d5d/package.json#L40)
223
+ - [`eslint-mdx`](https://github.com/mdx-js/eslint-mdx/blob/4623359cc9784d3e38bd917ed001c5d7d826f990/packages/eslint-mdx/package.json#L40)
224
+ - [`prettier-plugin-packagejson`](https://github.com/matzkoh/prettier-plugin-packagejson/blob/eb7ade2a048d6d163cf8ef37e098ee273f72c585/package.json#L31)
225
+ - [`jest-snapshot`](https://github.com/jestjs/jest/blob/4e7d916ec6a16de5548273c17b5d2c5761b0aebb/packages/jest-snapshot/package.json#L42)
226
+
227
+ ## Acknowledgements
228
+
229
+ This package is original inspired by [`esbuild`](https://github.com/evanw/esbuild) and [`sync-threads`](https://github.com/lambci/sync-threads).
230
+
186
231
  ## Changelog
187
232
 
188
233
  Detailed changes for each release are documented in [CHANGELOG.md](./CHANGELOG.md).
package/index.d.cts ADDED
@@ -0,0 +1,3 @@
1
+ import * as synckit from './lib/index.js'
2
+
3
+ export = synckit
package/lib/index.cjs CHANGED
@@ -61,6 +61,8 @@ const INT32_BYTES = 4;
61
61
  const TsRunner = {
62
62
  // https://nodejs.org/docs/latest/api/typescript.html#type-stripping
63
63
  Node: "node",
64
+ // https://bun.sh/docs/typescript
65
+ Bun: "bun",
64
66
  // https://github.com/TypeStrong/ts-node
65
67
  TsNode: "ts-node",
66
68
  // https://github.com/egoist/esbuild-register
@@ -73,19 +75,47 @@ const TsRunner = {
73
75
  TSX: "tsx"
74
76
  };
75
77
  const {
76
- NODE_OPTIONS,
77
- SYNCKIT_EXEC_ARGV,
78
+ NODE_OPTIONS: NODE_OPTIONS_ = "",
79
+ SYNCKIT_EXEC_ARGV = "",
78
80
  SYNCKIT_GLOBAL_SHIMS,
79
81
  SYNCKIT_TIMEOUT,
80
82
  SYNCKIT_TS_RUNNER
81
83
  } = process.env;
82
- const MTS_SUPPORTED_NODE_VERSION = 16;
83
- const LOADER_SUPPORTED_NODE_VERSION = 20;
84
- const TYPESCRIPT_DEFAULT_NODE_VERSION = 23.6;
85
- const NODE_TYPESCRIPT = process.features.typescript;
86
- const NODE_VERSION = Number.parseFloat(process.versions.node);
84
+ const MTS_SUPPORTED_NODE_VERSION = "16";
85
+ const LOADER_SUPPORTED_NODE_VERSION = "20";
86
+ const STRIP_TYPES_NODE_VERSION = "22.6";
87
+ const TRANSFORM_TYPES_NODE_VERSION = "22.7";
88
+ const FEATURE_TYPESCRIPT_NODE_VERSION = "22.10";
89
+ const DEFAULT_TYPES_NODE_VERSION = "23.6";
90
+ const STRIP_TYPES_FLAG = "--experimental-strip-types";
91
+ const TRANSFORM_TYPES_FLAG = "--experimental-transform-types";
92
+ const NO_STRIP_TYPES_FLAG = "--no-experimental-strip-types";
93
+ const NODE_OPTIONS = NODE_OPTIONS_.split(/\s+/);
94
+ const hasFlag = (flag) => NODE_OPTIONS.includes(flag) || process.argv.includes(flag);
95
+ const parseVersion = (version) => version.split(".").map(Number.parseFloat);
96
+ const compareVersion = (version1, version2) => {
97
+ const versions1 = parseVersion(version1);
98
+ const versions2 = parseVersion(version2);
99
+ const length = Math.max(versions1.length, versions2.length);
100
+ for (let i = 0; i < length; i++) {
101
+ const v1 = versions1[i] || 0;
102
+ const v2 = versions2[i] || 0;
103
+ if (v1 > v2) {
104
+ return 1;
105
+ }
106
+ if (v1 < v2) {
107
+ return -1;
108
+ }
109
+ }
110
+ return 0;
111
+ };
112
+ const NODE_VERSION = process.versions.node;
113
+ const NO_STRIP_TYPES = (
114
+ // >=
115
+ compareVersion(NODE_VERSION, FEATURE_TYPESCRIPT_NODE_VERSION) >= 0 ? process.features.typescript === false : hasFlag(NO_STRIP_TYPES_FLAG) && !hasFlag(STRIP_TYPES_FLAG) && !hasFlag(TRANSFORM_TYPES_FLAG)
116
+ );
87
117
  const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : void 0;
88
- const DEFAULT_EXEC_ARGV = (SYNCKIT_EXEC_ARGV == null ? void 0 : SYNCKIT_EXEC_ARGV.split(",")) || [];
118
+ const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(",");
89
119
  const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
90
120
  const DEFAULT_GLOBAL_SHIMS = ["1", "true"].includes(
91
121
  SYNCKIT_GLOBAL_SHIMS
@@ -113,6 +143,9 @@ function extractProperties(object) {
113
143
  }
114
144
  function createSyncFn(workerPath, timeoutOrOptions) {
115
145
  syncFnCache != null ? syncFnCache : syncFnCache = /* @__PURE__ */ new Map();
146
+ if (typeof workerPath !== "string" || workerPath.startsWith("file://")) {
147
+ workerPath = node_url.fileURLToPath(workerPath);
148
+ }
116
149
  const cachedSyncFn = syncFnCache.get(workerPath);
117
150
  if (cachedSyncFn) {
118
151
  return cachedSyncFn;
@@ -128,10 +161,6 @@ function createSyncFn(workerPath, timeoutOrOptions) {
128
161
  syncFnCache.set(workerPath, syncFn);
129
162
  return syncFn;
130
163
  }
131
- const cjsRequire = typeof require === "undefined" ? module$1.createRequire(import_meta.url) : (
132
- /* istanbul ignore next */
133
- require
134
- );
135
164
  const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
136
165
  const isFile = (path2) => {
137
166
  var _a;
@@ -143,7 +172,7 @@ const isFile = (path2) => {
143
172
  };
144
173
  const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
145
174
  let ext = path.extname(workerPath);
146
- if (!/[/\\]node_modules[/\\]/.test(workerPath) && (!ext || /^\.[cm]?js$/.test(ext))) {
175
+ if (!/([/\\])node_modules\1/.test(workerPath) && (!ext || /^\.[cm]?js$/.test(ext))) {
147
176
  const workPathWithoutExt = ext ? workerPath.slice(0, -ext.length) : workerPath;
148
177
  let extensions;
149
178
  switch (ext) {
@@ -176,27 +205,51 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
176
205
  if (!tsUseEsm) {
177
206
  const pkg = core.findUp(workerPath);
178
207
  if (pkg) {
179
- tsUseEsm = cjsRequire(pkg).type === "module";
208
+ tsUseEsm = core.cjsRequire(pkg).type === "module";
180
209
  }
181
210
  }
211
+ const stripTypesIndex = execArgv.indexOf(STRIP_TYPES_FLAG);
212
+ const transformTypesIndex = execArgv.indexOf(TRANSFORM_TYPES_FLAG);
213
+ const noStripTypesIndex = execArgv.indexOf(NO_STRIP_TYPES_FLAG);
214
+ const execArgvNoStripTypes = noStripTypesIndex > stripTypesIndex || noStripTypesIndex > transformTypesIndex;
215
+ const noStripTypes = execArgvNoStripTypes || stripTypesIndex === -1 && transformTypesIndex === -1 && NO_STRIP_TYPES;
182
216
  if (tsRunner == null) {
183
- if (NODE_TYPESCRIPT) {
217
+ if (process.versions.bun) {
218
+ tsRunner = TsRunner.Bun;
219
+ } else if (!noStripTypes && // >=
220
+ compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0) {
184
221
  tsRunner = TsRunner.Node;
185
222
  } else if (core.isPkgAvailable(TsRunner.TsNode)) {
186
223
  tsRunner = TsRunner.TsNode;
187
224
  }
188
225
  }
189
226
  switch (tsRunner) {
227
+ case TsRunner.Bun: {
228
+ break;
229
+ }
190
230
  case TsRunner.Node: {
191
- if (!NODE_TYPESCRIPT) {
231
+ if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) {
192
232
  throw new Error(
193
233
  "type stripping is not supported in this node version"
194
234
  );
195
235
  }
196
- execArgv = [
197
- "--experimental-transform-types",
198
- ...NODE_VERSION >= TYPESCRIPT_DEFAULT_NODE_VERSION ? execArgv.filter((arg) => arg !== "--no-experimental-strip-types") : execArgv
199
- ];
236
+ if (noStripTypes) {
237
+ throw new Error("type stripping is disabled explicitly");
238
+ }
239
+ if (compareVersion(NODE_VERSION, DEFAULT_TYPES_NODE_VERSION) >= 0) {
240
+ break;
241
+ }
242
+ if (
243
+ // >=
244
+ compareVersion(NODE_VERSION, TRANSFORM_TYPES_NODE_VERSION) >= 0 && !execArgv.includes(TRANSFORM_TYPES_FLAG)
245
+ ) {
246
+ execArgv = [TRANSFORM_TYPES_FLAG, ...execArgv];
247
+ } else if (
248
+ // >=
249
+ compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 && !execArgv.includes(STRIP_TYPES_FLAG)
250
+ ) {
251
+ execArgv = [STRIP_TYPES_FLAG, ...execArgv];
252
+ }
200
253
  break;
201
254
  }
202
255
  case TsRunner.TsNode: {
@@ -240,25 +293,24 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
240
293
  } else if (!jsUseEsm) {
241
294
  const pkg = core.findUp(workerPath);
242
295
  if (pkg) {
243
- jsUseEsm = cjsRequire(pkg).type === "module";
296
+ jsUseEsm = core.cjsRequire(pkg).type === "module";
244
297
  }
245
298
  }
246
299
  let resolvedPnpLoaderPath;
247
300
  if (process.versions.pnp) {
248
- const nodeOptions = NODE_OPTIONS == null ? void 0 : NODE_OPTIONS.split(/\s+/);
249
301
  let pnpApiPath;
250
302
  try {
251
- pnpApiPath = cjsRequire.resolve("pnpapi");
303
+ pnpApiPath = core.cjsRequire.resolve("pnpapi");
252
304
  } catch (e) {
253
305
  }
254
- if (pnpApiPath && !(nodeOptions == null ? void 0 : nodeOptions.some(
255
- (option, index) => ["-r", "--require"].includes(option) && pnpApiPath === cjsRequire.resolve(nodeOptions[index + 1])
256
- )) && !execArgv.includes(pnpApiPath)) {
306
+ if (pnpApiPath && !NODE_OPTIONS.some(
307
+ (option, index) => ["-r", "--require"].includes(option) && pnpApiPath === core.cjsRequire.resolve(NODE_OPTIONS[index + 1])
308
+ ) && !execArgv.includes(pnpApiPath)) {
257
309
  execArgv = ["-r", pnpApiPath, ...execArgv];
258
310
  const pnpLoaderPath = path.resolve(pnpApiPath, "../.pnp.loader.mjs");
259
311
  if (isFile(pnpLoaderPath)) {
260
312
  resolvedPnpLoaderPath = node_url.pathToFileURL(pnpLoaderPath).toString();
261
- if (NODE_VERSION < LOADER_SUPPORTED_NODE_VERSION) {
313
+ if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) {
262
314
  execArgv = [
263
315
  "--experimental-loader",
264
316
  resolvedPnpLoaderPath,
@@ -305,6 +357,9 @@ const _dirname = typeof __dirname === "undefined" ? path.dirname(node_url.fileUR
305
357
  let sharedBuffer;
306
358
  let sharedBufferView;
307
359
  const generateGlobals = (workerPath, globalShims, type = "import") => {
360
+ if (globalShims.length === 0) {
361
+ return "";
362
+ }
308
363
  globalsCache != null ? globalsCache : globalsCache = /* @__PURE__ */ new Map();
309
364
  const cached = globalsCache.get(workerPath);
310
365
  if (cached) {
@@ -348,7 +403,8 @@ function startWorkerThread(workerPath, {
348
403
  } = setupTsRunner(workerPath, { execArgv, tsRunner });
349
404
  const workerPathUrl = node_url.pathToFileURL(finalWorkerPath);
350
405
  if (/\.[cm]ts$/.test(finalWorkerPath)) {
351
- const isTsxSupported = !tsUseEsm || NODE_VERSION >= MTS_SUPPORTED_NODE_VERSION;
406
+ const isTsxSupported = !tsUseEsm || // >=
407
+ compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0;
352
408
  if (!finalTsRunner) {
353
409
  throw new Error("No ts runner specified, ts worker path is not supported");
354
410
  } else if ([
@@ -429,11 +485,14 @@ function startWorkerThread(workerPath, {
429
485
  const id = nextID++;
430
486
  const msg = { id, args };
431
487
  worker.postMessage(msg);
432
- const { result, error, properties } = receiveMessageWithId(
488
+ const { result, error, properties, stdio } = receiveMessageWithId(
433
489
  mainPort,
434
490
  id,
435
491
  timeout
436
492
  );
493
+ for (const { type, chunk, encoding } of stdio) {
494
+ process[type].write(chunk, encoding);
495
+ }
437
496
  if (error) {
438
497
  throw Object.assign(error, properties);
439
498
  }
@@ -446,8 +505,27 @@ function runAsWorker(fn) {
446
505
  if (!node_worker_threads.workerData) {
447
506
  return;
448
507
  }
508
+ const stdio = [];
509
+ for (const type of ["stdout", "stderr"]) {
510
+ process[type]._writev = (chunks, callback) => {
511
+ for (const {
512
+ // type-coverage:ignore-next-line -- we can't control
513
+ chunk,
514
+ encoding
515
+ } of chunks) {
516
+ stdio.push({
517
+ type,
518
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- we can't control
519
+ chunk,
520
+ encoding
521
+ });
522
+ }
523
+ callback();
524
+ };
525
+ }
449
526
  const { workerPort, sharedBuffer: sharedBuffer2, pnpLoaderPath } = node_worker_threads.workerData;
450
- if (pnpLoaderPath && NODE_VERSION >= LOADER_SUPPORTED_NODE_VERSION) {
527
+ if (pnpLoaderPath && // >=
528
+ compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) >= 0) {
451
529
  module$1.register(pnpLoaderPath);
452
530
  }
453
531
  const sharedBufferView2 = new Int32Array(sharedBuffer2, 0, 1);
@@ -464,17 +542,22 @@ function runAsWorker(fn) {
464
542
  workerPort.on("message", handleAbortMessage);
465
543
  let msg;
466
544
  try {
467
- msg = { id, result: yield fn(...args) };
545
+ msg = { id, stdio, result: yield fn(...args) };
468
546
  } catch (error) {
469
- msg = { id, error, properties: extractProperties(error) };
547
+ msg = { id, stdio, error, properties: extractProperties(error) };
470
548
  }
471
549
  workerPort.off("message", handleAbortMessage);
472
550
  if (isAborted) {
551
+ stdio.length = 0;
473
552
  return;
474
553
  }
475
- workerPort.postMessage(msg);
476
- Atomics.add(sharedBufferView2, 0, 1);
477
- Atomics.notify(sharedBufferView2, 0);
554
+ try {
555
+ workerPort.postMessage(msg);
556
+ Atomics.add(sharedBufferView2, 0, 1);
557
+ Atomics.notify(sharedBufferView2, 0);
558
+ } finally {
559
+ stdio.length = 0;
560
+ }
478
561
  }))();
479
562
  }
480
563
  );
@@ -485,11 +568,19 @@ exports.DEFAULT_GLOBAL_SHIMS = DEFAULT_GLOBAL_SHIMS;
485
568
  exports.DEFAULT_GLOBAL_SHIMS_PRESET = DEFAULT_GLOBAL_SHIMS_PRESET;
486
569
  exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
487
570
  exports.DEFAULT_TS_RUNNER = DEFAULT_TS_RUNNER;
571
+ exports.DEFAULT_TYPES_NODE_VERSION = DEFAULT_TYPES_NODE_VERSION;
572
+ exports.FEATURE_TYPESCRIPT_NODE_VERSION = FEATURE_TYPESCRIPT_NODE_VERSION;
488
573
  exports.LOADER_SUPPORTED_NODE_VERSION = LOADER_SUPPORTED_NODE_VERSION;
489
574
  exports.MTS_SUPPORTED_NODE_VERSION = MTS_SUPPORTED_NODE_VERSION;
490
- exports.TYPESCRIPT_DEFAULT_NODE_VERSION = TYPESCRIPT_DEFAULT_NODE_VERSION;
575
+ exports.NODE_VERSION = NODE_VERSION;
576
+ exports.NO_STRIP_TYPES_FLAG = NO_STRIP_TYPES_FLAG;
577
+ exports.STRIP_TYPES_FLAG = STRIP_TYPES_FLAG;
578
+ exports.STRIP_TYPES_NODE_VERSION = STRIP_TYPES_NODE_VERSION;
579
+ exports.TRANSFORM_TYPES_FLAG = TRANSFORM_TYPES_FLAG;
580
+ exports.TRANSFORM_TYPES_NODE_VERSION = TRANSFORM_TYPES_NODE_VERSION;
491
581
  exports.TsRunner = TsRunner;
492
582
  exports._generateGlobals = _generateGlobals;
583
+ exports.compareVersion = compareVersion;
493
584
  exports.createSyncFn = createSyncFn;
494
585
  exports.encodeImportModule = encodeImportModule;
495
586
  exports.extractProperties = extractProperties;
package/lib/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { type TransferListItem } from 'node:worker_threads';
2
- import type { AnyAsyncFn, GlobalShim, Syncify, ValueOf } from './types.js';
2
+ import type { AnyFn, GlobalShim, Syncify, ValueOf } from './types.js';
3
3
  export * from './types.js';
4
4
  export declare const TsRunner: {
5
5
  readonly Node: "node";
6
+ readonly Bun: "bun";
6
7
  readonly TsNode: "ts-node";
7
8
  readonly EsbuildRegister: "esbuild-register";
8
9
  readonly EsbuildRunner: "esbuild-runner";
@@ -10,9 +11,17 @@ export declare const TsRunner: {
10
11
  readonly TSX: "tsx";
11
12
  };
12
13
  export type TsRunner = ValueOf<typeof TsRunner>;
13
- export declare const MTS_SUPPORTED_NODE_VERSION = 16;
14
- export declare const LOADER_SUPPORTED_NODE_VERSION = 20;
15
- export declare const TYPESCRIPT_DEFAULT_NODE_VERSION = 23.6;
14
+ export declare const MTS_SUPPORTED_NODE_VERSION = "16";
15
+ export declare const LOADER_SUPPORTED_NODE_VERSION = "20";
16
+ export declare const STRIP_TYPES_NODE_VERSION = "22.6";
17
+ export declare const TRANSFORM_TYPES_NODE_VERSION = "22.7";
18
+ export declare const FEATURE_TYPESCRIPT_NODE_VERSION = "22.10";
19
+ export declare const DEFAULT_TYPES_NODE_VERSION = "23.6";
20
+ export declare const STRIP_TYPES_FLAG = "--experimental-strip-types";
21
+ export declare const TRANSFORM_TYPES_FLAG = "--experimental-transform-types";
22
+ export declare const NO_STRIP_TYPES_FLAG = "--no-experimental-strip-types";
23
+ export declare const compareVersion: (version1: string, version2: string) => 1 | -1 | 0;
24
+ export declare const NODE_VERSION: string;
16
25
  export declare const DEFAULT_TIMEOUT: number | undefined;
17
26
  export declare const DEFAULT_EXEC_ARGV: string[];
18
27
  export declare const DEFAULT_TS_RUNNER: TsRunner | undefined;
@@ -27,8 +36,8 @@ export interface SynckitOptions {
27
36
  }
28
37
  export declare function extractProperties<T extends object>(object: T): T;
29
38
  export declare function extractProperties<T>(object?: T): T | undefined;
30
- export declare function createSyncFn<T extends AnyAsyncFn<R>, R = unknown>(workerPath: string, timeoutOrOptions?: SynckitOptions | number): Syncify<T>;
39
+ export declare function createSyncFn<T extends AnyFn>(workerPath: URL | string, timeoutOrOptions?: SynckitOptions | number): Syncify<T>;
31
40
  export declare const isFile: (path: string) => boolean;
32
41
  export declare const encodeImportModule: (moduleNameOrGlobalShim: GlobalShim | string, type?: "import" | "require") => string;
33
42
  export declare const generateGlobals: (workerPath: string, globalShims: GlobalShim[], type?: "import" | "require") => string;
34
- export declare function runAsWorker<R = unknown, T extends AnyAsyncFn<R> = AnyAsyncFn<R>>(fn: T): void;
43
+ export declare function runAsWorker<T extends AnyFn<Promise<R> | R>, R = ReturnType<T>>(fn: T): void;
package/lib/index.js CHANGED
@@ -5,25 +5,55 @@ import module from 'node:module';
5
5
  import path from 'node:path';
6
6
  import { fileURLToPath, pathToFileURL } from 'node:url';
7
7
  import { MessageChannel, Worker, parentPort, receiveMessageOnPort, workerData, } from 'node:worker_threads';
8
- import { findUp, isPkgAvailable, tryExtensions } from '@pkgr/core';
8
+ import { cjsRequire, findUp, isPkgAvailable, tryExtensions } from '@pkgr/core';
9
9
  const INT32_BYTES = 4;
10
10
  export * from './types.js';
11
11
  export const TsRunner = {
12
12
  Node: 'node',
13
+ Bun: 'bun',
13
14
  TsNode: 'ts-node',
14
15
  EsbuildRegister: 'esbuild-register',
15
16
  EsbuildRunner: 'esbuild-runner',
16
17
  SWC: 'swc',
17
18
  TSX: 'tsx',
18
19
  };
19
- const { NODE_OPTIONS, SYNCKIT_EXEC_ARGV, SYNCKIT_GLOBAL_SHIMS, SYNCKIT_TIMEOUT, SYNCKIT_TS_RUNNER, } = process.env;
20
- export const MTS_SUPPORTED_NODE_VERSION = 16;
21
- export const LOADER_SUPPORTED_NODE_VERSION = 20;
22
- export const TYPESCRIPT_DEFAULT_NODE_VERSION = 23.6;
23
- const NODE_TYPESCRIPT = process.features.typescript;
24
- const NODE_VERSION = Number.parseFloat(process.versions.node);
20
+ const { NODE_OPTIONS: NODE_OPTIONS_ = '', SYNCKIT_EXEC_ARGV = '', SYNCKIT_GLOBAL_SHIMS, SYNCKIT_TIMEOUT, SYNCKIT_TS_RUNNER, } = process.env;
21
+ export const MTS_SUPPORTED_NODE_VERSION = '16';
22
+ export const LOADER_SUPPORTED_NODE_VERSION = '20';
23
+ export const STRIP_TYPES_NODE_VERSION = '22.6';
24
+ export const TRANSFORM_TYPES_NODE_VERSION = '22.7';
25
+ export const FEATURE_TYPESCRIPT_NODE_VERSION = '22.10';
26
+ export const DEFAULT_TYPES_NODE_VERSION = '23.6';
27
+ export const STRIP_TYPES_FLAG = '--experimental-strip-types';
28
+ export const TRANSFORM_TYPES_FLAG = '--experimental-transform-types';
29
+ export const NO_STRIP_TYPES_FLAG = '--no-experimental-strip-types';
30
+ const NODE_OPTIONS = NODE_OPTIONS_.split(/\s+/);
31
+ const hasFlag = (flag) => NODE_OPTIONS.includes(flag) || process.argv.includes(flag);
32
+ const parseVersion = (version) => version.split('.').map(Number.parseFloat);
33
+ export const compareVersion = (version1, version2) => {
34
+ const versions1 = parseVersion(version1);
35
+ const versions2 = parseVersion(version2);
36
+ const length = Math.max(versions1.length, versions2.length);
37
+ for (let i = 0; i < length; i++) {
38
+ const v1 = versions1[i] || 0;
39
+ const v2 = versions2[i] || 0;
40
+ if (v1 > v2) {
41
+ return 1;
42
+ }
43
+ if (v1 < v2) {
44
+ return -1;
45
+ }
46
+ }
47
+ return 0;
48
+ };
49
+ export const NODE_VERSION = process.versions.node;
50
+ const NO_STRIP_TYPES = compareVersion(NODE_VERSION, FEATURE_TYPESCRIPT_NODE_VERSION) >= 0
51
+ ? process.features.typescript === false
52
+ : hasFlag(NO_STRIP_TYPES_FLAG) &&
53
+ !hasFlag(STRIP_TYPES_FLAG) &&
54
+ !hasFlag(TRANSFORM_TYPES_FLAG);
25
55
  export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined;
26
- export const DEFAULT_EXEC_ARGV = (SYNCKIT_EXEC_ARGV === null || SYNCKIT_EXEC_ARGV === void 0 ? void 0 : SYNCKIT_EXEC_ARGV.split(',')) || [];
56
+ export const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(',');
27
57
  export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
28
58
  export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes(SYNCKIT_GLOBAL_SHIMS);
29
59
  export const DEFAULT_GLOBAL_SHIMS_PRESET = [
@@ -49,6 +79,9 @@ export function extractProperties(object) {
49
79
  }
50
80
  export function createSyncFn(workerPath, timeoutOrOptions) {
51
81
  syncFnCache !== null && syncFnCache !== void 0 ? syncFnCache : (syncFnCache = new Map());
82
+ if (typeof workerPath !== 'string' || workerPath.startsWith('file://')) {
83
+ workerPath = fileURLToPath(workerPath);
84
+ }
52
85
  const cachedSyncFn = syncFnCache.get(workerPath);
53
86
  if (cachedSyncFn) {
54
87
  return cachedSyncFn;
@@ -62,9 +95,6 @@ export function createSyncFn(workerPath, timeoutOrOptions) {
62
95
  syncFnCache.set(workerPath, syncFn);
63
96
  return syncFn;
64
97
  }
65
- const cjsRequire = typeof require === 'undefined'
66
- ? module.createRequire(import.meta.url)
67
- : require;
68
98
  const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
69
99
  export const isFile = (path) => {
70
100
  var _a;
@@ -77,7 +107,7 @@ export const isFile = (path) => {
77
107
  };
78
108
  const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
79
109
  let ext = path.extname(workerPath);
80
- if (!/[/\\]node_modules[/\\]/.test(workerPath) &&
110
+ if (!/([/\\])node_modules\1/.test(workerPath) &&
81
111
  (!ext || /^\.[cm]?js$/.test(ext))) {
82
112
  const workPathWithoutExt = ext
83
113
  ? workerPath.slice(0, -ext.length)
@@ -113,13 +143,22 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
113
143
  if (!tsUseEsm) {
114
144
  const pkg = findUp(workerPath);
115
145
  if (pkg) {
116
- tsUseEsm =
117
- cjsRequire(pkg).type ===
118
- 'module';
146
+ tsUseEsm = cjsRequire(pkg).type === 'module';
119
147
  }
120
148
  }
149
+ const stripTypesIndex = execArgv.indexOf(STRIP_TYPES_FLAG);
150
+ const transformTypesIndex = execArgv.indexOf(TRANSFORM_TYPES_FLAG);
151
+ const noStripTypesIndex = execArgv.indexOf(NO_STRIP_TYPES_FLAG);
152
+ const execArgvNoStripTypes = noStripTypesIndex > stripTypesIndex ||
153
+ noStripTypesIndex > transformTypesIndex;
154
+ const noStripTypes = execArgvNoStripTypes ||
155
+ (stripTypesIndex === -1 && transformTypesIndex === -1 && NO_STRIP_TYPES);
121
156
  if (tsRunner == null) {
122
- if (NODE_TYPESCRIPT) {
157
+ if (process.versions.bun) {
158
+ tsRunner = TsRunner.Bun;
159
+ }
160
+ else if (!noStripTypes &&
161
+ compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0) {
123
162
  tsRunner = TsRunner.Node;
124
163
  }
125
164
  else if (isPkgAvailable(TsRunner.TsNode)) {
@@ -127,16 +166,27 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
127
166
  }
128
167
  }
129
168
  switch (tsRunner) {
169
+ case TsRunner.Bun: {
170
+ break;
171
+ }
130
172
  case TsRunner.Node: {
131
- if (!NODE_TYPESCRIPT) {
173
+ if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) {
132
174
  throw new Error('type stripping is not supported in this node version');
133
175
  }
134
- execArgv = [
135
- '--experimental-transform-types',
136
- ...(NODE_VERSION >= TYPESCRIPT_DEFAULT_NODE_VERSION
137
- ? execArgv.filter(arg => arg !== '--no-experimental-strip-types')
138
- : execArgv),
139
- ];
176
+ if (noStripTypes) {
177
+ throw new Error('type stripping is disabled explicitly');
178
+ }
179
+ if (compareVersion(NODE_VERSION, DEFAULT_TYPES_NODE_VERSION) >= 0) {
180
+ break;
181
+ }
182
+ if (compareVersion(NODE_VERSION, TRANSFORM_TYPES_NODE_VERSION) >= 0 &&
183
+ !execArgv.includes(TRANSFORM_TYPES_FLAG)) {
184
+ execArgv = [TRANSFORM_TYPES_FLAG, ...execArgv];
185
+ }
186
+ else if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 &&
187
+ !execArgv.includes(STRIP_TYPES_FLAG)) {
188
+ execArgv = [STRIP_TYPES_FLAG, ...execArgv];
189
+ }
140
190
  break;
141
191
  }
142
192
  case TsRunner.TsNode: {
@@ -182,27 +232,25 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
182
232
  else if (!jsUseEsm) {
183
233
  const pkg = findUp(workerPath);
184
234
  if (pkg) {
185
- jsUseEsm =
186
- cjsRequire(pkg).type === 'module';
235
+ jsUseEsm = cjsRequire(pkg).type === 'module';
187
236
  }
188
237
  }
189
238
  let resolvedPnpLoaderPath;
190
239
  if (process.versions.pnp) {
191
- const nodeOptions = NODE_OPTIONS === null || NODE_OPTIONS === void 0 ? void 0 : NODE_OPTIONS.split(/\s+/);
192
240
  let pnpApiPath;
193
241
  try {
194
242
  pnpApiPath = cjsRequire.resolve('pnpapi');
195
243
  }
196
244
  catch (_a) { }
197
245
  if (pnpApiPath &&
198
- !(nodeOptions === null || nodeOptions === void 0 ? void 0 : nodeOptions.some((option, index) => ['-r', '--require'].includes(option) &&
199
- pnpApiPath === cjsRequire.resolve(nodeOptions[index + 1]))) &&
246
+ !NODE_OPTIONS.some((option, index) => ['-r', '--require'].includes(option) &&
247
+ pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1])) &&
200
248
  !execArgv.includes(pnpApiPath)) {
201
249
  execArgv = ['-r', pnpApiPath, ...execArgv];
202
250
  const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs');
203
251
  if (isFile(pnpLoaderPath)) {
204
252
  resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).toString();
205
- if (NODE_VERSION < LOADER_SUPPORTED_NODE_VERSION) {
253
+ if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) {
206
254
  execArgv = [
207
255
  '--experimental-loader',
208
256
  resolvedPnpLoaderPath,
@@ -262,6 +310,9 @@ const _dirname = typeof __dirname === 'undefined'
262
310
  let sharedBuffer;
263
311
  let sharedBufferView;
264
312
  export const generateGlobals = (workerPath, globalShims, type = 'import') => {
313
+ if (globalShims.length === 0) {
314
+ return '';
315
+ }
265
316
  globalsCache !== null && globalsCache !== void 0 ? globalsCache : (globalsCache = new Map());
266
317
  const cached = globalsCache.get(workerPath);
267
318
  if (cached) {
@@ -291,7 +342,8 @@ function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = D
291
342
  const { isTs, ext, jsUseEsm, tsUseEsm, tsRunner: finalTsRunner, workerPath: finalWorkerPath, pnpLoaderPath, execArgv: finalExecArgv, } = setupTsRunner(workerPath, { execArgv, tsRunner });
292
343
  const workerPathUrl = pathToFileURL(finalWorkerPath);
293
344
  if (/\.[cm]ts$/.test(finalWorkerPath)) {
294
- const isTsxSupported = !tsUseEsm || NODE_VERSION >= MTS_SUPPORTED_NODE_VERSION;
345
+ const isTsxSupported = !tsUseEsm ||
346
+ compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0;
295
347
  if (!finalTsRunner) {
296
348
  throw new Error('No ts runner specified, ts worker path is not supported');
297
349
  }
@@ -352,7 +404,10 @@ function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = D
352
404
  const id = nextID++;
353
405
  const msg = { id, args };
354
406
  worker.postMessage(msg);
355
- const { result, error, properties } = receiveMessageWithId(mainPort, id, timeout);
407
+ const { result, error, properties, stdio } = receiveMessageWithId(mainPort, id, timeout);
408
+ for (const { type, chunk, encoding } of stdio) {
409
+ process[type].write(chunk, encoding);
410
+ }
356
411
  if (error) {
357
412
  throw Object.assign(error, properties);
358
413
  }
@@ -365,8 +420,22 @@ export function runAsWorker(fn) {
365
420
  if (!workerData) {
366
421
  return;
367
422
  }
423
+ const stdio = [];
424
+ for (const type of ['stdout', 'stderr']) {
425
+ process[type]._writev = (chunks, callback) => {
426
+ for (const { chunk, encoding, } of chunks) {
427
+ stdio.push({
428
+ type,
429
+ chunk,
430
+ encoding,
431
+ });
432
+ }
433
+ callback();
434
+ };
435
+ }
368
436
  const { workerPort, sharedBuffer, pnpLoaderPath } = workerData;
369
- if (pnpLoaderPath && NODE_VERSION >= LOADER_SUPPORTED_NODE_VERSION) {
437
+ if (pnpLoaderPath &&
438
+ compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) >= 0) {
370
439
  module.register(pnpLoaderPath);
371
440
  }
372
441
  const sharedBufferView = new Int32Array(sharedBuffer, 0, 1);
@@ -382,18 +451,24 @@ export function runAsWorker(fn) {
382
451
  workerPort.on('message', handleAbortMessage);
383
452
  let msg;
384
453
  try {
385
- msg = { id, result: yield fn(...args) };
454
+ msg = { id, stdio, result: yield fn(...args) };
386
455
  }
387
456
  catch (error) {
388
- msg = { id, error, properties: extractProperties(error) };
457
+ msg = { id, stdio, error, properties: extractProperties(error) };
389
458
  }
390
459
  workerPort.off('message', handleAbortMessage);
391
460
  if (isAborted) {
461
+ stdio.length = 0;
392
462
  return;
393
463
  }
394
- workerPort.postMessage(msg);
395
- Atomics.add(sharedBufferView, 0, 1);
396
- Atomics.notify(sharedBufferView, 0);
464
+ try {
465
+ workerPort.postMessage(msg);
466
+ Atomics.add(sharedBufferView, 0, 1);
467
+ Atomics.notify(sharedBufferView, 0);
468
+ }
469
+ finally {
470
+ stdio.length = 0;
471
+ }
397
472
  }))();
398
473
  });
399
474
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,9 +1,6 @@
1
1
  import type { MessagePort } from 'node:worker_threads';
2
2
  export type AnyFn<R = any, T extends any[] = any[]> = (...args: T) => R;
3
- export type AnyPromise<T = any> = Promise<T>;
4
- export type AnyAsyncFn<T = any> = AnyFn<Promise<T>>;
5
- export type Syncify<T extends AnyAsyncFn> = T extends (...args: infer Args) => Promise<infer R> ? (...args: Args) => R : never;
6
- export type PromiseType<T extends AnyPromise> = T extends Promise<infer R> ? R : never;
3
+ export type Syncify<T extends AnyFn> = (...args: Parameters<T>) => Awaited<ReturnType<T>>;
7
4
  export type ValueOf<T> = T[keyof T];
8
5
  export interface MainToWorkerMessage<T extends unknown[]> {
9
6
  id: number;
@@ -23,8 +20,14 @@ export interface DataMessage<T> {
23
20
  error?: unknown;
24
21
  properties?: unknown;
25
22
  }
26
- export interface WorkerToMainMessage<T = unknown> extends DataMessage<T> {
23
+ export interface StdioChunk {
24
+ type: 'stderr' | 'stdout';
25
+ chunk: Uint8Array | string;
26
+ encoding: BufferEncoding;
27
+ }
28
+ export interface WorkerToMainMessage<T> extends DataMessage<T> {
27
29
  id: number;
30
+ stdio: StdioChunk[];
28
31
  }
29
32
  export interface GlobalShim {
30
33
  moduleName: string;
@@ -32,3 +35,6 @@ export interface GlobalShim {
32
35
  named?: string | null;
33
36
  conditional?: boolean;
34
37
  }
38
+ export interface PackageJson {
39
+ type?: 'commonjs' | 'module';
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synckit",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "type": "module",
5
5
  "description": "Perform async work synchronously in Node.js using `worker_threads` with first-class TypeScript support.",
6
6
  "repository": "git+https://github.com/un-ts/synckit.git",
@@ -13,12 +13,18 @@
13
13
  "main": "./lib/index.cjs",
14
14
  "module": "./lib/index.js",
15
15
  "exports": {
16
- "types": "./lib/index.d.ts",
17
- "import": "./lib/index.js",
18
- "require": "./lib/index.cjs"
16
+ "import": {
17
+ "types": "./lib/index.d.ts",
18
+ "default": "./lib/index.js"
19
+ },
20
+ "require": {
21
+ "types": "./index.d.cts",
22
+ "default": "./lib/index.cjs"
23
+ }
19
24
  },
20
25
  "types": "./lib/index.d.ts",
21
26
  "files": [
27
+ "index.d.cts",
22
28
  "lib",
23
29
  "!**/*.tsbuildinfo"
24
30
  ],
@@ -34,7 +40,7 @@
34
40
  "synckit"
35
41
  ],
36
42
  "dependencies": {
37
- "@pkgr/core": "^0.1.1",
43
+ "@pkgr/core": "^0.2.0",
38
44
  "tslib": "^2.8.1"
39
45
  }
40
46
  }