synckit 0.10.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,82 +1,15 @@
1
- import { __awaiter, __rest } from "tslib";
2
- import { createHash } from 'node:crypto';
3
- import fs from 'node:fs';
1
+ import { __awaiter } from "tslib";
4
2
  import module from 'node:module';
5
3
  import path from 'node:path';
6
- import { fileURLToPath, pathToFileURL } from 'node:url';
7
- import { MessageChannel, Worker, parentPort, receiveMessageOnPort, workerData, } from 'node:worker_threads';
8
- import { cjsRequire, findUp, isPkgAvailable, tryExtensions } from '@pkgr/core';
9
- const INT32_BYTES = 4;
4
+ import { fileURLToPath } from 'node:url';
5
+ import { parentPort, workerData, } from 'node:worker_threads';
6
+ import { MODULE_REGISTER_SUPPORTED } from './constants.js';
7
+ import { extractProperties, overrideStdio, startWorkerThread, } from './helpers.js';
8
+ export * from './common.js';
9
+ export * from './constants.js';
10
+ export * from './helpers.js';
10
11
  export * from './types.js';
11
- export const TsRunner = {
12
- Node: 'node',
13
- Bun: 'bun',
14
- TsNode: 'ts-node',
15
- EsbuildRegister: 'esbuild-register',
16
- EsbuildRunner: 'esbuild-runner',
17
- SWC: 'swc',
18
- TSX: 'tsx',
19
- };
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);
55
- export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined;
56
- export const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(',');
57
- export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER;
58
- export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes(SYNCKIT_GLOBAL_SHIMS);
59
- export const DEFAULT_GLOBAL_SHIMS_PRESET = [
60
- {
61
- moduleName: 'node-fetch',
62
- globalName: 'fetch',
63
- },
64
- {
65
- moduleName: 'node:perf_hooks',
66
- globalName: 'performance',
67
- named: 'performance',
68
- },
69
- ];
70
12
  let syncFnCache;
