From 912f680873a5813e3dc70fffe3b0657d77d41719 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 00:17:16 +0300 Subject: [PATCH 01/14] feat: support pipe splitting BREAKING CHANGE: `p.halt()` should be replaced with `$({halt: true})`, stdio defaults to `pipe` --- src/core.ts | 85 ++++++++++++++++++++++++++-------------------- src/vendor-core.ts | 8 ++++- test/core.test.js | 11 +++--- 3 files changed, 60 insertions(+), 44 deletions(-) diff --git a/src/core.ts b/src/core.ts index a37265875b..de1fe87555 100644 --- a/src/core.ts +++ b/src/core.ts @@ -30,6 +30,7 @@ import { chalk, which, ps, + VoidWritable, type ChalkInstance, type RequestInfo, type RequestInit, @@ -91,6 +92,7 @@ export interface Options { log: typeof log kill: typeof kill killSignal?: NodeJS.Signals + halt?: boolean } export const defaults: Options = { @@ -100,7 +102,7 @@ export const defaults: Options = { env: process.env, sync: false, shell: true, - stdio: ['inherit', 'pipe', 'pipe'], + stdio: 'pipe', nothrow: false, quiet: false, prefix: '', @@ -147,16 +149,15 @@ export const $: Shell & Options = new Proxy( checkQuote() let resolve: Resolve, reject: Resolve - const promise = new ProcessPromise((...args) => ([resolve, reject] = args)) + const process = new ProcessPromise((...args) => ([resolve, reject] = args)) const cmd = buildCmd( $.quote as typeof quote, pieces as TemplateStringsArray, args ) as string const sync = snapshot[SYNC] - const callback = () => promise.isHalted() || promise.run() - promise._bind( + process._bind( cmd, from, resolve!, @@ -166,10 +167,9 @@ export const $: Shell & Options = new Proxy( }, snapshot ) - // Postpone run to allow promise configuration. - sync ? callback() : setImmediate(callback) + process.isHalted() || process.run() - return sync ? promise.output : promise + return sync ? process.output : process } as Shell & Options, { set(_, key, value) { @@ -199,15 +199,14 @@ export class ProcessPromise extends Promise { private _verbose?: boolean private _timeout?: number private _timeoutSignal?: NodeJS.Signals + private _timeoutId?: NodeJS.Timeout private _resolved = false - private _halted = false + private _halted?: boolean private _piped = false private _zurk: ReturnType | null = null private _output: ProcessOutput | null = null private _reject: Resolve = noop private _resolve: Resolve = noop - _prerun = noop - _postrun = noop _bind( cmd: string, @@ -225,7 +224,6 @@ export class ProcessPromise extends Promise { run(): ProcessPromise { if (this.child) return this // The _run() can be called from a few places. - this._prerun() // In case $1.pipe($2), the $2 returned, and on $2._run() invoke $1._run(). const $ = this._snapshot const self = this @@ -262,13 +260,7 @@ export class ProcessPromise extends Promise { run: (cb) => cb(), on: { start: () => { - if (self._timeout) { - const t = setTimeout( - () => self.kill(self._timeoutSignal), - self._timeout - ) - self.finally(() => clearTimeout(t)).catch(noop) - } + self._timeout && self.timeout(self._timeout, self._timeoutSignal) }, stdout: (data) => { // If process is piped, don't print output. @@ -321,8 +313,6 @@ export class ProcessPromise extends Promise { }, }) - this._postrun() // In case $1.pipe($2), after both subprocesses are running, we can pipe $1.stdout to $2.stdin. - return this } @@ -335,28 +325,40 @@ export class ProcessPromise extends Promise { return this.pipe($(dest as TemplateStringsArray, ...args)) if (isString(dest)) throw new Error('The pipe() method does not take strings. Forgot $?') - if (this._resolved) { - if (dest instanceof ProcessPromise) dest.stdin.end() // In case of piped stdin, we may want to close stdin of dest as well. - throw new Error( - "The pipe() method shouldn't be called after promise is already resolved!" - ) - } + this._piped = true + const { store, ee, fulfilled } = this._zurk as any + const from = new VoidWritable() + const input = fulfilled ? fulfilled.stdout : from + const fill = () => { + for (const chunk of store.stdout) { + from.write(chunk) + } + } + + if (fulfilled) { + fill() + from.end() + } else { + const onStdout = (chunk: string | Buffer) => from.write(chunk) + ee.once('stdout', () => { + fill() + ee.on('stdout', onStdout) + }).once('end', () => { + ee.removeListener('stdout', onStdout) + from.end() + }) + } + if (dest instanceof ProcessPromise) { + from.pipe(dest.stdin) this.catch((e) => (dest.isNothrow() ? noop : dest._reject(e))) - dest.stdio('pipe') - dest._prerun = this.run.bind(this) - dest._postrun = () => { - if (!dest.child) - throw new Error( - 'Access to stdin of pipe destination without creation a subprocess.' - ) - this.stdout.pipe(dest.stdin) - } + return dest } - this._postrun = () => this.stdout.pipe(dest as Writable) + from.pipe(dest as Writable) + return this } @@ -455,6 +457,15 @@ export class ProcessPromise extends Promise { timeout(d: Duration, signal = $.timeoutSignal): ProcessPromise { this._timeout = parseDuration(d) this._timeoutSignal = signal + + if (this._timeoutId) clearTimeout(this._timeoutId) + if (this._timeout) { + this._timeoutId = setTimeout( + () => this.kill(this._timeoutSignal), + this._timeout + ) + this.finally(() => clearTimeout(this._timeoutId)).catch(noop) + } return this } @@ -486,7 +497,7 @@ export class ProcessPromise extends Promise { // Status checkers isHalted(): boolean { - return this._halted + return this._halted ?? this._snapshot.halt ?? false } isQuiet(): boolean { diff --git a/src/vendor-core.ts b/src/vendor-core.ts index b1b19571cc..b419dca669 100644 --- a/src/vendor-core.ts +++ b/src/vendor-core.ts @@ -12,7 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -export { exec, buildCmd, isStringLiteral, type TSpawnStore } from 'zurk/spawn' +export { + exec, + buildCmd, + isStringLiteral, + type TSpawnStore, + VoidWritable, +} from 'zurk/spawn' export type RequestInfo = Parameters[0] export type RequestInit = Parameters[1] diff --git a/test/core.test.js b/test/core.test.js index 487e9f6d9d..e08cc97354 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -305,12 +305,11 @@ describe('core', () => { assert.equal(p.cmd, "echo $'#bar' --t 1") }) - test('stdio() works', async () => { + test.only('stdio() works', async () => { let p = $`printf foo` await p - assert.throws(() => p.stdin) + // assert.throws(() => p.stdin) assert.equal((await p).stdout, 'foo') - let b = $`read; printf $REPLY` b.stdin.write('bar\n') assert.equal((await b).stdout, 'bar') @@ -340,7 +339,7 @@ describe('core', () => { 'foo\n' ) - let r = $`cat` + let r = $({ stdio: 'pipe' })`cat` fs.createReadStream('/tmp/output.txt').pipe(r.stdin) assert.equal((await r).stdout, 'foo\n') } finally { @@ -385,7 +384,7 @@ describe('core', () => { assert.equal(stdout, 'HELLO WORLD\n') }) - test('throws if already resolved', async (t) => { + test.skip('throws if already resolved', async (t) => { let ok = true let p = $`echo "Hello"` await p @@ -599,7 +598,7 @@ describe('core', () => { }) test('await on halted throws', async () => { - let p = $`sleep 1`.halt() + let p = $({ halt: true })`sleep 1` //.halt() let ok = true try { await p From c46d0bacb737975ac9ef992837083a14b4dbf397 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 00:24:51 +0300 Subject: [PATCH 02/14] test: add delayed `pipe()` test --- test/core.test.js | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/test/core.test.js b/test/core.test.js index e08cc97354..0531b85964 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -305,7 +305,7 @@ describe('core', () => { assert.equal(p.cmd, "echo $'#bar' --t 1") }) - test.only('stdio() works', async () => { + test('stdio() works', async () => { let p = $`printf foo` await p // assert.throws(() => p.stdin) @@ -339,7 +339,7 @@ describe('core', () => { 'foo\n' ) - let r = $({ stdio: 'pipe' })`cat` + let r = $`cat` fs.createReadStream('/tmp/output.txt').pipe(r.stdin) assert.equal((await r).stdout, 'foo\n') } finally { @@ -384,20 +384,18 @@ describe('core', () => { assert.equal(stdout, 'HELLO WORLD\n') }) - test.skip('throws if already resolved', async (t) => { - let ok = true - let p = $`echo "Hello"` - await p - try { - await p.pipe($`less`) - ok = false - } catch (err) { - assert.equal( - err.message, - `The pipe() method shouldn't be called after promise is already resolved!` - ) - } - assert.ok(ok, 'Expected failure!') + it('supports multipiping', async () => { + const result = $`echo 1; sleep 1; echo 2; sleep 1; echo 3` + const piped1 = result.pipe`cat` + let piped2 + + setTimeout(() => { + piped2 = result.pipe`cat` + }, 1500) + + await piped1 + assert.equal((await piped1).toString(), '1\n2\n3\n') + assert.equal((await piped2).toString(), '1\n2\n3\n') }) test('propagates rejection', async () => { From 202c4a4c9b3462c05bab7118ecea138544b3d6cc Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 08:41:34 +0300 Subject: [PATCH 03/14] feat: add `pid` getter to `ProcessPromise` --- src/core.ts | 9 +++++++-- test/core.test.js | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core.ts b/src/core.ts index de1fe87555..9e5cce5e5e 100644 --- a/src/core.ts +++ b/src/core.ts @@ -55,6 +55,7 @@ import { const CWD = Symbol('processCwd') const SYNC = Symbol('syncExec') const EOL = Buffer.from(_EOL) +const SIGTERM = 'SIGTERM' const storage = new AsyncLocalStorage() function getStore() { @@ -113,8 +114,8 @@ export const defaults: Options = { spawnSync, log, kill, - killSignal: 'SIGTERM', - timeoutSignal: 'SIGTERM', + killSignal: SIGTERM, + timeoutSignal: SIGTERM, } // prettier-ignore @@ -381,6 +382,10 @@ export class ProcessPromise extends Promise { } // Getters + get pid() { + return this.child?.pid + } + get cmd() { return this._command } diff --git a/test/core.test.js b/test/core.test.js index 0531b85964..5e3960fbeb 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -305,6 +305,11 @@ describe('core', () => { assert.equal(p.cmd, "echo $'#bar' --t 1") }) + test('exposes pid', () => { + const p = $`echo foo` + assert.ok(p.pid > 0) + }) + test('stdio() works', async () => { let p = $`printf foo` await p From 83598386a5f949779a52122b45eb4608f2707d1a Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 08:59:46 +0300 Subject: [PATCH 04/14] test: check chainable pipe literals --- .size-limit.json | 2 +- src/core.ts | 5 +---- test/core.test.js | 8 ++++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.size-limit.json b/.size-limit.json index c1dc2d6542..2acce49867 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -9,7 +9,7 @@ { "name": "zx/index", "path": "build/*.{js,cjs}", - "limit": "797 kB", + "limit": "800 kB", "brotli": false, "gzip": false }, diff --git a/src/core.ts b/src/core.ts index 9e5cce5e5e..279e20dc87 100644 --- a/src/core.ts +++ b/src/core.ts @@ -330,7 +330,6 @@ export class ProcessPromise extends Promise { this._piped = true const { store, ee, fulfilled } = this._zurk as any const from = new VoidWritable() - const input = fulfilled ? fulfilled.stdout : from const fill = () => { for (const chunk of store.stdout) { from.write(chunk) @@ -352,14 +351,12 @@ export class ProcessPromise extends Promise { } if (dest instanceof ProcessPromise) { - from.pipe(dest.stdin) this.catch((e) => (dest.isNothrow() ? noop : dest._reject(e))) - + from.pipe(dest.stdin) return dest } from.pipe(dest as Writable) - return this } diff --git a/test/core.test.js b/test/core.test.js index 5e3960fbeb..f1604c7060 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -383,10 +383,14 @@ describe('core', () => { }) test('is chainable', async () => { - let { stdout } = await $`echo "hello"` + let { stdout: o1 } = await $`echo "hello"` .pipe($`awk '{print $1" world"}'`) .pipe($`tr '[a-z]' '[A-Z]'`) - assert.equal(stdout, 'HELLO WORLD\n') + assert.equal(o1, 'HELLO WORLD\n') + + let { stdout: o2 } = await $`echo "hello"` + .pipe`awk '{print $1" world"}'`.pipe`tr '[a-z]' '[A-Z]'` + assert.equal(o2, 'HELLO WORLD\n') }) it('supports multipiping', async () => { From 32284bfcf60e443eb601ec849b03feb30b95185e Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 09:06:21 +0300 Subject: [PATCH 05/14] test: kill nc process on end --- test/cli.test.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/cli.test.js b/test/cli.test.js index f1c710252f..576ec624d4 100644 --- a/test/cli.test.js +++ b/test/cli.test.js @@ -121,16 +121,18 @@ describe('cli', () => { }) test('scripts from https', async () => { - $`cat ${path.resolve('test/fixtures/echo.http')} | nc -l 8080` + const server = $`cat ${path.resolve('test/fixtures/echo.http')} | nc -l 8080` let out = await $`node build/cli.js --verbose http://127.0.0.1:8080/echo.mjs` assert.match(out.stderr, /test/) + await server.kill() }) test('scripts from https not ok', async () => { - $`echo $'HTTP/1.1 500\n\n' | nc -l 8081` + const server = $`echo $'HTTP/1.1 500\n\n' | nc -l 8081` let out = await $`node build/cli.js http://127.0.0.1:8081`.nothrow() assert.match(out.stderr, /Error: Can't get/) + await server.kill() }) test('scripts with no extension', async () => { @@ -201,7 +203,7 @@ describe('cli', () => { try { await $`chmod +x ${zxLocation}` - await $`echo ${scriptCode}`.pipe( + await $({ stdio: ['inherit', 'pipe', 'pipe'] })`echo ${scriptCode}`.pipe( fs.createWriteStream('/tmp/script-from-path', { mode: 0o744 }) ) await $`script-from-path` From 417c8fc045f6d99c1b71a6406acb8354ac015479 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 12:51:17 +0300 Subject: [PATCH 06/14] refactor!: remove `halt()` method --- src/core.ts | 7 +----- test/core.test.js | 54 +++++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/src/core.ts b/src/core.ts index 279e20dc87..e219330d21 100644 --- a/src/core.ts +++ b/src/core.ts @@ -328,7 +328,7 @@ export class ProcessPromise extends Promise { throw new Error('The pipe() method does not take strings. Forgot $?') this._piped = true - const { store, ee, fulfilled } = this._zurk as any + const { store, ee, fulfilled } = this._zurk! const from = new VoidWritable() const fill = () => { for (const chunk of store.stdout) { @@ -471,11 +471,6 @@ export class ProcessPromise extends Promise { return this } - halt(): ProcessPromise { - this._halted = true - return this - } - // Output formatters json(): Promise { return this.then((p) => p.json()) diff --git a/test/core.test.js b/test/core.test.js index f1604c7060..f7eb554e0e 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -484,6 +484,32 @@ describe('core', () => { } }) + describe('handles halt option', () => { + test('just works', async () => { + let filepath = `/tmp/${Math.random().toString()}` + let p = $({ halt: true })`touch ${filepath}` + await sleep(1) + assert.ok( + !fs.existsSync(filepath), + 'The cmd called, but it should not have been called' + ) + await p.run() + assert.ok(fs.existsSync(filepath), 'The cmd should have been called') + }) + + test('await on halted throws', async () => { + let p = $({ halt: true })`sleep 1` + let ok = true + try { + await p + ok = false + } catch (err) { + assert.equal(err.message, 'The process is halted!') + } + assert.ok(ok, 'Expected failure!') + }) + }) + test('exposes `signal` property', async () => { const ac = new AbortController() const p = $({ ac, detached: true })`echo test` @@ -581,7 +607,7 @@ describe('core', () => { assert.equal(p.isVerbose(), false) }) - test('nothrow() do not throw', async () => { + test('nothrow() does not throw', async () => { let { exitCode } = await $`exit 42`.nothrow() assert.equal(exitCode, 42) { @@ -591,32 +617,6 @@ describe('core', () => { } }) - describe('halt()', () => { - test('just works', async () => { - let filepath = `/tmp/${Math.random().toString()}` - let p = $`touch ${filepath}`.halt() - await sleep(1) - assert.ok( - !fs.existsSync(filepath), - 'The cmd called, but it should not have been called' - ) - await p.run() - assert.ok(fs.existsSync(filepath), 'The cmd should have been called') - }) - - test('await on halted throws', async () => { - let p = $({ halt: true })`sleep 1` //.halt() - let ok = true - try { - await p - ok = false - } catch (err) { - assert.equal(err.message, 'The process is halted!') - } - assert.ok(ok, 'Expected failure!') - }) - }) - describe('timeout()', () => { test('expiration works', async () => { let exitCode, signal From a2913410617219f3d46bc10a7e656743e8f5da93 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 15:16:17 +0300 Subject: [PATCH 07/14] refactor: remove runner logic from getters --- src/core.ts | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/core.ts b/src/core.ts index e219330d21..602176ec24 100644 --- a/src/core.ts +++ b/src/core.ts @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -import assert from 'node:assert' import { type StdioOptions, type IOType, @@ -392,28 +391,15 @@ export class ProcessPromise extends Promise { } get stdin(): Writable { - this.stdio('pipe') - this.run() - assert(this.child) - if (this.child.stdin == null) - throw new Error('The stdin of subprocess is null.') - return this.child.stdin + return this.child?.stdin! } get stdout(): Readable { - this.run() - assert(this.child) - if (this.child.stdout == null) - throw new Error('The stdout of subprocess is null.') - return this.child.stdout + return this.child?.stdout! } get stderr(): Readable { - this.run() - assert(this.child) - if (this.child.stderr == null) - throw new Error('The stderr of subprocess is null.') - return this.child.stderr + return this.child?.stderr! } get exitCode(): Promise { From 21220b6189f60042011478424a4643da06b3967b Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Thu, 3 Oct 2024 20:38:12 +0300 Subject: [PATCH 08/14] fix: enhance `Shell` result type --- src/core.ts | 3 ++- test/core.test.js | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core.ts b/src/core.ts index 602176ec24..907e08f27f 100644 --- a/src/core.ts +++ b/src/core.ts @@ -167,7 +167,8 @@ export const $: Shell & Options = new Proxy( }, snapshot ) - process.isHalted() || process.run() + + if (!process.isHalted() || sync) process.run() return sync ? process.output : process } as Shell & Options, diff --git a/test/core.test.js b/test/core.test.js index f7eb554e0e..1dd2f4f397 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -508,6 +508,11 @@ describe('core', () => { } assert.ok(ok, 'Expected failure!') }) + + test('sync process ignores halt option', () => { + const p = $.sync({ halt: true })`echo foo` + assert.equal(p.stdout, 'foo\n') + }) }) test('exposes `signal` property', async () => { From 57c54e1fd6ad65f614faf2b9038ae673821b93de Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 15 Oct 2024 23:40:10 +0300 Subject: [PATCH 09/14] chore: bring back `halt` method to avoid breaking change --- src/core.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core.ts b/src/core.ts index 907e08f27f..a0528d7f1c 100644 --- a/src/core.ts +++ b/src/core.ts @@ -230,7 +230,6 @@ export class ProcessPromise extends Promise { const self = this const input = ($.input as ProcessPromise | ProcessOutput)?.stdout ?? $.input - if (input) this.stdio('pipe') if ($.timeout) this.timeout($.timeout, $.timeoutSignal) if ($.preferLocal) { const dirs = @@ -299,8 +298,8 @@ export class ProcessPromise extends Promise { } // Ensures EOL - if (stdout.length && !stdout[stdout.length - 1]?.toString().endsWith('\n')) c.on.stdout?.(EOL, c) - if (stderr.length && !stderr[stderr.length - 1]?.toString().endsWith('\n')) c.on.stderr?.(EOL, c) + if (stdout.length && !stdout[stdout.length - 1]!.toString().endsWith('\n')) c.on.stdout!(EOL, c) + if (stderr.length && !stderr[stderr.length - 1]!.toString().endsWith('\n')) c.on.stderr!(EOL, c) const output = new ProcessOutput(dto) self._output = output @@ -378,6 +377,13 @@ export class ProcessPromise extends Promise { return $.kill(this.child.pid, signal) } + /** + * @deprecated Use $({halt: true})`cmd` instead. + */ + halt() { + return this + } + // Getters get pid() { return this.child?.pid From 7b944efd56be31183a2f9e3e3269693e94a20663 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 15 Oct 2024 23:56:18 +0300 Subject: [PATCH 10/14] style: improve `Options` block formatting --- src/core.ts | 86 ++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/core.ts b/src/core.ts index a0528d7f1c..c559f989fe 100644 --- a/src/core.ts +++ b/src/core.ts @@ -64,57 +64,57 @@ function getStore() { export function within(callback: () => R): R { return storage.run({ ...getStore() }, callback) } - +// prettier-ignore export interface Options { - [CWD]: string - [SYNC]: boolean - cwd?: string - ac?: AbortController - signal?: AbortSignal - input?: string | Buffer | Readable | ProcessOutput | ProcessPromise - timeout?: Duration + [CWD]: string + [SYNC]: boolean + cwd?: string + ac?: AbortController + signal?: AbortSignal + input?: string | Buffer | Readable | ProcessOutput | ProcessPromise + timeout?: Duration timeoutSignal?: NodeJS.Signals - stdio: StdioOptions - verbose: boolean - sync: boolean - env: NodeJS.ProcessEnv - shell: string | boolean - nothrow: boolean - prefix: string - postfix: string - quote?: typeof quote - quiet: boolean - detached: boolean - preferLocal: boolean | string | string[] - spawn: typeof spawn - spawnSync: typeof spawnSync - store?: TSpawnStore - log: typeof log - kill: typeof kill - killSignal?: NodeJS.Signals - halt?: boolean + stdio: StdioOptions + verbose: boolean + sync: boolean + env: NodeJS.ProcessEnv + shell: string | boolean + nothrow: boolean + prefix: string + postfix: string + quote?: typeof quote + quiet: boolean + detached: boolean + preferLocal: boolean | string | string[] + spawn: typeof spawn + spawnSync: typeof spawnSync + store?: TSpawnStore + log: typeof log + kill: typeof kill + killSignal?: NodeJS.Signals + halt?: boolean } - +// prettier-ignore export const defaults: Options = { - [CWD]: process.cwd(), - [SYNC]: false, - verbose: false, - env: process.env, - sync: false, - shell: true, - stdio: 'pipe', - nothrow: false, - quiet: false, - prefix: '', - postfix: '', - detached: false, - preferLocal: false, + [CWD]: process.cwd(), + [SYNC]: false, + verbose: false, + env: process.env, + sync: false, + shell: true, + stdio: 'pipe', + nothrow: false, + quiet: false, + prefix: '', + postfix: '', + detached: false, + preferLocal: false, spawn, spawnSync, log, kill, - killSignal: SIGTERM, - timeoutSignal: SIGTERM, + killSignal: SIGTERM, + timeoutSignal: SIGTERM, } // prettier-ignore From aab1d2c867d310f8b5355e883445b185113ba6ba Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Wed, 16 Oct 2024 00:05:17 +0300 Subject: [PATCH 11/14] perf: improve cmd formatter --- src/util.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/util.ts b/src/util.ts index b8d1a6581a..164480463d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -353,9 +353,9 @@ export function formatCmd(cmd?: string): string { function root() { if (/\s/.test(ch)) return space if (isSyntax(ch)) return syntax - if (ch.includes('$')) return dollar - if (ch.includes('"')) return strDouble - if (ch.includes("'")) return strSingle + if (ch === '$') return dollar + if (ch === '"') return strDouble + if (ch === "'") return strSingle return word } @@ -375,13 +375,13 @@ export function formatCmd(cmd?: string): string { } function dollar() { - if (ch.includes("'")) return str + if (ch === "'") return str return root } function str() { - if (ch.includes("'")) return strEnd - if (ch.includes('\\')) return strBackslash + if (ch === "'") return strEnd + if (ch === '\\') return strBackslash return str } @@ -394,12 +394,12 @@ export function formatCmd(cmd?: string): string { } function strDouble() { - if (ch.includes('"')) return strEnd + if (ch === '"') return strEnd return strDouble } function strSingle() { - if (ch.includes("'")) return strEnd + if (ch === "'") return strEnd return strSingle } From 3946d0dda38e0f957499dd9f52dd60e29b6a0135 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 29 Oct 2024 18:20:33 +0300 Subject: [PATCH 12/14] chore: update internal reexports --- src/core.ts | 4 ++-- src/vendor-core.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core.ts b/src/core.ts index c559f989fe..8816c9b8e8 100644 --- a/src/core.ts +++ b/src/core.ts @@ -29,7 +29,7 @@ import { chalk, which, ps, - VoidWritable, + VoidStream, type ChalkInstance, type RequestInfo, type RequestInit, @@ -328,7 +328,7 @@ export class ProcessPromise extends Promise { this._piped = true const { store, ee, fulfilled } = this._zurk! - const from = new VoidWritable() + const from = new VoidStream() const fill = () => { for (const chunk of store.stdout) { from.write(chunk) diff --git a/src/vendor-core.ts b/src/vendor-core.ts index b419dca669..19fbfcb1bb 100644 --- a/src/vendor-core.ts +++ b/src/vendor-core.ts @@ -17,7 +17,7 @@ export { buildCmd, isStringLiteral, type TSpawnStore, - VoidWritable, + VoidStream, } from 'zurk/spawn' export type RequestInfo = Parameters[0] From 437a1615a018abdd63b9958647ae2da56cfaac43 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 29 Oct 2024 18:21:40 +0300 Subject: [PATCH 13/14] chore: up build deps --- package-lock.json | 806 ++++++++++++++++++++++++++++++++++------------ package.json | 12 +- 2 files changed, 604 insertions(+), 214 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b4c1687e5..60aea4b73a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "zx": "build/cli.js" }, "devDependencies": { - "@size-limit/file": "^11.1.5", + "@size-limit/file": "^11.1.6", "@types/fs-extra": "^11.0.4", "@types/minimist": "^1.2.5", "@types/node": ">=20.11.30", @@ -24,8 +24,8 @@ "create-require": "^1.1.1", "depseek": "^0.4.1", "dts-bundle-generator": "^9.5.1", - "esbuild": "^0.23.1", - "esbuild-node-externals": "^1.14.0", + "esbuild": "^0.24.0", + "esbuild-node-externals": "^1.15.0", "esbuild-plugin-entry-chunks": "^0.1.15", "esbuild-plugin-extract-helpers": "^0.0.6", "esbuild-plugin-hybrid-export": "^0.2.5", @@ -39,11 +39,11 @@ "minimist": "^1.2.8", "node-fetch-native": "^1.6.4", "prettier": "^3.3.3", - "size-limit": "^11.1.5", + "size-limit": "^11.1.6", "ts-node": "^10.9.2", "tsd": "^0.31.2", - "tsx": "^4.19.1", - "typescript": "^5.6.2", + "tsx": "^4.19.2", + "typescript": "^5.6.3", "which": "^4.0.0", "yaml": "^2.5.1", "zurk": "^0.6.0" @@ -223,9 +223,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", "cpu": [ "ppc64" ], @@ -240,9 +240,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "cpu": [ "arm" ], @@ -257,9 +257,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ "arm64" ], @@ -274,9 +274,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], @@ -291,9 +291,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], @@ -308,9 +308,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], @@ -325,9 +325,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], @@ -342,9 +342,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "cpu": [ "x64" ], @@ -359,9 +359,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -376,9 +376,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], @@ -393,9 +393,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ "ia32" ], @@ -410,9 +410,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "cpu": [ "loong64" ], @@ -427,9 +427,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "cpu": [ "mips64el" ], @@ -444,9 +444,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -461,9 +461,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], @@ -478,9 +478,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], @@ -495,9 +495,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ "x64" ], @@ -512,9 +512,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", "cpu": [ "x64" ], @@ -529,9 +529,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "cpu": [ "arm64" ], @@ -546,9 +546,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], @@ -563,9 +563,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], @@ -580,9 +580,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], @@ -597,9 +597,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], @@ -614,9 +614,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -854,16 +854,16 @@ } }, "node_modules/@size-limit/file": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-11.1.5.tgz", - "integrity": "sha512-oz/XBVUJh95GpzDb9/f4sEQD/ACJ9zEKSRgBtvMUTN0c+O/9uq+RzvFeXFN2Kjpx3Dmur1ta+oZsp3zQFxlb3Q==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-11.1.6.tgz", + "integrity": "sha512-ojzzJMrTfcSECRnaTjGy0wNIolTCRdyqZTSWG9sG5XEoXG6PNgHXDDS6gf6YNxnqb+rWfCfVe93u6aKi3wEocQ==", "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "size-limit": "11.1.5" + "size-limit": "11.1.6" } }, "node_modules/@ts-graphviz/adapter": { @@ -1347,20 +1347,6 @@ "dev": true, "license": "MIT" }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/app-module-path": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", @@ -1433,19 +1419,6 @@ ], "license": "MIT" }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -1593,28 +1566,19 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/cli-cursor": { @@ -2134,9 +2098,9 @@ } }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2147,36 +2111,36 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/esbuild-node-externals": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/esbuild-node-externals/-/esbuild-node-externals-1.14.0.tgz", - "integrity": "sha512-jMWnTlCII3cLEjR5+u0JRSTJuP+MgbjEHKfwSIAI41NgLQ0ZjfzjchlbEn0r7v2u5gCBMSEYvYlkO7GDG8gG3A==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/esbuild-node-externals/-/esbuild-node-externals-1.15.0.tgz", + "integrity": "sha512-lM5f3CQL9Ctv6mBwwYAEMcphK2qrjVRnemT1mufECpFaidZvFVvQDPcuno/MQfLVk4utVuSVxm1RHLyg/ONQ/A==", "dev": true, "license": "MIT", "dependencies": { @@ -2187,7 +2151,7 @@ "node": ">=12" }, "peerDependencies": { - "esbuild": "0.12 - 0.23" + "esbuild": "0.12 - 0.24" } }, "node_modules/esbuild-plugin-entry-chunks": { @@ -2859,19 +2823,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-core-module": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", @@ -3142,13 +3093,13 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.3.3.tgz", + "integrity": "sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==", "dev": true, "license": "MIT", "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-tokens": { @@ -3704,16 +3655,6 @@ "node": ">=10" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4359,16 +4300,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { @@ -4614,19 +4556,19 @@ } }, "node_modules/size-limit": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-11.1.5.tgz", - "integrity": "sha512-dtw/Tcm+9aonYySPG6wQCe1BwogK5HRGSrSqr0zXGfKtynJGvKAsyHCTGxdphFEHjHRoHFWua3D3zqYLUVVIig==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-11.1.6.tgz", + "integrity": "sha512-S5ux2IB8rU26xwVgMskmknGMFkieaIAqDLuwgKiypk6oa4lFsie8yFPrzRFV+yrLDY2GddjXuCaVk5PveVOHiQ==", "dev": true, "license": "MIT", "dependencies": { "bytes-iec": "^3.1.1", - "chokidar": "^3.6.0", - "jiti": "^1.21.6", + "chokidar": "^4.0.1", + "jiti": "^2.0.0", "lilconfig": "^3.1.2", "nanospinner": "^1.1.0", "picocolors": "^1.1.0", - "tinyglobby": "^0.2.6" + "tinyglobby": "^0.2.7" }, "bin": { "size-limit": "bin.js" @@ -4970,13 +4912,13 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.6.tgz", - "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fdir": "^6.3.0", + "fdir": "^6.4.2", "picomatch": "^4.0.2" }, "engines": { @@ -4984,9 +4926,9 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz", - "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -5203,9 +5145,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", - "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", "dev": true, "license": "MIT", "dependencies": { @@ -5222,6 +5164,454 @@ "fsevents": "~2.3.3" } }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -5236,9 +5626,9 @@ } }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 94c4d03c13..b03c08e43d 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@types/node": ">=20" }, "devDependencies": { - "@size-limit/file": "^11.1.5", + "@size-limit/file": "^11.1.6", "@types/fs-extra": "^11.0.4", "@types/minimist": "^1.2.5", "@types/node": ">=20.11.30", @@ -104,8 +104,8 @@ "create-require": "^1.1.1", "depseek": "^0.4.1", "dts-bundle-generator": "^9.5.1", - "esbuild": "^0.23.1", - "esbuild-node-externals": "^1.14.0", + "esbuild": "^0.24.0", + "esbuild-node-externals": "^1.15.0", "esbuild-plugin-entry-chunks": "^0.1.15", "esbuild-plugin-extract-helpers": "^0.0.6", "esbuild-plugin-hybrid-export": "^0.2.5", @@ -119,11 +119,11 @@ "minimist": "^1.2.8", "node-fetch-native": "^1.6.4", "prettier": "^3.3.3", - "size-limit": "^11.1.5", + "size-limit": "^11.1.6", "ts-node": "^10.9.2", "tsd": "^0.31.2", - "tsx": "^4.19.1", - "typescript": "^5.6.2", + "tsx": "^4.19.2", + "typescript": "^5.6.3", "which": "^4.0.0", "yaml": "^2.5.1", "zurk": "^0.6.0" From 833825d9e4655ef22b056844db5e374cd6a86ae1 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 29 Oct 2024 18:25:49 +0300 Subject: [PATCH 14/14] chore(deps): update which to v5.0.0 --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 60aea4b73a..76486b04ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "tsd": "^0.31.2", "tsx": "^4.19.2", "typescript": "^5.6.3", - "which": "^4.0.0", + "which": "^5.0.0", "yaml": "^2.5.1", "zurk": "^0.6.0" }, @@ -5741,9 +5741,9 @@ } }, "node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { @@ -5753,7 +5753,7 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/wrap-ansi": { diff --git a/package.json b/package.json index b03c08e43d..1fec872c78 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "tsd": "^0.31.2", "tsx": "^4.19.2", "typescript": "^5.6.3", - "which": "^4.0.0", + "which": "^5.0.0", "yaml": "^2.5.1", "zurk": "^0.6.0" },