From 9c85656341263b59659f907c8b9d1c6dd8eab64c Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Fri, 19 Sep 2025 17:51:06 +0300 Subject: [PATCH 1/8] wip: ci cd --- .github/workflows/changesets-ci-comment.yml | 83 + .github/workflows/changesets-ci.yml | 42 + .github/workflows/changesets.yml | 37 + packages/messaging/.changeset/README.md | 7 + packages/messaging/.changeset/config.json | 15 + packages/{ => messaging}/.eslintrc.js | 40 +- packages/messaging/.prettierignore | 29 + packages/messaging/genversion.mjs | 18 + packages/messaging/package.json | 72 +- packages/{ => messaging}/pnpm-lock.yaml | 2794 ++++++++--------- packages/messaging/pnpm-workspace.yaml | 10 + packages/messaging/prettier.config.js | 35 + packages/messaging/src/client.ts | 45 +- packages/messaging/src/constants.ts | 2 + .../contracts/sui_stack_messaging/admin.ts | 8 +- .../sui_stack_messaging/attachment.ts | 152 +- .../src/contracts/sui_stack_messaging/auth.ts | 21 +- .../contracts/sui_stack_messaging/channel.ts | 408 +-- .../contracts/sui_stack_messaging/config.ts | 377 ++- .../sui_stack_messaging/creator_cap.ts | 52 +- .../sui_stack_messaging/deps/std/type_name.ts | 33 +- .../sui_stack_messaging/deps/sui/object.ts | 15 +- .../sui_stack_messaging/deps/sui/table.ts | 23 +- .../sui_stack_messaging/deps/sui/table_vec.ts | 17 +- .../sui_stack_messaging/deps/sui/vec_map.ts | 40 +- .../sui_stack_messaging/deps/sui/vec_set.ts | 23 +- .../sui_stack_messaging/deps/sui/versioned.ts | 16 +- .../encryption_key_history.ts | 23 +- .../sui_stack_messaging/member_cap.ts | 146 +- .../contracts/sui_stack_messaging/message.ts | 135 +- .../messaging/src/contracts/utils/index.ts | 26 +- .../messaging/src/encryption/constants.ts | 2 + .../src/encryption/envelopeEncryption.ts | 10 +- packages/messaging/src/encryption/types.ts | 2 +- packages/messaging/src/error.ts | 5 +- .../messaging/src/storage/adapters/storage.ts | 4 +- .../src/storage/adapters/walrus/types.ts | 2 + .../src/storage/adapters/walrus/walrus.ts | 6 +- packages/messaging/src/types.ts | 4 +- packages/messaging/test/fund-test-users.ts | 2 + .../test/integration-read-v2.test.ts | 2 + .../messaging/test/integration-read.test.ts | 11 +- .../messaging/test/integration-write.test.ts | 2 + packages/messaging/test/prepare-test-data.ts | 2 + .../test/resources/docker-compose.yml | 8 +- .../mappings/get-channel-memberships-200.json | 62 +- .../get-channel-memberships-1-of-2.json | 54 +- .../get-channel-memberships-2-of-2.json | 54 +- .../mappings/get-channel-memberships-200.json | 118 +- packages/messaging/test/setup-testnet.ts | 20 + packages/messaging/test/test-config.ts | 2 + packages/messaging/test/test-helpers.ts | 2 + packages/messaging/turbo.json | 31 + packages/package.json | 77 - packages/turbo.json | 57 - 55 files changed, 2721 insertions(+), 2562 deletions(-) create mode 100644 .github/workflows/changesets-ci-comment.yml create mode 100644 .github/workflows/changesets-ci.yml create mode 100644 .github/workflows/changesets.yml create mode 100644 packages/messaging/.changeset/README.md create mode 100644 packages/messaging/.changeset/config.json rename packages/{ => messaging}/.eslintrc.js (71%) create mode 100644 packages/messaging/.prettierignore create mode 100644 packages/messaging/genversion.mjs rename packages/{ => messaging}/pnpm-lock.yaml (81%) create mode 100644 packages/messaging/pnpm-workspace.yaml create mode 100644 packages/messaging/prettier.config.js create mode 100644 packages/messaging/turbo.json delete mode 100644 packages/package.json delete mode 100644 packages/turbo.json diff --git a/.github/workflows/changesets-ci-comment.yml b/.github/workflows/changesets-ci-comment.yml new file mode 100644 index 0000000..7a0720c --- /dev/null +++ b/.github/workflows/changesets-ci-comment.yml @@ -0,0 +1,83 @@ +name: Changesets CI Comment + +on: + workflow_run: + workflows: ['Changesets CI'] + types: + - completed + +jobs: + upload: + runs-on: ubuntu-latest + if: > + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' + steps: + - name: Get workflow run information + uses: potiuk/get-workflow-origin@e3ba776faee1134e17551924b852bfb374e1703d # pin@v1_1 + id: source-run-info + with: + token: ${{ secrets.GITHUB_TOKEN }} + sourceRunId: ${{ github.event.workflow_run.id }} + + - name: 'Download artifact' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # pin@v7.0.1 + id: get-artifact + if: steps.source-run-info.outputs.pullRequestNumber + with: + result-encoding: string + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + + let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name == "missing-changeset" + })[0]; + + if (!matchArtifact) { + return 'false'; + } + + return 'true'; + + - name: Comment PR + uses: thollander/actions-comment-pull-request@dadb7667129e23f12ca3925c90dc5cd7121ab57e # pin@v2 + if: steps.get-artifact.outputs.result == 'true' && steps.source-run-info.outputs.pullRequestNumber + with: + pr_number: ${{ steps.source-run-info.outputs.pullRequestNumber }} + comment_tag: 'changesets-warning' + message: | + ⚠️ 🦋 **Changesets Warning:** This PR has changes to the messaging package, but does not contain a changeset. You can create a changeset by running `pnpm changeset` in the `packages/messaging` directory and following the prompts. If your change does not need a changeset (e.g. a documentation-only change), you can ignore this message. + + [Learn more about Changesets](https://github.com/changesets/changesets). + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Remove outdated comments + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # pin@v7.0.1 + if: steps.get-artifact.outputs.result == 'false' && steps.source-run-info.outputs.pullRequestNumber + env: + ISSUE_NUMBER: ${{ steps.source-run-info.outputs.pullRequestNumber }} + with: + script: | + const resp = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: process.env.ISSUE_NUMBER + }); + + const comments = resp.data.filter(it => it.body.startsWith('⚠️ 🦋 **Changesets Warning:**')); + + for (const comment of comments) { + console.log( + `Removing issue ${comment.issue_url}` + ); + + await github.rest.issues.deleteComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: comment.id + }); + } \ No newline at end of file diff --git a/.github/workflows/changesets-ci.yml b/.github/workflows/changesets-ci.yml new file mode 100644 index 0000000..d45f7af --- /dev/null +++ b/.github/workflows/changesets-ci.yml @@ -0,0 +1,42 @@ +name: Changesets CI +on: pull_request + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: checkout code repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + with: + fetch-depth: 0 + - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # pin@v3.0.0 + - name: Install Nodejs + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin@v4.0.2 + with: + node-version: '18' + cache: 'pnpm' + cache-dependency-path: 'packages/messaging/pnpm-lock.yaml' + - name: Install dependencies + working-directory: packages/messaging + run: pnpm install --frozen-lockfile + - id: diff + name: Determine if messaging package changed + run: echo "hasChanges=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..HEAD | grep -q "^packages/messaging/" && echo "true" || echo "false")" >> $GITHUB_OUTPUT + - name: Get changed files in the changesets folder + id: has-changesets + uses: tj-actions/changed-files@0874344d6ebbaa00a27da73276ae7162fadcaf69 # pin@v44.3.0 + with: + files: | + packages/messaging/.changeset/** + - name: Create missing changeset note if there are missing changesets + if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' + run: | + echo "true" > missing-changeset.txt + - name: Upload missing changeset artifact + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # pin@4.4.3 + if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' + with: + name: missing-changeset + path: missing-changeset.txt + if-no-files-found: error + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml new file mode 100644 index 0000000..8cc1cea --- /dev/null +++ b/.github/workflows/changesets.yml @@ -0,0 +1,37 @@ +name: Changesets +on: + workflow_dispatch: + push: + branches: + - main + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: checkout code repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 + with: + fetch-depth: 0 + - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # pin@v3.0.0 + - name: Install Nodejs + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin@v4.0.2 + with: + node-version: '18' + cache: 'pnpm' + cache-dependency-path: 'packages/messaging/pnpm-lock.yaml' + registry-url: 'https://registry.npmjs.org' + - name: Install dependencies + working-directory: packages/messaging + run: pnpm install --frozen-lockfile + - name: Create Release Pull Request or Publish to npm + uses: changesets/action@f13b1baaa620fde937751f5d2c3572b9da32af23 # pin@v1 + with: + version: pnpm changeset-version + publish: pnpm changeset publish --tag alpha + cwd: packages/messaging + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/packages/messaging/.changeset/README.md b/packages/messaging/.changeset/README.md new file mode 100644 index 0000000..d08c738 --- /dev/null +++ b/packages/messaging/.changeset/README.md @@ -0,0 +1,7 @@ +# Changesets + +Hello and welcome! This folder was automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos to help version and publish code. You can +find the full documentation for it [in the changesets repository](https://github.com/changesets/changesets). + +You can view a list of [common questions](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) to help you get started with changesets. diff --git a/packages/messaging/.changeset/config.json b/packages/messaging/.changeset/config.json new file mode 100644 index 0000000..d42625b --- /dev/null +++ b/packages/messaging/.changeset/config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.2.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "minor", + "privatePackages": false, + "ignore": [], + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { + "onlyUpdatePeerDependentsWhenOutOfRange": true + } +} diff --git a/packages/.eslintrc.js b/packages/messaging/.eslintrc.js similarity index 71% rename from packages/.eslintrc.js rename to packages/messaging/.eslintrc.js index 5de3a4e..521ad0e 100644 --- a/packages/.eslintrc.js +++ b/packages/messaging/.eslintrc.js @@ -2,12 +2,22 @@ // SPDX-License-Identifier: Apache-2.0 module.exports = { - plugins: ['unused-imports', 'prettier', 'header', 'require-extensions'], + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + 'import', + 'unused-imports', + 'prettier', + 'header', + 'require-extensions', + ], extends: [ 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', 'prettier', 'plugin:prettier/recommended', - 'plugin:import/typescript', ], settings: { 'import/resolver': { @@ -16,6 +26,7 @@ module.exports = { }, env: { es2020: true, + node: true, }, root: true, ignorePatterns: [ @@ -31,19 +42,29 @@ module.exports = { '.next', 'generated', 'vite-env.d.ts', + '.eslintrc.js', + 'prettier.config.js', + 'test/**/*', + '**/*.test.*', + '**/*.spec.*', + '*.config.*', + 'vitest.config.*', + 'sui-codegen.config.*', ], rules: { 'prefer-const': 'error', 'no-case-declarations': 'off', 'no-implicit-coercion': [2, { number: true, string: true, boolean: false }], '@typescript-eslint/no-redeclare': 'off', - '@typescript-eslint/ban-types': [ + '@typescript-eslint/no-empty-object-type': 'error', + '@typescript-eslint/no-unsafe-function-type': 'error', + '@typescript-eslint/no-wrapper-object-types': 'error', + '@typescript-eslint/no-restricted-types': [ 'error', { types: { Buffer: 'Buffer usage increases bundle size and is not consistently implemented on web.', }, - extendDefaults: true, }, ], 'no-restricted-globals': [ @@ -71,7 +92,7 @@ module.exports = { }, overrides: [ { - files: ['messaging/**/*'], + files: ['src/**/*'], rules: { 'require-extensions/require-extensions': 'error', 'require-extensions/require-index': 'error', @@ -80,6 +101,13 @@ module.exports = { 'import/no-cycle': ['error'], }, }, + { + files: ['src/contracts/**/*'], + rules: { + // Generated contract files can use any types and have relaxed rules + '@typescript-eslint/no-explicit-any': 'off', + }, + }, { files: ['*.test.*', '*.spec.*'], rules: { @@ -90,7 +118,7 @@ module.exports = { 'import/consistent-type-specifier-style': ['off'], // Reset to defaults to allow `Buffer` usage in tests (given they run in Node and do not impact bundle): 'no-restricted-globals': ['off'], - '@typescript-eslint/ban-types': ['error'], + '@typescript-eslint/no-restricted-types': ['off'], }, }, ], diff --git a/packages/messaging/.prettierignore b/packages/messaging/.prettierignore new file mode 100644 index 0000000..c6c48a8 --- /dev/null +++ b/packages/messaging/.prettierignore @@ -0,0 +1,29 @@ +# ignore everything by default +# /* +# Enable prettier for apps, dapps and sdk +!/packages + +# ignore generated files +/apps/icons/src +npm-debug.log* +package-lock.json +yarn-debug.log* +.next/ +.source/ +.swc/ +build/ +coverage/ +dist/ +out/ +generated/ +playwright-report/ +storybook-static/ +CHANGELOG.md +packages/move-bytecode-template/pkg +packages/docs/public/typedoc +packages/walrus-wasm +packages/move-bytecode-template +packages/walrus/src/client +package.json +pnpm-lock.yaml +package_summaries/ \ No newline at end of file diff --git a/packages/messaging/genversion.mjs b/packages/messaging/genversion.mjs new file mode 100644 index 0000000..d1e42b2 --- /dev/null +++ b/packages/messaging/genversion.mjs @@ -0,0 +1,18 @@ +#!/usr/bin/env node +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +import { readFileSync, writeFileSync } from 'fs'; + +const packageJson = JSON.parse(readFileSync('./package.json', 'utf8')); + +const versionFileContent = `// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// This file is auto-generated. Do not edit directly. +export const PACKAGE_VERSION = '${packageJson.version}'; +export const PACKAGE_NAME = '${packageJson.name}'; +`; + +writeFileSync('./src/version.ts', versionFileContent); +console.log(`Generated version file with version ${packageJson.version}`); diff --git a/packages/messaging/package.json b/packages/messaging/package.json index dfdee30..2d9a2bb 100644 --- a/packages/messaging/package.json +++ b/packages/messaging/package.json @@ -1,7 +1,7 @@ { - "name": "@mysten/sui-stack-messaging-sdk", + "name": "@mysten/messaging", "version": "0.0.1", - "description": "Messaging SDK", + "description": "Messaging SDK (Alpha - Experimental)", "license": "Apache-2.0", "author": "Mysten Labs ", "type": "commonjs", @@ -22,8 +22,8 @@ "scripts": { "clean": "rm -rf tsconfig.tsbuildinfo ./dist", "build": "node genversion.mjs && build-package", + "build:build-scripts": "turbo run build --filter=@mysten/build-scripts", "codegen": "sui-ts-codegen generate && pnpm lint:fix", - "codegen:version": "node genversion.mjs", "vitest": "vitest", "test": "pnpm test:typecheck && pnpm test:unit", "test:typecheck": "tsc -p ./test", @@ -31,9 +31,14 @@ "test:integration": "vitest run test/integration-*.test.ts", "test:integration:localnet": "TEST_ENVIRONMENT=localnet vitest run test/integration-write.test.ts", "test:integration:testnet": "TEST_ENVIRONMENT=testnet vitest run test/integration-*.test.ts", + "test:e2e": "turbo run test:e2e --concurrency=1", + "changeset-version": "pnpm changeset version && node genversion.mjs", + "alpha:enter": "pnpm changeset pre enter alpha", + "alpha:exit": "pnpm changeset pre exit", "prepublishOnly": "pnpm turbo build", "prettier:check": "prettier -c --ignore-unknown .", "prettier:fix": "prettier -w --ignore-unknown .", + "prettier:fix:watch": "onchange '**' -i -f add -f change -j 5 -- prettier -w --ignore-unknown {{file}}", "eslint:check": "eslint --max-warnings=0 .", "eslint:fix": "pnpm run eslint:check --fix", "lint": "pnpm run eslint:check && pnpm run prettier:check", @@ -48,7 +53,7 @@ }, "homepage": "https://github.com/MystenLabs/#readme", "dependencies": { - "@mysten/bcs": "^1.7.0", + "@mysten/bcs": "^1.8.0", "@mysten/seal": "^0.6.0", "@mysten/sui": "^1.38.0", "@mysten/sui-grpc": "^0.1.0", @@ -62,6 +67,61 @@ "@types/node": "^24.3.0", "testcontainers": "^11.5.1", "typescript": "^5.9.2", - "vitest": "^3.2.4" - } + "vitest": "^3.2.4", + "@changesets/cli": "^2.29.6", + "@ianvs/prettier-plugin-sort-imports": "^4.7.0", + "@manypkg/cli": "^0.25.1", + "@tanstack/eslint-plugin-query": "^5.81.2", + "@testcontainers/postgresql": "^11.4.0", + "@typescript-eslint/eslint-plugin": "^8.43.0", + "@typescript-eslint/parser": "^8.43.0", + "concurrently": "^9.2.0", + "eslint": "^8.45.0", + "eslint-config-prettier": "^8.8.0", + "eslint-config-react-app": "^7.0.1", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-prettier": "^5.5.3", + "eslint-plugin-require-extensions": "^0.1.3", + "eslint-plugin-tsdoc": "^0.2.17", + "eslint-plugin-unused-imports": "^3.0.0", + "graphql-config": "^5.1.5", + "prettier": "^3.6.2", + "prettier-plugin-tailwindcss": "^0.6.14", + "tsx": "^4.20.3", + "turbo": "^2.5.6", + "onchange": "^7.1.0" + }, + "pnpm": { + "overrides": { + "node-notifier": "10.0.0", + "async": "3.2.2", + "nth-check": "2.0.1", + "yaml@<2.2.2": ">=2.2.2", + "semver@<7.5.2": ">=7.5.2", + "postcss@<8.4.31": ">=8.4.31", + "dompurify@>=3.0.0 <3.1.3": ">=3.1.3", + "cross-spawn@5.1.0": "7.0.5", + "axios@0.26.1": "^0.30.0", + "@eslint/plugin-kit@<0.3.3": "0.3.3" + }, + "onlyBuiltDependencies": [ + "cpu-features", + "esbuild", + "protobufjs", + "ssh2", + "unrs-resolver" + ] + }, + "engines": { + "pnpm": ">=10.17.0" + }, + "manypkg": { + "ignoredRules": [ + "INTERNAL_MISMATCH", + "ROOT_HAS_DEV_DEPENDENCIES" + ] + }, + "packageManager": "pnpm@10.17.0" } diff --git a/packages/pnpm-lock.yaml b/packages/messaging/pnpm-lock.yaml similarity index 81% rename from packages/pnpm-lock.yaml rename to packages/messaging/pnpm-lock.yaml index 8a34c9a..fd49782 100644 --- a/packages/pnpm-lock.yaml +++ b/packages/messaging/pnpm-lock.yaml @@ -19,31 +19,62 @@ overrides: importers: .: + dependencies: + '@mysten/bcs': + specifier: ^1.8.0 + version: 1.8.0 + '@mysten/seal': + specifier: ^0.6.0 + version: 0.6.0(typescript@5.9.2) + '@mysten/sui': + specifier: ^1.38.0 + version: 1.38.0(typescript@5.9.2) + '@mysten/sui-grpc': + specifier: ^0.1.0 + version: 0.1.0(typescript@5.9.2) + '@mysten/walrus': + specifier: ^0.7.0 + version: 0.7.0(typescript@5.9.2) + '@protobuf-ts/grpcweb-transport': + specifier: ^2.11.1 + version: 2.11.1 devDependencies: '@changesets/cli': - specifier: ^2.29.5 - version: 2.29.5 + specifier: ^2.29.6 + version: 2.29.7(@types/node@24.5.2) '@ianvs/prettier-plugin-sort-imports': - specifier: ^4.5.1 - version: 4.5.1(prettier@3.6.2) + specifier: ^4.7.0 + version: 4.7.0(prettier@3.6.2) '@manypkg/cli': - specifier: ^0.24.0 - version: 0.24.0 + specifier: ^0.25.1 + version: 0.25.1 + '@mysten/build-scripts': + specifier: workspace:* + version: link:../build-scripts + '@mysten/codegen': + specifier: ^0.4.4 + version: 0.4.5 + '@protobuf-ts/plugin': + specifier: ^2.11.1 + version: 2.11.1 '@tanstack/eslint-plugin-query': specifier: ^5.81.2 - version: 5.83.1(eslint@8.57.1)(typescript@5.9.2) + version: 5.89.0(eslint@8.57.1)(typescript@5.9.2) '@testcontainers/postgresql': specifier: ^11.4.0 - version: 11.4.0 + version: 11.6.0 + '@types/node': + specifier: ^24.3.0 + version: 24.5.2 '@typescript-eslint/eslint-plugin': - specifier: ^8.38.0 - version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.38.0 - version: 8.38.0(eslint@8.57.1)(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.44.0(eslint@8.57.1)(typescript@5.9.2) concurrently: specifier: ^9.2.0 - version: 9.2.0 + version: 9.2.1 eslint: specifier: ^8.45.0 version: 8.57.1 @@ -52,7 +83,7 @@ importers: version: 8.10.2(eslint@8.57.1) eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)(typescript@5.9.2) + version: 7.0.1(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.2) eslint-import-resolver-typescript: specifier: ^3.6.1 version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) @@ -61,10 +92,10 @@ importers: version: 3.1.1(eslint@8.57.1) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + version: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.5.3 - version: 5.5.3(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) + version: 5.5.4(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2) eslint-plugin-require-extensions: specifier: ^0.1.3 version: 0.1.3(eslint@8.57.1) @@ -73,47 +104,53 @@ importers: version: 0.2.17 eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.2.0(@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) + version: 3.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) graphql-config: specifier: ^5.1.5 - version: 5.1.5(@types/node@24.3.0)(graphql@16.11.0)(typescript@5.9.2) + version: 5.1.5(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2) + onchange: + specifier: ^7.1.0 + version: 7.1.0 prettier: specifier: ^3.6.2 version: 3.6.2 prettier-plugin-tailwindcss: specifier: ^0.6.14 - version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier@3.6.2) + version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2))(prettier@3.6.2) testcontainers: - specifier: ^11.4.0 - version: 11.4.0 + specifier: ^11.5.1 + version: 11.6.0 tsx: specifier: ^4.20.3 - version: 4.20.3 + version: 4.20.5 turbo: - specifier: ^2.5.5 - version: 2.5.5 + specifier: ^2.5.6 + version: 2.5.6 typescript: - specifier: ^5.8.3 + specifier: ^5.9.2 version: 5.9.2 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1) - build-scripts: + ../build-scripts: dependencies: '@types/node': specifier: ^22.15.29 - version: 22.17.0 + version: 22.18.6 devDependencies: '@types/postcss-prefix-selector': specifier: ^1.16.3 version: 1.16.3 '@vanilla-extract/esbuild-plugin': specifier: ^2.3.16 - version: 2.3.18(babel-plugin-macros@3.1.0)(esbuild@0.25.8) + version: 2.3.18(babel-plugin-macros@3.1.0)(esbuild@0.25.10) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) esbuild: specifier: ^0.25.5 - version: 0.25.8 + version: 0.25.10 find-up: specifier: ^7.0.0 version: 7.0.0 @@ -127,49 +164,6 @@ importers: specifier: ^5.8.3 version: 5.9.2 - messaging: - dependencies: - '@mysten/bcs': - specifier: ^1.7.0 - version: 1.7.0 - '@mysten/seal': - specifier: ^0.6.0 - version: 0.6.0(typescript@5.9.2) - '@mysten/sui': - specifier: ^1.38.0 - version: 1.38.0(typescript@5.9.2) - '@mysten/sui-grpc': - specifier: ^0.1.0 - version: 0.1.0(typescript@5.9.2) - '@mysten/walrus': - specifier: ^0.7.0 - version: 0.7.0(typescript@5.9.2) - '@protobuf-ts/grpcweb-transport': - specifier: ^2.11.1 - version: 2.11.1 - devDependencies: - '@mysten/build-scripts': - specifier: workspace:* - version: link:../build-scripts - '@mysten/codegen': - specifier: ^0.4.4 - version: 0.4.4 - '@protobuf-ts/plugin': - specifier: ^2.11.1 - version: 2.11.1 - '@types/node': - specifier: ^24.3.0 - version: 24.3.0 - testcontainers: - specifier: ^11.5.1 - version: 11.5.1 - typescript: - specifier: ^5.9.2 - version: 5.9.2 - vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1) - packages: '@0no-co/graphql.web@1.2.0': @@ -186,31 +180,27 @@ packages: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 typescript: ^5.0.0 - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.0': - resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.28.0': - resolution: {integrity: sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==} + '@babel/eslint-parser@7.28.4': + resolution: {integrity: sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -221,8 +211,8 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + '@babel/helper-create-class-features-plugin@7.28.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -250,8 +240,8 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -292,16 +282,16 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': - resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + '@babel/helper-wrap-function@7.28.3': + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.2': - resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -329,8 +319,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': - resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -476,8 +466,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.0': - resolution: {integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==} + '@babel/plugin-transform-block-scoping@7.28.4': + resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -488,14 +478,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.27.1': - resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} + '@babel/plugin-transform-class-static-block@7.28.3': + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.28.0': - resolution: {integrity: sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==} + '@babel/plugin-transform-classes@7.28.4': + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -644,8 +634,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.28.0': - resolution: {integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==} + '@babel/plugin-transform-object-rest-spread@7.28.4': + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -716,8 +706,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.1': - resolution: {integrity: sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==} + '@babel/plugin-transform-regenerator@7.28.4': + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -734,8 +724,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.28.0': - resolution: {integrity: sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA==} + '@babel/plugin-transform-runtime@7.28.3': + resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -800,8 +790,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.28.0': - resolution: {integrity: sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==} + '@babel/preset-env@7.28.3': + resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -823,33 +813,39 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - '@bufbuild/protobuf@2.7.0': - resolution: {integrity: sha512-qn6tAIZEw5i/wiESBF4nQxZkl86aY4KoO0IkUa2Lh+rya64oTOdJQFlZuMwI1Qz9VBJQrQC4QlSA2DNek5gCOA==} + '@blakeembrey/deque@1.0.5': + resolution: {integrity: sha512-6xnwtvp9DY1EINIKdTfvfeAtCYw4OqBZJhtiqkT3ivjnEfa25VQ3TsKvaFfKm8MyGIEfE95qLe+bNEt3nB0Ylg==} + + '@blakeembrey/template@1.2.0': + resolution: {integrity: sha512-w/63nURdkRPpg3AXbNr7lPv6HgOuVDyefTumiXsbXxtIwcuk5EXayWR5OpSwDjsQPgaYsfUSedMduaNOjAYY8A==} - '@bufbuild/protoplugin@2.7.0': - resolution: {integrity: sha512-yUdg8hXzFGR6K8ren7aXly2hT9BxClId814VB142YeZPatY0wqD3c0D8KfIz5nIeMdoPt0/Pm/RycFJCNGMD6w==} + '@bufbuild/protobuf@2.9.0': + resolution: {integrity: sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@bufbuild/protoplugin@2.9.0': + resolution: {integrity: sha512-uoiwNVYoTq+AyqaV1L6pBazGx5fXOO89L0NSR9/7hEfo0Y8n9T1jsKGu4mkitLmP3z+8gJREaule1mMuKBPyYw==} + + '@changesets/apply-release-plan@7.0.13': + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} '@changesets/assemble-release-plan@6.0.9': resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} @@ -857,8 +853,8 @@ packages: '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/cli@2.29.5': - resolution: {integrity: sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==} + '@changesets/cli@2.29.7': + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true '@changesets/config@3.1.1': @@ -903,20 +899,20 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - '@envelop/core@5.3.0': - resolution: {integrity: sha512-xvUkOWXI8JsG2OOnqiI2tOkEc52wbmIqWORr7yGc8B8E53Oh1MMGGGck4mbR80s25LnHVzfNIiIlNkuDgZRuuA==} + '@envelop/core@5.3.2': + resolution: {integrity: sha512-06Mu7fmyKzk09P2i2kHpGfItqLLgCq7uO5/nX4fc/iHMplWPNuAx4iYR+WXUQoFHDnP6EUbceQNQ5iyeMz9f3g==} engines: {node: '>=18.0.0'} '@envelop/instrumentation@1.0.0': @@ -927,320 +923,164 @@ packages: resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} engines: {node: '>=18.0.0'} - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -1257,8 +1097,8 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fastify/busboy@3.1.1': - resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} + '@fastify/busboy@3.2.0': + resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} '@gql.tada/cli-utils@1.7.1': resolution: {integrity: sha512-wg5ysZNQxtNQm67T3laVWmZzLpGb7QfyYWZdaUD2r1OjDj5Bgftq7eQlplmH+hsdffjuUyhJw/b5XAjeE2mJtg==} @@ -1332,14 +1172,14 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/graphql-file-loader@8.0.22': - resolution: {integrity: sha512-KFUbjXgWr5+w/AioOuIuULy4LwcyDuQqTRFQGe+US1d9Z4+ZopcJLwsJTqp5B+icDkCqld4paN0y0qi9MrIvbg==} + '@graphql-tools/graphql-file-loader@8.1.1': + resolution: {integrity: sha512-5JaUE3zMHW21Oh3bGSNKcr/Mi6oZ9/QWlBCNYbGy+09U23EOZmhPn9a44zP3gXcnnj0C+YVEr8dsMaoaB3UVGQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/import@7.0.21': - resolution: {integrity: sha512-bcAqNWm/gLVEOy55o/WdaROERpDyUEmIfZ9E6NDjVk1ZGWfZe47+RgriTV80j6J5S5J1g+6loFkVWGAMqdN06g==} + '@graphql-tools/import@7.1.1': + resolution: {integrity: sha512-zhlhaUmeTfV76vMoLRn9xCVMVc7sLf10ve5GKEhXFFDcWA6+vEZGk9CCm1VlPf2kyKGlF7bwLVzfepb3ZoOU9Q==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1391,8 +1231,8 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@grpc/grpc-js@1.13.4': - resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + '@grpc/grpc-js@1.14.0': + resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.15': @@ -1400,6 +1240,11 @@ packages: engines: {node: '>=6'} hasBin: true + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + engines: {node: '>=6'} + hasBin: true + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -1413,43 +1258,58 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@ianvs/prettier-plugin-sort-imports@4.5.1': - resolution: {integrity: sha512-vOQwIyQHnHz0ikvHEQDzwUkNfX74o/7qNEpm9LiPtyBvCg/AU/DOkhwe1o92chPS1QzS6G7HeiO+OwIt8a358A==} + '@ianvs/prettier-plugin-sort-imports@4.7.0': + resolution: {integrity: sha512-soa2bPUJAFruLL4z/CnMfSEKGznm5ebz29fIa9PxYtu8HHyLKNE1NXAs6dylfw1jn/ilEIfO2oLLN6uAafb7DA==} peerDependencies: '@prettier/plugin-oxc': ^0.0.4 '@vue/compiler-sfc': 2.7.x || 3.x + content-tag: ^4.0.0 prettier: 2 || 3 || ^4.0.0-0 + prettier-plugin-ember-template-tag: ^2.1.0 peerDependenciesMeta: '@prettier/plugin-oxc': optional: true '@vue/compiler-sfc': optional: true + content-tag: + optional: true + prettier-plugin-ember-template-tag: + optional: true + + '@inquirer/external-editor@1.0.2': + resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@manypkg/cli@0.24.0': - resolution: {integrity: sha512-O1vbx4TnwaeeDXlNaa+N0LIKg3JmI2gEG8JaGn97UuXgiXJIYlAhfepJTykICV0i0oQHvb0xNfNmvYhwJ/cGgA==} + '@manypkg/cli@0.25.1': + resolution: {integrity: sha512-lag906FyiNxzZjsRErkUD5/to174I2JzPk5bZubuJp6loMKKJn73zrtqeU7nHlVkHBg3tgXDTJj22HxUDxLRXw==} engines: {node: '>=20.0.0'} hasBin: true @@ -1483,8 +1343,8 @@ packages: '@mysten/bcs@1.8.0': resolution: {integrity: sha512-bDoLN1nN+XPONsvpNyNyqYHndM3PKWS419GLeRnbLoWyNm4bnyD1X4luEpJLLDq400hBuXiCan4RWjofvyTUIQ==} - '@mysten/codegen@0.4.4': - resolution: {integrity: sha512-tHaD5Wh/XsN2cr0eqz62W52ksxVW5W3IKREWvLXSU/CpCD4ULzF+xdfaWMJU5KLuouk+7JAjGA9T6Eubv8R46Q==} + '@mysten/codegen@0.4.5': + resolution: {integrity: sha512-JvGO6316IizEuQPsnvsFlRXImxtrwgyAfjJNFLkZB6eYwc38M38Mqyz7dNeTqAA3oj2MiF5iIVyiIjKmwJhpFQ==} hasBin: true '@mysten/seal@0.6.0': @@ -1493,8 +1353,8 @@ packages: '@mysten/sui-grpc@0.1.0': resolution: {integrity: sha512-LhMdAF2EQWo3etuIaprRMGZ+Qc27RjFIUkXGflt4kk1GjyT3342U8IiZHlMKZ04/rZzbOcI/zK4OlW13Gvl2ig==} - '@mysten/sui@1.37.5': - resolution: {integrity: sha512-kAKizRUdhC/gwQ7UkubbmwTno5UoA1a7Ps8R6GlPVWpCfpVM2HytmwFDOKVMA+51Qji4BaNxyq25SRpJw76fPw==} + '@mysten/sui@1.37.6': + resolution: {integrity: sha512-7ut5tWuXx9OIE+DQ2D5hd22UB8j8K4/F2Lx3R8Ej/JMwkm6cpgbF5FKNu0vYqehxiFEktMnq2YzzajxmlFHNPw==} engines: {node: '>=18'} '@mysten/sui@1.38.0': @@ -1613,103 +1473,108 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rollup/rollup-android-arm-eabi@4.49.0': - resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} + '@rollup/rollup-android-arm-eabi@4.51.0': + resolution: {integrity: sha512-VyfldO8T/C5vAXBGIobrAnUE+VJNVLw5z9h4NgSDq/AJZWt/fXqdW+0PJbk+M74xz7yMDRiHtlsuDV7ew6K20w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.49.0': - resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==} + '@rollup/rollup-android-arm64@4.51.0': + resolution: {integrity: sha512-Z3ujzDZgsEVSokgIhmOAReh9SGT2qloJJX2Xo1Q3nPU1EhCXrV0PbpR3r7DWRgozqnjrPZQkLe5cgBPIYp70Vg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.49.0': - resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==} + '@rollup/rollup-darwin-arm64@4.51.0': + resolution: {integrity: sha512-T3gskHgArUdR6TCN69li5VELVAZK+iQ4iwMoSMNYixoj+56EC9lTj35rcxhXzIJt40YfBkvDy3GS+t5zh7zM6g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.49.0': - resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==} + '@rollup/rollup-darwin-x64@4.51.0': + resolution: {integrity: sha512-Hh7n/fh0g5UjH6ATDF56Qdf5bzdLZKIbhp5KftjMYG546Ocjeyg15dxphCpH1FFY2PJ2G6MiOVL4jMq5VLTyrQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.49.0': - resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==} + '@rollup/rollup-freebsd-arm64@4.51.0': + resolution: {integrity: sha512-0EddADb6FBvfqYoxwVom3hAbAvpSVUbZqmR1wmjk0MSZ06hn/UxxGHKRqEQDMkts7XiZjejVB+TLF28cDTU+gA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.49.0': - resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==} + '@rollup/rollup-freebsd-x64@4.51.0': + resolution: {integrity: sha512-MpqaEDLo3JuVPF+wWV4mK7V8akL76WCz8ndfz1aVB7RhvXFO3k7yT7eu8OEuog4VTSyNu5ibvN9n6lgjq/qLEQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': - resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} + '@rollup/rollup-linux-arm-gnueabihf@4.51.0': + resolution: {integrity: sha512-WEWAGFNFFpvSWAIT3MYvxTkYHv/cJl9yWKpjhheg7ONfB0hetZt/uwBnM3GZqSHrk5bXCDYTFXg3jQyk/j7eXQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.49.0': - resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} + '@rollup/rollup-linux-arm-musleabihf@4.51.0': + resolution: {integrity: sha512-9bxtxj8QoAp++LOq5PGDGkEEOpCDk9rOEHUcXadnijedDH8IXrBt6PnBa4Y6NblvGWdoxvXZYghZLaliTCmAng==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.49.0': - resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} + '@rollup/rollup-linux-arm64-gnu@4.51.0': + resolution: {integrity: sha512-DdqA+fARqIsfqDYkKo2nrWMp0kvu/wPJ2G8lZ4DjYhn+8QhrjVuzmsh7tTkhULwjvHTN59nWVzAixmOi6rqjNA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.49.0': - resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} + '@rollup/rollup-linux-arm64-musl@4.51.0': + resolution: {integrity: sha512-2XVRNzcUJE1UJua8P4a1GXS5jafFWE+pQ6zhUbZzptOu/70p1F6+0FTi6aGPd6jNtnJqGMjtBCXancC2dhYlWw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': - resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} + '@rollup/rollup-linux-loong64-gnu@4.51.0': + resolution: {integrity: sha512-R8QhY0kLIPCAVXWi2yftDSpn7Jtejey/WhMoBESSfwGec5SKdFVupjxFlKoQ7clVRuaDpiQf7wNx3EBZf4Ey6g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.49.0': - resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} + '@rollup/rollup-linux-ppc64-gnu@4.51.0': + resolution: {integrity: sha512-I498RPfxx9cMv1KTHQ9tg2Ku1utuQm+T5B+Xro+WNu3FzAFSKp4awKfgMoZwjoPgNbaFGINaOM25cQW6WuBhiQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.49.0': - resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} + '@rollup/rollup-linux-riscv64-gnu@4.51.0': + resolution: {integrity: sha512-o8COudsb8lvtdm9ixg9aKjfX5aeoc2x9KGE7WjtrmQFquoCRZ9jtzGlonujE4WhvXFepTraWzT4RcwyDDeHXjA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.49.0': - resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} + '@rollup/rollup-linux-riscv64-musl@4.51.0': + resolution: {integrity: sha512-0shJPgSXMdYzOQzpM5BJN2euXY1f8uV8mS6AnrbMcH2KrkNsbpMxWB1wp8UEdiJ1NtyBkCk3U/HfX5mEONBq6w==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.49.0': - resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} + '@rollup/rollup-linux-s390x-gnu@4.51.0': + resolution: {integrity: sha512-L7pV+ny7865jamSCQwyozBYjFRUKaTsPqDz7ClOtJCDu4paf2uAa0mrcHwSt4XxZP2ogFZS9uuitH3NXdeBEJA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.49.0': - resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} + '@rollup/rollup-linux-x64-gnu@4.51.0': + resolution: {integrity: sha512-4YHhP+Rv3T3+H3TPbUvWOw5tuSwhrVhkHHZhk4hC9VXeAOKR26/IsUAT4FsB4mT+kfIdxxb1BezQDEg/voPO8A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.49.0': - resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} + '@rollup/rollup-linux-x64-musl@4.51.0': + resolution: {integrity: sha512-P7U7U03+E5w7WgJtvSseNLOX1UhknVPmEaqgUENFWfNxNBa1OhExT6qYGmyF8gepcxWSaSfJsAV5UwhWrYefdQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.49.0': - resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} + '@rollup/rollup-openharmony-arm64@4.51.0': + resolution: {integrity: sha512-FuD8g3u9W6RPwdO1R45hZFORwa1g9YXEMesAKP/sOi7mDqxjbni8S3zAXJiDcRfGfGBqpRYVuH54Gu3FTuSoEw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.51.0': + resolution: {integrity: sha512-zST+FdMCX3QAYfmZX3dp/Fy8qLUetfE17QN5ZmmFGPrhl86qvRr+E9u2bk7fzkIXsfQR30Z7ZRS7WMryPPn4rQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.49.0': - resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==} + '@rollup/rollup-win32-ia32-msvc@4.51.0': + resolution: {integrity: sha512-U+qhoCVAZmTHCmUKxdQxw1jwAFNFXmOpMME7Npt5GTb1W/7itfgAgNluVOvyeuSeqW+dEQLFuNZF3YZPO8XkMg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.49.0': - resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==} + '@rollup/rollup-win32-x64-msvc@4.51.0': + resolution: {integrity: sha512-z6UpFzMhXSD8NNUfCi2HO+pbpSzSWIIPgb1TZsEZjmZYtk6RUIC63JYjlFBwbBZS3jt3f1q6IGfkj3g+GnBt2Q==} cpu: [x64] os: [win32] @@ -1735,13 +1600,13 @@ packages: '@stricli/core@1.2.0': resolution: {integrity: sha512-5b+npntDY0TAB7wAw0daGlh3/R2sf0TDLyrB1By2jCNH+C+lmcSqMtJXOMLVtEGSkIOvqAgIWpLMSs1PXqzt3w==} - '@tanstack/eslint-plugin-query@5.83.1': - resolution: {integrity: sha512-tdkpPFfzkTksN9BIlT/qjixSAtKrsW6PUVRwdKWaOcag7DrD1vpki3UzzdfMQGDRGeg1Ue1Dg+rcl5FJGembNg==} + '@tanstack/eslint-plugin-query@5.89.0': + resolution: {integrity: sha512-vz8TEuw9GO0xXIdreMpcofvOY17T3cjgob9bSFln8yQsKsbsUvtpvV3F8pVC3tZEDq0IwO++3/e0/+7YKEarNA==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@testcontainers/postgresql@11.4.0': - resolution: {integrity: sha512-WiKsz3Np5twNZGp2kgatqGaE/KqNR271CPwvIgAvFyN7E581P34glQljM4iLfxdv1XpzVYGWRO6PbQAVDbehBQ==} + '@testcontainers/postgresql@11.6.0': + resolution: {integrity: sha512-+JlbHfcWpxrfWG4BZeWiNKI4pjn4FPWCnKFYkUSneuYjEuYJQWSFdP38W5RB0N1rf5ce+dYzb5SXi4i2MWH3Zw==} '@theguild/federation-composition@0.19.1': resolution: {integrity: sha512-E4kllHSRYh+FsY0VR+fwl0rmWhDV8xUgWawLZTXmy15nCWQwj0BDsoEpdEXjPh7xes+75cRaeJcSbZ4jkBuSdg==} @@ -1749,8 +1614,8 @@ packages: peerDependencies: graphql: ^16.0.0 - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -1761,11 +1626,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.42': - resolution: {integrity: sha512-U1jqHMShibMEWHdxYhj3rCMNCiLx5f35i4e3CEUuW+JSSszc/tVqc6WCAPdhwBymG5R/vgbcceagK0St7Cq6Eg==} - - '@types/dockerode@3.3.43': - resolution: {integrity: sha512-YCi0aKKpKeC9dhKTbuglvsWDnAyuIITd6CCJSTKiAdbDzPH4RWu0P9IK2XkJHdyplH6mzYtDYO+gB06JlzcPxg==} + '@types/dockerode@3.3.44': + resolution: {integrity: sha512-fUpIHlsbYpxAJb285xx3vp7q5wf5mjqSn3cYwl/MhiM+DB99OdO5sOCPlO0PjO+TyOtphPs7tMVLU/RtOo/JjA==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1779,17 +1641,14 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.123': - resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==} - - '@types/node@22.17.0': - resolution: {integrity: sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==} + '@types/node@18.19.127': + resolution: {integrity: sha512-gSjxjrnKXML/yo0BO099uPixMqfpJU0TKYjpfLU7TrtA2WWDki412Np/RSTPRil1saKBhvVVKzVx/p/6p94nVA==} - '@types/node@22.18.0': - resolution: {integrity: sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==} + '@types/node@22.18.6': + resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} - '@types/node@24.3.0': - resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1797,8 +1656,8 @@ packages: '@types/postcss-prefix-selector@1.16.3': resolution: {integrity: sha512-YZLPWRkJIrYjwaqojVDXzaRCAEYslRAm8Shznwwn+ZFA4iKQR4LZlS3d+ZMVteFz4iyQnngZZG7k/GIzV1f3mQ==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/ssh2-streams@0.1.12': resolution: {integrity: sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==} @@ -1823,13 +1682,13 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.38.0': - resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} + '@typescript-eslint/eslint-plugin@8.44.0': + resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.38.0 + '@typescript-eslint/parser': ^8.44.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/experimental-utils@5.62.0': resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} @@ -1847,32 +1706,32 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.38.0': - resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} + '@typescript-eslint/parser@8.44.0': + resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.38.0': - resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} + '@typescript-eslint/project-service@8.44.0': + resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@8.38.0': - resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} + '@typescript-eslint/scope-manager@8.44.0': + resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.38.0': - resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} + '@typescript-eslint/tsconfig-utils@8.44.0': + resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/type-utils@5.62.0': resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} @@ -1884,19 +1743,19 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.38.0': - resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} + '@typescript-eslint/type-utils@8.44.0': + resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@8.38.0': - resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} + '@typescript-eslint/types@8.44.0': + resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -1908,11 +1767,11 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.38.0': - resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} + '@typescript-eslint/typescript-estree@8.44.0': + resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/utils@5.62.0': resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} @@ -1920,19 +1779,19 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@8.38.0': - resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} + '@typescript-eslint/utils@8.44.0': + resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@8.38.0': - resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} + '@typescript-eslint/visitor-keys@8.44.0': + resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/vfs@1.6.1': @@ -2128,18 +1987,22 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.0: - resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -2148,6 +2011,9 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2233,8 +2099,13 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + b4a@1.7.1: + resolution: {integrity: sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -2264,11 +2135,11 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.6.1: - resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} + bare-events@2.7.0: + resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} - bare-fs@4.2.1: - resolution: {integrity: sha512-mELROzV0IhqilFgsl1gyp48pnZsaV9xhQapHLDsvn4d4ZTfbFhcghQezl7FTEDNBcGqLUnNI3lUlm6ecrLWdFA==} + bare-fs@4.4.4: + resolution: {integrity: sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2294,9 +2165,16 @@ packages: bare-events: optional: true + bare-url@2.2.2: + resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.6: + resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} + hasBin: true + bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -2304,6 +2182,10 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2317,8 +2199,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2360,8 +2242,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + caniuse-lite@1.0.30001743: + resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} @@ -2371,13 +2253,17 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.0: + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -2403,8 +2289,8 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@9.2.0: - resolution: {integrity: sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} hasBin: true @@ -2423,8 +2309,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.44.0: - resolution: {integrity: sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==} + core-js-compat@3.45.1: + resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2523,8 +2409,17 @@ packages: supports-color: optional: true - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -2561,24 +2456,24 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - docker-compose@1.2.0: - resolution: {integrity: sha512-wIU1eHk3Op7dFgELRdmOYlPYS4gP8HhH1ZmZa13QZF59y0fblzFDFmKPhyc05phCy2hze9OEvNZAsoljrs+72w==} + docker-compose@1.3.0: + resolution: {integrity: sha512-7Gevk/5eGD50+eMD+XDnFnOrruFkL0kSd7jEG4cjmqweDSUhB7i0g8is/nBdVpl+Bx338SqIB2GLKm32M+Vs6g==} engines: {node: '>= 6.0.0'} docker-modem@5.0.6: resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} engines: {node: '>= 8.0'} - dockerode@4.0.7: - resolution: {integrity: sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==} + dockerode@4.0.8: + resolution: {integrity: sha512-HdPBprWmwfHMHi12AVIFDhXIqIS+EpiOVkZaAZxgML4xf5McqEZjJZtahTPkLDxWOt84ApfWPAH9EoQwOiaAIQ==} engines: {node: '>= 8.0'} doctrine@2.1.0: @@ -2600,8 +2495,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.194: - resolution: {integrity: sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==} + electron-to-chromium@1.5.222: + resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2620,8 +2515,8 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} @@ -2658,13 +2553,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} engines: {node: '>=18'} hasBin: true @@ -2771,8 +2661,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-prettier@5.5.3: - resolution: {integrity: sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==} + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2903,10 +2793,6 @@ packages: extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3151,8 +3037,8 @@ packages: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} ieee754@1.2.1: @@ -3203,6 +3089,10 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} @@ -3400,8 +3290,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - ky@1.8.2: - resolution: {integrity: sha512-XybQJ3d4Ea1kI27DoelE5ZCT3bSJlibYTtQuMsyzKox3TMyayw1asgQdl54WroAm+fIA3ZCr8zXW2RpR7qWVpA==} + ky@1.10.0: + resolution: {integrity: sha512-YRPCzHEWZffbfvmRrfwa+5nwBHwZuYiTrfDX0wuhGBPV0pA/zCqcOq93MDssON/baIkpYbvehIX5aLpMxrRhaA==} engines: {node: '>=18'} language-subtag-registry@0.3.23: @@ -3471,8 +3361,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.30.18: - resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} @@ -3485,8 +3375,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - meros@1.3.1: - resolution: {integrity: sha512-eV7dRObfTrckdmAz4/n7pT1njIsIJXRIZkgCiX43xEsPNy4gjXQzOYYxmGcolAMtF7HyfqRuDBh3Lgs4hmhVEw==} + meros@1.3.2: + resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} engines: {node: '>=13'} peerDependencies: '@types/node': '>=13' @@ -3524,8 +3414,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} modern-ahocorasick@1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} @@ -3545,8 +3435,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} + napi-postinstall@0.3.3: + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -3568,8 +3458,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} @@ -3618,14 +3508,14 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onchange@7.1.0: + resolution: {integrity: sha512-ZJcqsPiWUAUpvmnJri5TPBooqJOPmC0ttN65juhN15Q8xA+Nbg3BaxBHXQ45EistKKlKElb0edmbPWnKSBkvMg==} + hasBin: true + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -3877,8 +3767,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3908,12 +3798,16 @@ packages: readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} regenerate@1.4.2: @@ -3923,8 +3817,8 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + regexpu-core@6.3.1: + resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} engines: {node: '>=4'} registry-auth-token@5.1.0: @@ -3988,8 +3882,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.49.0: - resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==} + rollup@4.51.0: + resolution: {integrity: sha512-7cR0XWrdp/UAj2HMY/Y4QQEUjidn3l2AY1wSeZoFjMbD8aOMPoV9wgTFYbrJpPzzvejDEini1h3CiUP8wLzxQA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4165,8 +4059,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -4204,11 +4098,11 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-fs@3.1.0: - resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + tar-fs@3.1.1: + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -4221,11 +4115,8 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - testcontainers@11.4.0: - resolution: {integrity: sha512-eX5nc/Fi5I0LHqwxw6BuUvWNfdl+M2sKX6fX/47RP89Xs5nU6smd0iD7dpFogxy8/wACjlucLoutJc7b5mtq7w==} - - testcontainers@11.5.1: - resolution: {integrity: sha512-YSSP4lSJB8498zTeu4HYTZYgSky54ozBmIDdC8PFU5inj+vBo5hPpilhcYTgmsqsYjrXOJGV7jl0MWByS7GwuA==} + testcontainers@11.6.0: + resolution: {integrity: sha512-2kXdhZ4mvvPP4xEY1yxhLSrFt/TXokClOtppA4bt/5FJJwZrnUkyCo3TVfhHx3Ynlq1N00qjoQuxpnwFqU9a7g==} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -4246,8 +4137,8 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -4258,18 +4149,10 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -4306,43 +4189,43 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.20.3: - resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.5.5: - resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} + turbo-darwin-64@2.5.6: + resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.5: - resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} + turbo-darwin-arm64@2.5.6: + resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.5: - resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} + turbo-linux-64@2.5.6: + resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.5: - resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} + turbo-linux-arm64@2.5.6: + resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.5: - resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} + turbo-windows-64@2.5.6: + resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.5: - resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} + turbo-windows-arm64@2.5.6: + resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} cpu: [arm64] os: [win32] - turbo@2.5.5: - resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} + turbo@2.5.6: + resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} hasBin: true tweetnacl@0.14.5: @@ -4400,15 +4283,11 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.10.0: - resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} - undici@7.13.0: - resolution: {integrity: sha512-l+zSMssRqrzDcb3fjMkjjLGmuiiK2pMIcV++mJaAc9vhjSGpvM7h43QgP+OAMb1GImHmbPyG2tBXeuyG5iY4gA==} - engines: {node: '>=20.18.1'} - - undici@7.15.0: - resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -4419,12 +4298,12 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} unicorn-magic@0.1.0: @@ -4476,8 +4355,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.3: - resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==} + vite@7.1.6: + resolution: {integrity: sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4652,93 +4531,88 @@ snapshots: graphql: 16.11.0 typescript: 5.9.2 - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.4': {} - '@babel/core@7.28.0': + '@babel/core@7.28.4': dependencies: - '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.7.2 transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.0(@babel/core@7.28.0)(eslint@8.57.1)': + '@babel/eslint-parser@7.28.4(@babel/core@7.28.4)(eslint@8.57.1)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 semver: 7.7.2 - '@babel/generator@7.28.0': + '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.26.2 lru-cache: 5.1.1 semver: 7.7.2 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 semver: 7.7.2 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.0)': + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 + regexpu-core: 6.3.1 semver: 7.7.2 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.0)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1 + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -4748,55 +4622,55 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.0)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -4806,709 +4680,713 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.27.1': + '@babel/helper-wrap-function@7.28.3': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.2': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/parser@7.28.0': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.0)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.0)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.28.0)': + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.0)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.0)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.28.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.0)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.2 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.1(@babel/core@7.28.0)': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.0) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) semver: 7.7.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.0)': + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.0(@babel/core@7.28.0)': + '@babel/preset-env@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-regenerator': 7.28.1(@babel/core@7.28.0) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.0) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.0) - core-js-compat: 3.44.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 semver: 7.7.2 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 esutils: 2.0.3 - '@babel/preset-react@7.27.1(@babel/core@7.28.0)': + '@babel/preset-react@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': + '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/runtime@7.28.2': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - debug: 4.4.1 + '@babel/types': 7.28.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 '@balena/dockerignore@1.0.2': {} - '@bufbuild/protobuf@2.7.0': {} + '@blakeembrey/deque@1.0.5': {} + + '@blakeembrey/template@1.2.0': {} + + '@bufbuild/protobuf@2.9.0': {} - '@bufbuild/protoplugin@2.7.0': + '@bufbuild/protoplugin@2.9.0': dependencies: - '@bufbuild/protobuf': 2.7.0 + '@bufbuild/protobuf': 2.9.0 '@typescript/vfs': 1.6.1(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 '@changesets/get-version-range-type': 0.4.0 @@ -5537,9 +5415,9 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.5': + '@changesets/cli@2.29.7(@types/node@24.5.2)': dependencies: - '@changesets/apply-release-plan': 7.0.12 + '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 '@changesets/config': 3.1.1 @@ -5553,11 +5431,11 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.2(@types/node@24.5.2) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 - external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 @@ -5567,6 +5445,8 @@ snapshots: semver: 7.7.2 spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' '@changesets/config@3.1.1': dependencies: @@ -5650,25 +5530,25 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@emnapi/core@1.4.5': + '@emnapi/core@1.5.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true '@emotion/hash@0.9.2': {} - '@envelop/core@5.3.0': + '@envelop/core@5.3.2': dependencies: '@envelop/instrumentation': 1.0.0 '@envelop/types': 5.2.1 @@ -5685,163 +5565,85 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 - '@esbuild/aix-ppc64@0.25.8': - optional: true - - '@esbuild/aix-ppc64@0.25.9': - optional: true - - '@esbuild/android-arm64@0.25.8': + '@esbuild/aix-ppc64@0.25.10': optional: true - '@esbuild/android-arm64@0.25.9': + '@esbuild/android-arm64@0.25.10': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.10': optional: true - '@esbuild/android-arm@0.25.9': + '@esbuild/android-x64@0.25.10': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/darwin-arm64@0.25.10': optional: true - '@esbuild/android-x64@0.25.9': + '@esbuild/darwin-x64@0.25.10': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.10': optional: true - '@esbuild/darwin-arm64@0.25.9': + '@esbuild/freebsd-x64@0.25.10': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/linux-arm64@0.25.10': optional: true - '@esbuild/darwin-x64@0.25.9': + '@esbuild/linux-arm@0.25.10': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/linux-ia32@0.25.10': optional: true - '@esbuild/freebsd-arm64@0.25.9': + '@esbuild/linux-loong64@0.25.10': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/linux-mips64el@0.25.10': optional: true - '@esbuild/freebsd-x64@0.25.9': + '@esbuild/linux-ppc64@0.25.10': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-riscv64@0.25.10': optional: true - '@esbuild/linux-arm64@0.25.9': + '@esbuild/linux-s390x@0.25.10': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-x64@0.25.10': optional: true - '@esbuild/linux-arm@0.25.9': + '@esbuild/netbsd-arm64@0.25.10': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/netbsd-x64@0.25.10': optional: true - '@esbuild/linux-ia32@0.25.9': + '@esbuild/openbsd-arm64@0.25.10': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/openbsd-x64@0.25.10': optional: true - '@esbuild/linux-loong64@0.25.9': + '@esbuild/openharmony-arm64@0.25.10': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/sunos-x64@0.25.10': optional: true - '@esbuild/linux-mips64el@0.25.9': + '@esbuild/win32-arm64@0.25.10': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/win32-ia32@0.25.10': optional: true - '@esbuild/linux-ppc64@0.25.9': + '@esbuild/win32-x64@0.25.10': optional: true - '@esbuild/linux-riscv64@0.25.8': - optional: true - - '@esbuild/linux-riscv64@0.25.9': - optional: true - - '@esbuild/linux-s390x@0.25.8': - optional: true - - '@esbuild/linux-s390x@0.25.9': - optional: true - - '@esbuild/linux-x64@0.25.8': - optional: true - - '@esbuild/linux-x64@0.25.9': - optional: true - - '@esbuild/netbsd-arm64@0.25.8': - optional: true - - '@esbuild/netbsd-arm64@0.25.9': - optional: true - - '@esbuild/netbsd-x64@0.25.8': - optional: true - - '@esbuild/netbsd-x64@0.25.9': - optional: true - - '@esbuild/openbsd-arm64@0.25.8': - optional: true - - '@esbuild/openbsd-arm64@0.25.9': - optional: true - - '@esbuild/openbsd-x64@0.25.8': - optional: true - - '@esbuild/openbsd-x64@0.25.9': - optional: true - - '@esbuild/openharmony-arm64@0.25.8': - optional: true - - '@esbuild/openharmony-arm64@0.25.9': - optional: true - - '@esbuild/sunos-x64@0.25.8': - optional: true - - '@esbuild/sunos-x64@0.25.9': - optional: true - - '@esbuild/win32-arm64@0.25.8': - optional: true - - '@esbuild/win32-arm64@0.25.9': - optional: true - - '@esbuild/win32-ia32@0.25.8': - optional: true - - '@esbuild/win32-ia32@0.25.9': - optional: true - - '@esbuild/win32-x64@0.25.8': - optional: true - - '@esbuild/win32-x64@0.25.9': - optional: true - - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 @@ -5851,7 +5653,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -5864,7 +5666,7 @@ snapshots: '@eslint/js@8.57.1': {} - '@fastify/busboy@3.1.1': {} + '@fastify/busboy@3.2.0': {} '@gql.tada/cli-utils@1.7.1(@0no-co/graphqlsp@1.15.0(graphql@16.11.0)(typescript@5.9.2))(graphql@16.11.0)(typescript@5.9.2)': dependencies: @@ -5904,13 +5706,13 @@ snapshots: '@graphql-tools/executor-common@0.0.4(graphql@16.11.0)': dependencies: - '@envelop/core': 5.3.0 + '@envelop/core': 5.3.2 '@graphql-tools/utils': 10.9.1(graphql@16.11.0) graphql: 16.11.0 '@graphql-tools/executor-common@0.0.6(graphql@16.11.0)': dependencies: - '@envelop/core': 5.3.0 + '@envelop/core': 5.3.2 '@graphql-tools/utils': 10.9.1(graphql@16.11.0) graphql: 16.11.0 @@ -5931,7 +5733,7 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@24.3.0)(graphql@16.11.0)': + '@graphql-tools/executor-http@1.3.3(@types/node@24.5.2)(graphql@16.11.0)': dependencies: '@graphql-hive/signal': 1.0.0 '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) @@ -5941,7 +5743,7 @@ snapshots: '@whatwg-node/fetch': 0.10.10 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.11.0 - meros: 1.3.1(@types/node@24.3.0) + meros: 1.3.2(@types/node@24.5.2) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' @@ -5968,9 +5770,9 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/graphql-file-loader@8.0.22(graphql@16.11.0)': + '@graphql-tools/graphql-file-loader@8.1.1(graphql@16.11.0)': dependencies: - '@graphql-tools/import': 7.0.21(graphql@16.11.0) + '@graphql-tools/import': 7.1.1(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) globby: 11.1.0 graphql: 16.11.0 @@ -5979,7 +5781,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.0.21(graphql@16.11.0)': + '@graphql-tools/import@7.1.1(graphql@16.11.0)': dependencies: '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@theguild/federation-composition': 0.19.1(graphql@16.11.0) @@ -6018,10 +5820,10 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.33(@types/node@24.3.0)(graphql@16.11.0)': + '@graphql-tools/url-loader@8.0.33(@types/node@24.5.2)(graphql@16.11.0)': dependencies: '@graphql-tools/executor-graphql-ws': 2.0.7(graphql@16.11.0) - '@graphql-tools/executor-http': 1.3.3(@types/node@24.3.0)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@24.5.2)(graphql@16.11.0) '@graphql-tools/executor-legacy-ws': 1.1.19(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@graphql-tools/wrap': 10.1.4(graphql@16.11.0) @@ -6063,9 +5865,9 @@ snapshots: dependencies: graphql: 16.11.0 - '@grpc/grpc-js@1.13.4': + '@grpc/grpc-js@1.14.0': dependencies: - '@grpc/proto-loader': 0.7.15 + '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 '@grpc/proto-loader@0.7.15': @@ -6075,10 +5877,17 @@ snapshots: protobufjs: 7.5.4 yargs: 17.7.2 + '@grpc/proto-loader@0.8.0': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.4 + yargs: 17.7.2 + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6087,48 +5896,58 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2)': + '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2)': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 prettier: 3.6.2 semver: 7.7.2 transitivePeerDependencies: - supports-color + '@inquirer/external-editor@1.0.2(@types/node@24.5.2)': + dependencies: + chardet: 2.1.0 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 24.5.2 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@js-sdsl/ordered-map@4.4.2': {} - '@manypkg/cli@0.24.0': + '@manypkg/cli@0.25.1': dependencies: '@manypkg/get-packages': 3.1.0 - detect-indent: 7.0.1 + detect-indent: 7.0.2 normalize-path: 3.0.0 p-limit: 6.2.0 package-json: 10.0.1 @@ -6141,7 +5960,7 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -6152,7 +5971,7 @@ snapshots: '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -6168,7 +5987,7 @@ snapshots: dependencies: jju: 1.4.0 js-yaml: 4.1.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 '@microsoft/tsdoc-config@0.16.2': dependencies: @@ -6189,13 +6008,13 @@ snapshots: '@mysten/utils': 0.2.0 '@scure/base': 1.2.6 - '@mysten/codegen@0.4.4': + '@mysten/codegen@0.4.5': dependencies: '@mysten/bcs': 1.7.0 - '@mysten/sui': 1.37.5(typescript@5.9.2) + '@mysten/sui': 1.37.6(typescript@5.9.2) '@stricli/auto-complete': 1.2.0 '@stricli/core': 1.2.0 - '@types/node': 22.18.0 + '@types/node': 22.18.6 cosmiconfig: 9.0.0(typescript@5.9.2) prettier: 3.6.2 toml: 3.0.0 @@ -6228,7 +6047,7 @@ snapshots: - '@gql.tada/vue-support' - typescript - '@mysten/sui@1.37.5(typescript@5.9.2)': + '@mysten/sui@1.37.6(typescript@5.9.2)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@mysten/bcs': 1.7.0 @@ -6290,9 +6109,9 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.10.1 optional: true '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': @@ -6343,8 +6162,8 @@ snapshots: '@protobuf-ts/plugin@2.11.1': dependencies: - '@bufbuild/protobuf': 2.7.0 - '@bufbuild/protoplugin': 2.7.0 + '@bufbuild/protobuf': 2.9.0 + '@bufbuild/protoplugin': 2.9.0 '@protobuf-ts/protoc': 2.11.1 '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -6385,64 +6204,67 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} - '@rollup/rollup-android-arm-eabi@4.49.0': + '@rollup/rollup-android-arm-eabi@4.51.0': optional: true - '@rollup/rollup-android-arm64@4.49.0': + '@rollup/rollup-android-arm64@4.51.0': optional: true - '@rollup/rollup-darwin-arm64@4.49.0': + '@rollup/rollup-darwin-arm64@4.51.0': optional: true - '@rollup/rollup-darwin-x64@4.49.0': + '@rollup/rollup-darwin-x64@4.51.0': optional: true - '@rollup/rollup-freebsd-arm64@4.49.0': + '@rollup/rollup-freebsd-arm64@4.51.0': optional: true - '@rollup/rollup-freebsd-x64@4.49.0': + '@rollup/rollup-freebsd-x64@4.51.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': + '@rollup/rollup-linux-arm-gnueabihf@4.51.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.49.0': + '@rollup/rollup-linux-arm-musleabihf@4.51.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.49.0': + '@rollup/rollup-linux-arm64-gnu@4.51.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.49.0': + '@rollup/rollup-linux-arm64-musl@4.51.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': + '@rollup/rollup-linux-loong64-gnu@4.51.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.49.0': + '@rollup/rollup-linux-ppc64-gnu@4.51.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.49.0': + '@rollup/rollup-linux-riscv64-gnu@4.51.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.49.0': + '@rollup/rollup-linux-riscv64-musl@4.51.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.49.0': + '@rollup/rollup-linux-s390x-gnu@4.51.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.49.0': + '@rollup/rollup-linux-x64-gnu@4.51.0': optional: true - '@rollup/rollup-linux-x64-musl@4.49.0': + '@rollup/rollup-linux-x64-musl@4.51.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.49.0': + '@rollup/rollup-openharmony-arm64@4.51.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.49.0': + '@rollup/rollup-win32-arm64-msvc@4.51.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.49.0': + '@rollup/rollup-win32-ia32-msvc@4.51.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.51.0': optional: true '@rtsao/scc@1.1.0': {} @@ -6468,19 +6290,20 @@ snapshots: '@stricli/core@1.2.0': {} - '@tanstack/eslint-plugin-query@5.83.1(eslint@8.57.1)(typescript@5.9.2)': + '@tanstack/eslint-plugin-query@5.89.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.38.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 transitivePeerDependencies: - supports-color - typescript - '@testcontainers/postgresql@11.4.0': + '@testcontainers/postgresql@11.6.0': dependencies: - testcontainers: 11.4.0 + testcontainers: 11.6.0 transitivePeerDependencies: - bare-buffer + - react-native-b4a - supports-color '@theguild/federation-composition@0.19.1(graphql@16.11.0)': @@ -6493,7 +6316,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -6506,19 +6329,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 24.3.0 - '@types/ssh2': 1.15.5 - - '@types/dockerode@3.3.42': - dependencies: - '@types/docker-modem': 3.0.6 - '@types/node': 24.3.0 + '@types/node': 24.5.2 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.43': + '@types/dockerode@3.3.44': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.3.0 + '@types/node': 24.5.2 '@types/ssh2': 1.15.5 '@types/estree@1.0.8': {} @@ -6529,21 +6346,17 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.123': + '@types/node@18.19.127': dependencies: undici-types: 5.26.5 - '@types/node@22.17.0': + '@types/node@22.18.6': dependencies: undici-types: 6.21.0 - '@types/node@22.18.0': + '@types/node@24.5.2': dependencies: - undici-types: 6.21.0 - - '@types/node@24.3.0': - dependencies: - undici-types: 7.10.0 + undici-types: 7.12.0 '@types/parse-json@4.0.2': {} @@ -6551,24 +6364,24 @@ snapshots: dependencies: postcss: 8.5.6 - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.5': dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.127 '@types/ws@8.18.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: @@ -6577,7 +6390,7 @@ snapshots: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -6589,14 +6402,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.38.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/type-utils': 8.38.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.38.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/parser': 8.44.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/type-utils': 8.44.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 7.0.5 @@ -6619,30 +6432,30 @@ snapshots: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.38.0 - debug: 4.4.1 + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 + debug: 4.4.3 eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.38.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - debug: 4.4.1 + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6652,12 +6465,12 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@8.38.0': + '@typescript-eslint/scope-manager@8.44.0': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 - '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 @@ -6665,7 +6478,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 tsutils: 3.21.0(typescript@5.9.2) optionalDependencies: @@ -6673,12 +6486,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.38.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.44.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.38.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@8.57.1)(typescript@5.9.2) + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -6687,13 +6500,13 @@ snapshots: '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@8.38.0': {} + '@typescript-eslint/types@8.44.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.1 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 semver: 7.7.2 @@ -6703,13 +6516,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.38.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.38.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.2) - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/visitor-keys': 8.38.0 - debug: 4.4.1 + '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -6721,9 +6534,9 @@ snapshots: '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) @@ -6734,12 +6547,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.38.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/utils@8.44.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.38.0 - '@typescript-eslint/types': 8.38.0 - '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: @@ -6750,14 +6563,14 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.38.0': + '@typescript-eslint/visitor-keys@8.44.0': dependencies: - '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/types': 8.44.0 eslint-visitor-keys: 4.2.1 '@typescript/vfs@1.6.1(typescript@5.4.5)': dependencies: - debug: 4.4.1 + debug: 4.4.3 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -6825,7 +6638,7 @@ snapshots: '@vanilla-extract/babel-plugin-debug-ids@1.2.2': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 transitivePeerDependencies: - supports-color @@ -6836,7 +6649,7 @@ snapshots: css-what: 6.2.2 cssesc: 3.0.0 csstype: 3.1.3 - dedent: 1.6.0(babel-plugin-macros@3.1.0) + dedent: 1.7.0(babel-plugin-macros@3.1.0) deep-object-diff: 1.1.9 deepmerge: 4.3.1 lru-cache: 10.4.3 @@ -6846,27 +6659,27 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/esbuild-plugin@2.3.18(babel-plugin-macros@3.1.0)(esbuild@0.25.8)': + '@vanilla-extract/esbuild-plugin@2.3.18(babel-plugin-macros@3.1.0)(esbuild@0.25.10)': dependencies: '@vanilla-extract/integration': 8.0.4(babel-plugin-macros@3.1.0) optionalDependencies: - esbuild: 0.25.8 + esbuild: 0.25.10 transitivePeerDependencies: - babel-plugin-macros - supports-color '@vanilla-extract/integration@8.0.4(babel-plugin-macros@3.1.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - dedent: 1.6.0(babel-plugin-macros@3.1.0) - esbuild: 0.25.8 + dedent: 1.7.0(babel-plugin-macros@3.1.0) + esbuild: 0.25.10 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 - mlly: 1.7.4 + mlly: 1.8.0 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -6881,13 +6694,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.18 + magic-string: 0.30.19 optionalDependencies: - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -6902,12 +6715,12 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 '@vitest/spy@3.2.4': dependencies: - tinyspy: 4.0.3 + tinyspy: 4.0.4 '@vitest/utils@3.2.4': dependencies: @@ -6927,7 +6740,7 @@ snapshots: '@whatwg-node/node-fetch@0.7.25': dependencies: - '@fastify/busboy': 3.1.1 + '@fastify/busboy': 3.2.0 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 @@ -6957,13 +6770,18 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 archiver-utils@5.0.2: dependencies: @@ -6984,6 +6802,10 @@ snapshots: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 + transitivePeerDependencies: + - react-native-b4a + + arg@4.1.3: {} argparse@1.0.10: dependencies: @@ -7078,8 +6900,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 + browserslist: 4.26.2 + caniuse-lite: 1.0.30001743 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -7094,35 +6916,35 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.6.7: {} + b4a@1.7.1: {} babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 cosmiconfig: 7.1.0 resolve: 1.22.10 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.0): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) semver: 7.7.2 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.0): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) - core-js-compat: 3.44.0 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.0): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -7130,21 +6952,21 @@ snapshots: babel-preset-react-app@10.1.0: dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.28.0) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) - '@babel/preset-env': 7.28.0(@babel/core@7.28.0) - '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/runtime': 7.28.2 + '@babel/core': 7.28.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.4) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/runtime': 7.28.4 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: @@ -7152,14 +6974,18 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.6.1: + bare-events@2.7.0: optional: true - bare-fs@4.2.1: + bare-fs@4.4.4: dependencies: - bare-events: 2.6.1 + bare-events: 2.7.0 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.6.1) + bare-stream: 2.7.0(bare-events@2.7.0) + bare-url: 2.2.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - react-native-b4a optional: true bare-os@3.6.2: @@ -7170,15 +6996,24 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.6.1): + bare-stream@2.7.0(bare-events@2.7.0): dependencies: streamx: 2.22.1 optionalDependencies: - bare-events: 2.6.1 + bare-events: 2.7.0 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-url@2.2.2: + dependencies: + bare-path: 3.0.0 optional: true base64-js@1.5.1: {} + baseline-browser-mapping@2.8.6: {} + bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 @@ -7187,6 +7022,8 @@ snapshots: dependencies: is-windows: 1.0.2 + binary-extensions@2.3.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -7206,12 +7043,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.1: + browserslist@4.26.2: dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.194 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + baseline-browser-mapping: 2.8.6 + caniuse-lite: 1.0.30001743 + electron-to-chromium: 1.5.222 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) buffer-crc32@1.0.0: {} @@ -7251,7 +7089,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001731: {} + caniuse-lite@1.0.30001743: {} chai@5.3.3: dependencies: @@ -7266,10 +7104,22 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chardet@0.7.0: {} + chardet@2.1.0: {} check-error@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chownr@1.1.4: {} ci-info@3.9.0: {} @@ -7296,10 +7146,9 @@ snapshots: concat-map@0.0.1: {} - concurrently@9.2.0: + concurrently@9.2.1: dependencies: chalk: 4.1.2 - lodash: 4.17.21 rxjs: 7.8.2 shell-quote: 1.8.3 supports-color: 8.1.1 @@ -7323,9 +7172,9 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.44.0: + core-js-compat@3.45.1: dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 core-util-is@1.0.3: {} @@ -7416,7 +7265,11 @@ snapshots: dependencies: ms: 2.1.3 - dedent@1.6.0(babel-plugin-macros@3.1.0): + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dedent@1.7.0(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 @@ -7444,33 +7297,33 @@ snapshots: detect-indent@6.1.0: {} - detect-indent@7.0.1: {} + detect-indent@7.0.2: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 - docker-compose@1.2.0: + docker-compose@1.3.0: dependencies: yaml: 2.8.1 docker-modem@5.0.6: dependencies: - debug: 4.4.1 + debug: 4.4.3 readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.17.0 transitivePeerDependencies: - supports-color - dockerode@4.0.7: + dockerode@4.0.8: dependencies: '@balena/dockerignore': 1.0.2 - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.7.15 docker-modem: 5.0.6 protobufjs: 7.5.4 - tar-fs: 2.1.3 + tar-fs: 2.1.4 uuid: 10.0.0 transitivePeerDependencies: - supports-color @@ -7493,7 +7346,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.194: {} + electron-to-chromium@1.5.222: {} emoji-regex@8.0.0: {} @@ -7510,7 +7363,7 @@ snapshots: env-paths@2.2.1: {} - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -7617,63 +7470,34 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.25.8: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 - - esbuild@0.25.9: + esbuild@0.25.10: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.9 - '@esbuild/android-arm': 0.25.9 - '@esbuild/android-arm64': 0.25.9 - '@esbuild/android-x64': 0.25.9 - '@esbuild/darwin-arm64': 0.25.9 - '@esbuild/darwin-x64': 0.25.9 - '@esbuild/freebsd-arm64': 0.25.9 - '@esbuild/freebsd-x64': 0.25.9 - '@esbuild/linux-arm': 0.25.9 - '@esbuild/linux-arm64': 0.25.9 - '@esbuild/linux-ia32': 0.25.9 - '@esbuild/linux-loong64': 0.25.9 - '@esbuild/linux-mips64el': 0.25.9 - '@esbuild/linux-ppc64': 0.25.9 - '@esbuild/linux-riscv64': 0.25.9 - '@esbuild/linux-s390x': 0.25.9 - '@esbuild/linux-x64': 0.25.9 - '@esbuild/netbsd-arm64': 0.25.9 - '@esbuild/netbsd-x64': 0.25.9 - '@esbuild/openbsd-arm64': 0.25.9 - '@esbuild/openbsd-x64': 0.25.9 - '@esbuild/openharmony-arm64': 0.25.9 - '@esbuild/sunos-x64': 0.25.9 - '@esbuild/win32-arm64': 0.25.9 - '@esbuild/win32-ia32': 0.25.9 - '@esbuild/win32-x64': 0.25.9 + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 escalade@3.2.0: {} @@ -7683,18 +7507,18 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)(typescript@5.9.2): + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.2): dependencies: - '@babel/core': 7.28.0 - '@babel/eslint-parser': 7.28.0(@babel/core@7.28.0)(eslint@8.57.1) + '@babel/core': 7.28.4 + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.4)(eslint@8.57.1) '@rushstack/eslint-patch': 1.12.0 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.2) babel-preset-react-app: 10.1.0 confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) @@ -7721,19 +7545,19 @@ snapshots: eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -7744,21 +7568,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.38.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0))(eslint@8.57.1): + eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4))(@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4))(eslint@8.57.1): dependencies: - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) eslint: 8.57.1 lodash: 4.17.21 string-natural-compare: 3.0.1 @@ -7767,7 +7591,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7778,7 +7602,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7796,7 +7620,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7807,7 +7631,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7819,7 +7643,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.38.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.0(eslint@8.57.1)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7854,7 +7678,7 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.5.3(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2): dependencies: eslint: 8.57.1 prettier: 3.6.2 @@ -7906,12 +7730,12 @@ snapshots: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1): + eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1): dependencies: eslint: 8.57.1 eslint-rule-composer: 0.3.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) eslint-rule-composer@0.3.0: {} @@ -7933,7 +7757,7 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 @@ -7944,7 +7768,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -8002,7 +7826,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.17.0 + '@types/node': 22.18.6 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -8013,12 +7837,6 @@ snapshots: extendable-error@0.1.7: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -8227,13 +8045,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.5(@types/node@24.3.0)(graphql@16.11.0)(typescript@5.9.2): + graphql-config@5.1.5(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2): dependencies: - '@graphql-tools/graphql-file-loader': 8.0.22(graphql@16.11.0) + '@graphql-tools/graphql-file-loader': 8.1.1(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0) '@graphql-tools/load': 8.1.2(graphql@16.11.0) '@graphql-tools/merge': 9.1.1(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.33(@types/node@24.3.0)(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.33(@types/node@24.5.2)(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.9.2) graphql: 16.11.0 @@ -8283,7 +8101,7 @@ snapshots: human-id@4.1.1: {} - iconv-lite@0.4.24: + iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 @@ -8335,6 +8153,10 @@ snapshots: dependencies: has-bigints: 1.1.0 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.4 @@ -8517,7 +8339,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - ky@1.8.2: {} + ky@1.10.0: {} language-subtag-registry@0.3.23: {} @@ -8578,7 +8400,7 @@ snapshots: dependencies: yallist: 3.1.1 - magic-string@0.30.18: + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -8586,13 +8408,13 @@ snapshots: media-query-parser@2.0.2: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 merge2@1.4.1: {} - meros@1.3.1(@types/node@24.3.0): + meros@1.3.2(@types/node@24.5.2): optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 micromatch@4.0.8: dependencies: @@ -8619,7 +8441,7 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 @@ -8637,7 +8459,7 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.3.2: {} + napi-postinstall@0.3.3: {} natural-compare-lite@1.4.0: {} @@ -8656,7 +8478,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-releases@2.0.19: {} + node-releases@2.0.21: {} normalize-path@2.1.1: dependencies: @@ -8712,6 +8534,16 @@ snapshots: dependencies: wrappy: 1.0.2 + onchange@7.1.0: + dependencies: + '@blakeembrey/deque': 1.0.5 + '@blakeembrey/template': 1.2.0 + arg: 4.1.3 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + ignore: 5.3.2 + tree-kill: 1.2.2 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -8721,8 +8553,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-tmpdir@1.0.2: {} - outdent@0.5.0: {} own-keys@1.0.1: @@ -8771,14 +8601,14 @@ snapshots: package-json@10.0.1: dependencies: - ky: 1.8.2 + ky: 1.10.0 registry-auth-token: 5.1.0 registry-url: 6.0.1 semver: 7.7.2 package-manager-detector@0.2.11: dependencies: - quansync: 0.2.10 + quansync: 0.2.11 parent-module@1.0.1: dependencies: @@ -8789,7 +8619,7 @@ snapshots: parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -8825,7 +8655,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 poseidon-lite@0.2.1: {} @@ -8850,11 +8680,11 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier@3.6.2): + prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.6.2))(prettier@3.6.2): dependencies: prettier: 3.6.2 optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.5.1(prettier@3.6.2) + '@ianvs/prettier-plugin-sort-imports': 4.7.0(prettier@3.6.2) prettier@2.8.8: {} @@ -8894,7 +8724,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.3.0 + '@types/node': 24.5.2 long: 5.3.2 pump@3.0.3: @@ -8904,7 +8734,7 @@ snapshots: punycode@2.3.1: {} - quansync@0.2.10: {} + quansync@0.2.11: {} queue-microtask@1.2.3: {} @@ -8952,6 +8782,10 @@ snapshots: dependencies: minimatch: 5.1.6 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -8963,7 +8797,7 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.0: + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -8978,14 +8812,14 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.2.0: + regexpu-core@6.3.1: dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.2.1 registry-auth-token@5.1.0: dependencies: @@ -9038,30 +8872,31 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.49.0: + rollup@4.51.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.49.0 - '@rollup/rollup-android-arm64': 4.49.0 - '@rollup/rollup-darwin-arm64': 4.49.0 - '@rollup/rollup-darwin-x64': 4.49.0 - '@rollup/rollup-freebsd-arm64': 4.49.0 - '@rollup/rollup-freebsd-x64': 4.49.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.49.0 - '@rollup/rollup-linux-arm-musleabihf': 4.49.0 - '@rollup/rollup-linux-arm64-gnu': 4.49.0 - '@rollup/rollup-linux-arm64-musl': 4.49.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.49.0 - '@rollup/rollup-linux-ppc64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-musl': 4.49.0 - '@rollup/rollup-linux-s390x-gnu': 4.49.0 - '@rollup/rollup-linux-x64-gnu': 4.49.0 - '@rollup/rollup-linux-x64-musl': 4.49.0 - '@rollup/rollup-win32-arm64-msvc': 4.49.0 - '@rollup/rollup-win32-ia32-msvc': 4.49.0 - '@rollup/rollup-win32-x64-msvc': 4.49.0 + '@rollup/rollup-android-arm-eabi': 4.51.0 + '@rollup/rollup-android-arm64': 4.51.0 + '@rollup/rollup-darwin-arm64': 4.51.0 + '@rollup/rollup-darwin-x64': 4.51.0 + '@rollup/rollup-freebsd-arm64': 4.51.0 + '@rollup/rollup-freebsd-x64': 4.51.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.51.0 + '@rollup/rollup-linux-arm-musleabihf': 4.51.0 + '@rollup/rollup-linux-arm64-gnu': 4.51.0 + '@rollup/rollup-linux-arm64-musl': 4.51.0 + '@rollup/rollup-linux-loong64-gnu': 4.51.0 + '@rollup/rollup-linux-ppc64-gnu': 4.51.0 + '@rollup/rollup-linux-riscv64-gnu': 4.51.0 + '@rollup/rollup-linux-riscv64-musl': 4.51.0 + '@rollup/rollup-linux-s390x-gnu': 4.51.0 + '@rollup/rollup-linux-x64-gnu': 4.51.0 + '@rollup/rollup-linux-x64-musl': 4.51.0 + '@rollup/rollup-openharmony-arm64': 4.51.0 + '@rollup/rollup-win32-arm64-msvc': 4.51.0 + '@rollup/rollup-win32-ia32-msvc': 4.51.0 + '@rollup/rollup-win32-x64-msvc': 4.51.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -9209,7 +9044,9 @@ snapshots: fast-fifo: 1.3.2 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.6.1 + bare-events: 2.7.0 + transitivePeerDependencies: + - react-native-b4a string-env-interpolation@1.0.1: {} @@ -9225,7 +9062,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string.prototype.includes@2.0.1: dependencies: @@ -9289,9 +9126,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -9323,22 +9160,23 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tar-fs@2.1.3: + tar-fs@2.1.4: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 - tar-fs@3.1.0: + tar-fs@3.1.1: dependencies: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.2.1 + bare-fs: 4.4.4 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer + - react-native-b4a tar-stream@2.2.0: dependencies: @@ -9350,57 +9188,41 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.6.7 + b4a: 1.7.1 fast-fifo: 1.3.2 streamx: 2.22.1 + transitivePeerDependencies: + - react-native-b4a term-size@2.2.1: {} - testcontainers@11.4.0: - dependencies: - '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.42 - archiver: 7.0.1 - async-lock: 1.4.1 - byline: 5.0.0 - debug: 4.4.1 - docker-compose: 1.2.0 - dockerode: 4.0.7 - get-port: 7.1.0 - proper-lockfile: 4.1.2 - properties-reader: 2.3.0 - ssh-remote-port-forward: 1.0.4 - tar-fs: 3.1.0 - tmp: 0.2.3 - undici: 7.13.0 - transitivePeerDependencies: - - bare-buffer - - supports-color - - testcontainers@11.5.1: + testcontainers@11.6.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.43 + '@types/dockerode': 3.3.44 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.1 - docker-compose: 1.2.0 - dockerode: 4.0.7 + debug: 4.4.3 + docker-compose: 1.3.0 + dockerode: 4.0.8 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 ssh-remote-port-forward: 1.0.4 - tar-fs: 3.1.0 + tar-fs: 3.1.1 tmp: 0.2.5 - undici: 7.15.0 + undici: 7.16.0 transitivePeerDependencies: - bare-buffer + - react-native-b4a - supports-color text-decoder@1.2.3: dependencies: - b4a: 1.6.7 + b4a: 1.7.1 + transitivePeerDependencies: + - react-native-b4a text-table@0.2.0: {} @@ -9412,7 +9234,7 @@ snapshots: tinyexec@1.0.1: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -9421,13 +9243,7 @@ snapshots: tinyrainbow@2.0.0: {} - tinyspy@4.0.3: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.2.3: {} + tinyspy@4.0.4: {} tmp@0.2.5: {} @@ -9459,39 +9275,39 @@ snapshots: tslib: 1.14.1 typescript: 5.9.2 - tsx@4.20.3: + tsx@4.20.5: dependencies: - esbuild: 0.25.8 + esbuild: 0.25.10 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.5.5: + turbo-darwin-64@2.5.6: optional: true - turbo-darwin-arm64@2.5.5: + turbo-darwin-arm64@2.5.6: optional: true - turbo-linux-64@2.5.5: + turbo-linux-64@2.5.6: optional: true - turbo-linux-arm64@2.5.5: + turbo-linux-arm64@2.5.6: optional: true - turbo-windows-64@2.5.5: + turbo-windows-64@2.5.6: optional: true - turbo-windows-arm64@2.5.5: + turbo-windows-arm64@2.5.6: optional: true - turbo@2.5.5: + turbo@2.5.6: optionalDependencies: - turbo-darwin-64: 2.5.5 - turbo-darwin-arm64: 2.5.5 - turbo-linux-64: 2.5.5 - turbo-linux-arm64: 2.5.5 - turbo-windows-64: 2.5.5 - turbo-windows-arm64: 2.5.5 + turbo-darwin-64: 2.5.6 + turbo-darwin-arm64: 2.5.6 + turbo-linux-64: 2.5.6 + turbo-linux-arm64: 2.5.6 + turbo-windows-64: 2.5.6 + turbo-windows-arm64: 2.5.6 tweetnacl@0.14.5: {} @@ -9553,22 +9369,20 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.10.0: {} + undici-types@7.12.0: {} - undici@7.13.0: {} - - undici@7.15.0: {} + undici@7.16.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-property-aliases-ecmascript: 2.2.0 - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} unicorn-magic@0.1.0: {} @@ -9580,7 +9394,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.2 + napi-postinstall: 0.3.3 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1 @@ -9602,9 +9416,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.3(browserslist@4.26.2): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -9626,13 +9440,13 @@ snapshots: validate-npm-package-name@6.0.2: {} - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -9647,48 +9461,48 @@ snapshots: - tsx - yaml - vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1): + vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: - esbuild: 0.25.9 + esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.49.0 - tinyglobby: 0.2.14 + rollup: 4.51.0 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 2.5.1 - tsx: 4.20.3 + tsx: 4.20.5 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.1 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(tsx@4.20.3)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.5.2 transitivePeerDependencies: - jiti - less @@ -9767,9 +9581,9 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} diff --git a/packages/messaging/pnpm-workspace.yaml b/packages/messaging/pnpm-workspace.yaml new file mode 100644 index 0000000..f5d12d8 --- /dev/null +++ b/packages/messaging/pnpm-workspace.yaml @@ -0,0 +1,10 @@ +packages: + - '../build-scripts' + - '!**/dist/**' + - '!**/.next/**' + +autoInstallPeers: false + +# Enforce that packages must be at least 2 days old before they're installed +# This reduces the risk of supply chain attacks from newly published packages +minimumReleaseAge: 2880 diff --git a/packages/messaging/prettier.config.js b/packages/messaging/prettier.config.js new file mode 100644 index 0000000..97bc296 --- /dev/null +++ b/packages/messaging/prettier.config.js @@ -0,0 +1,35 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module.exports = { + printWidth: 100, + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', + useTabs: true, + overrides: [ + { + files: 'packages/**/*', + options: { + proseWrap: 'always', + }, + }, + { + plugins: ['@ianvs/prettier-plugin-sort-imports'], + files: 'packages/**/*.tsx?', + options: { + proseWrap: 'always', + importOrder: [ + '', + '', + '', + '^@/(.*)$', + '^~/(.*)$', + '', + '^[.]', + ], + }, + }, + ], +}; diff --git a/packages/messaging/src/client.ts b/packages/messaging/src/client.ts index 082218d..f968ac7 100644 --- a/packages/messaging/src/client.ts +++ b/packages/messaging/src/client.ts @@ -1,9 +1,12 @@ -import { Transaction, type TransactionResult } from '@mysten/sui/transactions'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { Transaction } from '@mysten/sui/transactions'; +import type { TransactionResult } from '@mysten/sui/transactions'; import type { Signer } from '@mysten/sui/cryptography'; import { deriveDynamicFieldID } from '@mysten/sui/utils'; import { bcs } from '@mysten/sui/bcs'; import type { ClientWithExtensions, Experimental_SuiClientTypes } from '@mysten/sui/experimental'; -import { WalrusClient } from '@mysten/walrus'; +import type { WalrusClient } from '@mysten/walrus'; import { _new as newChannel, @@ -46,7 +49,7 @@ import { WalrusStorageAdapter } from './storage/adapters/walrus/walrus.js'; import type { EncryptedSymmetricKey } from './encryption/types.js'; import { EnvelopeEncryption } from './encryption/envelopeEncryption.js'; -import type { RawTransactionArgument } from './contracts/utils'; +import type { RawTransactionArgument } from './contracts/utils/index.js'; import { CreatorCap, transferToSender as transferCreatorCap, @@ -996,7 +999,7 @@ export class SuiStackMessagingClient { throw new MessagingClientError(`Failed to ${action} (${digest}): ${effects?.status.error}`); } - if (!!waitForTransaction) { + if (waitForTransaction) { await this.#suiClient.core.waitForTransaction({ digest, }); @@ -1144,25 +1147,25 @@ export class SuiStackMessagingClient { blobRef: string; nonce: Uint8Array; }): Promise> { - return new Promise(async (resolve, reject) => { - try { - // Download the encrypted data - const [encryptedData] = await this.#storage(this.#suiClient).download([blobRef]); + const downloadAndDecrypt = async (): Promise> => { + // Download the encrypted data + const [encryptedData] = await this.#storage(this.#suiClient).download([blobRef]); + + // Decrypt the data + const decryptedData = await this.#envelopeEncryption.decryptAttachmentData({ + encryptedBytes: new Uint8Array(encryptedData), + nonce: new Uint8Array(nonce), + channelId, + memberCapId, + sender, + encryptedKey, + }); - // Decrypt the data - const decryptedData = await this.#envelopeEncryption.decryptAttachmentData({ - encryptedBytes: new Uint8Array(encryptedData), - nonce: new Uint8Array(nonce), - channelId, - memberCapId, - sender, - encryptedKey, - }); + return decryptedData.data; + }; - resolve(decryptedData.data); - } catch (error) { - reject(error); - } + return new Promise((resolve, reject) => { + downloadAndDecrypt().then(resolve).catch(reject); }); } diff --git a/packages/messaging/src/constants.ts b/packages/messaging/src/constants.ts index 106f16f..221b40c 100644 --- a/packages/messaging/src/constants.ts +++ b/packages/messaging/src/constants.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import type { MessagingPackageConfig } from './types.js'; export const TESTNET_MESSAGING_PACKAGE_CONFIG = { diff --git a/packages/messaging/src/contracts/sui_stack_messaging/admin.ts b/packages/messaging/src/contracts/sui_stack_messaging/admin.ts index d932abd..d8f6ac5 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/admin.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/admin.ts @@ -1,7 +1,5 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ - +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 /** * Package-level Admin features: Change package version Change Channel object's @@ -11,4 +9,4 @@ import { MoveTuple } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; const $moduleName = '@local-pkg/sui-stack-messaging::admin'; -export const Admin = new MoveTuple({ name: `${$moduleName}::Admin`, fields: [bcs.bool()] }); \ No newline at end of file +export const Admin = new MoveTuple({ name: `${$moduleName}::Admin`, fields: [bcs.bool()] }); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/attachment.ts b/packages/messaging/src/contracts/sui_stack_messaging/attachment.ts index 73d2276..ede65ba 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/attachment.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/attachment.ts @@ -1,92 +1,98 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveStruct, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; const $moduleName = '@local-pkg/sui-stack-messaging::attachment'; -export const Attachment = new MoveStruct({ name: `${$moduleName}::Attachment`, fields: { - blob_ref: bcs.string(), - encrypted_metadata: bcs.vector(bcs.u8()), - data_nonce: bcs.vector(bcs.u8()), - metadata_nonce: bcs.vector(bcs.u8()), - key_version: bcs.u32() - } }); +export const Attachment = new MoveStruct({ + name: `${$moduleName}::Attachment`, + fields: { + blob_ref: bcs.string(), + encrypted_metadata: bcs.vector(bcs.u8()), + data_nonce: bcs.vector(bcs.u8()), + metadata_nonce: bcs.vector(bcs.u8()), + key_version: bcs.u32(), + }, +}); export interface NewArguments { - blobRef: RawTransactionArgument; - encryptedMetadata: RawTransactionArgument; - dataNonce: RawTransactionArgument; - metadataNonce: RawTransactionArgument; - keyVersion: RawTransactionArgument; + blobRef: RawTransactionArgument; + encryptedMetadata: RawTransactionArgument; + dataNonce: RawTransactionArgument; + metadataNonce: RawTransactionArgument; + keyVersion: RawTransactionArgument; } export interface NewOptions { - package?: string; - arguments: NewArguments | [ - blobRef: RawTransactionArgument, - encryptedMetadata: RawTransactionArgument, - dataNonce: RawTransactionArgument, - metadataNonce: RawTransactionArgument, - keyVersion: RawTransactionArgument - ]; + package?: string; + arguments: + | NewArguments + | [ + blobRef: RawTransactionArgument, + encryptedMetadata: RawTransactionArgument, + dataNonce: RawTransactionArgument, + metadataNonce: RawTransactionArgument, + keyVersion: RawTransactionArgument, + ]; } export function _new(options: NewOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - '0x0000000000000000000000000000000000000000000000000000000000000001::string::String', - 'vector', - 'vector', - 'vector', - 'u32' - ] satisfies string[]; - const parameterNames = ["blobRef", "encryptedMetadata", "dataNonce", "metadataNonce", "keyVersion"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'attachment', - function: 'new', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + '0x0000000000000000000000000000000000000000000000000000000000000001::string::String', + 'vector', + 'vector', + 'vector', + 'u32', + ] satisfies string[]; + const parameterNames = [ + 'blobRef', + 'encryptedMetadata', + 'dataNonce', + 'metadataNonce', + 'keyVersion', + ]; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'attachment', + function: 'new', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface BlobRefArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface BlobRefOptions { - package?: string; - arguments: BlobRefArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: BlobRefArguments | [self: RawTransactionArgument]; } export function blobRef(options: BlobRefOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::attachment::Attachment` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'attachment', - function: 'blob_ref', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::attachment::Attachment`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'attachment', + function: 'blob_ref', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface DataNonceArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface DataNonceOptions { - package?: string; - arguments: DataNonceArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: DataNonceArguments | [self: RawTransactionArgument]; } export function dataNonce(options: DataNonceOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::attachment::Attachment` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'attachment', - function: 'data_nonce', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::attachment::Attachment`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'attachment', + function: 'data_nonce', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/auth.ts b/packages/messaging/src/contracts/sui_stack_messaging/auth.ts index 3a63efe..829cc32 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/auth.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/auth.ts @@ -1,6 +1,5 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { MoveStruct, MoveTuple } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; import * as vec_map from './deps/sui/vec_map.js'; @@ -8,8 +7,14 @@ import * as vec_set from './deps/sui/vec_set.js'; import * as type_name from './deps/std/type_name.js'; import * as versioned from './deps/sui/versioned.js'; const $moduleName = '@local-pkg/sui-stack-messaging::auth'; -export const Auth = new MoveStruct({ name: `${$moduleName}::Auth`, fields: { - member_permissions: vec_map.VecMap(bcs.Address, vec_set.VecSet(type_name.TypeName)), - config: versioned.Versioned - } }); -export const EditPermissions = new MoveTuple({ name: `${$moduleName}::EditPermissions`, fields: [bcs.bool()] }); \ No newline at end of file +export const Auth = new MoveStruct({ + name: `${$moduleName}::Auth`, + fields: { + member_permissions: vec_map.VecMap(bcs.Address, vec_set.VecSet(type_name.TypeName)), + config: versioned.Versioned, + }, +}); +export const EditPermissions = new MoveTuple({ + name: `${$moduleName}::EditPermissions`, + fields: [bcs.bool()], +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/channel.ts b/packages/messaging/src/contracts/sui_stack_messaging/channel.ts index acd13b6..c970e56 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/channel.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/channel.ts @@ -1,65 +1,69 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveStruct, MoveTuple, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveStruct, MoveTuple, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; import * as object from './deps/sui/object.js'; import * as auth from './auth.js'; import * as table_vec from './deps/sui/table_vec.js'; import * as message from './message.js'; import * as encryption_key_history from './encryption_key_history.js'; const $moduleName = '@local-pkg/sui-stack-messaging::channel'; -export const Channel = new MoveStruct({ name: `${$moduleName}::Channel`, fields: { - id: object.UID, - /** The version of this object, for handling updgrades. */ - version: bcs.u64(), - /** - * The Authorization struct, gating actions to member permissions. Note: It also, - * practically, keeps tracks of the members (MemberCap ID -> Permissions) - */ - auth: auth.Auth, - /** - * The message history of the channel. - * - * Using `TableVec` to avoid the object size limit. - */ - messages: table_vec.TableVec, - /** - * The total number of messages, for efficiency, so that we don't have to make a - * call to messages.length() (Maybe I am overthinking this, need to measure) - */ - messages_count: bcs.u64(), - /** - * A duplicate of the last entry of the messages TableVec, - * - * Utilize this for efficient fetching e.g. list of conversations showing the - * latest message and the user who sent it - */ - last_message: bcs.option(message.Message), - /** The timestamp (in milliseconds) when the channel was created. */ - created_at_ms: bcs.u64(), - /** - * The timestamp (in milliseconds) when the channel was last updated. (e.g. change - * in metadata, members, admins, keys) - */ - updated_at_ms: bcs.u64(), - /** - * History of Encryption keys - * - * Holds the latest key, the latest_version, and a TableVec of the historical keys - */ - encryption_key_history: encryption_key_history.EncryptionKeyHistory - } }); -export const SimpleMessenger = new MoveTuple({ name: `${$moduleName}::SimpleMessenger`, fields: [bcs.bool()] }); +export const Channel = new MoveStruct({ + name: `${$moduleName}::Channel`, + fields: { + id: object.UID, + /** The version of this object, for handling updgrades. */ + version: bcs.u64(), + /** + * The Authorization struct, gating actions to member permissions. Note: It also, + * practically, keeps tracks of the members (MemberCap ID -> Permissions) + */ + auth: auth.Auth, + /** + * The message history of the channel. + * + * Using `TableVec` to avoid the object size limit. + */ + messages: table_vec.TableVec, + /** + * The total number of messages, for efficiency, so that we don't have to make a + * call to messages.length() (Maybe I am overthinking this, need to measure) + */ + messages_count: bcs.u64(), + /** + * A duplicate of the last entry of the messages TableVec, + * + * Utilize this for efficient fetching e.g. list of conversations showing the + * latest message and the user who sent it + */ + last_message: bcs.option(message.Message), + /** The timestamp (in milliseconds) when the channel was created. */ + created_at_ms: bcs.u64(), + /** + * The timestamp (in milliseconds) when the channel was last updated. (e.g. change + * in metadata, members, admins, keys) + */ + updated_at_ms: bcs.u64(), + /** + * History of Encryption keys + * + * Holds the latest key, the latest_version, and a TableVec of the historical keys + */ + encryption_key_history: encryption_key_history.EncryptionKeyHistory, + }, +}); +export const SimpleMessenger = new MoveTuple({ + name: `${$moduleName}::SimpleMessenger`, + fields: [bcs.bool()], +}); export interface NewArguments { - config: RawTransactionArgument; + config: RawTransactionArgument; } export interface NewOptions { - package?: string; - arguments: NewArguments | [ - config: RawTransactionArgument - ]; + package?: string; + arguments: NewArguments | [config: RawTransactionArgument]; } /** * Create a new `Channel` object with empty Config, Roles, messages. Adds the @@ -70,29 +74,29 @@ export interface NewOptions { * ChannelID as identity bytes -> add_encrypted_key(CreatorCap) */ export function _new(options: NewOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `0x0000000000000000000000000000000000000000000000000000000000000001::option::Option<${packageAddress}::config::Config>`, - '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock' - ] satisfies string[]; - const parameterNames = ["config", "clock"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'new', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `0x0000000000000000000000000000000000000000000000000000000000000001::option::Option<${packageAddress}::config::Config>`, + '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock', + ] satisfies string[]; + const parameterNames = ['config', 'clock']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'new', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ShareArguments { - self: RawTransactionArgument; - creatorCap: RawTransactionArgument; + self: RawTransactionArgument; + creatorCap: RawTransactionArgument; } export interface ShareOptions { - package?: string; - arguments: ShareArguments | [ - self: RawTransactionArgument, - creatorCap: RawTransactionArgument - ]; + package?: string; + arguments: + | ShareArguments + | [self: RawTransactionArgument, creatorCap: RawTransactionArgument]; } /** * Share the Channel object Note: at this point the client needs to attach an @@ -100,170 +104,180 @@ export interface ShareOptions { * interacted with. */ export function share(options: ShareOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel`, - `${packageAddress}::creator_cap::CreatorCap` - ] satisfies string[]; - const parameterNames = ["self", "creatorCap"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'share', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::channel::Channel`, + `${packageAddress}::creator_cap::CreatorCap`, + ] satisfies string[]; + const parameterNames = ['self', 'creatorCap']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'share', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface AddEncryptedKeyArguments { - self: RawTransactionArgument; - memberCap: RawTransactionArgument; - newEncryptionKeyBytes: RawTransactionArgument; + self: RawTransactionArgument; + memberCap: RawTransactionArgument; + newEncryptionKeyBytes: RawTransactionArgument; } export interface AddEncryptedKeyOptions { - package?: string; - arguments: AddEncryptedKeyArguments | [ - self: RawTransactionArgument, - memberCap: RawTransactionArgument, - newEncryptionKeyBytes: RawTransactionArgument - ]; + package?: string; + arguments: + | AddEncryptedKeyArguments + | [ + self: RawTransactionArgument, + memberCap: RawTransactionArgument, + newEncryptionKeyBytes: RawTransactionArgument, + ]; } /** Add the encrypted Channel Key (a key encrypted with Seal) to the Channel. */ export function addEncryptedKey(options: AddEncryptedKeyOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel`, - `${packageAddress}::member_cap::MemberCap`, - 'vector' - ] satisfies string[]; - const parameterNames = ["self", "memberCap", "newEncryptionKeyBytes"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'add_encrypted_key', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::channel::Channel`, + `${packageAddress}::member_cap::MemberCap`, + 'vector', + ] satisfies string[]; + const parameterNames = ['self', 'memberCap', 'newEncryptionKeyBytes']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'add_encrypted_key', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface AddMembersArguments { - self: RawTransactionArgument; - memberCap: RawTransactionArgument; - n: RawTransactionArgument; + self: RawTransactionArgument; + memberCap: RawTransactionArgument; + n: RawTransactionArgument; } export interface AddMembersOptions { - package?: string; - arguments: AddMembersArguments | [ - self: RawTransactionArgument, - memberCap: RawTransactionArgument, - n: RawTransactionArgument - ]; + package?: string; + arguments: + | AddMembersArguments + | [ + self: RawTransactionArgument, + memberCap: RawTransactionArgument, + n: RawTransactionArgument, + ]; } /** Add new members to the Channel with the default SimpleMessenger permission */ export function addMembers(options: AddMembersOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel`, - `${packageAddress}::member_cap::MemberCap`, - 'u64', - '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock' - ] satisfies string[]; - const parameterNames = ["self", "memberCap", "n", "clock"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'add_members', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::channel::Channel`, + `${packageAddress}::member_cap::MemberCap`, + 'u64', + '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock', + ] satisfies string[]; + const parameterNames = ['self', 'memberCap', 'n', 'clock']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'add_members', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface RemoveMembersArguments { - self: RawTransactionArgument; - memberCap: RawTransactionArgument; - membersToRemove: RawTransactionArgument; + self: RawTransactionArgument; + memberCap: RawTransactionArgument; + membersToRemove: RawTransactionArgument; } export interface RemoveMembersOptions { - package?: string; - arguments: RemoveMembersArguments | [ - self: RawTransactionArgument, - memberCap: RawTransactionArgument, - membersToRemove: RawTransactionArgument - ]; + package?: string; + arguments: + | RemoveMembersArguments + | [ + self: RawTransactionArgument, + memberCap: RawTransactionArgument, + membersToRemove: RawTransactionArgument, + ]; } /** * Remove members from the Channel TODO: should we enforce a key rotation here, by * asking for a new_encryption_key arg? */ export function removeMembers(options: RemoveMembersOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel`, - `${packageAddress}::member_cap::MemberCap`, - 'vector<0x0000000000000000000000000000000000000000000000000000000000000002::object::ID>', - '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock' - ] satisfies string[]; - const parameterNames = ["self", "memberCap", "membersToRemove", "clock"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'remove_members', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::channel::Channel`, + `${packageAddress}::member_cap::MemberCap`, + 'vector<0x0000000000000000000000000000000000000000000000000000000000000002::object::ID>', + '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock', + ] satisfies string[]; + const parameterNames = ['self', 'memberCap', 'membersToRemove', 'clock']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'remove_members', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface SendMessageArguments { - self: RawTransactionArgument; - memberCap: RawTransactionArgument; - ciphertext: RawTransactionArgument; - nonce: RawTransactionArgument; - attachments: RawTransactionArgument; + self: RawTransactionArgument; + memberCap: RawTransactionArgument; + ciphertext: RawTransactionArgument; + nonce: RawTransactionArgument; + attachments: RawTransactionArgument; } export interface SendMessageOptions { - package?: string; - arguments: SendMessageArguments | [ - self: RawTransactionArgument, - memberCap: RawTransactionArgument, - ciphertext: RawTransactionArgument, - nonce: RawTransactionArgument, - attachments: RawTransactionArgument - ]; + package?: string; + arguments: + | SendMessageArguments + | [ + self: RawTransactionArgument, + memberCap: RawTransactionArgument, + ciphertext: RawTransactionArgument, + nonce: RawTransactionArgument, + attachments: RawTransactionArgument, + ]; } /** Send a new message to the Channel */ export function sendMessage(options: SendMessageOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel`, - `${packageAddress}::member_cap::MemberCap`, - 'vector', - 'vector', - `vector<${packageAddress}::attachment::Attachment>`, - '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock' - ] satisfies string[]; - const parameterNames = ["self", "memberCap", "ciphertext", "nonce", "attachments", "clock"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'send_message', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::channel::Channel`, + `${packageAddress}::member_cap::MemberCap`, + 'vector', + 'vector', + `vector<${packageAddress}::attachment::Attachment>`, + '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock', + ] satisfies string[]; + const parameterNames = ['self', 'memberCap', 'ciphertext', 'nonce', 'attachments', 'clock']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'send_message', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface NamespaceArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface NamespaceOptions { - package?: string; - arguments: NamespaceArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: NamespaceArguments | [self: RawTransactionArgument]; } /** * Returns a namespace for the channel to be utilized by seal_policies In this case * we use the Channel's UID bytes */ export function namespace(options: NamespaceOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::channel::Channel` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'channel', - function: 'namespace', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::channel::Channel`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'channel', + function: 'namespace', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/config.ts b/packages/messaging/src/contracts/sui_stack_messaging/config.ts index 566ca52..23bf07f 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/config.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/config.ts @@ -1,259 +1,244 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveTuple, MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveTuple, MoveStruct, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; const $moduleName = '@local-pkg/sui-stack-messaging::config'; -export const EditConfig = new MoveTuple({ name: `${$moduleName}::EditConfig`, fields: [bcs.bool()] }); -export const Config = new MoveStruct({ name: `${$moduleName}::Config`, fields: { - max_channel_members: bcs.u64(), - max_channel_roles: bcs.u64(), - max_message_text_chars: bcs.u64(), - max_message_attachments: bcs.u64(), - require_invitation: bcs.bool(), - require_request: bcs.bool(), - emit_events: bcs.bool() - } }); +export const EditConfig = new MoveTuple({ + name: `${$moduleName}::EditConfig`, + fields: [bcs.bool()], +}); +export const Config = new MoveStruct({ + name: `${$moduleName}::Config`, + fields: { + max_channel_members: bcs.u64(), + max_channel_roles: bcs.u64(), + max_message_text_chars: bcs.u64(), + max_message_attachments: bcs.u64(), + require_invitation: bcs.bool(), + require_request: bcs.bool(), + emit_events: bcs.bool(), + }, +}); export interface DefaultOptions { - package?: string; - arguments?: [ - ]; + package?: string; + arguments?: []; } export function _default(options: DefaultOptions = {}) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'default', - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'default', + }); } export interface NewArguments { - maxChannelMembers: RawTransactionArgument; - maxChannelRoles: RawTransactionArgument; - maxMessageTextChars: RawTransactionArgument; - maxMessageAttachments: RawTransactionArgument; - requireInvitation: RawTransactionArgument; - requireRequest: RawTransactionArgument; - emitEvents: RawTransactionArgument; + maxChannelMembers: RawTransactionArgument; + maxChannelRoles: RawTransactionArgument; + maxMessageTextChars: RawTransactionArgument; + maxMessageAttachments: RawTransactionArgument; + requireInvitation: RawTransactionArgument; + requireRequest: RawTransactionArgument; + emitEvents: RawTransactionArgument; } export interface NewOptions { - package?: string; - arguments: NewArguments | [ - maxChannelMembers: RawTransactionArgument, - maxChannelRoles: RawTransactionArgument, - maxMessageTextChars: RawTransactionArgument, - maxMessageAttachments: RawTransactionArgument, - requireInvitation: RawTransactionArgument, - requireRequest: RawTransactionArgument, - emitEvents: RawTransactionArgument - ]; + package?: string; + arguments: + | NewArguments + | [ + maxChannelMembers: RawTransactionArgument, + maxChannelRoles: RawTransactionArgument, + maxMessageTextChars: RawTransactionArgument, + maxMessageAttachments: RawTransactionArgument, + requireInvitation: RawTransactionArgument, + requireRequest: RawTransactionArgument, + emitEvents: RawTransactionArgument, + ]; } export function _new(options: NewOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - 'u64', - 'u64', - 'u64', - 'u64', - 'bool', - 'bool', - 'bool' - ] satisfies string[]; - const parameterNames = ["maxChannelMembers", "maxChannelRoles", "maxMessageTextChars", "maxMessageAttachments", "requireInvitation", "requireRequest", "emitEvents"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'new', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = ['u64', 'u64', 'u64', 'u64', 'bool', 'bool', 'bool'] satisfies string[]; + const parameterNames = [ + 'maxChannelMembers', + 'maxChannelRoles', + 'maxMessageTextChars', + 'maxMessageAttachments', + 'requireInvitation', + 'requireRequest', + 'emitEvents', + ]; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'new', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface NoneOptions { - package?: string; - arguments?: [ - ]; + package?: string; + arguments?: []; } export function none(options: NoneOptions = {}) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'none', - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'none', + }); } export interface IsValidConfigArguments { - config: RawTransactionArgument; + config: RawTransactionArgument; } export interface IsValidConfigOptions { - package?: string; - arguments: IsValidConfigArguments | [ - config: RawTransactionArgument - ]; + package?: string; + arguments: IsValidConfigArguments | [config: RawTransactionArgument]; } export function isValidConfig(options: IsValidConfigOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["config"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'is_valid_config', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['config']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'is_valid_config', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigMaxChannelMembersArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigMaxChannelMembersOptions { - package?: string; - arguments: ConfigMaxChannelMembersArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigMaxChannelMembersArguments | [self: RawTransactionArgument]; } export function configMaxChannelMembers(options: ConfigMaxChannelMembersOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_max_channel_members', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_max_channel_members', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigMaxChannelRolesArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigMaxChannelRolesOptions { - package?: string; - arguments: ConfigMaxChannelRolesArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigMaxChannelRolesArguments | [self: RawTransactionArgument]; } export function configMaxChannelRoles(options: ConfigMaxChannelRolesOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_max_channel_roles', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_max_channel_roles', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigMaxMessageTextCharsArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigMaxMessageTextCharsOptions { - package?: string; - arguments: ConfigMaxMessageTextCharsArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigMaxMessageTextCharsArguments | [self: RawTransactionArgument]; } export function configMaxMessageTextChars(options: ConfigMaxMessageTextCharsOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_max_message_text_chars', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_max_message_text_chars', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigMaxMessageAttachmentsArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigMaxMessageAttachmentsOptions { - package?: string; - arguments: ConfigMaxMessageAttachmentsArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigMaxMessageAttachmentsArguments | [self: RawTransactionArgument]; } export function configMaxMessageAttachments(options: ConfigMaxMessageAttachmentsOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_max_message_attachments', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_max_message_attachments', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigRequireInvitationArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigRequireInvitationOptions { - package?: string; - arguments: ConfigRequireInvitationArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigRequireInvitationArguments | [self: RawTransactionArgument]; } export function configRequireInvitation(options: ConfigRequireInvitationOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_require_invitation', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_require_invitation', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigRequireRequestArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigRequireRequestOptions { - package?: string; - arguments: ConfigRequireRequestArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigRequireRequestArguments | [self: RawTransactionArgument]; } export function configRequireRequest(options: ConfigRequireRequestOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_require_request', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_require_request', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ConfigEmitEventsArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ConfigEmitEventsOptions { - package?: string; - arguments: ConfigEmitEventsArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ConfigEmitEventsArguments | [self: RawTransactionArgument]; } export function configEmitEvents(options: ConfigEmitEventsOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::config::Config` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'config', - function: 'config_emit_events', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::config::Config`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'config', + function: 'config_emit_events', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/creator_cap.ts b/packages/messaging/src/contracts/sui_stack_messaging/creator_cap.ts index c5f073b..9c73df6 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/creator_cap.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/creator_cap.ts @@ -1,35 +1,35 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveStruct, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; import * as object from './deps/sui/object.js'; const $moduleName = '@local-pkg/sui-stack-messaging::creator_cap'; -export const CreatorCap = new MoveStruct({ name: `${$moduleName}::CreatorCap`, fields: { - id: object.UID, - channel_id: bcs.Address - } }); +export const CreatorCap = new MoveStruct({ + name: `${$moduleName}::CreatorCap`, + fields: { + id: object.UID, + channel_id: bcs.Address, + }, +}); export interface TransferToSenderArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface TransferToSenderOptions { - package?: string; - arguments: TransferToSenderArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: TransferToSenderArguments | [self: RawTransactionArgument]; } /** Transfer a CreatorCap to the transaction sender. */ export function transferToSender(options: TransferToSenderOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::creator_cap::CreatorCap` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'creator_cap', - function: 'transfer_to_sender', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::creator_cap::CreatorCap`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'creator_cap', + function: 'transfer_to_sender', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/std/type_name.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/std/type_name.ts index f97a764..9f00e1a 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/std/type_name.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/std/type_name.ts @@ -1,22 +1,23 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ - +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 /** Functionality for converting Move types into values. Use with care! */ import { MoveStruct } from '../../../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; const $moduleName = 'std::type_name'; -export const TypeName = new MoveStruct({ name: `${$moduleName}::TypeName`, fields: { - /** - * String representation of the type. All types are represented using their source - * syntax: "u8", "u64", "bool", "address", "vector", and so on for primitive types. - * Struct types are represented as fully qualified type names; e.g. - * `00000000000000000000000000000001::string::String` or - * `0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2>` - * Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or - * 32 depending on the Move platform) - */ - name: bcs.string() - } }); \ No newline at end of file +export const TypeName = new MoveStruct({ + name: `${$moduleName}::TypeName`, + fields: { + /** + * String representation of the type. All types are represented using their source + * syntax: "u8", "u64", "bool", "address", "vector", and so on for primitive types. + * Struct types are represented as fully qualified type names; e.g. + * `00000000000000000000000000000001::string::String` or + * `0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2>` + * Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or + * 32 depending on the Move platform) + */ + name: bcs.string(), + }, +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/object.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/object.ts index a6692a5..e3f20da 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/object.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/object.ts @@ -1,13 +1,14 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ - +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 /** Sui object identifiers */ import { MoveStruct } from '../../../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; const $moduleName = '0x2::object'; -export const UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: { - id: bcs.Address - } }); \ No newline at end of file +export const UID = new MoveStruct({ + name: `${$moduleName}::UID`, + fields: { + id: bcs.Address, + }, +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table.ts index 6f54fb1..852782e 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table.ts @@ -1,7 +1,5 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ - +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 /** * A table is a map-like collection. But unlike a traditional collection, it's keys @@ -10,7 +8,7 @@ * system to retrieve those keys and values. Note that this means that `Table` * values with exactly the same key-value mapping will not be equal, with `==`, at * runtime. For example - * + * * ``` * let table1 = table::new(); * let table2 = table::new(); @@ -27,9 +25,12 @@ import { MoveStruct } from '../../../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; import * as object from './object.js'; const $moduleName = '0x2::table'; -export const Table = new MoveStruct({ name: `${$moduleName}::Table`, fields: { - /** the ID of this table */ - id: object.UID, - /** the number of key-value pairs in the table */ - size: bcs.u64() - } }); \ No newline at end of file +export const Table = new MoveStruct({ + name: `${$moduleName}::Table`, + fields: { + /** the ID of this table */ + id: object.UID, + /** the number of key-value pairs in the table */ + size: bcs.u64(), + }, +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table_vec.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table_vec.ts index 6fddbf3..e8dadd3 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table_vec.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/table_vec.ts @@ -1,14 +1,15 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ - +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 /** A basic scalable vector library implemented using `Table`. */ import { MoveStruct } from '../../../utils/index.js'; import * as table from './table.js'; const $moduleName = '0x2::table_vec'; -export const TableVec = new MoveStruct({ name: `${$moduleName}::TableVec`, fields: { - /** The contents of the table vector. */ - contents: table.Table - } }); \ No newline at end of file +export const TableVec = new MoveStruct({ + name: `${$moduleName}::TableVec`, + fields: { + /** The contents of the table vector. */ + contents: table.Table, + }, +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_map.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_map.ts index 8331c62..e6e7f04 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_map.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_map.ts @@ -1,18 +1,18 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { type BcsType, bcs } from '@mysten/sui/bcs'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { bcs } from '@mysten/sui/bcs'; +import type { BcsType } from '@mysten/sui/bcs'; import { MoveStruct } from '../../../utils/index.js'; const $moduleName = '0x2::vec_map'; /** An entry in the map */ -export function Entry, V extends BcsType>(...typeParameters: [ - K, - V -]) { - return new MoveStruct({ name: `${$moduleName}::Entry<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`, fields: { - key: typeParameters[0], - value: typeParameters[1] - } }); +export function Entry, V extends BcsType>(...typeParameters: [K, V]) { + return new MoveStruct({ + name: `${$moduleName}::Entry<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`, + fields: { + key: typeParameters[0], + value: typeParameters[1], + }, + }); } /** * A map data structure backed by a vector. The map is guaranteed not to contain @@ -23,11 +23,11 @@ export function Entry, V extends BcsType>(...typePar * Maps that need sorted iteration rather than insertion order iteration should * also be handwritten. */ -export function VecMap, V extends BcsType>(...typeParameters: [ - K, - V -]) { - return new MoveStruct({ name: `${$moduleName}::VecMap<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`, fields: { - contents: bcs.vector(Entry(typeParameters[0], typeParameters[1])) - } }); -} \ No newline at end of file +export function VecMap, V extends BcsType>(...typeParameters: [K, V]) { + return new MoveStruct({ + name: `${$moduleName}::VecMap<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`, + fields: { + contents: bcs.vector(Entry(typeParameters[0], typeParameters[1])), + }, + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_set.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_set.ts index 49ca085..c9a1e25 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_set.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/vec_set.ts @@ -1,7 +1,7 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { type BcsType, bcs } from '@mysten/sui/bcs'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { bcs } from '@mysten/sui/bcs'; +import type { BcsType } from '@mysten/sui/bcs'; import { MoveStruct } from '../../../utils/index.js'; const $moduleName = '0x2::vec_set'; /** @@ -12,10 +12,11 @@ const $moduleName = '0x2::vec_set'; * programming against a set API. Sets that need sorted iteration rather than * insertion order iteration should be handwritten. */ -export function VecSet>(...typeParameters: [ - K -]) { - return new MoveStruct({ name: `${$moduleName}::VecSet<${typeParameters[0].name as K['name']}>`, fields: { - contents: bcs.vector(typeParameters[0]) - } }); -} \ No newline at end of file +export function VecSet>(...typeParameters: [K]) { + return new MoveStruct({ + name: `${$moduleName}::VecSet<${typeParameters[0].name as K['name']}>`, + fields: { + contents: bcs.vector(typeParameters[0]), + }, + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/versioned.ts b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/versioned.ts index 1cfd8f2..8bb945b 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/versioned.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/deps/sui/versioned.ts @@ -1,11 +1,13 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { MoveStruct } from '../../../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; import * as object from './object.js'; const $moduleName = '0x2::versioned'; -export const Versioned = new MoveStruct({ name: `${$moduleName}::Versioned`, fields: { - id: object.UID, - version: bcs.u64() - } }); \ No newline at end of file +export const Versioned = new MoveStruct({ + name: `${$moduleName}::Versioned`, + fields: { + id: object.UID, + version: bcs.u64(), + }, +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/encryption_key_history.ts b/packages/messaging/src/contracts/sui_stack_messaging/encryption_key_history.ts index 20e230a..6ab06bd 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/encryption_key_history.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/encryption_key_history.ts @@ -1,13 +1,18 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { MoveStruct, MoveTuple } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; import * as table_vec from './deps/sui/table_vec.js'; const $moduleName = '@local-pkg/sui-stack-messaging::encryption_key_history'; -export const EncryptionKeyHistory = new MoveStruct({ name: `${$moduleName}::EncryptionKeyHistory`, fields: { - latest: bcs.vector(bcs.u8()), - latest_version: bcs.u32(), - history: table_vec.TableVec - } }); -export const EditEncryptionKey = new MoveTuple({ name: `${$moduleName}::EditEncryptionKey`, fields: [bcs.bool()] }); \ No newline at end of file +export const EncryptionKeyHistory = new MoveStruct({ + name: `${$moduleName}::EncryptionKeyHistory`, + fields: { + latest: bcs.vector(bcs.u8()), + latest_version: bcs.u32(), + history: table_vec.TableVec, + }, +}); +export const EditEncryptionKey = new MoveTuple({ + name: `${$moduleName}::EditEncryptionKey`, + fields: [bcs.bool()], +}); diff --git a/packages/messaging/src/contracts/sui_stack_messaging/member_cap.ts b/packages/messaging/src/contracts/sui_stack_messaging/member_cap.ts index ceb6ec4..327fef9 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/member_cap.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/member_cap.ts @@ -1,98 +1,104 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveStruct, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; import * as object from './deps/sui/object.js'; const $moduleName = '@local-pkg/sui-stack-messaging::member_cap'; -export const MemberCap = new MoveStruct({ name: `${$moduleName}::MemberCap`, fields: { - id: object.UID, - channel_id: bcs.Address - } }); +export const MemberCap = new MoveStruct({ + name: `${$moduleName}::MemberCap`, + fields: { + id: object.UID, + channel_id: bcs.Address, + }, +}); export interface TransferToRecipientArguments { - cap: RawTransactionArgument; - creatorCap: RawTransactionArgument; - recipient: RawTransactionArgument; + cap: RawTransactionArgument; + creatorCap: RawTransactionArgument; + recipient: RawTransactionArgument; } export interface TransferToRecipientOptions { - package?: string; - arguments: TransferToRecipientArguments | [ - cap: RawTransactionArgument, - creatorCap: RawTransactionArgument, - recipient: RawTransactionArgument - ]; + package?: string; + arguments: + | TransferToRecipientArguments + | [ + cap: RawTransactionArgument, + creatorCap: RawTransactionArgument, + recipient: RawTransactionArgument, + ]; } /** * Transfer a MemberCap to the specified address. Should only be called by a * Channel Creator, after a Channel is created and shared. */ export function transferToRecipient(options: TransferToRecipientOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::member_cap::MemberCap`, - `${packageAddress}::creator_cap::CreatorCap`, - 'address' - ] satisfies string[]; - const parameterNames = ["cap", "creatorCap", "recipient"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'member_cap', - function: 'transfer_to_recipient', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + `${packageAddress}::member_cap::MemberCap`, + `${packageAddress}::creator_cap::CreatorCap`, + 'address', + ] satisfies string[]; + const parameterNames = ['cap', 'creatorCap', 'recipient']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'member_cap', + function: 'transfer_to_recipient', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface TransferMemberCapsArguments { - memberAddresses: RawTransactionArgument; - memberCaps: RawTransactionArgument; - creatorCap: RawTransactionArgument; + memberAddresses: RawTransactionArgument; + memberCaps: RawTransactionArgument; + creatorCap: RawTransactionArgument; } export interface TransferMemberCapsOptions { - package?: string; - arguments: TransferMemberCapsArguments | [ - memberAddresses: RawTransactionArgument, - memberCaps: RawTransactionArgument, - creatorCap: RawTransactionArgument - ]; + package?: string; + arguments: + | TransferMemberCapsArguments + | [ + memberAddresses: RawTransactionArgument, + memberCaps: RawTransactionArgument, + creatorCap: RawTransactionArgument, + ]; } /** * Transfer MemberCaps to the associated addresses Should only be called by a * Channel Creator, after a Channel is created and shared. */ export function transferMemberCaps(options: TransferMemberCapsOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - 'vector
', - `vector<${packageAddress}::member_cap::MemberCap>`, - `${packageAddress}::creator_cap::CreatorCap` - ] satisfies string[]; - const parameterNames = ["memberAddresses", "memberCaps", "creatorCap"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'member_cap', - function: 'transfer_member_caps', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + 'vector
', + `vector<${packageAddress}::member_cap::MemberCap>`, + `${packageAddress}::creator_cap::CreatorCap`, + ] satisfies string[]; + const parameterNames = ['memberAddresses', 'memberCaps', 'creatorCap']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'member_cap', + function: 'transfer_member_caps', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); } export interface ChannelIdArguments { - self: RawTransactionArgument; + self: RawTransactionArgument; } export interface ChannelIdOptions { - package?: string; - arguments: ChannelIdArguments | [ - self: RawTransactionArgument - ]; + package?: string; + arguments: ChannelIdArguments | [self: RawTransactionArgument]; } export function channelId(options: ChannelIdOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - `${packageAddress}::member_cap::MemberCap` - ] satisfies string[]; - const parameterNames = ["self"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'member_cap', - function: 'channel_id', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [`${packageAddress}::member_cap::MemberCap`] satisfies string[]; + const parameterNames = ['self']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'member_cap', + function: 'channel_id', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/sui_stack_messaging/message.ts b/packages/messaging/src/contracts/sui_stack_messaging/message.ts index b4e2ab6..e25c28c 100644 --- a/packages/messaging/src/contracts/sui_stack_messaging/message.ts +++ b/packages/messaging/src/contracts/sui_stack_messaging/message.ts @@ -1,71 +1,80 @@ -/************************************************************** - * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * - **************************************************************/ -import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import { MoveStruct, normalizeMoveArguments } from '../utils/index.js'; +import type { RawTransactionArgument } from '../utils/index.js'; import { bcs } from '@mysten/sui/bcs'; -import { type Transaction } from '@mysten/sui/transactions'; +import type { Transaction } from '@mysten/sui/transactions'; import * as attachment from './attachment.js'; const $moduleName = '@local-pkg/sui-stack-messaging::message'; -export const Message = new MoveStruct({ name: `${$moduleName}::Message`, fields: { - /** The address of the sender of this message. TODO: should we encrypt this as well? */ - sender: bcs.Address, - /** The message content, encrypted with a DEK(Data Encryption Key) */ - ciphertext: bcs.vector(bcs.u8()), - /** The nonce used for the encryption of the content. */ - nonce: bcs.vector(bcs.u8()), - /** - * The version of the DEK(Data Encryption Key) that was used to encrypt this - * Message - */ - key_version: bcs.u32(), - /** A vector of attachments associated with this message. */ - attachments: bcs.vector(attachment.Attachment), - /** Timestamp in milliseconds when the message was created. */ - created_at_ms: bcs.u64() - } }); -export const MessageAddedEvent = new MoveStruct({ name: `${$moduleName}::MessageAddedEvent`, fields: { - channel_id: bcs.Address, - message_index: bcs.u64(), - sender: bcs.Address, - ciphertext: bcs.vector(bcs.u8()), - nonce: bcs.vector(bcs.u8()), - key_version: bcs.u32(), - attachment_refs: bcs.vector(bcs.string()), - attachment_nonces: bcs.vector(bcs.vector(bcs.u8())), - created_at_ms: bcs.u64() - } }); +export const Message = new MoveStruct({ + name: `${$moduleName}::Message`, + fields: { + /** The address of the sender of this message. TODO: should we encrypt this as well? */ + sender: bcs.Address, + /** The message content, encrypted with a DEK(Data Encryption Key) */ + ciphertext: bcs.vector(bcs.u8()), + /** The nonce used for the encryption of the content. */ + nonce: bcs.vector(bcs.u8()), + /** + * The version of the DEK(Data Encryption Key) that was used to encrypt this + * Message + */ + key_version: bcs.u32(), + /** A vector of attachments associated with this message. */ + attachments: bcs.vector(attachment.Attachment), + /** Timestamp in milliseconds when the message was created. */ + created_at_ms: bcs.u64(), + }, +}); +export const MessageAddedEvent = new MoveStruct({ + name: `${$moduleName}::MessageAddedEvent`, + fields: { + channel_id: bcs.Address, + message_index: bcs.u64(), + sender: bcs.Address, + ciphertext: bcs.vector(bcs.u8()), + nonce: bcs.vector(bcs.u8()), + key_version: bcs.u32(), + attachment_refs: bcs.vector(bcs.string()), + attachment_nonces: bcs.vector(bcs.vector(bcs.u8())), + created_at_ms: bcs.u64(), + }, +}); export interface NewArguments { - sender: RawTransactionArgument; - ciphertext: RawTransactionArgument; - nonce: RawTransactionArgument; - keyVersion: RawTransactionArgument; - attachments: RawTransactionArgument; + sender: RawTransactionArgument; + ciphertext: RawTransactionArgument; + nonce: RawTransactionArgument; + keyVersion: RawTransactionArgument; + attachments: RawTransactionArgument; } export interface NewOptions { - package?: string; - arguments: NewArguments | [ - sender: RawTransactionArgument, - ciphertext: RawTransactionArgument, - nonce: RawTransactionArgument, - keyVersion: RawTransactionArgument, - attachments: RawTransactionArgument - ]; + package?: string; + arguments: + | NewArguments + | [ + sender: RawTransactionArgument, + ciphertext: RawTransactionArgument, + nonce: RawTransactionArgument, + keyVersion: RawTransactionArgument, + attachments: RawTransactionArgument, + ]; } export function _new(options: NewOptions) { - const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; - const argumentsTypes = [ - 'address', - 'vector', - 'vector', - 'u32', - `vector<${packageAddress}::attachment::Attachment>`, - '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock' - ] satisfies string[]; - const parameterNames = ["sender", "ciphertext", "nonce", "keyVersion", "attachments", "clock"]; - return (tx: Transaction) => tx.moveCall({ - package: packageAddress, - module: 'message', - function: 'new', - arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), - }); -} \ No newline at end of file + const packageAddress = options.package ?? '@local-pkg/sui-stack-messaging'; + const argumentsTypes = [ + 'address', + 'vector', + 'vector', + 'u32', + `vector<${packageAddress}::attachment::Attachment>`, + '0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock', + ] satisfies string[]; + const parameterNames = ['sender', 'ciphertext', 'nonce', 'keyVersion', 'attachments', 'clock']; + return (tx: Transaction) => + tx.moveCall({ + package: packageAddress, + module: 'message', + function: 'new', + arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames), + }); +} diff --git a/packages/messaging/src/contracts/utils/index.ts b/packages/messaging/src/contracts/utils/index.ts index d593001..97a076a 100644 --- a/packages/messaging/src/contracts/utils/index.ts +++ b/packages/messaging/src/contracts/utils/index.ts @@ -1,7 +1,10 @@ - -import { bcs, BcsType, TypeTag, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple } from '@mysten/sui/bcs'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +import type { BcsType, TypeTag } from '@mysten/sui/bcs'; +import { bcs, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple } from '@mysten/sui/bcs'; import { normalizeSuiAddress } from '@mysten/sui/utils'; -import { TransactionArgument, isArgument } from '@mysten/sui/transactions'; +import type { TransactionArgument } from '@mysten/sui/transactions'; +import { isArgument } from '@mysten/sui/transactions'; const MOVE_STDLIB_ADDRESS = normalizeSuiAddress('0x1'); const SUI_FRAMEWORK_ADDRESS = normalizeSuiAddress('0x2'); @@ -57,10 +60,15 @@ export function getPureBcsSchema(typeTag: string | TypeTag): BcsType | null return null; } -export function normalizeMoveArguments(args: unknown[] | object, argTypes: string[], parameterNames?: string[]) { - +export function normalizeMoveArguments( + args: unknown[] | object, + argTypes: string[], + parameterNames?: string[], +) { if (parameterNames && argTypes.length !== parameterNames.length) { - throw new Error(`Invalid number of parameterNames, expected ${argTypes.length}, got ${parameterNames.length}`); + throw new Error( + `Invalid number of parameterNames, expected ${argTypes.length}, got ${parameterNames.length}`, + ); } const normalizedArgs: TransactionArgument[] = []; @@ -87,10 +95,12 @@ export function normalizeMoveArguments(args: unknown[] | object, argTypes: strin continue; } - let arg + let arg; if (Array.isArray(args)) { if (index >= args.length) { - throw new Error(`Invalid number of arguments, expected at least ${index + 1}, got ${args.length}`); + throw new Error( + `Invalid number of arguments, expected at least ${index + 1}, got ${args.length}`, + ); } arg = args[index]; } else { diff --git a/packages/messaging/src/encryption/constants.ts b/packages/messaging/src/encryption/constants.ts index b085505..78b2f6a 100644 --- a/packages/messaging/src/encryption/constants.ts +++ b/packages/messaging/src/encryption/constants.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import type { EncryptionPrimitivesConfig } from './types.js'; export const ENCRYPTION_PRIMITIVES_CONFIG = { diff --git a/packages/messaging/src/encryption/envelopeEncryption.ts b/packages/messaging/src/encryption/envelopeEncryption.ts index 740eea7..4316af4 100644 --- a/packages/messaging/src/encryption/envelopeEncryption.ts +++ b/packages/messaging/src/encryption/envelopeEncryption.ts @@ -4,7 +4,7 @@ import { EncryptedObject, SessionKey } from '@mysten/seal'; import { fromHex, isValidSuiObjectId, toHex } from '@mysten/sui/utils'; -import { +import type { AttachmentMetadata, DecryptAttachmentDataOpts, DecryptAttachmentDataResult, @@ -27,10 +27,10 @@ import { SealApproveContract, SessionKeyConfig, SymmetricKey, -} from './types'; -import { WebCryptoPrimitives } from './webCryptoPrimitives'; +} from './types.js'; +import { WebCryptoPrimitives } from './webCryptoPrimitives.js'; import { Transaction } from '@mysten/sui/transactions'; -import { MessagingCompatibleClient } from '../types'; +import type { MessagingCompatibleClient } from '../types.js'; /** * Core envelope encryption service that utilizes Seal @@ -569,7 +569,7 @@ export class EnvelopeEncryption { }); const txBytes = await tx.build({ client: this.#suiClient, onlyTransactionKind: true }); // Decrypt using Seal - let dekBytes: any; + let dekBytes: Uint8Array; try { dekBytes = await this.#suiClient.seal.decrypt({ data: encryptedKey.encryptedBytes, diff --git a/packages/messaging/src/encryption/types.ts b/packages/messaging/src/encryption/types.ts index 82050f2..3d31b90 100644 --- a/packages/messaging/src/encryption/types.ts +++ b/packages/messaging/src/encryption/types.ts @@ -134,7 +134,7 @@ export interface DecryptAttachmentResult extends AttachmentMetadata { export interface DecryptAttachmentDataResult { data: Uint8Array; } -export interface DecryptAttachmentMetadataResult extends AttachmentMetadata {} +export type DecryptAttachmentMetadataResult = AttachmentMetadata; export interface EncryptMessageOpts extends CommonEncryptOpts { text: string; diff --git a/packages/messaging/src/error.ts b/packages/messaging/src/error.ts index f60bbd5..7a49d18 100644 --- a/packages/messaging/src/error.ts +++ b/packages/messaging/src/error.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 export class MessagingClientError extends Error {} export class UserError extends MessagingClientError {} @@ -11,7 +13,6 @@ export class MessagingAPIError extends MessagingClientError { super(message); } - // @ts-ignore todo: remove 'ts-ignore' when start using this function static #generate(error: string, message: string, requestId: string, status?: number) { switch (error) { case 'NotImplementedFeature': @@ -31,7 +32,7 @@ export class MessagingAPIError extends MessagingClientError { const error = JSON.parse(text)['error']; const message = JSON.parse(text)['message']; errorInstance = MessagingAPIError.#generate(error, message, requestId); - } catch (e) { + } catch { // If we can't parse the response as JSON or if it doesn't have the expected format, // fall back to using the status text errorInstance = new GeneralError(response.statusText, requestId, response.status); diff --git a/packages/messaging/src/storage/adapters/storage.ts b/packages/messaging/src/storage/adapters/storage.ts index 059edd4..6247fe6 100644 --- a/packages/messaging/src/storage/adapters/storage.ts +++ b/packages/messaging/src/storage/adapters/storage.ts @@ -1,5 +1,7 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 export type StorageOptions = { - [key: string]: any; + [key: string]: unknown; }; export type StorageConfig = diff --git a/packages/messaging/src/storage/adapters/walrus/types.ts b/packages/messaging/src/storage/adapters/walrus/types.ts index 01f0180..0fda9f3 100644 --- a/packages/messaging/src/storage/adapters/walrus/types.ts +++ b/packages/messaging/src/storage/adapters/walrus/types.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 export interface BlobObject { id: string; registeredEpoch: number; diff --git a/packages/messaging/src/storage/adapters/walrus/walrus.ts b/packages/messaging/src/storage/adapters/walrus/walrus.ts index 81deee0..65c8e41 100644 --- a/packages/messaging/src/storage/adapters/walrus/walrus.ts +++ b/packages/messaging/src/storage/adapters/walrus/walrus.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import type { ClientWithExtensions } from '@mysten/sui/dist/cjs/experimental'; import type { StorageAdapter, StorageConfig, StorageOptions } from '../storage.js'; import type { WalrusClient } from '@mysten/walrus'; @@ -6,7 +8,7 @@ import type { WalrusResponse } from './types.js'; export class WalrusStorageAdapter implements StorageAdapter { constructor( // Client parameter kept for future implementation - currently unused - // @ts-ignore TS6138 - intentionally unused parameter for future implementation + // @ts-expect-error TS6138 - intentionally unused parameter for future implementation private readonly _client: ClientWithExtensions<{ walrus: WalrusClient }>, private readonly config: StorageConfig, ) {} @@ -145,7 +147,7 @@ export class WalrusStorageAdapter implements StorageAdapter { * @param response - Walrus API response * @returns Extracted blob ID */ - // @ts-ignore + // @ts-expect-error Method is currently unused but kept for future implementation #extractBlobId(response: WalrusResponse): string { // direct blob uploads if (response.newlyCreated?.blobObject?.blobId) { diff --git a/packages/messaging/src/types.ts b/packages/messaging/src/types.ts index 13d5168..9a37f4a 100644 --- a/packages/messaging/src/types.ts +++ b/packages/messaging/src/types.ts @@ -27,13 +27,13 @@ export type MessagingClientExtensionOptions = | { packageConfig?: MessagingPackageConfig; network?: 'mainnet' | 'testnet'; - storage?: (client: ClientWithExtensions) => StorageAdapter; + storage?: (client: MessagingCompatibleClient) => StorageAdapter; sessionKeyConfig?: SessionKeyConfig; } | { packageConfig?: MessagingPackageConfig; network?: 'mainnet' | 'testnet'; - storage?: (client: ClientWithExtensions) => StorageAdapter; + storage?: (client: MessagingCompatibleClient) => StorageAdapter; sessionKey?: SessionKey; }; diff --git a/packages/messaging/test/fund-test-users.ts b/packages/messaging/test/fund-test-users.ts index ea0860c..2a8a4f2 100644 --- a/packages/messaging/test/fund-test-users.ts +++ b/packages/messaging/test/fund-test-users.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { SuiClient } from '@mysten/sui/client'; import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; import { Transaction } from '@mysten/sui/transactions'; diff --git a/packages/messaging/test/integration-read-v2.test.ts b/packages/messaging/test/integration-read-v2.test.ts index 41afbbf..e24baf7 100644 --- a/packages/messaging/test/integration-read-v2.test.ts +++ b/packages/messaging/test/integration-read-v2.test.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { createTestClient, setupTestEnvironment, TestEnvironmentSetup } from './test-helpers'; import { readFileSync } from 'fs'; diff --git a/packages/messaging/test/integration-read.test.ts b/packages/messaging/test/integration-read.test.ts index 210fe2a..7de4acc 100644 --- a/packages/messaging/test/integration-read.test.ts +++ b/packages/messaging/test/integration-read.test.ts @@ -1,12 +1,5 @@ -// import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -// import { getFullnodeUrl, SuiClient } from '@mysten/sui/client'; -// import { GenericContainer, StartedTestContainer } from 'testcontainers'; -// import path from 'path'; -// import { SuiGraphQLClient } from '@mysten/sui/graphql'; -// import { SuiGrpcClient } from '@mysten/sui-grpc'; -// import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport'; -// import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; -// import { createTestClient, setupTestEnvironment, TestEnvironmentSetup } from './test-helpers'; +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 // describe('Integration tests - Read Path', () => { // const resourcesPath = path.resolve(__dirname, 'resources'); diff --git a/packages/messaging/test/integration-write.test.ts b/packages/messaging/test/integration-write.test.ts index a5111e6..38b79e0 100644 --- a/packages/messaging/test/integration-write.test.ts +++ b/packages/messaging/test/integration-write.test.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { SuiGraphQLClient } from '@mysten/sui/graphql'; import { SuiGrpcClient } from '@mysten/sui-grpc'; diff --git a/packages/messaging/test/prepare-test-data.ts b/packages/messaging/test/prepare-test-data.ts index a4124ee..6b0bbb6 100644 --- a/packages/messaging/test/prepare-test-data.ts +++ b/packages/messaging/test/prepare-test-data.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { setupTestEnvironment, createTestClient } from './test-helpers'; import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; import { EncryptedSymmetricKey } from '../src/encryption/types'; diff --git a/packages/messaging/test/resources/docker-compose.yml b/packages/messaging/test/resources/docker-compose.yml index 24b640a..dca1a45 100644 --- a/packages/messaging/test/resources/docker-compose.yml +++ b/packages/messaging/test/resources/docker-compose.yml @@ -4,7 +4,7 @@ services: wiremock-jsonrpc-node: image: wiremock/wiremock:latest ports: - - "9000:8080" + - '9000:8080' volumes: - ./wiremock/jsonrpc/extensions:/var/wiremock/extensions - ./wiremock/jsonrpc/__files:/home/wiremock/__files @@ -14,7 +14,7 @@ services: wiremock-grapqhql-node: image: wiremock/wiremock:latest ports: - - "8082:8080" + - '8082:8080' volumes: - ./wiremock/grapqhql/extensions:/var/wiremock/extensions - ./wiremock/grapqhql/__files:/home/wiremock/__files @@ -24,9 +24,9 @@ services: wiremock-grpc-node: image: wiremock/wiremock:latest ports: - - "8083:8080" + - '8083:8080' volumes: - ./wiremock/grpc/extensions:/var/wiremock/extensions - ./wiremock/grpc/__files:/home/wiremock/__files - ./wiremock/grpc/mappings:/home/wiremock/mappings - command: --verbose \ No newline at end of file + command: --verbose diff --git a/packages/messaging/test/resources/wiremock/grpc/mappings/get-channel-memberships-200.json b/packages/messaging/test/resources/wiremock/grpc/mappings/get-channel-memberships-200.json index e9df9fc..dbaa5f9 100644 --- a/packages/messaging/test/resources/wiremock/grpc/mappings/get-channel-memberships-200.json +++ b/packages/messaging/test/resources/wiremock/grpc/mappings/get-channel-memberships-200.json @@ -1,32 +1,32 @@ { - "request": { - "method": "POST", - "url": "/sui.rpc.v2beta2.LiveDataService/ListOwnedObjects" - }, - "response": { - "status": 200, - "headers": { - "Content-Type": "application/grpc+proto", - "grpc-status": "0" - }, - "bodyFileName": "list-owned-objects-response.bin", - "transformers": ["response-template"], - "transformerParameters": { - "readBodyAsBase64": true - } - }, - "postServeActions": { - "webhooks": { - "webhooks": [ - { - "method": "POST", - "url": "http://localhost:9000/log", - "headers": { - "Content-Type": "application/json" - }, - "body": "{\"message\": \"gRPC ListOwnedObjects called\", \"request\": {{{request.body}}}, \"timestamp\": \"{{now}}\"}" - } - ] - } - } -} \ No newline at end of file + "request": { + "method": "POST", + "url": "/sui.rpc.v2beta2.LiveDataService/ListOwnedObjects" + }, + "response": { + "status": 200, + "headers": { + "Content-Type": "application/grpc+proto", + "grpc-status": "0" + }, + "bodyFileName": "list-owned-objects-response.bin", + "transformers": ["response-template"], + "transformerParameters": { + "readBodyAsBase64": true + } + }, + "postServeActions": { + "webhooks": { + "webhooks": [ + { + "method": "POST", + "url": "http://localhost:9000/log", + "headers": { + "Content-Type": "application/json" + }, + "body": "{\"message\": \"gRPC ListOwnedObjects called\", \"request\": {{{request.body}}}, \"timestamp\": \"{{now}}\"}" + } + ] + } + } +} diff --git a/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-1-of-2.json b/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-1-of-2.json index 60aead4..05418be 100644 --- a/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-1-of-2.json +++ b/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-1-of-2.json @@ -1,28 +1,28 @@ { - "jsonrpc": "2.0", - "id": 1, - "result": { - "data": [ - { - "data": { - "objectId": "0x677f7705b7cb2f20da38233adc36c13294b257cdbba4f14d739bfae06964db47", - "version": "502028368", - "digest": "FVXhSoBg9nnfmkAUmg1pg8ozRFEBfa499yvzHonAz9GX", - "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", - "owner": { - "AddressOwner": "0xa7536c86055012cb7753fdb08ecb6c8bf1eb735ad75a2e1980309070123d5ef6" - }, - "bcs": { - "dataType": "moveObject", - "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", - "hasPublicTransfer": false, - "version": 502028368, - "bcsBytes": "Z393BbfLLyDaOCM63DbBMpSyV827pPFNc5v64Glk20cBa8+YRL5BmQkAHBz6s7mL1iDst1kCfuNjmdmfP3OfEg==" - } - } - } - ], - "nextCursor": "0x677f7705b7cb2f20da38233adc36c13294b257cdbba4f14d739bfae06964db47", - "hasNextPage": true - } -} \ No newline at end of file + "jsonrpc": "2.0", + "id": 1, + "result": { + "data": [ + { + "data": { + "objectId": "0x677f7705b7cb2f20da38233adc36c13294b257cdbba4f14d739bfae06964db47", + "version": "502028368", + "digest": "FVXhSoBg9nnfmkAUmg1pg8ozRFEBfa499yvzHonAz9GX", + "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", + "owner": { + "AddressOwner": "0xa7536c86055012cb7753fdb08ecb6c8bf1eb735ad75a2e1980309070123d5ef6" + }, + "bcs": { + "dataType": "moveObject", + "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", + "hasPublicTransfer": false, + "version": 502028368, + "bcsBytes": "Z393BbfLLyDaOCM63DbBMpSyV827pPFNc5v64Glk20cBa8+YRL5BmQkAHBz6s7mL1iDst1kCfuNjmdmfP3OfEg==" + } + } + } + ], + "nextCursor": "0x677f7705b7cb2f20da38233adc36c13294b257cdbba4f14d739bfae06964db47", + "hasNextPage": true + } +} diff --git a/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-2-of-2.json b/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-2-of-2.json index 177d999..93e7a7a 100644 --- a/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-2-of-2.json +++ b/packages/messaging/test/resources/wiremock/jsonrpc/__files/channel-memberships/get-channel-memberships-2-of-2.json @@ -1,28 +1,28 @@ { - "jsonrpc": "2.0", - "id": 1, - "result": { - "data": [ - { - "data": { - "objectId": "0x7bcf40fa4389c0a99d4ce0b281a4ba2c6e05843ebaf0e13ee831a38b5a269a3f", - "version": "493136496", - "digest": "FjsAVnYrASuz6B9X3q4stzxsNnznqoKRVZ8XxvuD66uD", - "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", - "owner": { - "AddressOwner": "0xa7536c86055012cb7753fdb08ecb6c8bf1eb735ad75a2e1980309070123d5ef6" - }, - "bcs": { - "dataType": "moveObject", - "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", - "hasPublicTransfer": false, - "version": 493136496, - "bcsBytes": "e89A+kOJwKmdTOCygaS6LG4FhD668OE+6DGji1ommj+Mi7jHEVL2NbFAssDBKFP4jm4KY1KPWpIRkWUI+SmLcA==" - } - } - } - ], - "nextCursor": "0x7bcf40fa4389c0a99d4ce0b281a4ba2c6e05843ebaf0e13ee831a38b5a269a3f", - "hasNextPage": false - } -} \ No newline at end of file + "jsonrpc": "2.0", + "id": 1, + "result": { + "data": [ + { + "data": { + "objectId": "0x7bcf40fa4389c0a99d4ce0b281a4ba2c6e05843ebaf0e13ee831a38b5a269a3f", + "version": "493136496", + "digest": "FjsAVnYrASuz6B9X3q4stzxsNnznqoKRVZ8XxvuD66uD", + "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", + "owner": { + "AddressOwner": "0xa7536c86055012cb7753fdb08ecb6c8bf1eb735ad75a2e1980309070123d5ef6" + }, + "bcs": { + "dataType": "moveObject", + "type": "0x4e2d2aa45a092cdc9974d826619f08658b0408b898f9039b46113e0f6756b172::channel::MemberCap", + "hasPublicTransfer": false, + "version": 493136496, + "bcsBytes": "e89A+kOJwKmdTOCygaS6LG4FhD668OE+6DGji1ommj+Mi7jHEVL2NbFAssDBKFP4jm4KY1KPWpIRkWUI+SmLcA==" + } + } + } + ], + "nextCursor": "0x7bcf40fa4389c0a99d4ce0b281a4ba2c6e05843ebaf0e13ee831a38b5a269a3f", + "hasNextPage": false + } +} diff --git a/packages/messaging/test/resources/wiremock/jsonrpc/mappings/get-channel-memberships-200.json b/packages/messaging/test/resources/wiremock/jsonrpc/mappings/get-channel-memberships-200.json index 8f0bb80..11b3bdb 100644 --- a/packages/messaging/test/resources/wiremock/jsonrpc/mappings/get-channel-memberships-200.json +++ b/packages/messaging/test/resources/wiremock/jsonrpc/mappings/get-channel-memberships-200.json @@ -1,60 +1,60 @@ { - "mappings": [ - { - "priority": 1, - "request": { - "method": "POST", - "urlPattern": "/", - "headers": { - "Content-Type": { - "contains": "application/json" - } - }, - "bodyPatterns": [ - { - "matches": ".*suix_getOwnedObjects.*" - } - ] - }, - "response": { - "status": 200, - "headers": { - "Content-Type": "application/json" - }, - "bodyFileName": "channel-memberships/get-channel-memberships-1-of-2.json", - "transformers": ["response-template"] - }, - "scenarioName": "GetChannelMembershipsScenario", - "requiredScenarioState": "Started", - "newScenarioState": "FirstResponseServed" - }, - { - "priority": 1, - "request": { - "method": "POST", - "urlPattern": "/", - "headers": { - "Content-Type": { - "contains": "application/json" - } - }, - "bodyPatterns": [ - { - "matches": ".*suix_getOwnedObjects.*" - } - ] - }, - "response": { - "status": 200, - "headers": { - "Content-Type": "application/json" - }, - "bodyFileName": "channel-memberships/get-channel-memberships-2-of-2.json", - "transformers": ["response-template"] - }, - "scenarioName": "GetChannelMembershipsScenario", - "requiredScenarioState": "FirstResponseServed", - "newScenarioState": "Started" - } - ] -} \ No newline at end of file + "mappings": [ + { + "priority": 1, + "request": { + "method": "POST", + "urlPattern": "/", + "headers": { + "Content-Type": { + "contains": "application/json" + } + }, + "bodyPatterns": [ + { + "matches": ".*suix_getOwnedObjects.*" + } + ] + }, + "response": { + "status": 200, + "headers": { + "Content-Type": "application/json" + }, + "bodyFileName": "channel-memberships/get-channel-memberships-1-of-2.json", + "transformers": ["response-template"] + }, + "scenarioName": "GetChannelMembershipsScenario", + "requiredScenarioState": "Started", + "newScenarioState": "FirstResponseServed" + }, + { + "priority": 1, + "request": { + "method": "POST", + "urlPattern": "/", + "headers": { + "Content-Type": { + "contains": "application/json" + } + }, + "bodyPatterns": [ + { + "matches": ".*suix_getOwnedObjects.*" + } + ] + }, + "response": { + "status": 200, + "headers": { + "Content-Type": "application/json" + }, + "bodyFileName": "channel-memberships/get-channel-memberships-2-of-2.json", + "transformers": ["response-template"] + }, + "scenarioName": "GetChannelMembershipsScenario", + "requiredScenarioState": "FirstResponseServed", + "newScenarioState": "Started" + } + ] +} diff --git a/packages/messaging/test/setup-testnet.ts b/packages/messaging/test/setup-testnet.ts index ba641dc..520e2a5 100644 --- a/packages/messaging/test/setup-testnet.ts +++ b/packages/messaging/test/setup-testnet.ts @@ -18,6 +18,26 @@ * - PHRASE: Recovery phrase for the main test account */ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { fundTestUsers } from './fund-test-users'; import { prepareTestData } from './prepare-test-data'; diff --git a/packages/messaging/test/test-config.ts b/packages/messaging/test/test-config.ts index 6731763..c6ee387 100644 --- a/packages/messaging/test/test-config.ts +++ b/packages/messaging/test/test-config.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { MessagingPackageConfig } from '../src/types'; export type TestEnvironment = 'localnet' | 'testnet'; diff --git a/packages/messaging/test/test-helpers.ts b/packages/messaging/test/test-helpers.ts index 0860c05..771c35b 100644 --- a/packages/messaging/test/test-helpers.ts +++ b/packages/messaging/test/test-helpers.ts @@ -1,3 +1,5 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 import { SuiClient } from '@mysten/sui/client'; import { SealClient } from '@mysten/seal'; import { WalrusClient } from '@mysten/walrus'; diff --git a/packages/messaging/turbo.json b/packages/messaging/turbo.json new file mode 100644 index 0000000..433659c --- /dev/null +++ b/packages/messaging/turbo.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "lint": {}, + "test": { + "dependsOn": ["^build", "build"], + "env": ["TEST_ENVIRONMENT", "SUI_RPC_URL", "WALRUS_PUBLISHER_URL", "WALRUS_AGGREGATOR_URL"] + }, + "test:e2e": { + "dependsOn": ["^build", "build"], + "env": ["TEST_ENVIRONMENT", "SUI_RPC_URL", "WALRUS_PUBLISHER_URL", "WALRUS_AGGREGATOR_URL"] + }, + "dev": { + "dependsOn": ["^build"], + "cache": false, + "persistent": true + }, + "build": { + "dependsOn": ["^build"], + "outputs": [ + "build/**", + "dist/**", + "storybook-static/**", + ".next/**", + "!.next/cache/**", + "pkg/**" + ] + } + }, + "globalEnv": ["NODE_ENV", "CI"] +} diff --git a/packages/package.json b/packages/package.json deleted file mode 100644 index 6f7f341..0000000 --- a/packages/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "packages", - "private": true, - "license": "Apache-2.0", - "scripts": { - "test": "turbo run test", - "test:e2e": "turbo run test:e2e --concurrency=1", - "changeset-version": "pnpm changeset version && pnpm --filter @mysten/* codegen:version", - "prettier:check": "prettier -c --ignore-unknown .", - "prettier:fix": "prettier -w --ignore-unknown .", - "prettier:fix:watch": "onchange '**' -i -f add -f change -j 5 -- prettier -w --ignore-unknown {{file}}", - "eslint:check": "eslint --max-warnings=0 .", - "eslint:fix": "pnpm run eslint:check --fix", - "lint": "pnpm run eslint:check && pnpm run prettier:check", - "lint:fix": "pnpm run eslint:fix && pnpm run prettier:fix", - "build": "turbo run build" - }, - "pnpm": { - "overrides": { - "node-notifier": "10.0.0", - "async": "3.2.2", - "nth-check": "2.0.1", - "yaml@<2.2.2": ">=2.2.2", - "semver@<7.5.2": ">=7.5.2", - "postcss@<8.4.31": ">=8.4.31", - "dompurify@>=3.0.0 <3.1.3": ">=3.1.3", - "cross-spawn@5.1.0": "7.0.5", - "axios@0.26.1": "^0.30.0", - "@eslint/plugin-kit@<0.3.3": "0.3.3" - }, - "onlyBuiltDependencies": [ - "cpu-features", - "esbuild", - "protobufjs", - "ssh2", - "unrs-resolver" - ] - }, - "engines": { - "pnpm": ">=9.0.0" - }, - "manypkg": { - "ignoredRules": [ - "INTERNAL_MISMATCH", - "ROOT_HAS_DEV_DEPENDENCIES" - ] - }, - "devDependencies": { - "@changesets/cli": "^2.29.5", - "@ianvs/prettier-plugin-sort-imports": "^4.5.1", - "@manypkg/cli": "^0.24.0", - "@tanstack/eslint-plugin-query": "^5.81.2", - "@testcontainers/postgresql": "^11.4.0", - "@typescript-eslint/eslint-plugin": "^8.38.0", - "@typescript-eslint/parser": "^8.38.0", - "concurrently": "^9.2.0", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-config-react-app": "^7.0.1", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-prettier": "^5.5.3", - "eslint-plugin-require-extensions": "^0.1.3", - "eslint-plugin-tsdoc": "^0.2.17", - "eslint-plugin-unused-imports": "^3.0.0", - "graphql-config": "^5.1.5", - "prettier": "^3.6.2", - "prettier-plugin-tailwindcss": "^0.6.14", - "testcontainers": "^11.4.0", - "tsx": "^4.20.3", - "turbo": "^2.5.5", - "typescript": "^5.8.3" - }, - "author": "", - "packageManager": "pnpm@10.13.1" -} diff --git a/packages/turbo.json b/packages/turbo.json deleted file mode 100644 index be0c3f9..0000000 --- a/packages/turbo.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "tasks": { - "lint": {}, - "test": { - "dependsOn": ["^build", "build"], - "env": [ - "AWS_ACCESS_KEY_ID", - "AWS_SECRET_ACCESS_KEY", - "AWS_REGION", - "AWS_KMS_KEY_ID", - "GOOGLE_PROJECT_ID", - "GOOGLE_LOCATION", - "GOOGLE_KEYRING", - "GOOGLE_KEY_NAME", - "GOOGLE_KEY_NAME_VERSION", - "E2E_AWS_KMS_TEST_ENABLE", - "E2E_GCP_KMS_TEST_ENABLE", - "GOOGLE_APPLICATION_CREDENTIALS" - ] - }, - "test:e2e": { - "dependsOn": ["^build", "build"], - "env": [ - "AWS_ACCESS_KEY_ID", - "AWS_SECRET_ACCESS_KEY", - "AWS_REGION", - "AWS_KMS_KEY_ID", - "GOOGLE_PROJECT_ID", - "GOOGLE_LOCATION", - "GOOGLE_KEYRING", - "GOOGLE_KEY_NAME", - "GOOGLE_KEY_NAME_VERSION", - "E2E_AWS_KMS_TEST_ENABLE", - "E2E_GCP_KMS_TEST_ENABLE", - "GOOGLE_APPLICATION_CREDENTIALS" - ] - }, - "dev": { - "dependsOn": ["^build"], - "cache": false, - "persistent": true - }, - "build": { - "dependsOn": ["^build"], - "outputs": [ - "build/**", - "dist/**", - "storybook-static/**", - ".next/**", - "!.next/cache/**", - "pkg/**" - ] - } - }, - "globalEnv": ["VERCEL_ENV", "VITE_NETWORK", "VITE_VERCEL_ANALYTICS_ID", "VITE_SENTRY_SAMPLE_RATE"] -} From caaace1433a8f2b7854764d49ad4accef6c05b76 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Fri, 19 Sep 2025 18:18:55 +0300 Subject: [PATCH 2/8] Remove GitHub workflows for separate review --- .github/workflows/changesets-ci-comment.yml | 83 --------------------- .github/workflows/changesets-ci.yml | 42 ----------- .github/workflows/changesets.yml | 37 --------- 3 files changed, 162 deletions(-) delete mode 100644 .github/workflows/changesets-ci-comment.yml delete mode 100644 .github/workflows/changesets-ci.yml delete mode 100644 .github/workflows/changesets.yml diff --git a/.github/workflows/changesets-ci-comment.yml b/.github/workflows/changesets-ci-comment.yml deleted file mode 100644 index 7a0720c..0000000 --- a/.github/workflows/changesets-ci-comment.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: Changesets CI Comment - -on: - workflow_run: - workflows: ['Changesets CI'] - types: - - completed - -jobs: - upload: - runs-on: ubuntu-latest - if: > - github.event.workflow_run.event == 'pull_request' && - github.event.workflow_run.conclusion == 'success' - steps: - - name: Get workflow run information - uses: potiuk/get-workflow-origin@e3ba776faee1134e17551924b852bfb374e1703d # pin@v1_1 - id: source-run-info - with: - token: ${{ secrets.GITHUB_TOKEN }} - sourceRunId: ${{ github.event.workflow_run.id }} - - - name: 'Download artifact' - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # pin@v7.0.1 - id: get-artifact - if: steps.source-run-info.outputs.pullRequestNumber - with: - result-encoding: string - script: | - let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: context.payload.workflow_run.id, - }); - - let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { - return artifact.name == "missing-changeset" - })[0]; - - if (!matchArtifact) { - return 'false'; - } - - return 'true'; - - - name: Comment PR - uses: thollander/actions-comment-pull-request@dadb7667129e23f12ca3925c90dc5cd7121ab57e # pin@v2 - if: steps.get-artifact.outputs.result == 'true' && steps.source-run-info.outputs.pullRequestNumber - with: - pr_number: ${{ steps.source-run-info.outputs.pullRequestNumber }} - comment_tag: 'changesets-warning' - message: | - ⚠️ 🦋 **Changesets Warning:** This PR has changes to the messaging package, but does not contain a changeset. You can create a changeset by running `pnpm changeset` in the `packages/messaging` directory and following the prompts. If your change does not need a changeset (e.g. a documentation-only change), you can ignore this message. - - [Learn more about Changesets](https://github.com/changesets/changesets). - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Remove outdated comments - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # pin@v7.0.1 - if: steps.get-artifact.outputs.result == 'false' && steps.source-run-info.outputs.pullRequestNumber - env: - ISSUE_NUMBER: ${{ steps.source-run-info.outputs.pullRequestNumber }} - with: - script: | - const resp = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: process.env.ISSUE_NUMBER - }); - - const comments = resp.data.filter(it => it.body.startsWith('⚠️ 🦋 **Changesets Warning:**')); - - for (const comment of comments) { - console.log( - `Removing issue ${comment.issue_url}` - ); - - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: comment.id - }); - } \ No newline at end of file diff --git a/.github/workflows/changesets-ci.yml b/.github/workflows/changesets-ci.yml deleted file mode 100644 index d45f7af..0000000 --- a/.github/workflows/changesets-ci.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Changesets CI -on: pull_request - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - name: checkout code repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - with: - fetch-depth: 0 - - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # pin@v3.0.0 - - name: Install Nodejs - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin@v4.0.2 - with: - node-version: '18' - cache: 'pnpm' - cache-dependency-path: 'packages/messaging/pnpm-lock.yaml' - - name: Install dependencies - working-directory: packages/messaging - run: pnpm install --frozen-lockfile - - id: diff - name: Determine if messaging package changed - run: echo "hasChanges=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..HEAD | grep -q "^packages/messaging/" && echo "true" || echo "false")" >> $GITHUB_OUTPUT - - name: Get changed files in the changesets folder - id: has-changesets - uses: tj-actions/changed-files@0874344d6ebbaa00a27da73276ae7162fadcaf69 # pin@v44.3.0 - with: - files: | - packages/messaging/.changeset/** - - name: Create missing changeset note if there are missing changesets - if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' - run: | - echo "true" > missing-changeset.txt - - name: Upload missing changeset artifact - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # pin@4.4.3 - if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' - with: - name: missing-changeset - path: missing-changeset.txt - if-no-files-found: error - retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml deleted file mode 100644 index 8cc1cea..0000000 --- a/.github/workflows/changesets.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Changesets -on: - workflow_dispatch: - push: - branches: - - main - -concurrency: ${{ github.workflow }}-${{ github.ref }} - -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: checkout code repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - with: - fetch-depth: 0 - - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # pin@v3.0.0 - - name: Install Nodejs - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin@v4.0.2 - with: - node-version: '18' - cache: 'pnpm' - cache-dependency-path: 'packages/messaging/pnpm-lock.yaml' - registry-url: 'https://registry.npmjs.org' - - name: Install dependencies - working-directory: packages/messaging - run: pnpm install --frozen-lockfile - - name: Create Release Pull Request or Publish to npm - uses: changesets/action@f13b1baaa620fde937751f5d2c3572b9da32af23 # pin@v1 - with: - version: pnpm changeset-version - publish: pnpm changeset publish --tag alpha - cwd: packages/messaging - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file From 5a902152a007c1ec05ad5bb6343b90a120349774 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Fri, 19 Sep 2025 18:28:48 +0300 Subject: [PATCH 3/8] chore(load-tests): update hono vulnerable dependency --- .../backend/users-provisioning/package.json | 2 +- .../backend/users-provisioning/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/load-tests/backend/users-provisioning/package.json b/load-tests/backend/users-provisioning/package.json index b32a73d..742d82e 100644 --- a/load-tests/backend/users-provisioning/package.json +++ b/load-tests/backend/users-provisioning/package.json @@ -11,7 +11,7 @@ "@mysten/sui": "^1.36.0", "better-sqlite3-multiple-ciphers": "^12.2.0", "dotenv": "^17.2.0", - "hono": "^4.8.5" + "hono": "^4.9.7" }, "devDependencies": { "@types/node": "^20.11.17", diff --git a/load-tests/backend/users-provisioning/pnpm-lock.yaml b/load-tests/backend/users-provisioning/pnpm-lock.yaml index 0849efe..8aec5b0 100644 --- a/load-tests/backend/users-provisioning/pnpm-lock.yaml +++ b/load-tests/backend/users-provisioning/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@hono/node-server': specifier: ^1.16.0 - version: 1.16.0(hono@4.8.5) + version: 1.16.0(hono@4.9.8) '@mysten/sui': specifier: ^1.36.0 version: 1.36.0(typescript@5.8.3) @@ -21,8 +21,8 @@ importers: specifier: ^17.2.0 version: 17.2.0 hono: - specifier: ^4.8.5 - version: 4.8.5 + specifier: ^4.9.7 + version: 4.9.8 devDependencies: '@types/node': specifier: ^20.11.17 @@ -341,8 +341,8 @@ packages: resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - hono@4.8.5: - resolution: {integrity: sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA==} + hono@4.9.8: + resolution: {integrity: sha512-JW8Bb4RFWD9iOKxg5PbUarBYGM99IcxFl2FPBo2gSJO11jjUDqlP1Bmfyqt8Z/dGhIQ63PMA9LdcLefXyIasyg==} engines: {node: '>=16.9.0'} ieee754@1.2.1: @@ -556,9 +556,9 @@ snapshots: dependencies: graphql: 16.11.0 - '@hono/node-server@1.16.0(hono@4.8.5)': + '@hono/node-server@1.16.0(hono@4.9.8)': dependencies: - hono: 4.8.5 + hono: 4.9.8 '@mysten/bcs@1.6.4': dependencies: @@ -707,7 +707,7 @@ snapshots: graphql@16.11.0: {} - hono@4.8.5: {} + hono@4.9.8: {} ieee754@1.2.1: {} From 572480a5b7c83f0a73de8753ea787186c51a3fa7 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Mon, 22 Sep 2025 09:43:05 +0300 Subject: [PATCH 4/8] feat(ts-sdk): Implement time-based lru cache --- packages/messaging/src/cache.ts | 93 +++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 packages/messaging/src/cache.ts diff --git a/packages/messaging/src/cache.ts b/packages/messaging/src/cache.ts new file mode 100644 index 0000000..4013132 --- /dev/null +++ b/packages/messaging/src/cache.ts @@ -0,0 +1,93 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +export interface TimeBasedLruCacheOptions { + /** The time-to-live for a cache entry in milliseconds*/ + ttlMs: number; + /** The maximum number of entries to store in the cache */ + maxEntries: number; +} + +export class TimeBasedLruCache { + #cache: Map; + #ttlMs: number; + #maxEntries: number; + + constructor({ ttlMs, maxEntries }: TimeBasedLruCacheOptions) { + this.#cache = new Map(); + this.#ttlMs = ttlMs; + this.#maxEntries = maxEntries; + } + + /** + * Retrieves a value from the cache, or loads it if it doesn't exist or is expired + * @param key The cache key. + * @param load A function to load the value if not found or expired. + * @returns The cached or loaded value. + */ + read(key: [string, ...string[]], load: () => T | Promise): T | Promise { + const cacheKey = key.join(':'); + const entry = this.#cache.get(cacheKey); + + // Check if entry is present and not expired + if (entry && Date.now() - entry.timestampMs <= this.#ttlMs) { + // Note: JavaScript Map maintains insertion order, so doing the following + // ensures the entry is moved to the end of the map + this.#cache.delete(cacheKey); + this.#cache.set(cacheKey, entry); + return entry.value as T; + } + // The entry is either expired or doesn't exist in the cache + const result = load(); + + if (typeof result === 'object' && result !== null && 'then' in result) { + return Promise.resolve(result) + .then((v) => { + this.#set(cacheKey, v); + return v as T; + }) + .catch((err) => { + this.#cache.delete(cacheKey); + throw err; + }); + } + this.#set(cacheKey, result); + + return result as T; + } + + readSync(key: [string, ...string[]], load: () => T): T { + const cacheKey = key.join(':'); + const entry = this.#cache.get(cacheKey); + + if (entry && Date.now() - entry.timestampMs <= this.#ttlMs) { + this.#cache.delete(cacheKey); + this.#cache.set(cacheKey, entry); + return entry.value as T; + } + + // The entry is either expired or doesn't exist in the cache + const result = load(); + this.#set(cacheKey, result); + return result as T; + } + + #set(cacheKey: string, value: unknown): void { + // If cache is full, evict the Least Recently Used entry + if (this.#cache.size >= this.#maxEntries) { + // JavaScript Map maintains insertion order, so the first entry is the least recently used + const lruKey = this.#cache.keys().next().value; + if (lruKey !== undefined) { + this.#cache.delete(lruKey); + } + } + this.#cache.set(cacheKey, { value, timestampMs: Date.now() }); + } + + /** + * Clears all entries from the cache + */ + clear(): void { + this.#cache.clear(); + } +} From 877ac929fb3dfd5f9166357bb7b3f08d232866e6 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Mon, 22 Sep 2025 09:52:22 +0300 Subject: [PATCH 5/8] feat(ts-sdk): Utilize the time-based lru cache in the decryptChannelDEK --- .../src/encryption/envelopeEncryption.ts | 91 ++++++++++--------- packages/messaging/src/version.ts | 6 ++ 2 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 packages/messaging/src/version.ts diff --git a/packages/messaging/src/encryption/envelopeEncryption.ts b/packages/messaging/src/encryption/envelopeEncryption.ts index 4316af4..800cdb0 100644 --- a/packages/messaging/src/encryption/envelopeEncryption.ts +++ b/packages/messaging/src/encryption/envelopeEncryption.ts @@ -4,6 +4,8 @@ import { EncryptedObject, SessionKey } from '@mysten/seal'; import { fromHex, isValidSuiObjectId, toHex } from '@mysten/sui/utils'; +import { TimeBasedLruCache } from '../cache.js'; + import type { AttachmentMetadata, DecryptAttachmentDataOpts, @@ -41,6 +43,7 @@ export class EnvelopeEncryption { #sessionKey?: SessionKey; #sealApproveContract: SealApproveContract; #sessionKeyConfig?: SessionKeyConfig; + #dekCache: TimeBasedLruCache; constructor(config: EnvelopeEncryptionConfig) { this.#suiClient = config.suiClient; @@ -48,6 +51,7 @@ export class EnvelopeEncryption { this.#sessionKey = config.sessionKey; this.#sessionKeyConfig = config.sessionKeyConfig; this.#encryptionPrimitives = config.encryptionPrimitives ?? WebCryptoPrimitives.getInstance(); + this.#dekCache = new TimeBasedLruCache({ ttlMs: 5 * 60 * 1000, maxEntries: 100 }); // 5 minutes TTL, 100 max entries if (!this.#sessionKey && !this.#sessionKeyConfig) { throw new Error('Either sessionKey or sessionKeyConfig must be provided'); @@ -549,48 +553,53 @@ export class EnvelopeEncryption { throw new Error('The memberCapId provided is not a valid Sui Object ID'); } - // === Decrypt the cached key === - // Prepare seal_approve ptb - - const channelIdBytes = EncryptedObject.parse(encryptedKey.encryptedBytes).id; - - const tx = new Transaction(); - tx.moveCall({ - target: `${this.#sealApproveContract.packageId}::${this.#sealApproveContract.module}::${this.#sealApproveContract.functionName}`, - arguments: [ - // Seal Identity Bytes: Channel object ID - // key form: [packageId][channelId][random nonce] - tx.pure.vector('u8', fromHex(channelIdBytes)), - // Channel Object - tx.object(channelId), - // Member Cap Object - tx.object(memberCapId), - ], - }); - const txBytes = await tx.build({ client: this.#suiClient, onlyTransactionKind: true }); - // Decrypt using Seal - let dekBytes: Uint8Array; - try { - dekBytes = await this.#suiClient.seal.decrypt({ - data: encryptedKey.encryptedBytes, - sessionKey: await this.getSessionKey(), - txBytes, + // Create cache key from channelId, memberCapId, and encrypted key version + const cacheKey: [string, string, string] = [ + channelId, + memberCapId, + encryptedKey.version.toString(), + ]; + + // Use cache with loader function + return await this.#dekCache.read(cacheKey, async (): Promise => { + // === Decrypt the cached key === + // Prepare seal_approve ptb + + const channelIdBytes = EncryptedObject.parse(encryptedKey.encryptedBytes).id; + + const tx = new Transaction(); + tx.moveCall({ + target: `${this.#sealApproveContract.packageId}::${this.#sealApproveContract.module}::${this.#sealApproveContract.functionName}`, + arguments: [ + // Seal Identity Bytes: Channel object ID + // key form: [packageId][channelId][random nonce] + tx.pure.vector('u8', fromHex(channelIdBytes)), + // Channel Object + tx.object(channelId), + // Member Cap Object + tx.object(memberCapId), + ], }); - } catch (error) { - console.error('Error decrypting channel DEK', error); - throw error; - } - // const dekBytes = await this.#suiClient.seal.decrypt({ - // data: encryptedKey.encryptedBytes, - // sessionKey: await this.getSessionKey(), - // txBytes, - // }); - - return { - $kind: 'Unencrypted', - bytes: new Uint8Array(dekBytes || new Uint8Array()), - version: encryptedKey.version, - }; + const txBytes = await tx.build({ client: this.#suiClient, onlyTransactionKind: true }); + // Decrypt using Seal + let dekBytes: Uint8Array; + try { + dekBytes = await this.#suiClient.seal.decrypt({ + data: encryptedKey.encryptedBytes, + sessionKey: await this.getSessionKey(), + txBytes, + }); + } catch (error) { + console.error('Error decrypting channel DEK', error); + throw error; + } + + return { + $kind: 'Unencrypted', + bytes: new Uint8Array(dekBytes || new Uint8Array()), + version: encryptedKey.version, + }; + }); } // ===== Private methods ===== diff --git a/packages/messaging/src/version.ts b/packages/messaging/src/version.ts new file mode 100644 index 0000000..2bf7e88 --- /dev/null +++ b/packages/messaging/src/version.ts @@ -0,0 +1,6 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// This file is auto-generated. Do not edit directly. +export const PACKAGE_VERSION = '0.0.1'; +export const PACKAGE_NAME = '@mysten/messaging'; From 7216136f4370a55671ccc64772818ae4e50b2393 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Mon, 22 Sep 2025 10:00:38 +0300 Subject: [PATCH 6/8] test(ts-sdk): fix the find creator membership logic to account for pagination in the integration-write test --- .../messaging/test/integration-write.test.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/messaging/test/integration-write.test.ts b/packages/messaging/test/integration-write.test.ts index 38b79e0..32c469b 100644 --- a/packages/messaging/test/integration-write.test.ts +++ b/packages/messaging/test/integration-write.test.ts @@ -9,6 +9,7 @@ import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; import { createTestClient, setupTestEnvironment, TestEnvironmentSetup } from './test-helpers'; import { EncryptedSymmetricKey } from '../src/encryption/types'; import { MemberCap } from '../src/contracts/sui_stack_messaging/member_cap'; +import { Membership } from '../src/types'; // Type alias for our fully extended client type TestClient = ReturnType; @@ -83,10 +84,20 @@ describe('Integration tests - Write Path', () => { expect(channel.auth.member_permissions).toBeDefined(); // Assert members - get the creator's MemberCap - const memberships = await client.messaging.getChannelMemberships({ - address: signer.toSuiAddress(), - }); - const creatorMembership = memberships.memberships.find((m) => m.channel_id === channelId); + let creatorMembership: Membership | null | undefined = null; + let cursor: string | null = null; + let hasNextPage: boolean = true; + + while (hasNextPage && !creatorMembership) { + const memberships = await client.messaging.getChannelMemberships({ + address: signer.toSuiAddress(), + cursor, + }); + creatorMembership = memberships.memberships.find((m) => m.channel_id === channelId); + hasNextPage = memberships.hasNextPage; + cursor = memberships.cursor; + } + expect(creatorMembership).toBeDefined(); // Get the actual MemberCap object From 023f728b22727102dc6d77f445a48c6b86230d33 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Mon, 22 Sep 2025 11:33:06 +0300 Subject: [PATCH 7/8] fix(ts-sdk): an issue with the aad that was being used to decrypt attachments. chore(ts-sdk): cleanup the integration tests. --- packages/messaging/src/client.ts | 22 +++++++--- .../src/encryption/envelopeEncryption.ts | 2 +- .../messaging/test/integration-write.test.ts | 39 ++++++++++++++---- packages/messaging/test/prepare-test-data.ts | 40 +++++++++++++------ 4 files changed, 78 insertions(+), 25 deletions(-) diff --git a/packages/messaging/src/client.ts b/packages/messaging/src/client.ts index f968ac7..ff281b8 100644 --- a/packages/messaging/src/client.ts +++ b/packages/messaging/src/client.ts @@ -172,14 +172,26 @@ export class SuiStackMessagingClient { * @returns Member cap ID */ async #getUserMemberCapId(userAddress: string, channelId: string): Promise { - const memberships = await this.getChannelMemberships({ address: userAddress }); - const membership = memberships.memberships.find((m) => m.channel_id === channelId); + let cursor: string | null = null; + let hasNextPage = true; - if (!membership) { - throw new MessagingClientError(`User ${userAddress} is not a member of channel ${channelId}`); + while (hasNextPage) { + const memberships = await this.getChannelMemberships({ + address: userAddress, + cursor, + }); + + const membership = memberships.memberships.find((m) => m.channel_id === channelId); + + if (membership) { + return membership.member_cap_id; + } + + cursor = memberships.cursor; + hasNextPage = memberships.hasNextPage; } - return membership.member_cap_id; + throw new MessagingClientError(`User ${userAddress} is not a member of channel ${channelId}`); } /** diff --git a/packages/messaging/src/encryption/envelopeEncryption.ts b/packages/messaging/src/encryption/envelopeEncryption.ts index 800cdb0..6ed92c4 100644 --- a/packages/messaging/src/encryption/envelopeEncryption.ts +++ b/packages/messaging/src/encryption/envelopeEncryption.ts @@ -180,7 +180,7 @@ export class EnvelopeEncryption { const decryptedBytes = await this.#encryptionPrimitives.decryptBytes( dek.bytes, nonce, - this.encryptionAAD(channelId, encryptedKey.version, sender), + this.encryptionAAD(channelId, dek.version, sender), ciphertext, ); return new TextDecoder().decode(decryptedBytes); diff --git a/packages/messaging/test/integration-write.test.ts b/packages/messaging/test/integration-write.test.ts index 32c469b..cb4fa1b 100644 --- a/packages/messaging/test/integration-write.test.ts +++ b/packages/messaging/test/integration-write.test.ts @@ -220,11 +220,20 @@ describe('Integration tests - Write Path', () => { }); channelObj = channelObjects[0]; - // Get the creator's MemberCap - const memberships = await client.messaging.getChannelMemberships({ - address: signer.toSuiAddress(), - }); - const creatorMembership = memberships.memberships.find((m) => m.channel_id === newChannelId); + // Get the creator's MemberCap (taking pagination into account) + let creatorMembership: Membership | null | undefined = null; + let cursor: string | null = null; + let hasNextPage: boolean = true; + while (hasNextPage && !creatorMembership) { + const memberships = await client.messaging.getChannelMemberships({ + address: signer.toSuiAddress(), + cursor, + }); + creatorMembership = memberships.memberships.find((m) => m.channel_id === newChannelId); + hasNextPage = memberships.hasNextPage; + cursor = memberships.cursor; + } + expect(creatorMembership).toBeDefined(); // Get the actual MemberCap object @@ -236,7 +245,7 @@ describe('Integration tests - Write Path', () => { throw new Error('Failed to fetch MemberCap object'); } memberCap = MemberCap.parse(await memberCapObject.content); - console.log('channelObj', JSON.stringify(channelObj, null, 2)); + // console.log('channelObj', JSON.stringify(channelObj, null, 2)); console.log('memberCap', JSON.stringify(memberCap, null, 2)); const encryptionKeyVersion = channelObj.encryption_key_history.latest_version; @@ -256,7 +265,7 @@ describe('Integration tests - Write Path', () => { const fileContent = new TextEncoder().encode(`Attachment content: ${Date.now()}`); const file = new File([fileContent], 'test.txt', { type: 'text/plain' }); - console.log('channelObj', JSON.stringify(channelObj, null, 2)); + // console.log('channelObj', JSON.stringify(channelObj, null, 2)); console.log('memberCap', JSON.stringify(memberCap, null, 2)); const { digest, messageId } = await client.messaging.executeSendMessageTransaction({ @@ -287,6 +296,22 @@ describe('Integration tests - Write Path', () => { expect(sentMessage.text).toBe(messageText); expect(sentMessage.createdAtMs).toMatch(/[0-9]+/); expect(sentMessage.attachments).toHaveLength(1); + + // download and decrypt the attachment's data + const attachment = sentMessage.attachments![0]; + console.log( + 'attachment metadata', + attachment.fileName, + attachment.mimeType, + attachment.fileSize, + ); + const attachmentData = await attachment.data; + expect(attachmentData).toBeDefined(); + expect(attachmentData.length).toBeGreaterThan(0); + // Decrypted attachment data should equal the fileContent + expect(attachmentData).toEqual(fileContent); + const attachmentDataText = new TextDecoder().decode(attachmentData); + expect(attachmentDataText).toContain(`Attachment content:`); }, 320000); it('should send and decrypt a message without an attachment', async () => { diff --git a/packages/messaging/test/prepare-test-data.ts b/packages/messaging/test/prepare-test-data.ts index 6b0bbb6..c4fa122 100644 --- a/packages/messaging/test/prepare-test-data.ts +++ b/packages/messaging/test/prepare-test-data.ts @@ -1,12 +1,19 @@ // Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 -import { setupTestEnvironment, createTestClient } from './test-helpers'; -import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; -import { EncryptedSymmetricKey } from '../src/encryption/types'; import { writeFileSync } from 'fs'; import { join } from 'path'; + +import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; +import { Signer } from '@mysten/sui/cryptography'; +import { ClientWithExtensions } from '@mysten/sui/dist/cjs/experimental'; + +import { setupTestEnvironment, createTestClient } from './test-helpers'; import { loadTestUsers, getTestUserKeypair } from './fund-test-users'; +import { SuiStackMessagingClient } from '../src/client'; +import { EncryptedSymmetricKey } from '../src/encryption/types'; +import { Membership } from '../src/types'; + // Test data structure interface TestChannelData { channelId: string; @@ -185,8 +192,8 @@ interface TestChannel { } async function createTestChannel( - client: any, - creator: any, + client: ClientWithExtensions<{ messaging: SuiStackMessagingClient }>, + creator: Signer, initialMembers: string[], ): Promise { // Create channel @@ -196,16 +203,25 @@ async function createTestChannel( }); // Get channel object to extract encryption key info - const channelObjects = await client.messaging.getChannelObjectsByChannelIds([channelId]); + const channelObjects = await client.messaging.getChannelObjectsByChannelIds({ + channelIds: [channelId], + userAddress: creator.toSuiAddress(), + }); const channelObj = channelObjects[0]; // Get creator's member cap - const creatorMemberships = await client.messaging.getChannelMemberships({ - address: creator.toSuiAddress(), - }); - const creatorMembership = creatorMemberships.memberships.find( - (m: any) => m.channel_id === channelId, - ); + let creatorMembership: Membership | null | undefined = null; + let cursor: string | null = null; + let hasNextPage: boolean = true; + while (hasNextPage && !creatorMembership) { + let memberships = await client.messaging.getChannelMemberships({ + address: creator.toSuiAddress(), + cursor, + }); + creatorMembership = memberships.memberships.find((m) => m.channel_id === channelId); + hasNextPage = memberships.hasNextPage; + cursor = memberships.cursor; + } if (!creatorMembership) { throw new Error('Creator membership not found'); From cb9ccef1927c2191c260e7c487aa168e958d8b70 Mon Sep 17 00:00:00 2001 From: ioannischtz Date: Mon, 22 Sep 2025 12:14:56 +0300 Subject: [PATCH 8/8] test(ts-sdk): Add unit tests for the new cache class. --- packages/messaging/package.json | 2 +- packages/messaging/src/cache.ts | 6 + packages/messaging/test/unit/cache.test.ts | 304 +++++++++++++++++++++ 3 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 packages/messaging/test/unit/cache.test.ts diff --git a/packages/messaging/package.json b/packages/messaging/package.json index 2d9a2bb..5e1cb24 100644 --- a/packages/messaging/package.json +++ b/packages/messaging/package.json @@ -27,7 +27,7 @@ "vitest": "vitest", "test": "pnpm test:typecheck && pnpm test:unit", "test:typecheck": "tsc -p ./test", - "test:unit": "vitest run unit __tests__ || echo 'No unit tests found'", + "test:unit": "vitest run test/unit || echo 'No unit tests found'", "test:integration": "vitest run test/integration-*.test.ts", "test:integration:localnet": "TEST_ENVIRONMENT=localnet vitest run test/integration-write.test.ts", "test:integration:testnet": "TEST_ENVIRONMENT=testnet vitest run test/integration-*.test.ts", diff --git a/packages/messaging/src/cache.ts b/packages/messaging/src/cache.ts index 4013132..9d656b2 100644 --- a/packages/messaging/src/cache.ts +++ b/packages/messaging/src/cache.ts @@ -14,6 +14,12 @@ export class TimeBasedLruCache { #maxEntries: number; constructor({ ttlMs, maxEntries }: TimeBasedLruCacheOptions) { + if (ttlMs <= 0) { + throw new Error('ttlMs must be greater than 0'); + } + if (maxEntries <= 0) { + throw new Error('maxEntries must be greater than 0'); + } this.#cache = new Map(); this.#ttlMs = ttlMs; this.#maxEntries = maxEntries; diff --git a/packages/messaging/test/unit/cache.test.ts b/packages/messaging/test/unit/cache.test.ts new file mode 100644 index 0000000..5ab42fb --- /dev/null +++ b/packages/messaging/test/unit/cache.test.ts @@ -0,0 +1,304 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +import { beforeEach, describe, expect, it, vi, afterEach } from 'vitest'; +import { TimeBasedLruCache } from '../../src/cache.js'; + +describe('TimeBasedLruCache', () => { + let cache: TimeBasedLruCache; + const defaultOptions = { ttlMs: 1000, maxEntries: 3 }; + + beforeEach(() => { + cache = new TimeBasedLruCache(defaultOptions); + vi.useFakeTimers(); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + describe('constructor', () => { + it('should create cache with provided options', () => { + const customCache = new TimeBasedLruCache({ ttlMs: 5000, maxEntries: 10 }); + expect(customCache).toBeInstanceOf(TimeBasedLruCache); + }); + + it('should throw error for zero ttlMs', () => { + expect(() => new TimeBasedLruCache({ ttlMs: 0, maxEntries: 3 })).toThrow( + 'ttlMs must be greater than 0', + ); + }); + + it('should throw error for negative ttlMs', () => { + expect(() => new TimeBasedLruCache({ ttlMs: -100, maxEntries: 3 })).toThrow( + 'ttlMs must be greater than 0', + ); + }); + + it('should throw error for zero maxEntries', () => { + expect(() => new TimeBasedLruCache({ ttlMs: 1000, maxEntries: 0 })).toThrow( + 'maxEntries must be greater than 0', + ); + }); + + it('should throw error for negative maxEntries', () => { + expect(() => new TimeBasedLruCache({ ttlMs: 1000, maxEntries: -5 })).toThrow( + 'maxEntries must be greater than 0', + ); + }); + }); + + describe('readSync', () => { + it('should load and cache value on first call', () => { + const loadFn = vi.fn(() => 'test-value'); + const result = cache.readSync(['key1'], loadFn); + + expect(result).toBe('test-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should return cached value on subsequent calls', () => { + const loadFn = vi.fn(() => 'test-value'); + + cache.readSync(['key1'], loadFn); + const result = cache.readSync(['key1'], loadFn); + + expect(result).toBe('test-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should join multiple key parts with colon', () => { + const loadFn = vi.fn(() => 'test-value'); + + cache.readSync(['part1', 'part2', 'part3'], loadFn); + const result = cache.readSync(['part1', 'part2', 'part3'], loadFn); + + expect(result).toBe('test-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should reload value after TTL expires', () => { + const loadFn = vi.fn().mockReturnValueOnce('first-value').mockReturnValueOnce('second-value'); + + cache.readSync(['key1'], loadFn); + + vi.advanceTimersByTime(1001); + + const result = cache.readSync(['key1'], loadFn); + + expect(result).toBe('second-value'); + expect(loadFn).toHaveBeenCalledTimes(2); + }); + + it('should not reload value before TTL expires', () => { + const loadFn = vi.fn(() => 'test-value'); + + cache.readSync(['key1'], loadFn); + + vi.advanceTimersByTime(999); + + const result = cache.readSync(['key1'], loadFn); + + expect(result).toBe('test-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should move accessed entry to end (LRU behavior)', () => { + const loadFn1 = vi.fn(() => 'value1'); + const loadFn2 = vi.fn(() => 'value2'); + const loadFn3 = vi.fn(() => 'value3'); + const loadFn4 = vi.fn(() => 'value4'); + + cache.readSync(['key1'], loadFn1); + cache.readSync(['key2'], loadFn2); + cache.readSync(['key3'], loadFn3); + + cache.readSync(['key1'], loadFn1); + + cache.readSync(['key4'], loadFn4); + + cache.readSync(['key2'], loadFn2); + + expect(loadFn1).toHaveBeenCalledTimes(1); + expect(loadFn2).toHaveBeenCalledTimes(2); + expect(loadFn3).toHaveBeenCalledTimes(1); + expect(loadFn4).toHaveBeenCalledTimes(1); + }); + + it('should evict LRU entry when cache is full', () => { + const loadFn1 = vi.fn(() => 'value1'); + const loadFn2 = vi.fn(() => 'value2'); + const loadFn3 = vi.fn(() => 'value3'); + const loadFn4 = vi.fn(() => 'value4'); + + cache.readSync(['key1'], loadFn1); + cache.readSync(['key2'], loadFn2); + cache.readSync(['key3'], loadFn3); + cache.readSync(['key4'], loadFn4); + + cache.readSync(['key1'], loadFn1); + + expect(loadFn1).toHaveBeenCalledTimes(2); + expect(loadFn2).toHaveBeenCalledTimes(1); + expect(loadFn3).toHaveBeenCalledTimes(1); + expect(loadFn4).toHaveBeenCalledTimes(1); + }); + + it('should handle different data types', () => { + const objectValue = { test: 'object' }; + const numberValue = 42; + const arrayValue = [1, 2, 3]; + + const objResult = cache.readSync(['obj'], () => objectValue); + const numResult = cache.readSync(['num'], () => numberValue); + const arrResult = cache.readSync(['arr'], () => arrayValue); + + expect(objResult).toEqual(objectValue); + expect(numResult).toBe(numberValue); + expect(arrResult).toEqual(arrayValue); + }); + }); + + describe('read (async)', () => { + it('should handle synchronous load function', () => { + const loadFn = vi.fn(() => 'sync-value'); + const result = cache.read(['key1'], loadFn); + + expect(result).toBe('sync-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should handle asynchronous load function', async () => { + const loadFn = vi.fn(() => Promise.resolve('async-value')); + const result = cache.read(['key1'], loadFn); + + expect(result).toBeInstanceOf(Promise); + expect(await result).toBe('async-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should cache async results', async () => { + const loadFn = vi.fn(() => Promise.resolve('async-value')); + + await cache.read(['key1'], loadFn); + const result = cache.read(['key1'], loadFn); + + expect(result).toBe('async-value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should handle rejected promises', async () => { + const error = new Error('Load failed'); + const loadFn = vi.fn(() => Promise.reject(error)); + + await expect(cache.read(['key1'], loadFn)).rejects.toThrow('Load failed'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should remove cache entry on promise rejection', async () => { + const error = new Error('Load failed'); + const loadFn = vi + .fn() + .mockReturnValueOnce(Promise.reject(error)) + .mockReturnValueOnce(Promise.resolve('success')); + + await expect(cache.read(['key1'], loadFn)).rejects.toThrow('Load failed'); + + const result = await cache.read(['key1'], loadFn); + expect(result).toBe('success'); + expect(loadFn).toHaveBeenCalledTimes(2); + }); + + it('should handle concurrent async loads for same key', async () => { + const mockApiCall = vi.fn(() => Promise.resolve('api-data')); + + const promise1 = cache.read(['user', '123'], mockApiCall); + const promise2 = cache.read(['user', '123'], mockApiCall); + + const [result1, result2] = await Promise.all([promise1, promise2]); + + expect(result1).toBe('api-data'); + expect(result2).toBe('api-data'); + expect(mockApiCall).toHaveBeenCalledTimes(2); + }); + }); + + describe('clear', () => { + it('should remove all entries from cache', () => { + const loadFn = vi.fn(() => 'test-value'); + + cache.readSync(['key1'], loadFn); + cache.readSync(['key2'], loadFn); + + cache.clear(); + + cache.readSync(['key1'], loadFn); + cache.readSync(['key2'], loadFn); + + expect(loadFn).toHaveBeenCalledTimes(4); + }); + }); + + describe('edge cases', () => { + it('should handle single entry cache', () => { + const singleCache = new TimeBasedLruCache({ ttlMs: 1000, maxEntries: 1 }); + const loadFn1 = vi.fn(() => 'value1'); + const loadFn2 = vi.fn(() => 'value2'); + + singleCache.readSync(['key1'], loadFn1); + singleCache.readSync(['key2'], loadFn2); + singleCache.readSync(['key1'], loadFn1); + + expect(loadFn1).toHaveBeenCalledTimes(2); + expect(loadFn2).toHaveBeenCalledTimes(1); + }); + + it('should handle empty key array', () => { + const loadFn = vi.fn(() => 'value'); + + cache.readSync([''], loadFn); + const result = cache.readSync([''], loadFn); + + expect(result).toBe('value'); + expect(loadFn).toHaveBeenCalledTimes(1); + }); + + it('should handle null and undefined values', () => { + const nullResult = cache.readSync(['null'], () => null); + const undefinedResult = cache.readSync(['undefined'], () => undefined); + + expect(nullResult).toBeNull(); + expect(undefinedResult).toBeUndefined(); + }); + + it('should distinguish between different key combinations', () => { + const loadFn1 = vi.fn(() => 'value1'); + const loadFn2 = vi.fn(() => 'value2'); + + cache.readSync(['a', 'b'], loadFn1); + cache.readSync(['ab'], loadFn2); + cache.readSync(['a', 'b'], loadFn1); + cache.readSync(['ab'], loadFn2); + + expect(loadFn1).toHaveBeenCalledTimes(1); + expect(loadFn2).toHaveBeenCalledTimes(1); + }); + }); + + describe('performance characteristics', () => { + it('should handle large number of entries efficiently', () => { + const largeCache = new TimeBasedLruCache({ ttlMs: 1000, maxEntries: 1000 }); + const loadFn = vi.fn((key: string) => `value-${key}`); + + for (let i = 0; i < 1000; i++) { + largeCache.readSync([`key${i}`], () => loadFn(`key${i}`)); + } + + for (let i = 0; i < 1000; i++) { + largeCache.readSync([`key${i}`], () => loadFn(`key${i}`)); + } + + expect(loadFn).toHaveBeenCalledTimes(1000); + }); + }); +});