diff --git a/.changeset/migrate-to-structurer.md b/.changeset/migrate-to-structurer.md new file mode 100644 index 0000000..aa7aa32 --- /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 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/.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/.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/docs/spec-deviations.md b/docs/spec-deviations.md index bf98484..516e476 100644 --- a/docs/spec-deviations.md +++ b/docs/spec-deviations.md @@ -539,3 +539,147 @@ 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. + +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 + +`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/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..ccedc99 --- /dev/null +++ b/kind/package.json @@ -0,0 +1,37 @@ +{ + "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:", + "@platforma-sdk/model": "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..9217a90 --- /dev/null +++ b/kind/src/index.ts @@ -0,0 +1,52 @@ +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 upstream dataset a new instance + * computes sequence properties on. + * + * 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). + * + * `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 = { + inputAnchor?: PlRef; +}; + +/** + * The same contract at runtime, for params that arrive from a template file + * rather than from typed code. + * + * 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); + + 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 +// 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..d58868b 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,24 @@ "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-sdk/model": "catalog:" + "@platforma-open/milaboratories.sequence-properties.kind": "workspace:*", + "@platforma-sdk/model": "catalog:", + "@platforma-sdk/ui-vue": "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/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/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..c89487e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,44 +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.2 + version: 1.7.2 '@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.3 + version: 1.83.3 '@platforma-sdk/workflow-tengo': - specifier: 6.6.5 - version: 6.6.5 - eslint: - specifier: ^9.38.0 - version: 9.39.4 + specifier: 6.8.3 + version: 6.8.3 shx: specifier: 0.4.0 version: 0.4.0 @@ -83,10 +77,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.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.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 +89,16 @@ importers: version: 2.8.11 block: - dependencies: + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + 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 + '@platforma-open/milaboratories.sequence-properties.kind': + specifier: workspace:* + version: link:../kind '@platforma-open/milaboratories.sequence-properties.model': specifier: workspace:* version: link:../model @@ -105,41 +108,77 @@ 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.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 '@platforma-sdk/model': specifier: 'catalog:' - version: 1.79.20 + version: 1.83.0 + '@types/node': + specifier: '*' + version: 25.3.2 + typescript: + specifier: '*' + version: 5.9.3 devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + 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 '@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.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.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 + '@platforma-sdk/ui-vue': + specifier: 'catalog:' + 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.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.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.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,24 +188,18 @@ 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) - '@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 @@ -175,29 +208,23 @@ 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.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.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)) - eslint: - specifier: 'catalog:' - version: 9.39.4 - typescript: - specifier: 'catalog:' - version: 5.6.3 + 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)) 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 +233,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.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 '@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.3(@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.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.3.0 + version: 1.4.0 workflow: dependencies: @@ -243,17 +267,17 @@ 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 packages: @@ -341,6 +365,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 +519,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 +541,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 +558,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 +574,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,229 +713,15 @@ 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} - 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.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 - '@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'} @@ -1075,20 +868,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 +926,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': @@ -1143,19 +939,19 @@ 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'} + '@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': @@ -1164,107 +960,77 @@ 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==} - '@milaboratories/pf-spec-driver@1.4.16': - resolution: {integrity: sha512-x6SQVUU3fl+1fFavCSzc1DNMB08HKoo0PT5dpXJWAi6oEw77yueoe1StZJVY0Kgj1BpVhlmuuC87PJu8s4eFRw==} + '@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==} - peerDependencies: - '@bytecodealliance/preview2-shim': 0.17.8 - '@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': 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.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-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-backend@1.4.21': + resolution: {integrity: sha512-Z2z5J8bglslgXXoi1aySi1ho+/d+ylJiuEaRw9XTNuE5iBM3EQPe0rw095pXGOinTlMpmvUcCI2wkVCraUQ1dA==} '@milaboratories/pl-model-common@1.46.2': resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} - '@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-common@1.48.0': + resolution: {integrity: sha512-oCVrjFNmjQolb7YWnbSGHnp6GGVm1PhG1lnNABp9lqYjvA2ISjIPQLIo/vT2ca0mqwLrEvbuRqiqSFOg7sQ5tQ==} '@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.5': - resolution: {integrity: sha512-pxBFYycBAVc4pVCo+qDzi2mQDQiar5D2tOnkWjSLgo13OAY+KVDYQJeD4KUt2DCocMy0Uo+lREZpU1bvVBqH3A==} - - '@milaboratories/ptabler-expression-js@1.2.8': - resolution: {integrity: sha512-8GsLfyRGWZxal4I+fNHEfluv8ef8jHg4yMuSeW8ZV1H0qGaprc9AIMUcDarlavsSiBstC9VSNPYxX4MawN49qA==} + '@milaboratories/ptabler-expression-js@1.2.38': + resolution: {integrity: sha512-z14oa/V3nkBGHxnygpfxUBU7EfHQKHh1KZgK47ouqIw7CvuOmqjViRdynY4HZNjAh3n3AGHpBbEFs/J+hQMW3g==} '@milaboratories/resolve-helper@1.1.3': resolution: {integrity: sha512-38/dW/XRZQREOxAOOKtO0lzEWPCP/DH0qhB3q1kYcGoN++5V92/zbVwbYrMDeDcjTyo+D62iIep+sKXeWHa7Uw==} @@ -1277,28 +1043,19 @@ packages: os: [darwin, linux, win32] hasBin: true - '@milaboratories/ts-builder@1.6.0': - resolution: {integrity: sha512-OlQ38jsriFf7qS5AmNIch65qQAOZBRFaLT15N/JJqe9dIytKJNS8Ff9G4vowWtFiRzyeyWRArBtgVOeAmoYuKQ==} + '@milaboratories/ts-builder@1.7.2': + resolution: {integrity: sha512-cHDscAjCDA5SXYkgE14kkbbzqYQfm6ltH0kWFcL8ZlxDzxUWo5AL6uziNJDBgZ6ybb4kEa4I+FMYwvEwh6VEkw==} 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.27': + resolution: {integrity: sha512-cXZemE5RxLQuF9EjktG+TMjfFAk66DGTS7VSxC6M+qV0z4+09tmlRm74y5iJTK0b1GNNwSRXoCPOxIwd3dshxQ==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -1715,17 +1472,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==} @@ -1751,47 +1499,17 @@ 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@1.20.0': + resolution: {integrity: sha512-0PPceM5FtOQK9N8tc+3vkB8TqNCTFNQcqhEaz8a23wEq6btAudZLfLlGNlqhthdjPn6QN+Pfl5zOs4D6M/4yCw==} - '@platforma-open/milaboratories.samples-and-data.workflow@2.7.0': - resolution: {integrity: sha512-Digm5EA1jlOe3b/pe6MZpoY6B1DdUERaJZA1Apwr01VP2BNiROoY5NaIR+FP1BY2affcVB6ysKbXrKmJltO6Eg==} + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': + resolution: {integrity: sha512-f9vT+iSfNelgAGjaNzn1GErhmxHbjG6HtskAMoaUEbrciCG8c8i8cSCJPLu0xKNBcjM1UW+T10uD89Ckq2vkxQ==} - '@platforma-open/milaboratories.samples-and-data@1.17.1': - resolution: {integrity: sha512-G0oLVhtZSRzPdbt6AQ4NJJiXCvc0pCsBzZXUyq+nr6eP2tVQBu5SziAsfrIwTnLViuxKawIW1X7mMYIyBRZ/DA==} + '@platforma-open/milaboratories.software-ptabler@2.1.8': + resolution: {integrity: sha512-28dKwcKNIB/8OYH6l/li7Qa/aE2NgDVtNUmN8v6jZsLKT59ogFclz8ZrQ+OiQFzHQCLBlWBt5TdIHfHPxBaNFw==} - '@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.software-ptabler.schema@1.15.15': - resolution: {integrity: sha512-zvPuRZgQyxjED+txJVgWHUOPeRp4TG1jOrJOtuw9WnwxFiHNjQHIB+Xe1j8f6skgMqZgRSQvEbhRvqbWjGmhKQ==} - - '@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.3': - resolution: {integrity: sha512-4cikdkdJ5WYc0Nw3IoZxzlFNKvG1qCAqSjypq5b18pIK6LBDayzhFcuw5TDd8O3bAFhoHP+3cVTmoO9XUTYMRg==} - - '@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==} @@ -1808,73 +1526,42 @@ 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==} '@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.83.0': + resolution: {integrity: sha512-uBg8vJ1BnSUKqgQMz2ADXOm/tyaYlF218p+ILqh16y3HXRH+pqQqpwP0iHp9P6tf8vThIOC2TW+5mREGCaTmBw==} - '@platforma-sdk/model@1.79.20': - resolution: {integrity: sha512-0ULETzwgo4E5rIddn/PoCAY5gSv9luDYAaSp66b8u3u1XTh43k7fgOpobu/rrfHJMiY9IGfzALDlo6jtvMLUyQ==} + '@platforma-sdk/package-builder-lib@1.3.0': + resolution: {integrity: sha512-CdBjmNo6E1fBxKYWaXa49L/L2WLURxs2f1TAqxLIZlHRE4DZ6E1TEj3jNNKESWp+/9rwtLkTAzmTzNPrDgz+2Q==} - '@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/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/ui-vue@1.63.8': - resolution: {integrity: sha512-Nv/QhhTlGE8vfw3es+FNiHxrvRBn7M4xP5JPta0qIuDgCV7s0y/yK4hJQkkYuSVmigOGLQuPJGqgAV+wJVQK+g==} + '@platforma-sdk/test@1.83.2': + resolution: {integrity: sha512-tdNihBcIQX7UoOP8Cbswf68oQkc6p2rHvgTQqwT7si62CpTRoCQsXnuRFlPgx0J+DI9zB1N6VrLIQLISSQXx/g==} - '@platforma-sdk/ui-vue@1.79.20': - resolution: {integrity: sha512-VwBG8MKV1M2KMR2PgW+o6uxJJRCFGihaRsnkzLL8HGKM/Vr9k3FY/V929B1XAhU5y9wb1g7fKNJvy9JNEq5GiQ==} + '@platforma-sdk/ui-vue@1.83.3': + resolution: {integrity: sha512-bRhh2Qg6cvt4VLJDDLMvbCwZpcqIE0717H/zUODAbTnLZpGeKHYN/PZbItTyhD+UCu39rWsE6dXfU/NBVSupYg==} - '@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/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 +1588,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 +1787,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 +2154,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 +3797,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,12 +3839,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==} - '@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. @@ -4204,72 +3867,137 @@ 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/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - '@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-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] - '@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-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + 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-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/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-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + 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-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/types@8.59.1': - resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.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/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-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + 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-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@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-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-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: typescript: '*' - '@vitejs/plugin-vue@6.0.6': - resolution: {integrity: sha512-u9HHgfrq3AjXlysn0eINFnWQOJQLO9WN6VprZ8FXl7A2bYisv3Hui9Ij+7QZ41F/WYWarHjwBbXtD7dKg3uxbg==} + '@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 @@ -4280,23 +4008,9 @@ packages: peerDependencies: vitest: 4.1.4 - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} - '@vitest/expect@4.1.4': resolution: {integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==} - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - '@vitest/mocker@4.1.4': resolution: {integrity: sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==} peerDependencies: @@ -4308,33 +4022,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 +4070,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 +4165,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'} @@ -4493,11 +4304,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'} @@ -4552,15 +4358,9 @@ packages: ajv: optional: true - ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - 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 +4413,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 +4465,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==} @@ -4736,10 +4526,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==} @@ -4747,18 +4533,10 @@ 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'} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -4874,11 +4652,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 +4745,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: @@ -4983,15 +4753,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'} @@ -5029,9 +4790,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'} @@ -5084,10 +4842,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,108 +4859,21 @@ 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'} - escape-string-regexp@4.0.0: - 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} - - 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-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} - 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} - - 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'} 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'} @@ -5246,12 +4913,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==} @@ -5277,10 +4938,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'} @@ -5304,17 +4961,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==} @@ -5364,9 +5010,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'} @@ -5378,10 +5021,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 @@ -5391,18 +5030,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@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 +5038,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 +5049,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,25 +5071,13 @@ 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==} - 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. @@ -5583,18 +5191,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==} @@ -5615,9 +5214,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==} @@ -5628,10 +5224,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'} @@ -5710,16 +5302,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==} @@ -5854,9 +5439,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==} @@ -5894,20 +5476,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==} @@ -5920,10 +5500,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==} @@ -5968,18 +5544,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'} @@ -5994,10 +5562,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==} @@ -6041,10 +5605,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,28 +5639,16 @@ 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'} 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'} @@ -6116,17 +5664,13 @@ 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: 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==} @@ -6143,11 +5687,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: @@ -6208,10 +5752,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'} @@ -6232,20 +5772,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 +5946,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 +6015,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 +6065,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 +6083,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==} @@ -6615,21 +6133,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'} - - 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 +6158,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 +6196,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'} @@ -6693,9 +6240,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==} @@ -6711,12 +6255,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 +6282,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,40 +6325,6 @@ 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==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -6897,14 +6372,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 +6397,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==} @@ -6953,10 +6425,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'} @@ -6972,10 +6440,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'} @@ -7010,21 +6474,23 @@ 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'} + 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'} - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -7121,6 +6587,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 +7097,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 +7125,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 +7138,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 +7165,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,221 +7422,81 @@ 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 + '@grpc/grpc-js@1.14.4': + dependencies: + '@grpc/proto-loader': 0.8.1 + '@js-sdsl/ordered-map': 4.4.2 - '@esbuild/android-x64@0.25.12': - optional: true + '@grpc/proto-loader@0.8.1': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.6.5 + yargs: 17.7.2 - '@esbuild/darwin-arm64@0.25.12': - optional: true + '@inquirer/ansi@1.0.2': {} - '@esbuild/darwin-x64@0.25.12': - optional: true + '@inquirer/checkbox@4.3.2(@types/node@25.3.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/freebsd-arm64@0.25.12': - optional: true + '@inquirer/confirm@5.1.21(@types/node@25.3.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.2) + '@inquirer/type': 3.0.10(@types/node@25.3.2) + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/freebsd-x64@0.25.12': - optional: true + '@inquirer/core@10.3.2(@types/node@25.3.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.2) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/linux-arm64@0.25.12': - optional: true + '@inquirer/editor@4.2.23(@types/node@25.3.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.2) + '@inquirer/external-editor': 1.0.3(@types/node@25.3.2) + '@inquirer/type': 3.0.10(@types/node@25.3.2) + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/linux-arm@0.25.12': - optional: true + '@inquirer/expand@4.0.23(@types/node@25.3.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.2) + '@inquirer/type': 3.0.10(@types/node@25.3.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/linux-ia32@0.25.12': - optional: true + '@inquirer/external-editor@1.0.3(@types/node@25.3.2)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 25.3.2 - '@esbuild/linux-loong64@0.25.12': - optional: true + '@inquirer/figures@1.0.15': {} - '@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 - 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.13.4': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.3.2 - protobufjs: 7.4.0 - 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)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.3.2) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/confirm@5.1.21(@types/node@25.3.2)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.2) - '@inquirer/type': 3.0.10(@types/node@25.3.2) - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/core@10.3.2(@types/node@25.3.2)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.2) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/editor@4.2.23(@types/node@25.3.2)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.2) - '@inquirer/external-editor': 1.0.3(@types/node@25.3.2) - '@inquirer/type': 3.0.10(@types/node@25.3.2) - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/expand@4.0.23(@types/node@25.3.2)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.2) - '@inquirer/type': 3.0.10(@types/node@25.3.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/external-editor@1.0.3(@types/node@25.3.2)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 - optionalDependencies: - '@types/node': 25.3.2 - - '@inquirer/figures@1.0.15': {} - - '@inquirer/input@4.3.1(@types/node@25.3.2)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.2) - '@inquirer/type': 3.0.10(@types/node@25.3.2) - optionalDependencies: - '@types/node': 25.3.2 + '@inquirer/input@4.3.1(@types/node@25.3.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.2) + '@inquirer/type': 3.0.10(@types/node@25.3.2) + optionalDependencies: + '@types/node': 25.3.2 '@inquirer/number@3.0.23(@types/node@25.3.2)': dependencies: @@ -8226,23 +7574,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 +7649,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 +7669,7 @@ snapshots: typescript: 5.8.2 transitivePeerDependencies: - '@types/node' + optional: true '@microsoft/tsdoc-config@0.18.1': dependencies: @@ -8327,24 +7677,31 @@ snapshots: ajv: 8.18.0 jju: 1.4.0 resolve: 1.22.10 + optional: true - '@microsoft/tsdoc@0.16.0': {} + '@microsoft/tsdoc@0.16.0': + optional: true + + '@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.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.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.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)) @@ -8361,10 +7718,10 @@ snapshots: - supports-color - typescript - '@milaboratories/helpers@1.14.1': {} - '@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 +7760,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,46 +7775,41 @@ 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 - '@milaboratories/pf-spec-driver@1.2.4': + '@milaboratories/pf-spec-driver@1.5.1(@bytecodealliance/preview2-shim@0.17.8)': 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 + '@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/pf-spec-driver@1.4.16(@bytecodealliance/preview2-shim@0.17.8)': + '@milaboratories/pf-spec@1.0.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 - '@noble/hashes': 2.2.0 - transitivePeerDependencies: - - '@bytecodealliance/preview2-shim' + '@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.52': + '@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 +7818,15 @@ 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)': + '@milaboratories/pl-client@3.14.7': 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': - 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 +7838,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 +7859,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 @@ -8547,22 +7887,17 @@ snapshots: json-stringify-safe: 5.0.1 zod: 3.25.76 - '@milaboratories/pl-error-like@1.12.9': + '@milaboratories/pl-errors@1.4.36': dependencies: - json-stringify-safe: 5.0.1 - zod: 3.23.8 - - '@milaboratories/pl-errors@1.4.24': - 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 +7905,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,23 +7944,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 - 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 + '@milaboratories/pl-client': 3.14.7 canonicalize: 2.1.0 zod: 3.25.76 @@ -8636,20 +7957,12 @@ snapshots: canonicalize: 2.1.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': + '@milaboratories/pl-model-common@1.48.0': dependencies: - '@milaboratories/helpers': 1.14.1 - '@milaboratories/pl-model-common': 1.31.2 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-error-like': 1.12.10 + canonicalize: 2.1.0 es-toolkit: 1.42.0 - utility-types: 3.11.0 zod: 3.25.76 '@milaboratories/pl-model-middle-layer@1.30.7': @@ -8660,35 +7973,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': - dependencies: - '@platforma-open/milaboratories.software-ptabler.schema': 1.15.15 - - '@milaboratories/ptabler-expression-js@1.2.5': + '@milaboratories/ptabler-expression-js@1.2.38': 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 + '@platforma-open/milaboratories.software-ptabler.schema': 1.15.22 '@milaboratories/resolve-helper@1.1.3': {} @@ -8696,31 +8001,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.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.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@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: 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 +8044,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.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.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@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: 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 +8090,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.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.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@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: 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 @@ -8817,54 +8136,67 @@ snapshots: - terser - tsx - vue + - webpack - yaml - '@milaboratories/ts-configs@1.3.0': {} - - '@milaboratories/ts-helpers@1.8.3': + '@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/helpers': 1.14.2 - canonicalize: 2.1.0 - denque: 2.1.0 + '@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@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 + 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-configs@1.4.0': {} - '@milaboratories/uikit@2.11.7(typescript@5.6.3)': + '@milaboratories/ts-helpers@1.8.6': 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@5.6.3)) - '@vueuse/integrations': 13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@5.6.3)) + '@milaboratories/helpers': 1.14.5 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@5.6.3) - transitivePeerDependencies: - - async-validator - - axios - - change-case - - drauu - - focus-trap - - fuse.js - - idb-keyval - - jwt-decode - - nprogress - - qrcode - - typescript - - universal-cookie + denque: 2.1.0 - '@milaboratories/uikit@2.15.11(typescript@5.6.3)': + '@milaboratories/uikit@2.15.27(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 +8227,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 +8234,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': {} @@ -9195,63 +8527,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@5.6.3)': - 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)) - ag-grid-enterprise: 34.1.2 - ag-grid-vue3: 34.1.2(vue@3.5.25(typescript@5.6.3)) - utility-types: 3.11.0 - vue: 3.5.25(typescript@5.6.3) - 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@5.6.3)': - 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.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': {} @@ -9277,51 +8553,15 @@ 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@1.20.0': {} - '@platforma-open/milaboratories.samples-and-data.workflow@2.7.0': + '@platforma-open/milaboratories.software-ptabler.schema@1.15.22': 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 + '@milaboratories/pl-model-common': 1.48.0 - '@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@2.1.8': {} - '@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.software-ptabler.schema@1.15.15': - dependencies: - '@milaboratories/pl-model-common': 1.46.2 - - '@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-ptexter@1.2.2': {} + '@platforma-open/milaboratories.software-ptexter@1.2.4': {} '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': {} @@ -9333,13 +8573,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 @@ -9350,20 +8583,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,57 +8617,21 @@ 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)': + '@platforma-sdk/model@1.83.0': 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 - '@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.79.20': - 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 +8644,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,47 +8680,13 @@ snapshots: - supports-color - vite - '@platforma-sdk/ui-vue@1.63.8(typescript@5.6.3)': + '@platforma-sdk/ui-vue@1.83.3(@bytecodealliance/preview2-shim@0.17.8)(typescript@5.6.3)': dependencies: - '@milaboratories/pf-spec-driver': 1.2.4 - '@milaboratories/pl-model-common': 1.31.1 - '@milaboratories/uikit': 2.11.7(typescript@5.6.3) - '@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)) - '@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)) - 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) - 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.79.20(@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.27(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 @@ -9558,31 +8717,17 @@ snapshots: - typescript - universal-cookie - '@platforma-sdk/workflow-tengo@5.12.0': + '@platforma-sdk/workflow-tengo@6.8.3': dependencies: + '@milaboratories/pframes-rs-wasip2': 1.1.56 '@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.6.5': - dependencies: - '@milaboratories/pframes-rs-wasip2': 1.1.52 - '@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 +8754,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 +8846,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 +8868,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 +8958,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 +8978,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 +8988,7 @@ snapshots: string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' + optional: true '@smithy/abort-controller@4.0.5': dependencies: @@ -10181,8 +9326,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 +11734,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,124 +11778,93 @@ 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': dependencies: minimatch: 10.2.5 - '@types/node@12.20.55': {} + '@types/node@12.20.55': {} + + '@types/node@24.5.2': + dependencies: + undici-types: 7.12.0 + + '@types/node@25.3.2': + dependencies: + undici-types: 7.18.2 + + '@types/semver@7.7.0': {} + + '@types/sortablejs@1.15.8': {} + + '@types/triple-beam@1.3.5': {} + + '@types/uuid@9.0.8': {} + + '@types/web-bluetooth@0.0.21': {} + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true - '@types/node@24.5.2': - dependencies: - undici-types: 7.12.0 + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true - '@types/node@25.3.2': - dependencies: - undici-types: 7.18.2 + '@typescript/typescript-linux-arm64@7.0.2': + optional: true - '@types/semver@7.7.0': {} + '@typescript/typescript-linux-arm@7.0.2': + optional: true - '@types/sortablejs@1.15.8': {} + '@typescript/typescript-linux-loong64@7.0.2': + optional: true - '@types/triple-beam@1.3.5': {} + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true - '@types/uuid@9.0.8': {} + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true - '@types/web-bluetooth@0.0.21': {} + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true - '@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-linux-s390x@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-linux-x64@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-netbsd-arm64@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-netbsd-x64@7.0.2': + optional: true - '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.6.3)': - dependencies: - typescript: 5.6.3 + '@typescript/typescript-openbsd-arm64@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-openbsd-x64@7.0.2': + optional: true - '@typescript-eslint/types@8.59.1': {} + '@typescript/typescript-sunos-x64@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-win32-arm64@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-win32-x64@7.0.2': + optional: true - '@typescript-eslint/visitor-keys@8.59.1': + '@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 +11873,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 +11907,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 +11922,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 +11930,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 +11946,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 +12026,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 +12086,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': {} @@ -13072,14 +12123,6 @@ snapshots: optionalDependencies: sortablejs: 1.15.6 - '@vueuse/integrations@13.8.0(sortablejs@1.15.6)(vue@3.5.25(typescript@5.6.3))': - 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) - optionalDependencies: - sortablejs: 1.15.6 - '@vueuse/metadata@13.8.0': {} '@vueuse/shared@13.8.0(vue@3.5.24(typescript@5.6.3))': @@ -13090,6 +12133,80 @@ snapshots: dependencies: vue: 3.5.25(typescript@5.6.3) + '@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: {} @@ -13100,10 +12217,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: @@ -13157,17 +12270,12 @@ snapshots: 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 - - 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 + optional: true ajv@8.18.0: dependencies: @@ -13175,8 +12283,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 +12339,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 +12391,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 +12402,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - boolbase@1.0.0: {} - bowser@2.11.0: {} brace-expansion@1.1.11: @@ -13365,21 +12462,12 @@ snapshots: bytestreamjs@2.0.1: {} - callsites@3.1.0: {} - caniuse-lite@1.0.30001774: {} canonicalize@2.1.0: {} - chai@6.2.1: {} - 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: {} @@ -13489,8 +12577,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,16 +12658,10 @@ 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 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -13630,213 +12710,58 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} - denque@2.1.0: {} detect-indent@6.1.0: {} detect-libc@2.0.3: {} - diff@8.0.3: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dts-resolver@3.0.0: {} - - eastasianwidth@0.2.0: {} - - editorconfig@1.0.4: - dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.1 - semver: 7.7.4 - - electron-to-chromium@1.5.302: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - enabled@2.0.0: {} - - end-of-stream@1.4.4: - 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 - strip-ansi: 6.0.1 - - entities@4.5.0: {} - - es-module-lexer@1.7.0: {} - - es-module-lexer@2.0.0: {} - - 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 + diff@8.0.3: + optional: true - eslint-scope@7.2.2: + dir-glob@3.0.1: dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 + path-type: 4.0.0 + + dts-resolver@3.0.0: {} - eslint-scope@8.4.0: + eastasianwidth@0.2.0: {} + + editorconfig@1.0.4: dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.7.4 - eslint-visitor-keys@3.4.3: {} + electron-to-chromium@1.5.302: {} - eslint-visitor-keys@4.2.1: {} + emoji-regex@8.0.0: {} - eslint-visitor-keys@5.0.1: {} + emoji-regex@9.2.2: {} - 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 + enabled@2.0.0: {} - espree@10.4.0: + end-of-stream@1.4.4: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + once: 1.4.0 - espree@9.6.1: + enquirer@2.4.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 - esprima@4.0.1: {} + entities@4.5.0: {} - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 + es-module-lexer@1.7.0: {} - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 + es-module-lexer@2.0.0: {} + + es-toolkit@1.42.0: {} + + escalade@3.2.0: {} - estraverse@5.3.0: {} + esprima@4.0.1: {} estree-walker@2.0.2: {} @@ -13844,8 +12769,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - esutils@2.0.3: {} - event-target-shim@5.0.1: {} events@3.3.0: {} @@ -13868,7 +12791,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: {} @@ -13882,11 +12806,8 @@ snapshots: fast-json-patch@3.1.1: {} - fast-json-stable-stringify@2.1.0: {} - - 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,16 +12821,12 @@ 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: {} - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-type@3.9.0: {} file-type@5.2.0: {} @@ -13927,18 +12844,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: @@ -13953,6 +12858,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 +12892,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 @@ -14000,10 +12902,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 @@ -14022,14 +12920,6 @@ 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 +12940,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 +12948,6 @@ snapshots: dependencies: function-bind: 1.1.2 - he@1.2.0: {} - html-escaper@2.0.2: {} https-proxy-agent@7.0.6: @@ -14081,18 +12967,10 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - 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: {} - - imurmurhash@0.1.4: {} + import-lazy@4.0.0: + optional: true inflight@1.0.6: dependencies: @@ -14160,7 +13038,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jju@1.4.0: {} + jju@1.4.0: + optional: true js-beautify@1.15.4: dependencies: @@ -14185,13 +13064,8 @@ snapshots: jsesc@3.1.0: {} - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} + json-schema-traverse@1.0.0: + optional: true json-stringify-safe@5.0.1: {} @@ -14208,13 +13082,10 @@ snapshots: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + optional: true kdbush@4.0.2: {} - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - kolorist@1.8.0: {} kuler@2.0.0: {} @@ -14223,11 +13094,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 @@ -14287,14 +13153,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: {} @@ -14321,6 +13181,7 @@ snapshots: lru-cache@6.0.0: dependencies: yallist: 4.0.0 + optional: true magic-string@0.30.21: dependencies: @@ -14358,6 +13219,7 @@ snapshots: minimatch@10.2.1: dependencies: brace-expansion: 5.0.5 + optional: true minimatch@10.2.5: dependencies: @@ -14416,8 +13278,6 @@ snapshots: napi-build-utils@2.0.0: {} - natural-compare@1.4.0: {} - nice-try@1.0.5: {} node-abi@3.93.0: @@ -14444,16 +13304,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 @@ -14468,15 +13324,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: @@ -14559,18 +13406,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: {} @@ -14579,10 +13418,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: {} @@ -14610,8 +13445,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} - picomatch@4.0.4: {} pify@2.3.0: {} @@ -14647,23 +13480,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 @@ -14679,8 +13501,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: {} @@ -14689,18 +13509,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 @@ -14709,8 +13528,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 @@ -14723,17 +13540,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,12 +13617,11 @@ 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: {} - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -14822,20 +13638,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@5.6.3)): 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 +13769,7 @@ snapshots: semver@7.5.4: dependencies: lru-cache: 6.0.0 + optional: true semver@7.6.3: {} @@ -15007,7 +13823,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 +13845,6 @@ snapshots: stackback@0.0.2: {} - std-env@3.10.0: {} - std-env@4.1.0: {} stream-browserify@3.0.0: @@ -15045,7 +13860,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: @@ -15085,7 +13901,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: {} @@ -15096,11 +13913,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 +13979,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 +13996,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: {} @@ -15232,33 +14037,42 @@ snapshots: tweetnacl@0.14.5: {} - type-check@0.4.0: - 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 +14090,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: {} @@ -15286,10 +14128,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: {} @@ -15302,24 +14140,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 +14174,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 +14186,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 +14198,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 +14218,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 +14254,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 @@ -15523,8 +14306,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 @@ -15545,15 +14326,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: {} @@ -15576,16 +14356,51 @@ 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: + 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 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 024a117..80838a9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,25 +1,25 @@ 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 - "@platforma-sdk/blocks-deps-updater": 2.2.0 - "@platforma-sdk/eslint-config": 1.2.0 + "@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 + "@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 + "@platforma-sdk/package-builder": 3.15.0 "@platforma-open/milaboratories.runenv-python-3": 1.8.2 @@ -28,7 +28,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/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..725ebe3 100644 --- a/test/package.json +++ b/test/package.json @@ -7,27 +7,26 @@ "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.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.samples-and-data": "^1.17.1", - "@platforma-open/milaboratories.samples-and-data.model": "^2.8.0", "@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..1667a5c 100644 --- a/test/src/helpers.ts +++ b/test/src/helpers.ts @@ -16,25 +16,30 @@ * 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 type { ML, RawHelpers } from '@platforma-sdk/test'; -import { awaitStableState } from '@platforma-sdk/test'; -import type { expect as vitestExpect } from 'vitest'; +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"; export type TestCtx = { rawPrj: ML.Project; @@ -46,14 +51,17 @@ export type TestCtx = { /** * Add the sequence-properties block under test. */ -export async function addSequenceProperties(ctx: TestCtx, label = 'Sequence Properties'): Promise { - return await ctx.rawPrj.addBlock(label, seqPropsBlockSpec); +export async function addSequenceProperties( + ctx: TestCtx, + label = "Sequence Properties", +): Promise { + 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, @@ -67,19 +75,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 } }, }, @@ -88,7 +96,7 @@ async function configureSamplesAndData( h5adFilesToPreprocess: [], seuratFilesToPreprocess: [], suggestedImport: false, - } satisfies SamplesAndDataBlockData, + }, }); } @@ -109,45 +117,30 @@ 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 - // 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', + 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', - } satisfies MixcrClonotypingBlockData, + runMode: "full", + }, }); } @@ -165,12 +158,15 @@ 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", 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 4719d14..31813c5 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 { SequencePropertiesBlockPointer } 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", SequencePropertiesBlockPointer); 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..f81e343 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": "pl-tengo test", + "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,8 @@ }, "devDependencies": { "@platforma-sdk/tengo-builder": "catalog:", - "@platforma-sdk/test": "catalog:" + "@platforma-sdk/test": "catalog:", + "shx": "catalog:" }, - "peerDependencies": { - "vitest": "*" - } + "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..f566272 100644 --- a/workflow/src/messages.lib.tengo +++ b/workflow/src/messages.lib.tengo @@ -39,6 +39,16 @@ 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)." +} + // R11c — single-domain antibody (VHH / nanobody) heuristic. vhh := func() { return "Possible VHH/single-domain antibody input detected (heavy chain only; " + @@ -60,6 +70,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 - } -});