71
- export function extractProperties(object) {
72
- if (object && typeof object === 'object') {
73
- const properties = {};
74
- for (const key in object) {
75
- properties[key] = object[key];
76
- }
77
- return properties;
78
- }
79
- }
80
13
  export function createSyncFn(workerPath, timeoutOrOptions) {
81
14
  syncFnCache !== null && syncFnCache !== void 0 ? syncFnCache : (syncFnCache = new Map());
82
15
  if (typeof workerPath !== 'string' || workerPath.startsWith('file://')) {
@@ -95,347 +28,14 @@ export function createSyncFn(workerPath, timeoutOrOptions) {
95
28
  syncFnCache.set(workerPath, syncFn);
96
29
  return syncFn;
97
30
  }
98
- const dataUrl = (code) => new URL(`data:text/javascript,${encodeURIComponent(code)}`);
99
- export const isFile = (path) => {
100
- var _a;
101
- try {
102
- return !!((_a = fs.statSync(path, { throwIfNoEntry: false })) === null || _a === void 0 ? void 0 : _a.isFile());
103
- }
104
- catch (_b) {
105
- return false;
106
- }
107
- };
108
- const setupTsRunner = (workerPath, { execArgv, tsRunner }) => {
109
- let ext = path.extname(workerPath);
110
- if (!/([/\\])node_modules\1/.test(workerPath) &&
111
- (!ext || /^\.[cm]?js$/.test(ext))) {
112
- const workPathWithoutExt = ext
113
- ? workerPath.slice(0, -ext.length)
114
- : workerPath;
115
- let extensions;
116
- switch (ext) {
117
- case '.cjs': {
118
- extensions = ['.cts', '.cjs'];
119
- break;
120
- }
121
- case '.mjs': {
122
- extensions = ['.mts', '.mjs'];
123
- break;
124
- }
125
- default: {
126
- extensions = ['.ts', '.js'];
127
- break;
128
- }
129
- }
130
- const found = tryExtensions(workPathWithoutExt, extensions);
131
- let differentExt;
132
- if (found && (!ext || (differentExt = found !== workPathWithoutExt))) {
133
- workerPath = found;
134
- if (differentExt) {
135
- ext = path.extname(workerPath);
136
- }
137
- }
138
- }
139
- const isTs = /\.[cm]?ts$/.test(workerPath);
140
- let jsUseEsm = workerPath.endsWith('.mjs');
141
- let tsUseEsm = workerPath.endsWith('.mts');
142
- if (isTs) {
143
- if (!tsUseEsm) {
144
- const pkg = findUp(workerPath);
145
- if (pkg) {
146
- tsUseEsm = cjsRequire(pkg).type === 'module';
147
- }
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);
156
- if (tsRunner == null) {
157
- if (process.versions.bun) {
158
- tsRunner = TsRunner.Bun;
159
- }
160
- else if (!noStripTypes &&
161
- compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0) {
162
- tsRunner = TsRunner.Node;
163
- }
164
- else if (isPkgAvailable(TsRunner.TsNode)) {
165
- tsRunner = TsRunner.TsNode;
166
- }
167
- }
168
- switch (tsRunner) {
169
- case TsRunner.Bun: {
170
- break;
171
- }
172
- case TsRunner.Node: {
173
- if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) {
174
- throw new Error('type stripping is not supported in this node version');
175
- }
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
- }
190
- break;
191
- }
192
- case TsRunner.TsNode: {
193
- if (tsUseEsm) {
194
- if (!execArgv.includes('--loader')) {
195
- execArgv = ['--loader', `${TsRunner.TsNode}/esm`, ...execArgv];
196
- }
197
- }
198
- else if (!execArgv.includes('-r')) {
199
- execArgv = ['-r', `${TsRunner.TsNode}/register`, ...execArgv];
200
- }
201
- break;
202
- }
203
- case TsRunner.EsbuildRegister: {
204
- if (!execArgv.includes('-r')) {
205
- execArgv = ['-r', TsRunner.EsbuildRegister, ...execArgv];
206
- }
207
- break;
208
- }
209
- case TsRunner.EsbuildRunner: {
210
- if (!execArgv.includes('-r')) {
211
- execArgv = ['-r', `${TsRunner.EsbuildRunner}/register`, ...execArgv];
212
- }
213
- break;
214
- }
215
- case TsRunner.SWC: {
216
- if (!execArgv.includes('-r')) {
217
- execArgv = ['-r', `@${TsRunner.SWC}-node/register`, ...execArgv];
218
- }
219
- break;
220
- }
221
- case TsRunner.TSX: {
222
- if (!execArgv.includes('--loader')) {
223
- execArgv = ['--loader', TsRunner.TSX, ...execArgv];
224
- }
225
- break;
226
- }
227
- default: {
228
- throw new Error(`Unknown ts runner: ${String(tsRunner)}`);
229
- }
230
- }
231
- }
232
- else if (!jsUseEsm) {
233
- const pkg = findUp(workerPath);
234
- if (pkg) {
235
- jsUseEsm = cjsRequire(pkg).type === 'module';
236
- }
237
- }
238
- let resolvedPnpLoaderPath;
239
- if (process.versions.pnp) {
240
- let pnpApiPath;
241
- try {
242
- pnpApiPath = cjsRequire.resolve('pnpapi');
243
- }
244
- catch (_a) { }
245
- if (pnpApiPath &&
246
- !NODE_OPTIONS.some((option, index) => ['-r', '--require'].includes(option) &&
247
- pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1])) &&
248
- !execArgv.includes(pnpApiPath)) {
249
- execArgv = ['-r', pnpApiPath, ...execArgv];
250
- const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs');
251
- if (isFile(pnpLoaderPath)) {
252
- resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).toString();
253
- if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) {
254
- execArgv = [
255
- '--experimental-loader',
256
- resolvedPnpLoaderPath,
257
- ...execArgv,
258
- ];
259
- }
260
- }
261
- }
262
- }
263
- return {
264
- ext,
265
- isTs,
266
- jsUseEsm,
267
- tsRunner,
268
- tsUseEsm,
269
- workerPath,
270
- pnpLoaderPath: resolvedPnpLoaderPath,
271
- execArgv,
272
- };
273
- };
274
- const md5Hash = (text) => createHash('md5').update(text).digest('hex');
275
- export const encodeImportModule = (moduleNameOrGlobalShim, type = 'import') => {
276
- const { moduleName, globalName, named, conditional } = typeof moduleNameOrGlobalShim === 'string'
277
- ? { moduleName: moduleNameOrGlobalShim }
278
- : moduleNameOrGlobalShim;
279
- const importStatement = type === 'import'
280
- ? `import${globalName
281
- ? ' ' +
282
- (named === null
283
- ? '* as ' + globalName
284
- : (named === null || named === void 0 ? void 0 : named.trim())
285
- ? `{${named}}`
286
- : globalName) +
287
- ' from'
288
- : ''} '${path.isAbsolute(moduleName)
289
- ? String(pathToFileURL(moduleName))
290
- : moduleName}'`
291
- : `${globalName
292
- ? 'const ' + ((named === null || named === void 0 ? void 0 : named.trim()) ? `{${named}}` : globalName) + '='
293
- : ''}require('${moduleName
294
- .replace(/\\/g, '\\\\')}')`;
295
- if (!globalName) {
296
- return importStatement;
297
- }
298
- const overrideStatement = `globalThis.${globalName}=${(named === null || named === void 0 ? void 0 : named.trim()) ? named : globalName}`;
299
- return (importStatement +
300
- (conditional === false
301
- ? `;${overrideStatement}`
302
- : `;if(!globalThis.${globalName})${overrideStatement}`));
303
- };
304
- export const _generateGlobals = (globalShims, type) => globalShims.reduce((acc, shim) => `${acc}${acc ? ';' : ''}${encodeImportModule(shim, type)}`, '');
305
- let globalsCache;
306
- let tmpdir;
307
- const _dirname = typeof __dirname === 'undefined'
308
- ? path.dirname(fileURLToPath(import.meta.url))
309
- : __dirname;
310
- let sharedBuffer;
311
- let sharedBufferView;
312
- export const generateGlobals = (workerPath, globalShims, type = 'import') => {
313
- if (globalShims.length === 0) {
314
- return '';
315
- }
316
- globalsCache !== null && globalsCache !== void 0 ? globalsCache : (globalsCache = new Map());
317
- const cached = globalsCache.get(workerPath);
318
- if (cached) {
319
- const [content, filepath] = cached;
320
- if ((type === 'require' && !filepath) ||
321
- (type === 'import' && filepath && isFile(filepath))) {
322
- return content;
323
- }
324
- }
325
- const globals = _generateGlobals(globalShims, type);
326
- let content = globals;
327
- let filepath;
328
- if (type === 'import') {
329
- if (!tmpdir) {
330
- tmpdir = path.resolve(findUp(_dirname), '../node_modules/.synckit');
331
- }
332
- fs.mkdirSync(tmpdir, { recursive: true });
333
- filepath = path.resolve(tmpdir, md5Hash(workerPath) + '.mjs');
334
- content = encodeImportModule(filepath);
335
- fs.writeFileSync(filepath, globals);
336
- }
337
- globalsCache.set(workerPath, [content, filepath]);
338
- return content;
339
- };
340
- function startWorkerThread(workerPath, { timeout = DEFAULT_TIMEOUT, execArgv = DEFAULT_EXEC_ARGV, tsRunner = DEFAULT_TS_RUNNER, transferList = [], globalShims = DEFAULT_GLOBAL_SHIMS, } = {}) {
341
- const { port1: mainPort, port2: workerPort } = new MessageChannel();
342
- const { isTs, ext, jsUseEsm, tsUseEsm, tsRunner: finalTsRunner, workerPath: finalWorkerPath, pnpLoaderPath, execArgv: finalExecArgv, } = setupTsRunner(workerPath, { execArgv, tsRunner });
343
- const workerPathUrl = pathToFileURL(finalWorkerPath);
344
- if (/\.[cm]ts$/.test(finalWorkerPath)) {
345
- const isTsxSupported = !tsUseEsm ||
346
- compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0;
347
- if (!finalTsRunner) {
348
- throw new Error('No ts runner specified, ts worker path is not supported');
349
- }
350
- else if ([
351
- TsRunner.EsbuildRegister,
352
- TsRunner.EsbuildRunner,
353
- TsRunner.SWC,
354
- ...(isTsxSupported ? [] : [TsRunner.TSX]),
355
- ].includes(finalTsRunner)) {
356
- throw new Error(`${finalTsRunner} is not supported for ${ext} files yet` +
357
- (isTsxSupported
358
- ? ', you can try [tsx](https://github.com/esbuild-kit/tsx) instead'
359
- : ''));
360
- }
361
- }
362
- const finalGlobalShims = (globalShims === true
363
- ? DEFAULT_GLOBAL_SHIMS_PRESET
364
- : Array.isArray(globalShims)
365
- ? globalShims
366
- : []).filter(({ moduleName }) => isPkgAvailable(moduleName));
367
- sharedBufferView !== null && sharedBufferView !== void 0 ? sharedBufferView : (sharedBufferView = new Int32Array((sharedBuffer !== null && sharedBuffer !== void 0 ? sharedBuffer : (sharedBuffer = new SharedArrayBuffer(INT32_BYTES))), 0, 1));
368
- const useGlobals = finalGlobalShims.length > 0;
369
- const useEval = isTs ? !tsUseEsm : !jsUseEsm && useGlobals;
370
- const worker = new Worker((jsUseEsm && useGlobals) || (tsUseEsm && finalTsRunner === TsRunner.TsNode)
371
- ? dataUrl(`${generateGlobals(finalWorkerPath, finalGlobalShims)};import '${String(workerPathUrl)}'`)
372
- : useEval
373
- ? `${generateGlobals(finalWorkerPath, finalGlobalShims, 'require')};${encodeImportModule(finalWorkerPath, 'require')}`
374
- : workerPathUrl, {
375
- eval: useEval,
376
- workerData: { sharedBufferView, workerPort, pnpLoaderPath },
377
- transferList: [workerPort, ...transferList],
378
- execArgv: finalExecArgv,
379
- });
380
- let nextID = 0;
381
- const receiveMessageWithId = (port, expectedId, waitingTimeout) => {
382
- const start = Date.now();
383
- const status = Atomics.wait(sharedBufferView, 0, 0, waitingTimeout);
384
- Atomics.store(sharedBufferView, 0, 0);
385
- if (!['ok', 'not-equal'].includes(status)) {
386
- const abortMsg = {
387
- id: expectedId,
388
- cmd: 'abort',
389
- };
390
- port.postMessage(abortMsg);
391
- throw new Error('Internal error: Atomics.wait() failed: ' + status);
392
- }
393
- const _a = receiveMessageOnPort(mainPort).message, { id } = _a, message = __rest(_a, ["id"]);
394
- if (id < expectedId) {
395
- const waitingTime = Date.now() - start;
396
- return receiveMessageWithId(port, expectedId, waitingTimeout ? waitingTimeout - waitingTime : undefined);
397
- }
398
- if (expectedId !== id) {
399
- throw new Error(`Internal error: Expected id ${expectedId} but got id ${id}`);
400
- }
401
- return Object.assign({ id }, message);
402
- };
403
- const syncFn = (...args) => {
404
- const id = nextID++;
405
- const msg = { id, args };
406
- worker.postMessage(msg);
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
- }
411
- if (error) {
412
- throw Object.assign(error, properties);
413
- }
414
- return result;
415
- };
416
- worker.unref();
417
- return syncFn;
418
- }
419
31
  export function runAsWorker(fn) {
420
32
  if (!workerData) {
421
33
  return;
422
34
  }
423
35
  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
- }
36
+ overrideStdio(stdio);
436
37
  const { workerPort, sharedBufferView, pnpLoaderPath } = workerData;
