diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md new file mode 100644 index 000000000..0c82cb1ed --- /dev/null +++ b/packages/errors/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +[Unreleased]: https://github.com/MetaMask/ocap-kernel/ diff --git a/packages/errors/README.md b/packages/errors/README.md new file mode 100644 index 000000000..b34cfdab2 --- /dev/null +++ b/packages/errors/README.md @@ -0,0 +1,7 @@ +# `errors` + +Ocap Kernel errors. + +## Contributing + +This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/ocap-kernel#readme). diff --git a/packages/errors/eslint.config.mjs b/packages/errors/eslint.config.mjs new file mode 100644 index 000000000..82c400bc1 --- /dev/null +++ b/packages/errors/eslint.config.mjs @@ -0,0 +1,17 @@ +// @ts-check + +import baseConfig from '../../eslint.config.mjs'; + +/** @type {import('eslint').Linter.Config[]} */ +const config = [ + ...baseConfig, + { + languageOptions: { + parserOptions: { + tsconfigRootDir: new URL('.', import.meta.url).pathname, + }, + }, + }, +]; + +export default config; diff --git a/packages/errors/package.json b/packages/errors/package.json new file mode 100644 index 000000000..46bc3d735 --- /dev/null +++ b/packages/errors/package.json @@ -0,0 +1,81 @@ +{ + "name": "@ocap/errors", + "version": "0.0.0", + "private": true, + "description": "Ocap Kernel errors", + "repository": { + "type": "git", + "url": "https://github.com/MetaMask/ocap-kernel.git" + }, + "type": "module", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "files": [ + "dist/" + ], + "scripts": { + "build": "ts-bridge --project tsconfig.build.json --clean", + "build:docs": "typedoc", + "changelog:validate": "../../scripts/validate-changelog.sh utils", + "clean": "rimraf --glob ./dist './*.tsbuildinfo'", + "lint": "yarn lint:eslint && yarn lint:misc --check && yarn constraints && yarn lint:dependencies", + "lint:dependencies": "depcheck", + "lint:eslint": "eslint . --cache", + "lint:fix": "yarn constraints --fix && yarn lint:eslint --fix && yarn lint:misc --write", + "lint:misc": "prettier --no-error-on-unmatched-pattern '**/*.json' '**/*.md' '**/*.html' '!**/CHANGELOG.old.md' '**/*.yml' '!.yarnrc.yml' '!merged-packages/**' --ignore-path ../../.gitignore", + "publish:preview": "yarn npm publish --tag preview", + "test": "vitest run --config vitest.config.ts", + "test:clean": "yarn test --no-cache --coverage.clean", + "test:dev": "yarn test --coverage false", + "test:verbose": "yarn test --reporter verbose", + "test:watch": "vitest --config vitest.config.ts" + }, + "dependencies": { + "@metamask/utils": "^9.3.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.16.4", + "@metamask/auto-changelog": "^3.4.4", + "@metamask/eslint-config": "^14.0.0", + "@metamask/eslint-config-nodejs": "^14.0.0", + "@metamask/eslint-config-typescript": "^14.0.0", + "@ts-bridge/cli": "^0.5.1", + "@ts-bridge/shims": "^0.1.1", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", + "@typescript-eslint/utils": "^8.8.1", + "@vitest/eslint-plugin": "^1.1.7", + "depcheck": "^1.4.7", + "eslint": "^9.12.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.3.1", + "eslint-plugin-jsdoc": "^50.3.1", + "eslint-plugin-n": "^17.11.1", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-promise": "^7.1.0", + "jsdom": "^24.1.1", + "prettier": "^3.3.3", + "rimraf": "^6.0.1", + "ses": "^1.9.0", + "typedoc": "^0.26.8", + "typescript": "~5.5.4", + "typescript-eslint": "^8.8.1", + "vite": "^5.3.5", + "vitest": "^2.1.2" + }, + "engines": { + "node": "^18.18 || >=20" + } +} diff --git a/packages/errors/src/BaseError.test.ts b/packages/errors/src/BaseError.test.ts new file mode 100644 index 000000000..63538b7d1 --- /dev/null +++ b/packages/errors/src/BaseError.test.ts @@ -0,0 +1,49 @@ +import { describe, it, expect } from 'vitest'; + +import { BaseError } from './BaseError.js'; +import { ErrorCode } from './constants.js'; + +describe('BaseError', () => { + const mockCode = ErrorCode.VatNotFound; + const mockMessage = 'VAT was not found.'; + const mockData = { key: 'value' }; + const mockCause = new Error('Root cause error'); + + it('should create a BaseError with required properties', () => { + const error = new BaseError(mockCode, mockMessage); + expect(error).toBeInstanceOf(BaseError); + expect(error).toBeInstanceOf(Error); + expect(error.name).toBe('BaseError'); + expect(error.message).toBe(mockMessage); + expect(error.code).toBe(mockCode); + expect(error.data).toBeUndefined(); + expect(error.cause).toBeUndefined(); + }); + + it('should create a BaseError with all properties', () => { + const error = new BaseError(mockCode, mockMessage, mockData, mockCause); + expect(error.name).toBe('BaseError'); + expect(error.message).toBe(mockMessage); + expect(error.code).toBe(mockCode); + expect(error.data).toStrictEqual(mockData); + expect(error.cause).toBe(mockCause); + }); + + it('should inherit from the Error class and have the correct name', () => { + const error = new BaseError(mockCode, mockMessage); + expect(error).toBeInstanceOf(Error); + expect(error.name).toBe('BaseError'); + }); + + it('should correctly handle a missing data parameter', () => { + const error = new BaseError(mockCode, mockMessage, undefined, mockCause); + expect(error.data).toBeUndefined(); + expect(error.cause).toBe(mockCause); + }); + + it('should correctly handle a missing cause parameter', () => { + const error = new BaseError(mockCode, mockMessage, mockData); + expect(error.data).toStrictEqual(mockData); + expect(error.cause).toBeUndefined(); + }); +}); diff --git a/packages/errors/src/BaseError.ts b/packages/errors/src/BaseError.ts new file mode 100644 index 000000000..c62815162 --- /dev/null +++ b/packages/errors/src/BaseError.ts @@ -0,0 +1,20 @@ +import type { Json } from '@metamask/utils'; + +import type { ErrorCode } from './constants.js'; + +export class BaseError extends Error { + public readonly code: ErrorCode; + + public data: Json | undefined; + + public cause: unknown; + + constructor(code: ErrorCode, message: string, data?: Json, cause?: unknown) { + super(message, { cause }); + + this.name = this.constructor.name; + this.code = code; + this.data = data; + this.cause = cause; + } +} diff --git a/packages/errors/src/constants.ts b/packages/errors/src/constants.ts new file mode 100644 index 000000000..8d66d9b3d --- /dev/null +++ b/packages/errors/src/constants.ts @@ -0,0 +1,9 @@ +export enum ErrorCode { + SupervisorReadError = 'SUPERVISOR_READ_ERROR', + VatAlreadyExists = 'VAT_ALREADY_EXISTS', + VatCapTpConnectionExists = 'VAT_CAPTP_CONNECTION_EXISTS', + VatCapTpConnectionNotFound = 'VAT_CAPTP_CONNECTION_NOT_FOUND', + VatDeleted = 'VAT_DELETED', + VatNotFound = 'VAT_NOT_FOUND', + VatReadError = 'VAT_READ_ERROR', +} diff --git a/packages/errors/src/errors.test.ts b/packages/errors/src/errors.test.ts new file mode 100644 index 000000000..2c2c57d60 --- /dev/null +++ b/packages/errors/src/errors.test.ts @@ -0,0 +1,98 @@ +import { describe, it, expect } from 'vitest'; + +import { ErrorCode } from './constants.js'; +import { + VatAlreadyExistsError, + VatNotFoundError, + SupervisorReadError, + VatReadError, + VatCapTpConnectionExistsError, + VatCapTpConnectionNotFoundError, + VatDeletedError, +} from './errors.js'; + +describe('Errors classes', () => { + const mockVatId = 'mockVatId'; + const mockSupervisorId = 'mockSupervisorId'; + const mockOriginalError = new Error('Original error'); + + describe('VatAlreadyExistsError', () => { + it('should create a VatAlreadyExistsError with the correct properties', () => { + const error = new VatAlreadyExistsError(mockVatId); + expect(error).toBeInstanceOf(VatAlreadyExistsError); + expect(error.code).toBe(ErrorCode.VatAlreadyExists); + expect(error.message).toBe('Vat already exists.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBeUndefined(); + }); + }); + + describe('VatNotFoundError', () => { + it('should create a VatNotFoundError with the correct properties', () => { + const error = new VatNotFoundError(mockVatId); + expect(error).toBeInstanceOf(VatNotFoundError); + expect(error.code).toBe(ErrorCode.VatNotFound); + expect(error.message).toBe('Vat does not exist.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBeUndefined(); + }); + }); + + describe('SupervisorReadError', () => { + it('should create a SupervisorReadError with the correct properties', () => { + const error = new SupervisorReadError( + mockSupervisorId, + mockOriginalError, + ); + expect(error).toBeInstanceOf(SupervisorReadError); + expect(error.code).toBe(ErrorCode.SupervisorReadError); + expect(error.message).toBe('Unexpected read error from Supervisor.'); + expect(error.data).toStrictEqual({ supervisorId: mockSupervisorId }); + expect(error.cause).toBe(mockOriginalError); + }); + }); + + describe('VatReadError', () => { + it('should create a VatReadError with the correct properties', () => { + const error = new VatReadError(mockVatId, mockOriginalError); + expect(error).toBeInstanceOf(VatReadError); + expect(error.code).toBe(ErrorCode.VatReadError); + expect(error.message).toBe('Unexpected read error from Vat.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBe(mockOriginalError); + }); + }); + + describe('VatCapTpConnectionExistsError', () => { + it('should create a VatCapTpConnectionExistsError with the correct properties', () => { + const error = new VatCapTpConnectionExistsError(mockVatId); + expect(error).toBeInstanceOf(VatCapTpConnectionExistsError); + expect(error.code).toBe(ErrorCode.VatCapTpConnectionExists); + expect(error.message).toBe('Vat already has a CapTP connection.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBeUndefined(); + }); + }); + + describe('VatCapTpConnectionNotFoundError', () => { + it('should create a VatCapTpConnectionNotFoundError with the correct properties', () => { + const error = new VatCapTpConnectionNotFoundError(mockVatId); + expect(error).toBeInstanceOf(VatCapTpConnectionNotFoundError); + expect(error.code).toBe(ErrorCode.VatCapTpConnectionNotFound); + expect(error.message).toBe('Vat does not have a CapTP connection.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBeUndefined(); + }); + }); + + describe('VatDeletedError', () => { + it('should create a VatDeletedError with the correct properties', () => { + const error = new VatDeletedError(mockVatId); + expect(error).toBeInstanceOf(VatDeletedError); + expect(error.code).toBe(ErrorCode.VatDeleted); + expect(error.message).toBe('Vat was deleted.'); + expect(error.data).toStrictEqual({ vatId: mockVatId }); + expect(error.cause).toBeUndefined(); + }); + }); +}); diff --git a/packages/errors/src/errors.ts b/packages/errors/src/errors.ts new file mode 100644 index 000000000..eb6bd7362 --- /dev/null +++ b/packages/errors/src/errors.ts @@ -0,0 +1,70 @@ +import { BaseError } from './BaseError.js'; +import { ErrorCode } from './constants.js'; + +export class VatAlreadyExistsError extends BaseError { + constructor(vatId: string) { + super(ErrorCode.VatAlreadyExists, 'Vat already exists.', { + vatId, + }); + } +} + +export class VatNotFoundError extends BaseError { + constructor(vatId: string) { + super(ErrorCode.VatNotFound, 'Vat does not exist.', { vatId }); + } +} + +export class SupervisorReadError extends BaseError { + constructor(supervisorId: string, originalError: Error) { + super( + ErrorCode.SupervisorReadError, + 'Unexpected read error from Supervisor.', + { + supervisorId, + }, + originalError, + ); + } +} + +export class VatReadError extends BaseError { + constructor(vatId: string, originalError: Error) { + super( + ErrorCode.VatReadError, + 'Unexpected read error from Vat.', + { + vatId, + }, + originalError, + ); + } +} + +export class VatCapTpConnectionExistsError extends BaseError { + constructor(vatId: string) { + super( + ErrorCode.VatCapTpConnectionExists, + 'Vat already has a CapTP connection.', + { + vatId, + }, + ); + } +} + +export class VatCapTpConnectionNotFoundError extends BaseError { + constructor(vatId: string) { + super( + ErrorCode.VatCapTpConnectionNotFound, + 'Vat does not have a CapTP connection.', + { vatId }, + ); + } +} + +export class VatDeletedError extends BaseError { + constructor(vatId: string) { + super(ErrorCode.VatDeleted, 'Vat was deleted.', { vatId }); + } +} diff --git a/packages/errors/src/index.test.ts b/packages/errors/src/index.test.ts new file mode 100644 index 000000000..0460fb750 --- /dev/null +++ b/packages/errors/src/index.test.ts @@ -0,0 +1,19 @@ +import { describe, it, expect } from 'vitest'; + +import * as indexModule from './index.js'; + +describe('index', () => { + it('has the expected exports', () => { + expect(Object.keys(indexModule).sort()).toStrictEqual([ + 'ErrorCode', + 'SupervisorReadError', + 'VatAlreadyExistsError', + 'VatCapTpConnectionExistsError', + 'VatCapTpConnectionNotFoundError', + 'VatDeletedError', + 'VatNotFoundError', + 'VatReadError', + 'toError', + ]); + }); +}); diff --git a/packages/errors/src/index.ts b/packages/errors/src/index.ts new file mode 100644 index 000000000..9b83ec192 --- /dev/null +++ b/packages/errors/src/index.ts @@ -0,0 +1,11 @@ +export { ErrorCode } from './constants.js'; +export { + VatCapTpConnectionExistsError, + VatCapTpConnectionNotFoundError, + SupervisorReadError, + VatAlreadyExistsError, + VatDeletedError, + VatNotFoundError, + VatReadError, +} from './errors.js'; +export { toError } from './utils/toError.js'; diff --git a/packages/errors/src/utils/toError.test.ts b/packages/errors/src/utils/toError.test.ts new file mode 100644 index 000000000..32a32654e --- /dev/null +++ b/packages/errors/src/utils/toError.test.ts @@ -0,0 +1,49 @@ +import { describe, it, expect } from 'vitest'; + +import { toError } from './toError.js'; + +describe('toError', () => { + it('should return the input if it is already an Error', () => { + const originalError = new Error('Existing error'); + const result = toError(originalError); + + expect(result).toBe(originalError); + expect(result.message).toBe('Existing error'); + }); + + it.each([ + { input: 'Some error string', expectedCause: 'Some error string' }, + { input: 404, expectedCause: 404 }, + { input: { key: 'value' }, expectedCause: { key: 'value' } }, + { input: ['error', 'details'], expectedCause: ['error', 'details'] }, + { input: null, expectedCause: null }, + { input: undefined, expectedCause: undefined }, + { input: true, expectedCause: true }, + ])( + 'should create a new Error if the input is not an Error object', + ({ input, expectedCause }) => { + const result = toError(input); + expect(result).toBeInstanceOf(Error); + expect(result.message).toBe('Unknown'); + expect(result.cause).toStrictEqual(expectedCause); + }, + ); + + it('should create a new Error if the input is a symbol', () => { + const problem = Symbol('error'); + const result = toError(problem); + expect(result).toBeInstanceOf(Error); + expect(result.message).toBe('Unknown'); + expect(typeof result.cause).toBe('symbol'); + expect(result.cause).toBe(problem); + }); + + it('should create a new Error if the input is a function', () => { + const problem = (): string => 'problem'; + const result = toError(problem); + expect(result).toBeInstanceOf(Error); + expect(result.message).toBe('Unknown'); + expect(typeof result.cause).toBe('function'); + expect(result.cause).toBe(problem); + }); +}); diff --git a/packages/errors/src/utils/toError.ts b/packages/errors/src/utils/toError.ts new file mode 100644 index 000000000..ac925df54 --- /dev/null +++ b/packages/errors/src/utils/toError.ts @@ -0,0 +1,11 @@ +/** + * Coerce an unknown problem into an Error object. + * + * @param problem - Whatever was caught. + * @returns The problem if it is an Error, or a new Error with the problem as the cause. + */ +export function toError(problem: unknown): Error { + return problem instanceof Error + ? problem + : new Error('Unknown', { cause: problem }); +} diff --git a/packages/errors/tsconfig.build.json b/packages/errors/tsconfig.build.json new file mode 100644 index 000000000..9651b671e --- /dev/null +++ b/packages/errors/tsconfig.build.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.packages.build.json", + "compilerOptions": { + "baseUrl": "./", + "lib": ["DOM", "ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "types": ["ses"] + }, + "references": [], + "files": [], + "include": ["./src"] +} diff --git a/packages/errors/tsconfig.json b/packages/errors/tsconfig.json new file mode 100644 index 000000000..743899d8b --- /dev/null +++ b/packages/errors/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.packages.json", + "compilerOptions": { + "baseUrl": "./", + "lib": ["DOM", "ES2022"], + "types": ["ses", "vitest", "vitest/jsdom"] + }, + "include": ["./src", "./vite.config.ts", "./vitest.config.ts"] +} diff --git a/packages/errors/typedoc.json b/packages/errors/typedoc.json new file mode 100644 index 000000000..f8eb78ae1 --- /dev/null +++ b/packages/errors/typedoc.json @@ -0,0 +1,8 @@ +{ + "entryPoints": [], + "excludePrivate": true, + "hideGenerator": true, + "out": "docs", + "tsconfig": "./tsconfig.build.json", + "projectDocuments": ["documents/*.md"] +} diff --git a/packages/errors/vitest.config.ts b/packages/errors/vitest.config.ts new file mode 100644 index 000000000..d909288c9 --- /dev/null +++ b/packages/errors/vitest.config.ts @@ -0,0 +1,19 @@ +// eslint-disable-next-line spaced-comment +/// + +import { defineConfig, mergeConfig } from 'vite'; + +import { getDefaultConfig } from '../../vitest.config.packages.js'; + +const defaultConfig = getDefaultConfig(); + +const config = mergeConfig( + defaultConfig, + defineConfig({ + test: { + pool: 'vmThreads', + }, + }), +); + +export default config; diff --git a/packages/extension/package.json b/packages/extension/package.json index 6e5eefea6..8347bf599 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -38,7 +38,7 @@ "@endo/patterns": "^1.4.4", "@endo/promise-kit": "^1.1.6", "@metamask/snaps-utils": "^8.3.0", - "@metamask/utils": "^9.1.0", + "@metamask/utils": "^9.3.0", "@ocap/kernel": "workspace:^", "@ocap/shims": "workspace:^", "@ocap/streams": "workspace:^", diff --git a/packages/kernel/package.json b/packages/kernel/package.json index b09a211fa..862f25257 100644 --- a/packages/kernel/package.json +++ b/packages/kernel/package.json @@ -46,7 +46,8 @@ "@endo/eventual-send": "^1.2.6", "@endo/promise-kit": "^1.1.6", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^9.1.0", + "@metamask/utils": "^9.3.0", + "@ocap/errors": "workspace:^", "@ocap/shims": "workspace:^", "@ocap/streams": "workspace:^", "@ocap/utils": "workspace:^", diff --git a/packages/kernel/src/Kernel.test.ts b/packages/kernel/src/Kernel.test.ts index 94c17c229..48e9fc337 100644 --- a/packages/kernel/src/Kernel.test.ts +++ b/packages/kernel/src/Kernel.test.ts @@ -1,5 +1,6 @@ import '@ocap/shims/endoify'; +import { VatAlreadyExistsError, VatNotFoundError } from '@ocap/errors'; import type { MessagePortDuplexStream, DuplexStream } from '@ocap/streams'; import type { MockInstance } from 'vitest'; import { describe, it, expect, vi, beforeEach } from 'vitest'; @@ -95,7 +96,7 @@ describe('Kernel', () => { kernel.launchVat({ id: 'v0', }), - ).rejects.toThrow('Vat with ID v0 already exists.'); + ).rejects.toThrow(VatAlreadyExistsError); expect(kernel.getVatIds()).toStrictEqual(['v0']); }); }); @@ -116,7 +117,7 @@ describe('Kernel', () => { const nonExistentVatId: VatId = 'v9'; await expect(async () => kernel.deleteVat(nonExistentVatId), - ).rejects.toThrow(`Vat with ID ${nonExistentVatId} does not exist.`); + ).rejects.toThrow(VatNotFoundError); expect(terminateMock).not.toHaveBeenCalled(); }); @@ -148,7 +149,7 @@ describe('Kernel', () => { const nonExistentVatId: VatId = 'v9'; await expect(async () => kernel.sendMessage(nonExistentVatId, {} as VatCommand['payload']), - ).rejects.toThrow(`Vat with ID ${nonExistentVatId} does not exist.`); + ).rejects.toThrow(VatNotFoundError); }); it('throws an error when sending a message to the vat throws', async () => { diff --git a/packages/kernel/src/Kernel.ts b/packages/kernel/src/Kernel.ts index ee1b01202..5839540d6 100644 --- a/packages/kernel/src/Kernel.ts +++ b/packages/kernel/src/Kernel.ts @@ -1,6 +1,7 @@ import '@ocap/shims/endoify'; import type { PromiseKit } from '@endo/promise-kit'; import { makePromiseKit } from '@endo/promise-kit'; +import { VatAlreadyExistsError, VatNotFoundError, toError } from '@ocap/errors'; import type { DuplexStream } from '@ocap/streams'; import type { Logger } from '@ocap/utils'; import { makeLogger, stringify } from '@ocap/utils'; @@ -109,7 +110,7 @@ export class Kernel { // TODO: marshal await this.#reply({ method, - params: String(asError(problem)), + params: String(toError(problem)), }); } break; @@ -176,7 +177,7 @@ export class Kernel { */ async launchVat({ id }: { id: VatId }): Promise { if (this.#vats.has(id)) { - throw new Error(`Vat with ID ${id} already exists.`); + throw new VatAlreadyExistsError(id); } const stream = await this.#vatWorkerService.initWorker(id); const vat = new Vat({ id, stream }); @@ -221,21 +222,9 @@ export class Kernel { #getVat(id: VatId): Vat { const vat = this.#vats.get(id); if (vat === undefined) { - throw new Error(`Vat with ID ${id} does not exist.`); + throw new VatNotFoundError(id); } return vat; } } harden(Kernel); - -/** - * Coerce an unknown problem into an Error object. - * - * @param problem - Whatever was caught. - * @returns The problem if it is an Error, or a new Error with the problem as the cause. - */ -function asError(problem: unknown): Error { - return problem instanceof Error - ? problem - : new Error('Unknown', { cause: problem }); -} diff --git a/packages/kernel/src/Supervisor.test.ts b/packages/kernel/src/Supervisor.test.ts index 191c2a6a1..3b299705c 100644 --- a/packages/kernel/src/Supervisor.test.ts +++ b/packages/kernel/src/Supervisor.test.ts @@ -81,7 +81,7 @@ describe('Supervisor', () => { }); }); - it('handles CapTp messages', async () => { + it('handles CapTP messages', async () => { const wrapCapTpSpy = vi.spyOn(streamEnvelope, 'wrapCapTp'); await supervisor.handleMessage({ diff --git a/packages/kernel/src/Supervisor.ts b/packages/kernel/src/Supervisor.ts index 0da884ff0..877ce9af9 100644 --- a/packages/kernel/src/Supervisor.ts +++ b/packages/kernel/src/Supervisor.ts @@ -1,4 +1,5 @@ import { makeCapTP } from '@endo/captp'; +import { SupervisorReadError } from '@ocap/errors'; import type { DuplexStream } from '@ocap/streams'; import { stringify } from '@ocap/utils'; @@ -55,7 +56,7 @@ export class Supervisor { `Unexpected read error from Supervisor "${this.id}"`, error, ); - throw error; + throw new SupervisorReadError(this.id, error); }); } diff --git a/packages/kernel/src/Vat.test.ts b/packages/kernel/src/Vat.test.ts index 9f9e702bc..a214ce7aa 100644 --- a/packages/kernel/src/Vat.test.ts +++ b/packages/kernel/src/Vat.test.ts @@ -1,4 +1,8 @@ import '@ocap/shims/endoify'; +import { + VatCapTpConnectionExistsError, + VatCapTpConnectionNotFoundError, +} from '@ocap/errors'; import { MessagePortDuplexStream, MessagePortWriter } from '@ocap/streams'; import { delay, makePromiseKitMock } from '@ocap/test-utils'; import { stringify } from '@ocap/utils'; @@ -149,7 +153,7 @@ describe('Vat', () => { // @ts-expect-error - Simulating an existing CapTP vat.capTp = {}; await expect(vat.makeCapTp()).rejects.toThrow( - `Vat with id "${vat.id}" already has a CapTP connection.`, + VatCapTpConnectionExistsError, ); }); @@ -172,7 +176,7 @@ describe('Vat', () => { }); }); - it('handles CapTp messages', async () => { + it('handles CapTP messages', async () => { vi.spyOn(vat, 'sendMessage').mockResolvedValueOnce(undefined); const wrapCapTpSpy = vi.spyOn(streamEnvelope, 'wrapCapTp'); const consoleLogSpy = vi.spyOn(vat.logger, 'log'); @@ -210,7 +214,7 @@ describe('Vat', () => { it('throws an error if CapTP connection is not established', async () => { await expect( vat.callCapTp({ method: 'testMethod', params: [] }), - ).rejects.toThrow(`Vat with id "v0" does not have a CapTP connection.`); + ).rejects.toThrow(VatCapTpConnectionNotFoundError); }); it('calls CapTP method with parameters using eventual send', async () => { diff --git a/packages/kernel/src/Vat.ts b/packages/kernel/src/Vat.ts index cc2817155..34f90415e 100644 --- a/packages/kernel/src/Vat.ts +++ b/packages/kernel/src/Vat.ts @@ -1,6 +1,12 @@ import { makeCapTP } from '@endo/captp'; import { E } from '@endo/eventual-send'; import { makePromiseKit } from '@endo/promise-kit'; +import { + VatCapTpConnectionExistsError, + VatCapTpConnectionNotFoundError, + VatDeletedError, + VatReadError, +} from '@ocap/errors'; import type { DuplexStream, Reader } from '@ocap/streams'; import type { Logger } from '@ocap/utils'; import { makeLogger, makeCounter, stringify } from '@ocap/utils'; @@ -82,7 +88,7 @@ export class Vat { /* v8 ignore next 4: Not known to be possible. */ this.#receiveMessages(this.stream).catch((error) => { this.logger.error(`Unexpected read error`, error); - throw error; + throw new VatReadError(this.id, error); }); await this.sendMessage({ method: VatCommandMethod.Ping, params: null }); @@ -110,9 +116,7 @@ export class Vat { */ async makeCapTp(): Promise { if (this.capTp !== undefined) { - throw new Error( - `Vat with id "${this.id}" already has a CapTP connection.`, - ); + throw new VatCapTpConnectionExistsError(this.id); } // Handle writes here. #receiveMessages() handles reads. @@ -143,9 +147,7 @@ export class Vat { */ async callCapTp(payload: CapTpPayload): Promise { if (!this.capTp) { - throw new Error( - `Vat with id "${this.id}" does not have a CapTP connection.`, - ); + throw new VatCapTpConnectionNotFoundError(this.id); } return E(this.capTp.getBootstrap())[payload.method](...payload.params); } @@ -158,7 +160,7 @@ export class Vat { // Handle orphaned messages for (const [messageId, promiseCallback] of this.unresolvedMessages) { - promiseCallback?.reject(new Error('Vat was deleted')); + promiseCallback?.reject(new VatDeletedError(this.id)); this.unresolvedMessages.delete(messageId); } } diff --git a/packages/kernel/src/messages.ts b/packages/kernel/src/messages.ts index e4b9136f9..746939e73 100644 --- a/packages/kernel/src/messages.ts +++ b/packages/kernel/src/messages.ts @@ -2,7 +2,7 @@ export type { VatMessageId } from './messages/vat-message.js'; -// CapTp. +// CapTP. export { isCapTpPayload, isCapTpMessage } from './messages/captp.js'; export type { CapTpPayload, CapTpMessage } from './messages/captp.js'; diff --git a/packages/kernel/src/stream-envelope.ts b/packages/kernel/src/stream-envelope.ts index ec1bc34fc..2612ccbb9 100644 --- a/packages/kernel/src/stream-envelope.ts +++ b/packages/kernel/src/stream-envelope.ts @@ -8,7 +8,7 @@ import type { CapTpMessage, VatCommand, VatCommandReply } from './messages.js'; enum EnvelopeLabel { Command = 'command', - CapTp = 'capTp', + CapTP = 'capTp', } // makeStreamEnvelopeKit requires an enum of labels but typescript diff --git a/packages/kernel/tsconfig.build.json b/packages/kernel/tsconfig.build.json index 966df608d..5992345a3 100644 --- a/packages/kernel/tsconfig.build.json +++ b/packages/kernel/tsconfig.build.json @@ -9,7 +9,8 @@ }, "references": [ { "path": "../streams/tsconfig.build.json" }, - { "path": "../utils/tsconfig.build.json" } + { "path": "../utils/tsconfig.build.json" }, + { "path": "../errors/tsconfig.build.json" } ], "include": ["./src"] } diff --git a/packages/kernel/tsconfig.json b/packages/kernel/tsconfig.json index 8f066fda0..bf95316cf 100644 --- a/packages/kernel/tsconfig.json +++ b/packages/kernel/tsconfig.json @@ -3,6 +3,10 @@ "compilerOptions": { "baseUrl": "./" }, - "references": [{ "path": "../streams" }, { "path": "../utils" }], + "references": [ + { "path": "../streams" }, + { "path": "../utils" }, + { "path": "../errors" } + ], "include": ["./src", "./test", "./vite.config.ts", "./vitest.config.ts"] } diff --git a/packages/streams/package.json b/packages/streams/package.json index d2faf400e..3bec7129e 100644 --- a/packages/streams/package.json +++ b/packages/streams/package.json @@ -49,7 +49,7 @@ "@endo/promise-kit": "^1.1.6", "@endo/stream": "^1.2.6", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^9.1.0", + "@metamask/utils": "^9.3.0", "@ocap/utils": "workspace:^" }, "devDependencies": { diff --git a/packages/utils/package.json b/packages/utils/package.json index 1e252c92f..ee0eab4e2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -43,7 +43,7 @@ }, "dependencies": { "@endo/captp": "^4.4.0", - "@metamask/utils": "^9.1.0" + "@metamask/utils": "^9.3.0" }, "devDependencies": { "@arethetypeswrong/cli": "^0.16.4", diff --git a/tsconfig.build.json b/tsconfig.build.json index bfec97504..ba0d0e865 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -2,7 +2,9 @@ "files": [], "include": [], "references": [ + { "path": "./packages/errors/tsconfig.build.json" }, { "path": "./packages/extension/tsconfig.build.json" }, + { "path": "./packages/kernel/tsconfig.build.json" }, { "path": "./packages/shims/tsconfig.build.json" }, { "path": "./packages/streams/tsconfig.build.json" }, { "path": "./packages/utils/tsconfig.build.json" } diff --git a/tsconfig.json b/tsconfig.json index 78fd67721..c13ac57a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,9 @@ "files": [], "include": [], "references": [ + { "path": "./packages/errors" }, { "path": "./packages/extension" }, + { "path": "./packages/kernel" }, { "path": "./packages/shims" }, { "path": "./packages/streams" }, { "path": "./packages/test-utils" }, diff --git a/yarn.lock b/yarn.lock index 929c103e1..4072cb441 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,193 +65,193 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/highlight": "npm:^7.25.7" picocolors: "npm:^1.0.0" - checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624 + checksum: 10/000fb8299fb35b6217d4f6c6580dcc1fa2f6c0f82d0a54b8a029966f633a8b19b490a7a906b56a94e9d8bee91c3bc44c74c44c33fb0abaa588202f6280186291 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: 10/d37a8936cc355a9ca3050102e03d179bdae26bd2e5c99a977637376c192b23637a039795f153c849437a086727628c9860e2c6af92d7151396e2362c09176337 +"@babel/compat-data@npm:^7.25.7": + version: 7.25.8 + resolution: "@babel/compat-data@npm:7.25.8" + checksum: 10/269fcb0d89e02e36c8a11e0c1b960a6b4204e88f59f20c374d28f8e318f4cd5ded42dfedc4b54162065e6a10f71c0de651f5ed3f9b45d3a4b52240196df85726 languageName: node linkType: hard "@babel/core@npm:^7.23.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" + version: 7.25.8 + resolution: "@babel/core@npm:7.25.8" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.8" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.8" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/0d6ec10ff430df66f654c089d6f7ef1d9bed0c318ac257ad5f0dfa0caa45666011828ae75f998bcdb279763e892b091b2925d0bc483299e61649d2c7a2245e33 + checksum: 10/31eb1a8ca1a3cc0026060720eb290e68205d95c5c00fbd831e69ddc0810f5920b8eb2749db1889ac0a0312b6eddbf321d18a996a88858f3b75c9582bef9ec1e4 languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/generator@npm:7.25.6" +"@babel/generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.25.6" + "@babel/types": "npm:^7.25.7" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/541e4fbb6ea7806f44232d70f25bf09dee9a57fe43d559e375536870ca5261ebb4647fec3af40dcbb3325ea2a49aff040e12a4e6f88609eaa88f10c4e27e31f8 + jsesc: "npm:^3.0.2" + checksum: 10/01542829621388077fa8a7464970c1db0f748f1482968dddf5332926afe4003f953cbe08e3bbbb0a335b11eba0126c9a81779bd1c5baed681a9ccec4ae63b217 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10/eccb2d75923d2d4d596f9ff64716e8664047c4192f1b44c7d5c07701d4a3498ac2587a72ddae1046e65a501bc630eb7df4557958b08ec2dcf5b4a264a052f111 + checksum: 10/bbf9be8480da3f9a89e36e9ea2e1c76601014c1074ccada7c2edb1adeb3b62bc402cc4abaf8d16760734b25eceb187a9510ce44f6a7a6f696ccc74f69283625b languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/df8bfb2bb18413aa151ecd63b7d5deb0eec102f924f9de6bc08022ced7ed8ca7fed914562d2f6fa5b59b74a5d6e255dc35612b2bc3b8abf361e13f61b3704770 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/94556712c27058ea35a1a39e21a3a9f067cd699405b64333d7d92b2b3d2f24d6f0ffa51aedba0b908e320acb1854e70d296259622e636fb021eeae9a6d996f01 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/a3bcf7815f3e9d8b205e0af4a8d92603d685868e45d119b621357e274996bf916216bb95ab5c6a60fde3775b91941555bf129d608e3d025b04f8aac84589f300 + checksum: 10/480309b1272ceaa985de1393f0e4c41aede0d5921ca644cec5aeaf43c8e4192b6dd56a58ef6d7e9acd02a43184ab45d3b241fc8c3a0a00f9dbb30235fd8a1181 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/5083e190186028e48fc358a192e4b93ab320bd016103caffcfda81302a13300ccce46c9cd255ae520c25d2a6a9b47671f93e5fe5678954a2329dc0a685465c49 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/42da1c358f2516337a4f2927c77ebb952907543b9f85d7cb1e2b5b5f6d808cdc081ee66a73e2ecdf48c315d9b0c2a81a857d5e1923ea210b8e81aba5e6cd2b53 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535 +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10/2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10/a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c +"@babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10/3c46cbdd666d176f90a0b7e952a0c6e92184b66633336eca79aca243d1f86085ec339a6e45c3d44efa9e03f1829b470a350ddafa70926af6bbf1ac611284f8d3 languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" +"@babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - checksum: 10/43abc8d017b754619aa189d05e2bdb54aaf44f03ec0439e89b3e7c180d538adb01ce9014a1689f632a7e8b17655c72bfac0a92268476eec708b41d3ba0a65296 + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/2632909f83aa99e8b0da4e10e5ab7fc4f0274e6497bb0f17071e004e037d25e4a595583620261dc21410a526fb32b4f7063c3e15e60ed7890a6f9b8ad52312c5 languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1 + checksum: 10/823be2523d246dbf80aab3cc81c2a36c6111b16ac2949ef06789da54387824c2bfaa88c6627cdeb4ba7151d047a5d6765e49ebd0b478aba09759250111e65e08 languageName: node linkType: hard -"@babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" +"@babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/parser@npm:7.25.8" dependencies: - "@babel/types": "npm:^7.25.6" + "@babel/types": "npm:^7.25.8" bin: parser: ./bin/babel-parser.js - checksum: 10/830aab72116aa14eb8d61bfa8f9d69fc8f3a43d909ce993cb4350ae14d3af1a2f740a54410a22d821c48a253263643dfecbc094f9608e6a70ce9ff3c0bbfe91a + checksum: 10/0396eb71e379903cedb43862f84ebb1bec809c41e82b4894d2e6e83b8e8bc636ba6eff45382e615baefdb2399ede76ca82247ecc3a9877ac16eb3140074a3276 languageName: node linkType: hard -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10/07ebecf6db8b28244b7397628e09c99e7a317b959b926d90455c7253c88df3677a5a32d1501d9749fe292a263ff51a4b6b5385bcabd5dadd3a48036f4d4949e0 + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/49e1e88d2eac17d31ae28d6cf13d6d29c1f49384c4f056a6751c065d6565c351e62c01ce6b11fef5edb5f3a77c87e114ea7326ca384fa618b4834e10cf9b20f3 languageName: node linkType: hard -"@babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.6, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": - version: 7.25.6 - resolution: "@babel/traverse@npm:7.25.6" +"@babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.6, @babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.6" - "@babel/parser": "npm:^7.25.6" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/de75a918299bc27a44ec973e3f2fa8c7902bbd67bd5d39a0be656f3c1127f33ebc79c12696fbc8170a0b0e1072a966d4a2126578d7ea2e241b0aeb5d16edc738 + checksum: 10/5b2d332fcd6bc78e6500c997e79f7e2a54dfb357e06f0908cb7f0cdd9bb54e7fd3c5673f45993849d433d01ea6076a6d04b825958f0cfa01288ad55ffa5c286f languageName: node linkType: hard -"@babel/types@npm:^7.17.0, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/types@npm:7.25.6" +"@babel/types@npm:^7.17.0, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/types@npm:7.25.8" dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" to-fast-properties: "npm:^2.0.0" - checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562 + checksum: 10/973108dbb189916bb87360f2beff43ae97f1b08f1c071bc6499d363cce48b3c71674bf3b59dfd617f8c5062d1c76dc2a64232bc07b6ccef831fd0c06162d44d9 languageName: node linkType: hard @@ -526,14 +526,14 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.48.0": - version: 0.48.0 - resolution: "@es-joy/jsdoccomment@npm:0.48.0" +"@es-joy/jsdoccomment@npm:~0.49.0": + version: 0.49.0 + resolution: "@es-joy/jsdoccomment@npm:0.49.0" dependencies: comment-parser: "npm:1.4.1" esquery: "npm:^1.6.0" jsdoc-type-pratt-parser: "npm:~4.1.0" - checksum: 10/28fc48521cc020a570d4cc0c1dde9e370a68bb5bebb7ca0049e2d7090f373ea4ccb685adb0123da0783c47672822b49bc849bc4a1a27d4758ab1bc18a9c8500a + checksum: 10/d767cef9b09f22d1892b8bd544eee32aa7b55c585edf6b51452e6f377f205b06f46bd319174022f75794d39625b4b0f8ce75c8a4ea0b7fd0f773063506e0ef4d languageName: node linkType: hard @@ -933,8 +933,8 @@ __metadata: linkType: hard "@lavamoat/allow-scripts@npm:^3.0.4": - version: 3.2.1 - resolution: "@lavamoat/allow-scripts@npm:3.2.1" + version: 3.3.0 + resolution: "@lavamoat/allow-scripts@npm:3.3.0" dependencies: "@lavamoat/aa": "npm:^4.3.0" "@npmcli/run-script": "npm:8.1.0" @@ -945,7 +945,7 @@ __metadata: "@lavamoat/preinstall-always-fail": "*" bin: allow-scripts: src/cli.js - checksum: 10/2a0bbf78857184016f1025a91d2b9598814bcde134319932fa4cdc6d802054339f80507e5bfe2da2ed6b736c2cf50b3cb0621f26d7667439e0fd235488106e90 + checksum: 10/476043c56425c3077d051a4a6ee4d045fab8b80bf16d50a9201c68224a2ddd77af03490388b7380004d348b11abf4ab7854ba52ba514d10d17c05d40dc8b870d languageName: node linkType: hard @@ -1169,8 +1169,8 @@ __metadata: linkType: hard "@metamask/providers@npm:^17.1.2": - version: 17.2.0 - resolution: "@metamask/providers@npm:17.2.0" + version: 17.2.1 + resolution: "@metamask/providers@npm:17.2.1" dependencies: "@metamask/json-rpc-engine": "npm:^9.0.1" "@metamask/json-rpc-middleware-stream": "npm:^8.0.1" @@ -1185,17 +1185,17 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/b2fc93cdc059528bfeb14a61d6153f9a5f2679e5c6640648c16cd4e5067f758a67c2c6abab962615e878e6b9d7f1bbcd3632584ad7e57ec9df8c16f47b13e608 + checksum: 10/ff9cbcdd4cfa410c52ae0d9d39ad9285fb21f583bcb36a8a39d1862681fe17483008c15ab0ce87797ea94cad82a2f2e58b29b1db1f02df151f9cf3b05013e8a4 languageName: node linkType: hard "@metamask/rpc-errors@npm:^6.3.1": - version: 6.3.1 - resolution: "@metamask/rpc-errors@npm:6.3.1" + version: 6.4.0 + resolution: "@metamask/rpc-errors@npm:6.4.0" dependencies: "@metamask/utils": "npm:^9.0.0" fast-safe-stringify: "npm:^2.0.6" - checksum: 10/f968fb490b13b632c2ad4770a144d67cecdff8d539cb8b489c732b08dab7a62fae65d7a2908ce8c5b77260317aa618948a52463f093fa8d9f84aee1c5f6f5daf + checksum: 10/9a17525aa8ce9ac142a94c04000dba7f0635e8e155c6c045f57eca36cc78c255318cca2fad4571719a427dfd2df64b70bc6442989523a8de555480668d666ad5 languageName: node linkType: hard @@ -1235,22 +1235,22 @@ __metadata: languageName: node linkType: hard -"@metamask/snaps-sdk@npm:^6.7.0": - version: 6.7.0 - resolution: "@metamask/snaps-sdk@npm:6.7.0" +"@metamask/snaps-sdk@npm:^6.8.0": + version: 6.8.0 + resolution: "@metamask/snaps-sdk@npm:6.8.0" dependencies: "@metamask/key-tree": "npm:^9.1.2" "@metamask/providers": "npm:^17.1.2" "@metamask/rpc-errors": "npm:^6.3.1" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^9.2.1" - checksum: 10/1f3148f509e7212e40b615f9050dbb5a5085ae17cd2301f471b828b90a61902a3ae21f9ac520b3a2ffa291585823dd063486a314a2738cd86479b4358e39cfac + checksum: 10/9c2fa7517f8062f5162a8d5ad115e8e51e811aa6cc852834ec05914fe871267c6d347cdbfe67a44960898cdbe14f1e0395e9b71157fb23cf1e5620998c6f15dd languageName: node linkType: hard "@metamask/snaps-utils@npm:^8.3.0": - version: 8.3.0 - resolution: "@metamask/snaps-utils@npm:8.3.0" + version: 8.4.0 + resolution: "@metamask/snaps-utils@npm:8.4.0" dependencies: "@babel/core": "npm:^7.23.2" "@babel/types": "npm:^7.23.0" @@ -1260,7 +1260,7 @@ __metadata: "@metamask/rpc-errors": "npm:^6.3.1" "@metamask/slip44": "npm:^4.0.0" "@metamask/snaps-registry": "npm:^3.2.1" - "@metamask/snaps-sdk": "npm:^6.7.0" + "@metamask/snaps-sdk": "npm:^6.8.0" "@metamask/superstruct": "npm:^3.1.0" "@metamask/utils": "npm:^9.2.1" "@noble/hashes": "npm:^1.3.1" @@ -1275,7 +1275,7 @@ __metadata: semver: "npm:^7.5.4" ses: "npm:^1.1.0" validate-npm-package-name: "npm:^5.0.0" - checksum: 10/43844f4057d698088f03c30937e59bfeed86bfe05ec82a5c25248a0d0f4019994611060913d61751a692bf7791a374459b88f6c1a6f119f5f883069307e8278c + checksum: 10/9948021d33f5c25e8196728dca01d75d285362393eace61f6d31a327de0ab1f0b5b4e8abf33484b94319d06bf2ccfdc101377adad1de65740c077d327d655a6b languageName: node linkType: hard @@ -1286,9 +1286,9 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^9.0.0, @metamask/utils@npm:^9.1.0, @metamask/utils@npm:^9.2.1": - version: 9.2.1 - resolution: "@metamask/utils@npm:9.2.1" +"@metamask/utils@npm:^9.0.0, @metamask/utils@npm:^9.1.0, @metamask/utils@npm:^9.2.1, @metamask/utils@npm:^9.3.0": + version: 9.3.0 + resolution: "@metamask/utils@npm:9.3.0" dependencies: "@ethereumjs/tx": "npm:^4.2.0" "@metamask/superstruct": "npm:^3.1.0" @@ -1299,7 +1299,7 @@ __metadata: pony-cause: "npm:^2.1.10" semver: "npm:^7.5.4" uuid: "npm:^9.0.1" - checksum: 10/2192797afd91af19898e107afeaf63e89b61dc7285e0a75d0cc814b5b288e4cdfc856781b01904034c4d2c1efd9bdab512af24c7e4dfe7b77a03f1f3d9dec7e8 + checksum: 10/ed6648cd973bbf3b4eb0e862903b795a99d27784c820e19f62f0bc0ddf353e98c2858d7e9aaebc0249a586391b344e35b9249d13c08e3ea0c74b23dc1c6b1558 languageName: node linkType: hard @@ -1460,6 +1460,43 @@ __metadata: languageName: node linkType: hard +"@ocap/errors@workspace:^, @ocap/errors@workspace:packages/errors": + version: 0.0.0-use.local + resolution: "@ocap/errors@workspace:packages/errors" + dependencies: + "@arethetypeswrong/cli": "npm:^0.16.4" + "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/eslint-config": "npm:^14.0.0" + "@metamask/eslint-config-nodejs": "npm:^14.0.0" + "@metamask/eslint-config-typescript": "npm:^14.0.0" + "@metamask/utils": "npm:^9.3.0" + "@ts-bridge/cli": "npm:^0.5.1" + "@ts-bridge/shims": "npm:^0.1.1" + "@typescript-eslint/eslint-plugin": "npm:^8.8.1" + "@typescript-eslint/parser": "npm:^8.8.1" + "@typescript-eslint/utils": "npm:^8.8.1" + "@vitest/eslint-plugin": "npm:^1.1.7" + depcheck: "npm:^1.4.7" + eslint: "npm:^9.12.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-import-resolver-typescript: "npm:^3.6.3" + eslint-plugin-import-x: "npm:^4.3.1" + eslint-plugin-jsdoc: "npm:^50.3.1" + eslint-plugin-n: "npm:^17.11.1" + eslint-plugin-prettier: "npm:^5.2.1" + eslint-plugin-promise: "npm:^7.1.0" + jsdom: "npm:^24.1.1" + prettier: "npm:^3.3.3" + rimraf: "npm:^6.0.1" + ses: "npm:^1.9.0" + typedoc: "npm:^0.26.8" + typescript: "npm:~5.5.4" + typescript-eslint: "npm:^8.8.1" + vite: "npm:^5.3.5" + vitest: "npm:^2.1.2" + languageName: unknown + linkType: soft + "@ocap/extension@workspace:packages/extension": version: 0.0.0-use.local resolution: "@ocap/extension@workspace:packages/extension" @@ -1474,7 +1511,7 @@ __metadata: "@metamask/eslint-config-nodejs": "npm:^14.0.0" "@metamask/eslint-config-typescript": "npm:^14.0.0" "@metamask/snaps-utils": "npm:^8.3.0" - "@metamask/utils": "npm:^9.1.0" + "@metamask/utils": "npm:^9.3.0" "@ocap/kernel": "workspace:^" "@ocap/shims": "workspace:^" "@ocap/streams": "workspace:^" @@ -1522,7 +1559,8 @@ __metadata: "@metamask/eslint-config-nodejs": "npm:^14.0.0" "@metamask/eslint-config-typescript": "npm:^14.0.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^9.1.0" + "@metamask/utils": "npm:^9.3.0" + "@ocap/errors": "workspace:^" "@ocap/shims": "workspace:^" "@ocap/streams": "workspace:^" "@ocap/test-utils": "workspace:^" @@ -1644,7 +1682,7 @@ __metadata: "@metamask/eslint-config-nodejs": "npm:^14.0.0" "@metamask/eslint-config-typescript": "npm:^14.0.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^9.1.0" + "@metamask/utils": "npm:^9.3.0" "@ocap/test-utils": "workspace:^" "@ocap/utils": "workspace:^" "@ts-bridge/cli": "npm:^0.5.1" @@ -1714,7 +1752,7 @@ __metadata: "@metamask/eslint-config": "npm:^14.0.0" "@metamask/eslint-config-nodejs": "npm:^14.0.0" "@metamask/eslint-config-typescript": "npm:^14.0.0" - "@metamask/utils": "npm:^9.1.0" + "@metamask/utils": "npm:^9.3.0" "@ocap/test-utils": "workspace:^" "@ts-bridge/cli": "npm:^0.5.1" "@ts-bridge/shims": "npm:^0.1.1" @@ -1833,114 +1871,114 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.4" +"@rollup/rollup-android-arm-eabi@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm64@npm:4.22.4" +"@rollup/rollup-android-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm64@npm:4.24.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.4" +"@rollup/rollup-darwin-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.4" +"@rollup/rollup-darwin-x64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.4" +"@rollup/rollup-linux-arm64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.4" +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.4" +"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.4" +"@rollup/rollup-linux-x64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.4" +"@rollup/rollup-linux-x64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.4" +"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.4" +"@rollup/rollup-win32-x64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2119,7 +2157,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d @@ -2133,13 +2171,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 - languageName: node - linkType: hard - "@types/filesystem@npm:*": version: 0.0.36 resolution: "@types/filesystem@npm:0.0.36" @@ -2157,9 +2188,9 @@ __metadata: linkType: hard "@types/har-format@npm:*": - version: 1.2.15 - resolution: "@types/har-format@npm:1.2.15" - checksum: 10/fcb397741076ed1095ef8dcccd408c9ef4e20fcfeef0d3fe700f837cc015fe72ee2a3c081cc9c03d73c115005b38ba7b1c563d27e050fa612d60bc2049f309ca + version: 1.2.16 + resolution: "@types/har-format@npm:1.2.16" + checksum: 10/b7ecef1ca27b902f9eb0bff9cebe650370f594e20813a728853673b22400afa08966eb5fd725553c19811bc166947e1c845e92ce4df86cee79d4fd9bda4d251b languageName: node linkType: hard @@ -2221,20 +2252,20 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.7.0 - resolution: "@types/node@npm:22.7.0" + version: 22.7.5 + resolution: "@types/node@npm:22.7.5" dependencies: undici-types: "npm:~6.19.2" - checksum: 10/6476d94a4c0fbf60df56634063e8aa26da1152e7096daf374f1eb010eab1c7ef4cdb75ab2508480e82c0b56538e0e7bdfc72af47e7a4e4ace37f2035eddfd3c2 + checksum: 10/e8ba102f8c1aa7623787d625389be68d64e54fcbb76d41f6c2c64e8cf4c9f4a2370e7ef5e5f1732f3c57529d3d26afdcb2edc0101c5e413a79081449825c57ac languageName: node linkType: hard "@types/node@npm:^18.18.14": - version: 18.19.51 - resolution: "@types/node@npm:18.19.51" + version: 18.19.55 + resolution: "@types/node@npm:18.19.55" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/dd24fbdf57f29c21d5732b0fccbb1ee53bb947a17bfa9792e5840566e472a4d043217a0368fca5aa4323fd9aca4a654a262b742aa02868e4c6b8bc34547618e0 + checksum: 10/7ba2b7203338f855fd7e90d09de3196e0d534c361ee0fbd7e3f24d416b867a017530d5721c4186f2c5402184e824a1fe65d2b5f9291751b9d8a7d2f9824f9a73 languageName: node linkType: hard @@ -2392,8 +2423,8 @@ __metadata: linkType: hard "@vitest/coverage-v8@npm:^2.1.2": - version: 2.1.2 - resolution: "@vitest/coverage-v8@npm:2.1.2" + version: 2.1.3 + resolution: "@vitest/coverage-v8@npm:2.1.3" dependencies: "@ampproject/remapping": "npm:^2.3.0" "@bcoe/v8-coverage": "npm:^0.2.3" @@ -2408,12 +2439,12 @@ __metadata: test-exclude: "npm:^7.0.1" tinyrainbow: "npm:^1.2.0" peerDependencies: - "@vitest/browser": 2.1.2 - vitest: 2.1.2 + "@vitest/browser": 2.1.3 + vitest: 2.1.3 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: 10/513b96310eacc99f97f8beb95801c725788b5d64434a820d0008dd94731a09250f68d31a84bbb6cdf3110ee9ad86b4c50d02c1d3d4d651bf56bac4b409b95a62 + checksum: 10/3865db318e6448c6e267034a72141dfc49d79155a04573f1e565d0ddd98dd5cddbefb77b214265daaf13510a8497224ddbacc94371bd63e7c928036ad7993989 languageName: node linkType: hard @@ -2434,27 +2465,27 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:2.1.2": - version: 2.1.2 - resolution: "@vitest/expect@npm:2.1.2" +"@vitest/expect@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/expect@npm:2.1.3" dependencies: - "@vitest/spy": "npm:2.1.2" - "@vitest/utils": "npm:2.1.2" + "@vitest/spy": "npm:2.1.3" + "@vitest/utils": "npm:2.1.3" chai: "npm:^5.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10/0e2991295a6b9c51e2d074d1185317dcb2d85d1e9b5045299431fd7b84e51a847942911b08efad2379f56bb4dfe2f02442abd267df348751c61c86bc7b3154a3 + checksum: 10/94e61e01f14cfcd9ced0e7ac1bbdeee55ff4bf68f09d8f244fd7d73f97b106f35d10cba3fe7a0132464c312206f2eee9e83b16a8d761101b61da053890062858 languageName: node linkType: hard -"@vitest/mocker@npm:2.1.2": - version: 2.1.2 - resolution: "@vitest/mocker@npm:2.1.2" +"@vitest/mocker@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/mocker@npm:2.1.3" dependencies: - "@vitest/spy": "npm:^2.1.0-beta.1" + "@vitest/spy": "npm:2.1.3" estree-walker: "npm:^3.0.3" magic-string: "npm:^0.30.11" peerDependencies: - "@vitest/spy": 2.1.2 + "@vitest/spy": 2.1.3 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -2462,114 +2493,114 @@ __metadata: optional: true vite: optional: true - checksum: 10/f6ec9aa061c21877322bf3f0b12bf4e78eba3f092174a506b2d2d479b78e36b4d46a6458cd23d3bf3cbdcf212276cf5d1a87234ae2014e8362ea2afc23e46bec + checksum: 10/84be8830d6e965109730257d7a84b3d7594db0998ae55decdbfc304857c1c7d29b49f1f5b23f2addcbce1bd7e8bb33832407737a9bb3f95cb3bf7bb312db4d9d languageName: node linkType: hard -"@vitest/pretty-format@npm:2.1.2, @vitest/pretty-format@npm:^2.1.2": - version: 2.1.2 - resolution: "@vitest/pretty-format@npm:2.1.2" +"@vitest/pretty-format@npm:2.1.3, @vitest/pretty-format@npm:^2.1.3": + version: 2.1.3 + resolution: "@vitest/pretty-format@npm:2.1.3" dependencies: tinyrainbow: "npm:^1.2.0" - checksum: 10/5866fb3c45e794b695a9f62f76b886a8a8d07d711f7187e9e769fd614bc62df1f87d076880c032d5cd8c0272c385fe824c12191b04a3ca44a8bb9fed1a0c3693 + checksum: 10/d9382ee93f0f32e2ef8fe03bda818e5277f052a50ddb05b6a6cf0864b2ccb228484f12f130c05faf62dc2140292ffafc213f2941b0fa24058b3ee2943daa286c languageName: node linkType: hard -"@vitest/runner@npm:2.1.2": - version: 2.1.2 - resolution: "@vitest/runner@npm:2.1.2" +"@vitest/runner@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/runner@npm:2.1.3" dependencies: - "@vitest/utils": "npm:2.1.2" + "@vitest/utils": "npm:2.1.3" pathe: "npm:^1.1.2" - checksum: 10/60b086e39a31dd664875746b0da3a2402d4088801306e87fe25f20dc660abda50afd3e5ec6ea34ef0849f5652ac05ce2a93a13ea4d5dd16a549d9882941de328 + checksum: 10/cdf9b82d388c1cc148753f4a8632dfcadf9c4a1c0e065fdcd485d5af824af62507fd7eab9efb21244009775c05773ccb59547043af522a5ab6d216433321066e languageName: node linkType: hard -"@vitest/snapshot@npm:2.1.2": - version: 2.1.2 - resolution: "@vitest/snapshot@npm:2.1.2" +"@vitest/snapshot@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/snapshot@npm:2.1.3" dependencies: - "@vitest/pretty-format": "npm:2.1.2" + "@vitest/pretty-format": "npm:2.1.3" magic-string: "npm:^0.30.11" pathe: "npm:^1.1.2" - checksum: 10/acd29f59883899c660eeba5950366e4f9f799cb29e7edd65575a7b6ad319a1df4d7a46a95048f8f9475f4c6f46cea198a7ecfab06e88e435dfd4989b365b917f + checksum: 10/2c0c4ad8abb758f2f76d1d6094f8928360437e09d0a59e0c6a85a544c892cc41a5324ebbc5657a66c8a3793e51cbf58e357c7f71e899f4e5c5eb76e8c9745abf languageName: node linkType: hard -"@vitest/spy@npm:2.1.2, @vitest/spy@npm:^2.1.0-beta.1": - version: 2.1.2 - resolution: "@vitest/spy@npm:2.1.2" +"@vitest/spy@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/spy@npm:2.1.3" dependencies: tinyspy: "npm:^3.0.0" - checksum: 10/0183ab53b431bd6a08531752113780e15202ebd7579eed25b9bf87c849f75d74d0e4f346d886034cd9dd1381aa8814b3e468f141f41f7539b75f30268df35a79 + checksum: 10/94d6f1bc34da5d0c973d9382c133b938e555fcf2d238edf0aaad3de1a98dd57ebf7c104ba229c6beec48122d2e6f55386d8d2cf96a5804dc95ac683a54754cc7 languageName: node linkType: hard -"@vitest/utils@npm:2.1.2": - version: 2.1.2 - resolution: "@vitest/utils@npm:2.1.2" +"@vitest/utils@npm:2.1.3": + version: 2.1.3 + resolution: "@vitest/utils@npm:2.1.3" dependencies: - "@vitest/pretty-format": "npm:2.1.2" + "@vitest/pretty-format": "npm:2.1.3" loupe: "npm:^3.1.1" tinyrainbow: "npm:^1.2.0" - checksum: 10/fa898ea6312cb62e4027f55b06859d84ba50ac20e583bab2889eeadea41d73baf6022ed87547deec6251cd8021f1df13d2ea4515ab253582c3ca93226acd6313 + checksum: 10/f064e6634cb84c925a17d8937df7441d150c3e24fa5bbd6304151d11dab6cdeb0cb3d5a95a9aacb8b416c87fb0d9aa8c6b9cc5e174191784231e8345948d6d18 languageName: node linkType: hard -"@vue/compiler-core@npm:3.5.8": - version: 3.5.8 - resolution: "@vue/compiler-core@npm:3.5.8" +"@vue/compiler-core@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-core@npm:3.5.12" dependencies: "@babel/parser": "npm:^7.25.3" - "@vue/shared": "npm:3.5.8" + "@vue/shared": "npm:3.5.12" entities: "npm:^4.5.0" estree-walker: "npm:^2.0.2" source-map-js: "npm:^1.2.0" - checksum: 10/1771ea226463ecfdc29b491beda25813a51f22f07fa3f5c2cff3e9ee4516b8e1e7a93be255e66cadd052d48f632a8b655b85782456386118611a00c588758755 + checksum: 10/287ca30a8e018f438775cdb93fca191e841e359c646a89a0788237e2af2840b04e6fcea8aea00f09b81ca96c16bcab00a53124916d07fb5c1c598dba4a6c560b languageName: node linkType: hard -"@vue/compiler-dom@npm:3.5.8": - version: 3.5.8 - resolution: "@vue/compiler-dom@npm:3.5.8" +"@vue/compiler-dom@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-dom@npm:3.5.12" dependencies: - "@vue/compiler-core": "npm:3.5.8" - "@vue/shared": "npm:3.5.8" - checksum: 10/3bc3dd51abdfb06ec5ad8fec8c34a9ede1dfbc2e1c629a1802bc168b0f3a432c62726ca8bcd41d0f6d58c159be8ff0f421b084d0ad59ef8c6edd712861434059 + "@vue/compiler-core": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" + checksum: 10/7578e7e729f44fd0903cd468255d1d50fe9774073a7f5cb0a5bf4352495712454e3b698abe5b29829cf1b56267162f7e73397979e4dcc472e855192cb2c96008 languageName: node linkType: hard "@vue/compiler-sfc@npm:^3.3.4": - version: 3.5.8 - resolution: "@vue/compiler-sfc@npm:3.5.8" + version: 3.5.12 + resolution: "@vue/compiler-sfc@npm:3.5.12" dependencies: "@babel/parser": "npm:^7.25.3" - "@vue/compiler-core": "npm:3.5.8" - "@vue/compiler-dom": "npm:3.5.8" - "@vue/compiler-ssr": "npm:3.5.8" - "@vue/shared": "npm:3.5.8" + "@vue/compiler-core": "npm:3.5.12" + "@vue/compiler-dom": "npm:3.5.12" + "@vue/compiler-ssr": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" estree-walker: "npm:^2.0.2" magic-string: "npm:^0.30.11" postcss: "npm:^8.4.47" source-map-js: "npm:^1.2.0" - checksum: 10/12403b818043e973460a1a0c036a52cdfbddc34372f16841770c9cdbbc0c1964c18f8c9bd9b5b4dbb09a8c40a22ee31ba2fcd19e618ca7dc61c3e12a6e373a0d + checksum: 10/5b2fdbbf381dc684054bcfb7b0945154de658b56b618b2e1637abecd47e070976848a0bfcb2fa0698bab077f0d79ba638f2ec1d180652ca160352c72cf7e6fb3 languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.5.8": - version: 3.5.8 - resolution: "@vue/compiler-ssr@npm:3.5.8" +"@vue/compiler-ssr@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-ssr@npm:3.5.12" dependencies: - "@vue/compiler-dom": "npm:3.5.8" - "@vue/shared": "npm:3.5.8" - checksum: 10/e1ede131a18120ad0b331a82958f1d68c9db8740eba348cad0702e1215641dce7e9f8f228db19f42ab8d41fde0608c822234cf72507f1c6cdb443be70e216fd9 + "@vue/compiler-dom": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" + checksum: 10/25b11070503f5380341d37889aa8729987f3884cdda3a01c95323ee41a00f233c6dd7439618b2389dcaa339341776e7bd21780e3416c1ec1fddee45f13f254a7 languageName: node linkType: hard -"@vue/shared@npm:3.5.8": - version: 3.5.8 - resolution: "@vue/shared@npm:3.5.8" - checksum: 10/33e3ba56c87dc05a1ad97e65cac74ec4eaeb93e051a05167b06841e34f3b96b7af043b15a157f17db01fdce81cb7b53ff6c93a91edb4bcfaf21ef29bf4041f64 +"@vue/shared@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/shared@npm:3.5.12" + checksum: 10/abe229a09a9513f484a03a8c0e63b90949d9fccf64203c1ad510628305e1fdc0e9d064174df88299409a9fbf0c142e4fbcc0a5449f10728fb12d7e10d825abc5 languageName: node linkType: hard @@ -2861,7 +2892,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.1": +"browserslist@npm:^4.24.0": version: 4.24.0 resolution: "browserslist@npm:4.24.0" dependencies: @@ -2941,9 +2972,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001663": - version: 1.0.30001663 - resolution: "caniuse-lite@npm:1.0.30001663" - checksum: 10/a67aba45e10bf56f584f82ab414ff21f5d23ddbd71936839b79c305710b332d8b91df37948a525fe1c9cede81ab56a3d831ee6e3f1fa11c4f299651ea49a8067 + version: 1.0.30001668 + resolution: "caniuse-lite@npm:1.0.30001668" + checksum: 10/4a14acbc999a855e6a91a3ae4ca670f202ceabb4b0e75f8eaef153fafe33ae5ea0de7ac99c078d6b724c8f60b14b1ea24d7c544398e5fd077c418e3f029559ff languageName: node linkType: hard @@ -3576,9 +3607,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.28": - version: 1.5.28 - resolution: "electron-to-chromium@npm:1.5.28" - checksum: 10/dfe890eaeec6f48d245895060edbfd6a0ff8b1a102b22324b2b33cd4aaabe39748a4a9f687be6a5e08f1d8fb1fac0d3bcd96da00d47771a3665d8641111a5f07 + version: 1.5.36 + resolution: "electron-to-chromium@npm:1.5.36" + checksum: 10/659f637b7384714d5a732de0e5baca007fa1ae741faa4a0f9eb576d65a6a6d30c553caae27df5df7307c65484c0fbcd2ac453df27848d04f7dd27b81dea072a2 languageName: node linkType: hard @@ -3763,7 +3794,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.1.2": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 @@ -3888,10 +3919,10 @@ __metadata: linkType: hard "eslint-plugin-jsdoc@npm:^50.3.1": - version: 50.3.1 - resolution: "eslint-plugin-jsdoc@npm:50.3.1" + version: 50.4.0 + resolution: "eslint-plugin-jsdoc@npm:50.4.0" dependencies: - "@es-joy/jsdoccomment": "npm:~0.48.0" + "@es-joy/jsdoccomment": "npm:~0.49.0" are-docs-informative: "npm:^0.0.2" comment-parser: "npm:1.4.1" debug: "npm:^4.3.6" @@ -3904,7 +3935,7 @@ __metadata: synckit: "npm:^0.9.1" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10/b7c60a95fd7942eae1f8644aadbb6abcecc5ef6753c0fac96e7a52028a5a504da8493f768ce9dc1c14a99f8f38be4f6c6d810db935092318f6443c6ff4c69157 + checksum: 10/929a7da3bce3ea7a027d841fb04f590e1f95fa7d644af0721b176d588b64324d19059cc65d4ba07be2ac891f1c5af23ec8aefa69e1c999aaba39945b50249d90 languageName: node linkType: hard @@ -4361,13 +4392,13 @@ __metadata: linkType: hard "form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" + version: 4.0.1 + resolution: "form-data@npm:4.0.1" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + checksum: 10/6adb1cff557328bc6eb8a68da205f9ae44ab0e88d4d9237aaf91eed591ffc64f77411efb9016af7d87f23d0a038c45a788aa1c6634e51175c4efa36c2bc53774 languageName: node linkType: hard @@ -4448,16 +4479,9 @@ __metadata: linkType: hard "get-east-asian-width@npm:^1.0.0": - version: 1.2.0 - resolution: "get-east-asian-width@npm:1.2.0" - checksum: 10/c9b280e7c7c67fb89fa17e867c4a9d1c9f1321aba2a9ee27bff37fb6ca9552bccda328c70a80c1f83a0e39ba1b7e3427e60f47823402d19e7a41b83417ec047a - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.1": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 10/8e8e779eb28701db7fdb1c8cab879e39e6ae23f52dadd89c8aed05869671cee611a65d4f8557b83e981428623247d8bc5d0c7a4ef3ea7a41d826e73600112ad8 languageName: node linkType: hard @@ -5220,6 +5244,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10/8e5a7de6b70a8bd71f9cb0b5a7ade6a73ae6ab55e697c74cc997cede97417a3a65ed86c36f7dd6125fe49766e8386c845023d9e213916ca92c9dfdd56e2babf3 + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -5347,8 +5380,8 @@ __metadata: linkType: hard "listr2@npm:~8.2.4": - version: 8.2.4 - resolution: "listr2@npm:8.2.4" + version: 8.2.5 + resolution: "listr2@npm:8.2.5" dependencies: cli-truncate: "npm:^4.0.0" colorette: "npm:^2.0.20" @@ -5356,7 +5389,7 @@ __metadata: log-update: "npm:^6.1.0" rfdc: "npm:^1.4.1" wrap-ansi: "npm:^9.0.0" - checksum: 10/344d2397e127bf802935925e95b54468eef745fbbaf9326eb33a1634ae2d6e86cdb527ef48cb83a19a50671955d39b3e2608c74db85530df07b5674f5de115e1 + checksum: 10/c76542f18306195e464fe10203ee679a7beafa9bf0dc679ebacb416387cca8f5307c1d8ba35483d26ba611dc2fac5a1529733dce28f2660556082fb7eebb79f9 languageName: node linkType: hard @@ -5397,11 +5430,9 @@ __metadata: linkType: hard "loupe@npm:^3.1.0, loupe@npm:^3.1.1": - version: 3.1.1 - resolution: "loupe@npm:3.1.1" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10/56d71d64c5af109aaf2b5343668ea5952eed468ed2ff837373810e417bf8331f14491c6e4d38e08ff84a29cb18906e06e58ba660c53bd00f2989e1873fa2f54c + version: 3.1.2 + resolution: "loupe@npm:3.1.2" + checksum: 10/8f5734e53fb64cd914aa7d986e01b6d4c2e3c6c56dcbd5428d71c2703f0ab46b5ab9f9eeaaf2b485e8a1c43f865bdd16ec08ae1a661c8f55acdbd9f4d59c607a languageName: node linkType: hard @@ -5452,11 +5483,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.11": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10/b784d2240252f5b1e755d487354ada4c672cbca16f045144f7185a75b059210e5fcca7be7be03ef1bac2ca754c4428b21d36ae64a9057ba429916f06b8c54eb2 + checksum: 10/98016180a52b28efc1362152b45671067facccdaead6b70c1c14c566cba98491bc2e1336474b0996397730dca24400e85649da84d3da62b2560ed03c067573e6 languageName: node linkType: hard @@ -6003,9 +6034,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.12": - version: 2.2.12 - resolution: "nwsapi@npm:2.2.12" - checksum: 10/172119e9ef492467ebfb337f9b5fd12a94d2b519377cde3f6ec2f74a86f6d5c00ef3873539bed7142f908ffca4e35383179be2319d04a563071d146bfa3f1673 + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: 10/f7f30a236f2ee513ea8042f1a987481dc2b900167c47f7163882f0fcfe7ccb57b5c8daaf2c91008dc20a204fcd79e050aee25001433ad99990bbed5a8c74121c languageName: node linkType: hard @@ -6103,9 +6134,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.0 - resolution: "package-json-from-dist@npm:1.0.0" - checksum: 10/ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard @@ -6157,12 +6188,12 @@ __metadata: linkType: hard "parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.0.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" + version: 7.1.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" dependencies: - domhandler: "npm:^5.0.2" + domhandler: "npm:^5.0.3" parse5: "npm:^7.0.0" - checksum: 10/23dbe45fdd338fe726cf5c55b236e1f403aeb0c1b926e18ab8ef0aa580980a25f8492d160fe2ed0ec906c3c8e38b51e68ef5620a3b9460d9458ea78946a3f7c0 + checksum: 10/75910af9137451e9c53e1e0d712f7393f484e89e592b1809ee62ad6cedd61b98daeaa5206ff5d9f06778002c91fac311afedde4880e1916fdb44fa71199dae73 languageName: node linkType: hard @@ -6190,11 +6221,11 @@ __metadata: linkType: hard "parse5@npm:^7.0.0, parse5@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" + version: 7.2.0 + resolution: "parse5@npm:7.2.0" dependencies: - entities: "npm:^4.4.0" - checksum: 10/3c86806bb0fb1e9a999ff3a4c883b1ca243d99f45a619a0898dbf021a95a0189ed955c31b07fe49d342b54e814f33f2c9d7489198e8630dacd5477d413ec5782 + entities: "npm:^4.5.0" + checksum: 10/49dabfe848f00e8cad8d9198a094d667fbdecbfa5143ddf8fb708e499b5ba76426c16135c8993b1d8e01827b92e8cfab0a9a248afa6ad7cc6f38aecf5bd017e6 languageName: node linkType: hard @@ -6274,7 +6305,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb @@ -6629,8 +6660,8 @@ __metadata: linkType: hard "rollup@npm:^2.79.1": - version: 2.79.1 - resolution: "rollup@npm:2.79.1" + version: 2.79.2 + resolution: "rollup@npm:2.79.2" dependencies: fsevents: "npm:~2.3.2" dependenciesMeta: @@ -6638,31 +6669,31 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/df087b701304432f30922bbee5f534ab189aa6938bd383b5686c03147e0d00cd1789ea10a462361326ce6b6ebe448ce272ad3f3cc40b82eeb3157df12f33663c + checksum: 10/095ba0a82811b1866a76d826987743278db0a87c45092656986bfff490326b66187d5f9ff0c24cf8d5682bc470aa00c36654e0044d6b6335ac0c1201b8280880 languageName: node linkType: hard "rollup@npm:^4.20.0": - version: 4.22.4 - resolution: "rollup@npm:4.22.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.4" - "@rollup/rollup-android-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-x64": "npm:4.22.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-musl": "npm:4.22.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.4" - "@types/estree": "npm:1.0.5" + version: 4.24.0 + resolution: "rollup@npm:4.24.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.24.0" + "@rollup/rollup-android-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-arm64": "npm:4.24.0" + "@rollup/rollup-darwin-x64": "npm:4.24.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.24.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.24.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.24.0" + "@rollup/rollup-linux-x64-musl": "npm:4.24.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.24.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.24.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.24.0" + "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -6701,7 +6732,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/0fbee8c14d9052624c76a09fe79ed4d46024832be3ceea86c69f1521ae84b581a64c6e6596fdd796030c206835987e1a0a3be85f4c0d35b71400be5dce799d12 + checksum: 10/291dce8f180628a73d6749119a3e50aa917c416075302bc6f6ac655affc7f0ce9d7f025bef7318d424d0c5623dcb83e360f9ea0125273b6a2285c232172800cc languageName: node linkType: hard @@ -7369,8 +7400,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.1.3 - resolution: "tsconfck@npm:3.1.3" + version: 3.1.4 + resolution: "tsconfck@npm:3.1.4" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -7378,7 +7409,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 10/bf9b9b72de5b83f833f5dea8b276e77bab08e85751589f36dd23854fa3d5f7955194086fb8424df388bf232f2fc9a067d7913bfa674cb1217be0bba648ec71f2 + checksum: 10/4fb02e75ff374a82052b4800970bebe4466b5a6e7193d74e7b875cc8225acb5037fb4e7dcd4a5cd751c22129360cb13b4d5536897eae131d69c1a20fb18a99b4 languageName: node linkType: hard @@ -7406,8 +7437,8 @@ __metadata: linkType: hard "typedoc@npm:^0.26.8": - version: 0.26.8 - resolution: "typedoc@npm:0.26.8" + version: 0.26.9 + resolution: "typedoc@npm:0.26.9" dependencies: lunr: "npm:^2.3.9" markdown-it: "npm:^14.1.0" @@ -7418,7 +7449,7 @@ __metadata: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x bin: typedoc: bin/typedoc - checksum: 10/a903e77fdbc45f8fa99c6454f31d36304b9edcd4f04a787bed25f0300ce779ffebfd9dc8525678484799bc2d0990bc40522a222f962a4f65a079e68950d13670 + checksum: 10/6cc86b3a889374f0f3e17c568bdc04a845531da7af761f644ba214953284cb9620d012111f360678a687110c730abcb473b936b74893aa0e24277fce6c22de0f languageName: node linkType: hard @@ -7498,9 +7529,9 @@ __metadata: linkType: hard "undici@npm:^6.19.5": - version: 6.19.8 - resolution: "undici@npm:6.19.8" - checksum: 10/19ae4ba38b029a664d99fd330935ef59136cf99edb04ed821042f27b5a9e84777265fb744c8a7abc83f2059afb019446c69a4ebef07bbc0ed6b2de8d67ef4090 + version: 6.20.1 + resolution: "undici@npm:6.20.1" + checksum: 10/68604b53754a95ec89d52efc08fe3e70e333997300c9a5b69f2b6496f1f0f568b2e35adec6442985a7b1d2f7a5648ef5062d1736e4d68082d473cb82177674bc languageName: node linkType: hard @@ -7592,16 +7623,16 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/d70b9efeaf4601aadb1a4f6456a7a5d9118e0063d995866b8e0c5e0cf559482671dab6ce7b079f9536b06758a344fbd83f974b965211e1c6e8d1958540b0c24c + checksum: 10/7678dd8609750588d01aa7460e8eddf2ff9d16c2a52fb1811190e0d056390f1fdffd94db3cf8fb209cf634ab4fa9407886338711c71cc6ccade5eeb22b093734 languageName: node linkType: hard @@ -7684,9 +7715,9 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:2.1.2": - version: 2.1.2 - resolution: "vite-node@npm:2.1.2" +"vite-node@npm:2.1.3": + version: 2.1.3 + resolution: "vite-node@npm:2.1.3" dependencies: cac: "npm:^6.7.14" debug: "npm:^4.3.6" @@ -7694,7 +7725,7 @@ __metadata: vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 10/582843800ee968e7edf2cf6e6f1573634122cba74e47ef531a373337f6084c4a394c3c1c2abb210c178c8671200530412c09f5cc2f02a4519f0045a03c3eed02 + checksum: 10/8ba6b145cbb02a492c7bb1f0490d02383000462f234ed61d24f650547163825c16f14e6908ee1eb661403bd0a7a3fb3cdbedf116cc015b1e5cdf7bb992872a01 languageName: node linkType: hard @@ -7781,8 +7812,8 @@ __metadata: linkType: hard "vite@npm:^5.0.0, vite@npm:^5.3.5": - version: 5.4.8 - resolution: "vite@npm:5.4.8" + version: 5.4.9 + resolution: "vite@npm:5.4.9" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" @@ -7819,21 +7850,21 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/17fdffa558abaf854f04ead7d3ddd76e4556a59871f9ac63cca3fc20a79979984837d8dddaae4b171e3d73061f781e4eec0f6d3babdbce2b4d111d29cf474c1c + checksum: 10/60dfb3912ba6367d2d128e798d899caae3f4ec58990657b9f679c4d9de21ddec7eba5f6ad3d4fa0e8ea31771d477521b8e757a622ecc54829d73cb7f7c146bc4 languageName: node linkType: hard "vitest@npm:^2.1.2": - version: 2.1.2 - resolution: "vitest@npm:2.1.2" - dependencies: - "@vitest/expect": "npm:2.1.2" - "@vitest/mocker": "npm:2.1.2" - "@vitest/pretty-format": "npm:^2.1.2" - "@vitest/runner": "npm:2.1.2" - "@vitest/snapshot": "npm:2.1.2" - "@vitest/spy": "npm:2.1.2" - "@vitest/utils": "npm:2.1.2" + version: 2.1.3 + resolution: "vitest@npm:2.1.3" + dependencies: + "@vitest/expect": "npm:2.1.3" + "@vitest/mocker": "npm:2.1.3" + "@vitest/pretty-format": "npm:^2.1.3" + "@vitest/runner": "npm:2.1.3" + "@vitest/snapshot": "npm:2.1.3" + "@vitest/spy": "npm:2.1.3" + "@vitest/utils": "npm:2.1.3" chai: "npm:^5.1.1" debug: "npm:^4.3.6" magic-string: "npm:^0.30.11" @@ -7844,13 +7875,13 @@ __metadata: tinypool: "npm:^1.0.0" tinyrainbow: "npm:^1.2.0" vite: "npm:^5.0.0" - vite-node: "npm:2.1.2" + vite-node: "npm:2.1.3" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.1.2 - "@vitest/ui": 2.1.2 + "@vitest/browser": 2.1.3 + "@vitest/ui": 2.1.3 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -7868,7 +7899,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10/3a331a10499f5ed678530594903869e37a0de548598bcf540db9a6e015bb7a38f36c3585376b3aeeb53fee6b20d75b93081f32b1ea09fd8c2098aa541af28491 + checksum: 10/f6079a88583045b551e6526c08774aeac4a9cf85b132793a03f9470c013326abd7fce3985e3c2217dc0dac2fadeee3506e3dc51e215f10862b2fe9da9289af0f languageName: node linkType: hard @@ -8140,7 +8171,16 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.5.1, yaml@npm:~2.5.0": +"yaml@npm:^2.5.1": + version: 2.6.0 + resolution: "yaml@npm:2.6.0" + bin: + yaml: bin.mjs + checksum: 10/f4369f667c7626c216ea81b5840fe9b530cdae4cff2d84d166ec1239e54bf332dbfac4a71bf60d121f8e85e175364a4e280a520292269b6cf9d074368309adf9 + languageName: node + linkType: hard + +"yaml@npm:~2.5.0": version: 2.5.1 resolution: "yaml@npm:2.5.1" bin: