synckit 0.10.0 → 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+)](#node-default-node-23)
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+)
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, 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, 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,14 +172,36 @@ 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
 
170
201
  You can try it with running `yarn benchmark` by yourself. [Here](./benchmarks/benchmark.js) is the benchmark source code.
171
202
 
203
+ [![Sponsors](https://raw.githubusercontent.com/1stG/static/master/sponsors.svg)](https://github.com/sponsors/JounQin)
204
+
172
205
  ## Sponsors
173
206
 
174
207
  | 1stG | RxTS | UnTS |
@@ -177,12 +210,24 @@ You can try it with running `yarn benchmark` by yourself. [Here](./benchmarks/be
177
210
 
178
211
  ## Backers
179
212
 
180
- [![Backers](https://raw.githubusercontent.com/1stG/static/master/sponsors.svg)](https://github.com/sponsors/JounQin)
181
-
182
213
  | 1stG | RxTS | UnTS |
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,22 +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 STRIP_TYPES_DEFAULT_NODE_VERSION = 23;
85
- const STRIP_TYPES_SUPPORTED_NODE_VERSION = 22;
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";
87
90
  const STRIP_TYPES_FLAG = "--experimental-strip-types";
91
+ const TRANSFORM_TYPES_FLAG = "--experimental-transform-types";
88
92
  const NO_STRIP_TYPES_FLAG = "--no-experimental-strip-types";
89
- const IS_TYPE_STRIPPING_ENABLED = NODE_VERSION >= STRIP_TYPES_DEFAULT_NODE_VERSION && !((NODE_OPTIONS == null ? void 0 : NODE_OPTIONS.includes(NO_STRIP_TYPES_FLAG)) || process.argv.includes(NO_STRIP_TYPES_FLAG)) || NODE_VERSION >= STRIP_TYPES_SUPPORTED_NODE_VERSION && ((NODE_OPTIONS == null ? void 0 : NODE_OPTIONS.includes(STRIP_TYPES_FLAG)) || process.argv.includes(STRIP_TYPES_FLAG));
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
+ );
90
117
  const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : void 0;
91
- const DEFAULT_EXEC_ARGV = (SYNCKIT_EXEC_ARGV == null ? void 0 : SYNCKIT_EXEC_ARGV.split(",")) || [];
118
+ const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(",");
92
119
  const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
93
120
  const DEFAULT_GLOBAL_SHIMS = ["1", "true"].includes(
94
121
  SYNCKIT_GLOBAL_SHIMS
@@ -116,6 +143,9 @@ function extractProperties(object) {
116
143
  }
117
144
  function createSyncFn(workerPath, timeoutOrOptions) {
118
145
  syncFnCache != null ? syncFnCache : syncFnCache = /* @__PURE__ */ new Map();
146
+ if (typeof workerPath !== "string" || workerPath.startsWith("file://")) {
147
+ workerPath = node_url.fileURLToPath(workerPath);
148
+ }
119
149
  const cachedSyncFn = syncFnCache.get(workerPath);
120
150
  if (cachedSyncFn) {
121
151
  return cachedSyncFn;
@@ -131,10 +161,6 @@ function createSyncFn(workerPath, timeoutOrOptions) {
131
161
  syncFnCache.set(workerPath, syncFn);
132
162
  return syncFn;
133
163
  }
134
- const cjsRequire = typeof require === "undefined" ? module$1.createRequire(import_meta.url) : (
135
- /* istanbul ignore next */
136
- require
137
- );
138
164
  const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
139
165
  const isFile = (path2) => {
140
166
  var _a;
@@ -146,7 +172,7 @@ const isFile = (path2) => {
146
172
  };
147
173
  const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
148
174
  let ext = path.extname(workerPath);
149
- if (!/[/\\]node_modules[/\\]/.test(workerPath) && (!ext || /^\.[cm]?js$/.test(ext))) {
175
+ if (!/([/\\])node_modules\1/.test(workerPath) && (!ext || /^\.[cm]?js$/.test(ext))) {
150
176
  const workPathWithoutExt = ext ? workerPath.slice(0, -ext.length) : workerPath;
151
177
  let extensions;
152
178
  switch (ext) {
@@ -179,24 +205,51 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
179
205
  if (!tsUseEsm) {
180
206
  const pkg = core.findUp(workerPath);
181
207
  if (pkg) {
182
- tsUseEsm = cjsRequire(pkg).type === "module";
208
+ tsUseEsm = core.cjsRequire(pkg).type === "module";
183
209
  }
184
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;
185
216
  if (tsRunner == null) {
186
- if (IS_TYPE_STRIPPING_ENABLED) {
217
+ if (process.versions.bun) {
218
+ tsRunner = TsRunner.Bun;
219
+ } else if (!noStripTypes && // >=
220
+ compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0) {
187
221
  tsRunner = TsRunner.Node;
188
222
  } else if (core.isPkgAvailable(TsRunner.TsNode)) {
189
223
  tsRunner = TsRunner.TsNode;
190
224
  }
191
225
  }
192
226
  switch (tsRunner) {
227
+ case TsRunner.Bun: {
228
+ break;
229
+ }
193
230
  case TsRunner.Node: {
194
- if (NODE_VERSION < STRIP_TYPES_SUPPORTED_NODE_VERSION) {
231
+ if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) {
195
232
  throw new Error(
196
233
  "type stripping is not supported in this node version"
197
234
  );
198
235
  }
199
- execArgv = NODE_VERSION >= STRIP_TYPES_DEFAULT_NODE_VERSION ? execArgv.filter((arg) => arg !== NO_STRIP_TYPES_FLAG) : [STRIP_TYPES_FLAG, ...execArgv];
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,12 +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.STRIP_TYPES_DEFAULT_NODE_VERSION = STRIP_TYPES_DEFAULT_NODE_VERSION;
491
- exports.STRIP_TYPES_SUPPORTED_NODE_VERSION = STRIP_TYPES_SUPPORTED_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;
492
581
  exports.TsRunner = TsRunner;
493
582
  exports._generateGlobals = _generateGlobals;
583
+ exports.compareVersion = compareVersion;
494
584
  exports.createSyncFn = createSyncFn;
495
585
  exports.encodeImportModule = encodeImportModule;
496
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,10 +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 STRIP_TYPES_DEFAULT_NODE_VERSION = 23;
16
- export declare const STRIP_TYPES_SUPPORTED_NODE_VERSION = 22;
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;
17
25
  export declare const DEFAULT_TIMEOUT: number | undefined;
18
26
  export declare const DEFAULT_EXEC_ARGV: string[];
19
27
  export declare const DEFAULT_TS_RUNNER: TsRunner | undefined;
@@ -28,8 +36,8 @@ export interface SynckitOptions {
28
36
  }
29
37
  export declare function extractProperties<T extends object>(object: T): T;
30
38
  export declare function extractProperties<T>(object?: T): T | undefined;
31
- 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>;
32
40
  export declare const isFile: (path: string) => boolean;
33
41
  export declare const encodeImportModule: (moduleNameOrGlobalShim: GlobalShim | string, type?: "import" | "require") => string;
34
42
  export declare const generateGlobals: (workerPath: string, globalShims: GlobalShim[], type?: "import" | "require") => string;
35
- 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
@@ -4,34 +4,56 @@ import fs from 'node:fs';
4
4
  import module from 'node:module';
5
5
  import path from 'node:path';
6
6
  import { fileURLToPath, pathToFileURL } from 'node:url';
7
- import { MessageChannel, MessagePort, Worker, parentPort, receiveMessageOnPort, workerData, } from 'node:worker_threads';
8
- import { findUp, isPkgAvailable, tryExtensions } from '@pkgr/core';
7
+ import { MessageChannel, Worker, parentPort, receiveMessageOnPort, workerData, } from 'node:worker_threads';
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 STRIP_TYPES_DEFAULT_NODE_VERSION = 23;
23
- export const STRIP_TYPES_SUPPORTED_NODE_VERSION = 22;
24
- const NODE_VERSION = Number.parseFloat(process.versions.node);
25
- const STRIP_TYPES_FLAG = '--experimental-strip-types';
26
- const NO_STRIP_TYPES_FLAG = '--no-experimental-strip-types';
27
- const IS_TYPE_STRIPPING_ENABLED = (NODE_VERSION >= STRIP_TYPES_DEFAULT_NODE_VERSION &&
28
- !((NODE_OPTIONS === null || NODE_OPTIONS === void 0 ? void 0 : NODE_OPTIONS.includes(NO_STRIP_TYPES_FLAG)) ||
29
- process.argv.includes(NO_STRIP_TYPES_FLAG))) ||
30
- (NODE_VERSION >= STRIP_TYPES_SUPPORTED_NODE_VERSION &&
31
- ((NODE_OPTIONS === null || NODE_OPTIONS === void 0 ? void 0 : NODE_OPTIONS.includes(STRIP_TYPES_FLAG)) ||
32
- process.argv.includes(STRIP_TYPES_FLAG)));
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);
33
55
  export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined;
34
- 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(',');
35
57
  export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
36
58
  export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes(SYNCKIT_GLOBAL_SHIMS);
37
59
  export const DEFAULT_GLOBAL_SHIMS_PRESET = [
@@ -57,6 +79,9 @@ export function extractProperties(object) {
57
79
  }
58
80
  export function createSyncFn(workerPath, timeoutOrOptions) {
59
81
  syncFnCache !== null && syncFnCache !== void 0 ? syncFnCache : (syncFnCache = new Map());
82
+ if (typeof workerPath !== 'string' || workerPath.startsWith('file://')) {
83
+ workerPath = fileURLToPath(workerPath);
84
+ }
60
85
  const cachedSyncFn = syncFnCache.get(workerPath);
61
86
  if (cachedSyncFn) {
62
87
  return cachedSyncFn;
@@ -70,9 +95,6 @@ export function createSyncFn(workerPath, timeoutOrOptions) {
70
95
  syncFnCache.set(workerPath, syncFn);
71
96
  return syncFn;
72
97
  }
73
- const cjsRequire = typeof require === 'undefined'
74
- ? module.createRequire(import.meta.url)
75
- : require;
76
98
  const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
77
99
  export const isFile = (path) => {
78
100
  var _a;
@@ -85,7 +107,7 @@ export const isFile = (path) => {
85
107
  };
86
108
  const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
87
109
  let ext = path.extname(workerPath);
88
- if (!/[/\\]node_modules[/\\]/.test(workerPath) &&
110
+ if (!/([/\\])node_modules\1/.test(workerPath) &&
89
111
  (!ext || /^\.[cm]?js$/.test(ext))) {
90
112
  const workPathWithoutExt = ext
91
113
  ? workerPath.slice(0, -ext.length)
@@ -121,13 +143,22 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
121
143
  if (!tsUseEsm) {
122
144
  const pkg = findUp(workerPath);
123
145
  if (pkg) {
124
- tsUseEsm =
125
- cjsRequire(pkg).type ===
126
- 'module';
146
+ tsUseEsm = cjsRequire(pkg).type === 'module';
127
147
  }
128
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);
129
156
  if (tsRunner == null) {
130
- if (IS_TYPE_STRIPPING_ENABLED) {
157
+ if (process.versions.bun) {
158
+ tsRunner = TsRunner.Bun;
159
+ }
160
+ else if (!noStripTypes &&
161
+ compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0) {
131
162
  tsRunner = TsRunner.Node;
132
163
  }
133
164
  else if (isPkgAvailable(TsRunner.TsNode)) {
@@ -135,14 +166,27 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
135
166
  }
136
167
  }
137
168
  switch (tsRunner) {
169
+ case TsRunner.Bun: {
170
+ break;
171
+ }
138
172
  case TsRunner.Node: {
139
- if (NODE_VERSION < STRIP_TYPES_SUPPORTED_NODE_VERSION) {
173
+ if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) {
140
174
  throw new Error('type stripping is not supported in this node version');
141
175
  }
142
- execArgv =
143
- NODE_VERSION >= STRIP_TYPES_DEFAULT_NODE_VERSION
144
- ? execArgv.filter(arg => arg !== NO_STRIP_TYPES_FLAG)
145
- : [STRIP_TYPES_FLAG, ...execArgv];
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
+ }
146
190
  break;
147
191
  }
148
192
  case TsRunner.TsNode: {
@@ -188,27 +232,25 @@ const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
188
232
  else if (!jsUseEsm) {
189
233
  const pkg = findUp(workerPath);
190
234
  if (pkg) {
191
- jsUseEsm =
192
- cjsRequire(pkg).type === 'module';
235
+ jsUseEsm = cjsRequire(pkg).type === 'module';
193
236
  }
194
237
  }
195
238
  let resolvedPnpLoaderPath;
196
239
  if (process.versions.pnp) {
197
- const nodeOptions = NODE_OPTIONS === null || NODE_OPTIONS === void 0 ? void 0 : NODE_OPTIONS.split(/\s+/);
198
240
  let pnpApiPath;
199
241
  try {
200
242
  pnpApiPath = cjsRequire.resolve('pnpapi');
201
243
  }
202
244
  catch (_a) { }
203
245
  if (pnpApiPath &&
204
- !(nodeOptions === null || nodeOptions === void 0 ? void 0 : nodeOptions.some((option, index) => ['-r', '--require'].includes(option) &&
205
- pnpApiPath === cjsRequire.resolve(nodeOptions[index + 1]))) &&
246
+ !NODE_OPTIONS.some((option, index) => ['-r', '--require'].includes(option) &&
247
+ pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1])) &&
206
248
  !execArgv.includes(pnpApiPath)) {
207
249
  execArgv = ['-r', pnpApiPath, ...execArgv];
208
250
  const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs');
209
251
  if (isFile(pnpLoaderPath)) {
210
252
  resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).toString();
211
- if (NODE_VERSION < LOADER_SUPPORTED_NODE_VERSION) {
253
+ if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) {
212
254
  execArgv = [
213
255
  '--experimental-loader',
214
256
  resolvedPnpLoaderPath,
@@ -268,6 +310,9 @@ const _dirname = typeof __dirname === 'undefined'
268
310
  let sharedBuffer;
269
311
  let sharedBufferView;
270
312
  export const generateGlobals = (workerPath, globalShims, type = 'import') => {
313
+ if (globalShims.length === 0) {
314
+ return '';
315
+ }
271
316
  globalsCache !== null && globalsCache !== void 0 ? globalsCache : (globalsCache = new Map());
272
317
  const cached = globalsCache.get(workerPath);
273
318
  if (cached) {
@@ -297,7 +342,8 @@ function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = D
297
342
  const { isTs, ext, jsUseEsm, tsUseEsm, tsRunner: finalTsRunner, workerPath: finalWorkerPath, pnpLoaderPath, execArgv: finalExecArgv, } = setupTsRunner(workerPath, { execArgv, tsRunner });
298
343
  const workerPathUrl = pathToFileURL(finalWorkerPath);
299
344
  if (/\.[cm]ts$/.test(finalWorkerPath)) {
300
- const isTsxSupported = !tsUseEsm || NODE_VERSION >= MTS_SUPPORTED_NODE_VERSION;
345
+ const isTsxSupported = !tsUseEsm ||
346
+ compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0;
301
347
  if (!finalTsRunner) {
302
348
  throw new Error('No ts runner specified, ts worker path is not supported');
303
349
  }
@@ -358,7 +404,10 @@ function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = D
358
404
  const id = nextID++;
359
405
  const msg = { id, args };
360
406
  worker.postMessage(msg);
361
- 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
+ }
362
411
  if (error) {
363
412
  throw Object.assign(error, properties);
364
413
  }
@@ -371,8 +420,22 @@ export function runAsWorker(fn) {
371
420
  if (!workerData) {
372
421
  return;
373
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
+ }
374
436
  const { workerPort, sharedBuffer, pnpLoaderPath } = workerData;
375
- if (pnpLoaderPath && NODE_VERSION >= LOADER_SUPPORTED_NODE_VERSION) {
437
+ if (pnpLoaderPath &&
438
+ compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) >= 0) {
376
439
  module.register(pnpLoaderPath);
377
440
  }
378
441
  const sharedBufferView = new Int32Array(sharedBuffer, 0, 1);
@@ -388,18 +451,24 @@ export function runAsWorker(fn) {
388
451
  workerPort.on('message', handleAbortMessage);
389
452
  let msg;
390
453
  try {
391
- msg = { id, result: yield fn(...args) };
454
+ msg = { id, stdio, result: yield fn(...args) };
392
455
  }
393
456
  catch (error) {
394
- msg = { id, error, properties: extractProperties(error) };
457
+ msg = { id, stdio, error, properties: extractProperties(error) };
395
458
  }
396
459
  workerPort.off('message', handleAbortMessage);
397
460
  if (isAborted) {
461
+ stdio.length = 0;
398
462
  return;
399
463
  }
400
- workerPort.postMessage(msg);
401
- Atomics.add(sharedBufferView, 0, 1);
402
- 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
+ }
403
472
  }))();
404
473
  });
405
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
- import { MessagePort } from 'node:worker_threads';
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/lib/types.js CHANGED
@@ -1,2 +1,2 @@
1
- import { MessagePort } from 'node:worker_threads';
1
+ export {};
2
2
  //# sourceMappingURL=types.js.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synckit",
3
- "version": "0.10.0",
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
  }