From 618024f28c2562b22c0153a2e998fddfa4ade4dd Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 15:58:34 +0200 Subject: [PATCH 1/8] chore: migrate to the structurer and upgrade the SDK Output of the canonical `structure refresh` flow on block-tools 2.14.3: structure refresh --update-deps-only pnpm install structure refresh pnpm install pnpm fmt SDK bumps: model/ui-vue 1.79.20 -> 1.83.0/1.83.1, workflow-tengo 6.6.5 -> 6.8.3, tengo-builder 4.0.11 -> 4.0.23, ts-builder 1.6.0 -> 1.7.1, ts-configs 1.3.0 -> 1.4.0, test 1.79.23 -> 1.83.2, block-tools 2.11.6 -> 2.14.3. Structural changes: - `kind/` scaffolded (mandatory fourth component). `src/index.ts` still holds the `NEEDS_BLOCK_PARAMS` sentinel; the contract is resolved in the next commit. - `block/` becomes the slim facade: `dependencies: {}`, a bundled `dist/` plus `block-pack/`, and the from-pack-v2 `SequencePropertiesBlockPointer` export. Every sibling package is now `private: true`. - Root build scripts move off `PL_PKG_DEV` onto `PL_BUILD_CHANNEL` / `PL_BUILD_VARIANT` / `PL_BUILD_LOCATION`. `build` and `build:dev` are replaced by `build:dev-local`, `build:dev-remote`, `build:dev-no-software`, `build:dev-binary-existing` and `build:release`. The root gains `upgrade-sdk`, so later SDK upgrades are one command. - `software/` builds via `block-tools software build` instead of `pl-pkg`. - CI (`build.yaml`) is now scaffold-owned: hz-ubuntu-dind runners, node 22, turbo remote cache, and `require-package-path-bump`. - Legacy config removed: `.prettierrc`, `test/eslint.config.mjs`, the hand-written `block/index.js` and `workflow/index.js` entry stubs. - The test scope is lint- and fmt-checked now, so its sources were reformatted. One hand edit was needed to make `pnpm fmt` pass: `test/src/wf.test.ts` carries 46 `it.todo`/`it.skip` placeholders that document unimplemented scenarios, and the new test-scope lint runs with `--deny-warnings`. Added a file-level `oxlint-disable vitest/warn-todo` with the reason, rather than dropping the documented gaps. pnpm was downgraded 9.15.0 -> 9.12.0 by the structurer's canonical pin. --- .github/workflows/build.yaml | 42 +- .github/workflows/mark-stable.yaml | 8 +- .prettierrc | 7 - .structure | 1 + .vscode/settings.json | 50 +- block/index.d.ts | 9 - block/index.js | 15 - block/package.json | 48 +- block/src/AGENTS.ts | 5 + block/src/agents-extra.ts | 8 + block/src/block-extra.ts | 9 + block/src/index.ts | 55 + block/tsconfig.json | 4 + kind/.oxfmtrc.json | 4 + kind/.oxlintrc.json | 3 + kind/package.json | 36 + kind/src/index.ts | 49 + kind/tsconfig.json | 10 + model/.oxfmtrc.json | 3 +- model/package.json | 9 +- model/tsconfig.json | 9 +- package.json | 17 +- pnpm-lock.yaml | 2749 +++++++++++++--------------- pnpm-workspace.yaml | 31 +- software/package.json | 20 +- test/.oxfmtrc.json | 4 + test/.oxlintrc.json | 3 + test/eslint.config.mjs | 4 - test/package.json | 24 +- test/src/fixtures/scenarios.ts | 246 +-- test/src/helpers.ts | 62 +- test/src/wf.test.ts | 132 +- test/tsconfig.json | 6 +- test/vitest.config.mts | 2 +- turbo.json | 28 +- ui/.oxlintrc.json | 2 +- ui/package.json | 15 +- ui/tsconfig.json | 8 +- workflow/format.el | 1 - workflow/index.d.ts | 4 - workflow/index.js | 3 - workflow/package.json | 16 +- 42 files changed, 1810 insertions(+), 1951 deletions(-) delete mode 100644 .prettierrc create mode 100644 .structure delete mode 100644 block/index.d.ts delete mode 100644 block/index.js create mode 100644 block/src/AGENTS.ts create mode 100644 block/src/agents-extra.ts create mode 100644 block/src/block-extra.ts create mode 100644 block/src/index.ts create mode 100644 block/tsconfig.json create mode 100644 kind/.oxfmtrc.json create mode 100644 kind/.oxlintrc.json create mode 100644 kind/package.json create mode 100644 kind/src/index.ts create mode 100644 kind/tsconfig.json create mode 100644 test/.oxfmtrc.json create mode 100644 test/.oxlintrc.json delete mode 100644 test/eslint.config.mjs delete mode 100644 workflow/index.d.ts delete mode 100644 workflow/index.js diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b39e54e..2540f04 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,25 +11,23 @@ on: workflow_dispatch: {} jobs: init: - if: github.repository != 'milaboratory/platforma-sequence-properties' - runs-on: ubuntu-latest + runs-on: hz-ubuntu-dind steps: - uses: milaboratory/github-ci/actions/context/init@v4 with: version-canonize: false branch-versioning: main run: - if: github.repository != 'milaboratory/platforma-sequence-properties' needs: - init - uses: milaboratory/github-ci/.github/workflows/node-simple-pnpm.yaml@v4 with: - app-name: 'Block: sequence-properties' + app-name: 'Block: Sequence Properties' app-name-slug: 'block-sequence-properties' - - node-version: '20.x' - build-script-name: 'build' + node-version: '22.x' + gha-runner-label: hz-ubuntu-dind + build-script-name: 'build:dev-local' + build-before-publish-script-name: 'build:release' pnpm-recursive-build: false test: true @@ -37,41 +35,49 @@ jobs: pnpm-recursive-tests: false team-id: 'ciplopen' + publish-to-public: 'true' package-path: 'block' - publish-to-public: true - create-tag: true + create-tag: 'true' + + # Require the published `block` package to be bumped by a changeset on + # PRs (empty changeset or the `skip-changelog` label waives it). Needs + # the input to exist on the pinned `@v4` reusable workflow. + require-package-path-bump: true npmrc-config: | { "registries": { "https://registry.npmjs.org/": { - "scopes": ["milaboratories", "platforma-open", "platforma-sdk"], + "scopes": ["milaboratories", "platforma-sdk", "platforma-open"], "tokenVar": "NPMJS_TOKEN" - }, - "https://npm.pkg.github.com/": { - "scopes": ["milaboratory"], - "tokenVar": "NODE_AUTH_TOKEN" } } } - secrets: env: | { "PL_LICENSE": ${{ toJSON(secrets.MI_LICENSE) }}, "MI_LICENSE": ${{ toJSON(secrets.MI_LICENSE) }}, - "NPMJS_TOKEN": ${{ toJSON(secrets.NPMJS_TOKEN) }}, "PL_CI_TEST_USER": ${{ toJSON(secrets.PL_CI_TEST_USER) }}, "PL_CI_TEST_PASSWORD": ${{ toJSON(secrets.PL_CI_TEST_PASSWORD) }}, "AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }}, "AWS_CI_TURBOREPO_S3_BUCKET": ${{ toJSON(secrets.AWS_CI_TURBOREPO_S3_BUCKET) }}, + + "HZ_CI_TURBO_S3_BUCKET": ${{ toJSON(vars.HZ_CI_TURBO_S3_BUCKET) }}, + "HZ_CI_TURBO_S3_ENDPOINT": ${{ toJSON(vars.HZ_CI_TURBO_S3_ENDPOINT) }}, + "HZ_CI_TURBO_S3_REGION": ${{ toJSON(vars.HZ_CI_TURBO_S3_REGION) }}, + "HZ_CI_TURBO_S3_ACCESS_KEY": ${{ toJSON(secrets.HZ_CI_TURBO_S3_ACCESS_KEY) }}, + "HZ_CI_TURBO_S3_SECRET_KEY": ${{ toJSON(secrets.HZ_CI_TURBO_S3_SECRET_KEY) }}, + "HZ_CI_CACHE_S3_ACCESS_KEY": ${{ toJSON(secrets.HZ_CI_CACHE_S3_ACCESS_KEY) }}, + "HZ_CI_CACHE_S3_SECRET_KEY": ${{ toJSON(secrets.HZ_CI_CACHE_S3_SECRET_KEY) }}, + "PL_REGISTRY_PLATFORMA_OPEN_UPLOAD_URL": ${{ toJSON(secrets.PL_REGISTRY_PLOPEN_UPLOAD_URL) }}, "QUAY_USERNAME": ${{ toJSON(secrets.QUAY_USERNAME) }}, "QUAY_ROBOT_TOKEN": ${{ toJSON(secrets.QUAY_ROBOT_TOKEN) }} } - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} GH_ZEN_APP_ID: ${{ secrets.GH_ZEN_APP_ID }} GH_ZEN_APP_PRIVATE_KEY: ${{ secrets.GH_ZEN_APP_PRIVATE_KEY }} diff --git a/.github/workflows/mark-stable.yaml b/.github/workflows/mark-stable.yaml index 3248a01..74954fe 100644 --- a/.github/workflows/mark-stable.yaml +++ b/.github/workflows/mark-stable.yaml @@ -3,7 +3,6 @@ on: workflow_dispatch: {} jobs: init: - if: github.repository != 'milaboratory/platforma-sequence-properties' runs-on: ubuntu-latest steps: - uses: milaboratory/github-ci/actions/context/init@v4 @@ -11,13 +10,12 @@ jobs: version-canonize: false branch-versioning: main run: - if: github.repository != 'milaboratory/platforma-sequence-properties' needs: - init uses: milaboratory/github-ci/.github/workflows/block-mark-stable.yaml@v4 with: - app-name: 'Block: sequence-properties - Mark Stable' - node-version: '20.x' + app-name: 'Block: Sequence Properties - Mark Stable' + node-version: '22.x' npmrc-config: | { "registries": { @@ -32,5 +30,5 @@ jobs: { "NPMJS_TOKEN": ${{ toJSON(secrets.NPMJS_TOKEN) }}, "AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }} } - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index db2ffe3..0000000 --- a/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": true, - "tabWidth": 2, - "trailingComma": "none", - "singleQuote": true, - "printWidth": 100 -} diff --git a/.structure b/.structure new file mode 100644 index 0000000..218abba --- /dev/null +++ b/.structure @@ -0,0 +1 @@ +{"version":2} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7568ec6..25fa621 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,51 +1,3 @@ { - "vitest.disableWorkspaceWarning": true, - "editor.defaultFormatter": "oxc.oxc-vscode", - "[typescript]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[vue]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "cSpell.words": [ - "datasource", - "pframe", - "prerun" - ], - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "always" - }, - "eslint.enable": true, - "eslint.format.enable": true, - "[javascript]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[css]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[scss]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[html]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[yaml]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[markdown]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "[json]": { - "editor.defaultFormatter": "oxc.oxc-vscode", - "editor.tabSize": 2 - }, - "typescript.tsdk": "./node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/block/index.d.ts b/block/index.d.ts deleted file mode 100644 index 1ba908d..0000000 --- a/block/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BlockPackDescriptionAbsolute } from '@platforma-sdk/block-tools'; - -declare function loadBlockDescription(): BlockPackDescriptionAbsolute; -declare const blockSpec: { - type: 'dev-v2'; - folder: string; -}; - -export { loadBlockDescription, blockSpec }; diff --git a/block/index.js b/block/index.js deleted file mode 100644 index e7798d4..0000000 --- a/block/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const blockTools = require('@platforma-sdk/block-tools'); - -async function loadBlockDescription() { - return await blockTools.loadPackDescriptionFromSource(__dirname); -} - -const blockSpec = { - type: 'dev-v2', - folder: __dirname -}; - -module.exports = { - blockSpec, - loadBlockDescription -}; diff --git a/block/package.json b/block/package.json index 7a4d357..30f8a20 100644 --- a/block/package.json +++ b/block/package.json @@ -1,22 +1,42 @@ { "name": "@platforma-open/milaboratories.sequence-properties", "version": "1.5.2", + "files": [ + "dist", + "block-pack" + ], + "type": "module", + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "sources": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, "scripts": { - "build": "shx rm -rf ./block-pack && block-tools pack", + "build": "ts-builder build --target block-facade && block-tools pack", "mark-stable": "block-tools mark-stable -r 's3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1'", - "prepublishOnly": "block-tools pack && block-tools publish --unstable -r 's3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1' --registry-serve-url https://blocks.pl-open.science", - "do-pack": "shx rm -f *.tgz && block-tools pack && pnpm pack && shx mv *.tgz package.tgz" + "prepublishOnly": "block-tools publish -r s3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1 --registry-serve-url https://blocks.pl-open.science", + "do-pack": "shx rm -f package.tgz && pnpm pack && shx mv *.tgz package.tgz", + "check": "ts-builder type-check --target block-facade" }, - "files": [ - "index.d.ts", - "index.js" - ], - "dependencies": { - "@platforma-sdk/model": "catalog:", - "@platforma-open/milaboratories.sequence-properties.workflow": "workspace:*", + "dependencies": {}, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-open/milaboratories.sequence-properties.kind": "workspace:*", "@platforma-open/milaboratories.sequence-properties.model": "workspace:*", - "@platforma-open/milaboratories.sequence-properties.ui": "workspace:*" + "@platforma-open/milaboratories.sequence-properties.ui": "workspace:*", + "@platforma-open/milaboratories.sequence-properties.workflow": "workspace:*", + "@platforma-sdk/block-tools": "catalog:", + "@platforma-sdk/model": "catalog:", + "shx": "catalog:", + "typescript": "catalog:" }, + "packageManager": "pnpm@9.15.0", "block": { "components": { "workflow": "@platforma-open/milaboratories.sequence-properties.workflow/dist/tengo/tpl/main.plj.gz", @@ -43,9 +63,5 @@ "logo": "file:../logos/organization-logo.png" } } - }, - "devDependencies": { - "@platforma-sdk/block-tools": "catalog:" - }, - "packageManager": "pnpm@9.15.0" + } } diff --git a/block/src/AGENTS.ts b/block/src/AGENTS.ts new file mode 100644 index 0000000..5cf2589 --- /dev/null +++ b/block/src/AGENTS.ts @@ -0,0 +1,5 @@ +// This file is managed by `block-tools structure`. Do not edit by hand. +// Narrow MCP / AI surface. + +export type { BlockContract, BlockOutputs, BlockData } from "./index"; +export * from "./agents-extra"; diff --git a/block/src/agents-extra.ts b/block/src/agents-extra.ts new file mode 100644 index 0000000..228811f --- /dev/null +++ b/block/src/agents-extra.ts @@ -0,0 +1,8 @@ +// Author-owned. `block-tools structure` does not modify this file. +// MCP / AI extension surface. Add types and functions the agent +// surface should expose. +// +// In the future this file will host JS functions the MCP runtime +// can execute. The `.d.ts` declarations stay visible to the agent; +// the JS bodies execute in the MCP code-execution context (the +// agent sees the types but not the implementation). diff --git a/block/src/block-extra.ts b/block/src/block-extra.ts new file mode 100644 index 0000000..fc00cdd --- /dev/null +++ b/block/src/block-extra.ts @@ -0,0 +1,9 @@ +// Author-owned. `block-tools structure` does not modify this file. +// Add block-specific helper types or values the consumer surface +// should expose. Anything you `export` here flows out via the +// main entry (./index re-exports this file). +// +// Do NOT redefine: BlockContract, BlockOutputs, BlockData, +// BlockPointer, platforma, or the block-named Block* +// aliases — those names come from ./index and `export *` from this +// file would shadow them. diff --git a/block/src/index.ts b/block/src/index.ts new file mode 100644 index 0000000..a3ec1ee --- /dev/null +++ b/block/src/index.ts @@ -0,0 +1,55 @@ +// This file is managed by `block-tools structure`. Do not edit by hand. +// Author content lives in ./block-extra.ts. + +import { platforma } from "@platforma-open/milaboratories.sequence-properties.model"; +import { + InferOutputsType, + InferDataType, + InferHrefType, +} from "@platforma-sdk/model"; + +export { platforma }; + +export type BlockContract = { + outputs: InferOutputsType; + data: InferDataType; + href: InferHrefType; +}; + +export type BlockOutputs = BlockContract["outputs"]; +export type BlockData = BlockContract["data"]; + +// import.meta.url is a file: URL (always forward-slash, even on Windows: +// file:///C:/…). We expose URLs, NOT paths — the facade stays dependency-free +// and loadable in minimal engines (e.g. QuickJS), and each consumer converts +// at its own edge with the right tool (fileURLToPath in Node), where Windows +// drive letters / %-encoding / UNC are handled correctly. The bundled entry +// sits one dir under the package root (dist/index.js, or src/index.ts in dev), +// so the root is two URL segments up. The structurer owns this layout — +// consumers read these URLs, they never reconstruct /block-pack. +// +// TypeScript ships `ImportMeta.url` only in the `dom`/`webworker` libs; the +// facade tsconfig is lib-minimal (no `dom`, no `@types/node`) by design. We +// type the one ESM-standard member we use with a local cast rather than a +// `declare global` — a global augmentation would leak into the published +// `dist/index.d.ts` and clash with `@types/node`'s `ImportMeta` in full-Node +// consumers (test packages, the Middle Layer). +const selfUrl = (import.meta as ImportMeta & { url: string }).url; +const dirUrl = selfUrl.slice(0, selfUrl.lastIndexOf("/")); +const rootUrl = dirUrl.slice(0, dirUrl.lastIndexOf("/")); + +export const BlockPointer = { + type: "from-pack-v2" as const, + packUrl: rootUrl + "/block-pack", + rootUrl, +} as const; + +// Block-named aliases for readable cross-block imports in tests and +// consumer code. Same types / same runtime value as the universal +// names above; the aliases avoid `as`-renames at the import site. +export type SequencePropertiesBlockContract = BlockContract; +export type SequencePropertiesBlockOutputs = BlockOutputs; +export type SequencePropertiesBlockData = BlockData; +export const SequencePropertiesBlockPointer = BlockPointer; + +export * from "./block-extra"; diff --git a/block/tsconfig.json b/block/tsconfig.json new file mode 100644 index 0000000..8b5ec69 --- /dev/null +++ b/block/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@milaboratories/ts-configs/block/facade", + "include": ["src/**/*"] +} diff --git a/kind/.oxfmtrc.json b/kind/.oxfmtrc.json new file mode 100644 index 0000000..7eff5e7 --- /dev/null +++ b/kind/.oxfmtrc.json @@ -0,0 +1,4 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md"] +} diff --git a/kind/.oxlintrc.json b/kind/.oxlintrc.json new file mode 100644 index 0000000..b1a1390 --- /dev/null +++ b/kind/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-node.json"] +} diff --git a/kind/package.json b/kind/package.json new file mode 100644 index 0000000..294aec8 --- /dev/null +++ b/kind/package.json @@ -0,0 +1,36 @@ +{ + "name": "@platforma-open/milaboratories.sequence-properties.kind", + "version": "1.0.0", + "private": true, + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "sources": "./src/index.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, + "scripts": { + "fmt": "ts-builder format", + "watch": "ts-builder build --target block-kind --watch", + "build": "ts-builder build --target block-kind && block-tools build-kind-manifest", + "check": "ts-builder check --target block-kind" + }, + "dependencies": { + "@platforma-sdk/block-kind": "catalog:" + }, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-sdk/block-tools": "catalog:" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": "*" + } +} diff --git a/kind/src/index.ts b/kind/src/index.ts new file mode 100644 index 0000000..e4da684 --- /dev/null +++ b/kind/src/index.ts @@ -0,0 +1,49 @@ +import { assertParamsObject, defineBlockKind } from "@platforma-sdk/block-kind"; +import { name, version } from "../package.json" with { type: "json" }; + +/** + * This block's init-params contract — the shape a block of this kind receives + * at creation, and exactly what a project template serializes for it. + * + * TODO(block-kind): replace `NEEDS_BLOCK_PARAMS` with the real params shape, then + * wire the model's `init(({ params }) => …)` to consume them. If this block takes + * no author-supplied params, set it to `Record` deliberately. + * + * This is an intentional sentinel: `NEEDS_BLOCK_PARAMS` is an undefined type, so + * the block fails to typecheck (TS2304) until the contract is chosen on purpose. + * A scaffolded-but-unmigrated block must never compile with an empty contract by + * default — see the block-kind migration recipe in the `block-dev` skill. + */ +export type BlockParams = NEEDS_BLOCK_PARAMS; + +/** + * The same contract at runtime, for params that arrive from a template file rather than + * from typed code — the only point that can catch a hand-written entry being wrong. + * + * TODO(block-kind): read each key `BlockParams` declares and say what it must be, then + * return them. Plain TypeScript is the default here: a kind owes no schema library, and a + * check written by hand is held to the contract by the return type. Reach for a validation + * library only where the shape earns it, and add it to this package's dependencies yourself. + * + * Check the fields the contract requires, and stop there. A key the contract does not name + * needs no rejection: it is dropped by not being read. + * + * This is a second intentional sentinel. The function has to return `BlockParams`, so + * `return {}` stops compiling the moment the contract declares a required field — the check + * cannot drift from the contract by being left behind. Never satisfy it with a cast: `value + * as BlockParams` compiles today and checks nothing forever. + */ +function parseInitializationParams(value: unknown): BlockParams { + assertParamsObject(value); + + return {}; +} + +// Identity (`name`/`version`) comes from this package's own `package.json`, so +// the on-wire `{name}@{version}` reference can never drift from what npm +// publishes; the bundler inlines the JSON import. +export const kind = defineBlockKind({ + name, + version, + parseInitializationParams, +}); diff --git a/kind/tsconfig.json b/kind/tsconfig.json new file mode 100644 index 0000000..5411207 --- /dev/null +++ b/kind/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@milaboratories/ts-configs/block/facade", + "compilerOptions": { + "outDir": "./dist", + "rootDir": ".", + "resolveJsonModule": true + }, + "include": ["src/**/*", "package.json"], + "exclude": ["dist", "node_modules"] +} diff --git a/model/.oxfmtrc.json b/model/.oxfmtrc.json index ba9bb8f..7eff5e7 100644 --- a/model/.oxfmtrc.json +++ b/model/.oxfmtrc.json @@ -1,3 +1,4 @@ { - "ignorePatterns": ["dist", "CHANGELOG.md"] + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md"] } diff --git a/model/package.json b/model/package.json index 6daac1f..a850cb4 100644 --- a/model/package.json +++ b/model/package.json @@ -1,9 +1,11 @@ { "name": "@platforma-open/milaboratories.sequence-properties.model", "version": "1.3.2", + "private": true, "description": "Block model", "type": "module", - "main": "dist/index.js", + "main": "dist/index.cjs", + "module": "dist/index.js", "types": "dist/index.d.ts", "exports": { ".": { @@ -18,22 +20,23 @@ "watch": "ts-builder build --target block-model --watch", "build": "ts-builder build --target block-model && block-tools build-model", "check": "ts-builder check --target block-model", - "test": "vitest --run --passWithNoTests", + "test": "vitest run --passWithNoTests", "test:watch": "vitest" }, "dependencies": { "@milaboratories/graph-maker": "catalog:", "@milaboratories/helpers": "catalog:", + "@platforma-open/milaboratories.sequence-properties.kind": "workspace:*", "@platforma-sdk/model": "catalog:" }, "devDependencies": { "@milaboratories/ts-builder": "catalog:", "@milaboratories/ts-configs": "catalog:", "@platforma-sdk/block-tools": "catalog:", + "@types/node": "*", "vitest": "catalog:" }, "peerDependencies": { - "@types/node": "*", "typescript": "*" } } diff --git a/model/tsconfig.json b/model/tsconfig.json index 0cdd6f7..4d7a7e5 100644 --- a/model/tsconfig.json +++ b/model/tsconfig.json @@ -1,10 +1,7 @@ { - "extends": "@milaboratories/ts-configs/tsconfig.node.json", + "extends": "@milaboratories/ts-configs/block/model", "compilerOptions": { - "baseUrl": ".", - "outDir": "./dist", - "rootDir": "./src" + "types": ["node"] }, - "include": ["src/**/*"], - "exclude": ["node_modules"] + "include": ["src/**/*"] } diff --git a/package.json b/package.json index 10f9491..487ca04 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,20 @@ "scripts": { "fmt": "turbo run fmt", "check": "turbo run check", - "build": "turbo run build", - "build:dev": "env PL_PKG_DEV=local turbo run build", - "test": "env PL_PKG_DEV=local turbo run test --concurrency 1 --env-mode=loose", - "test:dry-run": "env PL_PKG_DEV=local turbo run test --dry-run=json", + "test": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=binary PL_BUILD_LOCATION=local turbo run test --concurrency 1", + "test:dry-run": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=binary PL_BUILD_LOCATION=local turbo run test --dry-run=json", "mark-stable": "turbo run mark-stable", "watch": "turbo watch build", "changeset": "changeset", "version-packages": "changeset version", - "update-sdk": "block-tools update-deps" + "update-sdk": "block-tools structure refresh --update-deps-only", + "build:dev-local": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=all PL_BUILD_LOCATION=local turbo run build", + "build:dev-remote": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=all PL_BUILD_LOCATION=remote turbo run build", + "build:dev-no-software": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=none turbo run build", + "build:dev-binary-existing": "env PL_BUILD_CHANNEL=dev PL_BUILD_USE_PUBLISHED=true turbo run build", + "build:release": "env PL_BUILD_CHANNEL=release PL_BUILD_VARIANT=all PL_BUILD_LOCATION=remote turbo run build", + "do-pack": "turbo run do-pack", + "upgrade-sdk": "block-tools structure refresh --update-deps-only && pnpm i && block-tools structure refresh && pnpm i && pnpm fmt" }, "devDependencies": { "@changesets/cli": "catalog:", @@ -27,5 +32,5 @@ "oxfmt": "*", "oxlint": "*" }, - "packageManager": "pnpm@9.15.0" + "packageManager": "pnpm@9.12.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89676eb..b8c79e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,41 +13,38 @@ catalogs: specifier: 1.4.8 version: 1.4.8 '@milaboratories/helpers': - specifier: 1.14.2 - version: 1.14.2 + specifier: 1.14.5 + version: 1.14.5 '@milaboratories/ts-builder': - specifier: 1.6.0 - version: 1.6.0 + specifier: 1.7.1 + version: 1.7.1 '@milaboratories/ts-configs': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.4.0 + version: 1.4.0 '@platforma-open/milaboratories.runenv-python-3': specifier: 1.8.2 version: 1.8.2 + '@platforma-sdk/block-kind': + specifier: 1.1.0 + version: 1.1.0 '@platforma-sdk/block-tools': - specifier: 2.11.6 - version: 2.11.6 - '@platforma-sdk/eslint-config': - specifier: 1.2.0 - version: 1.2.0 + specifier: 2.14.3 + version: 2.14.3 '@platforma-sdk/model': - specifier: 1.79.20 - version: 1.79.20 - '@platforma-sdk/package-builder': - specifier: 3.14.0 - version: 3.14.0 + specifier: 1.83.0 + version: 1.83.0 '@platforma-sdk/tengo-builder': - specifier: 4.0.11 - version: 4.0.11 + specifier: 4.0.23 + version: 4.0.23 '@platforma-sdk/test': - specifier: 1.79.23 - version: 1.79.23 + specifier: 1.83.2 + version: 1.83.2 '@platforma-sdk/ui-vue': - specifier: 1.79.20 - version: 1.79.20 + specifier: 1.83.1 + version: 1.83.1 '@platforma-sdk/workflow-tengo': - specifier: 6.6.5 - version: 6.6.5 + specifier: 6.8.3 + version: 6.8.3 eslint: specifier: ^9.38.0 version: 9.39.4 @@ -83,10 +80,10 @@ importers: version: 2.29.8(@types/node@25.3.2) '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.11.6(@types/node@25.3.2) + version: 2.14.3(@types/node@25.3.2) shx: specifier: 'catalog:' version: 0.4.0 @@ -95,7 +92,16 @@ importers: version: 2.8.11 block: - dependencies: + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + '@platforma-open/milaboratories.sequence-properties.kind': + specifier: workspace:* + version: link:../kind '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model @@ -105,41 +111,71 @@ importers: '@platforma-open/milaboratories.sequence-properties.workflow': specifier: workspace:* version: link:../workflow + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.14.3(@types/node@25.3.2) '@platforma-sdk/model': specifier: 'catalog:' - version: 1.79.20 + version: 1.83.0 + shx: + specifier: 'catalog:' + version: 0.4.0 + typescript: + specifier: 'catalog:' + version: 5.6.3 + + kind: + dependencies: + '@platforma-sdk/block-kind': + specifier: 'catalog:' + version: 1.1.0 + '@types/node': + specifier: '*' + version: 25.3.2 + typescript: + specifier: '*' + version: 5.9.3 devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.11.6(@types/node@25.3.2) + version: 2.14.3(@types/node@25.3.2) model: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.46.2)(@platforma-sdk/model@1.79.20)(@platforma-sdk/ui-vue@1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@milaboratories/helpers': specifier: 'catalog:' - version: 1.14.2 + version: 1.14.5 + '@platforma-open/milaboratories.sequence-properties.kind': + specifier: workspace:* + version: link:../kind '@platforma-sdk/model': specifier: 'catalog:' - version: 1.79.20 - '@types/node': - specifier: '*' - version: 25.3.2 + version: 1.83.0 typescript: specifier: '*' version: 5.6.3 devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.0 + version: 1.4.0 '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.11.6(@types/node@25.3.2) + version: 2.14.3(@types/node@25.3.2) + '@types/node': + specifier: '*' + version: 25.3.2 vitest: specifier: 'catalog:' version: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) @@ -149,15 +185,15 @@ importers: '@platforma-open/milaboratories.runenv-python-3': specifier: 'catalog:' version: 1.8.2 - '@platforma-sdk/package-builder': + '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 3.14.0 + version: 2.14.3(@types/node@25.3.2) test: dependencies: '@platforma-open/milaboratories.mixcr-clonotyping-2': specifier: ^2.18.3 - version: 2.18.3(typescript@5.6.3) + version: 2.18.3(typescript@7.0.2) '@platforma-open/milaboratories.mixcr-clonotyping-2.model': specifier: ^1.25.2 version: 1.25.2 @@ -175,29 +211,26 @@ importers: version: 1.0.4 '@platforma-sdk/model': specifier: 'catalog:' - version: 1.79.20 + version: 1.83.0 this-block: specifier: workspace:@platforma-open/milaboratories.sequence-properties@* version: link:../block + typescript: + specifier: '*' + version: 7.0.2 devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.0 - '@platforma-sdk/eslint-config': - specifier: 'catalog:' - version: 1.2.0(@eslint/js@9.39.4)(@stylistic/eslint-plugin@2.13.0(eslint@9.39.4)(typescript@5.6.3))(eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@5.6.3))(eslint-plugin-vue@9.33.0(eslint@9.39.4))(eslint@9.39.4)(globals@15.15.0)(typescript-eslint@8.59.1(eslint@9.39.4)(typescript@5.6.3))(typescript@5.6.3) + version: 1.4.0 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.79.23(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + version: 1.83.2(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) eslint: specifier: 'catalog:' version: 9.39.4 - typescript: - specifier: 'catalog:' - version: 5.6.3 vitest: specifier: 'catalog:' version: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) @@ -206,35 +239,32 @@ importers: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.46.2)(@platforma-sdk/model@1.79.20)(@platforma-sdk/ui-vue@1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model '@platforma-sdk/model': specifier: 'catalog:' - version: 1.79.20 + version: 1.83.0 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + version: 1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + '@types/node': + specifier: '*' + version: 25.3.2 typescript: specifier: '*' version: 5.6.3 - vite: - specifier: '*' - version: 7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1) - vitest: - specifier: '*' - version: 4.0.18(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1) vue: specifier: 'catalog:' version: 3.5.24(typescript@5.6.3) devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' - version: 1.3.0 + version: 1.4.0 workflow: dependencies: @@ -243,17 +273,20 @@ importers: version: link:../software '@platforma-sdk/workflow-tengo': specifier: 'catalog:' - version: 6.6.5 - vitest: - specifier: '*' - version: 4.0.18(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1) + version: 6.8.3 devDependencies: '@platforma-sdk/tengo-builder': specifier: 'catalog:' - version: 4.0.11 + version: 4.0.23 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.79.23(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + version: 1.83.2(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + shx: + specifier: 'catalog:' + version: 0.4.0 + vitest: + specifier: 'catalog:' + version: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) packages: @@ -341,6 +374,10 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-sdk/client-ecr-public@3.859.0': + resolution: {integrity: sha512-pPY85lrGBNWynofNC6Er49W6aA4JvOOKC9RDbS8rWR8pBPEG6p0B82VQKFMR+3JYRogpfQf5hzU47um96EslFA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-s3@3.859.0': resolution: {integrity: sha512-oFLHZX1X6o54ZlweubtSVvQDz15JiNrgDD7KeMZT2MwxiI3axPcHzTo2uizjj5mgNapmYjRmQS5c1c63dvruVA==} engines: {node: '>=18.0.0'} @@ -491,10 +528,6 @@ packages: resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/generator@8.0.0': - resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-compilation-targets@7.28.6': resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} @@ -517,18 +550,10 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@8.0.0': - resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@8.0.2': - resolution: {integrity: sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -542,11 +567,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@8.0.0': - resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - '@babel/runtime@7.26.0': resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} @@ -563,10 +583,6 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@babel/types@8.0.0': - resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} - engines: {node: ^22.18.0 || >=24.11.0} - '@bufbuild/protobuf@2.7.0': resolution: {integrity: sha512-qn6tAIZEw5i/wiESBF4nQxZkl86aY4KoO0IkUa2Lh+rya64oTOdJQFlZuMwI1Qz9VBJQrQC4QlSA2DNek5gCOA==} @@ -706,162 +722,6 @@ packages: '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -900,12 +760,12 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@grpc/grpc-js@1.13.4': - resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} engines: {node: '>=6'} hasBin: true @@ -1075,20 +935,20 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jitl/quickjs-ffi-types@0.31.0': - resolution: {integrity: sha512-1yrgvXlmXH2oNj3eFTrkwacGJbmM0crwipA3ohCrjv52gBeDaD7PsTvFYinlAnqU8iPME3LGP437yk05a2oejw==} + '@jitl/quickjs-ffi-types@0.32.0': + resolution: {integrity: sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg==} - '@jitl/quickjs-wasmfile-debug-asyncify@0.31.0': - resolution: {integrity: sha512-YkdzQdr1uaftFhgEnTRjTTZHk2SFZdpWO7XhOmRVbi6CEVsH9g5oNF8Ta1q3OuSJHRwwT8YsuR1YzEiEIJEk6w==} + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': + resolution: {integrity: sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw==} - '@jitl/quickjs-wasmfile-debug-sync@0.31.0': - resolution: {integrity: sha512-8XvloaaWBONqcHXYs5tWOjdhQVxzULilIfB2hvZfS6S+fI4m2+lFiwQy7xeP8ExHmiZ7D8gZGChNkdLgjGfknw==} + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': + resolution: {integrity: sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q==} - '@jitl/quickjs-wasmfile-release-asyncify@0.31.0': - resolution: {integrity: sha512-uz0BbQYTxNsFkvkurd7vk2dOg57ElTBLCuvNtRl4rgrtbC++NIndD5qv2+AXb6yXDD3Uy1O2PCwmoaH0eXgEOg==} + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': + resolution: {integrity: sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q==} - '@jitl/quickjs-wasmfile-release-sync@0.31.0': - resolution: {integrity: sha512-hYduecOByj9AsAfsJhZh5nA6exokmuFC8cls39+lYmTCGY51bgjJJJwReEu7Ff7vBWaQCL6TeDdVlnp2WYz0jw==} + '@jitl/quickjs-wasmfile-release-sync@0.32.0': + resolution: {integrity: sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg==} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1133,8 +993,11 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - '@milaboratories/computable@2.9.5': - resolution: {integrity: sha512-rzLJ6fjXcNL8jb6vexGR4d8wUGvrwC2CyjkMLU5GFy+7Q6lg1wTrJnu8fzDVhS2OjEEVbD+RTE7AGvK5pYYSMQ==} + '@milaboratories/columns-collection-driver@0.2.4': + resolution: {integrity: sha512-abbgAzME71ARvgnGQHte+dPMgt2JGBJN4YpGLVxiYr7GToHwypsEi3PY/dAqriQWRtpKR82EpIAMxXVq0d7XMw==} + + '@milaboratories/computable@2.9.8': + resolution: {integrity: sha512-X0ZtxOnIJlAd9Y7CyBtWSKHgVuTKXbIryMwJaoYSEz0gY3JZVnsD0f59J/lwe3Key0/lSYh3EbL/pP5jACIzfQ==} engines: {node: '>=22.19.0'} '@milaboratories/graph-maker@1.4.8': @@ -1151,11 +1014,15 @@ packages: resolution: {integrity: sha512-zOkD4aWNbembwI+AsPTz7nmWC1VPA4rwGBc+Nd5jPpKVh7rCtZwQrlOP5mVqRVMKIAjb1nU8kzzCGfqNPqfJjA==} engines: {node: '>=22'} + '@milaboratories/helpers@1.14.5': + resolution: {integrity: sha512-Kiy0g7sEmFQxDwtnmTrdJ8XdUK0IDAB5ZnPCNEbK7lPGHIa+xG3kzfeR4y44QBdrYaK0NwG63D8Fc7dlv9KItg==} + engines: {node: '>=22'} + '@milaboratories/miplots4@1.2.3': resolution: {integrity: sha512-rhoF7iRcJWKUqJMQq8y84vlkqZn4Yk7tOV8Zef+W+GqVt9UYgV1XLJu/+Wp1GcsUVtPP8Xs5CRgfA/YfV+a4Hg==} - '@milaboratories/pf-driver@1.7.14': - resolution: {integrity: sha512-JRuMmuhObyD27MtpCcimGklr2yMJ2PobcYJ2y5k+UuhQWXKllhEDlUAyv2Xw/I7Xxym8Nn2npcVdOaJvTP3bPA==} + '@milaboratories/pf-driver@1.9.1': + resolution: {integrity: sha512-i4qt1kcOcvOAHGlA7tCHce1QpsvmrCDu2vvmZz/kfHPma7YyDU7PSSr6hhuV+rf7HZTJz7z193c7wCXTFTLrzQ==} engines: {node: '>=22.19.0'} '@milaboratories/pf-plots@1.4.6': @@ -1167,18 +1034,23 @@ packages: '@milaboratories/pf-spec-driver@1.2.4': resolution: {integrity: sha512-bJdC9NLNTqbN84cnaUqZifMNboMHfiqIp9AOQ+mrBgBjHysm/fopMg9OAt3zHCY+xlnlB6z+0es/PiYLsG9kyQ==} - '@milaboratories/pf-spec-driver@1.4.16': - resolution: {integrity: sha512-x6SQVUU3fl+1fFavCSzc1DNMB08HKoo0PT5dpXJWAi6oEw77yueoe1StZJVY0Kgj1BpVhlmuuC87PJu8s4eFRw==} + '@milaboratories/pf-spec-driver@1.5.1': + resolution: {integrity: sha512-K7BuQCUXqpUOAwgJ1aIO8SSQbE8RSEVb8J5e6vIpI6PqV7Uc8LHFswTguOSgSuacpMgQmEP9jmIKyafJdJ7PDw==} + + '@milaboratories/pf-spec@1.0.1': + resolution: {integrity: sha512-UbLycglulwrFgil6n1By17YGOVHzZXeb+tAVUej6ZFOmpRtAMQYVLOXAX4FN2tc98eDTJ+YrYdZCa7qWi1gBxw==} + peerDependencies: + '@bytecodealliance/preview2-shim': ^0.20.1 - '@milaboratories/pframes-rs-node@1.1.52': - resolution: {integrity: sha512-Uu4KsQx0GiKvFASI+Cm0nMCMieUVo35mpz4j8mYUYImr7S+bVDDcHweCWrkLkSeImnOQnYHVo9RycViG6QwUQw==} + '@milaboratories/pframes-rs-node@1.1.56': + resolution: {integrity: sha512-H6qltcR+HHb2kAy0U0zP90rqmv/MZGGkdXIyf89FUZTpoHOlXG4Ahxq7wXp9vviUczci4cLl2L0Q+dL2XGcsUA==} - '@milaboratories/pframes-rs-serv@1.1.52': - resolution: {integrity: sha512-yVfcyLztgj5UAffj30se5G4MwxkIOFVWPHY1tZZ8zLhQQzx95R/e1toAqq3FLV7y6kpJovwmLusbefgKw9Ejcg==} + '@milaboratories/pframes-rs-serv@1.1.56': + resolution: {integrity: sha512-Pi0CRuvkfL+PqdgQ8im0MW5tqVjUvJ8hJbOG7v5pS45adg8tuq4TyrAoWN7un9ZWQ6KRLypUD+7eXCwhjOwADg==} hasBin: true - '@milaboratories/pframes-rs-wasip2@1.1.52': - resolution: {integrity: sha512-0rb0We6Q/aqrHJ062dayvLb4RExODZdqfsVWdzeHq23alY5TjJRMWsO9aKQpPnOuUKjAimdjlp+Ldq9TVhbEtg==} + '@milaboratories/pframes-rs-wasip2@1.1.56': + resolution: {integrity: sha512-54bhC6XCAVO09J/sqVwEKA4hhTa27BDDNdH8BE+6+LvjBVkg/qq2/f0MzdrVijrmagbr97F1zgj5wIgUqwCSoA==} '@milaboratories/pframes-rs-wasm@1.1.18': resolution: {integrity: sha512-K/Th/EGE5CBtCa1+w6ikYai/LHMi71eE5y+tObSxsHrZeOUP+J704xPaDbIV4CW2XOzS3VStY9AZCrOX4GrBWA==} @@ -1187,26 +1059,19 @@ packages: '@milaboratories/pl-model-common': 1.28.0 '@milaboratories/pl-model-middle-layer': 1.15.0 - '@milaboratories/pframes-rs-wasm@1.1.52': - resolution: {integrity: sha512-Wn8/LJxcsvWSSpdymdebWrBnmgu9wAbzvOiHCtXz7Aqt1M2T8Xp9a7CprzCYx+EvhSuAuoxbq6naxkPsQrbkvg==} - peerDependencies: - '@bytecodealliance/preview2-shim': 0.17.9 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.7 - - '@milaboratories/pl-client@3.12.0': - resolution: {integrity: sha512-uca6tbW7hy7H/Sf010/9HNQMFKwf6bJ/JONyNgvQB+hGdJZb//vjw0xoBQDun0wSAkPm+9H2I+e0q6RUfcNZng==} + '@milaboratories/pl-client@3.14.7': + resolution: {integrity: sha512-HIjPfGAYRRD0hbq5YSTkWt5XgBiv+yYtw73EjWLxui8eUEeB2ffdgsvH7IhVx2oXjUOL4p7M4i8PBnmdJ3830w==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-config@1.8.2': - resolution: {integrity: sha512-FG9rlAKDf1rwlg+3G9OG2bCKISNp6ajM27W7ODDSsWE4MSCVxhYB172UusbohY2RDmaD9GI5pDKO5O9uoHQCCA==} + '@milaboratories/pl-config@1.8.5': + resolution: {integrity: sha512-XnfYXSSkRxeImQ21k6I8y5apisvagcSgMGfEeyRxNdSGwUVJbbI8TwJk+XBEDQ4lErW8oqtLxKjFQuHJMzRUoQ==} - '@milaboratories/pl-deployments@3.0.8': - resolution: {integrity: sha512-7WvA761yI7eLCdJE19uNa/a6fLxytVrKJ/utBJ6GelZQFuA/LT12VkG6r0uAFtU8afY9Sr89078oLzZSZJR/oA==} + '@milaboratories/pl-deployments@3.0.16': + resolution: {integrity: sha512-nFAIY4rxAssVqicSzgSNVQB/ZOjHjh4uhvde8aWFqQcMZCQDhHSaVJezzxRdotS8JiY5kI4r/Y0cN+Ey1MDDog==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-drivers@1.16.3': - resolution: {integrity: sha512-/HObfG0uuFDYUd8G3qxlhrvhvTo8T5MH42+Vpr8snN+YnSHGyMXo6rw6oKRNO+h/GF+kbI5DTr9kNsQVEwyFng==} + '@milaboratories/pl-drivers@1.16.17': + resolution: {integrity: sha512-Wy2SLso+2gj3nb1qWj76/V+F2gPzdZ/IlOxEYKGyGVUyD2dyvenVBEqKw/dM1g+YjhBhFGVetimyCEISB3/QfA==} engines: {node: '>=22'} '@milaboratories/pl-error-like@1.12.10': @@ -1215,22 +1080,22 @@ packages: '@milaboratories/pl-error-like@1.12.9': resolution: {integrity: sha512-9qlfawLFO4qG656ayvVSRholhhwlfXUvKKllXpHadqbnf2zO2oCd+5J76bPaFXDz/A3T+1eokCnCX74JsqCYSw==} - '@milaboratories/pl-errors@1.4.24': - resolution: {integrity: sha512-pV0oF0zO6bwAo/llQlu4Q00uI0guPQ9Wn+coK3pwLrateKidVRH/2XhwUgTwgS8vDECBNCgtYR6E/Im+nl+FMw==} + '@milaboratories/pl-errors@1.4.36': + resolution: {integrity: sha512-WzKECX8Te6uP2DT7z2yTN6RrkiAWowYeU1rmB1Uc6sQBBWC6OjiqjiyOjvFeqxi73oXODARhLaLnqJcpG1onNA==} - '@milaboratories/pl-healthcheck@1.0.1': - resolution: {integrity: sha512-eiYd/TFm18SW4EY8vkI3c+fcPnjUu3Hd1GnPLWCN8U+dNmp/tnrzfeCgaY4xO/s0vkHNX9E7IrsQiMg2Ioz4rw==} + '@milaboratories/pl-healthcheck@1.0.5': + resolution: {integrity: sha512-ZkQti4VU2FapJBFRtZGfR5NDPXEAEFgTf/NfemypgY0aA75fFPi4/c3BpXX5K7dht+JOgHqkMrBHxKIuE2T+fA==} engines: {node: '>=22.19.0'} '@milaboratories/pl-http@1.2.4': resolution: {integrity: sha512-QKmhx+WEvJCV9dUy/SBdQk/ApaJ5ewBFgm/b+XPlS10SusAdqUUTGvK5+hq8YSuUMXlHb/dk++UtI5YlDuDl2Q==} - '@milaboratories/pl-middle-layer@1.64.41': - resolution: {integrity: sha512-6xXwmTaaImd6HQ2PZgUWGf1gXsfgEPz3zWQsmaUaPMyMusjPVynPCX2hnThqrPVf54mEMlvc3HTGaC+dofDF0g==} + '@milaboratories/pl-middle-layer@1.68.0': + resolution: {integrity: sha512-adedq3Wvi9tOc6ugZZ2DhKj9rU+qXZWY91JMXi6nrTi03iJUqiduwFY5+v0AZEu6dkbHgQXwTnSKNesSm3RbJw==} engines: {node: '>=22.19.0'} - '@milaboratories/pl-model-backend@1.4.9': - resolution: {integrity: sha512-84+Pv2RhonE/ZwR5bXipOGK4cC5V3C4vmhzIgc8TWpgLxUNsjCjoodSo3bzPcpA+URShTf4+3h4C28O/wO/MCw==} + '@milaboratories/pl-model-backend@1.4.21': + resolution: {integrity: sha512-Z2z5J8bglslgXXoi1aySi1ho+/d+ylJiuEaRw9XTNuE5iBM3EQPe0rw095pXGOinTlMpmvUcCI2wkVCraUQ1dA==} '@milaboratories/pl-model-common@1.31.1': resolution: {integrity: sha512-MLQvhXXFOykABZr8aVgzt5x0htT7ye4cvvnVy0TgOITXpct+lEmWvaVj29zirK/0VFw7wnTXDGnLwusr77NZFA==} @@ -1241,6 +1106,9 @@ packages: '@milaboratories/pl-model-common@1.46.2': resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} + '@milaboratories/pl-model-common@1.48.0': + resolution: {integrity: sha512-oCVrjFNmjQolb7YWnbSGHnp6GGVm1PhG1lnNABp9lqYjvA2ISjIPQLIo/vT2ca0mqwLrEvbuRqiqSFOg7sQ5tQ==} + '@milaboratories/pl-model-middle-layer@1.16.3': resolution: {integrity: sha512-XLZEC3POgUMNNjXr3Pudh7gx2CXZygeskxuQCyPfj4c8Fi35+kAfH9VBpNZD1koiT2n+x5QZyS3RpzcAddQTnQ==} @@ -1250,15 +1118,15 @@ packages: '@milaboratories/pl-model-middle-layer@1.30.7': resolution: {integrity: sha512-rs9x3Ron4ujR/UOdEgB8WUB1SvZ8ZAScT1Av/e4or+iiQ/CzhmK9nqtYamHVwKV+JgwIFbXQwxGvIHDVz955dQ==} - '@milaboratories/pl-model-middle-layer@1.30.9': - resolution: {integrity: sha512-fnrCjWPR0HeytWC3rnHkY3bpNk3UOuED+lwmauhYBKRaF46cV1df46clJSkGNZHS9g439SYwclW4no2X/ALaFQ==} + '@milaboratories/pl-model-middle-layer@1.32.0': + resolution: {integrity: sha512-X1iLGgOwzkw8mQ/GfTxfOTJakBJ26np85h5HqUziMbVkFL0SR7wpd7xpgUs6TKVkYNM8viAv3iA2k63Yc5SahQ==} - '@milaboratories/pl-tree@1.12.14': - resolution: {integrity: sha512-G6uUG+3b4rH0eEQP6B31unFJtxsutETJckvapqXd9u+Uo906mK4w5u6DnXcNWfhWhKx3/hp8v89CsYSDO3b7Qw==} + '@milaboratories/pl-tree@1.14.0': + resolution: {integrity: sha512-MAuqKi/d6yZbT+SOqPgOIXgA4CEtwZn0/ft5KMx+efGQ0SAfRzdqV4FG0YmnwJzznllHgamWifa0nPbsOwK76A==} engines: {node: '>=22.19.0'} - '@milaboratories/ptabler-expression-js@1.2.31': - resolution: {integrity: sha512-VB3fxuVqc0Beb+3/ge9uZ39uU8YqAhck9pTIxTpNZ5hOfMtPGJEI98YxoJQ8BuYhyyx5SM5qMU04NNs/vdk46A==} + '@milaboratories/ptabler-expression-js@1.2.38': + resolution: {integrity: sha512-z14oa/V3nkBGHxnygpfxUBU7EfHQKHh1KZgK47ouqIw7CvuOmqjViRdynY4HZNjAh3n3AGHpBbEFs/J+hQMW3g==} '@milaboratories/ptabler-expression-js@1.2.5': resolution: {integrity: sha512-pxBFYycBAVc4pVCo+qDzi2mQDQiar5D2tOnkWjSLgo13OAY+KVDYQJeD4KUt2DCocMy0Uo+lREZpU1bvVBqH3A==} @@ -1277,28 +1145,22 @@ packages: os: [darwin, linux, win32] hasBin: true - '@milaboratories/ts-builder@1.6.0': - resolution: {integrity: sha512-OlQ38jsriFf7qS5AmNIch65qQAOZBRFaLT15N/JJqe9dIytKJNS8Ff9G4vowWtFiRzyeyWRArBtgVOeAmoYuKQ==} + '@milaboratories/ts-builder@1.7.1': + resolution: {integrity: sha512-wOLIxfclYu0PXpjR6VPh382wxpI7swCwLPk0KR3KPYvGCCqLXU24kcxmYhQ3wU/WwpKAcfA+8CPdBxsqdpO37Q==} hasBin: true - '@milaboratories/ts-configs@1.3.0': - resolution: {integrity: sha512-6rZaMOJotG+v6eXoupHgPqxArpNBNl0f7sd5K+kUo1PUhPTe632eLJtEeBbFtwDGNYqL9QUacd4pT5t6oDOf0A==} + '@milaboratories/ts-configs@1.4.0': + resolution: {integrity: sha512-VzU9D+RiggsG4VYteJSBN4o8IjYae9GbZ8MofikMJQLOI1Ir9/pVyPXXGnG/TAGvmcjbK/psAiZVGSvI5MBPGg==} - '@milaboratories/ts-helpers@1.8.3': - resolution: {integrity: sha512-HK3AmNZl2fOzMHot2+ihKsOC+fluwhl5261VTn1zGS3LRpmC9bCk/po8SzsVmg79ccI5nESFTdz+BRaLsXncmQ==} + '@milaboratories/ts-helpers@1.8.6': + resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} engines: {node: '>=22.19.0'} '@milaboratories/uikit@2.11.7': resolution: {integrity: sha512-qCgxfOHUhp3E1EfuoKtY314ZvdmFa+xHVQzMVC0cFj5YLJFPlgRc3ZiiEHQGLnrUsoICZxqtICia99fcHoyJrw==} - '@milaboratories/uikit@2.15.11': - resolution: {integrity: sha512-oBQiPXpHEwg1dLptfCQNtpRrJ3stunjrTWiP5U90rAXl4c6Z/Ks7YU/fVvoqdBsoSBQ6nEcAG0Sk4sV8DVRlJQ==} - - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@milaboratories/uikit@2.15.26': + resolution: {integrity: sha512-QPzSmSUA+62pkrlGwwdoBGpDGkaFPshj0B+/eF/MAFcNy/xAfuWtfAJF9RhLIvRPmbVYOUhf7iN5MDHkwnxToA==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -1778,8 +1640,8 @@ packages: '@platforma-open/milaboratories.software-ptabler.schema@1.14.8': resolution: {integrity: sha512-wSrsHJB8zgeglndBJBUXnIrJjaeUNKbMhj9uZAFg8OOec8rZXSdoPN6vJcJr6Qf9m4dwsLCM7pplnyO6VzCfxg==} - '@platforma-open/milaboratories.software-ptabler.schema@1.15.15': - resolution: {integrity: sha512-zvPuRZgQyxjED+txJVgWHUOPeRp4TG1jOrJOtuw9WnwxFiHNjQHIB+Xe1j8f6skgMqZgRSQvEbhRvqbWjGmhKQ==} + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': + resolution: {integrity: sha512-f9vT+iSfNelgAGjaNzn1GErhmxHbjG6HtskAMoaUEbrciCG8c8i8cSCJPLu0xKNBcjM1UW+T10uD89Ckq2vkxQ==} '@platforma-open/milaboratories.software-ptabler@1.15.0': resolution: {integrity: sha512-7hbuOsIU3WsmAsBwWoVfP1UyZPBQj/Ec8KGoUBoaAq5VNjVQ7oQR3Nx4co+dIJJ9+cEB3c633Xx1DNxebb5uNQ==} @@ -1787,12 +1649,15 @@ packages: '@platforma-open/milaboratories.software-ptabler@1.15.2': resolution: {integrity: sha512-Tsb7+VldYyyp0m6kTT0Gzw67yX8WECLvgHkaCxCwjvSGpKlvjSjuFcBEPNZ7zjNoFdM7ZrtGu81xrrAVCrUuJw==} - '@platforma-open/milaboratories.software-ptabler@2.1.3': - resolution: {integrity: sha512-4cikdkdJ5WYc0Nw3IoZxzlFNKvG1qCAqSjypq5b18pIK6LBDayzhFcuw5TDd8O3bAFhoHP+3cVTmoO9XUTYMRg==} + '@platforma-open/milaboratories.software-ptabler@2.1.8': + resolution: {integrity: sha512-28dKwcKNIB/8OYH6l/li7Qa/aE2NgDVtNUmN8v6jZsLKT59ogFclz8ZrQ+OiQFzHQCLBlWBt5TdIHfHPxBaNFw==} '@platforma-open/milaboratories.software-ptexter@1.2.2': resolution: {integrity: sha512-I08YpKQ4+esLrfpVra5UJ+bznI9Zzba6OW0rKK407a1EUmanvYMVrCbM9gqnm6CHbv2vQxNGSaO8p1LoBh+9gA==} + '@platforma-open/milaboratories.software-ptexter@1.2.4': + resolution: {integrity: sha512-4ZqhqksSNVKWhEB9WwrL0rU89G+00ulzH1urYyNA4EdBVGA4mwbKbw0K/zcwce/oUYYMdRl+epXmr0w9wHyNzA==} + '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': resolution: {integrity: sha512-16BGRLIrsVW+YIaXwWLX6Nbm80PS5mQJEclHhjNbRrRTLHPaKI4RygZfBC0lLNzvHBiTXU4Qkh1+WmdovkshDg==} @@ -1817,55 +1682,42 @@ packages: '@platforma-open/milaboratories.xsv-import.model@1.0.4': resolution: {integrity: sha512-9aa7+TPpEjBKLWu7bklN89dxIKenPMKZTU7Q648hLRO9GFQ7DhIq2zJGidabPY41jYqk3swTE6Y5zoQuIynhJQ==} - '@platforma-sdk/block-tools@2.11.6': - resolution: {integrity: sha512-CyekNfqEildNeTrkjAeaWC7ah+skGMb3d/crSZSgCWACPIVQwg2oRZiJliwmJU/ylcTONPDAef7DYOtmfXsgtw==} + '@platforma-sdk/block-kind@1.1.0': + resolution: {integrity: sha512-4uh+40o6BGfQcPPhkYGCjng8EXR9qn+6i5Fuc3RJ5QGfPYfcwbxT35G2V7ALUxmsqjLZ5SGL+JcW6Lm2v0cZHA==} + + '@platforma-sdk/block-tools@2.14.3': + resolution: {integrity: sha512-CD0NPfUoXiJhl6JArC057oCXbqKkJf5HJsmrlZShnh6lKRaIQlibF8VUqbpBi9+PopsGCQ4/s5HnLR7wQoWDzg==} hasBin: true '@platforma-sdk/blocks-deps-updater@2.2.0': resolution: {integrity: sha512-p9lBxhFXM9WoRsrJO7dfkiXSK+1m63yIn1sKhBO71eMbhrLMyVYHEOeNf3w5OCdbRF5QsNhXzWuiTmFK3zHFsA==} hasBin: true - '@platforma-sdk/eslint-config@1.2.0': - resolution: {integrity: sha512-ZJJWi6NBvvTtdjSrcds8q/bXQMVLE8JouLz7OwSiEN6m4UfRe14oMSnnYHxpVr7V5aIdRoORPb929XzS5MIw2A==} - peerDependencies: - '@eslint/js': ^9.16.0 - '@stylistic/eslint-plugin': ^2.11.0 - eslint: ^9.25.1 - eslint-plugin-n: ^17.12.0 - eslint-plugin-vue: ^9.26.0 - globals: ^15.13.0 - typescript: ~5.6.3 - typescript-eslint: ^8.17.0 - '@platforma-sdk/model@1.63.1': resolution: {integrity: sha512-Ma1PEz3yZw6Jbo23BEUrZcO/8q15FU0DEtcjxObobVqXFoS0o4yCNPDxWytksiT2JL3G8F+Ic+k/wHYZ/Fbd0Q==} '@platforma-sdk/model@1.65.4': resolution: {integrity: sha512-OVZBOeN9LCQt1AuOd6a4kBrXqTRD+tUukDQxqcsqHdG1lG2y9kJ2RxqUWXVbzIEv2qD0m8owg99KNWEVG35nAQ==} - '@platforma-sdk/model@1.79.20': - resolution: {integrity: sha512-0ULETzwgo4E5rIddn/PoCAY5gSv9luDYAaSp66b8u3u1XTh43k7fgOpobu/rrfHJMiY9IGfzALDlo6jtvMLUyQ==} + '@platforma-sdk/model@1.83.0': + resolution: {integrity: sha512-uBg8vJ1BnSUKqgQMz2ADXOm/tyaYlF218p+ILqh16y3HXRH+pqQqpwP0iHp9P6tf8vThIOC2TW+5mREGCaTmBw==} - '@platforma-sdk/package-builder-lib@1.1.0': - resolution: {integrity: sha512-h/Hx4Fg+kGnX2sVPWJa48JHbSEofTnaOescTKBP1Py5wl3A68BjqKaI6yybLWSR5Ojp3tHNNlvFSAnoF2QYMMg==} - - '@platforma-sdk/package-builder@3.14.0': - resolution: {integrity: sha512-7bRducsc9NLc1zo0GRfz3RHSTejxFfmFvr21EH8NBndGaCj5KvHt2+0jmQsSI1Sl7ZCaj+zQKWWukRlsi+b/uA==} - hasBin: true + '@platforma-sdk/package-builder-lib@1.3.0': + resolution: {integrity: sha512-CdBjmNo6E1fBxKYWaXa49L/L2WLURxs2f1TAqxLIZlHRE4DZ6E1TEj3jNNKESWp+/9rwtLkTAzmTzNPrDgz+2Q==} - '@platforma-sdk/tengo-builder@4.0.11': - resolution: {integrity: sha512-c0LuiR7vtclto853Q1O+j8g109ooIZKtEl5tqRHG6dN/kk6S+J7DZHCpAjFuZ9pt3x6jF95sNaJEtP8uFs1uXw==} + '@platforma-sdk/tengo-builder@4.0.23': + resolution: {integrity: sha512-Qkxpg3wuZQOc6KbEL3pifOCdqOH91TaL3jDluVIm5mz3qpx96KO+To8AT/0nLqmvaF7yv8AP22QiyyqduAhGiw==} engines: {node: '>=22'} hasBin: true - '@platforma-sdk/test@1.79.23': - resolution: {integrity: sha512-vb5K4Rtjy5ogom3fBYpOxvKL+Nb50iURUdd1vjzN3pcQGx47omBnDr9YvNvUsRC3INhZibLzy44dUKD2la/IMw==} + '@platforma-sdk/test@1.83.2': + resolution: {integrity: sha512-tdNihBcIQX7UoOP8Cbswf68oQkc6p2rHvgTQqwT7si62CpTRoCQsXnuRFlPgx0J+DI9zB1N6VrLIQLISSQXx/g==} '@platforma-sdk/ui-vue@1.63.8': resolution: {integrity: sha512-Nv/QhhTlGE8vfw3es+FNiHxrvRBn7M4xP5JPta0qIuDgCV7s0y/yK4hJQkkYuSVmigOGLQuPJGqgAV+wJVQK+g==} - '@platforma-sdk/ui-vue@1.79.20': - resolution: {integrity: sha512-VwBG8MKV1M2KMR2PgW+o6uxJJRCFGihaRsnkzLL8HGKM/Vr9k3FY/V929B1XAhU5y9wb1g7fKNJvy9JNEq5GiQ==} + '@platforma-sdk/ui-vue@1.83.1': + resolution: {integrity: sha512-dGyhCp6cEjqIhTUAMD4+MEQ2hCthL88uJutlBUhqK1TT6p2W4GNNsFvpYPldOT2pSvPzFBN0Ams5DTpz0p6GnQ==} '@platforma-sdk/workflow-tengo@5.12.0': resolution: {integrity: sha512-l3poLNfbIXTl3CYaTMPpBWV/mRaoEWEmc6/Nl7PNPkjLAy6oAfc/4xVw+Ib3Lly7MVeMEMvuVBTz5BbpwzFaIQ==} @@ -1873,8 +1725,8 @@ packages: '@platforma-sdk/workflow-tengo@5.13.3': resolution: {integrity: sha512-is6tI3cYDxaNf48GUidG6q9XltM2AxrQmpWG3WxzXY5t5oUdizxAeYcJMN5Erl4p+zhGZGSdAJYXjBKMTZLJTA==} - '@platforma-sdk/workflow-tengo@6.6.5': - resolution: {integrity: sha512-BIY0DongPruQ7e2EMYy2b0UtO5ziGcLvr2RWgJ8ki17VKNzW3esm/RBszGHMrTYmXM0Yw7mCSasor4vH560g7A==} + '@platforma-sdk/workflow-tengo@6.8.3': + resolution: {integrity: sha512-KImCzq7v/2qgH/PIBCTipV0B/ulLxDnDOpWOO+zs56+p/B2Dg25ZevlA2LzOFVk9SWx6ilXp4ilWx3K2HbccqQ==} '@protobuf-ts/grpc-transport@2.11.1': resolution: {integrity: sha512-l6wrcFffY+tuNnuyrNCkRM8hDIsAZVLA8Mn7PKdVyYxITosYh60qW663p9kL6TWXYuDCL3oxH8ih3vLKTDyhtg==} @@ -1901,29 +1753,26 @@ packages: '@protobufjs/base64@1.1.2': resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@protobufjs/path@1.1.2': resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} '@rolldown/binding-android-arm64@1.0.0-rc.15': resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} @@ -2103,9 +1952,6 @@ packages: cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.13': - resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} - '@rolldown/pluginutils@1.0.0-rc.15': resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} @@ -2473,9 +2319,6 @@ packages: resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} engines: {node: '>=18.0.0'} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -4119,15 +3962,6 @@ packages: engines: {node: '>=0.10.0', npm: '>2.7.0'} os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - '@stylistic/eslint-plugin@2.13.0': - resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@tybys/wasm-util@0.10.3': resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} @@ -4170,9 +4004,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4204,98 +4035,149 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.59.1': - resolution: {integrity: sha512-BOziFIfE+6osHO9FoJG4zjoHUcvI7fTNBSpdAwrNH0/TLvzjsk2oo8XSSOT2HhqUyhZPfHv4UOffoJ9oEEQ7Ag==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.59.1 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.59.1': - resolution: {integrity: sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - '@typescript-eslint/project-service@8.59.1': - resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] - '@typescript-eslint/scope-manager@8.59.1': - resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] - '@typescript-eslint/tsconfig-utils@8.59.1': - resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] - '@typescript-eslint/type-utils@8.59.1': - resolution: {integrity: sha512-klWPBR2ciQHS3f++ug/mVnWKPjBUo7icEL3FAO1lhAR1Z1i5NQYZ1EannMSRYcq5qCv5wNALlXr6fksRHyYl7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] - '@typescript-eslint/types@8.59.1': - resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] - '@typescript-eslint/typescript-estree@8.59.1': - resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] - '@typescript-eslint/utils@8.59.1': - resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] - '@typescript-eslint/visitor-keys@8.59.1': - resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] - '@typescript/vfs@1.6.1': - resolution: {integrity: sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==} - peerDependencies: - typescript: '*' + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] - '@vitejs/plugin-vue@6.0.6': - resolution: {integrity: sha512-u9HHgfrq3AjXlysn0eINFnWQOJQLO9WN6VprZ8FXl7A2bYisv3Hui9Ij+7QZ41F/WYWarHjwBbXtD7dKg3uxbg==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - vue: ^3.2.25 + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] - '@vitest/coverage-istanbul@4.1.4': - resolution: {integrity: sha512-Pyi4F8RnqU6hBGiIDhS/e8gVD4FRcUvZJ2AbFiIlmIxHlEIsKyCxGOqufCECobty/dXELcN8oIH4Gms3hVOCYA==} - peerDependencies: - vitest: 4.1.4 + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] - '@vitest/expect@4.1.4': - resolution: {integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==} + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@typescript/typescript6@6.0.2': + resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} + hasBin: true + + '@typescript/vfs@1.6.1': + resolution: {integrity: sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==} peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true + typescript: '*' + + '@vitejs/plugin-vue@6.0.8': + resolution: {integrity: sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@vitest/coverage-istanbul@4.1.4': + resolution: {integrity: sha512-Pyi4F8RnqU6hBGiIDhS/e8gVD4FRcUvZJ2AbFiIlmIxHlEIsKyCxGOqufCECobty/dXELcN8oIH4Gms3hVOCYA==} + peerDependencies: + vitest: 4.1.4 + + '@vitest/expect@4.1.4': + resolution: {integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==} '@vitest/mocker@4.1.4': resolution: {integrity: sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==} @@ -4308,33 +4190,18 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.18': - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} - '@vitest/pretty-format@4.1.4': resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} - '@vitest/runner@4.0.18': - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - '@vitest/runner@4.1.4': resolution: {integrity: sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ==} - '@vitest/snapshot@4.0.18': - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} - '@vitest/snapshot@4.1.4': resolution: {integrity: sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw==} - '@vitest/spy@4.0.18': - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - '@vitest/spy@4.1.4': resolution: {integrity: sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==} - '@vitest/utils@4.0.18': - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} - '@vitest/utils@4.1.4': resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} @@ -4371,19 +4238,8 @@ packages: '@vue/compiler-ssr@3.5.25': resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - - '@vue/language-core@2.2.0': - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@3.3.5': - resolution: {integrity: sha512-UkKu5nhX89fg4VhlG/FOeI10G3cj/7radKT/cy9BT4Q9qJmJlSTAc/dP63Xqs29aypN4f39xUV6PsLNk/dcD6g==} + '@vue/language-core@3.3.10': + resolution: {integrity: sha512-CR7ByBbgPHqhxrioKPOcZBqttaozzLNwtkCzXQ+uF8gLPHnUe03srPnGpdtHD3zp+bq5iyVkZ1WNx7W564RPwg==} '@vue/reactivity@3.5.24': resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} @@ -4477,6 +4333,129 @@ packages: peerDependencies: vue: ^3.5.0 + '@yuku-codegen/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-C/0zV5IhgVdYhGJTwrY0v8dknxlhiKwtVJkMUaexu9/QvRmzlV4vfU3hZlUSgqc2BxQHntL1mCVbDq8j0FRFDw==} + cpu: [arm64] + os: [android] + + '@yuku-codegen/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-/u+REDMI4a0/lsJXTM4c53/w31OGZLOReZIyg62uhgLs0kc8NHsj/nOcxTdlQjq5gi0zhdkccD9LaLTXcdzPvw==} + cpu: [arm64] + os: [darwin] + + '@yuku-codegen/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-sMMzFOwCo4WXR+/6zIBThOocSC50iIIZZdfiIDbaLvj0Ax/rWt/iavyfEAqajyvzydLyCqR/ZItdLWSRlu1umw==} + cpu: [x64] + os: [darwin] + + '@yuku-codegen/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-MpdpKXix9P+Y1rKgjvcNeNtGjXeL1CmttNhYINrWls8kRpm4xM/oBGTmn6w7to8lAlwj5jm8q03dQPl5mRv4Qw==} + cpu: [x64] + os: [freebsd] + + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-rr1srFLlPAmC1vtxfc9C1YLDe3iH09YjfSeeIidBqKhzx1MATjOAq4mjlRUOnhr/L27MotWIYOFKwVsd5JZFOg==} + cpu: [arm] + os: [linux] + + '@yuku-codegen/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-eAufXh8qBRpiSO6ueaMDL+yyoXIGLhpUce72YbcACtZU2qhExwBIJyEtQf5kH2Ki0X2aqkSjSfog4OPtKXan3Q==} + cpu: [arm] + os: [linux] + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-gw4w6wPoHObBrdIC4duVWLmJOvpdE25j5D7yrM5mACNlK4klRz/lv8hK+ssQk9EJHBgZjSaqZIJVFgqNYbfv7A==} + cpu: [arm64] + os: [linux] + + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-L68N6Y4XkqcIaKo3Ra88JEvBEH4AHff44A4INcrxeVWZ8CZtu2tCpfVxe3hR8qQQMcvBSQlDn24KpkCKEhVvfA==} + cpu: [arm64] + os: [linux] + + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-dzyAbltJmf3Cqlb8HcFuYIf5Yn0fl1vTr3XJ9HiVNNvOlhqPSArOqtw9vI1p6/VTXTjrMLXlU+s+/kNHiIy/Cw==} + cpu: [x64] + os: [linux] + + '@yuku-codegen/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-Otw4MH3404q0Bbvl+YTdW9aoUV5vXmUw8260bWvt1XlaoIX/ceSgI4ygheRDMfBPoHt6FDayQaO9OLVUZAgkFA==} + cpu: [x64] + os: [linux] + + '@yuku-codegen/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-qo/jyrzryiBuKEsFiuWaBCBe3tRMynQ0qFWFgOEjcCMQeZfBm+wKiVEUEFXXLc7bh8YezguAWp0Mtnhq4ARNyA==} + cpu: [arm64] + os: [win32] + + '@yuku-codegen/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-D5lDsVDx6m00E6bWySlWdH72Ca4TPSaphDqB6QjU6MpuNLIJqoGoatYyq2rOmBE8Zv/kunot/o58KGL03P3eiA==} + cpu: [x64] + os: [win32] + + '@yuku-parser/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-eGKYiUDX7Y0V7tDTmg+JTVnXnjMqfXXsorZ+EDf5kxwchQ3Or1HS14MzI2fw+jFhHR85fCWt+mtX33Yao73hIQ==} + cpu: [arm64] + os: [android] + + '@yuku-parser/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-Re0RHelKLnjEURulY2/KxW+Ngb8zuNA4BRZuMwgGQNzVumT6u4U2N2hc01oeYVNVof0i7GrXE4UCNBgbpRRnjQ==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-Hn8DROtQkjlA1ACbPgj4a7eP9IuVOI504oiTwpkWPbpaDWD9KdmnVYCqW+1LfenNK/g7O9NhWGpXEdaCNX7lIA==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-bAP2OV8wRuzplX/jYxv9+vvqQT8JxyNphI8fLfXGL054Xs+4/J5u33cIm3y4rxY8rdoLmmdiJs2Tq7r7lrDRfA==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-kTYwJQQgmZeAWdDIWabiReIZMpmfLueIj1tCmjStUtFGhR1Z0qwxonKVfUC4N7h/VhGGzLZ//7O1kgt1QKqgCg==} + cpu: [arm] + os: [linux] + + '@yuku-parser/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-uL4jE8HPT2BLlxAXyD10LqgPuXa9eDa0BKpCdSANmzIJghq/2eZo3/gQNtaxPZMupWoxjYzSad9IXrwu7aYPXQ==} + cpu: [arm] + os: [linux] + + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-3gVN4pWSKZmXiNX7cU164dR9MPvesCHnlH6nPfpK+yQsCuYphjKKplcb4SnZBrhiqmXbgb2HR0c2TS0IZUPhgA==} + cpu: [arm64] + os: [linux] + + '@yuku-parser/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-S0mwfEjoLpxzXeZw802Wa4RaELsQiPtWqG6INcy8j4GtvNFtl4LCX3eGO1XLn9pyLAISLzTRyU3zUCBUPin8lg==} + cpu: [arm64] + os: [linux] + + '@yuku-parser/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-lnbWdPmerE5D1uH1G4IEZKnPzCrWCStRGrtgpSIe1RibAo5bZIjDbbbPYXmMHCEh4F+x/JaJpElh26a3r+BPbg==} + cpu: [x64] + os: [linux] + + '@yuku-parser/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-769uwndMvMzUvATWbAcEvyLHKA+DzhHSCl/obBUrRdYfRo26yxui6S8y3z7uJ+Naup7UKrDxrpK7OnQkxkl9KQ==} + cpu: [x64] + os: [linux] + + '@yuku-parser/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-mEB/9PlaAkisJ6KWGz0zvywXoU6+80dTlR2LwS7s/jcXXoU6fm2+sitBZXtqu3+Q4DcDgPxM45uWMCzPs0TSRw==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-8vNB2DP0ou61nGb8tc/qfi41gfyDXz1MHr2zqL3nR+cJ6CEbiuWV/l/a/vv151gCgiZLLAyGkQGENpozdg716w==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.8.7': + resolution: {integrity: sha512-2Z53dNxAJL6UvFoIrDZvYf3zlO8s4VJK4O2hhaB4mXVwwpX/7ajtss3cmfqKvamlNLWyt9FSWs4eoYdlbxpnHA==} + '@zip.js/zip.js@2.8.11': resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} @@ -4558,9 +4537,6 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - alien-signals@0.4.14: - resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} - alien-signals@3.2.1: resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} @@ -4613,10 +4589,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@3.0.0: - resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} - engines: {node: ^22.18.0 || >=24.11.0} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -4669,18 +4641,12 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -4747,10 +4713,6 @@ packages: resolution: {integrity: sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==} hasBin: true - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} - engines: {node: '>=18'} - chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} @@ -4874,11 +4836,6 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -4972,9 +4929,6 @@ packages: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -5084,10 +5038,6 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.21.0: - resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} - engines: {node: '>=10.13.0'} - enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -5105,11 +5055,6 @@ packages: es-toolkit@1.42.0: resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5118,34 +5063,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - - eslint-plugin-n@17.24.0: - resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.23.0' - - eslint-plugin-vue@9.33.0: - resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5158,10 +5075,6 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5176,10 +5089,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -5364,9 +5273,6 @@ packages: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - get-tsconfig@5.0.0-beta.5: resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} engines: {node: '>=20.20.0'} @@ -5391,18 +5297,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - globby@10.0.1: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} @@ -5411,9 +5309,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5425,10 +5320,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -5451,10 +5342,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - immer@11.1.4: resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==} @@ -5894,20 +5781,18 @@ packages: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - obug@2.1.3: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -6041,10 +5926,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -6079,18 +5960,10 @@ packages: resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} engines: {node: '>=16.0.0'} - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - postcss@8.5.10: resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} @@ -6116,8 +5989,8 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + protobufjs@7.6.5: + resolution: {integrity: sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==} engines: {node: '>=12.0.0'} pump@3.0.2: @@ -6143,11 +6016,11 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quickjs-emscripten-core@0.31.0: - resolution: {integrity: sha512-oQz8p0SiKDBc1TC7ZBK2fr0GoSHZKA0jZIeXxsnCyCs4y32FStzCW4d1h6E1sE0uHDMbGITbk2zhNaytaoJwXQ==} + quickjs-emscripten-core@0.32.0: + resolution: {integrity: sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg==} - quickjs-emscripten@0.31.0: - resolution: {integrity: sha512-K7Yt78aRPLjPcqv3fIuLW1jW3pvwO21B9pmFOolsjM/57ZhdVXBr51GqJpalgBlkPu9foAvhEAuuQPnvIGvLvQ==} + quickjs-emscripten@0.32.0: + resolution: {integrity: sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA==} engines: {node: '>=16.0.0'} quickselect@3.0.0: @@ -6232,20 +6105,20 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown-plugin-dts@0.26.0: - resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} - engines: {node: ^22.18.0 || >=24.11.0} + rolldown-plugin-dts@0.28.2: + resolution: {integrity: sha512-U0Ng45ZaESZ7rJtQtgCWkJYCpMgH42yIj3xv9HGAsh/dJ8XBhjI4lcqh4NOWx8+CAxoY2HWg8VYINML2yE9A5A==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20260325.1' - rolldown: ^1.0.0 - typescript: ^5.0.0 || ^6.0.0 + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 + rolldown: ^1.2.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: - '@ts-macro/tsc': - optional: true '@typescript/native-preview': optional: true + '@volar/typescript': + optional: true typescript: optional: true vue-tsc: @@ -6406,9 +6279,6 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} @@ -6478,10 +6348,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tapable@2.3.3: - resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} - engines: {node: '>=6'} - tar-fs@2.1.5: resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==} @@ -6532,10 +6398,6 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} - engines: {node: '>=14.0.0'} - tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -6554,17 +6416,6 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-declaration-location@1.0.7: - resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} - peerDependencies: - typescript: '>=4.0.0' - tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -6619,17 +6470,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typescript-eslint@8.59.1: - resolution: {integrity: sha512-xqDcFVBmlrltH64lklOVp1wYxgJr6LVdg3NamBgH2OOQDLFdTKfIZXF5PfghrnXQKXZGTQs8tr1vL7fJvq8CTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - typescript@3.9.10: resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} engines: {node: '>=4.2.0'} @@ -6655,6 +6495,16 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} @@ -6683,6 +6533,40 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unplugin-dts@1.0.3: + resolution: {integrity: sha512-/GR887wfG4r1cWyt1UZsLRuMIjsmEbGkS9yJrz+0dsToHAYUD5CTyP3JMGVLv25j9K0mJcwAVvZno/aTuSUvNg==} + peerDependencies: + '@microsoft/api-extractor': '>=7' + '@rspack/core': ^1 + '@vue/language-core': ^3.1.5 + esbuild: '*' + rolldown: '*' + rollup: '>=3' + typescript: '>=4' + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@rspack/core': + optional: true + '@vue/language-core': + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -6711,12 +6595,17 @@ packages: vite-plugin-commonjs@0.10.4: resolution: {integrity: sha512-eWQuvQKCcx0QYB5e5xfxBNjQKyrjEWZIR9UOkOV6JAgxVhtbZvCOF+FNC2ZijBJ3U3Px04ZMMyyMyFBVWIJ5+g==} - vite-plugin-dts@4.5.4: - resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} + vite-plugin-dts@5.0.3: + resolution: {integrity: sha512-gIth6NdCEHWPiiRMCK3N6C8WjvdsrtEQrmsiG8h6Ov+lFP+b07Y+wcs9H0H7n146l0PDTYK4cQN1vgeG1pMdRQ==} peerDependencies: - typescript: '*' - vite: '*' + '@microsoft/api-extractor': '>=7' + rollup: '>=3' + vite: '>=3' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + rollup: + optional: true vite: optional: true @@ -6733,46 +6622,6 @@ packages: peerDependencies: vite: '*' - vite@7.2.7: - resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@8.0.8: resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6816,42 +6665,8 @@ packages: yaml: optional: true - vitest@4.0.18: - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@4.1.4: - resolution: {integrity: sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==} + vitest@4.1.4: + resolution: {integrity: sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: @@ -6897,14 +6712,8 @@ packages: vue-component-type-helpers@2.2.12: resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} - vue-eslint-parser@9.4.3: - resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - vue-tsc@3.3.5: - resolution: {integrity: sha512-Rzh/G2MmNlMSAMTiQEjDrsb4dgB/jbtEM47rVN2NtidF1dfb/q4w4QvpQBtW5+y3y5H27Hjh7deVwk+YB02fNg==} + vue-tsc@3.3.10: + resolution: {integrity: sha512-YaDVxcW+CGtaOt3pZahMG5jYPx0hsUTxyEoPOTSMebcGUXP9lIBabQ14vfKMORb2CqqK5CxsNo/d1d+4IQwiKg==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -6928,6 +6737,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -6972,10 +6784,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -7018,6 +6826,15 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} + yuku-ast@0.8.7: + resolution: {integrity: sha512-h6+4bDfyootiMB9vckk5uKo5r5j0GHrkr17FQTDNfEsFT3DWlN9uu1HJwQwc64pgmLCI945fWM3lbTIqxjT3GQ==} + + yuku-codegen@0.8.7: + resolution: {integrity: sha512-adwDZSh8oVDzhE6Du9PwVWxcOxeV0e2EVhUuMKWfhSY4wkrDq9eqixlxFF3l/XGUV1E7UFzhpz9393MUumkyNw==} + + yuku-parser@0.8.7: + resolution: {integrity: sha512-vRD9nwt4L3aYpxNqeSC4WqLv58xrXef0Ong1Mc45CTXTIpvLafx7JO05sczmQZwdLEZvywrLOGdNC5+Rp5N1BQ==} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -7121,6 +6938,50 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 + '@aws-sdk/client-ecr-public@3.859.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/credential-provider-node': 3.859.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.858.0 + '@smithy/config-resolver': 4.1.5 + '@smithy/core': 3.9.0 + '@smithy/fetch-http-handler': 5.1.1 + '@smithy/hash-node': 4.0.5 + '@smithy/invalid-dependency': 4.0.5 + '@smithy/middleware-content-length': 4.0.5 + '@smithy/middleware-endpoint': 4.1.19 + '@smithy/middleware-retry': 4.1.20 + '@smithy/middleware-serde': 4.0.9 + '@smithy/middleware-stack': 4.0.5 + '@smithy/node-config-provider': 4.1.4 + '@smithy/node-http-handler': 4.1.1 + '@smithy/protocol-http': 5.1.3 + '@smithy/smithy-client': 4.5.0 + '@smithy/types': 4.3.2 + '@smithy/url-parser': 4.0.5 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.27 + '@smithy/util-defaults-mode-node': 4.0.27 + '@smithy/util-endpoints': 3.0.7 + '@smithy/util-middleware': 4.0.5 + '@smithy/util-retry': 4.0.7 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-s3@3.859.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 @@ -7587,15 +7448,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@8.0.0': - dependencies: - '@babel/parser': 8.0.0 - '@babel/types': 8.0.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.28.6': dependencies: '@babel/compat-data': 7.29.0 @@ -7624,12 +7476,8 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-string-parser@8.0.0': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-identifier@8.0.2': {} - '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.28.6': @@ -7641,10 +7489,6 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/parser@8.0.0': - dependencies: - '@babel/types': 8.0.0 - '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 @@ -7672,11 +7516,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@8.0.0': - dependencies: - '@babel/helper-string-parser': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 - '@bufbuild/protobuf@2.7.0': {} '@bufbuild/protoplugin@2.7.0': @@ -7934,84 +7773,6 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.12': - optional: true - - '@esbuild/android-arm64@0.25.12': - optional: true - - '@esbuild/android-arm@0.25.12': - optional: true - - '@esbuild/android-x64@0.25.12': - optional: true - - '@esbuild/darwin-arm64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/freebsd-arm64@0.25.12': - optional: true - - '@esbuild/freebsd-x64@0.25.12': - optional: true - - '@esbuild/linux-arm64@0.25.12': - optional: true - - '@esbuild/linux-arm@0.25.12': - optional: true - - '@esbuild/linux-ia32@0.25.12': - optional: true - - '@esbuild/linux-loong64@0.25.12': - optional: true - - '@esbuild/linux-mips64el@0.25.12': - optional: true - - '@esbuild/linux-ppc64@0.25.12': - optional: true - - '@esbuild/linux-riscv64@0.25.12': - optional: true - - '@esbuild/linux-s390x@0.25.12': - optional: true - - '@esbuild/linux-x64@0.25.12': - optional: true - - '@esbuild/netbsd-arm64@0.25.12': - optional: true - - '@esbuild/netbsd-x64@0.25.12': - optional: true - - '@esbuild/openbsd-arm64@0.25.12': - optional: true - - '@esbuild/openbsd-x64@0.25.12': - optional: true - - '@esbuild/openharmony-arm64@0.25.12': - optional: true - - '@esbuild/sunos-x64@0.25.12': - optional: true - - '@esbuild/win32-arm64@0.25.12': - optional: true - - '@esbuild/win32-ia32@0.25.12': - optional: true - - '@esbuild/win32-x64@0.25.12': - optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': dependencies: eslint: 9.39.4 @@ -8058,16 +7819,16 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@grpc/grpc-js@1.13.4': + '@grpc/grpc-js@1.14.4': dependencies: - '@grpc/proto-loader': 0.7.13 + '@grpc/proto-loader': 0.8.1 '@js-sdsl/ordered-map': 4.4.2 - '@grpc/proto-loader@0.7.13': + '@grpc/proto-loader@0.8.1': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.4.0 + protobufjs: 7.6.5 yargs: 17.7.2 '@humanfs/core@0.19.2': @@ -8226,23 +7987,23 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jitl/quickjs-ffi-types@0.31.0': {} + '@jitl/quickjs-ffi-types@0.32.0': {} - '@jitl/quickjs-wasmfile-debug-asyncify@0.31.0': + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-debug-sync@0.31.0': + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-release-asyncify@0.31.0': + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - '@jitl/quickjs-wasmfile-release-sync@0.31.0': + '@jitl/quickjs-wasmfile-release-sync@0.32.0': dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -8301,6 +8062,7 @@ snapshots: '@rushstack/node-core-library': 5.20.3(@types/node@25.3.2) transitivePeerDependencies: - '@types/node' + optional: true '@microsoft/api-extractor@7.57.6(@types/node@25.3.2)': dependencies: @@ -8320,6 +8082,7 @@ snapshots: typescript: 5.8.2 transitivePeerDependencies: - '@types/node' + optional: true '@microsoft/tsdoc-config@0.18.1': dependencies: @@ -8327,24 +8090,31 @@ snapshots: ajv: 8.18.0 jju: 1.4.0 resolve: 1.22.10 + optional: true + + '@microsoft/tsdoc@0.16.0': + optional: true - '@microsoft/tsdoc@0.16.0': {} + '@milaboratories/columns-collection-driver@0.2.4': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.48.0 - '@milaboratories/computable@2.9.5': + '@milaboratories/computable@2.9.8': dependencies: '@milaboratories/pl-error-like': 1.12.10 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/ts-helpers': 1.8.6 '@types/node': 24.5.2 utility-types: 3.11.0 - '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.46.2)(@platforma-sdk/model@1.79.20)(@platforma-sdk/ui-vue@1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': + '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': dependencies: '@ag-grid-community/core': 32.3.9 - '@milaboratories/helpers': 1.14.2 + '@milaboratories/helpers': 1.14.5 '@milaboratories/miplots4': 1.2.3(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0) - '@milaboratories/pf-plots': 1.4.6(@milaboratories/pl-model-common@1.46.2)(@platforma-sdk/model@1.79.20) - '@platforma-sdk/model': 1.79.20 - '@platforma-sdk/ui-vue': 1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + '@milaboratories/pf-plots': 1.4.6(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0) + '@platforma-sdk/model': 1.83.0 + '@platforma-sdk/ui-vue': 1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) '@types/d3-hierarchy': 3.1.7 '@types/d3-scale': 4.0.9 '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) @@ -8365,6 +8135,8 @@ snapshots: '@milaboratories/helpers@1.14.2': {} + '@milaboratories/helpers@1.14.5': {} + '@milaboratories/miplots4@1.2.3(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)': dependencies: '@d3fc/d3fc-chart': 5.1.9(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0) @@ -8403,14 +8175,14 @@ snapshots: - d3-scale-chromatic - supports-color - '@milaboratories/pf-driver@1.7.14(@bytecodealliance/preview2-shim@0.17.8)': + '@milaboratories/pf-driver@1.9.1(@bytecodealliance/preview2-shim@0.17.8)': dependencies: - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pframes-rs-node': 1.1.52 - '@milaboratories/pframes-rs-wasm': 1.1.52(@bytecodealliance/preview2-shim@0.17.8)(@milaboratories/pl-model-common@1.46.2)(@milaboratories/pl-model-middle-layer@1.30.9) - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-spec': 1.0.1(@bytecodealliance/preview2-shim@0.17.8) + '@milaboratories/pframes-rs-node': 1.1.56 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/ts-helpers': 1.8.6 es-toolkit: 1.42.0 lru-cache: 11.2.4 transitivePeerDependencies: @@ -8418,11 +8190,11 @@ snapshots: - encoding - supports-color - '@milaboratories/pf-plots@1.4.6(@milaboratories/pl-model-common@1.46.2)(@platforma-sdk/model@1.79.20)': + '@milaboratories/pf-plots@1.4.6(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)': dependencies: - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pl-model-common': 1.46.2 - '@platforma-sdk/model': 1.79.20 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.48.0 + '@platforma-sdk/model': 1.83.0 canonicalize: 2.1.0 lodash: 4.17.23 @@ -8436,28 +8208,33 @@ snapshots: transitivePeerDependencies: - '@bytecodealliance/preview2-shim' - '@milaboratories/pf-spec-driver@1.4.16(@bytecodealliance/preview2-shim@0.17.8)': + '@milaboratories/pf-spec-driver@1.5.1(@bytecodealliance/preview2-shim@0.17.8)': dependencies: - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pframes-rs-wasm': 1.1.52(@bytecodealliance/preview2-shim@0.17.8)(@milaboratories/pl-model-common@1.46.2)(@milaboratories/pl-model-middle-layer@1.30.9) - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-spec': 1.0.1(@bytecodealliance/preview2-shim@0.17.8) + '@milaboratories/pl-model-common': 1.48.0 '@noble/hashes': 2.2.0 transitivePeerDependencies: - '@bytecodealliance/preview2-shim' - '@milaboratories/pframes-rs-node@1.1.52': + '@milaboratories/pf-spec@1.0.1(@bytecodealliance/preview2-shim@0.17.8)': + dependencies: + '@bytecodealliance/preview2-shim': 0.17.8 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + + '@milaboratories/pframes-rs-node@1.1.56': dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@milaboratories/helpers': 1.14.2 - '@milaboratories/pframes-rs-serv': 1.1.52 + '@milaboratories/pframes-rs-serv': 1.1.56 '@milaboratories/pl-model-common': 1.46.2 ulid: 3.0.2 transitivePeerDependencies: - encoding - supports-color - '@milaboratories/pframes-rs-serv@1.1.52': + '@milaboratories/pframes-rs-serv@1.1.56': dependencies: '@milaboratories/helpers': 1.14.2 '@milaboratories/pl-model-common': 1.46.2 @@ -8466,27 +8243,20 @@ snapshots: commander: 14.0.3 selfsigned: 5.5.0 - '@milaboratories/pframes-rs-wasip2@1.1.52': {} + '@milaboratories/pframes-rs-wasip2@1.1.56': {} '@milaboratories/pframes-rs-wasm@1.1.18(@milaboratories/pl-model-common@1.31.1)(@milaboratories/pl-model-middle-layer@1.16.3)': dependencies: '@milaboratories/pl-model-common': 1.31.1 '@milaboratories/pl-model-middle-layer': 1.16.3 - '@milaboratories/pframes-rs-wasm@1.1.52(@bytecodealliance/preview2-shim@0.17.8)(@milaboratories/pl-model-common@1.46.2)(@milaboratories/pl-model-middle-layer@1.30.9)': - dependencies: - '@bytecodealliance/preview2-shim': 0.17.8 - '@milaboratories/pframes-rs-wasip2': 1.1.52 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 - - '@milaboratories/pl-client@3.12.0': + '@milaboratories/pl-client@3.14.7': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.4 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/ts-helpers': 1.8.3 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.4) + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 canonicalize: 2.1.0 @@ -8498,19 +8268,19 @@ snapshots: utility-types: 3.11.0 yaml: 2.8.1 - '@milaboratories/pl-config@1.8.2': + '@milaboratories/pl-config@1.8.5': dependencies: - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/ts-helpers': 1.8.6 upath: 2.0.1 yaml: 2.8.1 - '@milaboratories/pl-deployments@3.0.8': + '@milaboratories/pl-deployments@3.0.16': dependencies: - '@milaboratories/pl-config': 1.8.2 - '@milaboratories/pl-healthcheck': 1.0.1 + '@milaboratories/pl-config': 1.8.5 + '@milaboratories/pl-healthcheck': 1.0.5 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/ts-helpers': 1.8.6 decompress: 4.2.1 ssh2: 1.16.0 tar: 7.4.3 @@ -8519,16 +8289,16 @@ snapshots: yaml: 2.8.1 zod: 3.25.76 - '@milaboratories/pl-drivers@1.16.3': + '@milaboratories/pl-drivers@1.16.17': dependencies: - '@grpc/grpc-js': 1.13.4 - '@milaboratories/computable': 2.9.5 - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pl-client': 3.12.0 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-tree': 1.12.14 - '@milaboratories/ts-helpers': 1.8.3 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.4) + '@grpc/grpc-js': 1.14.4 + '@milaboratories/computable': 2.9.8 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-tree': 1.14.0 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/plugin': 2.11.1 '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -8552,17 +8322,17 @@ snapshots: json-stringify-safe: 5.0.1 zod: 3.23.8 - '@milaboratories/pl-errors@1.4.24': + '@milaboratories/pl-errors@1.4.36': dependencies: - '@milaboratories/pl-client': 3.12.0 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/ts-helpers': 1.8.6 zod: 3.25.76 - '@milaboratories/pl-healthcheck@1.0.1': + '@milaboratories/pl-healthcheck@1.0.5': dependencies: - '@grpc/grpc-js': 1.13.4 - '@milaboratories/ts-helpers': 1.8.3 - '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.13.4) + '@grpc/grpc-js': 1.14.4 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -8570,33 +8340,33 @@ snapshots: dependencies: undici: 7.16.0 - '@milaboratories/pl-middle-layer@1.64.41(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)': - dependencies: - '@milaboratories/computable': 2.9.5 - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pf-driver': 1.7.14(@bytecodealliance/preview2-shim@0.17.8) - '@milaboratories/pf-spec-driver': 1.4.16(@bytecodealliance/preview2-shim@0.17.8) - '@milaboratories/pframes-rs-node': 1.1.52 - '@milaboratories/pframes-rs-wasm': 1.1.52(@bytecodealliance/preview2-shim@0.17.8)(@milaboratories/pl-model-common@1.46.2)(@milaboratories/pl-model-middle-layer@1.30.9) - '@milaboratories/pl-client': 3.12.0 - '@milaboratories/pl-deployments': 3.0.8 - '@milaboratories/pl-drivers': 1.16.3 - '@milaboratories/pl-errors': 1.4.24 + '@milaboratories/pl-middle-layer@1.68.0(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)': + dependencies: + '@milaboratories/columns-collection-driver': 0.2.4 + '@milaboratories/computable': 2.9.8 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-driver': 1.9.1(@bytecodealliance/preview2-shim@0.17.8) + '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.8) + '@milaboratories/pframes-rs-node': 1.1.56 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-deployments': 3.0.16 + '@milaboratories/pl-drivers': 1.16.17 + '@milaboratories/pl-errors': 1.4.36 '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.9 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 - '@milaboratories/pl-tree': 1.12.14 + '@milaboratories/pl-model-backend': 1.4.21 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/pl-tree': 1.14.0 '@milaboratories/resolve-helper': 1.1.3 - '@milaboratories/ts-helpers': 1.8.3 - '@platforma-sdk/block-tools': 2.11.6(@types/node@25.3.2) - '@platforma-sdk/model': 1.79.20 - '@platforma-sdk/workflow-tengo': 6.6.5 + '@milaboratories/ts-helpers': 1.8.6 + '@platforma-sdk/block-tools': 2.14.3(@types/node@25.3.2) + '@platforma-sdk/model': 1.83.0 + '@platforma-sdk/workflow-tengo': 6.8.3 canonicalize: 2.1.0 denque: 2.1.0 es-toolkit: 1.42.0 lru-cache: 11.2.4 - quickjs-emscripten: 0.31.0 + quickjs-emscripten: 0.32.0 semver: 7.7.4 undici: 7.16.0 utility-types: 3.11.0 @@ -8609,9 +8379,9 @@ snapshots: - encoding - supports-color - '@milaboratories/pl-model-backend@1.4.9': + '@milaboratories/pl-model-backend@1.4.21': dependencies: - '@milaboratories/pl-client': 3.12.0 + '@milaboratories/pl-client': 3.14.7 canonicalize: 2.1.0 zod: 3.25.76 @@ -8636,6 +8406,14 @@ snapshots: canonicalize: 2.1.0 zod: 3.25.76 + '@milaboratories/pl-model-common@1.48.0': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-error-like': 1.12.10 + canonicalize: 2.1.0 + es-toolkit: 1.42.0 + zod: 3.25.76 + '@milaboratories/pl-model-middle-layer@1.16.3': dependencies: '@milaboratories/helpers': 1.14.1 @@ -8660,27 +8438,27 @@ snapshots: utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/pl-model-middle-layer@1.30.9': + '@milaboratories/pl-model-middle-layer@1.32.0': dependencies: - '@milaboratories/helpers': 1.14.2 - '@milaboratories/pl-model-common': 1.46.2 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.48.0 es-toolkit: 1.42.0 utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/pl-tree@1.12.14': + '@milaboratories/pl-tree@1.14.0': dependencies: - '@milaboratories/computable': 2.9.5 - '@milaboratories/pl-client': 3.12.0 - '@milaboratories/pl-errors': 1.4.24 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/computable': 2.9.8 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-errors': 1.4.36 + '@milaboratories/ts-helpers': 1.8.6 denque: 2.1.0 utility-types: 3.11.0 zod: 3.25.76 - '@milaboratories/ptabler-expression-js@1.2.31': + '@milaboratories/ptabler-expression-js@1.2.38': dependencies: - '@platforma-open/milaboratories.software-ptabler.schema': 1.15.15 + '@platforma-open/milaboratories.software-ptabler.schema': 1.15.22 '@milaboratories/ptabler-expression-js@1.2.5': dependencies: @@ -8696,31 +8474,35 @@ snapshots: '@milaboratories/tengo-tester@1.6.4': {} - '@milaboratories/ts-builder@1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1)': dependencies: - '@milaboratories/ts-configs': 1.3.0 - '@vitejs/plugin-vue': 6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.24(typescript@5.6.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.24(typescript@5.6.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) - typescript: 5.9.3 + typescript: 7.0.2 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.3.2)(rollup@4.53.3)(typescript@5.9.3)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -8735,33 +8517,38 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-builder@1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1)': dependencies: - '@milaboratories/ts-configs': 1.3.0 - '@vitejs/plugin-vue': 6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.6.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.6.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) - typescript: 5.9.3 + typescript: 7.0.2 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.3.2)(rollup@4.53.3)(typescript@5.9.3)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -8776,33 +8563,84 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-builder@1.6.0(@types/node@25.3.2)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1)': dependencies: - '@milaboratories/ts-configs': 1.3.0 - '@vitejs/plugin-vue': 6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3)) + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3)) commander: 15.0.0 jsonc-parser: 3.3.1 oxfmt: 0.35.0 oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.26.0(rolldown@1.1.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) - typescript: 5.9.3 + typescript: 7.0.2 + vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) + vite-plugin-commonjs: 0.10.4 + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vite-plugin-externalize-deps: 0.10.0(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vite-plugin-lib-inject-css: 2.2.2(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vue-tsc: 3.3.10(typescript@7.0.2) + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@rspack/core' + - '@types/node' + - '@typescript/native-preview' + - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' + - esbuild + - jiti + - less + - oxc-resolver + - oxlint-tsgolint + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - vue + - webpack + - yaml + + '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1)': + dependencies: + '@milaboratories/ts-configs': 1.4.0 + '@typescript/typescript6': 6.0.2 + '@vitejs/plugin-vue': 6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@7.0.2)) + commander: 15.0.0 + jsonc-parser: 3.3.1 + oxfmt: 0.35.0 + oxlint: 1.63.0 + oxlint-plugin-eslint: 1.63.0 + rolldown: 1.1.3 + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rollup-plugin-copy: 3.5.0 + rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) + typescript: 7.0.2 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vite-plugin-commonjs: 0.10.4 - vite-plugin-dts: 4.5.4(@types/node@25.3.2)(rollup@4.53.3)(typescript@5.9.3)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-externalize-deps: 0.10.0(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) vite-plugin-lib-inject-css: 2.2.2(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) - vue-tsc: 3.3.5(typescript@5.9.3) + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - - '@ts-macro/tsc' + - '@microsoft/api-extractor' + - '@rspack/core' - '@types/node' - '@typescript/native-preview' - '@vitejs/devtools' + - '@volar/typescript' + - '@vue/language-core' - esbuild - jiti - less @@ -8817,17 +8655,18 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-configs@1.3.0': {} + '@milaboratories/ts-configs@1.4.0': {} - '@milaboratories/ts-helpers@1.8.3': + '@milaboratories/ts-helpers@1.8.6': dependencies: - '@milaboratories/helpers': 1.14.2 + '@milaboratories/helpers': 1.14.5 canonicalize: 2.1.0 denque: 2.1.0 - '@milaboratories/uikit@2.11.7(typescript@5.6.3)': + '@milaboratories/uikit@2.11.7(typescript@7.0.2)': dependencies: '@milaboratories/helpers': 1.14.1 '@platforma-sdk/model': 1.63.1 @@ -8837,8 +8676,8 @@ snapshots: '@types/d3-selection': 3.0.11 '@types/sortablejs': 1.15.8 '@vue/test-utils': 2.4.6 - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) - '@vueuse/integrations': 13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@5.6.3)) + '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) + '@vueuse/integrations': 13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@7.0.2)) canonicalize: 2.1.0 d3-array: 3.2.4 d3-axis: 3.0.0 @@ -8846,7 +8685,7 @@ snapshots: d3-selection: 3.0.0 resize-observer-polyfill: 1.5.1 sortablejs: 1.15.6 - vue: 3.5.25(typescript@5.6.3) + vue: 3.5.25(typescript@7.0.2) transitivePeerDependencies: - async-validator - axios @@ -8861,10 +8700,10 @@ snapshots: - typescript - universal-cookie - '@milaboratories/uikit@2.15.11(typescript@5.6.3)': + '@milaboratories/uikit@2.15.26(typescript@5.6.3)': dependencies: - '@milaboratories/helpers': 1.14.2 - '@platforma-sdk/model': 1.79.20 + '@milaboratories/helpers': 1.14.5 + '@platforma-sdk/model': 1.83.0 '@types/d3-array': 3.2.1 '@types/d3-axis': 3.0.6 '@types/d3-scale': 4.0.9 @@ -8895,13 +8734,6 @@ snapshots: - typescript - universal-cookie - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': - dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 @@ -8909,6 +8741,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@noble/hashes@1.4.0': {} '@noble/hashes@2.2.0': {} @@ -9200,17 +9039,17 @@ snapshots: '@platforma-sdk/model': 1.63.1 zod: 3.23.8 - '@platforma-open/milaboratories.mixcr-clonotyping-2.ui@1.25.2(typescript@5.6.3)': + '@platforma-open/milaboratories.mixcr-clonotyping-2.ui@1.25.2(typescript@7.0.2)': dependencies: '@milaboratories/helpers': 1.14.1 '@platforma-open/milaboratories.mixcr-clonotyping-2.model': 1.25.2 '@platforma-sdk/model': 1.63.1 - '@platforma-sdk/ui-vue': 1.63.8(typescript@5.6.3) - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) + '@platforma-sdk/ui-vue': 1.63.8(typescript@7.0.2) + '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) ag-grid-enterprise: 34.1.2 - ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@5.6.3)) + ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@7.0.2)) utility-types: 3.11.0 - vue: 3.5.25(typescript@5.6.3) + vue: 3.5.25(typescript@7.0.2) zod: 3.23.8 transitivePeerDependencies: - '@bytecodealliance/preview2-shim' @@ -9232,10 +9071,10 @@ snapshots: '@platforma-open/milaboratories.software-mixcr': 4.7.0-347-develop '@platforma-sdk/workflow-tengo': 5.12.0 - '@platforma-open/milaboratories.mixcr-clonotyping-2@2.18.3(typescript@5.6.3)': + '@platforma-open/milaboratories.mixcr-clonotyping-2@2.18.3(typescript@7.0.2)': dependencies: '@platforma-open/milaboratories.mixcr-clonotyping-2.model': 1.25.2 - '@platforma-open/milaboratories.mixcr-clonotyping-2.ui': 1.25.2(typescript@5.6.3) + '@platforma-open/milaboratories.mixcr-clonotyping-2.ui': 1.25.2(typescript@7.0.2) '@platforma-open/milaboratories.mixcr-clonotyping-2.workflow': 3.26.1 '@platforma-sdk/model': 1.63.1 transitivePeerDependencies: @@ -9311,18 +9150,20 @@ snapshots: dependencies: '@milaboratories/pl-model-common': 1.31.2 - '@platforma-open/milaboratories.software-ptabler.schema@1.15.15': + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': dependencies: - '@milaboratories/pl-model-common': 1.46.2 + '@milaboratories/pl-model-common': 1.48.0 '@platforma-open/milaboratories.software-ptabler@1.15.0': {} '@platforma-open/milaboratories.software-ptabler@1.15.2': {} - '@platforma-open/milaboratories.software-ptabler@2.1.3': {} + '@platforma-open/milaboratories.software-ptabler@2.1.8': {} '@platforma-open/milaboratories.software-ptexter@1.2.2': {} + '@platforma-open/milaboratories.software-ptexter@1.2.4': {} + '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': {} '@platforma-open/milaboratories.software-small-binaries.hello-world@1.1.7': {} @@ -9350,20 +9191,24 @@ snapshots: '@platforma-open/milaboratories.xsv-import.model@1.0.4': dependencies: - '@platforma-sdk/model': 1.79.20 + '@platforma-sdk/model': 1.83.0 fast-json-patch: 3.1.1 - '@platforma-sdk/block-tools@2.11.6(@types/node@25.3.2)': + '@platforma-sdk/block-kind@1.1.0': {} + + '@platforma-sdk/block-tools@2.14.3(@types/node@25.3.2)': dependencies: + '@aws-sdk/client-ecr-public': 3.859.0 '@aws-sdk/client-s3': 3.859.0 '@inquirer/prompts': 7.10.1(@types/node@25.3.2) '@milaboratories/pl-http': 1.2.4 - '@milaboratories/pl-model-backend': 1.4.9 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 + '@milaboratories/pl-model-backend': 1.4.21 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 '@milaboratories/resolve-helper': 1.1.3 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/ts-helpers': 1.8.6 '@platforma-sdk/blocks-deps-updater': 2.2.0 + '@platforma-sdk/package-builder-lib': 1.3.0 canonicalize: 2.1.0 commander: 15.0.0 lru-cache: 11.2.4 @@ -9380,17 +9225,6 @@ snapshots: dependencies: yaml: 2.8.1 - '@platforma-sdk/eslint-config@1.2.0(@eslint/js@9.39.4)(@stylistic/eslint-plugin@2.13.0(eslint@9.39.4)(typescript@5.6.3))(eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@5.6.3))(eslint-plugin-vue@9.33.0(eslint@9.39.4))(eslint@9.39.4)(globals@15.15.0)(typescript-eslint@8.59.1(eslint@9.39.4)(typescript@5.6.3))(typescript@5.6.3)': - dependencies: - '@eslint/js': 9.39.4 - '@stylistic/eslint-plugin': 2.13.0(eslint@9.39.4)(typescript@5.6.3) - eslint: 9.39.4 - eslint-plugin-n: 17.24.0(eslint@9.39.4)(typescript@5.6.3) - eslint-plugin-vue: 9.33.0(eslint@9.39.4) - globals: 15.15.0 - typescript: 5.6.3 - typescript-eslint: 8.59.1(eslint@9.39.4)(typescript@5.6.3) - '@platforma-sdk/model@1.63.1': dependencies: '@milaboratories/helpers': 1.14.1 @@ -9417,20 +9251,21 @@ snapshots: utility-types: 3.11.0 zod: 3.25.76 - '@platforma-sdk/model@1.79.20': + '@platforma-sdk/model@1.83.0': dependencies: - '@milaboratories/helpers': 1.14.2 + '@milaboratories/helpers': 1.14.5 '@milaboratories/pl-error-like': 1.12.10 - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/pl-model-middle-layer': 1.30.9 - '@milaboratories/ptabler-expression-js': 1.2.31 + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/pl-model-middle-layer': 1.32.0 + '@milaboratories/ptabler-expression-js': 1.2.38 canonicalize: 2.1.0 es-toolkit: 1.42.0 fast-json-patch: 3.1.1 + lru-cache: 11.2.4 utility-types: 3.11.0 zod: 3.25.76 - '@platforma-sdk/package-builder-lib@1.1.0': + '@platforma-sdk/package-builder-lib@1.3.0': dependencies: '@aws-sdk/client-s3': 3.859.0 '@aws-sdk/lib-storage': 3.859.0(@aws-sdk/client-s3@3.859.0) @@ -9443,30 +9278,22 @@ snapshots: transitivePeerDependencies: - aws-crt - '@platforma-sdk/package-builder@3.14.0': - dependencies: - '@platforma-sdk/package-builder-lib': 1.1.0 - commander: 15.0.0 - winston: 3.17.0 - transitivePeerDependencies: - - aws-crt - - '@platforma-sdk/tengo-builder@4.0.11': + '@platforma-sdk/tengo-builder@4.0.23': dependencies: - '@milaboratories/pl-model-backend': 1.4.9 + '@milaboratories/pl-model-backend': 1.4.21 '@milaboratories/resolve-helper': 1.1.3 '@milaboratories/tengo-tester': 1.6.4 - '@milaboratories/ts-helpers': 1.8.3 + '@milaboratories/ts-helpers': 1.8.6 commander: 15.0.0 winston: 3.17.0 - '@platforma-sdk/test@1.79.23(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))': + '@platforma-sdk/test@1.83.2(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))': dependencies: - '@milaboratories/computable': 2.9.5 - '@milaboratories/pl-client': 3.12.0 - '@milaboratories/pl-middle-layer': 1.64.41(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2) - '@milaboratories/pl-tree': 1.12.14 - '@platforma-sdk/model': 1.79.20 + '@milaboratories/computable': 2.9.8 + '@milaboratories/pl-client': 3.14.7 + '@milaboratories/pl-middle-layer': 1.68.0(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2) + '@milaboratories/pl-tree': 1.14.0 + '@platforma-sdk/model': 1.83.0 '@vitest/coverage-istanbul': 4.1.4(vitest@4.1.4) vitest: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) transitivePeerDependencies: @@ -9487,25 +9314,25 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.63.8(typescript@5.6.3)': + '@platforma-sdk/ui-vue@1.63.8(typescript@7.0.2)': dependencies: '@milaboratories/pf-spec-driver': 1.2.4 '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/uikit': 2.11.7(typescript@5.6.3) + '@milaboratories/uikit': 2.11.7(typescript@7.0.2) '@platforma-sdk/model': 1.63.1 '@types/d3-format': 3.0.4 '@types/node': 24.5.2 '@types/semver': 7.7.0 - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) + '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) '@zip.js/zip.js': 2.8.11 ag-grid-enterprise: 34.1.2 - ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@5.6.3)) + ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@7.0.2)) canonicalize: 2.1.0 d3-format: 3.1.0 es-toolkit: 1.42.0 fast-json-patch: 3.1.1 lru-cache: 11.2.4 - vue: 3.5.25(typescript@5.6.3) + vue: 3.5.25(typescript@7.0.2) zod: 3.23.8 transitivePeerDependencies: - '@bytecodealliance/preview2-shim' @@ -9522,12 +9349,13 @@ snapshots: - typescript - universal-cookie - '@platforma-sdk/ui-vue@1.79.20(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': + '@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': dependencies: - '@milaboratories/pf-spec-driver': 1.4.16(@bytecodealliance/preview2-shim@0.17.8) - '@milaboratories/pl-model-common': 1.46.2 - '@milaboratories/uikit': 2.15.11(typescript@5.6.3) - '@platforma-sdk/model': 1.79.20 + '@milaboratories/columns-collection-driver': 0.2.4 + '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.8) + '@milaboratories/pl-model-common': 1.48.0 + '@milaboratories/uikit': 2.15.26(typescript@5.6.3) + '@platforma-sdk/model': 1.83.0 '@types/d3-format': 3.0.4 '@types/node': 24.5.2 '@types/semver': 7.7.0 @@ -9572,17 +9400,17 @@ snapshots: '@platforma-open/milaboratories.software-ptexter': 1.2.2 '@platforma-open/milaboratories.software-small-binaries': 2.0.4 - '@platforma-sdk/workflow-tengo@6.6.5': + '@platforma-sdk/workflow-tengo@6.8.3': dependencies: - '@milaboratories/pframes-rs-wasip2': 1.1.52 + '@milaboratories/pframes-rs-wasip2': 1.1.56 '@milaboratories/software-pframes-conv': 2.2.9 - '@platforma-open/milaboratories.software-ptabler': 2.1.3 - '@platforma-open/milaboratories.software-ptexter': 1.2.2 + '@platforma-open/milaboratories.software-ptabler': 2.1.8 + '@platforma-open/milaboratories.software-ptexter': 1.2.4 '@platforma-open/milaboratories.software-small-binaries': 2.1.1 - '@protobuf-ts/grpc-transport@2.11.1(@grpc/grpc-js@1.13.4)': + '@protobuf-ts/grpc-transport@2.11.1(@grpc/grpc-js@1.14.4)': dependencies: - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.4 '@protobuf-ts/runtime': 2.11.1 '@protobuf-ts/runtime-rpc': 2.11.1 @@ -9609,24 +9437,21 @@ snapshots: '@protobufjs/base64@1.1.2': {} - '@protobufjs/codegen@2.0.4': {} + '@protobufjs/codegen@2.0.5': {} - '@protobufjs/eventemitter@1.1.0': {} + '@protobufjs/eventemitter@1.1.1': {} - '@protobufjs/fetch@1.1.0': + '@protobufjs/fetch@1.1.1': dependencies: '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/float@1.0.2': {} - '@protobufjs/inquire@1.1.0': {} - '@protobufjs/path@1.1.2': {} '@protobufjs/pool@1.1.0': {} - '@protobufjs/utf8@1.1.0': {} + '@protobufjs/utf8@1.1.2': {} '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true @@ -9704,7 +9529,7 @@ snapshots: dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true '@rolldown/binding-wasm32-wasi@1.1.3': @@ -9726,8 +9551,6 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.1.3': optional: true - '@rolldown/pluginutils@1.0.0-rc.13': {} - '@rolldown/pluginutils@1.0.0-rc.15': {} '@rolldown/pluginutils@1.0.1': {} @@ -9818,15 +9641,18 @@ snapshots: semver: 7.5.4 optionalDependencies: '@types/node': 25.3.2 + optional: true '@rushstack/problem-matcher@0.2.1(@types/node@25.3.2)': optionalDependencies: '@types/node': 25.3.2 + optional: true '@rushstack/rig-package@0.7.2': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 + optional: true '@rushstack/terminal@0.22.3(@types/node@25.3.2)': dependencies: @@ -9835,6 +9661,7 @@ snapshots: supports-color: 8.1.1 optionalDependencies: '@types/node': 25.3.2 + optional: true '@rushstack/ts-command-line@5.3.3(@types/node@25.3.2)': dependencies: @@ -9844,6 +9671,7 @@ snapshots: string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' + optional: true '@smithy/abort-controller@4.0.5': dependencies: @@ -10181,8 +10009,6 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 - '@standard-schema/spec@1.0.0': {} - '@standard-schema/spec@1.1.0': {} '@stdlib/array-base-accessor-getter@0.2.3': {} @@ -12591,29 +12417,13 @@ snapshots: '@stdlib/utils-constructor-name': 0.2.3 '@stdlib/utils-global': 0.2.3 - '@stylistic/eslint-plugin@2.13.0(eslint@9.39.4)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - eslint: 9.39.4 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.4 - transitivePeerDependencies: - - supports-color - - typescript - - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true - '@types/argparse@1.0.38': {} + '@types/argparse@1.0.38': + optional: true '@types/chai@5.2.3': dependencies: @@ -12651,8 +12461,6 @@ snapshots: '@types/minimatch': 6.0.0 '@types/node': 25.3.2 - '@types/jsesc@2.5.1': {} - '@types/json-schema@7.0.15': {} '@types/minimatch@6.0.0': @@ -12679,96 +12487,69 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4)(typescript@5.6.3))(eslint@9.39.4)(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/type-utils': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.59.1 - eslint: 9.39.4 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true - '@typescript-eslint/parser@8.59.1(eslint@9.39.4)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3 - eslint: 9.39.4 - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true - '@typescript-eslint/project-service@8.59.1(typescript@5.6.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.6.3) - '@typescript-eslint/types': 8.59.1 - debug: 4.4.3 - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-darwin-x64@7.0.2': + optional: true - '@typescript-eslint/scope-manager@8.59.1': - dependencies: - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true - '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.6.3)': - dependencies: - typescript: 5.6.3 + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true - '@typescript-eslint/type-utils@8.59.1(eslint@9.39.4)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - debug: 4.4.3 - eslint: 9.39.4 - ts-api-utils: 2.5.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-linux-arm64@7.0.2': + optional: true - '@typescript-eslint/types@8.59.1': {} + '@typescript/typescript-linux-arm@7.0.2': + optional: true - '@typescript-eslint/typescript-estree@8.59.1(typescript@5.6.3)': - dependencies: - '@typescript-eslint/project-service': 8.59.1(typescript@5.6.3) - '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.6.3) - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.5.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-linux-loong64@7.0.2': + optional: true - '@typescript-eslint/utils@8.59.1(eslint@9.39.4)(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.6.3) - eslint: 9.39.4 - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true - '@typescript-eslint/visitor-keys@8.59.1': + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@typescript/typescript6@6.0.2': dependencies: - '@typescript-eslint/types': 8.59.1 - eslint-visitor-keys: 5.0.1 + '@typescript/old': typescript@6.0.3 '@typescript/vfs@1.6.1(typescript@5.4.5)': dependencies: @@ -12777,24 +12558,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.24(typescript@5.6.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.24(typescript@5.6.3))': dependencies: - '@rolldown/pluginutils': 1.0.0-rc.13 + '@rolldown/pluginutils': 1.0.1 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vue: 3.5.24(typescript@5.6.3) - '@vitejs/plugin-vue@6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.6.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.6.3))': dependencies: - '@rolldown/pluginutils': 1.0.0-rc.13 + '@rolldown/pluginutils': 1.0.1 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vue: 3.5.25(typescript@5.6.3) - '@vitejs/plugin-vue@6.0.6(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))': dependencies: - '@rolldown/pluginutils': 1.0.0-rc.13 + '@rolldown/pluginutils': 1.0.1 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) vue: 3.5.25(typescript@5.9.3) + '@vitejs/plugin-vue@6.0.8(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))(vue@3.5.25(typescript@7.0.2))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) + vue: 3.5.25(typescript@7.0.2) + '@vitest/coverage-istanbul@4.1.4(vitest@4.1.4)': dependencies: '@babel/core': 7.29.0 @@ -12805,21 +12592,12 @@ snapshots: istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 magicast: 0.5.2 - obug: 2.1.1 + obug: 2.1.3 tinyrainbow: 3.1.0 vitest: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.18': - dependencies: - '@standard-schema/spec': 1.0.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - chai: 6.2.1 - tinyrainbow: 3.0.3 - '@vitest/expect@4.1.4': dependencies: '@standard-schema/spec': 1.1.0 @@ -12829,14 +12607,6 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.0.18(vite@7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1))': - dependencies: - '@vitest/spy': 4.0.18 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1) - '@vitest/mocker@4.1.4(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.1.4 @@ -12845,30 +12615,15 @@ snapshots: optionalDependencies: vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) - '@vitest/pretty-format@4.0.18': - dependencies: - tinyrainbow: 3.0.3 - '@vitest/pretty-format@4.1.4': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.0.18': - dependencies: - '@vitest/utils': 4.0.18 - pathe: 2.0.3 - '@vitest/runner@4.1.4': dependencies: '@vitest/utils': 4.1.4 pathe: 2.0.3 - '@vitest/snapshot@4.0.18': - dependencies: - '@vitest/pretty-format': 4.0.18 - magic-string: 0.30.21 - pathe: 2.0.3 - '@vitest/snapshot@4.1.4': dependencies: '@vitest/pretty-format': 4.1.4 @@ -12876,15 +12631,8 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.18': {} - '@vitest/spy@4.1.4': {} - '@vitest/utils@4.0.18': - dependencies: - '@vitest/pretty-format': 4.0.18 - tinyrainbow: 3.0.3 - '@vitest/utils@4.1.4': dependencies: '@vitest/pretty-format': 4.1.4 @@ -12963,25 +12711,7 @@ snapshots: '@vue/compiler-dom': 3.5.25 '@vue/shared': 3.5.25 - '@vue/compiler-vue2@2.7.16': - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - '@vue/language-core@2.2.0(typescript@5.9.3)': - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.25 - alien-signals: 0.4.14 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.9.3 - - '@vue/language-core@3.3.5': + '@vue/language-core@3.3.10': dependencies: '@volar/language-core': 2.4.28 '@vue/compiler-dom': 3.5.25 @@ -13041,6 +12771,12 @@ snapshots: '@vue/shared': 3.5.25 vue: 3.5.25(typescript@5.9.3) + '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@7.0.2))': + dependencies: + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + vue: 3.5.25(typescript@7.0.2) + '@vue/shared@3.5.24': {} '@vue/shared@3.5.25': {} @@ -13064,6 +12800,13 @@ snapshots: '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@5.6.3)) vue: 3.5.25(typescript@5.6.3) + '@vueuse/core@13.8.0(vue@3.5.25(typescript@7.0.2))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.8.0 + '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@7.0.2)) + vue: 3.5.25(typescript@7.0.2) + '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.24(typescript@5.6.3))': dependencies: '@vueuse/core': 13.8.0(vue@3.5.24(typescript@5.6.3)) @@ -13072,11 +12815,11 @@ snapshots: optionalDependencies: sortablejs: 1.15.6 - '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@5.6.3))': + '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@7.0.2))': dependencies: - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) - '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@5.6.3)) - vue: 3.5.25(typescript@5.6.3) + '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) + '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@7.0.2)) + vue: 3.5.25(typescript@7.0.2) optionalDependencies: sortablejs: 1.15.6 @@ -13090,6 +12833,84 @@ snapshots: dependencies: vue: 3.5.25(typescript@5.6.3) + '@vueuse/shared@13.8.0(vue@3.5.25(typescript@7.0.2))': + dependencies: + vue: 3.5.25(typescript@7.0.2) + + '@yuku-codegen/binding-android-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-darwin-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.8.7': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-win32-x64@0.8.7': + optional: true + + '@yuku-parser/binding-android-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-darwin-x64@0.8.7': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.8.7': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.8.7': + optional: true + + '@yuku-parser/binding-win32-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-win32-x64@0.8.7': + optional: true + + '@yuku-toolchain/types@0.8.7': {} + '@zip.js/zip.js@2.8.11': {} abbrev@2.0.0: {} @@ -13152,15 +12973,22 @@ snapshots: ag-grid-community: 34.1.2 vue: 3.5.25(typescript@5.6.3) + ag-grid-vue3@34.1.2(vue@3.5.25(typescript@7.0.2)): + dependencies: + ag-grid-community: 34.1.2 + vue: 3.5.25(typescript@7.0.2) + agent-base@7.1.3: {} ajv-draft-04@1.0.0(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 + optional: true ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 + optional: true ajv@6.15.0: dependencies: @@ -13175,8 +13003,7 @@ snapshots: fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - - alien-signals@0.4.14: {} + optional: true alien-signals@3.2.1: {} @@ -13232,12 +13059,6 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@3.0.0: - dependencies: - '@babel/parser': 8.0.0 - estree-walker: 3.0.3 - pathe: 2.0.3 - async@3.2.6: {} b4a@1.6.7: {} @@ -13290,8 +13111,6 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - birpc@4.0.0: {} - bl@1.2.3: dependencies: readable-stream: 2.3.8 @@ -13303,8 +13122,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - boolbase@1.0.0: {} - bowser@2.11.0: {} brace-expansion@1.1.11: @@ -13371,8 +13188,6 @@ snapshots: canonicalize@2.1.0: {} - chai@6.2.1: {} - chai@6.2.2: {} chalk@4.1.2: @@ -13489,8 +13304,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cssesc@3.0.0: {} - csstype@3.1.3: {} d3-array@3.2.4: @@ -13572,8 +13385,6 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - de-indent@1.0.2: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -13638,7 +13449,8 @@ snapshots: detect-libc@2.0.3: {} - diff@8.0.3: {} + diff@8.0.3: + optional: true dir-glob@3.0.1: dependencies: @@ -13667,11 +13479,6 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.21.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.3 - enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -13685,85 +13492,10 @@ snapshots: es-toolkit@1.42.0: {} - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.39.4): - dependencies: - eslint: 9.39.4 - semver: 7.7.4 - - eslint-plugin-es-x@7.8.0(eslint@9.39.4): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@eslint-community/regexpp': 4.12.2 - eslint: 9.39.4 - eslint-compat-utils: 0.5.1(eslint@9.39.4) - - eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@5.6.3): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - enhanced-resolve: 5.21.0 - eslint: 9.39.4 - eslint-plugin-es-x: 7.8.0(eslint@9.39.4) - get-tsconfig: 4.14.0 - globals: 15.15.0 - globrex: 0.1.2 - ignore: 5.3.2 - semver: 7.7.4 - ts-declaration-location: 1.0.7(typescript@5.6.3) - transitivePeerDependencies: - - typescript - - eslint-plugin-vue@9.33.0(eslint@9.39.4): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - eslint: 9.39.4 - globals: 13.24.0 - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 6.1.2 - semver: 7.7.4 - vue-eslint-parser: 9.4.3(eslint@9.39.4) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -13773,8 +13505,6 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} - eslint@9.39.4: dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) @@ -13820,12 +13550,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - espree@9.6.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.7.0: @@ -13886,7 +13610,8 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.0: {} + fast-uri@3.1.0: + optional: true fast-xml-parser@5.2.5: dependencies: @@ -13900,9 +13625,9 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fecha@4.2.3: {} @@ -13953,6 +13678,7 @@ snapshots: graceful-fs: 4.2.11 jsonfile: 6.2.0 universalify: 2.0.1 + optional: true fs-extra@7.0.1: dependencies: @@ -13986,10 +13712,6 @@ snapshots: dependencies: pump: 3.0.2 - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@5.0.0-beta.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -14022,14 +13744,8 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} - globals@15.15.0: {} - globby@10.0.1: dependencies: '@types/glob': 7.2.0 @@ -14050,8 +13766,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - graceful-fs@4.2.11: {} has-flag@4.0.0: {} @@ -14060,8 +13774,6 @@ snapshots: dependencies: function-bind: 1.1.2 - he@1.2.0: {} - html-escaper@2.0.2: {} https-proxy-agent@7.0.6: @@ -14081,8 +13793,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - immer@11.1.4: {} import-fresh@3.3.1: @@ -14090,7 +13800,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-lazy@4.0.0: {} + import-lazy@4.0.0: + optional: true imurmurhash@0.1.4: {} @@ -14160,7 +13871,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jju@1.4.0: {} + jju@1.4.0: + optional: true js-beautify@1.15.4: dependencies: @@ -14189,7 +13901,8 @@ snapshots: json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: {} + json-schema-traverse@1.0.0: + optional: true json-stable-stringify-without-jsonify@1.0.1: {} @@ -14208,6 +13921,7 @@ snapshots: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + optional: true kdbush@4.0.2: {} @@ -14321,6 +14035,7 @@ snapshots: lru-cache@6.0.0: dependencies: yallist: 4.0.0 + optional: true magic-string@0.30.21: dependencies: @@ -14358,6 +14073,7 @@ snapshots: minimatch@10.2.1: dependencies: brace-expansion: 5.0.5 + optional: true minimatch@10.2.5: dependencies: @@ -14444,16 +14160,12 @@ snapshots: dependencies: path-key: 2.0.1 - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - object-assign@4.1.1: {} - obug@2.1.1: {} - obug@2.1.3: {} + obug@2.1.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -14610,8 +14322,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} - picomatch@4.0.4: {} pify@2.3.0: {} @@ -14647,23 +14357,12 @@ snapshots: pvutils: 1.1.5 tslib: 2.8.1 - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss@8.5.10: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - prebuild-install@7.1.3: dependencies: detect-libc: 2.0.3 @@ -14689,18 +14388,17 @@ snapshots: proto-list@1.2.4: {} - protobufjs@7.4.0: + protobufjs@7.6.5: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 + '@protobufjs/utf8': 1.1.2 '@types/node': 25.3.2 long: 5.3.2 @@ -14723,17 +14421,17 @@ snapshots: queue-tick@1.0.1: {} - quickjs-emscripten-core@0.31.0: + quickjs-emscripten-core@0.32.0: dependencies: - '@jitl/quickjs-ffi-types': 0.31.0 + '@jitl/quickjs-ffi-types': 0.32.0 - quickjs-emscripten@0.31.0: + quickjs-emscripten@0.32.0: dependencies: - '@jitl/quickjs-wasmfile-debug-asyncify': 0.31.0 - '@jitl/quickjs-wasmfile-debug-sync': 0.31.0 - '@jitl/quickjs-wasmfile-release-asyncify': 0.31.0 - '@jitl/quickjs-wasmfile-release-sync': 0.31.0 - quickjs-emscripten-core: 0.31.0 + '@jitl/quickjs-wasmfile-debug-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-debug-sync': 0.32.0 + '@jitl/quickjs-wasmfile-release-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-release-sync': 0.32.0 + quickjs-emscripten-core: 0.32.0 quickselect@3.0.0: {} @@ -14800,7 +14498,8 @@ snapshots: require-directory@2.1.1: {} - require-from-string@2.0.2: {} + require-from-string@2.0.2: + optional: true resize-observer-polyfill@1.5.1: {} @@ -14822,20 +14521,19 @@ snapshots: dependencies: glob: 10.4.5 - rolldown-plugin-dts@0.26.0(rolldown@1.1.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)): + rolldown-plugin-dts@0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)): dependencies: - '@babel/generator': 8.0.0 - '@babel/helper-validator-identifier': 8.0.2 - '@babel/parser': 8.0.0 - ast-kit: 3.0.0 - birpc: 4.0.0 dts-resolver: 3.0.0 get-tsconfig: 5.0.0-beta.5 - obug: 2.1.3 + obug: 2.1.4 rolldown: 1.1.3 + yuku-ast: 0.8.7 + yuku-codegen: 0.8.7 + yuku-parser: 0.8.7 optionalDependencies: - typescript: 5.9.3 - vue-tsc: 3.3.5(typescript@5.9.3) + '@volar/typescript': 2.4.28 + typescript: 7.0.2 + vue-tsc: 3.3.10(typescript@7.0.2) transitivePeerDependencies: - oxc-resolver @@ -14954,6 +14652,7 @@ snapshots: semver@7.5.4: dependencies: lru-cache: 6.0.0 + optional: true semver@7.6.3: {} @@ -15007,7 +14706,8 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.6.1: {} + source-map@0.6.1: + optional: true spawndamnit@3.0.1: dependencies: @@ -15028,8 +14728,6 @@ snapshots: stackback@0.0.2: {} - std-env@3.10.0: {} - std-env@4.1.0: {} stream-browserify@3.0.0: @@ -15045,7 +14743,8 @@ snapshots: optionalDependencies: bare-events: 2.5.0 - string-argv@0.3.2: {} + string-argv@0.3.2: + optional: true string-width@4.2.3: dependencies: @@ -15096,11 +14795,10 @@ snapshots: supports-color@8.1.1: dependencies: has-flag: 4.0.0 + optional: true supports-preserve-symlinks-flag@1.0.0: {} - tapable@2.3.3: {} - tar-fs@2.1.5: dependencies: chownr: 1.1.4 @@ -15163,13 +14861,11 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@2.1.0: {} - tinyrainbow@3.0.3: {} - tinyrainbow@3.1.0: {} to-buffer@1.1.1: {} @@ -15182,15 +14878,6 @@ snapshots: triple-beam@1.4.1: {} - ts-api-utils@2.5.0(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-declaration-location@1.0.7(typescript@5.6.3): - dependencies: - picomatch: 4.0.4 - typescript: 5.6.3 - tslib@1.14.1: {} tslib@2.8.1: {} @@ -15236,29 +14923,42 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - - typescript-eslint@8.59.1(eslint@9.39.4)(typescript@5.6.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4)(typescript@5.6.3))(eslint@9.39.4)(typescript@5.6.3) - '@typescript-eslint/parser': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4)(typescript@5.6.3) - eslint: 9.39.4 - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - typescript@3.9.10: {} typescript@5.4.5: {} typescript@5.6.3: {} - typescript@5.8.2: {} + typescript@5.8.2: + optional: true typescript@5.9.3: {} + typescript@6.0.3: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + ufo@1.6.3: {} ulid@3.0.2: {} @@ -15276,7 +14976,35 @@ snapshots: universalify@0.1.2: {} - universalify@2.0.1: {} + universalify@2.0.1: + optional: true + + unplugin-dts@1.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)): + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@volar/typescript': 2.4.28 + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.1.2 + magic-string: 0.30.21 + typescript: 7.0.2 + unplugin: 2.3.11 + optionalDependencies: + '@microsoft/api-extractor': 7.57.6(@types/node@25.3.2) + '@vue/language-core': 3.3.10 + rolldown: 1.1.3 + rollup: 4.53.3 + vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.4 + webpack-virtual-modules: 0.6.2 upath@2.0.1: {} @@ -15302,24 +15030,21 @@ snapshots: magic-string: 0.30.21 vite-plugin-dynamic-import: 1.6.0 - vite-plugin-dts@4.5.4(@types/node@25.3.2)(rollup@4.53.3)(typescript@5.9.3)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)): + vite-plugin-dts@5.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)): dependencies: - '@microsoft/api-extractor': 7.57.6(@types/node@25.3.2) - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - '@volar/typescript': 2.4.28 - '@vue/language-core': 2.2.0(typescript@5.9.3) - compare-versions: 6.1.1 - debug: 4.4.3 - kolorist: 1.8.0 - local-pkg: 1.1.2 - magic-string: 0.30.21 - typescript: 5.9.3 + unplugin-dts: 1.0.3(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@vue/language-core@3.3.10)(rolldown@1.1.3)(rollup@4.53.3)(typescript@7.0.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) optionalDependencies: + '@microsoft/api-extractor': 7.57.6(@types/node@25.3.2) + rollup: 4.53.3 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) transitivePeerDependencies: - - '@types/node' - - rollup + - '@rspack/core' + - '@vue/language-core' + - esbuild + - rolldown - supports-color + - typescript + - webpack vite-plugin-dynamic-import@1.6.0: dependencies: @@ -15339,20 +15064,6 @@ snapshots: picocolors: 1.1.1 vite: 8.0.8(@types/node@25.3.2)(yaml@2.8.1) - vite@7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 25.3.2 - fsevents: 2.3.3 - lightningcss: 1.32.0 - yaml: 2.8.1 - vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1): dependencies: lightningcss: 1.32.0 @@ -15365,43 +15076,6 @@ snapshots: fsevents: 2.3.3 yaml: 2.8.1 - vitest@4.0.18(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1): - dependencies: - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@25.3.2)(lightningcss@1.32.0)(yaml@2.8.1) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 25.3.2 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml - vitest@4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)): dependencies: '@vitest/expect': 4.1.4 @@ -15414,7 +15088,7 @@ snapshots: es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 - obug: 2.1.1 + obug: 2.1.4 pathe: 2.0.3 picomatch: 4.0.4 std-env: 4.1.0 @@ -15434,24 +15108,11 @@ snapshots: vue-component-type-helpers@2.2.12: {} - vue-eslint-parser@9.4.3(eslint@9.39.4): - dependencies: - debug: 4.4.3 - eslint: 9.39.4 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.7.0 - lodash: 4.17.23 - semver: 7.7.4 - transitivePeerDependencies: - - supports-color - - vue-tsc@3.3.5(typescript@5.9.3): + vue-tsc@3.3.10(typescript@7.0.2): dependencies: '@volar/typescript': 2.4.28 - '@vue/language-core': 3.3.5 - typescript: 5.9.3 + '@vue/language-core': 3.3.10 + typescript: 7.0.2 vue@3.5.24(typescript@5.6.3): dependencies: @@ -15483,8 +15144,20 @@ snapshots: optionalDependencies: typescript: 5.9.3 + vue@3.5.25(typescript@7.0.2): + dependencies: + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-sfc': 3.5.25 + '@vue/runtime-dom': 3.5.25 + '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@7.0.2)) + '@vue/shared': 3.5.25 + optionalDependencies: + typescript: 7.0.2 + webidl-conversions@3.0.1: {} + webpack-virtual-modules@0.6.2: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -15545,15 +15218,14 @@ snapshots: wrappy@1.0.2: {} - xml-name-validator@4.0.0: {} - xtend@4.0.2: {} y18n@5.0.8: {} yallist@3.1.1: {} - yallist@4.0.0: {} + yallist@4.0.0: + optional: true yallist@5.0.0: {} @@ -15580,6 +15252,45 @@ snapshots: yoctocolors-cjs@2.1.3: {} + yuku-ast@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + + yuku-codegen@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + optionalDependencies: + '@yuku-codegen/binding-android-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-x64': 0.8.7 + '@yuku-codegen/binding-freebsd-x64': 0.8.7 + '@yuku-codegen/binding-linux-arm-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm-musl': 0.8.7 + '@yuku-codegen/binding-linux-arm64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm64-musl': 0.8.7 + '@yuku-codegen/binding-linux-x64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-x64-musl': 0.8.7 + '@yuku-codegen/binding-win32-arm64': 0.8.7 + '@yuku-codegen/binding-win32-x64': 0.8.7 + + yuku-parser@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + yuku-ast: 0.8.7 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.8.7 + '@yuku-parser/binding-darwin-arm64': 0.8.7 + '@yuku-parser/binding-darwin-x64': 0.8.7 + '@yuku-parser/binding-freebsd-x64': 0.8.7 + '@yuku-parser/binding-linux-arm-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm-musl': 0.8.7 + '@yuku-parser/binding-linux-arm64-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm64-musl': 0.8.7 + '@yuku-parser/binding-linux-x64-gnu': 0.8.7 + '@yuku-parser/binding-linux-x64-musl': 0.8.7 + '@yuku-parser/binding-win32-arm64': 0.8.7 + '@yuku-parser/binding-win32-x64': 0.8.7 + zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 024a117..813abe4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,25 +1,26 @@ packages: - - workflow + - block + - kind - model - - ui - - test - software - - block + - test + - ui + - workflow catalog: "@milaboratories/graph-maker": 1.4.8 - "@milaboratories/ts-builder": 1.6.0 - "@milaboratories/ts-configs": 1.3.0 - "@platforma-sdk/workflow-tengo": 6.6.5 - "@platforma-sdk/block-tools": 2.11.6 - "@platforma-sdk/model": 1.79.20 - "@platforma-sdk/ui-vue": 1.79.20 - "@platforma-sdk/test": 1.79.23 - "@milaboratories/helpers": 1.14.2 - "@platforma-sdk/tengo-builder": 4.0.11 - "@platforma-sdk/package-builder": 3.14.0 + "@milaboratories/ts-builder": 1.7.1 + "@milaboratories/ts-configs": 1.4.0 + "@platforma-sdk/workflow-tengo": 6.8.3 + "@platforma-sdk/block-tools": 2.14.3 + "@platforma-sdk/block-kind": 1.1.0 + "@platforma-sdk/model": 1.83.0 + "@platforma-sdk/ui-vue": 1.83.1 + "@platforma-sdk/test": 1.83.2 + "@milaboratories/helpers": 1.14.5 + "@platforma-sdk/tengo-builder": 4.0.23 + "@platforma-sdk/package-builder": 3.15.0 "@platforma-sdk/blocks-deps-updater": 2.2.0 - "@platforma-sdk/eslint-config": 1.2.0 "@platforma-open/milaboratories.runenv-python-3": 1.8.2 diff --git a/software/package.json b/software/package.json index fbfdadc..abde139 100644 --- a/software/package.json +++ b/software/package.json @@ -1,15 +1,21 @@ { "name": "@platforma-open/milaboratories.sequence-properties.software", "version": "1.2.1", - "type": "module", "description": "Block Software", + "files": [ + "./dist/**/*" + ], + "type": "module", "scripts": { - "do-pack": "shx rm -f *.tgz && pl-pkg build && pnpm pack && shx mv platforma-open*.tgz package.tgz", + "do-pack": "shx rm -f *.tgz && block-tools software build && pnpm pack && shx mv platforma-open*.tgz package.tgz", "changeset": "changeset", "version-packages": "changeset version", - "build": "pl-pkg build", - "deps:export": "bash scripts/deps-export.sh", - "prepublishOnly": "pl-pkg prepublish" + "build": "block-tools software build", + "deps:export": "bash scripts/deps-export.sh" + }, + "devDependencies": { + "@platforma-open/milaboratories.runenv-python-3": "catalog:", + "@platforma-sdk/block-tools": "catalog:" }, "block-software": { "artifacts": { @@ -35,9 +41,5 @@ } } } - }, - "devDependencies": { - "@platforma-open/milaboratories.runenv-python-3": "catalog:", - "@platforma-sdk/package-builder": "catalog:" } } diff --git a/test/.oxfmtrc.json b/test/.oxfmtrc.json new file mode 100644 index 0000000..6f74854 --- /dev/null +++ b/test/.oxfmtrc.json @@ -0,0 +1,4 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md", ".test_auth.json"] +} diff --git a/test/.oxlintrc.json b/test/.oxlintrc.json new file mode 100644 index 0000000..55dd4d4 --- /dev/null +++ b/test/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-test.json"] +} diff --git a/test/eslint.config.mjs b/test/eslint.config.mjs deleted file mode 100644 index bf5dbe7..0000000 --- a/test/eslint.config.mjs +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from '@platforma-sdk/eslint-config'; - -/** @type {import('eslint').Linter.Config[]} */ -export default [...test]; diff --git a/test/package.json b/test/package.json index b7fba7c..0d61309 100644 --- a/test/package.json +++ b/test/package.json @@ -7,27 +7,29 @@ "files": [], "type": "module", "scripts": { - "test": "vitest --run --passWithNoTests", - "lint": "eslint .", - "type-check": "ts-builder type-check --target block-test" + "test": "vitest run --passWithNoTests", + "type-check": "ts-builder type-check --target block-test", + "fmt": "ts-builder format", + "check": "ts-builder check --target block-test" }, "dependencies": { - "this-block": "workspace:@platforma-open/milaboratories.sequence-properties@*", - "@platforma-open/milaboratories.sequence-properties.model": "workspace:*", + "@platforma-open/milaboratories.mixcr-clonotyping-2": "^2.18.3", + "@platforma-open/milaboratories.mixcr-clonotyping-2.model": "^1.25.2", "@platforma-open/milaboratories.samples-and-data": "^1.17.1", "@platforma-open/milaboratories.samples-and-data.model": "^2.8.0", + "@platforma-open/milaboratories.sequence-properties.model": "workspace:*", "@platforma-open/milaboratories.xsv-import.model": "^1.0.4", - "@platforma-open/milaboratories.mixcr-clonotyping-2": "^2.18.3", - "@platforma-open/milaboratories.mixcr-clonotyping-2.model": "^1.25.2", - "@platforma-sdk/model": "catalog:" + "@platforma-sdk/model": "catalog:", + "this-block": "workspace:@platforma-open/milaboratories.sequence-properties@*" }, "devDependencies": { "@milaboratories/ts-builder": "catalog:", "@milaboratories/ts-configs": "catalog:", - "@platforma-sdk/eslint-config": "catalog:", "@platforma-sdk/test": "catalog:", "eslint": "catalog:", - "vitest": "catalog:", - "typescript": "catalog:" + "vitest": "catalog:" + }, + "peerDependencies": { + "typescript": "*" } } diff --git a/test/src/fixtures/scenarios.ts b/test/src/fixtures/scenarios.ts index c571a55..d229102 100644 --- a/test/src/fixtures/scenarios.ts +++ b/test/src/fixtures/scenarios.ts @@ -17,41 +17,41 @@ * that the synthetic axis specs here actually match what MiXCR emits. */ -import type { Spec } from '@platforma-open/milaboratories.xsv-import.model'; +import type { Spec } from "@platforma-open/milaboratories.xsv-import.model"; -type Feature = 'FR1' | 'CDR1' | 'FR2' | 'CDR2' | 'FR3' | 'CDR3' | 'FR4'; +type Feature = "FR1" | "CDR1" | "FR2" | "CDR2" | "FR3" | "CDR3" | "FR4"; /** Anchor abundance column annotations matching seqprops's inputAnchorSpecs. */ const ANCHOR_ANNOTATIONS = { - 'pl7.app/isAnchor': 'true', - 'pl7.app/isAbundance': 'true', - 'pl7.app/abundance/isPrimary': 'true', - 'pl7.app/abundance/normalized': 'false', - 'pl7.app/abundance/unit': 'cells', - 'pl7.app/label': 'Number of Cells', + "pl7.app/isAnchor": "true", + "pl7.app/isAbundance": "true", + "pl7.app/abundance/isPrimary": "true", + "pl7.app/abundance/normalized": "false", + "pl7.app/abundance/unit": "cells", + "pl7.app/label": "Number of Cells", }; /** Build a per-region VDJ sequence column spec (matches MiXCR's emission shape). */ function vdjSequenceColumn(args: { column: string; - chain: 'A' | 'B'; - feature: Feature | 'FR4InFrame'; - receptor: 'IG' | 'TCRAB' | 'TCRGD'; -}): Spec['columns'][number] { + chain: "A" | "B"; + feature: Feature | "FR4InFrame"; + receptor: "IG" | "TCRAB" | "TCRGD"; +}): Spec["columns"][number] { return { column: args.column, spec: { - name: 'pl7.app/vdj/sequence', - valueType: 'String', + name: "pl7.app/vdj/sequence", + valueType: "String", domain: { - 'pl7.app/alphabet': 'aminoacid', - 'pl7.app/vdj/feature': args.feature, - 'pl7.app/vdj/scClonotypeChain': args.chain, - 'pl7.app/vdj/scClonotypeChain/index': 'primary', - 'pl7.app/vdj/receptor': args.receptor, + "pl7.app/alphabet": "aminoacid", + "pl7.app/vdj/feature": args.feature, + "pl7.app/vdj/scClonotypeChain": args.chain, + "pl7.app/vdj/scClonotypeChain/index": "primary", + "pl7.app/vdj/receptor": args.receptor, }, annotations: { - 'pl7.app/label': `${args.chain} ${args.feature} aa Primary`, + "pl7.app/label": `${args.chain} ${args.feature} aa Primary`, }, }, }; @@ -60,73 +60,73 @@ function vdjSequenceColumn(args: { /** Peptide mode: peptide.tsv. Drives detection via variantKey + extractionRunId. */ export function peptideScenario() { return { - tsv: './assets/peptide.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/peptide.tsv", + fileExt: "tsv" as const, spec: { axes: [ { - column: 'sampleId', - spec: { name: 'pl7.app/sampleId', type: 'String' as const }, + column: "sampleId", + spec: { name: "pl7.app/sampleId", type: "String" as const }, }, { - column: 'variantKey', + column: "variantKey", spec: { - name: 'pl7.app/variantKey', - type: 'String' as const, - domain: { 'pl7.app/peptide/extractionRunId': 'synthetic-pep-run' }, - annotations: { 'pl7.app/label': 'Variant ID' }, + name: "pl7.app/variantKey", + type: "String" as const, + domain: { "pl7.app/peptide/extractionRunId": "synthetic-pep-run" }, + annotations: { "pl7.app/label": "Variant ID" }, }, }, ], columns: [ { - column: 'cellCount', + column: "cellCount", spec: { - name: 'pl7.app/abundance', - valueType: 'Long' as const, + name: "pl7.app/abundance", + valueType: "Long" as const, annotations: ANCHOR_ANNOTATIONS, }, }, { - column: 'sequence', + column: "sequence", spec: { - name: 'pl7.app/sequence', - valueType: 'String' as const, + name: "pl7.app/sequence", + valueType: "String" as const, domain: { - 'pl7.app/feature': 'peptide', - 'pl7.app/alphabet': 'aminoacid', + "pl7.app/feature": "peptide", + "pl7.app/alphabet": "aminoacid", }, - annotations: { 'pl7.app/label': 'Peptide sequence' }, + annotations: { "pl7.app/label": "Peptide sequence" }, }, }, ], - storageFormat: 'Binary' as const, + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; } /** Build the column spec list for a VDJ scenario (paired chain) with a chosen receptor. */ -function vdjColumnsFull(receptor: 'IG' | 'TCRAB' | 'TCRGD'): Spec['columns'] { +function vdjColumnsFull(receptor: "IG" | "TCRAB" | "TCRGD"): Spec["columns"] { // FR4 is emitted by MiXCR as 'FR4InFrame'. seqprops normalises both back // to 'FR4' in REQUIRED_FEATURES. We use 'FR4InFrame' here to mirror the // real producer and keep this deviation covered by the synthetic path. - const featuresOnDisk = ['FR1', 'CDR1', 'FR2', 'CDR2', 'FR3', 'CDR3', 'FR4InFrame'] as const; - const cols: Spec['columns'] = [ + const featuresOnDisk = ["FR1", "CDR1", "FR2", "CDR2", "FR3", "CDR3", "FR4InFrame"] as const; + const cols: Spec["columns"] = [ { - column: 'cellCount', + column: "cellCount", spec: { - name: 'pl7.app/vdj/uniqueCellCount', - valueType: 'Long' as const, + name: "pl7.app/vdj/uniqueCellCount", + valueType: "Long" as const, annotations: ANCHOR_ANNOTATIONS, }, }, ]; - for (const chain of ['A', 'B'] as const) { + for (const chain of ["A", "B"] as const) { for (const f of featuresOnDisk) { cols.push( vdjSequenceColumn({ - column: `${chain}_${f.replace('InFrame', '')}`, + column: `${chain}_${f.replace("InFrame", "")}`, chain, feature: f, receptor, @@ -138,22 +138,22 @@ function vdjColumnsFull(receptor: 'IG' | 'TCRAB' | 'TCRGD'): Spec['columns'] { } /** Common axes for sc clonotype-keyed scenarios. */ -function scAxes(receptor: 'IG' | 'TCRAB' | 'TCRGD'): Spec['axes'] { +function scAxes(receptor: "IG" | "TCRAB" | "TCRGD"): Spec["axes"] { return [ { - column: 'sampleId', - spec: { name: 'pl7.app/sampleId', type: 'String' as const }, + column: "sampleId", + spec: { name: "pl7.app/sampleId", type: "String" as const }, }, { - column: 'scClonotypeKey', + column: "scClonotypeKey", spec: { - name: 'pl7.app/vdj/scClonotypeKey', - type: 'String' as const, + name: "pl7.app/vdj/scClonotypeKey", + type: "String" as const, domain: { - 'pl7.app/vdj/clonotypingRunId': 'synthetic-vdj-run', - 'pl7.app/vdj/receptor': receptor, + "pl7.app/vdj/clonotypingRunId": "synthetic-vdj-run", + "pl7.app/vdj/receptor": receptor, }, - annotations: { 'pl7.app/label': 'Clonotype ID' }, + annotations: { "pl7.app/label": "Clonotype ID" }, }, }, ]; @@ -162,12 +162,12 @@ function scAxes(receptor: 'IG' | 'TCRAB' | 'TCRGD'): Spec['axes'] { /** sc IG, full 7-region paired coverage. Drives full_chain + Fv path. */ export function scIgFullScenario() { return { - tsv: './assets/sc-ig-full.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/sc-ig-full.tsv", + fileExt: "tsv" as const, spec: { - axes: scAxes('IG'), - columns: vdjColumnsFull('IG'), - storageFormat: 'Binary' as const, + axes: scAxes("IG"), + columns: vdjColumnsFull("IG"), + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; @@ -176,23 +176,23 @@ export function scIgFullScenario() { /** sc IG, CDR3-only. Drives the R11a info-banner path. */ export function scIgCdr3OnlyScenario() { return { - tsv: './assets/sc-ig-cdr3-only.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/sc-ig-cdr3-only.tsv", + fileExt: "tsv" as const, spec: { - axes: scAxes('IG'), + axes: scAxes("IG"), columns: [ { - column: 'cellCount', + column: "cellCount", spec: { - name: 'pl7.app/vdj/uniqueCellCount', - valueType: 'Long' as const, + name: "pl7.app/vdj/uniqueCellCount", + valueType: "Long" as const, annotations: ANCHOR_ANNOTATIONS, }, }, - vdjSequenceColumn({ column: 'A_CDR3', chain: 'A', feature: 'CDR3', receptor: 'IG' }), - vdjSequenceColumn({ column: 'B_CDR3', chain: 'B', feature: 'CDR3', receptor: 'IG' }), + vdjSequenceColumn({ column: "A_CDR3", chain: "A", feature: "CDR3", receptor: "IG" }), + vdjSequenceColumn({ column: "B_CDR3", chain: "B", feature: "CDR3", receptor: "IG" }), ], - storageFormat: 'Binary' as const, + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; @@ -201,12 +201,12 @@ export function scIgCdr3OnlyScenario() { /** sc TCRαβ, full coverage. Asserts no Fv emission for TCR receptor. */ export function scTcrAbFullScenario() { return { - tsv: './assets/sc-tcrab-full.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/sc-tcrab-full.tsv", + fileExt: "tsv" as const, spec: { - axes: scAxes('TCRAB'), - columns: vdjColumnsFull('TCRAB'), - storageFormat: 'Binary' as const, + axes: scAxes("TCRAB"), + columns: vdjColumnsFull("TCRAB"), + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; @@ -220,68 +220,70 @@ export function scTcrAbFullScenario() { */ function bulkVdjSequenceColumn( column: string, - feature: Feature | 'FR4InFrame', -): Spec['columns'][number] { + feature: Feature | "FR4InFrame", +): Spec["columns"][number] { return { column, spec: { - name: 'pl7.app/vdj/sequence', - valueType: 'String', + name: "pl7.app/vdj/sequence", + valueType: "String", domain: { - 'pl7.app/alphabet': 'aminoacid', - 'pl7.app/vdj/feature': feature, + "pl7.app/alphabet": "aminoacid", + "pl7.app/vdj/feature": feature, }, annotations: { - 'pl7.app/label': `${feature} aa`, + "pl7.app/label": `${feature} aa`, }, }, }; } /** Common axes for bulk clonotypeKey-keyed scenarios. */ -function bulkAxes(chain: 'IGHeavy' | 'IGLight' | 'TCRAlpha' | 'TCRBeta' | 'TCRGamma' | 'TCRDelta'): Spec['axes'] { +function bulkAxes( + chain: "IGHeavy" | "IGLight" | "TCRAlpha" | "TCRBeta" | "TCRGamma" | "TCRDelta", +): Spec["axes"] { return [ { - column: 'sampleId', - spec: { name: 'pl7.app/sampleId', type: 'String' as const }, + column: "sampleId", + spec: { name: "pl7.app/sampleId", type: "String" as const }, }, { - column: 'clonotypeKey', + column: "clonotypeKey", spec: { - name: 'pl7.app/vdj/clonotypeKey', - type: 'String' as const, + name: "pl7.app/vdj/clonotypeKey", + type: "String" as const, // Mirrors bulk MiXCR's emission: chain on the axis, no receptor key. // SD-008 derives the receptor from this chain. domain: { - 'pl7.app/vdj/clonotypingRunId': 'synthetic-bulk-run', - 'pl7.app/vdj/chain': chain, + "pl7.app/vdj/clonotypingRunId": "synthetic-bulk-run", + "pl7.app/vdj/chain": chain, }, - annotations: { 'pl7.app/label': 'Clonotype ID' }, + annotations: { "pl7.app/label": "Clonotype ID" }, }, }, ]; } /** Build the column spec list for a bulk scenario (single chain) with full coverage. */ -function bulkVdjColumnsFull(): Spec['columns'] { +function bulkVdjColumnsFull(): Spec["columns"] { // Same FR4InFrame normalisation as sc; bulk emits a single chain so no chain prefix. - const featuresOnDisk = ['FR1', 'CDR1', 'FR2', 'CDR2', 'FR3', 'CDR3', 'FR4InFrame'] as const; - const cols: Spec['columns'] = [ + const featuresOnDisk = ["FR1", "CDR1", "FR2", "CDR2", "FR3", "CDR3", "FR4InFrame"] as const; + const cols: Spec["columns"] = [ { - column: 'umiCount', + column: "umiCount", spec: { - name: 'pl7.app/vdj/uniqueMoleculeCount', - valueType: 'Long' as const, + name: "pl7.app/vdj/uniqueMoleculeCount", + valueType: "Long" as const, annotations: { ...ANCHOR_ANNOTATIONS, - 'pl7.app/abundance/unit': 'umis', - 'pl7.app/label': 'Number of UMIs', + "pl7.app/abundance/unit": "umis", + "pl7.app/label": "Number of UMIs", }, }, }, ]; for (const f of featuresOnDisk) { - cols.push(bulkVdjSequenceColumn(f.replace('InFrame', ''), f)); + cols.push(bulkVdjSequenceColumn(f.replace("InFrame", ""), f)); } return cols; } @@ -289,12 +291,12 @@ function bulkVdjColumnsFull(): Spec['columns'] { /** Bulk MiXCR IGHeavy, full coverage. SD-008 derives receptor=IG from the axis chain. */ export function bulkIgHeavyScenario() { return { - tsv: './assets/bulk-ig-heavy.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/bulk-ig-heavy.tsv", + fileExt: "tsv" as const, spec: { - axes: bulkAxes('IGHeavy'), + axes: bulkAxes("IGHeavy"), columns: bulkVdjColumnsFull(), - storageFormat: 'Binary' as const, + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; @@ -303,12 +305,12 @@ export function bulkIgHeavyScenario() { /** Bulk MiXCR TCRAlpha, full coverage. SD-008 derives receptor=TCRAB from the axis chain. */ export function bulkTcrAlphaScenario() { return { - tsv: './assets/bulk-tcr-alpha.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/bulk-tcr-alpha.tsv", + fileExt: "tsv" as const, spec: { - axes: bulkAxes('TCRAlpha'), + axes: bulkAxes("TCRAlpha"), columns: bulkVdjColumnsFull(), - storageFormat: 'Binary' as const, + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; @@ -317,38 +319,38 @@ export function bulkTcrAlphaScenario() { /** Bogus axis name — drives the R1a panic path. */ export function bogusAxisScenario() { return { - tsv: './assets/bogus-axis.tsv', - fileExt: 'tsv' as const, + tsv: "./assets/bogus-axis.tsv", + fileExt: "tsv" as const, spec: { axes: [ { - column: 'sampleId', - spec: { name: 'pl7.app/sampleId', type: 'String' as const }, + column: "sampleId", + spec: { name: "pl7.app/sampleId", type: "String" as const }, }, { - column: 'mysteryKey', - spec: { name: 'pl7.app/notReal/mysteryKey', type: 'String' as const }, + column: "mysteryKey", + spec: { name: "pl7.app/notReal/mysteryKey", type: "String" as const }, }, ], columns: [ { - column: 'cellCount', + column: "cellCount", spec: { - name: 'pl7.app/abundance', - valueType: 'Long' as const, + name: "pl7.app/abundance", + valueType: "Long" as const, annotations: ANCHOR_ANNOTATIONS, }, }, { - column: 'sequence', + column: "sequence", spec: { - name: 'pl7.app/sequence', - valueType: 'String' as const, - domain: { 'pl7.app/alphabet': 'aminoacid' }, + name: "pl7.app/sequence", + valueType: "String" as const, + domain: { "pl7.app/alphabet": "aminoacid" }, }, }, ], - storageFormat: 'Binary' as const, + storageFormat: "Binary" as const, partitionKeyLength: 0, } satisfies Spec, }; diff --git a/test/src/helpers.ts b/test/src/helpers.ts index afd03ef..50cea01 100644 --- a/test/src/helpers.ts +++ b/test/src/helpers.ts @@ -26,15 +26,15 @@ * multiple assertions per test is the standard cost optimization. */ -import { blockSpec as samplesAndDataBlockSpec } from '@platforma-open/milaboratories.samples-and-data'; -import type { BlockData as SamplesAndDataBlockData } from '@platforma-open/milaboratories.samples-and-data.model'; -import { blockSpec as mixcrClonotypingBlockSpec } from '@platforma-open/milaboratories.mixcr-clonotyping-2'; -import type { BlockData as MixcrClonotypingBlockData } from '@platforma-open/milaboratories.mixcr-clonotyping-2.model'; -import { blockSpec as seqPropsBlockSpec } from 'this-block'; -import { uniquePlId } from '@platforma-sdk/model'; -import type { ML, RawHelpers } from '@platforma-sdk/test'; -import { awaitStableState } from '@platforma-sdk/test'; -import type { expect as vitestExpect } from 'vitest'; +import { blockSpec as samplesAndDataBlockSpec } from "@platforma-open/milaboratories.samples-and-data"; +import type { BlockData as SamplesAndDataBlockData } from "@platforma-open/milaboratories.samples-and-data.model"; +import { blockSpec as mixcrClonotypingBlockSpec } from "@platforma-open/milaboratories.mixcr-clonotyping-2"; +import type { BlockData as MixcrClonotypingBlockData } from "@platforma-open/milaboratories.mixcr-clonotyping-2.model"; +import { blockSpec as seqPropsBlockSpec } from "this-block"; +import { uniquePlId } from "@platforma-sdk/model"; +import type { ML, RawHelpers } from "@platforma-sdk/test"; +import { awaitStableState } from "@platforma-sdk/test"; +import type { expect as vitestExpect } from "vitest"; export type TestCtx = { rawPrj: ML.Project; @@ -46,7 +46,10 @@ export type TestCtx = { /** * Add the sequence-properties block under test. */ -export async function addSequenceProperties(ctx: TestCtx, label = 'Sequence Properties'): Promise { +export async function addSequenceProperties( + ctx: TestCtx, + label = "Sequence Properties", +): Promise { return await ctx.rawPrj.addBlock(label, seqPropsBlockSpec); } @@ -67,19 +70,19 @@ async function configureSamplesAndData( const r2Handle = await helpers.getLocalFileHandle(opts.r2Path); await rawPrj.mutateBlockStorage(sndBlockId, { - operation: 'update-block-data', + operation: "update-block-data", value: { metadata: [], sampleIds: [sample1Id], - sampleLabelColumnLabel: 'Sample Name', - sampleLabels: { [sample1Id]: 'Sample 1' }, + sampleLabelColumnLabel: "Sample Name", + sampleLabels: { [sample1Id]: "Sample 1" }, datasets: [ { id: dataset1Id, - label: 'Dataset 1', + label: "Dataset 1", content: { - type: 'Fastq', - readIndices: ['R1', 'R2'], + type: "Fastq", + readIndices: ["R1", "R2"], gzipped: true, data: { [sample1Id]: { R1: r1Handle, R2: r2Handle } }, }, @@ -109,15 +112,12 @@ async function configureMixcrClonotyping( // After samples-and-data Done, clonotyping's inputOptions populates from // the result pool. Wait for it to stabilize, then take the first option. type ClonotypingInputOption = { ref: { __isRef: true; blockId: string; name: string } }; - const clonotypingState = await awaitStableState( - rawPrj.getBlockState(clonotypingBlockId), - 25000, - ); + const clonotypingState = await awaitStableState(rawPrj.getBlockState(clonotypingBlockId), 25000); const inputOptions = ( clonotypingState.outputs as Record ).inputOptions?.value; if (!inputOptions || inputOptions.length === 0) { - throw new Error('mixcr-clonotyping-2 inputOptions did not populate after samples-and-data'); + throw new Error("mixcr-clonotyping-2 inputOptions did not populate after samples-and-data"); } // mixcr-clonotyping-2@2.18 pins @platforma-sdk/model@1.63.1, whose @@ -126,7 +126,7 @@ async function configureMixcrClonotyping( // structurally close, but the version literal differs and TS treats // them as incompatible. Constructing the v5 literal directly avoids // the cross-version helper and keeps the type fully checked. - const tableState: MixcrClonotypingBlockData['tableState'] = { + const tableState: MixcrClonotypingBlockData["tableState"] = { version: 5, stateCache: [], pTableParams: { @@ -138,15 +138,15 @@ async function configureMixcrClonotyping( }; await rawPrj.mutateBlockStorage(clonotypingBlockId, { - operation: 'update-block-data', + operation: "update-block-data", value: { - defaultBlockLabel: '', - customBlockLabel: '', + defaultBlockLabel: "", + customBlockLabel: "", input: inputOptions[0].ref, - preset: { type: 'name', name: preset }, + preset: { type: "name", name: preset }, chains, tableState, - runMode: 'full', + runMode: "full", } satisfies MixcrClonotypingBlockData, }); } @@ -165,12 +165,12 @@ export async function setupMixcrAnchor( r2Path: string; }, ): Promise<{ sndBlockId: string; clonotypingBlockId: string; seqPropsBlockId: string }> { - const preset = opts.preset ?? '10x-sc-xcr-vdj-rhapsody'; - const chains = opts.chains ?? ['IGHeavy', 'IGLight']; + const preset = opts.preset ?? "10x-sc-xcr-vdj-rhapsody"; + const chains = opts.chains ?? ["IGHeavy", "IGLight"]; const { rawPrj, helpers } = ctx; - const sndBlockId = await rawPrj.addBlock('Samples & Data', samplesAndDataBlockSpec); - const clonotypingBlockId = await rawPrj.addBlock('MiXCR Clonotyping', mixcrClonotypingBlockSpec); + const sndBlockId = await rawPrj.addBlock("Samples & Data", samplesAndDataBlockSpec); + const clonotypingBlockId = await rawPrj.addBlock("MiXCR Clonotyping", mixcrClonotypingBlockSpec); const seqPropsBlockId = await addSequenceProperties(ctx); await configureSamplesAndData(ctx, sndBlockId, opts); diff --git a/test/src/wf.test.ts b/test/src/wf.test.ts index 4719d14..0d7965f 100644 --- a/test/src/wf.test.ts +++ b/test/src/wf.test.ts @@ -25,12 +25,18 @@ * @platforma-open/milaboratories.sequence-properties.test test` */ -import type { platforma } from '@platforma-open/milaboratories.sequence-properties.model'; -import type { InferBlockState } from '@platforma-sdk/model'; -import { wrapOutputs } from '@platforma-sdk/model'; -import { awaitStableState, blockTest } from '@platforma-sdk/test'; -import { blockSpec as seqPropsBlockSpec } from 'this-block'; -import { describe, it } from 'vitest'; +// The unimplemented scenarios below are kept as `it.todo` on purpose: each one +// carries the spec rule it will assert, so the gap stays visible in the suite +// rather than only in a comment. oxlint's vitest(warn-todo) rule wants them +// gone, and the test scope runs with --deny-warnings. +/* oxlint-disable vitest/warn-todo */ + +import type { platforma } from "@platforma-open/milaboratories.sequence-properties.model"; +import type { InferBlockState } from "@platforma-sdk/model"; +import { wrapOutputs } from "@platforma-sdk/model"; +import { awaitStableState, blockTest } from "@platforma-sdk/test"; +import { blockSpec as seqPropsBlockSpec } from "this-block"; +import { describe, it } from "vitest"; // --------------------------------------------------------------------------- // Cheap idle-state smoke (model + UI baseline) @@ -41,8 +47,8 @@ import { describe, it } from 'vitest'; // throws on missing inputAnchor (caught by the runtime) — observable as // argsValid === false / no run. This is the universal smoke test — // confirms test scaffolding + backend connection + dev-block load all work. -blockTest('empty inputs', { timeout: 30000 }, async ({ rawPrj, expect }) => { - const blockId = await rawPrj.addBlock('Sequence Properties', seqPropsBlockSpec); +blockTest("empty inputs", { timeout: 30000 }, async ({ rawPrj, expect }) => { + const blockId = await rawPrj.addBlock("Sequence Properties", seqPropsBlockSpec); const stableState = (await awaitStableState( rawPrj.getBlockState(blockId), 20000, @@ -61,13 +67,13 @@ blockTest('empty inputs', { timeout: 30000 }, async ({ rawPrj, expect }) => { // Modality detection (R1, R1a, R1b) // --------------------------------------------------------------------------- -describe('modality detection', () => { - it.todo('detects peptide mode from variantKey + extractionRunId domain'); // R1, peptideScenario - it.todo('detects antibody/TCR single-cell from vdj/scClonotypeKey axis'); // R1, scIgFullScenario - it.todo('detects antibody/TCR legacy bulk from vdj/cloneId axis'); // R1 - it.todo('detects antibody/TCR legacy bulk from vdj/clonotypeKey axis'); // R1 - it.todo('panics with R1a message when input has no recognised sequence key'); // R1a, bogusAxisScenario - it.todo('emits output PColumns with input entity axis verbatim'); // R1b +describe("modality detection", () => { + it.todo("detects peptide mode from variantKey + extractionRunId domain"); // R1, peptideScenario + it.todo("detects antibody/TCR single-cell from vdj/scClonotypeKey axis"); // R1, scIgFullScenario + it.todo("detects antibody/TCR legacy bulk from vdj/cloneId axis"); // R1 + it.todo("detects antibody/TCR legacy bulk from vdj/clonotypeKey axis"); // R1 + it.todo("panics with R1a message when input has no recognised sequence key"); // R1a, bogusAxisScenario + it.todo("emits output PColumns with input entity axis verbatim"); // R1b }); // --------------------------------------------------------------------------- @@ -76,33 +82,35 @@ describe('modality detection', () => { // fullPframeHandle. Pattern from titeseq + clonotype-browser tests. // --------------------------------------------------------------------------- -describe('peptide mode output', () => { - it.todo('emits the 9 peptide scalar PColumns with feature=peptide domain'); // R6 - it.todo('emits 2-axis pl7.app/aaFraction PColumn with aminoAcid axis'); // R7 - it.todo('AA fraction PColumn has no isScore annotation'); // R16 - it.todo('extinction coefficients oxidised and reduced both emitted'); // R8 - it.todo('instability NA for peptides under 10 aa (per-row, not column-wide)'); // R9 +describe("peptide mode output", () => { + it.todo("emits the 9 peptide scalar PColumns with feature=peptide domain"); // R6 + it.todo("emits 2-axis pl7.app/aaFraction PColumn with aminoAcid axis"); // R7 + it.todo("AA fraction PColumn has no isScore annotation"); // R16 + it.todo("extinction coefficients oxidised and reduced both emitted"); // R8 + it.todo("instability NA for peptides under 10 aa (per-row, not column-wide)"); // R9 }); // --------------------------------------------------------------------------- // Antibody / TCR mode (R10, R11, R12, R13, R14) // --------------------------------------------------------------------------- -describe('antibody/TCR coverage handling', () => { - it.todo('emits CDR3 charge + hydrophobicity per chain when CDR3 present'); // R10, scIgFullScenario - it.todo('emits full-chain + Fv columns on full IG paired coverage'); // R11+R12, scIgFullScenario - it.todo('CDR3-only input emits R11a info message and no full-chain columns'); // R11a, scIgCdr3OnlyScenario - it.todo('partial-region info message uses receptor-aware chain label'); // R11b - it.todo('missing region for one clone yields NA for that row only'); - it.todo('TCR receptor never emits Fv columns regardless of coverage'); // R12, scTcrAbFullScenario - it.todo('γδ TCR input emits the γδ-labels info message'); - it.todo('chain labels adapt to receptor while name + chain domain stay constant'); // R13 - it.todo('bulk MiXCR IGHeavy axis derives receptor=IG from pl7.app/vdj/chain, no R13b warning'); // SD-008, bulkIgHeavyScenario - it.todo('bulk MiXCR TCRAlpha axis derives receptor=TCRAB from pl7.app/vdj/chain, no R13b warning'); // SD-008, bulkTcrAlphaScenario - it.todo('R13b warning fires only when neither receptor nor recognised chain key is present'); // R13b post-SD-008 - it.todo('isScore annotation on the spec-mandated columns only'); // R14 - it.todo('rankingOrder=increasing only on hydrophobicity columns'); // R14 - it.todo('no defaultCutoff annotation anywhere in the output'); // R15 +describe("antibody/TCR coverage handling", () => { + it.todo("emits CDR3 charge + hydrophobicity per chain when CDR3 present"); // R10, scIgFullScenario + it.todo("emits full-chain + Fv columns on full IG paired coverage"); // R11+R12, scIgFullScenario + it.todo("CDR3-only input emits R11a info message and no full-chain columns"); // R11a, scIgCdr3OnlyScenario + it.todo("partial-region info message uses receptor-aware chain label"); // R11b + it.todo("missing region for one clone yields NA for that row only"); + it.todo("TCR receptor never emits Fv columns regardless of coverage"); // R12, scTcrAbFullScenario + it.todo("γδ TCR input emits the γδ-labels info message"); + it.todo("chain labels adapt to receptor while name + chain domain stay constant"); // R13 + it.todo("bulk MiXCR IGHeavy axis derives receptor=IG from pl7.app/vdj/chain, no R13b warning"); // SD-008, bulkIgHeavyScenario + it.todo( + "bulk MiXCR TCRAlpha axis derives receptor=TCRAB from pl7.app/vdj/chain, no R13b warning", + ); // SD-008, bulkTcrAlphaScenario + it.todo("R13b warning fires only when neither receptor nor recognised chain key is present"); // R13b post-SD-008 + it.todo("isScore annotation on the spec-mandated columns only"); // R14 + it.todo("rankingOrder=increasing only on hydrophobicity columns"); // R14 + it.todo("no defaultCutoff annotation anywhere in the output"); // R15 }); // --------------------------------------------------------------------------- @@ -112,54 +120,54 @@ describe('antibody/TCR coverage handling', () => { // verified. // --------------------------------------------------------------------------- -describe('edge cases', () => { - it.todo('stop codon in any region NAs the whole reconstructed chain'); - it.todo('non-standard residues do not affect fractions / pI / GRAVY denominator'); - it.todo('polybasic with no zero crossing emits NA pI without error'); - it.todo('no aromatic residues emits ε = 0 (not NA)'); - it.todo('single-cell single chain emits available chain, Fv NA'); +describe("edge cases", () => { + it.todo("stop codon in any region NAs the whole reconstructed chain"); + it.todo("non-standard residues do not affect fractions / pI / GRAVY denominator"); + it.todo("polybasic with no zero crossing emits NA pI without error"); + it.todo("no aromatic residues emits ε = 0 (not NA)"); + it.todo("single-cell single chain emits available chain, Fv NA"); }); // --------------------------------------------------------------------------- // Result-pool integration & enrichment (Lead Selection downstream) // --------------------------------------------------------------------------- -describe('downstream consumption', () => { - it.todo('score columns are discoverable by a downstream block via the result pool'); - it.todo('output PColumns carry pl7.app/trace stamped with this block\'s label'); - it.todo('export PFrame stamps blockId on score column domains'); +describe("downstream consumption", () => { + it.todo("score columns are discoverable by a downstream block via the result pool"); + it.todo("output PColumns carry pl7.app/trace stamped with this block's label"); + it.todo("export PFrame stamps blockId on score column domains"); }); // --------------------------------------------------------------------------- // Model / UI behaviors // --------------------------------------------------------------------------- -describe('model + UI', () => { - it.todo('inputOptions surfaces a published vdj/scClonotypeKey anchor'); // synthetic - it.todo('run button disabled when inputAnchor not set'); // covered by 'empty inputs' assertions - it.todo('inputOptions filters to the 4 supported abundance anchor patterns'); - it.todo('info output exposes mode, receptor, coverageTier, messages array'); - it.todo('changing inputAnchor invalidates and re-runs cleanly'); - it.todo('title is the configured static label'); +describe("model + UI", () => { + it.todo("inputOptions surfaces a published vdj/scClonotypeKey anchor"); // synthetic + it.todo("run button disabled when inputAnchor not set"); // covered by 'empty inputs' assertions + it.todo("inputOptions filters to the 4 supported abundance anchor patterns"); + it.todo("info output exposes mode, receptor, coverageTier, messages array"); + it.todo("changing inputAnchor invalidates and re-runs cleanly"); + it.todo("title is the configured static label"); }); // --------------------------------------------------------------------------- // Dedup wiring (see docs/dedup-plan.md) // --------------------------------------------------------------------------- -describe('dedup', () => { - it.todo('second project on identical upstream lands on Done via dedup'); - it.todo('changed upstream input breaks dedup and triggers fresh run'); - it.todo('two co-instances on identical upstream run without CID conflicts'); +describe("dedup", () => { + it.todo("second project on identical upstream lands on Done via dedup"); + it.todo("changed upstream input breaks dedup and triggers fresh run"); + it.todo("two co-instances on identical upstream run without CID conflicts"); }); // --------------------------------------------------------------------------- // Cross-block composition // --------------------------------------------------------------------------- -describe('cross-block composition', () => { - it.todo('canary: real MiXCR fastq → sequence-properties detects sc IG and emits scores'); - it.todo('end-to-end: peptide-extraction → sequence-properties → lead-selection'); - it.todo('two sequence-properties instances in one project disambiguate via blockId'); - it.todo('VDJ chain: full-coverage MiXCR → seq-properties → lead-selection'); +describe("cross-block composition", () => { + it.todo("canary: real MiXCR fastq → sequence-properties detects sc IG and emits scores"); + it.todo("end-to-end: peptide-extraction → sequence-properties → lead-selection"); + it.todo("two sequence-properties instances in one project disambiguate via blockId"); + it.todo("VDJ chain: full-coverage MiXCR → seq-properties → lead-selection"); }); diff --git a/test/tsconfig.json b/test/tsconfig.json index 4ab75e6..d7ac02f 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,9 +1,5 @@ { "extends": "@milaboratories/ts-configs/block/test", - "compilerOptions": { - "outDir": "./dist", - "rootDir": "./src" - }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + "files": [] } diff --git a/test/vitest.config.mts b/test/vitest.config.mts index 2a74b2e..590bf97 100644 --- a/test/vitest.config.mts +++ b/test/vitest.config.mts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitest/config'; +import { defineConfig } from "vitest/config"; export default defineConfig({ test: { diff --git a/turbo.json b/turbo.json index 9e1fe82..3e61e91 100644 --- a/turbo.json +++ b/turbo.json @@ -3,7 +3,7 @@ "globalDependencies": ["tsconfig.json"], "tasks": { "fmt": { - "outputs": [] + "cache": false }, "check": { "dependsOn": ["^build"], @@ -12,20 +12,34 @@ "build": { "dependsOn": ["^build", "check"], "inputs": ["$TURBO_DEFAULT$"], - "env": ["PL_PKG_DEV", "PL_DOCKER_REGISTRY_PUSH_TO"], + "env": [ + "PL_DOCKER_REGISTRY_PUSH_TO", + "PL_BUILD_CHANNEL", + "PL_BUILD_VARIANT", + "PL_BUILD_LOCATION", + "PL_BUILD_USE_PUBLISHED", + "PL_DEV_DOCKER_PUSH_URL", + "PL_DEV_DOCKER_PULL_URL", + "PL_DEV_BINARY_UPLOAD_URL", + "PL_RELEASE_DOCKER_PUSH_URL", + "PL_RELEASE_DOCKER_PULL_URL", + "PL_RELEASE_BINARY_UPLOAD_URL", + "PL_REGISTRY_PLATFORMA_OPEN_UPLOAD_URL" + ], + "passThroughEnv": ["AWS_*", "PL_AWS_*"], "outputs": ["./dist/**", "./block-pack/**", "./pkg-*.tgz"] }, - "build:dev": { - "dependsOn": ["build"], - "outputs": ["./dist/**"] - }, "test": { - "dependsOn": ["^build:dev", "build"], + "dependsOn": ["build", "check"], "passThroughEnv": ["PL_ADDRESS", "PL_TEST_PASSWORD", "PL_TEST_USER", "PL_TEST_PROXY", "DEBUG"] }, "mark-stable": { "passThroughEnv": ["PL_REGISTRY", "AWS_*"], "cache": false + }, + "do-pack": { + "dependsOn": ["build"], + "outputs": ["package.tgz"] } } } diff --git a/ui/.oxlintrc.json b/ui/.oxlintrc.json index 4d6532c..5cb5522 100644 --- a/ui/.oxlintrc.json +++ b/ui/.oxlintrc.json @@ -1,3 +1,3 @@ { - "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-browser.json"] + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-block-ui.json"] } diff --git a/ui/package.json b/ui/package.json index 52e7141..5d9dbc4 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,13 +1,14 @@ { "name": "@platforma-open/milaboratories.sequence-properties.ui", "version": "1.4.1", + "private": true, "type": "module", "scripts": { "fmt": "ts-builder format", - "dev": "ts-builder serve --target browser", - "watch": "ts-builder build --target browser --watch", - "build": "ts-builder build --target browser", - "check": "ts-builder check --target browser" + "dev": "ts-builder serve --target block-ui", + "watch": "ts-builder build --target block-ui --watch", + "build": "ts-builder build --target block-ui", + "check": "ts-builder check --target block-ui" }, "dependencies": { "@milaboratories/graph-maker": "catalog:", @@ -21,9 +22,7 @@ "@milaboratories/ts-configs": "catalog:" }, "peerDependencies": { - "typescript": "*", - "vite": "*", - "vitest": "*", - "vue": "*" + "@types/node": "*", + "typescript": "*" } } diff --git a/ui/tsconfig.json b/ui/tsconfig.json index 7eb0eef..bf561dd 100644 --- a/ui/tsconfig.json +++ b/ui/tsconfig.json @@ -1,8 +1,4 @@ { - "extends": "@milaboratories/ts-configs/browser", - "compilerOptions": { - "rootDir": "./src", - "outDir": "./dist" - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] + "extends": "@milaboratories/ts-configs/block/ui", + "include": ["src/**/*"] } diff --git a/workflow/format.el b/workflow/format.el index b168a1a..dff4aa7 100755 --- a/workflow/format.el +++ b/workflow/format.el @@ -40,4 +40,3 @@ ;; call format on every file. (dolist (file files) (format-file file)) - diff --git a/workflow/index.d.ts b/workflow/index.d.ts deleted file mode 100644 index 9b27fb7..0000000 --- a/workflow/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare type TemplateFromFile = { readonly type: "from-file"; readonly path: string; }; -declare type TplName = "main"; -declare const Templates: Record; -export { Templates }; diff --git a/workflow/index.js b/workflow/index.js deleted file mode 100644 index 0d329ed..0000000 --- a/workflow/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { Templates: { - 'main': { type: 'from-file', path: require.resolve('./dist/tengo/tpl/main.plj.gz') } -}} diff --git a/workflow/package.json b/workflow/package.json index ad9aa4e..9a29c40 100644 --- a/workflow/package.json +++ b/workflow/package.json @@ -1,12 +1,14 @@ { "name": "@platforma-open/milaboratories.sequence-properties.workflow", "version": "1.3.3", + "private": true, "description": "Block Workflow", "type": "module", "scripts": { - "build": "shx rm -rf dist && pl-tengo check && pl-tengo build", - "test": "vitest", - "format": "/usr/bin/env emacs --script ./format.el" + "build": "shx rm -rf dist && pl-tengo build", + "test": "vitest run --passWithNoTests", + "format": "/usr/bin/env emacs --script ./format.el || echo 'No emacs.'", + "check": "pl-tengo check" }, "dependencies": { "@platforma-open/milaboratories.sequence-properties.software": "workspace:*", @@ -14,9 +16,9 @@ }, "devDependencies": { "@platforma-sdk/tengo-builder": "catalog:", - "@platforma-sdk/test": "catalog:" + "@platforma-sdk/test": "catalog:", + "shx": "catalog:", + "vitest": "catalog:" }, - "peerDependencies": { - "vitest": "*" - } + "peerDependencies": {} } From 58f3a89fe07c87c9fdeccb4a51de789e7e25d0dd Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 16:20:00 +0200 Subject: [PATCH 2/8] fix: resolve the kind contract, the SDK-upgrade fallout and the facade build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Author-code work the structurer cannot do, on top of the previous commit. Kind contract. `BlockParams` is `{ inputAnchor?: PlRef }` — the upstream dataset a new instance computes properties on, and the only field a creator or a project template supplies. Optional, because `templateParams` hands live state back untouched and a block whose input is not picked yet holds `undefined`; requiring it would make the block export a file its own kind refuses to apply. `parseInitializationParams` checks that one field with the SDK's own `isPlRef`, so the kind does not restate a type it does not own. The model consumes it in `init(({ params }) => …)` and projects the same single field back through `.templateParams`. Everything else in `BlockData` is view state that always defaults. Facade build. `block/dist/index.d.ts` inlines every type in the model's public surface (the facade config is `external: () => false`), and `BlockData` holds two `GraphMakerState` fields, which reach `@platforma-sdk/ui-vue` through `graph-maker/dist/forms`. ui-vue 1.83.1 stopped publishing the four `dist/components/*.vue.d.ts` files that its own `dist/lib.d.ts` re-exports, so the bundle failed on four unresolvable `.vue` specifiers. Every version from 1.79.20 through 1.83.0 ships them, which is why blocks already migrated on ui-vue <= 1.82.6 are unaffected. Held the catalog at 1.83.0 with the reason recorded inline; `vue` is 3.5.24 either way, so no UI type cascade. Drop the pin once a fixed ui-vue is published. The model also gains its own `@platforma-sdk/ui-vue` dependency. graph-maker declares ui-vue as a peer, and with no local declaration pnpm resolved that peer to npm-latest rather than the catalog version — so the pin missed the model's graph-maker instance entirely. Worth having on its own: it stops the model's ui-vue from drifting on every install. Cross-block test deps. Bumped samples-and-data to ^1.20.0 and mixcr-clonotyping-2 to ^2.22.0 and dropped both `.model` deps: the upstreams are slim facades now, so `BlockData` comes from the facade and blocks are added by `BlockPointer` instead of the retired `blockSpec`. The old pins dragged in second copies of `@platforma-sdk/model` (1.63.1, 1.65.4) and `zod` (3.23.8); the lockfile now holds exactly one of each. Removed both `satisfies BlockData` clauses — a facade bundles its own copy of the brand symbols behind `PlId` and `CanonicalizedJson`, so those types never unify with our catalog SDK's, and `mutateBlockStorage` takes the value as `unknown`. The hand-rolled version-5 `tableState` literal the 2.18 pin needed is replaced by `createPlDataTableStateV2()`. Dropped two catalog entries the migration orphaned: `eslint` (its only consumer was `test/eslint.config.mjs`, which the structurer deleted) and `@platforma-sdk/blocks-deps-updater` (replaced by the root `upgrade-sdk`). `pnpm build:dev-local` and every `check` are green, 12/12, from a frozen-lockfile install. `structure check` is a fixpoint. --- kind/package.json | 3 +- kind/src/index.ts | 53 +-- model/package.json | 3 +- model/src/dataModel.ts | 9 +- model/src/index.ts | 7 +- pnpm-lock.yaml | 955 ++--------------------------------------- pnpm-workspace.yaml | 11 +- test/package.json | 7 +- test/src/helpers.ts | 56 ++- test/src/wf.test.ts | 4 +- 10 files changed, 114 insertions(+), 994 deletions(-) diff --git a/kind/package.json b/kind/package.json index 294aec8..ccedc99 100644 --- a/kind/package.json +++ b/kind/package.json @@ -22,7 +22,8 @@ "check": "ts-builder check --target block-kind" }, "dependencies": { - "@platforma-sdk/block-kind": "catalog:" + "@platforma-sdk/block-kind": "catalog:", + "@platforma-sdk/model": "catalog:" }, "devDependencies": { "@milaboratories/ts-builder": "catalog:", diff --git a/kind/src/index.ts b/kind/src/index.ts index e4da684..9217a90 100644 --- a/kind/src/index.ts +++ b/kind/src/index.ts @@ -1,42 +1,45 @@ import { assertParamsObject, defineBlockKind } from "@platforma-sdk/block-kind"; +import type { PlRef } from "@platforma-sdk/model"; +import { isPlRef } from "@platforma-sdk/model"; import { name, version } from "../package.json" with { type: "json" }; /** - * This block's init-params contract — the shape a block of this kind receives - * at creation, and exactly what a project template serializes for it. + * This block's init-params contract — the upstream dataset a new instance + * computes sequence properties on. * - * TODO(block-kind): replace `NEEDS_BLOCK_PARAMS` with the real params shape, then - * wire the model's `init(({ params }) => …)` to consume them. If this block takes - * no author-supplied params, set it to `Record` deliberately. + * That is the whole contract. Everything else in the model's `BlockData` is + * view state the UI owns and always defaults: the table state, the two + * graph-maker states, and the two label fields (`defaultBlockLabel` is written + * by the UI from the chosen input's option label, `customBlockLabel` is the + * subtitle the user types). * - * This is an intentional sentinel: `NEEDS_BLOCK_PARAMS` is an undefined type, so - * the block fails to typecheck (TS2304) until the contract is chosen on purpose. - * A scaffolded-but-unmigrated block must never compile with an empty contract by - * default — see the block-kind migration recipe in the `block-dev` skill. + * `inputAnchor` is optional because the projection hands live state back + * untouched, and a block whose input is not picked yet holds `undefined` there. + * Requiring it would make the block export a file its own kind refuses to + * apply, so export and apply would stop being inverses. */ -export type BlockParams = NEEDS_BLOCK_PARAMS; +export type BlockParams = { + inputAnchor?: PlRef; +}; /** - * The same contract at runtime, for params that arrive from a template file rather than - * from typed code — the only point that can catch a hand-written entry being wrong. + * The same contract at runtime, for params that arrive from a template file + * rather than from typed code. * - * TODO(block-kind): read each key `BlockParams` declares and say what it must be, then - * return them. Plain TypeScript is the default here: a kind owes no schema library, and a - * check written by hand is held to the contract by the return type. Reach for a validation - * library only where the shape earns it, and add it to this package's dependencies yourself. - * - * Check the fields the contract requires, and stop there. A key the contract does not name - * needs no rejection: it is dropped by not being read. - * - * This is a second intentional sentinel. The function has to return `BlockParams`, so - * `return {}` stops compiling the moment the contract declares a required field — the check - * cannot drift from the contract by being left behind. Never satisfy it with a cast: `value - * as BlockParams` compiles today and checks nothing forever. + * A readable `{ block, name }` reference is expanded to a full `PlRef` before + * this runs, so `isPlRef` is the only shape to accept here. */ function parseInitializationParams(value: unknown): BlockParams { assertParamsObject(value); - return {}; + const { inputAnchor } = value; + if (inputAnchor !== undefined && !isPlRef(inputAnchor)) { + throw new Error( + "'inputAnchor' must be a reference to an upstream column, written as { block, name }.", + ); + } + + return { inputAnchor }; } // Identity (`name`/`version`) comes from this package's own `package.json`, so diff --git a/model/package.json b/model/package.json index a850cb4..d58868b 100644 --- a/model/package.json +++ b/model/package.json @@ -27,7 +27,8 @@ "@milaboratories/graph-maker": "catalog:", "@milaboratories/helpers": "catalog:", "@platforma-open/milaboratories.sequence-properties.kind": "workspace:*", - "@platforma-sdk/model": "catalog:" + "@platforma-sdk/model": "catalog:", + "@platforma-sdk/ui-vue": "catalog:" }, "devDependencies": { "@milaboratories/ts-builder": "catalog:", diff --git a/model/src/dataModel.ts b/model/src/dataModel.ts index 3033520..e69eac4 100644 --- a/model/src/dataModel.ts +++ b/model/src/dataModel.ts @@ -1,4 +1,5 @@ import type { GraphMakerState } from "@milaboratories/graph-maker"; +import { kind } from "@platforma-open/milaboratories.sequence-properties.kind"; import { createPlDataTableStateV2, DataModelBuilder } from "@platforma-sdk/model"; import type { BlockData, BlockDataV1, BlockDataV2 } from "./types"; @@ -29,7 +30,7 @@ export const migrateV2toV2_1 = (v2: BlockDataV2): BlockData => ({ customBlockLabel: v2.customBlockLabel ?? "", }); -export const blockDataModel = new DataModelBuilder() +export const blockDataModel = new DataModelBuilder({ kind }) .from("Ver_2026_04_28") // Already-deployed step. Future field additions must go into a new step // below — editing this body has no effect on projects already tagged @@ -40,7 +41,11 @@ export const blockDataModel = new DataModelBuilder() // projection (resolveTraceLabel in label.ts) requires both fields to be // strings, never undefined. .migrate("Ver_2026_05_18", migrateV2toV2_1) - .init(() => ({ + // `params` carries the kind's init-params contract, and is undefined when the + // block is created outside a template. `inputAnchor` is the only field a + // creator supplies; everything else is view state that always defaults. + .init(({ params }) => ({ + inputAnchor: params?.inputAnchor, tableState: createPlDataTableStateV2(), defaultBlockLabel: "", customBlockLabel: "", diff --git a/model/src/index.ts b/model/src/index.ts index bc1eb47..f5a4b01 100644 --- a/model/src/index.ts +++ b/model/src/index.ts @@ -1,3 +1,4 @@ +import { kind } from "@platforma-open/milaboratories.sequence-properties.kind"; import type { InferOutputsType, PColumnIdAndSpec, PFrameHandle } from "@platforma-sdk/model"; import { Annotation, @@ -35,7 +36,7 @@ const inputAnchorSpecs = [ }, ]; -export const platforma = BlockModelV3.create(blockDataModel) +export const platforma = BlockModelV3.create({ dataModel: blockDataModel, kind }) .args((data) => { if (data.inputAnchor === undefined) { throw new Error("Select an input dataset"); @@ -45,6 +46,10 @@ export const platforma = BlockModelV3.create(blockDataModel) traceLabel: resolveTraceLabel(data), }; }) + // Inverse of the kind's init-params contract: the same single field `init` + // consumes. The label fields and the table / plot states stay out — they are + // view state, not configuration a template carries. + .templateParams((data) => ({ inputAnchor: data.inputAnchor })) .output("inputOptions", (ctx) => ctx.resultPool.getOptions(inputAnchorSpecs)) .output("inputSpec", (ctx) => ctx.data.inputAnchor ? ctx.resultPool.getPColumnSpecByRef(ctx.data.inputAnchor) : undefined, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8c79e3..831e325 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,14 +40,11 @@ catalogs: specifier: 1.83.2 version: 1.83.2 '@platforma-sdk/ui-vue': - specifier: 1.83.1 - version: 1.83.1 + specifier: 1.83.0 + version: 1.83.0 '@platforma-sdk/workflow-tengo': specifier: 6.8.3 version: 6.8.3 - eslint: - specifier: ^9.38.0 - version: 9.39.4 shx: specifier: 0.4.0 version: 0.4.0 @@ -129,6 +126,9 @@ importers: '@platforma-sdk/block-kind': specifier: 'catalog:' version: 1.1.0 + '@platforma-sdk/model': + specifier: 'catalog:' + version: 1.83.0 '@types/node': specifier: '*' version: 25.3.2 @@ -150,7 +150,7 @@ importers: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@milaboratories/helpers': specifier: 'catalog:' version: 1.14.5 @@ -160,13 +160,16 @@ importers: '@platforma-sdk/model': specifier: 'catalog:' version: 1.83.0 + '@platforma-sdk/ui-vue': + specifier: 'catalog:' + version: 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) typescript: specifier: '*' version: 5.6.3 devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -192,17 +195,11 @@ importers: test: dependencies: '@platforma-open/milaboratories.mixcr-clonotyping-2': - specifier: ^2.18.3 - version: 2.18.3(typescript@7.0.2) - '@platforma-open/milaboratories.mixcr-clonotyping-2.model': - specifier: ^1.25.2 - version: 1.25.2 + specifier: ^2.22.0 + version: 2.22.0 '@platforma-open/milaboratories.samples-and-data': - specifier: ^1.17.1 - version: 1.17.1 - '@platforma-open/milaboratories.samples-and-data.model': - specifier: ^2.8.0 - version: 2.8.0 + specifier: ^1.20.0 + version: 1.20.0 '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model @@ -228,9 +225,6 @@ importers: '@platforma-sdk/test': specifier: 'catalog:' version: 1.83.2(@bytecodealliance/preview2-shim@0.17.8)(@types/node@25.3.2)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) - eslint: - specifier: 'catalog:' - version: 9.39.4 vitest: specifier: 'catalog:' version: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) @@ -239,7 +233,7 @@ importers: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model @@ -248,7 +242,7 @@ importers: version: 1.83.0 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + version: 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) '@types/node': specifier: '*' version: 25.3.2 @@ -722,44 +716,6 @@ packages: '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@grpc/grpc-js@1.14.4': resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} @@ -769,26 +725,6 @@ packages: engines: {node: '>=6'} hasBin: true - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} - engines: {node: '>=18.18.0'} - - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -1006,10 +942,6 @@ packages: '@platforma-sdk/model': 1.79.14 '@platforma-sdk/ui-vue': 1.79.14 - '@milaboratories/helpers@1.14.1': - resolution: {integrity: sha512-GcxeGHakSLhewbA7hd8YVHnEzyi95UnzcZhgwvRPO+W7/svZc8sAGidAV5xgN/YmVmJfCRl7hfiIcL37+fm0Ew==} - engines: {node: '>=22'} - '@milaboratories/helpers@1.14.2': resolution: {integrity: sha512-zOkD4aWNbembwI+AsPTz7nmWC1VPA4rwGBc+Nd5jPpKVh7rCtZwQrlOP5mVqRVMKIAjb1nU8kzzCGfqNPqfJjA==} engines: {node: '>=22'} @@ -1031,9 +963,6 @@ packages: '@milaboratories/pl-model-common': 1.46.1 '@platforma-sdk/model': 1.79.14 - '@milaboratories/pf-spec-driver@1.2.4': - resolution: {integrity: sha512-bJdC9NLNTqbN84cnaUqZifMNboMHfiqIp9AOQ+mrBgBjHysm/fopMg9OAt3zHCY+xlnlB6z+0es/PiYLsG9kyQ==} - '@milaboratories/pf-spec-driver@1.5.1': resolution: {integrity: sha512-K7BuQCUXqpUOAwgJ1aIO8SSQbE8RSEVb8J5e6vIpI6PqV7Uc8LHFswTguOSgSuacpMgQmEP9jmIKyafJdJ7PDw==} @@ -1052,13 +981,6 @@ packages: '@milaboratories/pframes-rs-wasip2@1.1.56': resolution: {integrity: sha512-54bhC6XCAVO09J/sqVwEKA4hhTa27BDDNdH8BE+6+LvjBVkg/qq2/f0MzdrVijrmagbr97F1zgj5wIgUqwCSoA==} - '@milaboratories/pframes-rs-wasm@1.1.18': - resolution: {integrity: sha512-K/Th/EGE5CBtCa1+w6ikYai/LHMi71eE5y+tObSxsHrZeOUP+J704xPaDbIV4CW2XOzS3VStY9AZCrOX4GrBWA==} - peerDependencies: - '@bytecodealliance/preview2-shim': 0.17.8 - '@milaboratories/pl-model-common': 1.28.0 - '@milaboratories/pl-model-middle-layer': 1.15.0 - '@milaboratories/pl-client@3.14.7': resolution: {integrity: sha512-HIjPfGAYRRD0hbq5YSTkWt5XgBiv+yYtw73EjWLxui8eUEeB2ffdgsvH7IhVx2oXjUOL4p7M4i8PBnmdJ3830w==} engines: {node: '>=22.19.0'} @@ -1077,9 +999,6 @@ packages: '@milaboratories/pl-error-like@1.12.10': resolution: {integrity: sha512-iHmnLG5lxJqcymUmEL8onCDGEADk1S/5RNACQ5yfTCNcCkUc+7hYrDHQpFmWXPPGC9sG+NTBxt4wr5m8UsLm2g==} - '@milaboratories/pl-error-like@1.12.9': - resolution: {integrity: sha512-9qlfawLFO4qG656ayvVSRholhhwlfXUvKKllXpHadqbnf2zO2oCd+5J76bPaFXDz/A3T+1eokCnCX74JsqCYSw==} - '@milaboratories/pl-errors@1.4.36': resolution: {integrity: sha512-WzKECX8Te6uP2DT7z2yTN6RrkiAWowYeU1rmB1Uc6sQBBWC6OjiqjiyOjvFeqxi73oXODARhLaLnqJcpG1onNA==} @@ -1097,24 +1016,12 @@ packages: '@milaboratories/pl-model-backend@1.4.21': resolution: {integrity: sha512-Z2z5J8bglslgXXoi1aySi1ho+/d+ylJiuEaRw9XTNuE5iBM3EQPe0rw095pXGOinTlMpmvUcCI2wkVCraUQ1dA==} - '@milaboratories/pl-model-common@1.31.1': - resolution: {integrity: sha512-MLQvhXXFOykABZr8aVgzt5x0htT7ye4cvvnVy0TgOITXpct+lEmWvaVj29zirK/0VFw7wnTXDGnLwusr77NZFA==} - - '@milaboratories/pl-model-common@1.31.2': - resolution: {integrity: sha512-dnK0zXzylN7MAO1Nyx8EJargaqa94iDDEDwZW7d1/lRl1p50cR9zGP8pUnIy1I8UcI4lzH34f81RRQy6AbTuTw==} - '@milaboratories/pl-model-common@1.46.2': resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} '@milaboratories/pl-model-common@1.48.0': resolution: {integrity: sha512-oCVrjFNmjQolb7YWnbSGHnp6GGVm1PhG1lnNABp9lqYjvA2ISjIPQLIo/vT2ca0mqwLrEvbuRqiqSFOg7sQ5tQ==} - '@milaboratories/pl-model-middle-layer@1.16.3': - resolution: {integrity: sha512-XLZEC3POgUMNNjXr3Pudh7gx2CXZygeskxuQCyPfj4c8Fi35+kAfH9VBpNZD1koiT2n+x5QZyS3RpzcAddQTnQ==} - - '@milaboratories/pl-model-middle-layer@1.16.4': - resolution: {integrity: sha512-uFTZHEjRmfRvY97tRbBuTvNzQnTYIj58S8HBzyMsFkzxbUI8vTBPtvEqbTU2IbQ31IEGvv8T0BBl9b7/vdud0A==} - '@milaboratories/pl-model-middle-layer@1.30.7': resolution: {integrity: sha512-rs9x3Ron4ujR/UOdEgB8WUB1SvZ8ZAScT1Av/e4or+iiQ/CzhmK9nqtYamHVwKV+JgwIFbXQwxGvIHDVz955dQ==} @@ -1128,12 +1035,6 @@ packages: '@milaboratories/ptabler-expression-js@1.2.38': resolution: {integrity: sha512-z14oa/V3nkBGHxnygpfxUBU7EfHQKHh1KZgK47ouqIw7CvuOmqjViRdynY4HZNjAh3n3AGHpBbEFs/J+hQMW3g==} - '@milaboratories/ptabler-expression-js@1.2.5': - resolution: {integrity: sha512-pxBFYycBAVc4pVCo+qDzi2mQDQiar5D2tOnkWjSLgo13OAY+KVDYQJeD4KUt2DCocMy0Uo+lREZpU1bvVBqH3A==} - - '@milaboratories/ptabler-expression-js@1.2.8': - resolution: {integrity: sha512-8GsLfyRGWZxal4I+fNHEfluv8ef8jHg4yMuSeW8ZV1H0qGaprc9AIMUcDarlavsSiBstC9VSNPYxX4MawN49qA==} - '@milaboratories/resolve-helper@1.1.3': resolution: {integrity: sha512-38/dW/XRZQREOxAOOKtO0lzEWPCP/DH0qhB3q1kYcGoN++5V92/zbVwbYrMDeDcjTyo+D62iIep+sKXeWHa7Uw==} @@ -1156,9 +1057,6 @@ packages: resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} engines: {node: '>=22.19.0'} - '@milaboratories/uikit@2.11.7': - resolution: {integrity: sha512-qCgxfOHUhp3E1EfuoKtY314ZvdmFa+xHVQzMVC0cFj5YLJFPlgRc3ZiiEHQGLnrUsoICZxqtICia99fcHoyJrw==} - '@milaboratories/uikit@2.15.26': resolution: {integrity: sha512-QPzSmSUA+62pkrlGwwdoBGpDGkaFPshj0B+/eF/MAFcNy/xAfuWtfAJF9RhLIvRPmbVYOUhf7iN5MDHkwnxToA==} @@ -1577,17 +1475,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@platforma-open/milaboratories.mixcr-clonotyping-2.model@1.25.2': - resolution: {integrity: sha512-7NwAT8dIqojUkNToJ6i4Y0GhaZ0ylL2P8Cjhhlyrs6BR0NhEmdpSTJiZCNHi29JfrdCCtrOtpBLJ1CLSol+1ng==} - - '@platforma-open/milaboratories.mixcr-clonotyping-2.ui@1.25.2': - resolution: {integrity: sha512-AZEhqcr1o60ft812QY5n9GxqKO+D/wdBlzKNpnyW3yX04g4oXwprE3wP4csIwDb35vr+tkJaxBWKN/hy5X9KzA==} - - '@platforma-open/milaboratories.mixcr-clonotyping-2.workflow@3.26.1': - resolution: {integrity: sha512-Pw7SCIW2SzL0KF6LN9aQmZ/ldKWF1fROJZpFqZdp+KpzLgYMz241Lv/geNMiuk57LAK9QR4hIMt9XYoxNDXfFA==} - - '@platforma-open/milaboratories.mixcr-clonotyping-2@2.18.3': - resolution: {integrity: sha512-sS9mkM2E50nPkqk0cCaJtObDot2uUsndGzqMe2SIIDIU715JZ0zMijfDB37oqJsMy15EOqWGY0L//QgK9Q0RPA==} + '@platforma-open/milaboratories.mixcr-clonotyping-2@2.22.0': + resolution: {integrity: sha512-t7wO0se+2v0NVGzEoIiGW6fi3A7j83U5E7lcGkJ9QCoJ7BZvSgGF5idrIhiOJm3UEd6IFDDn/mhOAeQORnTptg==} '@platforma-open/milaboratories.runenv-python-3.12.10-atls@1.2.4': resolution: {integrity: sha512-yeklY7ISewNOQ5TWlNLRi6VSOGfcdTJPoDWtf5Z8na3xPP56fWZFuckX/ixZpGvcoyBSQf1kFBFnHPginX7jCw==} @@ -1613,48 +1502,15 @@ packages: '@platforma-open/milaboratories.runenv-python-3@1.8.2': resolution: {integrity: sha512-gsb33geN7RXIKhcYXPn18aU3sInJNcGVEO5/vlM+JxySBVMr2ICr86ABY90oX0fc60RiuEgVI3ltiOgtCs9Kbg==} - '@platforma-open/milaboratories.samples-and-data.model@2.8.0': - resolution: {integrity: sha512-Lrio8I1Wfkqaxdn5ldOBqBEqw6fy3RD6XGR27dWl0xnKWT9s7qO16gbNlsYZotx7qu2ozx9H4C3ffQxQOQI/6g==} - - '@platforma-open/milaboratories.samples-and-data.parse-h5ad@1.1.3': - resolution: {integrity: sha512-nnF8TzGKGTpAID93M7bSmgOHQOAKUFTp0e30R+JMzOcYLWSYQJ8HmpPsQvPka//iK3h4Flu+Z6FO/euQGWv9bw==} - - '@platforma-open/milaboratories.samples-and-data.parse-seurat@1.1.1': - resolution: {integrity: sha512-IYagWIFNteh+rOb1u3DNuIfex42IxXQy3xGSCfgX29YQ1wuqQG8XMx9rZnswnRsJQpd/eT5ZmHO1A1d1WF56QQ==} - - '@platforma-open/milaboratories.samples-and-data.ui@2.9.1': - resolution: {integrity: sha512-frLIBZXki74OwA2nl5onctidP9ZW5jucjhElJIrhotJVTSiFbolDFdrt+ch/TtyMmX2NHk5OxWXxpJOP19StEg==} - - '@platforma-open/milaboratories.samples-and-data.workflow@2.7.0': - resolution: {integrity: sha512-Digm5EA1jlOe3b/pe6MZpoY6B1DdUERaJZA1Apwr01VP2BNiROoY5NaIR+FP1BY2affcVB6ysKbXrKmJltO6Eg==} - - '@platforma-open/milaboratories.samples-and-data@1.17.1': - resolution: {integrity: sha512-G0oLVhtZSRzPdbt6AQ4NJJiXCvc0pCsBzZXUyq+nr6eP2tVQBu5SziAsfrIwTnLViuxKawIW1X7mMYIyBRZ/DA==} - - '@platforma-open/milaboratories.software-mixcr@4.7.0-347-develop': - resolution: {integrity: sha512-4GlZWEhs2CxZu9GjswUA8dT0VD5M6x1pxa3iz1AgkrFx3deDHt0pJQcazJuAE0Pgm4GcyRX9p/Yf0TRmexbcmQ==} - - '@platforma-open/milaboratories.software-ptabler.schema@1.14.5': - resolution: {integrity: sha512-WZgX43fFYAbf6wWawN9edpBQm3ldtk9SrrfPvLPEmYiYyytjcxgEJrCeRiFv1rUkhOHpCyr7HSR4yonHh6W+fQ==} - - '@platforma-open/milaboratories.software-ptabler.schema@1.14.8': - resolution: {integrity: sha512-wSrsHJB8zgeglndBJBUXnIrJjaeUNKbMhj9uZAFg8OOec8rZXSdoPN6vJcJr6Qf9m4dwsLCM7pplnyO6VzCfxg==} + '@platforma-open/milaboratories.samples-and-data@1.20.0': + resolution: {integrity: sha512-0PPceM5FtOQK9N8tc+3vkB8TqNCTFNQcqhEaz8a23wEq6btAudZLfLlGNlqhthdjPn6QN+Pfl5zOs4D6M/4yCw==} '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': resolution: {integrity: sha512-f9vT+iSfNelgAGjaNzn1GErhmxHbjG6HtskAMoaUEbrciCG8c8i8cSCJPLu0xKNBcjM1UW+T10uD89Ckq2vkxQ==} - '@platforma-open/milaboratories.software-ptabler@1.15.0': - resolution: {integrity: sha512-7hbuOsIU3WsmAsBwWoVfP1UyZPBQj/Ec8KGoUBoaAq5VNjVQ7oQR3Nx4co+dIJJ9+cEB3c633Xx1DNxebb5uNQ==} - - '@platforma-open/milaboratories.software-ptabler@1.15.2': - resolution: {integrity: sha512-Tsb7+VldYyyp0m6kTT0Gzw67yX8WECLvgHkaCxCwjvSGpKlvjSjuFcBEPNZ7zjNoFdM7ZrtGu81xrrAVCrUuJw==} - '@platforma-open/milaboratories.software-ptabler@2.1.8': resolution: {integrity: sha512-28dKwcKNIB/8OYH6l/li7Qa/aE2NgDVtNUmN8v6jZsLKT59ogFclz8ZrQ+OiQFzHQCLBlWBt5TdIHfHPxBaNFw==} - '@platforma-open/milaboratories.software-ptexter@1.2.2': - resolution: {integrity: sha512-I08YpKQ4+esLrfpVra5UJ+bznI9Zzba6OW0rKK407a1EUmanvYMVrCbM9gqnm6CHbv2vQxNGSaO8p1LoBh+9gA==} - '@platforma-open/milaboratories.software-ptexter@1.2.4': resolution: {integrity: sha512-4ZqhqksSNVKWhEB9WwrL0rU89G+00ulzH1urYyNA4EdBVGA4mwbKbw0K/zcwce/oUYYMdRl+epXmr0w9wHyNzA==} @@ -1673,9 +1529,6 @@ packages: '@platforma-open/milaboratories.software-small-binaries.table-converter@1.3.5': resolution: {integrity: sha512-x6WOZ8S3uLXzmwliCF500hw7VQ4A9U3VBbESjJlPia26aU91FqB3ylKyH2fEyTiVw2wADlTYuui1tHX47iS5Lw==} - '@platforma-open/milaboratories.software-small-binaries@2.0.4': - resolution: {integrity: sha512-q8dAJ/RwAR35uKj74Bvzq4lpuBLxzuCNkuCH4suwb2ybDyEggL0XUB26aUuf15hX+6rFVulyBaQToXURKVKwzw==} - '@platforma-open/milaboratories.software-small-binaries@2.1.1': resolution: {integrity: sha512-KN1PR7YgUUfx1dxh/TtcoWpSZbOXbRxXzQuJ505qHuXuE0spYwC7bXnvJsEYbEwRcPMa0foTrjBnPNORE4yr+Q==} @@ -1693,12 +1546,6 @@ packages: resolution: {integrity: sha512-p9lBxhFXM9WoRsrJO7dfkiXSK+1m63yIn1sKhBO71eMbhrLMyVYHEOeNf3w5OCdbRF5QsNhXzWuiTmFK3zHFsA==} hasBin: true - '@platforma-sdk/model@1.63.1': - resolution: {integrity: sha512-Ma1PEz3yZw6Jbo23BEUrZcO/8q15FU0DEtcjxObobVqXFoS0o4yCNPDxWytksiT2JL3G8F+Ic+k/wHYZ/Fbd0Q==} - - '@platforma-sdk/model@1.65.4': - resolution: {integrity: sha512-OVZBOeN9LCQt1AuOd6a4kBrXqTRD+tUukDQxqcsqHdG1lG2y9kJ2RxqUWXVbzIEv2qD0m8owg99KNWEVG35nAQ==} - '@platforma-sdk/model@1.83.0': resolution: {integrity: sha512-uBg8vJ1BnSUKqgQMz2ADXOm/tyaYlF218p+ILqh16y3HXRH+pqQqpwP0iHp9P6tf8vThIOC2TW+5mREGCaTmBw==} @@ -1713,17 +1560,8 @@ packages: '@platforma-sdk/test@1.83.2': resolution: {integrity: sha512-tdNihBcIQX7UoOP8Cbswf68oQkc6p2rHvgTQqwT7si62CpTRoCQsXnuRFlPgx0J+DI9zB1N6VrLIQLISSQXx/g==} - '@platforma-sdk/ui-vue@1.63.8': - resolution: {integrity: sha512-Nv/QhhTlGE8vfw3es+FNiHxrvRBn7M4xP5JPta0qIuDgCV7s0y/yK4hJQkkYuSVmigOGLQuPJGqgAV+wJVQK+g==} - - '@platforma-sdk/ui-vue@1.83.1': - resolution: {integrity: sha512-dGyhCp6cEjqIhTUAMD4+MEQ2hCthL88uJutlBUhqK1TT6p2W4GNNsFvpYPldOT2pSvPzFBN0Ams5DTpz0p6GnQ==} - - '@platforma-sdk/workflow-tengo@5.12.0': - resolution: {integrity: sha512-l3poLNfbIXTl3CYaTMPpBWV/mRaoEWEmc6/Nl7PNPkjLAy6oAfc/4xVw+Ib3Lly7MVeMEMvuVBTz5BbpwzFaIQ==} - - '@platforma-sdk/workflow-tengo@5.13.3': - resolution: {integrity: sha512-is6tI3cYDxaNf48GUidG6q9XltM2AxrQmpWG3WxzXY5t5oUdizxAeYcJMN5Erl4p+zhGZGSdAJYXjBKMTZLJTA==} + '@platforma-sdk/ui-vue@1.83.0': + resolution: {integrity: sha512-7V/dy1yGrQKrsu2XlZ9V7X+9+3X3+RmVfC3b0MwjzNiW1qI2ImUvtaKp5wVtE0gq+COIWomAmy1tsVJtQtBJgg==} '@platforma-sdk/workflow-tengo@6.8.3': resolution: {integrity: sha512-KImCzq7v/2qgH/PIBCTipV0B/ulLxDnDOpWOO+zs56+p/B2Dg25ZevlA2LzOFVk9SWx6ilXp4ilWx3K2HbccqQ==} @@ -4004,9 +3842,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/minimatch@6.0.0': resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. @@ -4472,11 +4307,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -4531,9 +4361,6 @@ packages: ajv: optional: true - ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -4702,10 +4529,6 @@ packages: resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} engines: {node: '>=6.0.0'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - caniuse-lite@1.0.30001774: resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} @@ -4717,10 +4540,6 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -4937,15 +4756,6 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -4983,9 +4793,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -5059,63 +4866,17 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -5155,12 +4916,6 @@ packages: fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -5186,10 +4941,6 @@ packages: fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - file-type@3.9.0: resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} engines: {node: '>=0.10.0'} @@ -5213,17 +4964,6 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -5284,10 +5024,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -5297,10 +5033,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - globby@10.0.1: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} @@ -5345,18 +5077,10 @@ packages: immer@11.1.4: resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -5470,18 +5194,9 @@ packages: engines: {node: '>=6'} hasBin: true - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -5502,9 +5217,6 @@ packages: kdbush@4.0.2: resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -5515,10 +5227,6 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -5597,16 +5305,9 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} @@ -5741,9 +5442,6 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -5805,10 +5503,6 @@ packages: openapi-typescript-helpers@0.0.15: resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -5853,18 +5547,10 @@ packages: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -5879,10 +5565,6 @@ packages: package-manager-detector@0.2.2: resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -5970,10 +5652,6 @@ packages: deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -5996,10 +5674,6 @@ packages: pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - pvtsutils@1.3.6: resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} @@ -6081,10 +5755,6 @@ packages: resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -6466,10 +6136,6 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - typescript@3.9.10: resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} engines: {node: '>=4.2.0'} @@ -6577,9 +6243,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6765,10 +6428,6 @@ packages: resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} engines: {node: '>= 12.0.0'} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -6818,10 +6477,6 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - yoctocolors-cjs@2.1.3: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} @@ -6839,9 +6494,6 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -7773,52 +7425,6 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': - dependencies: - eslint: 9.39.4 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.21.2': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.0 - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.15.0 - debug: 4.4.0 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.4': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - '@grpc/grpc-js@1.14.4': dependencies: '@grpc/proto-loader': 0.8.1 @@ -7831,22 +7437,6 @@ snapshots: protobufjs: 7.6.5 yargs: 17.7.2 - '@humanfs/core@0.19.2': - dependencies: - '@humanfs/types': 0.15.0 - - '@humanfs/node@0.16.8': - dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 - - '@humanfs/types@0.15.0': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@25.3.2)': @@ -8107,14 +7697,14 @@ snapshots: '@types/node': 24.5.2 utility-types: 3.11.0 - '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': + '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': dependencies: '@ag-grid-community/core': 32.3.9 '@milaboratories/helpers': 1.14.5 '@milaboratories/miplots4': 1.2.3(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0) '@milaboratories/pf-plots': 1.4.6(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0) '@platforma-sdk/model': 1.83.0 - '@platforma-sdk/ui-vue': 1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + '@platforma-sdk/ui-vue': 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) '@types/d3-hierarchy': 3.1.7 '@types/d3-scale': 4.0.9 '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) @@ -8131,8 +7721,6 @@ snapshots: - supports-color - typescript - '@milaboratories/helpers@1.14.1': {} - '@milaboratories/helpers@1.14.2': {} '@milaboratories/helpers@1.14.5': {} @@ -8198,16 +7786,6 @@ snapshots: canonicalize: 2.1.0 lodash: 4.17.23 - '@milaboratories/pf-spec-driver@1.2.4': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pframes-rs-wasm': 1.1.18(@milaboratories/pl-model-common@1.31.1)(@milaboratories/pl-model-middle-layer@1.16.3) - '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/pl-model-middle-layer': 1.16.3 - '@noble/hashes': 2.2.0 - transitivePeerDependencies: - - '@bytecodealliance/preview2-shim' - '@milaboratories/pf-spec-driver@1.5.1(@bytecodealliance/preview2-shim@0.17.8)': dependencies: '@milaboratories/helpers': 1.14.5 @@ -8245,11 +7823,6 @@ snapshots: '@milaboratories/pframes-rs-wasip2@1.1.56': {} - '@milaboratories/pframes-rs-wasm@1.1.18(@milaboratories/pl-model-common@1.31.1)(@milaboratories/pl-model-middle-layer@1.16.3)': - dependencies: - '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/pl-model-middle-layer': 1.16.3 - '@milaboratories/pl-client@3.14.7': dependencies: '@grpc/grpc-js': 1.14.4 @@ -8317,11 +7890,6 @@ snapshots: json-stringify-safe: 5.0.1 zod: 3.25.76 - '@milaboratories/pl-error-like@1.12.9': - dependencies: - json-stringify-safe: 5.0.1 - zod: 3.23.8 - '@milaboratories/pl-errors@1.4.36': dependencies: '@milaboratories/pl-client': 3.14.7 @@ -8385,20 +7953,6 @@ snapshots: canonicalize: 2.1.0 zod: 3.25.76 - '@milaboratories/pl-model-common@1.31.1': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-error-like': 1.12.9 - canonicalize: 2.1.0 - zod: 3.23.8 - - '@milaboratories/pl-model-common@1.31.2': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-error-like': 1.12.9 - canonicalize: 2.1.0 - zod: 3.25.76 - '@milaboratories/pl-model-common@1.46.2': dependencies: '@milaboratories/helpers': 1.14.2 @@ -8414,22 +7968,6 @@ snapshots: es-toolkit: 1.42.0 zod: 3.25.76 - '@milaboratories/pl-model-middle-layer@1.16.3': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-model-common': 1.31.1 - es-toolkit: 1.42.0 - utility-types: 3.11.0 - zod: 3.23.8 - - '@milaboratories/pl-model-middle-layer@1.16.4': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-model-common': 1.31.2 - es-toolkit: 1.42.0 - utility-types: 3.11.0 - zod: 3.25.76 - '@milaboratories/pl-model-middle-layer@1.30.7': dependencies: '@milaboratories/helpers': 1.14.2 @@ -8460,14 +7998,6 @@ snapshots: dependencies: '@platforma-open/milaboratories.software-ptabler.schema': 1.15.22 - '@milaboratories/ptabler-expression-js@1.2.5': - dependencies: - '@platforma-open/milaboratories.software-ptabler.schema': 1.14.5 - - '@milaboratories/ptabler-expression-js@1.2.8': - dependencies: - '@platforma-open/milaboratories.software-ptabler.schema': 1.14.8 - '@milaboratories/resolve-helper@1.1.3': {} '@milaboratories/software-pframes-conv@2.2.9': {} @@ -8666,40 +8196,6 @@ snapshots: canonicalize: 2.1.0 denque: 2.1.0 - '@milaboratories/uikit@2.11.7(typescript@7.0.2)': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@platforma-sdk/model': 1.63.1 - '@types/d3-array': 3.2.1 - '@types/d3-axis': 3.0.6 - '@types/d3-scale': 4.0.9 - '@types/d3-selection': 3.0.11 - '@types/sortablejs': 1.15.8 - '@vue/test-utils': 2.4.6 - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) - '@vueuse/integrations': 13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@7.0.2)) - canonicalize: 2.1.0 - d3-array: 3.2.4 - d3-axis: 3.0.0 - d3-scale: 4.0.2 - d3-selection: 3.0.0 - resize-observer-polyfill: 1.5.1 - sortablejs: 1.15.6 - vue: 3.5.25(typescript@7.0.2) - transitivePeerDependencies: - - async-validator - - axios - - change-case - - drauu - - focus-trap - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - typescript - - universal-cookie - '@milaboratories/uikit@2.15.26(typescript@5.6.3)': dependencies: '@milaboratories/helpers': 1.14.5 @@ -9034,63 +8530,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@platforma-open/milaboratories.mixcr-clonotyping-2.model@1.25.2': - dependencies: - '@platforma-sdk/model': 1.63.1 - zod: 3.23.8 - - '@platforma-open/milaboratories.mixcr-clonotyping-2.ui@1.25.2(typescript@7.0.2)': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@platforma-open/milaboratories.mixcr-clonotyping-2.model': 1.25.2 - '@platforma-sdk/model': 1.63.1 - '@platforma-sdk/ui-vue': 1.63.8(typescript@7.0.2) - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) - ag-grid-enterprise: 34.1.2 - ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@7.0.2)) - utility-types: 3.11.0 - vue: 3.5.25(typescript@7.0.2) - zod: 3.23.8 - transitivePeerDependencies: - - '@bytecodealliance/preview2-shim' - - async-validator - - axios - - change-case - - drauu - - focus-trap - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - typescript - - universal-cookie - - '@platforma-open/milaboratories.mixcr-clonotyping-2.workflow@3.26.1': - dependencies: - '@platforma-open/milaboratories.software-mixcr': 4.7.0-347-develop - '@platforma-sdk/workflow-tengo': 5.12.0 - - '@platforma-open/milaboratories.mixcr-clonotyping-2@2.18.3(typescript@7.0.2)': - dependencies: - '@platforma-open/milaboratories.mixcr-clonotyping-2.model': 1.25.2 - '@platforma-open/milaboratories.mixcr-clonotyping-2.ui': 1.25.2(typescript@7.0.2) - '@platforma-open/milaboratories.mixcr-clonotyping-2.workflow': 3.26.1 - '@platforma-sdk/model': 1.63.1 - transitivePeerDependencies: - - '@bytecodealliance/preview2-shim' - - async-validator - - axios - - change-case - - drauu - - focus-trap - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - typescript - - universal-cookie + '@platforma-open/milaboratories.mixcr-clonotyping-2@2.22.0': {} '@platforma-open/milaboratories.runenv-python-3.12.10-atls@1.2.4': {} @@ -9116,52 +8556,14 @@ snapshots: '@platforma-open/milaboratories.runenv-python-3.12.10-sccoda': 1.3.5 '@platforma-open/milaboratories.runenv-python-3.12.10-scientific-slim': 1.1.0 - '@platforma-open/milaboratories.samples-and-data.model@2.8.0': - dependencies: - '@platforma-sdk/model': 1.65.4 - zod: 3.25.76 - - '@platforma-open/milaboratories.samples-and-data.parse-h5ad@1.1.3': {} - - '@platforma-open/milaboratories.samples-and-data.parse-seurat@1.1.1': {} - - '@platforma-open/milaboratories.samples-and-data.ui@2.9.1': {} - - '@platforma-open/milaboratories.samples-and-data.workflow@2.7.0': - dependencies: - '@platforma-open/milaboratories.samples-and-data.parse-h5ad': 1.1.3 - '@platforma-open/milaboratories.samples-and-data.parse-seurat': 1.1.1 - '@platforma-sdk/workflow-tengo': 5.13.3 - - '@platforma-open/milaboratories.samples-and-data@1.17.1': - dependencies: - '@platforma-open/milaboratories.samples-and-data.model': 2.8.0 - '@platforma-open/milaboratories.samples-and-data.ui': 2.9.1 - '@platforma-open/milaboratories.samples-and-data.workflow': 2.7.0 - '@platforma-sdk/model': 1.65.4 - - '@platforma-open/milaboratories.software-mixcr@4.7.0-347-develop': {} - - '@platforma-open/milaboratories.software-ptabler.schema@1.14.5': - dependencies: - '@milaboratories/pl-model-common': 1.31.1 - - '@platforma-open/milaboratories.software-ptabler.schema@1.14.8': - dependencies: - '@milaboratories/pl-model-common': 1.31.2 + '@platforma-open/milaboratories.samples-and-data@1.20.0': {} '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': dependencies: '@milaboratories/pl-model-common': 1.48.0 - '@platforma-open/milaboratories.software-ptabler@1.15.0': {} - - '@platforma-open/milaboratories.software-ptabler@1.15.2': {} - '@platforma-open/milaboratories.software-ptabler@2.1.8': {} - '@platforma-open/milaboratories.software-ptexter@1.2.2': {} - '@platforma-open/milaboratories.software-ptexter@1.2.4': {} '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': {} @@ -9174,13 +8576,6 @@ snapshots: '@platforma-open/milaboratories.software-small-binaries.table-converter@1.3.5': {} - '@platforma-open/milaboratories.software-small-binaries@2.0.4': - dependencies: - '@platforma-open/milaboratories.software-small-binaries.hello-world': 1.1.7 - '@platforma-open/milaboratories.software-small-binaries.hello-world-py': 1.0.10 - '@platforma-open/milaboratories.software-small-binaries.mnz-client': 1.6.5 - '@platforma-open/milaboratories.software-small-binaries.table-converter': 1.3.5 - '@platforma-open/milaboratories.software-small-binaries@2.1.1': dependencies: '@platforma-open/milaboratories.software-small-binaries.hello-world': 1.1.7 @@ -9225,32 +8620,6 @@ snapshots: dependencies: yaml: 2.8.1 - '@platforma-sdk/model@1.63.1': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-error-like': 1.12.9 - '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/pl-model-middle-layer': 1.16.3 - '@milaboratories/ptabler-expression-js': 1.2.5 - canonicalize: 2.1.0 - es-toolkit: 1.42.0 - fast-json-patch: 3.1.1 - utility-types: 3.11.0 - zod: 3.23.8 - - '@platforma-sdk/model@1.65.4': - dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-error-like': 1.12.9 - '@milaboratories/pl-model-common': 1.31.2 - '@milaboratories/pl-model-middle-layer': 1.16.4 - '@milaboratories/ptabler-expression-js': 1.2.8 - canonicalize: 2.1.0 - es-toolkit: 1.42.0 - fast-json-patch: 3.1.1 - utility-types: 3.11.0 - zod: 3.25.76 - '@platforma-sdk/model@1.83.0': dependencies: '@milaboratories/helpers': 1.14.5 @@ -9314,42 +8683,7 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.63.8(typescript@7.0.2)': - dependencies: - '@milaboratories/pf-spec-driver': 1.2.4 - '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/uikit': 2.11.7(typescript@7.0.2) - '@platforma-sdk/model': 1.63.1 - '@types/d3-format': 3.0.4 - '@types/node': 24.5.2 - '@types/semver': 7.7.0 - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) - '@zip.js/zip.js': 2.8.11 - ag-grid-enterprise: 34.1.2 - ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@7.0.2)) - canonicalize: 2.1.0 - d3-format: 3.1.0 - es-toolkit: 1.42.0 - fast-json-patch: 3.1.1 - lru-cache: 11.2.4 - vue: 3.5.25(typescript@7.0.2) - zod: 3.23.8 - transitivePeerDependencies: - - '@bytecodealliance/preview2-shim' - - async-validator - - axios - - change-case - - drauu - - focus-trap - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - typescript - - universal-cookie - - '@platforma-sdk/ui-vue@1.83.1(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': + '@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': dependencies: '@milaboratories/columns-collection-driver': 0.2.4 '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.8) @@ -9386,20 +8720,6 @@ snapshots: - typescript - universal-cookie - '@platforma-sdk/workflow-tengo@5.12.0': - dependencies: - '@milaboratories/software-pframes-conv': 2.2.9 - '@platforma-open/milaboratories.software-ptabler': 1.15.0 - '@platforma-open/milaboratories.software-ptexter': 1.2.2 - '@platforma-open/milaboratories.software-small-binaries': 2.0.4 - - '@platforma-sdk/workflow-tengo@5.13.3': - dependencies: - '@milaboratories/software-pframes-conv': 2.2.9 - '@platforma-open/milaboratories.software-ptabler': 1.15.2 - '@platforma-open/milaboratories.software-ptexter': 1.2.2 - '@platforma-open/milaboratories.software-small-binaries': 2.0.4 - '@platforma-sdk/workflow-tengo@6.8.3': dependencies: '@milaboratories/pframes-rs-wasip2': 1.1.56 @@ -12461,8 +11781,6 @@ snapshots: '@types/minimatch': 6.0.0 '@types/node': 25.3.2 - '@types/json-schema@7.0.15': {} - '@types/minimatch@6.0.0': dependencies: minimatch: 10.2.5 @@ -12800,13 +12118,6 @@ snapshots: '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@5.6.3)) vue: 3.5.25(typescript@5.6.3) - '@vueuse/core@13.8.0(vue@3.5.25(typescript@7.0.2))': - dependencies: - '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 13.8.0 - '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@7.0.2)) - vue: 3.5.25(typescript@7.0.2) - '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.24(typescript@5.6.3))': dependencies: '@vueuse/core': 13.8.0(vue@3.5.24(typescript@5.6.3)) @@ -12815,14 +12126,6 @@ snapshots: optionalDependencies: sortablejs: 1.15.6 - '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@7.0.2))': - dependencies: - '@vueuse/core': 13.8.0(vue@3.5.25(typescript@7.0.2)) - '@vueuse/shared': 13.8.0(vue@3.5.25(typescript@7.0.2)) - vue: 3.5.25(typescript@7.0.2) - optionalDependencies: - sortablejs: 1.15.6 - '@vueuse/metadata@13.8.0': {} '@vueuse/shared@13.8.0(vue@3.5.24(typescript@5.6.3))': @@ -12833,10 +12136,6 @@ snapshots: dependencies: vue: 3.5.25(typescript@5.6.3) - '@vueuse/shared@13.8.0(vue@3.5.25(typescript@7.0.2))': - dependencies: - vue: 3.5.25(typescript@7.0.2) - '@yuku-codegen/binding-android-arm64@0.8.7': optional: true @@ -12921,10 +12220,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - acorn@8.15.0: {} ag-charts-community@12.1.2: @@ -12973,11 +12268,6 @@ snapshots: ag-grid-community: 34.1.2 vue: 3.5.25(typescript@5.6.3) - ag-grid-vue3@34.1.2(vue@3.5.25(typescript@7.0.2)): - dependencies: - ag-grid-community: 34.1.2 - vue: 3.5.25(typescript@7.0.2) - agent-base@7.1.3: {} ajv-draft-04@1.0.0(ajv@8.18.0): @@ -12990,13 +12280,6 @@ snapshots: ajv: 8.18.0 optional: true - ajv@6.15.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -13182,19 +12465,12 @@ snapshots: bytestreamjs@2.0.1: {} - callsites@3.1.0: {} - caniuse-lite@1.0.30001774: {} canonicalize@2.1.0: {} chai@6.2.2: {} - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chardet@2.1.1: {} chownr@1.1.4: {} @@ -13389,10 +12665,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -13441,8 +12713,6 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} - denque@2.1.0: {} detect-indent@6.1.0: {} @@ -13494,82 +12764,14 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@4.0.0: {} - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@9.39.4: - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.15.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - esprima@4.0.1: {} - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 - esutils@2.0.3: {} - event-target-shim@5.0.1: {} events@3.3.0: {} @@ -13592,7 +12794,8 @@ snapshots: extendable-error@0.1.7: {} - fast-deep-equal@3.1.3: {} + fast-deep-equal@3.1.3: + optional: true fast-fifo@1.3.2: {} @@ -13606,10 +12809,6 @@ snapshots: fast-json-patch@3.1.1: {} - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - fast-uri@3.1.0: optional: true @@ -13631,10 +12830,6 @@ snapshots: fecha@4.2.3: {} - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-type@3.9.0: {} file-type@5.2.0: {} @@ -13652,18 +12847,6 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.4.2 - keyv: 4.5.4 - - flatted@3.4.2: {} - fn.name@1.1.0: {} foreground-child@3.3.0: @@ -13722,10 +12905,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -13744,8 +12923,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@14.0.0: {} - globby@10.0.1: dependencies: '@types/glob': 7.2.0 @@ -13795,16 +12972,9 @@ snapshots: immer@11.1.4: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - import-lazy@4.0.0: optional: true - imurmurhash@0.1.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -13897,15 +13067,9 @@ snapshots: jsesc@3.1.0: {} - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: optional: true - json-stable-stringify-without-jsonify@1.0.1: {} - json-stringify-safe@5.0.1: {} json5@2.2.3: {} @@ -13925,10 +13089,6 @@ snapshots: kdbush@4.0.2: {} - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - kolorist@1.8.0: {} kuler@2.0.0: {} @@ -13937,11 +13097,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - lightningcss-android-arm64@1.32.0: optional: true @@ -14001,14 +13156,8 @@ snapshots: dependencies: p-locate: 4.1.0 - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - lodash.camelcase@4.3.0: {} - lodash.merge@4.6.2: {} - lodash.startcase@4.4.0: {} lodash@4.17.23: {} @@ -14132,8 +13281,6 @@ snapshots: napi-build-utils@2.0.0: {} - natural-compare@1.4.0: {} - nice-try@1.0.5: {} node-abi@3.93.0: @@ -14180,15 +13327,6 @@ snapshots: openapi-typescript-helpers@0.0.15: {} - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - outdent@0.5.0: {} oxfmt@0.35.0: @@ -14271,18 +13409,10 @@ snapshots: dependencies: p-try: 2.2.0 - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - p-map@2.1.0: {} p-try@2.2.0: {} @@ -14291,10 +13421,6 @@ snapshots: package-manager-detector@0.2.2: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -14378,8 +13504,6 @@ snapshots: tar-fs: 2.1.5 tunnel-agent: 0.6.0 - prelude-ls@1.2.1: {} - prettier@2.8.8: {} process-nextick-args@2.0.1: {} @@ -14407,8 +13531,6 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@2.3.1: {} - pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -14503,8 +13625,6 @@ snapshots: resize-observer-polyfill@1.5.1: {} - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -14784,7 +13904,8 @@ snapshots: strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} + strip-json-comments@3.1.1: + optional: true strnum@2.1.1: {} @@ -14919,10 +14040,6 @@ snapshots: tweetnacl@0.14.5: {} - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - typescript@3.9.10: {} typescript@5.4.5: {} @@ -15014,10 +14131,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - util-deprecate@1.0.2: {} utility-types@3.11.0: {} @@ -15196,8 +14309,6 @@ snapshots: triple-beam: 1.4.1 winston-transport: 4.9.0 - word-wrap@1.2.5: {} - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -15248,8 +14359,6 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yocto-queue@0.1.0: {} - yoctocolors-cjs@2.1.3: {} yuku-ast@0.8.7: @@ -15297,6 +14406,4 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 - zod@3.23.8: {} - zod@3.25.76: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 813abe4..62e3354 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,12 +15,18 @@ catalog: "@platforma-sdk/block-tools": 2.14.3 "@platforma-sdk/block-kind": 1.1.0 "@platforma-sdk/model": 1.83.0 - "@platforma-sdk/ui-vue": 1.83.1 + # Held one patch behind the structurer's derived pin. ui-vue 1.83.1 stopped + # publishing dist/components/*.vue.d.ts, which its own dist/lib.d.ts + # re-exports. The slim facade inlines every type in the model's public + # surface, and BlockData's GraphMakerState reaches ui-vue through + # graph-maker/dist/forms, so the facade build fails on four unresolvable + # .vue specifiers. Every version from 1.79.20 to 1.83.0 ships them. Drop + # this pin once a fixed ui-vue is published. + "@platforma-sdk/ui-vue": 1.83.0 "@platforma-sdk/test": 1.83.2 "@milaboratories/helpers": 1.14.5 "@platforma-sdk/tengo-builder": 4.0.23 "@platforma-sdk/package-builder": 3.15.0 - "@platforma-sdk/blocks-deps-updater": 2.2.0 "@platforma-open/milaboratories.runenv-python-3": 1.8.2 @@ -29,7 +35,6 @@ catalog: "turbo": 2.8.11 "typescript": ~5.6.3 "vitest": ^4.0.18 - "eslint": ^9.38.0 "shx": 0.4.0 "@changesets/cli": 2.29.8 diff --git a/test/package.json b/test/package.json index 0d61309..725ebe3 100644 --- a/test/package.json +++ b/test/package.json @@ -13,10 +13,8 @@ "check": "ts-builder check --target block-test" }, "dependencies": { - "@platforma-open/milaboratories.mixcr-clonotyping-2": "^2.18.3", - "@platforma-open/milaboratories.mixcr-clonotyping-2.model": "^1.25.2", - "@platforma-open/milaboratories.samples-and-data": "^1.17.1", - "@platforma-open/milaboratories.samples-and-data.model": "^2.8.0", + "@platforma-open/milaboratories.mixcr-clonotyping-2": "^2.22.0", + "@platforma-open/milaboratories.samples-and-data": "^1.20.0", "@platforma-open/milaboratories.sequence-properties.model": "workspace:*", "@platforma-open/milaboratories.xsv-import.model": "^1.0.4", "@platforma-sdk/model": "catalog:", @@ -26,7 +24,6 @@ "@milaboratories/ts-builder": "catalog:", "@milaboratories/ts-configs": "catalog:", "@platforma-sdk/test": "catalog:", - "eslint": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/test/src/helpers.ts b/test/src/helpers.ts index 50cea01..1667a5c 100644 --- a/test/src/helpers.ts +++ b/test/src/helpers.ts @@ -16,22 +16,27 @@ * runnable end-to-end. Used by the canary test and by * `setupTwoSeqPropsCoInstances` to seed the two-instance dedup test. * - * V3 plumbing: both upstreams (`samples-and-data@^1.17` and - * `mixcr-clonotyping-2@^2.18`) are `PlatformaV3` blocks and reject + * V3 plumbing: both upstreams (`samples-and-data@^1.20` and + * `mixcr-clonotyping-2@^2.22`) are `PlatformaV3` blocks and reject * `setBlockArgs` with `ModelAPIVersionMismatchError`. The helpers below use * `mutateBlockStorage({ operation: 'update-block-data', value: })` * which is the V3 update path. * + * Both upstreams are slim facades, so a block is added by its exported + * `BlockPointer` and not by the retired `blockSpec`. The block-data + * literals below carry no `satisfies BlockData`: a facade bundles its + * own copy of the brand symbols behind `PlId` and `CanonicalizedJson`, so + * those types never unify with our catalog SDK's. `mutateBlockStorage` takes + * the value as `unknown` and the brands are erased at runtime. + * * Each blockTest spins up a fresh platforma container, so co-locating * multiple assertions per test is the standard cost optimization. */ -import { blockSpec as samplesAndDataBlockSpec } from "@platforma-open/milaboratories.samples-and-data"; -import type { BlockData as SamplesAndDataBlockData } from "@platforma-open/milaboratories.samples-and-data.model"; -import { blockSpec as mixcrClonotypingBlockSpec } from "@platforma-open/milaboratories.mixcr-clonotyping-2"; -import type { BlockData as MixcrClonotypingBlockData } from "@platforma-open/milaboratories.mixcr-clonotyping-2.model"; -import { blockSpec as seqPropsBlockSpec } from "this-block"; -import { uniquePlId } from "@platforma-sdk/model"; +import { MixcrClonotyping2BlockPointer } from "@platforma-open/milaboratories.mixcr-clonotyping-2"; +import { SamplesAndDataBlockPointer } from "@platforma-open/milaboratories.samples-and-data"; +import { createPlDataTableStateV2, uniquePlId } from "@platforma-sdk/model"; +import { SequencePropertiesBlockPointer } from "this-block"; import type { ML, RawHelpers } from "@platforma-sdk/test"; import { awaitStableState } from "@platforma-sdk/test"; import type { expect as vitestExpect } from "vitest"; @@ -50,13 +55,13 @@ export async function addSequenceProperties( ctx: TestCtx, label = "Sequence Properties", ): Promise { - return await ctx.rawPrj.addBlock(label, seqPropsBlockSpec); + return await ctx.rawPrj.addBlock(label, SequencePropertiesBlockPointer); } /** * Configure samples-and-data with a one-sample fastq dataset. Uses V3 * mutateBlockStorage with the full BlockData payload (V1 setBlockArgs is - * rejected by samples-and-data@^1.17 — `PlatformaV3` model). + * rejected by samples-and-data@^1.20 — `PlatformaV3` model). */ async function configureSamplesAndData( ctx: TestCtx, @@ -91,7 +96,7 @@ async function configureSamplesAndData( h5adFilesToPreprocess: [], seuratFilesToPreprocess: [], suggestedImport: false, - } satisfies SamplesAndDataBlockData, + }, }); } @@ -120,22 +125,10 @@ async function configureMixcrClonotyping( throw new Error("mixcr-clonotyping-2 inputOptions did not populate after samples-and-data"); } - // mixcr-clonotyping-2@2.18 pins @platforma-sdk/model@1.63.1, whose - // PlDataTableStateV2 is version 5. Our catalog SDK (1.77.0) exposes - // createPlDataTableStateV2 that emits version 7. The two shapes are - // structurally close, but the version literal differs and TS treats - // them as incompatible. Constructing the v5 literal directly avoids - // the cross-version helper and keeps the type fully checked. - const tableState: MixcrClonotypingBlockData["tableState"] = { - version: 5, - stateCache: [], - pTableParams: { - sourceId: null, - hiddenColIds: null, - filters: null, - sorting: [], - }, - }; + // mixcr-clonotyping-2@^2.22 is built against a current SDK, so its + // tableState is the same PlDataTableStateV2 shape our catalog SDK emits. + // The hand-rolled version-5 literal the old pin needed is gone. + const tableState = createPlDataTableStateV2(); await rawPrj.mutateBlockStorage(clonotypingBlockId, { operation: "update-block-data", @@ -147,7 +140,7 @@ async function configureMixcrClonotyping( chains, tableState, runMode: "full", - } satisfies MixcrClonotypingBlockData, + }, }); } @@ -169,8 +162,11 @@ export async function setupMixcrAnchor( const chains = opts.chains ?? ["IGHeavy", "IGLight"]; const { rawPrj, helpers } = ctx; - const sndBlockId = await rawPrj.addBlock("Samples & Data", samplesAndDataBlockSpec); - const clonotypingBlockId = await rawPrj.addBlock("MiXCR Clonotyping", mixcrClonotypingBlockSpec); + const sndBlockId = await rawPrj.addBlock("Samples & Data", SamplesAndDataBlockPointer); + const clonotypingBlockId = await rawPrj.addBlock( + "MiXCR Clonotyping", + MixcrClonotyping2BlockPointer, + ); const seqPropsBlockId = await addSequenceProperties(ctx); await configureSamplesAndData(ctx, sndBlockId, opts); diff --git a/test/src/wf.test.ts b/test/src/wf.test.ts index 0d7965f..31813c5 100644 --- a/test/src/wf.test.ts +++ b/test/src/wf.test.ts @@ -35,7 +35,7 @@ import type { platforma } from "@platforma-open/milaboratories.sequence-properti import type { InferBlockState } from "@platforma-sdk/model"; import { wrapOutputs } from "@platforma-sdk/model"; import { awaitStableState, blockTest } from "@platforma-sdk/test"; -import { blockSpec as seqPropsBlockSpec } from "this-block"; +import { SequencePropertiesBlockPointer } from "this-block"; import { describe, it } from "vitest"; // --------------------------------------------------------------------------- @@ -48,7 +48,7 @@ import { describe, it } from "vitest"; // argsValid === false / no run. This is the universal smoke test — // confirms test scaffolding + backend connection + dev-block load all work. blockTest("empty inputs", { timeout: 30000 }, async ({ rawPrj, expect }) => { - const blockId = await rawPrj.addBlock("Sequence Properties", seqPropsBlockSpec); + const blockId = await rawPrj.addBlock("Sequence Properties", SequencePropertiesBlockPointer); const stableState = (await awaitStableState( rawPrj.getBlockState(blockId), 20000, From 849d8eb07ea60bb36992f97eba52d55e172bde64 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 16:20:48 +0200 Subject: [PATCH 3/8] chore: add changeset for the structurer migration --- .changeset/migrate-to-structurer.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .changeset/migrate-to-structurer.md diff --git a/.changeset/migrate-to-structurer.md b/.changeset/migrate-to-structurer.md new file mode 100644 index 0000000..1d9b98b --- /dev/null +++ b/.changeset/migrate-to-structurer.md @@ -0,0 +1,27 @@ +--- +'@platforma-open/milaboratories.sequence-properties': minor +'@platforma-open/milaboratories.sequence-properties.model': minor +'@platforma-open/milaboratories.sequence-properties.ui': patch +'@platforma-open/milaboratories.sequence-properties.workflow': patch +'@platforma-open/milaboratories.sequence-properties.software': patch +--- + +Migrate onto the structurer and upgrade the SDK + +The block now follows the canonical `block-tools structure` layout on +block-tools 2.14.3, with the SDK bumped to model/ui-vue 1.83.x, workflow-tengo +6.8.3, tengo-builder 4.0.23 and test 1.83.2. + +Two changes are visible outside the block: + +- **A new `kind` component** declares the block's identity and its init-params + contract. `BlockParams` is `{ inputAnchor?: PlRef }`, so a project template + can seed a new instance with the dataset to analyse. Every other field in the + block's data is view state and still defaults. +- **`block` is now a slim facade.** It publishes with no dependencies, bundles + the whole block into `dist/` plus `block-pack/`, and exports + `SequencePropertiesBlockPointer` for consumers that add the block from code. + +`@platforma-sdk/ui-vue` is held at 1.83.0: 1.83.1 stopped publishing the +component declaration files its own type entry re-exports, which breaks the +facade build. The pin goes away once a fixed ui-vue is out. From c340cab5bfac0058f9ab987319818d776aafca57 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 16:44:58 +0200 Subject: [PATCH 4/8] feat(workflow): follow the antibody path when the input declares modality vdj MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit synthetic-repertoire-profiler runs one pipeline over both antibody/TCR parents and designed libraries, and everything it emits sits on the modality-neutral pl7.app/variantKey axis. It keeps pl7.app/repertoire/extractionRunId in both cases, so the run-id heuristic classified a VDJ run as amplicon and scanned it as a single whole sequence — the FR1-FR4 regions it emits, CDR3 included, were never read. Nothing failed; the run just produced whole-sequence properties for a V-domain. The profiler declares the kind it produced in the entity-axis domain, so read that first: `vdj` maps to antibody_tcr_universal, the branch that already existed for VDJ-on-variantKey, and `amplicon` maps to amplicon. Everything below the declaration is unchanged, so an input without one behaves exactly as before. Nothing else in the pipeline needed changing, and each step was checked against the producer rather than assumed: - The profiler's region columns are `pl7.app/sequence` with the region name in pl7.app/feature. The universalSequences bundle entry already matches those, and vdjSequences is empty for this producer, so the existing fallback finds them. Its whole-variant amplicon-sequence column is matched too and dropped by the REQUIRED_FEATURES filter. - A vdj run always carries exactly FR1-FR4: the profiler's model rejects a vdj-scheme parent with any other region set, and germline auto-detect hardcodes the same seven. Coverage lands on full_chain. - No scClonotypeChain is emitted, so the existing bulk-without-chain default gives one chain "A". hasFv needs both chains, and the profiler frames variants against one parent with no VH/VL pairing, so Fv columns stay absent. - pipeline.py branches on mode == "peptide" against everything else, so antibody_tcr_universal reaches run_antibody_tcr with no Python change. R13b wording: a declared vdj input arrives with no receptor, and the profiler cannot emit one — germline auto-detect builds its reference from the user's own parents, so there is no library locus to read. The existing notice tells the user to pick a MiXCR preset that emits the annotation, which is a dead end for this data. Added receptorNotDeclared for that case; receptorNotDetected keeps its text for MiXCR input, where the advice is actionable. Per spec R13a the receptor affects labels only, so the antibody default mislabels without changing column identity. detectMode moved out of main.tpl.tengo into modality.lib.tengo so it could be unit-tested — pure synchronous logic, no resources. modality.test.tengo covers all four producers, both declared modalities, an unrecognised modality value, the declaration-beats-run-id ordering, and the undeclared back-compatibility path. Verified by mutation: moving the declaration read below the run-id checks fails exactly the two tests that assert the ordering. The workflow test script is `pl-tengo test`, matching blocks/repertoire-labeling; the dead vitest placeholder (one it.skip) is gone, and the structurer dropped the now-unused vitest config and tsconfig with it. Recorded as SD-010, including why this block keeps the soft partial-region messages where antibody-sequence-liabilities hard-asserts CDR3 presence. Spec: synthetic-repertoire-profiler/dms-modality.md (atom A-0060). --- .changeset/read-declared-modality.md | 27 +++++ docs/spec-deviations.md | 127 ++++++++++++++++++++ workflow/package.json | 5 +- workflow/src/main.tpl.tengo | 45 ++----- workflow/src/messages.lib.tengo | 12 ++ workflow/src/modality.lib.tengo | 95 +++++++++++++++ workflow/src/modality.test.tengo | 172 +++++++++++++++++++++++++++ workflow/src/wf.test.ts | 9 -- workflow/tsconfig.json | 16 --- workflow/vitest.config.mts | 9 -- 10 files changed, 447 insertions(+), 70 deletions(-) create mode 100644 .changeset/read-declared-modality.md create mode 100644 workflow/src/modality.lib.tengo create mode 100644 workflow/src/modality.test.tengo delete mode 100644 workflow/src/wf.test.ts delete mode 100644 workflow/tsconfig.json delete mode 100644 workflow/vitest.config.mts diff --git a/.changeset/read-declared-modality.md b/.changeset/read-declared-modality.md new file mode 100644 index 0000000..ec19478 --- /dev/null +++ b/.changeset/read-declared-modality.md @@ -0,0 +1,27 @@ +--- +'@platforma-open/milaboratories.sequence-properties': minor +'@platforma-open/milaboratories.sequence-properties.workflow': minor +--- + +Read the input's declared `pl7.app/modality` instead of guessing from the run-id key + +`synthetic-repertoire-profiler` runs one pipeline over both antibody/TCR parents and designed +libraries, and everything it emits sits on the modality-neutral `pl7.app/variantKey` axis. It +keeps the same `pl7.app/repertoire/extractionRunId` key in both cases, so a VDJ run used to be +read as amplicon and scanned as one whole sequence — its FR1–FR4 regions, CDR3 included, were +never used. + +The profiler now declares which kind of repertoire it produced in the entity-axis domain, and +this block reads that declaration: `vdj` takes the per-region antibody/TCR path, `amplicon` the +whole-sequence path. A VDJ run therefore gets CDR3 charge and hydrophobicity, and full-chain +properties, the same as MiXCR input does. + +Datasets with no declaration keep the previous behaviour exactly, so projects made before the +declaration landed are unaffected. + +Two smaller things follow from it. A declared VDJ input carries no receptor — the profiler has +none to emit, since germline auto-detect builds its reference from the user's own parent +sequences — so the "receptor not detected" notice no longer tells those users to pick a MiXCR +preset they never used; it says the labels defaulted to the antibody convention and that only +labels are affected. And modality detection moved into its own workflow module so it could be +unit-tested; `pnpm test` on the workflow package now runs those tests. diff --git a/docs/spec-deviations.md b/docs/spec-deviations.md index bf98484..6f61140 100644 --- a/docs/spec-deviations.md +++ b/docs/spec-deviations.md @@ -539,3 +539,130 @@ chart renders without the reference line. `core/visualizations/packages/graph-maker/src/utils/createChartSettingsForRender/composeScatterplotSettings.ts`, `composeHistogramSettings.ts`, and `getAxesDataFromForms.ts`. - `AxesState` shape: `core/visualizations/packages/graph-maker/src/constantsCommon.ts`. + +--- + +## SD-010: Read the Declared `pl7.app/modality` Before the Run-Id Heuristics + +**Status:** applied +**Date:** 2026-08-26 +**Affected file:** `workflow/src/modality.lib.tengo` (`declaredMode`, `detectMode`, +`isDeclared`), `workflow/src/main.tpl.tengo` (detection loop, R13b branch), +`workflow/src/messages.lib.tengo` (`receptorNotDeclared`) + +### Symptom + +Spec README derives modality from the entity-axis name plus the run-id key in +its domain. `synthetic-repertoire-profiler` now runs one pipeline over both +antibody/TCR parents and designed libraries, and keeps +`pl7.app/repertoire/extractionRunId` on the entity axis in **both** cases. Under +the spec's rule, a VDJ profiler run is classified `amplicon` and scanned as a +single whole sequence — its FR1–FR4 regions, CDR3 included, are never read. + +Nothing crashes. The run produces whole-sequence properties for a V-domain and +labels them amplicon, so the defect surfaces as missing CDR-H3 columns rather +than as an error. + +### Root cause + +`pl7.app/variantKey` is deliberately modality-neutral; three producers share it. +The run-id key was the only discriminator available, and it does not vary with +the profiler's modality. The profiler therefore declares the modality outright, +in the entity-axis domain: `pl7.app/modality: vdj | amplicon` +(`synthetic-repertoire-profiler/workflow/src/column-specs.lib.tengo`, +`runScopeDomain`). + +### Trigger + +Any `synthetic-repertoire-profiler` run whose region configuration is VDJ — +germline auto-detect, or any parent on the `vdj` region scheme. + +### Impact + +A declared `vdj` input now routes to `antibody_tcr_universal`, the branch that +already existed for VDJ-on-`variantKey`. Nothing else in the pipeline changed: + +- **Region columns.** The profiler emits `pl7.app/sequence` with the region name + in `pl7.app/feature`. The `universalSequences` bundle entry already matches + those (name + `alphabet: aminoacid`, no feature filter) and `vdjSequences` is + empty for this producer, so the existing fallback picks them up. The + whole-variant `amplicon-sequence` column is matched too and dropped by the + `REQUIRED_FEATURES` filter. +- **Coverage.** A `vdj` run always carries the exact FR1–FR4 partition: the + profiler's model rejects a `vdj`-scheme parent whose regions are not exactly + `VDJ_REGION_NAMES`, and germline auto-detect hardcodes the same seven. So the + input lands on `full_chain`. +- **Chain.** No `pl7.app/vdj/scClonotypeChain` is emitted, so the existing + bulk-without-chain default applies and the single chain is `A`. +- **Fv.** `hasFv` needs full coverage on both `A` and `B`. The profiler frames + variants against one parent at a time and has no VH/VL pairing, so Fv columns + are correctly absent. +- **Python.** `pipeline.py` branches on `mode == "peptide"` against everything + else, so `antibody_tcr_universal` reaches `run_antibody_tcr` unchanged. + +Inputs without the declaration are untouched — projects made before it landed +keep the run-id behaviour exactly. + +### Options considered + +**A. Read the declaration first, keep every heuristic below it. [chosen]** +Five lines in `detectMode`. Routes a declared `vdj` run into a branch that +already exists, and leaves undeclared inputs bit-identical. + +**B. Keep inferring, and treat the presence of aa region columns as the VDJ +signal.** Works without a producer contract, but guesses where a declaration +exists, and a partial-region profiler run would flip modality on data shape +rather than on what the producer said it made. + +**C. Ask the user.** A control the upstream block has already answered. It could +also be set to contradict the declaration. + +### Decision + +**A.** The producer states the fact; reading it beats re-deriving it. Ordering +the declaration ahead of the run-id checks is the whole point, and +`Test_detectMode_declarationBeatsRunIdKey` pins it. + +### Divergence from `antibody-sequence-liabilities` + +That block made the same migration and **hard-asserts** that a declared `vdj` +input carries a CDR3 region column. This block does not: partial region coverage +is already a first-class case here, with `partialChainNoCdr3` / +`partialChainMissingFullChain` reporting the exact count in the UI. A missing +CDR3 on a declared `vdj` run is a producer-side gap either way; surfacing it as +an info message that still yields whatever columns are computable is the posture +this block takes everywhere else, so it is kept. + +### R13b wording + +A declared `vdj` input reaches the receptor warning with no receptor resolved, +because the profiler emits neither `pl7.app/vdj/receptor` nor +`pl7.app/vdj/chain` — and cannot: germline auto-detect builds its reference from +the user's own parent sequences, so there is no library locus to read. R13b's +text tells the user to pick a MiXCR preset that emits the annotation, which is a +dead end for this input. `messages.receptorNotDeclared` states what the labels +defaulted to and that only labels are affected; `receptorNotDetected` keeps its +original text for MiXCR inputs, where the advice is actionable. + +Per spec R13a the receptor affects labels only — PColumn name and chain domain +are unchanged — so defaulting to the antibody convention mislabels but does not +change column identity. + +### Extraction + +`detectMode` moved from `main.tpl.tengo` into `modality.lib.tengo` so it could be +unit-tested. It is pure synchronous logic with no resources, which is what +Tengo unit tests are for; `modality.test.tengo` covers all four producers, both +declared modalities, an unrecognised modality value, the declaration-beats-run-id +ordering, and the undeclared back-compatibility path. The workflow `test` script +is `pl-tengo test`, matching `blocks/repertoire-labeling`. + +### References + +- Producer declaration: `synthetic-repertoire-profiler/workflow/src/column-specs.lib.tengo` + (`runScopeDomain`), modality derived in `workflow/src/main.tpl.tengo`. +- FR1–FR4 guarantee: `synthetic-repertoire-profiler/model/src/index.ts` + (`VDJ_REGION_NAMES`), `workflow/src/region-config.lib.tengo` (`vdjAuto`). +- Cross-block survey and spec atom A-0060: `synthetic-repertoire-profiler/dms-modality.md`. +- Reference migration: `antibody-sequence-liabilities/model/src/index.ts` + (`declaredModality`), `workflow/src/main.tpl.tengo`. diff --git a/workflow/package.json b/workflow/package.json index 9a29c40..f81e343 100644 --- a/workflow/package.json +++ b/workflow/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "build": "shx rm -rf dist && pl-tengo build", - "test": "vitest run --passWithNoTests", + "test": "pl-tengo test", "format": "/usr/bin/env emacs --script ./format.el || echo 'No emacs.'", "check": "pl-tengo check" }, @@ -17,8 +17,7 @@ "devDependencies": { "@platforma-sdk/tengo-builder": "catalog:", "@platforma-sdk/test": "catalog:", - "shx": "catalog:", - "vitest": "catalog:" + "shx": "catalog:" }, "peerDependencies": {} } diff --git a/workflow/src/main.tpl.tengo b/workflow/src/main.tpl.tengo index 42ac142..79e2ff4 100644 --- a/workflow/src/main.tpl.tengo +++ b/workflow/src/main.tpl.tengo @@ -1,7 +1,7 @@ // Sequence Properties — workflow root. // -// Detects modality (peptide vs antibody/TCR), collects amino-acid sequence -// columns, builds a per-entity TSV, runs the Python computation step, +// Picks the analysis path for the input (modality.lib.tengo), collects +// amino-acid sequence columns, builds a per-entity TSV, runs the Python step, // imports its outputs into a unified PColumn pFrame, and defers the // info-blob assembly to info.tpl.tengo (which waits on Python's stats). @@ -19,6 +19,7 @@ maps := import("@platforma-sdk/workflow-tengo:maps") constants := import("@platforma-sdk/workflow-tengo:constants") messages := import(":messages") columnSpecs := import(":columns") +modality := import(":modality") infoTpl := assets.importTemplate(":info") @@ -33,34 +34,6 @@ canonicalJsonResource := func(value) { REQUIRED_FEATURES := ["FR1", "CDR1", "FR2", "CDR2", "FR3", "CDR3", "FR4"] -detectMode := func(axisSpec) { - dom := axisSpec.domain - if axisSpec.name == "pl7.app/variantKey" { - if dom != undefined && dom["pl7.app/peptide/extractionRunId"] != undefined { - return "peptide" - } - // synthetic-repertoire-profiler keys variants on the same axis but stamps - // pl7.app/repertoire/extractionRunId. Its whole-variant sequence gets the - // same whole-sequence property treatment as a peptide (see SEQ-mode below). - if dom != undefined && dom["pl7.app/repertoire/extractionRunId"] != undefined { - return "amplicon" - } - if dom != undefined && dom["pl7.app/vdj/clonotypingRunId"] != undefined { - return "antibody_tcr_universal" - } - } - if axisSpec.name == "pl7.app/vdj/cloneId" { - return "antibody_tcr_legacy_bulk" - } - if axisSpec.name == "pl7.app/vdj/clonotypeKey" { - return "antibody_tcr_legacy_bulk" - } - if axisSpec.name == "pl7.app/vdj/scClonotypeKey" { - return "antibody_tcr_legacy_sc" - } - return "" -} - contains := func(arr, x) { for v in arr { if v == x { return true } @@ -172,7 +145,7 @@ wf.body(func(args) { keyAxisSpec := undefined mode := "" for i, axisSpec in axes { - m := detectMode(axisSpec) + m := modality.detectMode(axisSpec) if m != "" { keyAxisIdx = i keyAxisSpec = axisSpec @@ -344,9 +317,15 @@ wf.body(func(args) { if receptor == "TCRGD" { infoMessages += [messages.gammaDeltaTcr()] } - // R13b: warn when no recognised receptor was seen — defaults to IG. + // R13b: warn when no recognised receptor was seen — defaults to IG. A producer + // that declared its modality has no receptor to emit, so it gets wording that + // does not send the user after a MiXCR preset they never used. if !receptorSeen && anyChain { - infoMessages += [messages.receptorNotDetected()] + if modality.isDeclared(keyAxisSpec) { + infoMessages += [messages.receptorNotDeclared()] + } else { + infoMessages += [messages.receptorNotDetected()] + } } } diff --git a/workflow/src/messages.lib.tengo b/workflow/src/messages.lib.tengo index c0d7b11..2ca38d4 100644 --- a/workflow/src/messages.lib.tengo +++ b/workflow/src/messages.lib.tengo @@ -39,6 +39,17 @@ receptorNotDetected := func() { "Use a MiXCR preset that emits the receptor annotation if this is a TCR dataset." } +// R13b for an input that declared pl7.app/modality: vdj. The message above points +// at a MiXCR preset, which is a dead end here — synthetic-repertoire-profiler has +// no receptor to emit at all (germline auto-detect builds its reference from the +// user's own parent sequences, so there is no library locus to read). Say what the +// labels defaulted to and that only the labels are affected. +receptorNotDeclared := func() { + return "This dataset does not say whether it holds antibody or TCR sequences, so chain " + + "labels follow the antibody convention (CDR-H3, VH). The property values are the same " + + "either way — only the labels would read differently for a TCR." +} + // R11c — single-domain antibody (VHH / nanobody) heuristic. vhh := func() { return "Possible VHH/single-domain antibody input detected (heavy chain only; " + @@ -60,6 +71,7 @@ export ll.toStrict({ cdr3OnlyInput: cdr3OnlyInput, gammaDeltaTcr: gammaDeltaTcr, receptorNotDetected: receptorNotDetected, + receptorNotDeclared: receptorNotDeclared, vhh: vhh, peptidesShortInstability: peptidesShortInstability }) diff --git a/workflow/src/modality.lib.tengo b/workflow/src/modality.lib.tengo new file mode 100644 index 0000000..aefb971 --- /dev/null +++ b/workflow/src/modality.lib.tengo @@ -0,0 +1,95 @@ +// Modality detection — which analysis path an input dataset takes. +// +// The whole block branches on the value this returns, so it lives here rather +// than inside main.tpl.tengo: pure synchronous logic, unit-tested in +// modality.test.tengo, no resources and no graph construction. +// +// Four producers key entities on axes this block accepts: +// +// pl7.app/variantKey peptide-extraction, synthetic-repertoire-profiler +// pl7.app/vdj/cloneId MiXCR clonotyping (archived name) +// pl7.app/vdj/clonotypeKey MiXCR clonotyping (current name) +// pl7.app/vdj/scClonotypeKey MiXCR single-cell clonotyping +// +// Only the VDJ axis names carry their modality in the name. `variantKey` is +// deliberately modality-neutral — several producers share it — so what kind of +// data it holds has to come out of the axis domain. + +ll := import("@platforma-sdk/workflow-tengo:ll") + +// Entity-axis domain key by which a producer declares which kind of repertoire +// it made, and the two values it takes. +MODALITY_DOMAIN_KEY := "pl7.app/modality" + +// The declared modality translated into this block's vocabulary. "" when the +// producer declares nothing, which sends the caller on to the run-id heuristics. +// +// The data layer's word for the antibody/TCR case is `vdj`; this block calls the +// universal-axis form of it `antibody_tcr_universal`. The two name the same +// thing, so the translation is written out rather than left to a string match +// that would break the day either side is renamed. +declaredMode := func(dom) { + if dom == undefined { return "" } + m := dom[MODALITY_DOMAIN_KEY] + if m == "vdj" { return "antibody_tcr_universal" } + if m == "amplicon" { return "amplicon" } + return "" +} + +// Mode for one axis spec, or "" when the axis is not one this block recognises. +// The caller walks the input's axes and takes the first non-empty answer. +detectMode := func(axisSpec) { + dom := axisSpec.domain + if axisSpec.name == "pl7.app/variantKey" { + // The producer says what it made. synthetic-repertoire-profiler runs one + // pipeline over both antibody/TCR parents and designed libraries, and + // everything it emits sits on the modality-neutral variantKey axis — so it + // declares the kind instead of leaving consumers to guess. Read the + // declaration before any heuristic below. + declared := declaredMode(dom) + if declared != "" { return declared } + + // No declaration: peptide-extraction and import-vdj-data never emit one, and + // neither did the profiler before it landed. The run-id key is then the only + // thing separating the producers on this axis. + if dom != undefined && dom["pl7.app/peptide/extractionRunId"] != undefined { + return "peptide" + } + // A profiler run without a declaration is read as amplicon, as it always was. + // Its whole-variant sequence gets the same whole-sequence property treatment + // as a peptide (see wholeSeqMode in main.tpl.tengo). A VDJ run made before + // the declaration landed lands here too — the run-id key is identical in both + // modalities, so nothing in the data distinguishes them. + if dom != undefined && dom["pl7.app/repertoire/extractionRunId"] != undefined { + return "amplicon" + } + if dom != undefined && dom["pl7.app/vdj/clonotypingRunId"] != undefined { + return "antibody_tcr_universal" + } + } + if axisSpec.name == "pl7.app/vdj/cloneId" { + return "antibody_tcr_legacy_bulk" + } + if axisSpec.name == "pl7.app/vdj/clonotypeKey" { + return "antibody_tcr_legacy_bulk" + } + if axisSpec.name == "pl7.app/vdj/scClonotypeKey" { + return "antibody_tcr_legacy_sc" + } + return "" +} + +// Whether a mode declared its own modality rather than being inferred. Only used +// to pick the right "receptor not detected" wording: a declared-VDJ input comes +// from a producer that has no receptor to emit, so pointing the user at a MiXCR +// preset would send them after something that does not exist for their data. +isDeclared := func(axisSpec) { + return declaredMode(axisSpec.domain) != "" +} + +export ll.toStrict({ + MODALITY_DOMAIN_KEY: MODALITY_DOMAIN_KEY, + declaredMode: declaredMode, + detectMode: detectMode, + isDeclared: isDeclared +}) diff --git a/workflow/src/modality.test.tengo b/workflow/src/modality.test.tengo new file mode 100644 index 0000000..223a8bd --- /dev/null +++ b/workflow/src/modality.test.tengo @@ -0,0 +1,172 @@ +// Unit tests for modality detection. Pure Tengo — no backend, no resources. +// Run with `pl-tengo test` from workflow/. + +test := import("@platforma-sdk/workflow-tengo:test") +modality := import(":modality") + +// Entity-axis spec as a producer emits it. Only name and domain matter here. +axis := func(name, dom) { + return { name: name, type: "String", domain: dom } +} + +PROFILER_RUN := "abcd1234" + +// --------------------------------------------------------------------------- +// synthetic-repertoire-profiler — the declaration +// --------------------------------------------------------------------------- + +// A VDJ profiler run must reach the antibody path. It keeps +// repertoire/extractionRunId in both modalities, so the declaration is the only +// thing that separates the two and it has to be read before the run-id checks. +Test_detectMode_declaredVdjTakesAntibodyPath := func() { + test.isEqual( + "antibody_tcr_universal", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/alphabet": "aminoacid", + "pl7.app/repertoire/extractionRunId": PROFILER_RUN, + "pl7.app/modality": "vdj" + })), + "a declared vdj profiler run must take the antibody/TCR path" + ) +} + +Test_detectMode_declaredAmpliconStaysWholeSequence := func() { + test.isEqual( + "amplicon", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/alphabet": "aminoacid", + "pl7.app/repertoire/extractionRunId": PROFILER_RUN, + "pl7.app/modality": "amplicon" + })), + "a declared amplicon profiler run must stay on the whole-sequence path" + ) +} + +// Projects made before the declaration landed carry the run-id key alone. They +// must keep behaving exactly as they did. +Test_detectMode_profilerWithoutDeclarationIsAmplicon := func() { + test.isEqual( + "amplicon", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/alphabet": "aminoacid", + "pl7.app/repertoire/extractionRunId": PROFILER_RUN + })), + "an undeclared profiler run must keep the previous amplicon behaviour" + ) +} + +// An unknown modality value is not a licence to guess. Fall through to the +// heuristics rather than treat "whatever this is" as VDJ. +Test_detectMode_unknownModalityFallsThroughToRunId := func() { + test.isEqual( + "amplicon", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/repertoire/extractionRunId": PROFILER_RUN, + "pl7.app/modality": "something-new" + })), + "an unrecognised modality value must fall through to the run-id heuristic" + ) +} + +// The declaration wins over the run-id key, which is the whole point of reading +// it first. Guards against someone reordering the branches. +Test_detectMode_declarationBeatsRunIdKey := func() { + test.isEqual( + "antibody_tcr_universal", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/peptide/extractionRunId": "peptide-run", + "pl7.app/repertoire/extractionRunId": PROFILER_RUN, + "pl7.app/modality": "vdj" + })), + "the declaration must be read before any run-id key" + ) +} + +// --------------------------------------------------------------------------- +// The other producers on the shared axis — unchanged behaviour +// --------------------------------------------------------------------------- + +Test_detectMode_peptideExtraction := func() { + test.isEqual( + "peptide", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/peptide/extractionRunId": "peptide-run" + })), + "peptide-extraction input must stay peptide" + ) +} + +Test_detectMode_clonotypingRunIdOnUniversalAxis := func() { + test.isEqual( + "antibody_tcr_universal", + modality.detectMode(axis("pl7.app/variantKey", { + "pl7.app/vdj/clonotypingRunId": "vdj-run" + })), + "a vdj clonotyping run-id on the universal axis must take the antibody path" + ) +} + +Test_detectMode_variantKeyWithNoDomainIsUnrecognised := func() { + test.isEqual("", modality.detectMode(axis("pl7.app/variantKey", undefined)), + "a bare variantKey axis carries no modality and must not be guessed") + test.isEqual("", modality.detectMode(axis("pl7.app/variantKey", {})), + "an empty domain carries no modality and must not be guessed") +} + +// --------------------------------------------------------------------------- +// Legacy MiXCR axes — modality is in the axis name, no domain needed +// --------------------------------------------------------------------------- + +Test_detectMode_legacyMixcrAxes := func() { + test.isEqual("antibody_tcr_legacy_bulk", + modality.detectMode(axis("pl7.app/vdj/cloneId", undefined)), + "archived MiXCR bulk axis") + test.isEqual("antibody_tcr_legacy_bulk", + modality.detectMode(axis("pl7.app/vdj/clonotypeKey", undefined)), + "current MiXCR bulk axis (SD-007)") + test.isEqual("antibody_tcr_legacy_sc", + modality.detectMode(axis("pl7.app/vdj/scClonotypeKey", undefined)), + "MiXCR single-cell axis") +} + +// A modality declaration on a VDJ axis changes nothing: the name already says +// what the data is, and no producer stamps both. +Test_detectMode_legacyAxisIgnoresDeclaration := func() { + test.isEqual("antibody_tcr_legacy_bulk", + modality.detectMode(axis("pl7.app/vdj/clonotypeKey", { "pl7.app/modality": "amplicon" })), + "a VDJ axis name must not be overridden by a modality declaration") +} + +Test_detectMode_unrecognisedAxis := func() { + test.isEqual("", modality.detectMode(axis("pl7.app/sampleId", undefined)), + "sampleId is not a sequence key axis") + test.isEqual("", modality.detectMode(axis("com.example/someKey", { "pl7.app/modality": "vdj" })), + "a declaration on an axis this block does not accept must not make it acceptable") +} + +// --------------------------------------------------------------------------- +// declaredMode / isDeclared +// --------------------------------------------------------------------------- + +Test_declaredMode := func() { + test.isEqual("antibody_tcr_universal", modality.declaredMode({ "pl7.app/modality": "vdj" }), + "vdj maps to this block's universal antibody/TCR mode") + test.isEqual("amplicon", modality.declaredMode({ "pl7.app/modality": "amplicon" }), + "amplicon maps through unchanged") + test.isEqual("", modality.declaredMode({}), "no key means nothing declared") + test.isEqual("", modality.declaredMode(undefined), "no domain at all means nothing declared") +} + +// isDeclared drives only the receptor-warning wording, so it must be true for +// both declared modalities and false for every inferred one. +Test_isDeclared := func() { + test.isTrue(modality.isDeclared(axis("pl7.app/variantKey", { "pl7.app/modality": "vdj" })), + "a declared vdj run is declared") + test.isTrue(modality.isDeclared(axis("pl7.app/variantKey", { "pl7.app/modality": "amplicon" })), + "a declared amplicon run is declared") + test.isFalse(modality.isDeclared(axis("pl7.app/vdj/clonotypeKey", undefined)), + "a MiXCR axis is inferred from its name, not declared") + test.isFalse(modality.isDeclared(axis("pl7.app/variantKey", + { "pl7.app/repertoire/extractionRunId": PROFILER_RUN })), + "an undeclared profiler run is inferred") +} diff --git a/workflow/src/wf.test.ts b/workflow/src/wf.test.ts deleted file mode 100644 index 9cf6a9c..0000000 --- a/workflow/src/wf.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Workflow integration tests will be added once Python property computation lands. -// Placeholder kept so vitest discovers the suite without failures. -import { describe, it } from "vitest"; - -describe("sequence-properties workflow", () => { - it.skip("computes peptide properties end-to-end", () => { - // TODO: implement once compute_properties.py is real. - }); -}); diff --git a/workflow/tsconfig.json b/workflow/tsconfig.json deleted file mode 100644 index 4593cba..0000000 --- a/workflow/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "target": "es2022", - "module": "commonjs", - "moduleResolution": "node", - "esModuleInterop": true, - "strict": true, - "outDir": "./dist", - "rootDir": "./src", - "sourceMap": true, - "declaration": true - }, - "types": [], - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] -} diff --git a/workflow/vitest.config.mts b/workflow/vitest.config.mts deleted file mode 100644 index dc17fea..0000000 --- a/workflow/vitest.config.mts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - watch: false, - maxConcurrency: 3, - testTimeout: 5000 - } -}); From 47839a295fd3bcd6789e8a9bbcf2b9e932d88217 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 16:47:15 +0200 Subject: [PATCH 5/8] docs: correct SD-010 on what the receptor actually gates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The entry said receptor affects labels only. It does not: hasFv requires receptor == "IG" and so gates whether the Fv columns exist, and the R11c VHH heuristic reads it too. Neither changes column identity, which was the part that was right. Records that a declared vdj profiler run satisfies two of the three VHH conditions by construction, so the heuristic can fire on a designed library whose single chain is an artifact of the producer emitting no chain key — flagged as an open question rather than changed. --- docs/spec-deviations.md | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/docs/spec-deviations.md b/docs/spec-deviations.md index 6f61140..516e476 100644 --- a/docs/spec-deviations.md +++ b/docs/spec-deviations.md @@ -644,9 +644,26 @@ dead end for this input. `messages.receptorNotDeclared` states what the labels defaulted to and that only labels are affected; `receptorNotDetected` keeps its original text for MiXCR inputs, where the advice is actionable. -Per spec R13a the receptor affects labels only — PColumn name and chain domain -are unchanged — so defaulting to the antibody convention mislabels but does not -change column identity. +Receptor is not label-only, so what the IG default costs is worth stating +precisely. Per spec R13a it does not change column identity: `labelFragments` +varies the label annotation (CDR-H3/VH vs CDR-α3/Vα vs CDR-γ3/Vγ) while the +PColumn name and the `pl7.app/vdj/scClonotypeChain` domain stay the same, and +the Python step only logs `plan.receptor`. But two decisions do read it: + +- **`hasFv`** (`main.tpl.tengo`) requires `receptor == "IG"`, and so gates + whether the Fv columns exist at all. Not reached here — it also requires full + coverage on both `A` and `B`, and the profiler emits one chain — so the IG + default costs nothing on this path. It would matter for any producer that + emitted paired chains without a receptor. +- **The R11c VHH heuristic** (`info.tpl.tengo`) fires on + `receptor == "IG"` + exactly one CDR3-bearing chain `A` + median CDR3 ≥ 16 aa. + A declared `vdj` profiler run satisfies the first two by construction, so a + library with long CDR3s is told it looks like a VHH/single-domain antibody. + Here "heavy chain only" is an artifact of the profiler emitting no chain key + at all, not evidence of a single-domain antibody — a false positive left + open deliberately rather than fixed blind, since narrowing R11c is a product + call about what the heuristic is for. Open question, not settled by this + deviation. ### Extraction From 6a05a88085923e6f6a94b041e88e2ee0d12f0e09 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 16:53:47 +0200 Subject: [PATCH 6/8] Message fix --- workflow/src/messages.lib.tengo | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workflow/src/messages.lib.tengo b/workflow/src/messages.lib.tengo index 2ca38d4..f566272 100644 --- a/workflow/src/messages.lib.tengo +++ b/workflow/src/messages.lib.tengo @@ -46,8 +46,7 @@ receptorNotDetected := func() { // labels defaulted to and that only the labels are affected. receptorNotDeclared := func() { return "This dataset does not say whether it holds antibody or TCR sequences, so chain " + - "labels follow the antibody convention (CDR-H3, VH). The property values are the same " + - "either way — only the labels would read differently for a TCR." + "labels follow the antibody convention (CDR-H3, VH)." } // R11c — single-domain antibody (VHH / nanobody) heuristic. From 1671b5a6619d94873563351b128f2ab267deb641 Mon Sep 17 00:00:00 2001 From: Mariia Zueva Date: Wed, 26 Aug 2026 17:11:15 +0200 Subject: [PATCH 7/8] Missing fix --- pnpm-lock.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 831e325..5dddb38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -169,7 +169,7 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -278,9 +278,6 @@ importers: shx: specifier: 'catalog:' version: 0.4.0 - vitest: - specifier: 'catalog:' - version: 4.1.4(@types/node@25.3.2)(@vitest/coverage-istanbul@4.1.4)(vite@8.0.8(@types/node@25.3.2)(yaml@2.8.1)) packages: From e0451905b7e788e04a1e11f1d5fbe73d37849742 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Mon, 31 Aug 2026 11:23:58 +0200 Subject: [PATCH 8/8] MILAB-6808: drop the ui-vue pin, upgrade to 1.83.3 ui-vue 1.83.3 publishes dist/components/*.vue.d.ts again, so the catalog no longer has to sit a patch behind the structurer's derived pin. `structure refresh --update-deps-only` now derives 1.83.3 on its own and also moves ts-builder to 1.7.2. --- .changeset/migrate-to-structurer.md | 6 +-- pnpm-lock.yaml | 68 ++++++++++++++--------------- pnpm-workspace.yaml | 11 +---- 3 files changed, 39 insertions(+), 46 deletions(-) diff --git a/.changeset/migrate-to-structurer.md b/.changeset/migrate-to-structurer.md index 1d9b98b..aa7aa32 100644 --- a/.changeset/migrate-to-structurer.md +++ b/.changeset/migrate-to-structurer.md @@ -22,6 +22,6 @@ Two changes are visible outside the block: the whole block into `dist/` plus `block-pack/`, and exports `SequencePropertiesBlockPointer` for consumers that add the block from code. -`@platforma-sdk/ui-vue` is held at 1.83.0: 1.83.1 stopped publishing the -component declaration files its own type entry re-exports, which breaks the -facade build. The pin goes away once a fixed ui-vue is out. +`@platforma-sdk/ui-vue` is on 1.83.3, which publishes the component +declaration files its own type entry re-exports again — 1.83.1 had dropped +them and broke the facade build. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5dddb38..c89487e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: 1.14.5 version: 1.14.5 '@milaboratories/ts-builder': - specifier: 1.7.1 - version: 1.7.1 + specifier: 1.7.2 + version: 1.7.2 '@milaboratories/ts-configs': specifier: 1.4.0 version: 1.4.0 @@ -40,8 +40,8 @@ catalogs: specifier: 1.83.2 version: 1.83.2 '@platforma-sdk/ui-vue': - specifier: 1.83.0 - version: 1.83.0 + specifier: 1.83.3 + version: 1.83.3 '@platforma-sdk/workflow-tengo': specifier: 6.8.3 version: 6.8.3 @@ -77,7 +77,7 @@ importers: version: 2.29.8(@types/node@25.3.2) '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) '@platforma-sdk/block-tools': specifier: 'catalog:' version: 2.14.3(@types/node@25.3.2) @@ -92,7 +92,7 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -138,7 +138,7 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -150,7 +150,7 @@ importers: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@milaboratories/helpers': specifier: 'catalog:' version: 1.14.5 @@ -162,14 +162,14 @@ importers: version: 1.83.0 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + version: 1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) typescript: specifier: '*' version: 5.6.3 devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -218,7 +218,7 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -233,7 +233,7 @@ importers: dependencies: '@milaboratories/graph-maker': specifier: 'catalog:' - version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) + version: 1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3) '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model @@ -242,7 +242,7 @@ importers: version: 1.83.0 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + version: 1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) '@types/node': specifier: '*' version: 25.3.2 @@ -255,7 +255,7 @@ importers: devDependencies: '@milaboratories/ts-builder': specifier: 'catalog:' - version: 1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) + version: 1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1) '@milaboratories/ts-configs': specifier: 'catalog:' version: 1.4.0 @@ -1043,8 +1043,8 @@ packages: os: [darwin, linux, win32] hasBin: true - '@milaboratories/ts-builder@1.7.1': - resolution: {integrity: sha512-wOLIxfclYu0PXpjR6VPh382wxpI7swCwLPk0KR3KPYvGCCqLXU24kcxmYhQ3wU/WwpKAcfA+8CPdBxsqdpO37Q==} + '@milaboratories/ts-builder@1.7.2': + resolution: {integrity: sha512-cHDscAjCDA5SXYkgE14kkbbzqYQfm6ltH0kWFcL8ZlxDzxUWo5AL6uziNJDBgZ6ybb4kEa4I+FMYwvEwh6VEkw==} hasBin: true '@milaboratories/ts-configs@1.4.0': @@ -1054,8 +1054,8 @@ packages: resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} engines: {node: '>=22.19.0'} - '@milaboratories/uikit@2.15.26': - resolution: {integrity: sha512-QPzSmSUA+62pkrlGwwdoBGpDGkaFPshj0B+/eF/MAFcNy/xAfuWtfAJF9RhLIvRPmbVYOUhf7iN5MDHkwnxToA==} + '@milaboratories/uikit@2.15.27': + resolution: {integrity: sha512-cXZemE5RxLQuF9EjktG+TMjfFAk66DGTS7VSxC6M+qV0z4+09tmlRm74y5iJTK0b1GNNwSRXoCPOxIwd3dshxQ==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -1557,8 +1557,8 @@ packages: '@platforma-sdk/test@1.83.2': resolution: {integrity: sha512-tdNihBcIQX7UoOP8Cbswf68oQkc6p2rHvgTQqwT7si62CpTRoCQsXnuRFlPgx0J+DI9zB1N6VrLIQLISSQXx/g==} - '@platforma-sdk/ui-vue@1.83.0': - resolution: {integrity: sha512-7V/dy1yGrQKrsu2XlZ9V7X+9+3X3+RmVfC3b0MwjzNiW1qI2ImUvtaKp5wVtE0gq+COIWomAmy1tsVJtQtBJgg==} + '@platforma-sdk/ui-vue@1.83.3': + resolution: {integrity: sha512-bRhh2Qg6cvt4VLJDDLMvbCwZpcqIE0717H/zUODAbTnLZpGeKHYN/PZbItTyhD+UCu39rWsE6dXfU/NBVSupYg==} '@platforma-sdk/workflow-tengo@6.8.3': resolution: {integrity: sha512-KImCzq7v/2qgH/PIBCTipV0B/ulLxDnDOpWOO+zs56+p/B2Dg25ZevlA2LzOFVk9SWx6ilXp4ilWx3K2HbccqQ==} @@ -7694,14 +7694,14 @@ snapshots: '@types/node': 24.5.2 utility-types: 3.11.0 - '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': + '@milaboratories/graph-maker@1.4.8(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0)(@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@5.6.3)': dependencies: '@ag-grid-community/core': 32.3.9 '@milaboratories/helpers': 1.14.5 '@milaboratories/miplots4': 1.2.3(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0) '@milaboratories/pf-plots': 1.4.6(@milaboratories/pl-model-common@1.48.0)(@platforma-sdk/model@1.83.0) '@platforma-sdk/model': 1.83.0 - '@platforma-sdk/ui-vue': 1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) + '@platforma-sdk/ui-vue': 1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3) '@types/d3-hierarchy': 3.1.7 '@types/d3-scale': 4.0.9 '@vueuse/core': 13.8.0(vue@3.5.25(typescript@5.6.3)) @@ -8001,7 +8001,7 @@ snapshots: '@milaboratories/tengo-tester@1.6.4': {} - '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.24(typescript@5.6.3))(yaml@2.8.1)': dependencies: '@milaboratories/ts-configs': 1.4.0 '@typescript/typescript6': 6.0.2 @@ -8012,7 +8012,7 @@ snapshots: oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@5.6.3)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) typescript: 7.0.2 @@ -8047,7 +8047,7 @@ snapshots: - webpack - yaml - '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.6.3))(yaml@2.8.1)': dependencies: '@milaboratories/ts-configs': 1.4.0 '@typescript/typescript6': 6.0.2 @@ -8058,7 +8058,7 @@ snapshots: oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@5.6.3)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) typescript: 7.0.2 @@ -8093,7 +8093,7 @@ snapshots: - webpack - yaml - '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@5.9.3))(yaml@2.8.1)': dependencies: '@milaboratories/ts-configs': 1.4.0 '@typescript/typescript6': 6.0.2 @@ -8104,7 +8104,7 @@ snapshots: oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@5.6.3)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) typescript: 7.0.2 @@ -8139,7 +8139,7 @@ snapshots: - webpack - yaml - '@milaboratories/ts-builder@1.7.1(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1)': + '@milaboratories/ts-builder@1.7.2(@microsoft/api-extractor@7.57.6(@types/node@25.3.2))(@types/node@25.3.2)(@volar/typescript@2.4.28)(@vue/language-core@3.3.10)(rollup@4.53.3)(vue@3.5.25(typescript@7.0.2))(yaml@2.8.1)': dependencies: '@milaboratories/ts-configs': 1.4.0 '@typescript/typescript6': 6.0.2 @@ -8150,7 +8150,7 @@ snapshots: oxlint: 1.63.0 oxlint-plugin-eslint: 1.63.0 rolldown: 1.1.3 - rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)) + rolldown-plugin-dts: 0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@5.6.3)) rollup-plugin-copy: 3.5.0 rollup-plugin-sourcemaps2: 0.5.6(@types/node@25.3.2)(rollup@4.53.3) typescript: 7.0.2 @@ -8193,7 +8193,7 @@ snapshots: canonicalize: 2.1.0 denque: 2.1.0 - '@milaboratories/uikit@2.15.26(typescript@5.6.3)': + '@milaboratories/uikit@2.15.27(typescript@5.6.3)': dependencies: '@milaboratories/helpers': 1.14.5 '@platforma-sdk/model': 1.83.0 @@ -8680,12 +8680,12 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.83.0(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': + '@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': dependencies: '@milaboratories/columns-collection-driver': 0.2.4 '@milaboratories/pf-spec-driver': 1.5.1(@bytecodealliance/preview2-shim@0.17.8) '@milaboratories/pl-model-common': 1.48.0 - '@milaboratories/uikit': 2.15.26(typescript@5.6.3) + '@milaboratories/uikit': 2.15.27(typescript@5.6.3) '@platforma-sdk/model': 1.83.0 '@types/d3-format': 3.0.4 '@types/node': 24.5.2 @@ -13638,7 +13638,7 @@ snapshots: dependencies: glob: 10.4.5 - rolldown-plugin-dts@0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@7.0.2)): + rolldown-plugin-dts@0.28.2(@volar/typescript@2.4.28)(rolldown@1.1.3)(typescript@7.0.2)(vue-tsc@3.3.10(typescript@5.6.3)): dependencies: dts-resolver: 3.0.0 get-tsconfig: 5.0.0-beta.5 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 62e3354..80838a9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,20 +9,13 @@ packages: catalog: "@milaboratories/graph-maker": 1.4.8 - "@milaboratories/ts-builder": 1.7.1 + "@milaboratories/ts-builder": 1.7.2 "@milaboratories/ts-configs": 1.4.0 "@platforma-sdk/workflow-tengo": 6.8.3 "@platforma-sdk/block-tools": 2.14.3 "@platforma-sdk/block-kind": 1.1.0 "@platforma-sdk/model": 1.83.0 - # Held one patch behind the structurer's derived pin. ui-vue 1.83.1 stopped - # publishing dist/components/*.vue.d.ts, which its own dist/lib.d.ts - # re-exports. The slim facade inlines every type in the model's public - # surface, and BlockData's GraphMakerState reaches ui-vue through - # graph-maker/dist/forms, so the facade build fails on four unresolvable - # .vue specifiers. Every version from 1.79.20 to 1.83.0 ships them. Drop - # this pin once a fixed ui-vue is published. - "@platforma-sdk/ui-vue": 1.83.0 + "@platforma-sdk/ui-vue": 1.83.3 "@platforma-sdk/test": 1.83.2 "@milaboratories/helpers": 1.14.5 "@platforma-sdk/tengo-builder": 4.0.23