437
- if (pnpLoaderPath &&
438
- compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) >= 0) {
38
+ if (pnpLoaderPath && MODULE_REGISTER_SUPPORTED) {
439
39
  module.register(pnpLoaderPath);
440
40
  }
441
41
  parentPort.on('message', ({ id, args }) => {
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,4 +1,5 @@
1
- import type { MessagePort } from 'node:worker_threads';
1
+ import type { MessagePort, TransferListItem } from 'node:worker_threads';
2
+ import type { TsRunner } from './constants.ts';
2
3
  export type AnyFn<R = any, T extends any[] = any[]> = (...args: T) => R;
3
4
  export type Syncify<T extends AnyFn> = (...args: Parameters<T>) => Awaited<ReturnType<T>>;
4
5
  export type ValueOf<T> = T[keyof T];
@@ -38,3 +39,10 @@ export interface GlobalShim {
38
39
  export interface PackageJson {
39
40
  type?: 'commonjs' | 'module';
40
41
  }
42
+ export interface SynckitOptions {
43
+ execArgv?: string[];
44
+ globalShims?: GlobalShim[] | boolean;
45
+ timeout?: number;
46
+ transferList?: TransferListItem[];
47
+ tsRunner?: TsRunner;
48
+ }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "synckit",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "description": "Perform async work synchronously in Node.js using `worker_threads` with first-class TypeScript support.",
6
- "repository": "git+https://github.com/un-ts/synckit.git",
7
- "author": "JounQin (https://www.1stG.me) <admin@1stg.me>",
8
- "funding": "https://opencollective.com/unts",
6
+ "repository": "https://github.com/un-ts/synckit.git",
7
+ "author": "JounQin <admin@1stg.me> (https://www.1stG.me)",
8
+ "funding": "https://opencollective.com/synckit",
9
9
  "license": "MIT",
10
10
  "engines": {
11
11
  "node": "^14.18.0 || >=16.0.0"
@@ -17,6 +17,10 @@
17
17
  "types": "./lib/index.d.ts",
18
18
  "default": "./lib/index.js"
19
19
  },
20
+ "module-sync": {
21
+ "types": "./lib/index.d.ts",
22
+ "default": "./lib/index.js"
23
+ },
20
24
  "require": {
21
25
  "types": "./index.d.cts",
22
26
  "default": "./lib/index.cjs"