diff --git a/benches/index.ts b/benches/index.ts index 3cf25b3..d59a4ac 100644 --- a/benches/index.ts +++ b/benches/index.ts @@ -1,26 +1,27 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env tsx -import fs from 'fs'; -import path from 'path'; -import url from 'url'; +import fs from 'node:fs'; +import path from 'node:path'; +import url from 'node:url'; import si from 'systeminformation'; - -const dirname = url.fileURLToPath(new URL('.', import.meta.url)); +import { benchesPath } from './utils/utils.js'; async function main(): Promise { - await fs.promises.mkdir(path.join(dirname, 'results'), { recursive: true }); + await fs.promises.mkdir(path.join(benchesPath, 'results'), { + recursive: true, + }); const resultFilenames = await fs.promises.readdir( - path.join(dirname, 'results'), + path.join(benchesPath, 'results'), ); const metricsFile = await fs.promises.open( - path.join(dirname, 'results', 'metrics.txt'), + path.join(benchesPath, 'results', 'metrics.txt'), 'w', ); let concatenating = false; for (const resultFilename of resultFilenames) { if (/.+_metrics\.txt$/.test(resultFilename)) { const metricsData = await fs.promises.readFile( - path.join(dirname, 'results', resultFilename), + path.join(benchesPath, 'results', resultFilename), ); if (concatenating) { await metricsFile.write('\n'); @@ -36,9 +37,16 @@ async function main(): Promise { system: 'model, manufacturer', }); await fs.promises.writeFile( - path.join(dirname, 'results', 'system.json'), + path.join(benchesPath, 'results', 'system.json'), JSON.stringify(systemData, null, 2), ); } -void main(); +if (import.meta.url.startsWith('file:')) { + const modulePath = url.fileURLToPath(import.meta.url); + if (process.argv[1] === modulePath) { + void main(); + } +} + +export default main; diff --git a/benches/utils/utils.ts b/benches/utils/utils.ts index 0e46cef..ce8ec15 100644 --- a/benches/utils/utils.ts +++ b/benches/utils/utils.ts @@ -1,31 +1,33 @@ -import fs from 'fs'; -import path from 'path'; -import url from 'url'; +import fs from 'node:fs'; +import path from 'node:path'; +import url from 'node:url'; import b from 'benny'; import { codeBlock } from 'common-tags'; -import packageJson from '../../package.json'; +import packageJson from '../../package.json' assert { type: 'json' }; -const dirname = url.fileURLToPath(new URL('.', import.meta.url)); +const benchesPath = path.dirname( + path.dirname(url.fileURLToPath(import.meta.url)), +); const suiteCommon = [ b.cycle(), b.complete(), b.save({ file: (summary) => summary.name, - folder: path.join(dirname, '../results'), + folder: path.join(benchesPath, 'results'), version: packageJson.version, details: true, }), b.save({ file: (summary) => summary.name, - folder: path.join(dirname, '../results'), + folder: path.join(benchesPath, 'results'), version: packageJson.version, format: 'chart.html', }), b.complete((summary) => { const filePath = path.join( - dirname, - '../results', + benchesPath, + 'results', summary.name + '_metrics.txt', ); fs.writeFileSync( @@ -61,4 +63,4 @@ const suiteCommon = [ }), ]; -export { suiteCommon }; +export { benchesPath, suiteCommon }; diff --git a/src/RPCClient.ts b/src/RPCClient.ts index 0179b81..94cd464 100644 --- a/src/RPCClient.ts +++ b/src/RPCClient.ts @@ -348,7 +348,7 @@ class RPCClient { utils.clientInputTransformStream(method); const middleware = this.middlewareFactory( { signal, timer }, - rpcStream.cancel, + (...args) => rpcStream.cancel(...args), metadata, ); // This `Promise.allSettled` is used to asynchronously track the state @@ -372,7 +372,7 @@ class RPCClient { return { readable: outputMessageTransformStream.readable, writable: inputMessageTransformStream.writable, - cancel: rpcStream.cancel, + cancel: (...args) => rpcStream.cancel(...args), meta: metadata, }; } @@ -512,7 +512,7 @@ class RPCClient { const newRpcStream: RPCStream = { writable: rpcStream.writable, readable: headTransformStream.readable as ReadableStream, - cancel: rpcStream.cancel, + cancel: (...args) => rpcStream.cancel(...args), meta: rpcStream.meta, }; return [leadingMessage.result, newRpcStream]; @@ -532,7 +532,7 @@ class RPCClient { return { writable: rpcStream.writable, readable: rpcStream.readable, - cancel: rpcStream.cancel, + cancel: (...args) => rpcStream.cancel(...args), meta: metadata, }; } diff --git a/src/RPCServer.ts b/src/RPCServer.ts index db74afc..c5dce55 100644 --- a/src/RPCServer.ts +++ b/src/RPCServer.ts @@ -622,7 +622,7 @@ class RPCServer { headerMessage.value, transformStream.readable as ReadableStream, ], - rpcStream.cancel, + (...args) => rpcStream.cancel(...args), rpcStream.meta, { signal: abortController.signal, timer }, );