diff --git a/package.json b/package.json index 7df7a02d670..4db21185ad4 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "@google-cloud/monitoring": "^4.1.0", "@jessie.js/eslint-plugin": "^0.4.1", "@types/express": "^4.17.17", - "@types/node": "^22.0.0", + "@types/node": "^22.9.0", "ava": "^5.3.0", "c8": "^9.1.0", "conventional-changelog-conventionalcommits": "^4.6.0", @@ -36,7 +36,7 @@ "type-coverage": "^2.27.1", "typedoc": "^0.26.7", "typedoc-plugin-markdown": "^4.2.1", - "typescript": "^5.6.2", + "typescript": "~5.7.1-rc", "typescript-eslint": "^7.18.0" }, "resolutions": { diff --git a/packages/ERTP/package.json b/packages/ERTP/package.json index a35a4ac0be5..df1ccb185d8 100644 --- a/packages/ERTP/package.json +++ b/packages/ERTP/package.json @@ -53,7 +53,7 @@ }, "devDependencies": { "@agoric/swingset-vat": "^0.32.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@fast-check/ava": "^1.1.5", "ava": "^5.3.0", "tsd": "^0.31.1" diff --git a/packages/SwingSet/package.json b/packages/SwingSet/package.json index 282286861b8..dedaebc8250 100644 --- a/packages/SwingSet/package.json +++ b/packages/SwingSet/package.json @@ -38,10 +38,10 @@ "@agoric/vat-data": "^0.5.2", "@agoric/xsnap-lockdown": "^0.14.0", "@endo/base64": "^1.0.8", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", "@endo/check-bundle": "^1.0.11", - "@endo/compartment-mapper": "^1.3.1", + "@endo/compartment-mapper": "^1.4.0", "@endo/eventual-send": "^1.2.7", "@endo/far": "^1.1.8", "@endo/import-bundle": "^1.3.1", diff --git a/packages/agoric-cli/package.json b/packages/agoric-cli/package.json index bdcd0153724..6db25075ab5 100644 --- a/packages/agoric-cli/package.json +++ b/packages/agoric-cli/package.json @@ -59,9 +59,9 @@ "@cosmjs/math": "^0.32.3", "@cosmjs/proto-signing": "^0.32.3", "@cosmjs/stargate": "^0.32.3", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", - "@endo/compartment-mapper": "^1.3.1", + "@endo/compartment-mapper": "^1.4.0", "@endo/env-options": "^1.1.7", "@endo/far": "^1.1.8", "@endo/init": "^1.1.6", diff --git a/packages/boot/package.json b/packages/boot/package.json index b6632fdf00e..9b2ad39c118 100644 --- a/packages/boot/package.json +++ b/packages/boot/package.json @@ -40,7 +40,7 @@ "@agoric/vow": "^0.1.0", "@agoric/zoe": "^0.26.2", "@agoric/zone": "^0.2.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", "@endo/eventual-send": "^1.2.7", "@endo/far": "^1.1.8", @@ -59,7 +59,7 @@ "@endo/patterns": "^1.4.6", "ava": "^5.3.0", "c8": "^9.1.0", - "ts-blank-space": "^0.4.1" + "ts-blank-space": "^0.4.3" }, "files": [ "CHANGELOG.md", diff --git a/packages/builders/package.json b/packages/builders/package.json index 28c62a5fce3..d2933fd81f4 100644 --- a/packages/builders/package.json +++ b/packages/builders/package.json @@ -30,7 +30,7 @@ "@agoric/vat-data": "^0.5.2", "@agoric/vats": "^0.15.1", "@agoric/zoe": "^0.26.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", "@endo/eventual-send": "^1.2.7", "@endo/far": "^1.1.8", diff --git a/packages/client-utils/package.json b/packages/client-utils/package.json index 749c33e7fac..1f7ef9f271d 100644 --- a/packages/client-utils/package.json +++ b/packages/client-utils/package.json @@ -24,7 +24,7 @@ "devDependencies": { "ava": "^5.3.0", "c8": "^9.1.0", - "ts-blank-space": "^0.4.1" + "ts-blank-space": "^0.4.3" }, "dependencies": { "@agoric/casting": "^0.4.2", diff --git a/packages/cosmic-proto/package.json b/packages/cosmic-proto/package.json index 0f9b8b5a450..191b2dbfe09 100644 --- a/packages/cosmic-proto/package.json +++ b/packages/cosmic-proto/package.json @@ -145,13 +145,13 @@ "@agoric/cosmos": "^0.34.1", "@ava/typescript": "^4.1.0", "@cosmology/telescope": "https://gitpkg.vercel.app/agoric-labs/telescope/packages/telescope?8d2c2f6ba637a5578eead09a7368dc41c262a9d0", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/import-bundle": "^1.3.1", "ava": "^5.3.1", "rimraf": "^5.0.0", "tsd": "^0.31.1", "tsimp": "^2.0.11", - "typescript": "~5.6.2" + "typescript": "~5.7.1-rc" }, "dependencies": { "@endo/base64": "^1.0.8", diff --git a/packages/cosmic-swingset/package.json b/packages/cosmic-swingset/package.json index 4751fdcd1d8..9ebf3e30c0e 100644 --- a/packages/cosmic-swingset/package.json +++ b/packages/cosmic-swingset/package.json @@ -31,7 +31,7 @@ "@agoric/swingset-vat": "^0.32.2", "@agoric/telemetry": "^0.6.2", "@agoric/vm-config": "^0.1.0", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/env-options": "^1.1.7", "@endo/errors": "^1.2.7", "@endo/import-bundle": "^1.3.1", diff --git a/packages/deploy-script-support/package.json b/packages/deploy-script-support/package.json index d34ea67d5de..bb06b919fd2 100644 --- a/packages/deploy-script-support/package.json +++ b/packages/deploy-script-support/package.json @@ -43,7 +43,7 @@ "@agoric/time": "^0.3.2", "@agoric/zoe": "^0.26.2", "@endo/base64": "^1.0.8", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/far": "^1.1.8", "@endo/marshal": "^1.6.1", "@endo/nat": "^5.0.12", diff --git a/packages/fast-usdc/package.json b/packages/fast-usdc/package.json index 4bfb3860404..903a6ccf865 100644 --- a/packages/fast-usdc/package.json +++ b/packages/fast-usdc/package.json @@ -28,7 +28,8 @@ "@fast-check/ava": "^2.0.1", "ava": "^5.3.0", "c8": "^9.1.0", - "ts-blank-space": "^0.4.1" + "execa": "^9.5.1", + "ts-blank-space": "^0.4.3" }, "dependencies": { "@agoric/client-utils": "^0.1.0", @@ -39,18 +40,18 @@ "@agoric/store": "^0.9.2", "@agoric/vow": "^0.1.0", "@agoric/zoe": "^0.26.2", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", "@endo/base64": "^1.0.8", "@endo/common": "^1.2.7", "@endo/errors": "^1.2.7", "@endo/eventual-send": "^1.2.7", "@endo/far": "^1.1.8", + "@endo/init": "^1.1.6", "@endo/marshal": "^1.6.1", "@endo/pass-style": "^1.4.6", "@endo/patterns": "^1.4.6", "@endo/promise-kit": "^1.1.7", - "@cosmjs/proto-signing": "^0.32.4", - "@cosmjs/stargate": "^0.32.4", - "@endo/init": "^1.1.6", "@nick134-bit/noblejs": "0.0.2", "agoric": "^0.21.1", "bech32": "^2.0.0", diff --git a/packages/fast-usdc/src/cli/index.js b/packages/fast-usdc/src/cli/index.js index 61aa8abd6ff..9019afcef35 100755 --- a/packages/fast-usdc/src/cli/index.js +++ b/packages/fast-usdc/src/cli/index.js @@ -1,4 +1,4 @@ -#!/usr/bin/env node +#!/usr/bin/env -S TS_BLANK_SPACE_EMIT=false node --import ts-blank-space/register import '@endo/init/legacy.js'; import { initProgram } from './cli.js'; diff --git a/packages/fast-usdc/test/cli/cli.test.ts b/packages/fast-usdc/test/cli/cli.test.ts index ae0d53216a5..399a4a12040 100644 --- a/packages/fast-usdc/test/cli/cli.test.ts +++ b/packages/fast-usdc/test/cli/cli.test.ts @@ -1,6 +1,6 @@ import '@endo/init/legacy.js'; import test from 'ava'; -import { spawn } from 'child_process'; +import { execa } from 'execa'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import { initProgram } from '../../src/cli/cli.js'; @@ -8,33 +8,15 @@ import { initProgram } from '../../src/cli/cli.js'; const dir = dirname(fileURLToPath(import.meta.url)); const CLI_PATH = join(dir, '../../src/cli/index.js'); -const collectStdErr = (cmd: string[]) => - new Promise(resolve => { - const child = spawn('node', cmd); - let stderr = ''; - - child.stderr.on('data', data => { - stderr += data.toString(); - }); - - child.on('close', () => { - resolve(stderr); - }); - }); - -const collectStdOut = (cmd: string[]) => - new Promise(resolve => { - const child = spawn('node', cmd); - let stdout = ''; - - child.stdout.on('data', data => { - stdout += data.toString(); - }); - - child.on('close', () => { - resolve(stdout); - }); - }); +const runCli = async (args: string[]) => { + await null; + try { + const { stdout } = await execa(CLI_PATH, args); + return stdout; + } catch (error: any) { + return error.stderr || error.stdout || error.message; + } +}; const mockConfig = () => { let initArgs: any[]; @@ -67,119 +49,91 @@ const mockTransfer = () => { }; test('shows help when run without arguments', async t => { - const output = await collectStdErr([CLI_PATH]); + const output = await runCli([]); // Replace home path (e.g. "/home/samsiegart/.fast-usdc") with "~/.fast-usdc" so snapshots work on different machines. const regex = /"\/(.+\/)?\.fast-usdc\/"/g; - const result = (output as string).replace(regex, '"~/.fast-usdc"'); + const result = output.replace(regex, '"~/.fast-usdc"'); t.snapshot(result); }); test('shows help for transfer command', async t => { - const output = await collectStdOut([CLI_PATH, 'transfer', '-h']); - + const output = await runCli(['transfer', '-h']); t.snapshot(output); }); test('shows help for config command', async t => { - const output = await collectStdOut([CLI_PATH, 'config', '-h']); - + const output = await runCli(['config', '-h']); t.snapshot(output); }); test('shows help for config init command', async t => { - const output = await collectStdOut([CLI_PATH, 'config', 'init', '-h']); - + const output = await runCli(['config', 'init', '-h']); t.snapshot(output); }); test('shows help for config update command', async t => { - const output = await collectStdOut([CLI_PATH, 'config', 'update', '-h']); - + const output = await runCli(['config', 'update', '-h']); t.snapshot(output); }); test('shows help for config show command', async t => { - const output = await collectStdOut([CLI_PATH, 'config', 'show', '-h']); - + const output = await runCli(['config', 'show', '-h']); t.snapshot(output); }); test('shows help for deposit command', async t => { - const output = await collectStdOut([CLI_PATH, 'deposit', '-h']); - + const output = await runCli(['deposit', '-h']); t.snapshot(output); }); test('shows help for withdraw command', async t => { - const output = await collectStdOut([CLI_PATH, 'withdraw', '-h']); - + const output = await runCli(['withdraw', '-h']); t.snapshot(output); }); test('shows error when deposit command is run without options', async t => { - const output = await collectStdErr([CLI_PATH, 'deposit']); - + const output = await runCli(['deposit']); t.snapshot(output); }); test('shows error when deposit command is run with invalid amount', async t => { - const output = await collectStdErr([CLI_PATH, 'deposit', 'not-a-number']); - + const output = await runCli(['deposit', 'not-a-number']); t.snapshot(output); }); test('shows error when deposit command is run with invalid fee', async t => { - const output = await collectStdErr([ - CLI_PATH, - 'deposit', - '50', - '--fee', - 'not-a-number', - ]); - + const output = await runCli(['deposit', '50', '--fee', 'not-a-number']); t.snapshot(output); }); test('shows error when withdraw command is run without options', async t => { - const output = await collectStdErr([CLI_PATH, 'withdraw']); - + const output = await runCli(['withdraw']); t.snapshot(output); }); test('shows error when withdraw command is run with invalid amount', async t => { - const output = await collectStdErr([CLI_PATH, 'withdraw', 'not-a-number']); - + const output = await runCli(['withdraw', 'not-a-number']); t.snapshot(output); }); test('shows error when withdraw command is run with invalid fee', async t => { - const output = await collectStdErr([ - CLI_PATH, - 'withdraw', - '50', - '--fee', - 'not-a-number', - ]); - + const output = await runCli(['withdraw', '50', '--fee', 'not-a-number']); t.snapshot(output); }); test('shows error when config init command is run without options', async t => { - const output = await collectStdErr([CLI_PATH, 'config', 'init']); - + const output = await runCli(['config', 'init']); t.snapshot(output); }); test('shows error when transfer command is run without options', async t => { - const output = await collectStdErr([CLI_PATH, 'transfer']); - + const output = await runCli(['transfer']); t.snapshot(output); }); test('shows error when config init command is run without eth seed', async t => { - const output = await collectStdErr([ - CLI_PATH, + const output = await runCli([ 'config', 'init', '--noble-seed', @@ -187,13 +141,11 @@ test('shows error when config init command is run without eth seed', async t => '--agoric-seed', 'bar', ]); - t.snapshot(output); }); test('shows error when config init command is run without agoric seed', async t => { - const output = await collectStdErr([ - CLI_PATH, + const output = await runCli([ 'config', 'init', '--noble-seed', @@ -201,13 +153,11 @@ test('shows error when config init command is run without agoric seed', async t '--eth-seed', 'bar', ]); - t.snapshot(output); }); test('shows error when config init command is run without noble seed', async t => { - const output = await collectStdErr([ - CLI_PATH, + const output = await runCli([ 'config', 'init', '--agoric-seed', @@ -215,7 +165,6 @@ test('shows error when config init command is run without noble seed', async t = '--eth-seed', 'bar', ]); - t.snapshot(output); }); diff --git a/packages/fast-usdc/test/cli/snapshots/cli.test.ts.md b/packages/fast-usdc/test/cli/snapshots/cli.test.ts.md index b044f515a6a..021b8a03a2e 100644 --- a/packages/fast-usdc/test/cli/snapshots/cli.test.ts.md +++ b/packages/fast-usdc/test/cli/snapshots/cli.test.ts.md @@ -24,8 +24,7 @@ Generated by [AVA](https://avajs.dev). withdraw [options] Withdraw assets from the liquidity pool␊ transfer Transfer USDC from Ethereum/L2 to Cosmos via Fast␊ USDC␊ - help [command] display help for command␊ - ` + help [command] display help for command` ## shows help for transfer command @@ -40,8 +39,7 @@ Generated by [AVA](https://avajs.dev). dest Destination address in Cosmos␊ ␊ Options:␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows help for config command @@ -58,8 +56,7 @@ Generated by [AVA](https://avajs.dev). show Show current config␊ init [options] Set initial config values␊ update [options] Update config values␊ - help [command] display help for command␊ - ` + help [command] display help for command` ## shows help for config init command @@ -95,8 +92,7 @@ Generated by [AVA](https://avajs.dev). "0xbd3fa81b58ba92a82136038b25adec7066af3155")␊ --token-contract-address [address] Address of USDC token contract (default:␊ "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows help for config update command @@ -123,8 +119,7 @@ Generated by [AVA](https://avajs.dev). --noble-to-agoric-channel [channel] Channel ID on Noble for Agoric␊ --token-messenger-address [address] Address of TokenMessenger contract␊ --token-contract-address [address] Address of USDC token contract␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows help for config show command @@ -135,8 +130,7 @@ Generated by [AVA](https://avajs.dev). Show current config␊ ␊ Options:␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows help for deposit command @@ -152,8 +146,7 @@ Generated by [AVA](https://avajs.dev). Options:␊ --id [offer-id] Offer ID␊ --fee [fee] Cosmos fee␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows help for withdraw command @@ -169,82 +162,70 @@ Generated by [AVA](https://avajs.dev). Options:␊ --id [offer-id] Offer ID␊ --fee [fee] Cosmos fee␊ - -h, --help display help for command␊ - ` + -h, --help display help for command` ## shows error when deposit command is run without options > Snapshot 1 - `error: missing required argument 'give'␊ - ` + 'error: missing required argument \'give\'' ## shows error when deposit command is run with invalid amount > Snapshot 1 - `error: command-argument value 'not-a-number' is invalid for argument 'give'. Not a decimal number.␊ - ` + 'error: command-argument value \'not-a-number\' is invalid for argument \'give\'. Not a decimal number.' ## shows error when deposit command is run with invalid fee > Snapshot 1 - `error: option '--fee [fee]' argument 'not-a-number' is invalid. Fee must be a number.␊ - ` + 'error: option \'--fee [fee]\' argument \'not-a-number\' is invalid. Fee must be a number.' ## shows error when withdraw command is run without options > Snapshot 1 - `error: missing required argument 'want'␊ - ` + 'error: missing required argument \'want\'' ## shows error when withdraw command is run with invalid amount > Snapshot 1 - `error: command-argument value 'not-a-number' is invalid for argument 'want'. Not a decimal number.␊ - ` + 'error: command-argument value \'not-a-number\' is invalid for argument \'want\'. Not a decimal number.' ## shows error when withdraw command is run with invalid fee > Snapshot 1 - `error: option '--fee [fee]' argument 'not-a-number' is invalid. Fee must be a number.␊ - ` + 'error: option \'--fee [fee]\' argument \'not-a-number\' is invalid. Fee must be a number.' ## shows error when config init command is run without options > Snapshot 1 - `error: required option '--noble-seed ' not specified␊ - ` + 'error: required option \'--noble-seed \' not specified' ## shows error when transfer command is run without options > Snapshot 1 - `error: missing required argument 'amount'␊ - ` + 'error: missing required argument \'amount\'' ## shows error when config init command is run without eth seed > Snapshot 1 - `error: required option '--eth-seed ' not specified␊ - ` + 'error: required option \'--eth-seed \' not specified' ## shows error when config init command is run without agoric seed > Snapshot 1 - `error: required option '--agoric-seed ' not specified␊ - ` + 'error: required option \'--agoric-seed \' not specified' ## shows error when config init command is run without noble seed > Snapshot 1 - `error: required option '--noble-seed ' not specified␊ - ` + 'error: required option \'--noble-seed \' not specified' diff --git a/packages/fast-usdc/test/cli/snapshots/cli.test.ts.snap b/packages/fast-usdc/test/cli/snapshots/cli.test.ts.snap index ab682b37ff1..7f35de78c2a 100644 Binary files a/packages/fast-usdc/test/cli/snapshots/cli.test.ts.snap and b/packages/fast-usdc/test/cli/snapshots/cli.test.ts.snap differ diff --git a/packages/governance/package.json b/packages/governance/package.json index 643dfa9b474..1a98459736c 100644 --- a/packages/governance/package.json +++ b/packages/governance/package.json @@ -39,7 +39,7 @@ "@agoric/time": "^0.3.2", "@agoric/vat-data": "^0.5.2", "@agoric/zoe": "^0.26.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", "@endo/eventual-send": "^1.2.7", "@endo/far": "^1.1.8", @@ -50,7 +50,7 @@ }, "devDependencies": { "@agoric/swingset-vat": "^0.32.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/init": "^1.1.6", "ava": "^5.3.0", "c8": "^9.1.0" diff --git a/packages/inter-protocol/package.json b/packages/inter-protocol/package.json index b2815e7b0a1..46c983b6447 100644 --- a/packages/inter-protocol/package.json +++ b/packages/inter-protocol/package.json @@ -54,7 +54,7 @@ "@agoric/swingset-liveslots": "^0.10.2", "@agoric/swingset-vat": "^0.32.2", "@agoric/zone": "^0.2.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/init": "^1.1.6", "@endo/promise-kit": "^1.1.7", "@fast-check/ava": "^1.1.5", diff --git a/packages/internal/package.json b/packages/internal/package.json index 4ebd92eb032..5db1fcdfa13 100755 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -41,6 +41,14 @@ "tsd": "^0.31.1" }, "ava": { + "extensions": { + "js": true, + "ts": "module" + }, + "nodeArguments": [ + "--import=ts-blank-space/register", + "--no-warnings" + ], "require": [ "@endo/init/debug.js" ], diff --git a/packages/internal/src/index.js b/packages/internal/src/index.js index d241d8f6ece..4fc0dc7658d 100644 --- a/packages/internal/src/index.js +++ b/packages/internal/src/index.js @@ -7,7 +7,7 @@ export * from './debug.js'; export * from './errors.js'; export * from './js-utils.js'; export * from './method-tools.js'; -export * from './ses-utils.js'; +export * from './ses-utils.ts'; export * from './typeCheck.js'; export * from './typeGuards.js'; diff --git a/packages/internal/src/netstring.js b/packages/internal/src/netstring.js index 38d4fff30ef..fe7d5b49b42 100644 --- a/packages/internal/src/netstring.js +++ b/packages/internal/src/netstring.js @@ -89,6 +89,7 @@ export function decode(data, optMaxChunkSize) { */ // input is a byte pipe, output is a sequence of Buffers export function netstringDecoderStream(optMaxChunkSize) { + /** @type {Buffer} */ let buffered = Buffer.from(''); /** * @param {Buffer} chunk diff --git a/packages/internal/src/ses-utils.js b/packages/internal/src/ses-utils.ts similarity index 59% rename from packages/internal/src/ses-utils.js rename to packages/internal/src/ses-utils.ts index 11b11699d4b..c80a994f0f1 100644 --- a/packages/internal/src/ses-utils.js +++ b/packages/internal/src/ses-utils.ts @@ -1,5 +1,6 @@ // @ts-check // @jessie-check +/* eslint-disable no-use-before-define */ /** * @file Utility functions that are dependent upon a hardened environment, * either directly or indirectly (e.g. by @endo imports). @@ -7,40 +8,28 @@ import { q, Fail, makeError, annotateError, X } from '@endo/errors'; import { deeplyFulfilled, isObject } from '@endo/marshal'; -import { makePromiseKit } from '@endo/promise-kit'; -import { makeQueue } from '@endo/stream'; +import { makePromiseKit, type PromiseKit } from '@endo/promise-kit'; +import { makeQueue, type AsyncQueue } from '@endo/stream'; import { asyncGenerate } from 'jessie.js'; const { fromEntries, keys, values } = Object; -/** @import {ERef} from '@endo/far' */ - /** - * @template T - * @typedef {{ [KeyType in keyof T]: T[KeyType] } & {}} Simplify flatten the + * flatten the * type output to improve type hints shown in editors * https://github.com/sindresorhus/type-fest/blob/main/source/simplify.d.ts */ - -/** - * @typedef {(...args: any[]) => any} Callable - */ - -/** - * @template {{}} T - * @typedef {{ - * [K in keyof T]: T[K] extends Callable ? T[K] : DeeplyAwaited; - * }} DeeplyAwaitedObject - */ - -/** - * @template T - * @typedef {T extends PromiseLike - * ? Awaited - * : T extends {} - * ? Simplify> - * : Awaited} DeeplyAwaited - */ +export type Simplify = { [KeyType in keyof T]: T[KeyType] } & {}; +export type Callable = (...args: any[]) => any; +export type DeeplyAwaitedObject = { + [K in keyof T]: T[K] extends Callable ? T[K] : DeeplyAwaited; +}; +export type DeeplyAwaited = + T extends PromiseLike + ? Awaited + : T extends {} + ? Simplify> + : Awaited; /** * A more constrained version of {deeplyFulfilled} for type safety until @@ -49,17 +38,24 @@ const { fromEntries, keys, values } = Object; * * @type {(unfulfilledTerms: T) => Promise>} */ -export const deeplyFulfilledObject = async obj => { +export const deeplyFulfilledObject: ( + unfulfilledTerms: T, +) => Promise> = async obj => { isObject(obj) || Fail`param must be an object`; return deeplyFulfilled(obj); }; /** * Tolerate absence of AggregateError in e.g. xsnap. - * - * @type {(errors: Error[], message?: string, options?: object) => Error} + * @param errors + * @param message + * @param options */ -const makeAggregateError = +const makeAggregateError: ( + errors: Error[], + message?: string, + options?: object, +) => Error = typeof AggregateError === 'function' ? (errors, message, options) => AggregateError(errors, message, options) : (errors, message, options) => { @@ -69,18 +65,16 @@ const makeAggregateError = }); }; -/** - * @template T - * @param {readonly (T | PromiseLike)[]} items - * @returns {Promise} - */ -export const PromiseAllOrErrors = async items => { +export const PromiseAllOrErrors = async ( + items: readonly (T | PromiseLike)[], +): Promise => { return Promise.allSettled(items).then(results => { - const errors = /** @type {PromiseRejectedResult[]} */ ( - results.filter(({ status }) => status === 'rejected') - ).map(result => result.reason); + const errors: Error[] = results + .filter(({ status }) => status === 'rejected') + // @ts-expect-error narrowed by filter + .map(result => result.reason); if (!errors.length) { - return /** @type {PromiseFulfilledResult[]} */ (results).map( + return (results as PromiseFulfilledResult[]).map( result => result.value, ); } else if (errors.length === 1) { @@ -91,13 +85,10 @@ export const PromiseAllOrErrors = async items => { }); }; -/** - * @template T - * @param {() => Promise} trier - * @param {(error?: unknown) => Promise} finalizer - * @returns {ReturnType} - */ -export const aggregateTryFinally = async (trier, finalizer) => +export const aggregateTryFinally = async ( + trier: () => Promise, + finalizer: (error?: unknown) => Promise, +): ReturnType<() => Promise> => trier().then( async result => finalizer().then(() => result), async tryError => @@ -112,21 +103,20 @@ export const aggregateTryFinally = async (trier, finalizer) => /** * Run a function with the ability to defer last-in-first-out cleanup callbacks. * - * @template T - * @param {( - * addCleanup: (fn: (err?: unknown) => Promise) => void, - * ) => Promise} fn - * @returns {ReturnType} + * @param fn */ -export const withDeferredCleanup = async fn => { - /** @type {((err?: unknown) => unknown)[]} */ - const cleanupsLIFO = []; - /** @type {(cleanup: (err?: unknown) => unknown) => void} */ - const addCleanup = cleanup => { +export const withDeferredCleanup = async ( + fn: ( + addCleanup: (cfn: (err?: unknown) => Promise) => void, + ) => Promise, +): ReturnType< + (addCleanup: (cfn: (err?: unknown) => Promise) => void) => Promise +> => { + const cleanupsLIFO = [] as ((err?: unknown) => unknown)[]; + const addCleanup: (cleanup: (err?: unknown) => unknown) => void = cleanup => { cleanupsLIFO.unshift(cleanup); }; - /** @type {(err?: unknown) => Promise} */ - const finalizer = async err => { + const finalizer: (err?: unknown) => Promise = async err => { // Run each cleanup in its own isolated stack. const cleanupResults = cleanupsLIFO.map(async cleanup => { await null; @@ -137,21 +127,20 @@ export const withDeferredCleanup = async fn => { return aggregateTryFinally(() => fn(addCleanup), finalizer); }; -/** - * @template {Record} T - * @typedef {{ [P in keyof T]: Exclude }} AllDefined - */ +export type AllDefined> = { + [P in keyof T]: Exclude; +}; /** * Concise way to check values are available from object literal shorthand. * Throws error message to specify the missing values. * - * @template {Record} T - * @param {T} obj - * @returns {asserts obj is AllDefined} + * @param obj * @throws if any value in the object entries is not defined */ -export const assertAllDefined = obj => { +export function assertAllDefined>( + obj: T, +): asserts obj is AllDefined { const missing = []; for (const [key, val] of Object.entries(obj)) { if (val === undefined) { @@ -161,24 +150,27 @@ export const assertAllDefined = obj => { if (missing.length > 0) { Fail`missing ${q(missing)}`; } -}; +} +harden(assertAllDefined); -/** @type {IteratorResult} */ -const notDone = harden({ done: false, value: undefined }); +const notDone = harden({ done: false, value: undefined }) as IteratorResult< + undefined, + never +>; -/** @type {IteratorResult} */ -const alwaysDone = harden({ done: true, value: undefined }); +const alwaysDone = harden({ done: true, value: undefined }) as IteratorResult< + never, + void +>; export const forever = asyncGenerate(() => notDone); /** - * @template T - * @param {() => T} produce The value of `await produce()` is used for its + * @param produce The value of `await produce()` is used for its * truthiness vs falsiness. IOW, it is coerced to a boolean so the caller need * not bother doing this themselves. - * @returns {AsyncIterable>} */ -export const whileTrue = produce => +export const whileTrue = (produce: () => T): AsyncIterable> => asyncGenerate(async () => { const value = await produce(); if (!value) { @@ -191,13 +183,11 @@ export const whileTrue = produce => }); /** - * @template T - * @param {() => T} produce The value of `await produce()` is used for its + * @param produce The value of `await produce()` is used for its * truthiness vs falsiness. IOW, it is coerced to a boolean so the caller need * not bother doing this themselves. - * @returns {AsyncIterable>} */ -export const untilTrue = produce => +export const untilTrue = (produce: () => T): AsyncIterable> => asyncGenerate(async () => { const value = await produce(); if (value) { @@ -212,15 +202,12 @@ export const untilTrue = produce => }); }); -/** @type {(xs: X[], ys: Y[]) => [X, Y][]} */ -export const zip = (xs, ys) => harden(xs.map((x, i) => [x, ys[+i]])); +export const zip = (xs: XT[], ys: YT[]): [XT, YT][] => + harden(xs.map((x, i) => [x, ys[+i]])); -/** - * @type {>>( - * obj: T, - * ) => Promise<{ [K in keyof T]: Awaited }>} - */ -export const allValues = async obj => { +export const allValues = async >>( + obj: T, +): Promise<{ [K in keyof T]: Awaited }> => { const resolved = await Promise.all(values(obj)); // @ts-expect-error cast return harden(fromEntries(zip(keys(obj), resolved))); @@ -231,24 +218,21 @@ export const allValues = async obj => { * all consume the source stream in lockstep, and any one returning or throwing * early will affect the others. * - * @template [T=unknown] - * @param {AsyncIterator} sourceStream - * @param {number} readerCount + * @param sourceStream + * @param readerCount */ -export const synchronizedTee = (sourceStream, readerCount) => { - /** @type {IteratorReturnResult | undefined} */ - let doneResult; +export const synchronizedTee = ( + sourceStream: AsyncIterator, + readerCount: number, +): AsyncGenerator[] => { + let doneResult: IteratorReturnResult | undefined; - /** - * @typedef {IteratorResult< - * (value: PromiseLike>) => void - * >} QueuePayload - */ - /** @type {import('@endo/stream').AsyncQueue[]} */ - const queues = []; + type QueuePayload = IteratorResult< + (value: PromiseLike>) => void + >; + const queues = [] as AsyncQueue[]; - /** @returns {Promise} */ - const pullNext = async () => { + const pullNext = async (): Promise => { const requests = await Promise.allSettled(queues.map(queue => queue.get())); const rejections = []; /** @type {Array<(value: PromiseLike>) => void>} */ @@ -262,8 +246,7 @@ export const synchronizedTee = (sourceStream, readerCount) => { resolvers.push(settledResult.value.value); } } - /** @type {Promise>} */ - let result; + let result: Promise>; if (doneResult) { result = Promise.resolve(doneResult); } else if (rejections.length) { @@ -298,33 +281,26 @@ export const synchronizedTee = (sourceStream, readerCount) => { }; const readers = Array.from({ length: readerCount }).map(() => { - /** @type {import('@endo/stream').AsyncQueue} */ - const queue = makeQueue(); + const queue = makeQueue() as AsyncQueue; queues.push(queue); /** @type {AsyncGenerator} */ const reader = harden({ async next() { - /** - * @type {import('@endo/promise-kit').PromiseKit< - * IteratorResult - * >} - */ - const { promise, resolve } = makePromiseKit(); + const { promise, resolve } = makePromiseKit() as PromiseKit< + IteratorResult + >; queue.put({ value: resolve, done: false }); return promise; }, async return() { - /** - * @type {import('@endo/promise-kit').PromiseKit< - * IteratorResult - * >} - */ - const { promise, resolve } = makePromiseKit(); + const { promise, resolve } = makePromiseKit() as PromiseKit< + IteratorResult + >; queue.put({ value: resolve, done: true }); return promise; }, - async throw(reason) { + async throw(reason: any) { const rejection = Promise.reject(reason); queue.put(rejection); return rejection; diff --git a/packages/internal/src/types.ts b/packages/internal/src/types.ts index 9d5420ff3df..a23c8afead2 100644 --- a/packages/internal/src/types.ts +++ b/packages/internal/src/types.ts @@ -2,7 +2,7 @@ import type { ERef, RemotableBrand } from '@endo/eventual-send'; import type { Primitive } from '@endo/pass-style'; import type { Pattern } from '@endo/patterns'; -import type { Callable } from './ses-utils.js'; +import type { Callable } from './ses-utils.ts'; /** * A map corresponding with a total function such that `get(key)` is assumed to diff --git a/packages/internal/test/utils.test.js b/packages/internal/test/utils.test.js index 60d50fb34fc..198b09bd7f8 100644 --- a/packages/internal/test/utils.test.js +++ b/packages/internal/test/utils.test.js @@ -10,7 +10,7 @@ import { forever, deeplyFulfilledObject, synchronizedTee, -} from '../src/ses-utils.js'; +} from '../src/ses-utils.ts'; test('deeplyFulfilledObject', async t => { const someFar = Far('somefar', { getAsync: () => Promise.resolve('async') }); diff --git a/packages/network/package.json b/packages/network/package.json index 90467360056..0121e31d291 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -36,7 +36,7 @@ "@agoric/swingset-vat": "^0.32.2", "@agoric/vow": "^0.1.0", "@agoric/zone": "^0.2.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "ava": "^5.3.0", "c8": "^9.1.0" }, diff --git a/packages/orchestration/package.json b/packages/orchestration/package.json index 7cf66699adf..edab50c1047 100644 --- a/packages/orchestration/package.json +++ b/packages/orchestration/package.json @@ -58,13 +58,13 @@ "@chain-registry/client": "^1.47.4", "@cosmjs/amino": "^0.32.3", "@cosmjs/proto-signing": "^0.32.3", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/import-bundle": "^1.3.1", "@endo/ses-ava": "^1.2.7", "ava": "^5.3.1", "c8": "^9.1.0", "prettier": "^3.3.2", - "ts-blank-space": "^0.4.1" + "ts-blank-space": "^0.4.3" }, "ava": { "extensions": { diff --git a/packages/pegasus/package.json b/packages/pegasus/package.json index 88dbe054e3c..842bd25bb10 100644 --- a/packages/pegasus/package.json +++ b/packages/pegasus/package.json @@ -38,7 +38,7 @@ "@agoric/vats": "^0.15.1", "@agoric/vow": "^0.1.0", "@agoric/zoe": "^0.26.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@agoric/zone": "^0.2.2", "@endo/captp": "^4.4.2", "@endo/far": "^1.1.8", diff --git a/packages/smart-wallet/package.json b/packages/smart-wallet/package.json index 4cc91e9dd05..f8e0f043ebe 100644 --- a/packages/smart-wallet/package.json +++ b/packages/smart-wallet/package.json @@ -20,7 +20,7 @@ "@agoric/casting": "^0.4.2", "@agoric/cosmic-proto": "^0.4.0", "@agoric/swingset-vat": "^0.32.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/captp": "^4.4.2", "@endo/init": "^1.1.6", "ava": "^5.3.0", diff --git a/packages/solo/package.json b/packages/solo/package.json index 6eaf8754556..09830a46596 100644 --- a/packages/solo/package.json +++ b/packages/solo/package.json @@ -56,7 +56,7 @@ }, "devDependencies": { "@agoric/ertp": "^0.16.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "ava": "^5.3.0", "c8": "^9.1.0" }, diff --git a/packages/spawner/package.json b/packages/spawner/package.json index 098e81d6e71..72ade6b585a 100644 --- a/packages/spawner/package.json +++ b/packages/spawner/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@agoric/internal": "^0.3.2", "@agoric/swingset-vat": "^0.32.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/init": "^1.1.6", "ava": "^5.3.0", "c8": "^9.1.0" diff --git a/packages/swing-store/package.json b/packages/swing-store/package.json index cfadd9a1986..4ffd1972e32 100644 --- a/packages/swing-store/package.json +++ b/packages/swing-store/package.json @@ -24,7 +24,7 @@ "@endo/errors": "^1.2.7", "@agoric/internal": "^0.3.2", "@endo/base64": "^1.0.8", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/check-bundle": "^1.0.11", "@endo/nat": "^5.0.12", "better-sqlite3": "^9.1.1" diff --git a/packages/swingset-runner/package.json b/packages/swingset-runner/package.json index 52494f14614..97144ca059c 100644 --- a/packages/swingset-runner/package.json +++ b/packages/swingset-runner/package.json @@ -32,7 +32,7 @@ "@agoric/telemetry": "^0.6.2", "@agoric/vat-data": "^0.5.2", "@agoric/zoe": "^0.26.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/eventual-send": "^1.2.7", "@endo/init": "^1.1.6", "@endo/marshal": "^1.6.1", diff --git a/packages/swingset-xsnap-supervisor/package.json b/packages/swingset-xsnap-supervisor/package.json index 510aa3e3371..272ab1a0b45 100644 --- a/packages/swingset-xsnap-supervisor/package.json +++ b/packages/swingset-xsnap-supervisor/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@endo/errors": "^1.2.7", "@agoric/swingset-liveslots": "^0.10.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/import-bundle": "^1.3.1", "@endo/init": "^1.1.6", "@endo/marshal": "^1.6.1", diff --git a/packages/vats/package.json b/packages/vats/package.json index ebb304b455b..032c5f4f990 100644 --- a/packages/vats/package.json +++ b/packages/vats/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@agoric/swingset-liveslots": "^0.10.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/init": "^1.1.6", "ava": "^5.3.0", "c8": "^9.1.0" diff --git a/packages/wallet/api/package.json b/packages/wallet/api/package.json index 9711905c867..dbe60e90493 100644 --- a/packages/wallet/api/package.json +++ b/packages/wallet/api/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@agoric/vats": "^0.15.1", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/far": "^1.1.8", "@endo/init": "^1.1.6", "ava": "^5.3.0" diff --git a/packages/xsnap-lockdown/package.json b/packages/xsnap-lockdown/package.json index d2204781d6f..0f06420cd8e 100644 --- a/packages/xsnap-lockdown/package.json +++ b/packages/xsnap-lockdown/package.json @@ -20,7 +20,7 @@ "test:xs": "exit 0" }, "devDependencies": { - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/init": "^1.1.6", "ava": "^5.3.0", "c8": "^9.1.0", diff --git a/packages/xsnap/package.json b/packages/xsnap/package.json index 349aa3017cd..be1ac9eeea8 100644 --- a/packages/xsnap/package.json +++ b/packages/xsnap/package.json @@ -31,7 +31,7 @@ "@endo/errors": "^1.2.7", "@agoric/internal": "^0.3.2", "@agoric/xsnap-lockdown": "^0.14.0", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/eventual-send": "^1.2.7", "@endo/init": "^1.1.6", "@endo/netstring": "^1.0.12", diff --git a/packages/zoe/package.json b/packages/zoe/package.json index 1de5efe1d04..0d9744b9d3e 100644 --- a/packages/zoe/package.json +++ b/packages/zoe/package.json @@ -55,7 +55,7 @@ "@agoric/vat-data": "^0.5.2", "@agoric/vow": "^0.1.0", "@agoric/zone": "^0.2.2", - "@endo/bundle-source": "^3.4.2", + "@endo/bundle-source": "^3.5.0", "@endo/common": "^1.2.7", "@endo/captp": "^4.4.2", "@endo/eventual-send": "^1.2.7", diff --git a/tsconfig.json b/tsconfig.json index 628996edaba..e3225541671 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,13 @@ "noImplicitThis": true, "noUncheckedSideEffectImports": true, "verbatimModuleSyntax": true, + /* Build config */ + // NPM builds will have .ts extensions transformed by rewriteRelativeImportExtensions + "allowImportingTsExtensions": true, + // This isn't relevant until `tsconfig.build.json` is used (for + // noEmit:false) but it's better to have it here next to + // allowImportingTsExtensions to show what will happen upon build. + "rewriteRelativeImportExtensions": true, "noEmit": true }, "include": [ diff --git a/yarn.lock b/yarn.lock index ed1353fa106..633e42a5c4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1536,22 +1536,28 @@ resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-1.0.8.tgz#85e18bbab74cc1469b6e3f552e8bb7f1f21bb851" integrity sha512-wYfwgni3cY7lYCzk/8DD5150j0hukGVgJ1kczRTiGfXyd0QRxjfn0CcWeWph3ML+9Gh+CLOMotiVWQlCGMqrYQ== -"@endo/bundle-source@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@endo/bundle-source/-/bundle-source-3.4.2.tgz#e827ba82897e56fd37e7903b03e350193f64b894" - integrity sha512-aZw9GNzYUMteGz0DwPBGX0fokOWYsGBokvbs8NeR1gOV+WY4bguveFfdVTMV+nZncu06ohAiaw0eFvVDM7kcXQ== - dependencies: - "@endo/base64" "^1.0.8" - "@endo/compartment-mapper" "^1.3.1" - "@endo/evasive-transform" "^1.3.2" - "@endo/init" "^1.1.6" - "@endo/promise-kit" "^1.1.7" - "@endo/where" "^1.0.8" +"@endo/base64@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-1.0.9.tgz#53a05e8d461a63443097165397a7aef33a11b251" + integrity sha512-iUZJSE3EeFxHgk5pRaj83Tv6B0BJHJOpV6UqGv0K3UBn4azQysWRR5IzlXzxcVIpPiSVlOhG/6uCqTxP5cE1ug== + +"@endo/bundle-source@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@endo/bundle-source/-/bundle-source-3.5.0.tgz#2678aeebf5e3dda1ee1b0519ac375466a3d1abf2" + integrity sha512-1yWE6s7mn79A2e/8JM4DYNckb29LnD5W1Zm/VPqfpvw8XnJUxg/49Bki0Pdcd2pQDZpCJkb4rnBelFtH6WUelw== + dependencies: + "@endo/base64" "^1.0.9" + "@endo/compartment-mapper" "^1.4.0" + "@endo/evasive-transform" "^1.3.3" + "@endo/init" "^1.1.7" + "@endo/promise-kit" "^1.1.8" + "@endo/where" "^1.0.9" "@rollup/plugin-commonjs" "^19.0.0" "@rollup/plugin-json" "^6.1.0" "@rollup/plugin-node-resolve" "^13.0.0" acorn "^8.2.4" rollup "^2.79.1" + ts-blank-space "^0.4.1" "@endo/captp@^4.4.2": version "4.4.2" @@ -1578,6 +1584,11 @@ resolved "https://registry.yarnpkg.com/@endo/cjs-module-analyzer/-/cjs-module-analyzer-1.0.8.tgz#370a2b46a0610323dccc0dc2495be0ff744e6462" integrity sha512-LGmZf+ehHaXrh0ClDFIIataTsx47Y4YOWDNUZlkOWyugHUAlh5BWoLk6t63GmXFPFs/Bn5KT1fQJqP5aQj3g6A== +"@endo/cjs-module-analyzer@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@endo/cjs-module-analyzer/-/cjs-module-analyzer-1.0.9.tgz#09f042e1e828dce7e2a3729e1b3a7667eb3e30f4" + integrity sha512-uc6SJx0BzTz/JQ2A2SPt2eMVcIZRLyJ9LF94esuQaNoC8ZJOiCDOY7OmiwdIL+xO9qL9uA4sne5/kRTc9bDGEg== + "@endo/common@^1.2.7": version "1.2.7" resolved "https://registry.yarnpkg.com/@endo/common/-/common-1.2.7.tgz#c8d8d395d6d25a9b59d73591211c001627c150fd" @@ -1598,11 +1609,27 @@ "@endo/zip" "^1.0.8" ses "^1.9.1" +"@endo/compartment-mapper@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-1.4.0.tgz#c44baba774b320b107b5b5e9d7868ed00ec7769f" + integrity sha512-OqR2MX5kXpAe/H6DqiwkoanOZvoVXNeTnLbKxcJ0jweVleCndlJ9oOKTp7OI66GnKRQj/U0Iu4doSm/xcUmlsg== + dependencies: + "@endo/cjs-module-analyzer" "^1.0.9" + "@endo/module-source" "^1.1.2" + "@endo/trampoline" "^1.0.3" + "@endo/zip" "^1.0.9" + ses "^1.10.0" + "@endo/env-options@^1.1.7": version "1.1.7" resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.7.tgz#f8f9186010cff12506fdd8f5c8cd4d9051830fd8" integrity sha512-8twSTbM45rzIP0lHw99ei1EaW98H2BXYKjCTUcq1qgK2OvQWaoiXNcJvUQQo1g7i3oPwbXTQsY69L+nTNeCDyA== +"@endo/env-options@^1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.8.tgz#dbfcfbf7574f2a793155281d035c8d6f809f5828" + integrity sha512-Xtxw9n33I4guo8q0sDyZiRuxlfaopM454AKiELgU7l3tqsylCut6IBZ0fPy4ltSHsBib7M3yF7OEMoIuLwzWVg== + "@endo/errors@^1.2.7": version "1.2.7" resolved "https://registry.yarnpkg.com/@endo/errors/-/errors-1.2.7.tgz#cd8513a8e5544f4caec3eb47dd2ec101b445ea8f" @@ -1620,10 +1647,10 @@ typescript "~5.6.2" typescript-eslint "^7.3.1" -"@endo/evasive-transform@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@endo/evasive-transform/-/evasive-transform-1.3.2.tgz#94d3cd7e6f329e6bed566fd4deb0f95bea8584fe" - integrity sha512-Bd1+PJlXbOk54ICjwHiKVtAIDw8dgM3QfuE4xN8KeInA+0spOMT0QN0NFO7ISvy0Miw4blOszsfM3RnXPqQrSg== +"@endo/evasive-transform@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@endo/evasive-transform/-/evasive-transform-1.3.3.tgz#d82b39ba47d5e234337856579c746695cb065fe6" + integrity sha512-cstX1OykuDiZaFrJoPDgd0jE/6lZatErX/xBykLYH9UfSRxY1/h1jmo9sDgqTl8QnSWcwSjb3dtXSC0CQJXx9w== dependencies: "@agoric/babel-generator" "^7.17.6" "@babel/parser" "^7.23.6" @@ -1637,6 +1664,13 @@ dependencies: "@endo/env-options" "^1.1.7" +"@endo/eventual-send@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-1.2.8.tgz#83bf2ec4a940f2b8d2992eba6902d15eb43ec8f1" + integrity sha512-3SgjX+2X4p7IGLFV7Yn6Rj8cQz71KyyzB645njFS94fWgT5LMzetjHu3+yIkoBSUHbXxl9U7EK1iS8UBPIJjDQ== + dependencies: + "@endo/env-options" "^1.1.8" + "@endo/exo@^1.5.6": version "1.5.6" resolved "https://registry.yarnpkg.com/@endo/exo/-/exo-1.5.6.tgz#312a572992a137682adce4d0506875773b53f087" @@ -1680,6 +1714,16 @@ "@endo/lockdown" "^1.0.12" "@endo/promise-kit" "^1.1.7" +"@endo/init@^1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@endo/init/-/init-1.1.7.tgz#3ab328ae0145c3b0e247be9cbdc12d3e714fad25" + integrity sha512-JmnJ1YgoLqhmglujm401D0N1IgYPL/TYf03KgwcpfoN72RCHv0nx4iKR1T05tXJPsEawpF94vHKBV41D1MzLgg== + dependencies: + "@endo/base64" "^1.0.9" + "@endo/eventual-send" "^1.2.8" + "@endo/lockdown" "^1.0.13" + "@endo/promise-kit" "^1.1.8" + "@endo/lockdown@^1.0.12": version "1.0.12" resolved "https://registry.yarnpkg.com/@endo/lockdown/-/lockdown-1.0.12.tgz#589cb12c42a3cc70fc708b72c39582cb8f7e5821" @@ -1687,6 +1731,13 @@ dependencies: ses "^1.9.1" +"@endo/lockdown@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@endo/lockdown/-/lockdown-1.0.13.tgz#b78b7a9329ba676b4e82c2e423b12b09a7811123" + integrity sha512-bFELKY1wWP/WqNWsUiP77OiHT8MjHzgrmUosLqx7uhF8u7XSyUOlFQ0pnT5R4rTDZwMNU6VWwPNt/wH7rnUfAw== + dependencies: + ses "^1.10.0" + "@endo/marshal@^1.6.1": version "1.6.1" resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-1.6.1.tgz#fc65e0bef08b247e5f144998e52325cc03ce98be" @@ -1710,6 +1761,17 @@ "@babel/types" "^7.24.0" ses "^1.9.1" +"@endo/module-source@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@endo/module-source/-/module-source-1.1.2.tgz#fab0ebed5f66d2981dae11a8435a67b5c88ad526" + integrity sha512-HvJyZBwxtDbHzaIqmuQBuPN3T6meOF51txuC93WrIYl7g4xnePo1R/wRJDiFfRC55F+tv7/Xdd3lh9dOI+8USg== + dependencies: + "@agoric/babel-generator" "^7.17.6" + "@babel/parser" "^7.23.6" + "@babel/traverse" "^7.23.6" + "@babel/types" "^7.24.0" + ses "^1.10.0" + "@endo/nat@^5.0.12": version "5.0.12" resolved "https://registry.yarnpkg.com/@endo/nat/-/nat-5.0.12.tgz#80d71e30c55a264f35e0b4ece114e4951373724f" @@ -1754,6 +1816,13 @@ dependencies: ses "^1.9.1" +"@endo/promise-kit@^1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-1.1.8.tgz#412c7fc746b331fe9f3df2fe1ad5a0944a875013" + integrity sha512-Pfp/y2QtNIr1BlGveANzTxr5sXs4B4BdkLF54WcVyeydi3fqvNdESSTUJSVF6xLefrJf3OqsZ4LxEQTWruMbTw== + dependencies: + ses "^1.10.0" + "@endo/ses-ava@^1.2.7": version "1.2.7" resolved "https://registry.yarnpkg.com/@endo/ses-ava/-/ses-ava-1.2.7.tgz#730e102477cf1c316eb04d4e038cdda9728344e7" @@ -1787,16 +1856,31 @@ resolved "https://registry.yarnpkg.com/@endo/trampoline/-/trampoline-1.0.2.tgz#2e2e41ccd361f21b4f208c696200150b79e093b2" integrity sha512-S65oqY4dtRyoMREFWrW7/ujB20vkNWQzg737qnl+5Cjv2ar2te42fOjQfo7EEJ8OekybU38i0iRS6h/ZhXgKfQ== +"@endo/trampoline@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@endo/trampoline/-/trampoline-1.0.3.tgz#24bcd3dee5645a747a37f284716709ffd02ec3cd" + integrity sha512-TYtvWSc97yV/LZDRc5mD4Wt9toKm2UyVjv66FAFiQRsoeKkEaXbus9Ka9byV1MwZv0P1xhCJ5yPV5Q6F9w0Wpw== + "@endo/where@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@endo/where/-/where-1.0.8.tgz#136874439b3bf043a0b4eca17062a384389ea051" integrity sha512-zOc/laKO3+ioYRAeMR6fyzglipB8mHgIucVjZQigEa4fU4VxgNAJVEGze6Z7SPQ//ZtTcmKGsKaTlZA6dY9KMg== +"@endo/where@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@endo/where/-/where-1.0.9.tgz#eafc3c610c53b273e8b04a6d1211c84bde5f53e6" + integrity sha512-p3kcsy3kNKayOmkFhYXSSzb4igSg/+QdWv7n1RVwPwYcre1Tp7n6xKkAv2c3WsERNzBa1ZjRd3btr9c2MBBmMw== + "@endo/zip@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-1.0.8.tgz#1f667e4966ce3aa3c9fc31c180eba966ff2f6891" integrity sha512-o+qrVrSPJjOyy2a8uGaIQ9lc31XDtVlYvK3/urIWPwajZyAyPp7Yrj0feGK7zjeWzfxSN7ycl27JyhN7lSXITg== +"@endo/zip@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-1.0.9.tgz#f16b68d3e03f838de762779e5c9aa1731a27c1fc" + integrity sha512-Iuvm6oZBVQVKpLG6KtjdyTOF2od2lOdjEr2a2UC3ppCxAJRSDC9EQMsE0kkHQra5caRj1JERnoQlqYgn0ZC7ug== + "@es-joy/jsdoccomment@~0.43.1": version "0.43.1" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.43.1.tgz#4b1979b7b4ff8b596fb19a3aa696a438e44608d7" @@ -3521,6 +3605,11 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== +"@sec-ant/readable-stream@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c" + integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg== + "@shikijs/core@1.16.3": version "1.16.3" resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.16.3.tgz#082b53928bf201a8d7cfbe0b5540dc1c609d0a5e" @@ -3546,6 +3635,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sindresorhus/merge-streams@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339" + integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ== + "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" @@ -3763,7 +3857,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^22.0.0": +"@types/node@*", "@types/node@>=13.7.0": version "22.0.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.0.0.tgz#04862a2a71e62264426083abe1e27e87cac05a30" integrity sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw== @@ -3777,6 +3871,13 @@ dependencies: undici-types "~6.19.2" +"@types/node@^22.9.0": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + dependencies: + undici-types "~6.19.8" + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -6448,6 +6549,24 @@ execa@^7.1.1: signal-exit "^3.0.7" strip-final-newline "^3.0.0" +execa@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-9.5.1.tgz#ab9b68073245e1111bba359962a34fcdb28deef2" + integrity sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg== + dependencies: + "@sindresorhus/merge-streams" "^4.0.0" + cross-spawn "^7.0.3" + figures "^6.1.0" + get-stream "^9.0.0" + human-signals "^8.0.0" + is-plain-obj "^4.1.0" + is-stream "^4.0.1" + npm-run-path "^6.0.0" + pretty-ms "^9.0.0" + signal-exit "^4.1.0" + strip-final-newline "^4.0.0" + yoctocolors "^2.0.0" + expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -6631,6 +6750,13 @@ figures@^5.0.0: escape-string-regexp "^5.0.0" is-unicode-supported "^1.2.0" +figures@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a" + integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg== + dependencies: + is-unicode-supported "^2.0.0" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -6942,6 +7068,14 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27" + integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA== + dependencies: + "@sec-ant/readable-stream" "^0.4.1" + is-stream "^4.0.1" + get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" @@ -7381,6 +7515,11 @@ human-signals@^4.3.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== +human-signals@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-8.0.0.tgz#2d3d63481c7c2319f0373428b01ffe30da6df852" + integrity sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -7807,6 +7946,11 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -7868,6 +8012,11 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +is-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b" + integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -7911,6 +8060,11 @@ is-unicode-supported@^1.2.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== +is-unicode-supported@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a" + integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -9604,6 +9758,14 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +npm-run-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-6.0.0.tgz#25cfdc4eae04976f3349c0b1afc089052c362537" + integrity sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA== + dependencies: + path-key "^4.0.0" + unicorn-magic "^0.3.0" + npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -10069,6 +10231,11 @@ parse-ms@^3.0.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-3.0.0.tgz#3ea24a934913345fcc3656deda72df921da3a70e" integrity sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw== +parse-ms@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4" + integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== + parse-package-name@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-1.0.0.tgz#1a108757e4ffc6889d5e78bcc4932a97c097a5a7" @@ -10338,6 +10505,13 @@ pretty-ms@^8.0.0: dependencies: parse-ms "^3.0.0" +pretty-ms@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.2.0.tgz#e14c0aad6493b69ed63114442a84133d7e560ef0" + integrity sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg== + dependencies: + parse-ms "^4.0.0" + proc-log@^2.0.0, proc-log@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" @@ -11012,6 +11186,13 @@ serve-static@^2.1.0: parseurl "^1.3.3" send "^1.0.0" +ses@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/ses/-/ses-1.10.0.tgz#b611dd4605c6a1719665bac159cbd43c84d4f3a9" + integrity sha512-HXmJbNEgY/4hsQfaz5dna39vVKNyvlElRmJYk+bjTqSXSElT0Hr6NKwWVg4j0TxP6IuHp/PNMoWJKIRXzmLbAQ== + dependencies: + "@endo/env-options" "^1.1.8" + ses@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ses/-/ses-1.9.1.tgz#54991a775cea5f9e27292bbb6706941a8203062a" @@ -11520,6 +11701,11 @@ strip-final-newline@^3.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== +strip-final-newline@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz#35a369ec2ac43df356e3edd5dcebb6429aa1fa5c" + integrity sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -11848,6 +12034,13 @@ ts-blank-space@^0.4.1: dependencies: typescript "5.1.6 - 5.6.x" +ts-blank-space@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/ts-blank-space/-/ts-blank-space-0.4.3.tgz#9b98d8ab2f91a767af5a789c944e0544c7591686" + integrity sha512-TLGYO7DqEOygya6IQH7vqIokV2TYuF804Pv9zhc6k8Pos5ryTGZgMp6FyzGr42+pWkRix5pnO5ariMEKRkOVNg== + dependencies: + typescript "5.1.6 - 5.6.x" + tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -12088,7 +12281,7 @@ typescript-eslint@^7.18.0, typescript-eslint@^7.3.1: "@typescript-eslint/parser" "7.18.0" "@typescript-eslint/utils" "7.18.0" -"typescript@5.1.6 - 5.6.x", typescript@^5.4.5, typescript@^5.6.2, typescript@~5.6.2: +"typescript@5.1.6 - 5.6.x", typescript@^5.4.5, typescript@~5.6.2: version "5.6.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== @@ -12098,6 +12291,11 @@ typescript-eslint@^7.18.0, typescript-eslint@^7.3.1: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@~5.7.1-rc: + version "5.7.1-rc" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.1-rc.tgz#1fc978445d309964db88ca2f7f467c1e582dbcc7" + integrity sha512-d6m+HT78uZtyUbXbUyIvuJ6kXCTSJEfy+2pZSUwt9d6JZ0kOMNDwhIILfV5FnaxMwVa48Yfw4sK0ISC4Qyq5tw== + uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" @@ -12123,7 +12321,7 @@ undici-types@~6.11.1: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.11.1.tgz#432ea6e8efd54a48569705a699e62d8f4981b197" integrity sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ== -undici-types@~6.19.2: +undici-types@~6.19.2, undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== @@ -12151,6 +12349,11 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicorn-magic@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz#4efd45c85a69e0dd576d25532fbfa22aa5c8a104" + integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== + unique-filename@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" @@ -12613,3 +12816,8 @@ yocto-queue@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +yoctocolors@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.1.tgz#e0167474e9fbb9e8b3ecca738deaa61dd12e56fc" + integrity sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==