diff --git a/apps/electron/package.json b/apps/electron/package.json index a89e9f79..978bf8b9 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@lingui/core": "6.10.1", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", "@mdbase-reader/platform": "workspace:*", "electron": "latest" } diff --git a/apps/extension/package.json b/apps/extension/package.json index 83d08f8e..a6055783 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -18,9 +18,9 @@ "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz", "@lingui/core": "6.10.1", "@lingui/react": "6.10.1", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", "@mdbase-reader/i18n": "workspace:*", - "@mdbase-dev/ui": "file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/ui": "0.1.0-beta.147", "@mdbase-reader/connect": "workspace:*", "@mdbase-reader/core": "workspace:*", "@mdbase-reader/platform": "workspace:*", diff --git a/apps/reader/package.json b/apps/reader/package.json index be8269b3..eb5abfeb 100644 --- a/apps/reader/package.json +++ b/apps/reader/package.json @@ -29,12 +29,12 @@ "@mdbase-dev/sdk": "file:../../packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz", "@mdbase-dev/sdk-lab": "file:../../packages/connect/vendor/sdk-dev-eaa4e697-lab.tgz", "@mdbase-dev/sdk-staging": "file:../../packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", "@citation-js/plugin-csl": "0.9.0", "@lingui/core": "6.10.1", "@lingui/react": "6.10.1", "@mdbase-dev/sdk-legacy-729b5391": "file:../../vendor/mdbase-dev-sdk-0.0.0-729b5391.tgz", - "@mdbase-dev/ui": "file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/ui": "0.1.0-beta.147", "@mdbase-reader/connect": "workspace:*", "@mdbase-reader/core": "workspace:*", "@mdbase-reader/i18n": "workspace:*", diff --git a/docs/new-sdk.md b/docs/new-sdk.md index d81a713d..3f81557a 100644 --- a/docs/new-sdk.md +++ b/docs/new-sdk.md @@ -77,10 +77,9 @@ is introduced. Writer's optional file-access consent remains a later SDK capabil - Unsupported features are refused (`unsupported_operation`), never emulated. See the gap list in the coordinator's `reader-sdk-gaps.md`. - `SdkReaderRoot` renders the shared `CollectionGate` from `@mdbase-dev/ui/collections` - (this multilingual branch uses `vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz`, - recorded in `vendor/mdbase-ui-i18n.json`; it is strict-complete multilingual integration, - not publisher/release-qualified. - The prior dev-intake original and `vendor/mdbase-ui-dev.json` remain untouched): + (`@mdbase-dev/ui@0.1.0-beta.147` from npm; this is strict-complete multilingual + integration, not native publisher/release qualification. The prior dev-intake + original and `vendor/mdbase-ui-dev.json` remain untouched): - The gate owns sign-in, choosing, approval, setup review, problems and sign-out (`signOut()`, never `close()`). Reader supplies only its name and mark. - It starts the entry once (StrictMode-safe); the entry follows page visibility. diff --git a/docs/translations.md b/docs/translations.md index bec10f2d..554dde1b 100644 --- a/docs/translations.md +++ b/docs/translations.md @@ -21,7 +21,7 @@ pnpm i18n:check During local authoring only, `check:code` runs the unchanged lint/typecheck/test suite and `build:code` builds every workspace without asserting catalogue completeness. Neither substitutes for the normal release gates. Run finite checks/builds via `rpnpm` on this machine. -Kit commit `24e9f5d0` includes the public-bin fix, nested plural/explicit-instance/class-field source-guard repairs, field-level tracking, rendered-state notice detection, compiled-catalogue composition checking and obsolete-message pruning. Scripts invoke its public `mdbase-i18n` bin directly; no adapter or source exclusions are needed. Its source guard passes all 487 modules without newly unmarked copy, so adoption adds no English message IDs. +The published `@mdbase-dev/i18n@0.1.0-beta.147` includes the public-bin fix, nested plural/explicit-instance/class-field source-guard repairs, field-level tracking, rendered-state notice detection, compiled-catalogue composition checking and obsolete-message pruning. Scripts invoke its public `mdbase-i18n` bin directly; no adapter or source exclusions are needed. While catalogues are being authored, `pnpm exec lingui compile --workers 1` permits development fallback; it is **not** evidence of translation completeness. Empty target PO entries must never be filled with English just to pass checks. @@ -35,16 +35,15 @@ Electron's main process initializes synchronous English from copied compiler-own ## Shared kit dependency -This branch vendors `@mdbase-dev/i18n` from Connect commit `24e9f5d0`: - -- `vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz` -- SHA256 `b65ce6066f9e096eea183209c93b42950f21f8e78a0d105838a15da9ca82ce46` +Every workspace pins `@mdbase-dev/i18n` and `@mdbase-dev/ui` to exactly `0.1.0-beta.147` from npm, with integrity recorded in `pnpm-lock.yaml`. Do not use a range or dist-tag: i18n's `latest` tag is a staging placeholder. Its `createI18nRuntime` encodes backslashes in interpolated string values once per Lingui instance, so user text such as `C:\x41dir` renders literally. Reader relies on it and has no wrapper of its own; a second encoding pass would display `\` as `\u005c`. -Public UI integration uses `vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz` (SHA256 `1230707f2ba9545a041f2a9325ab5e2d25ed001885ebc0369d836e00b19d30f0`). Its `uiCatalogues` source is composed by the shared runtime, so library strings remain library-owned and use the exact same Lingui singleton. Reader gives potentially colliding generic messages semantic contexts to prevent independent PO translations from conflicting. This is the coordinator's strict-complete shared UI pin: 197 active messages per locale, with obsolete `nzHlj8` pruned. Translation integration is complete; it is not publisher/release qualification. Reader’s protected publisher gate currently refuses it against the approved UI original. Historical approved tarballs, trust pins and verification tests have not been changed; normal authorized intake/release qualification is required before that gate can be green. +The UI's `uiCatalogues` source is composed by the shared runtime, so library strings remain library-owned and use the exact same Lingui singleton. Reader gives potentially colliding generic messages semantic contexts to prevent independent PO translations from conflicting. The npm UI has 197 active messages per locale, with obsolete `nzHlj8` pruned. + +Publisher tests compare every installed UI member against `scripts/tests/fixtures/ui-npm-members.json`, generated with `originalMembers` from npm's integrity-verified beta.147 archive (`npm pack @mdbase-dev/ui@0.1.0-beta.147`). Compared with the prior 24e9f5d0 tarball, all 94 UI members are identical except `package.json` (version and development i18n pin). All 37 kit members are identical except its package version. No catalogue regeneration or runtime patch is needed. -**Replace the file dependency with the published npm version at merge time**, after the next Connect release. No publication or deployment is authorized by this branch. +npm installation is **not native publisher/release qualification**: the live native guard still requires an independently approved file intake. Historical approved UI archives and protected hashes remain unchanged; tests use them only in disposable historical fixtures. No publication or deployment is authorized by this dependency swap. Italian also appears in the separate citation-output locale picker. The citation-js bundled locale subset has no Italian data, so `src/locales/csl-it-IT.xml` supplies pinned, attributed CSL data (see its adjacent README), loaded lazily from Reader’s own deployment. Citation output language remains an explicit choice, separate from interface language; source metadata is never rewritten. diff --git a/package.json b/package.json index 1fccb9b0..57554773 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@lingui/vite-plugin": "6.9.0", "@mdbase-dev/connect-dev": "0.1.0-beta.125", "@mdbase-dev/connect-protocol": "file:packages/connect/vendor/mdbase-dev-connect-protocol-0.1.0-beta.129-c280cd194ffd.tgz", - "@mdbase-dev/i18n": "file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", "@mdbase-reader/i18n": "workspace:0.1.0-beta.0", "@types/node": "^22.19.11", "eslint": "^9.39.2", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 907b2d5b..d207eac8 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -15,8 +15,8 @@ "dependencies": { "@lingui/core": "6.10.1", "@lingui/react": "6.10.1", - "@mdbase-dev/ui": "file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/ui": "0.1.0-beta.147", + "@mdbase-dev/i18n": "0.1.0-beta.147", "react": "^19.3.1" }, "devDependencies": { diff --git a/packages/markdown-editor/package.json b/packages/markdown-editor/package.json index 06135ffa..deed190e 100644 --- a/packages/markdown-editor/package.json +++ b/packages/markdown-editor/package.json @@ -22,8 +22,8 @@ "@codemirror/view": "^6.43.15", "@lezer/highlight": "^1.2.5", "@lingui/core": "6.10.1", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", - "@mdbase-dev/ui": "file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", + "@mdbase-dev/ui": "0.1.0-beta.147", "@mdbase-reader/core": "workspace:*", "react": "^19.3.1" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index a5814774..e36d475e 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -15,11 +15,11 @@ }, "dependencies": { "@citation-js/plugin-csl": "0.9.0", - "@mdbase-dev/i18n": "file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/i18n": "0.1.0-beta.147", "@fontsource/atkinson-hyperlegible": "^5.3.0", "@fontsource/azeret-mono": "^5.3.0", "@lingui/core": "6.10.1", - "@mdbase-dev/ui": "file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz", + "@mdbase-dev/ui": "0.1.0-beta.147", "@phosphor-icons/react": "^2.1.10", "citeproc": "2.4.63", "react": "^19.3.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 789461ae..6f71e6a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: file:packages/connect/vendor/mdbase-dev-connect-protocol-0.1.0-beta.129-c280cd194ffd.tgz version: file:packages/connect/vendor/mdbase-dev-connect-protocol-0.1.0-beta.129-c280cd194ffd.tgz '@mdbase-dev/i18n': - specifier: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.0))(@lingui/react@6.10.1(@babel/core@7.29.0)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.0))(@lingui/react@6.10.1(@babel/core@7.29.0)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-reader/i18n': specifier: workspace:0.1.0-beta.0 version: link:packages/i18n @@ -118,8 +118,8 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-reader/platform': specifier: workspace:* version: link:../../packages/platform @@ -139,8 +139,8 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7)(react@19.3.1) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/sdk': specifier: file:../../packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz version: file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz @@ -151,8 +151,8 @@ importers: specifier: file:../../packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz version: '@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz' '@mdbase-dev/ui': - specifier: file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/connect': specifier: workspace:* version: link:../../packages/connect @@ -209,8 +209,8 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7)(react@19.3.1) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/sdk': specifier: file:../../packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz version: file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz @@ -224,8 +224,8 @@ importers: specifier: file:../../packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz version: '@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dev-eaa4e697-staging.tgz' '@mdbase-dev/ui': - specifier: file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/connect': specifier: workspace:* version: link:../../packages/connect @@ -347,11 +347,11 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7)(react@19.3.1) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': - specifier: file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) react: specifier: ^19.3.1 version: 19.3.1 @@ -396,11 +396,11 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': - specifier: file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@mdbase-reader/core': specifier: workspace:* version: link:../core @@ -578,11 +578,11 @@ importers: specifier: 6.10.1 version: 6.10.1(@babel/core@7.29.7) '@mdbase-dev/i18n': - specifier: file:../../vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) '@mdbase-dev/ui': - specifier: file:../../vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz - version: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) + specifier: 0.1.0-beta.147 + version: 0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1) '@phosphor-icons/react': specifier: ^2.1.10 version: 2.1.10(react-dom@19.3.1(react@19.3.1))(react@19.3.1) @@ -1598,9 +1598,8 @@ packages: '@mdbase-dev/connect@0.1.0-beta.125': resolution: {integrity: sha512-vEH4NQfu3dBQgMw0YQxG7LDtOOLxDyxET4DQhrWuHqtgr9qoch/H0QLzel9tFSqkyH+QWxuvW3Bet6ae1+qVyQ==} - '@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz': - resolution: {integrity: sha512-noqot4VcwqkZn72+ugQm7Xbe6k+q9fz3WcTP3tcHIXuWO+DMEXNEeq6kuGQnCISSCywVLxrn+shd89i1hpBSFw==, tarball: file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz} - version: 0.1.0-beta.141 + '@mdbase-dev/i18n@0.1.0-beta.147': + resolution: {integrity: sha512-6WlBrS1hsiT2sppyAHHSLrr18fknqkm6xZsCy7YIFZHR0z5MMRA5oSl5UOMmGjkNr5Ji81ISpcmgZXVjDM5EJg==} hasBin: true peerDependencies: '@lingui/core': 6.9.0 @@ -1633,9 +1632,9 @@ packages: version: 0.0.0 engines: {node: '>=20'} - '@mdbase-dev/ui@file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz': - resolution: {integrity: sha512-9MPzTYYGmYg2umpfaOMlaK2Y2e4tgdMNLozgcuJxW+VtLJcCAIGZ9iI5o/JjzRe9BC443veYzVmAbGxnDuF/EA==, tarball: file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz} - version: 0.1.0-beta.141 + '@mdbase-dev/ui@0.1.0-beta.147': + resolution: {integrity: sha512-BslLGNFzNSzQX8Uvhoj7NvtvG0Y1ea/jLhXU+NQlqTb/58CX4m3xeV+ambV7acuzD7zcKr54USEd10SU4ncyQA==} + version: 0.1.0-beta.147 peerDependencies: '@codemirror/view': ^6.0.0 '@lingui/core': 6.9.0 @@ -5587,7 +5586,7 @@ snapshots: dependencies: '@mdbase-dev/connect-protocol': 0.1.0-beta.125 - '@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.0))(@lingui/react@6.10.1(@babel/core@7.29.0)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15)': + '@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.0))(@lingui/react@6.10.1(@babel/core@7.29.0)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15)': dependencies: '@lingui/cli': 6.9.0(rolldown@1.2.15) '@lingui/conf': 6.9.0 @@ -5603,7 +5602,7 @@ snapshots: - rolldown - supports-color - '@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15)': + '@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15)': dependencies: '@lingui/cli': 6.9.0(rolldown@1.2.15) '@lingui/conf': 6.9.0 @@ -5643,13 +5642,13 @@ snapshots: '@noble/curves': 2.4.0 '@noble/hashes': 2.4.0 - '@mdbase-dev/ui@file:vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': + '@mdbase-dev/ui@0.1.0-beta.147(@codemirror/view@6.43.15)(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(@mdbase-dev/i18n@0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15))(@mdbase-dev/sdk@file:packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': dependencies: '@fontsource-variable/atkinson-hyperlegible-next': 5.3.0 '@fontsource/azeret-mono': 5.3.0 '@lingui/core': 6.10.1(@babel/core@7.29.7) '@lingui/react': 6.10.1(@babel/core@7.29.7)(react@19.3.1) - '@mdbase-dev/i18n': file:vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) + '@mdbase-dev/i18n': 0.1.0-beta.147(@lingui/core@6.10.1(@babel/core@7.29.7))(@lingui/react@6.10.1(@babel/core@7.29.7)(react@19.3.1))(react@19.3.1)(rolldown@1.2.15) react: 19.3.1 optionalDependencies: '@codemirror/view': 6.43.15 diff --git a/scripts/tests/fixtures/ui-npm-members.json b/scripts/tests/fixtures/ui-npm-members.json new file mode 100644 index 00000000..511e0d32 --- /dev/null +++ b/scripts/tests/fixtures/ui-npm-members.json @@ -0,0 +1,477 @@ +{ + "name": "@mdbase-dev/ui", + "version": "0.1.0-beta.147", + "integrity": "sha512-BslLGNFzNSzQX8Uvhoj7NvtvG0Y1ea/jLhXU+NQlqTb/58CX4m3xeV+ambV7acuzD7zcKr54USEd10SU4ncyQA==", + "members": [ + { + "path": "LICENSE", + "bytes": 1084, + "sha256": "babe02479afe073a3ab536bc248b86e3c5936e5709791ddef484a5d998780225" + }, + { + "path": "README.md", + "bytes": 13905, + "sha256": "667359c2164a0eb7dbb018f55ee9fb9b0ddd82ef9260ca09a7e9f587babfe29f" + }, + { + "path": "css/brand.css", + "bytes": 2240, + "sha256": "eda9caeab1e3fb8ddce762222aa684a6f93c4dfaac7628daf03afd2fed7138b9" + }, + { + "path": "css/collections.css", + "bytes": 23316, + "sha256": "e2c68245e0b01a5052550601093704fcb8cfb67369ba30a122523afea2b2df8a" + }, + { + "path": "css/controls.css", + "bytes": 18200, + "sha256": "fec91efbba948053aa703720e30ef68bdae108589d68a157ff65e823b9881779" + }, + { + "path": "css/feedback.css", + "bytes": 8487, + "sha256": "d20f0418c3cab17857f90ee8d8ccd947a4f8ebd72c3c608f7f9b2aa0658ab56b" + }, + { + "path": "css/fonts.css", + "bytes": 312, + "sha256": "b0cbd88a983e8d5e094f7896e55c3ce88d188d94ee9066cf901eed1a63ffd879" + }, + { + "path": "css/motion.css", + "bytes": 9637, + "sha256": "cd48e7095b3c62d9552d7f6a39fd70e08aacd51229f782430522e2188d3fe739" + }, + { + "path": "css/palette.css", + "bytes": 4121, + "sha256": "cb5ba7d45b91bb39dec5f0275827ec73d5238121f6ef2e57ddfb09b6a99aba73" + }, + { + "path": "css/screens.css", + "bytes": 4298, + "sha256": "14d28b55dbc10933cc16b741c5110ae5cbbef693a234e9476232e7ddca4a5ff9" + }, + { + "path": "css/tokens.css", + "bytes": 6807, + "sha256": "5fd11f28997761829f2a48d6124910e996f880e56074f4f20df042eb38af2df0" + }, + { + "path": "dist/AppSwitcher.d.ts", + "bytes": 816, + "sha256": "4e84d8714575a71e1570094a22bdff62f33be942cf1d97b9478f9cc05bfc7db9" + }, + { + "path": "dist/AppSwitcher.js", + "bytes": 5567, + "sha256": "2c8e3ff0202ee8f560a41da25789a54eadf4e5cc4bbca2d2b47314ceb928f39f" + }, + { + "path": "dist/Checkbox.d.ts", + "bytes": 701, + "sha256": "2b5b4b685dd6a0d6b1ae7a3c4a34dae4f9927c65cca57bc3ea9b39897649b7c3" + }, + { + "path": "dist/Checkbox.js", + "bytes": 780, + "sha256": "f777e46e57f66eb81479ce3f8b5056220bd0f800649baf203d035b0ad979a74c" + }, + { + "path": "dist/CommandPalette.d.ts", + "bytes": 1922, + "sha256": "36f66fb480a7bcf4ca609c968efb82f76b3c9bd9aac563e592d43188eae13b55" + }, + { + "path": "dist/CommandPalette.js", + "bytes": 9252, + "sha256": "8c5dfb095b2a5894164d63f3038d81c2eab8febdcfac590230ad99e9e6a5467c" + }, + { + "path": "dist/Dialog.d.ts", + "bytes": 549, + "sha256": "a6e6090b12076cec08bd4dedfa4ca49ab71e15a2859ba122a2b9fed5931b9a67" + }, + { + "path": "dist/Dialog.js", + "bytes": 2399, + "sha256": "bed9d4dd61233381860fbbcc3881bbe01f980c94424635dc6ef26811f1448565" + }, + { + "path": "dist/Feedback.d.ts", + "bytes": 1364, + "sha256": "8101a470bc1800b1fe40283cbfb96a9f4f7ee712d2a29203a5d8a2bd1ddd06e7" + }, + { + "path": "dist/Feedback.js", + "bytes": 26614, + "sha256": "1728efa559ef3aea521594c72ea29b2301de14e7d6829ad814a6e71b9aa9d289" + }, + { + "path": "dist/FeedbackMarkup.d.ts", + "bytes": 713, + "sha256": "278f36d95d2978c82769eeb3b7ee0d42a091fea25578d160014a4f700914acdb" + }, + { + "path": "dist/FeedbackMarkup.js", + "bytes": 10876, + "sha256": "ad93e9a52ab530a20b9b24a28b7403f9f5ecbd24d342dfeb09413f30847e8a90" + }, + { + "path": "dist/FeedbackVerification.d.ts", + "bytes": 560, + "sha256": "c950cd06ffc4c83cd4b8ed69e9e5d279627b844a92d3ea7f3b87a47914ec3003" + }, + { + "path": "dist/FeedbackVerification.js", + "bytes": 3729, + "sha256": "02f9d2817b00f1e932862ae5a5705f58de53c38506795f58b082b5f2a2dbd539" + }, + { + "path": "dist/SaveNotice.d.ts", + "bytes": 1150, + "sha256": "c03a058efe71adec993177a9fe79504d3315edde49edfb0af1fbc256d4fd76b3" + }, + { + "path": "dist/SaveNotice.js", + "bytes": 2521, + "sha256": "cb18a6b49e845f00fb2674fdc021882d2b21f3c8ef65952fc22372757eca5676" + }, + { + "path": "dist/Select.d.ts", + "bytes": 1364, + "sha256": "140b4a74d597615c33b82f740740a46cc26b32a03294920ef760823d3e11b7df" + }, + { + "path": "dist/Select.js", + "bytes": 6489, + "sha256": "9a212d07efd198f508cc6a0e335ea96e5d7eec672ce0bf9babba628135954ec1" + }, + { + "path": "dist/SelectList.d.ts", + "bytes": 952, + "sha256": "9f3f1badd084070592ed741ba233d0a3f86e2d456462867f1a865c1af6f5eddf" + }, + { + "path": "dist/SelectList.js", + "bytes": 2049, + "sha256": "feed6b193689befe4f8eca395edb804b9f4fdaf42d017bf0266d0b33aff0b3db" + }, + { + "path": "dist/ThemeSelect.d.ts", + "bytes": 550, + "sha256": "f932e0050c60aa48e2c8004673f0467905a761f836cb59029546a68ebad77494" + }, + { + "path": "dist/ThemeSelect.js", + "bytes": 1336, + "sha256": "9c2fcb2698d109cb9ad3e53e553016affeabcaa640d287189647ec5d4d1e0c9b" + }, + { + "path": "dist/apps.d.ts", + "bytes": 993, + "sha256": "48d1948789d87d7657758770e8330b3bfcf76ea9b7372fe0875ecf6a3cc2a90b" + }, + { + "path": "dist/apps.js", + "bytes": 1769, + "sha256": "d73ac4f057ba2fa28e1d8278711a8fbd304223ad4e3538a753d13e89800f1310" + }, + { + "path": "dist/brand.d.ts", + "bytes": 3728, + "sha256": "1de1c87d8880d1534ac5f56bacde45622818e216f54051013e7f3cb51194c06e" + }, + { + "path": "dist/brand.js", + "bytes": 8402, + "sha256": "371c2e67d4f72550efa861a7fc107e9f2100c347ad5d078df3240d5e80584322" + }, + { + "path": "dist/codemirror.d.ts", + "bytes": 554, + "sha256": "1e93eeb7797f31bb994d95cd35ceeefa28426718cfbdd1e728e51cb12e95ae59" + }, + { + "path": "dist/codemirror.js", + "bytes": 3682, + "sha256": "a15329f2f731f67a9f7994c6949002fc1df1e33d5c4d545f2a606b3c4c96ff94" + }, + { + "path": "dist/collections.d.ts", + "bytes": 1882, + "sha256": "7af3f12be0bf1b9481bf495569f5db0fd632d6af4e896f8d177108469eaaec6c" + }, + { + "path": "dist/collections.js", + "bytes": 925, + "sha256": "dd145aff6902cace47efc55fae63971d1989e72e0fc1de1f9e8f2df9c84a27a2" + }, + { + "path": "dist/collections/CollectionGate.d.ts", + "bytes": 3069, + "sha256": "87ed3c74bae39d993726fa6827f171af577c94c48d17d0754958b79cdeb2e4e7" + }, + { + "path": "dist/collections/CollectionGate.js", + "bytes": 13938, + "sha256": "71f091b9559d970e9766f87ec164b7d2f1f4f322ce11d5b6cb832aed6fe53df0" + }, + { + "path": "dist/collections/CollectionSaveWarning.d.ts", + "bytes": 639, + "sha256": "97401da0f6ec3ed32aed17fd0471aa94390715b53814e6b3840042eed38f83bf" + }, + { + "path": "dist/collections/CollectionSaveWarning.js", + "bytes": 1202, + "sha256": "da062dce0fb5326da61b927758fc5eb50517bb83cfb9260eabd8e8169746f470" + }, + { + "path": "dist/collections/CollectionSwitcher.d.ts", + "bytes": 1414, + "sha256": "ea1d8cb51751782e87228c088f194c62dc8d786c30449f4c00cf579e745092ee" + }, + { + "path": "dist/collections/CollectionSwitcher.js", + "bytes": 19917, + "sha256": "0eb5a0589c2cfebe1aee2c86d8ef986e4dad5aa9b34ef6c5fed35ed5c77ec8ad" + }, + { + "path": "dist/collections/SetupReview.d.ts", + "bytes": 352, + "sha256": "92299768ce3e747c911d0b4451c0afbf98c7e20e1ac9e44ab3a44f3e94cb3c6b" + }, + { + "path": "dist/collections/SetupReview.js", + "bytes": 5582, + "sha256": "fb887c15dea4c15d5566eef482dedb3116d6f2d32e222bc929b168bc27920415" + }, + { + "path": "dist/collections/copy.d.ts", + "bytes": 3778, + "sha256": "e06efcbe8e3a4cd00b9f33f09a6a7f2fc52756f51a1f2fc4546585b8f800a8b6" + }, + { + "path": "dist/collections/copy.js", + "bytes": 19362, + "sha256": "9ac5d5a39c808976bbdbc21ae72ff54a2856349f75a71b7d3c75e1c8099157ef" + }, + { + "path": "dist/collections/dialogs.d.ts", + "bytes": 1260, + "sha256": "bab3119d8b2fafe8a16a10fcffe5b437d8ddaf222ae23c25600011bbde07bf48" + }, + { + "path": "dist/collections/dialogs.js", + "bytes": 4761, + "sha256": "c7592d521bfe1b0974dcef9fdc0b116d81cda2b0f0517f4fef641fb226fbfcc7" + }, + { + "path": "dist/collections/model.d.ts", + "bytes": 5948, + "sha256": "2be50ac185ebe3bb9310981c65360fc888204d12e37b0bd47e70fa8e10d702a3" + }, + { + "path": "dist/collections/model.js", + "bytes": 10721, + "sha256": "80aa19166c5f15dd8b8ddf9d758c84d7b27d89c6ed9672c428c3f0843949687c" + }, + { + "path": "dist/collections/mount.d.ts", + "bytes": 1122, + "sha256": "a910f9fea8df947ae135f37283e03406a1505609a06ab10de89b4ac861ca3316" + }, + { + "path": "dist/collections/mount.js", + "bytes": 1259, + "sha256": "a30e00ae6d2b9bc84f1481de02dc5afe11355f55b61463b0e6698f7b81028eeb" + }, + { + "path": "dist/collections/parts.d.ts", + "bytes": 4165, + "sha256": "7578c04350634f2fba00213fc13c94fcbad02cfb26054e8d8ba2469043ffa692" + }, + { + "path": "dist/collections/parts.js", + "bytes": 12297, + "sha256": "bb87c3020c6a0ae70c560cf47949b4ff0154205cecd1c3b09830415f7446cd0b" + }, + { + "path": "dist/collections/testing.d.ts", + "bytes": 714, + "sha256": "6525561f14e1b26b16eb966bdb93ab0f2b7b8b6256322746e68040724b9aa4cb" + }, + { + "path": "dist/collections/testing.js", + "bytes": 1656, + "sha256": "abc28a8bb5752af3cc1e7fd3121d60b4b31a406d763db3a194ab945930157290" + }, + { + "path": "dist/collections/use-collection-ui.d.ts", + "bytes": 7514, + "sha256": "33754b17dc4d0dc71e6fc32812c58f87ac5329b678f3099cbc4866494921faa3" + }, + { + "path": "dist/collections/use-collection-ui.js", + "bytes": 7942, + "sha256": "2745d388b64af300160b720c1fed0109e4523f649dfa7bdeece940052852db50" + }, + { + "path": "dist/feedback-data.d.ts", + "bytes": 3435, + "sha256": "f035723e9244765015d6f616cca7909e3d37e887d8c5b4a5cd740c6dd76fb935" + }, + { + "path": "dist/feedback-data.js", + "bytes": 13193, + "sha256": "c55f38176a95a4a5c934f2a468c65abd3e8270f58b8b3535d1324bcc7dc653aa" + }, + { + "path": "dist/flock.d.ts", + "bytes": 2463, + "sha256": "9cf35b30ba6b5bcc69e5007d4b481ba80ec64247386a1faae2e55d9cbaef5aec" + }, + { + "path": "dist/flock.js", + "bytes": 5195, + "sha256": "bdd56e2eaed9b0672be00638541f48c322c6a1da64ea34345013a92fdd74bb13" + }, + { + "path": "dist/i18n.d.ts", + "bytes": 309, + "sha256": "04966a8c47f62721f9277b26452e6ce22405c5bb1f07fa12f85aed1bafe7cbbc" + }, + { + "path": "dist/i18n.js", + "bytes": 1751, + "sha256": "75ea07ae6760bdf3c696ca20534fc32aaf4f2d30104ceb229d0dc0aded7e0f3a" + }, + { + "path": "dist/locales/de/messages.json", + "bytes": 10596, + "sha256": "1d88b883ce554d85cf3f9fb0671ffe9edf8cfae1c3c57a83b7bc0d47aabbb639" + }, + { + "path": "dist/locales/en/messages.json", + "bytes": 8817, + "sha256": "9c1331d17251ca1ac782678d9cdf9a4046b3402b0b22792c247a6c1f46bf0110" + }, + { + "path": "dist/locales/es/messages.json", + "bytes": 10080, + "sha256": "6d58c3a19ac3b00f987afd25a341b75647250eac0ed95945395a9b8367d593e3" + }, + { + "path": "dist/locales/fr/messages.json", + "bytes": 10662, + "sha256": "943d598f2e148d7097a13d3c05c44e2632194390805c8bd744ff5dd77792eb3a" + }, + { + "path": "dist/locales/it/messages.json", + "bytes": 9771, + "sha256": "d1375ee806818c8e16cb1523943ee9d024262f9bae9e8bb68e4ff8b8c61a1e8f" + }, + { + "path": "dist/locales/ja/messages.json", + "bytes": 12273, + "sha256": "39bf334f6c3a7d5c191b434d84b7442ee06948c766c33c72a8484556afd2fb30" + }, + { + "path": "dist/locales/ko/messages.json", + "bytes": 10633, + "sha256": "8a64279dd2ddbfbb5b3d94428792f7817f212176bd9b30d04fc2c8dcd48dd4eb" + }, + { + "path": "dist/locales/pt/messages.json", + "bytes": 9827, + "sha256": "3deba34555efe029d2b11d8d157f12ecd9ea21607a0a2920e4ef87d42854c579" + }, + { + "path": "dist/locales/ru/messages.json", + "bytes": 15317, + "sha256": "062d523e3efa20d6c00daeee25c157d0d879c9a2cb18a74894271c92a22dab82" + }, + { + "path": "dist/locales/zh/messages.json", + "bytes": 8735, + "sha256": "2e206127f47641e440219dbffd66b8d245c608fef84efd5e8e60dc26be45457c" + }, + { + "path": "dist/mark-activity.d.ts", + "bytes": 2081, + "sha256": "9f7eef5b9fcb0bc4a833d6385e33c2090ea1828521b37a47816fd1a17f5ed680" + }, + { + "path": "dist/mark-activity.js", + "bytes": 3570, + "sha256": "deb33f5b3070bd8792d3927bd775e21638045f8ce01e46ef0cb19e2ffe3b231c" + }, + { + "path": "dist/permission-selection.d.ts", + "bytes": 348, + "sha256": "87cd59a101c0a4b68372c7c7c677182a4639a44e947cde6bfd4dd4ca12653850" + }, + { + "path": "dist/permission-selection.js", + "bytes": 1105, + "sha256": "a88c874c5f4f34c339f3b70411b6b1690a6cc34210748b728f98aa84a4a1cedb" + }, + { + "path": "dist/popover.d.ts", + "bytes": 2303, + "sha256": "5a887f48f4657a8f953431163c20ea713cd8ebeaf57922e2937940a48ad0be31" + }, + { + "path": "dist/popover.js", + "bytes": 6669, + "sha256": "6c9c4c0d8921a670393a0a322c24eada31d5bf035bc78fa5510c94b2f38c1a2b" + }, + { + "path": "dist/screens.d.ts", + "bytes": 2174, + "sha256": "c9b77e24d46f53ef05d73e132f70ffb8d5a2f24114fce98f9d500684cef27d9b" + }, + { + "path": "dist/screens.js", + "bytes": 9419, + "sha256": "4343cd5ec076b7716a71cd0ed5f869c53d19d6369441d17b59c8fdd09f9d0fe3" + }, + { + "path": "dist/select-model.d.ts", + "bytes": 2143, + "sha256": "782d0bf50692e6733644356ecc5b7937e0a158e35382ffab722b78648a72a2fa" + }, + { + "path": "dist/select-model.js", + "bytes": 2171, + "sha256": "f9c136af97896ce975fd3635efa008fa29e9dbb73525a8c6656ce5169a633db2" + }, + { + "path": "dist/text-diff.d.ts", + "bytes": 290, + "sha256": "aef37e7c1114b6649aecaa6c6b8f69ddf0521bac80ab24485dc7c1c3a0147ec0" + }, + { + "path": "dist/text-diff.js", + "bytes": 4281, + "sha256": "efdbaeabf420964e473c2cb0db326e1400dc462740f06f758e13bda3362e1d9d" + }, + { + "path": "dist/theme.d.ts", + "bytes": 1268, + "sha256": "f733a6b08dfafb0e0f052d489aca164636994104c125ca34f22c3976248cbfab" + }, + { + "path": "dist/theme.js", + "bytes": 2242, + "sha256": "0244e83f3953a9d86a6e88c193ae1d34e2a047ed29fe28a28115c39b5b3efffb" + }, + { + "path": "package.json", + "bytes": 4994, + "sha256": "d164a10d040e4e49347c21458a5b902fa7abf2f0a5b8291c8074931cc9f4d2ed" + } + ] +} diff --git a/scripts/tests/helpers/reader-intake.mjs b/scripts/tests/helpers/reader-intake.mjs index 05595fb4..ecd3c922 100644 --- a/scripts/tests/helpers/reader-intake.mjs +++ b/scripts/tests/helpers/reader-intake.mjs @@ -4,7 +4,8 @@ import { createHash } from "node:crypto"; import { cp, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { join, relative, resolve } from "node:path"; +import { join } from "node:path"; +import { parse as parseYaml } from "yaml"; export const approvedUiArchive = "vendor/mdbase-dev-ui-dev-b2d7c464.tgz"; const sri = (bytes) => `sha512-${createHash("sha512").update(bytes).digest("base64")}`; @@ -13,10 +14,9 @@ export async function intakeCopy(target = "staging") { const root = await mkdtemp(join(tmpdir(), "reader-intake-data-")); try { const app = JSON.parse(await readFile("apps/reader/package.json", "utf8")); - const uiArchive = relative( - process.cwd(), - resolve("apps/reader", app.dependencies["@mdbase-dev/ui"].slice("file:".length)), - ); + const uiVersion = app.dependencies["@mdbase-dev/ui"]; + const lock = parseYaml(await readFile("pnpm-lock.yaml", "utf8")); + const uiIntegrity = lock.packages[`@mdbase-dev/ui@${uiVersion}`].resolution.integrity; const sdk = JSON.parse( await readFile("packages/connect/vendor/sdk-production-beta141.json", "utf8"), ); @@ -41,8 +41,11 @@ export async function intakeCopy(target = "staging") { await cp(path, join(root, path), { recursive: true }); } const replacements = [ - [uiArchive, approvedUiArchive], - [sri(await readFile(uiArchive)), sri(await readFile(approvedUiArchive))], + [`@mdbase-dev/ui@${uiVersion}`, `@mdbase-dev/ui@file:${approvedUiArchive}`], + [ + `resolution: {integrity: ${uiIntegrity}}`, + `resolution: {integrity: ${sri(await readFile(approvedUiArchive))}, tarball: file:${approvedUiArchive}}`, + ], ]; if (target === "staging") { replacements.push( @@ -53,6 +56,20 @@ export async function intakeCopy(target = "staging") { for (const path of paths.filter((path) => /(?:package\.json|pnpm-lock\.yaml)$/.test(path))) { let bytes = await readFile(join(root, path), "utf8"); for (const [from, to] of replacements) bytes = bytes.replaceAll(from, to); + if (path.endsWith("package.json")) { + const pkg = JSON.parse(bytes); + if (pkg.dependencies?.["@mdbase-dev/ui"]) { + pkg.dependencies["@mdbase-dev/ui"] = `file:../../${approvedUiArchive}`; + } + bytes = JSON.stringify(pkg, null, 2) + "\n"; + } else { + // Only disposable historical UI importer entries become file pins; + // the current npm i18n version and every protected hash stay untouched. + bytes = bytes.replace( + /('@mdbase-dev\/ui':\n {8}specifier: )[^\n]+\n {8}version: [^(\n]+/g, + `$1file:../../${approvedUiArchive}\n version: file:${approvedUiArchive}`, + ); + } await writeFile(join(root, path), bytes); } return root; diff --git a/scripts/tests/reader-intake.test.mjs b/scripts/tests/reader-intake.test.mjs index 77bd36e4..3a61118c 100644 --- a/scripts/tests/reader-intake.test.mjs +++ b/scripts/tests/reader-intake.test.mjs @@ -88,9 +88,9 @@ test("production intake binds approved archive originals and the unchanged beta1 "8e36f94c01d6f918390e89638c6f0757a7d5b74a6aaa6cfff14545cf47b29899", ); }); -test("native approval refuses the multilingual UI candidate against the approved production hashes", async () => { - // The i18n archive is intentionally not release-qualified. Passing local - // archive/installation checks must never silently grant native approval. +test("native approval refuses the npm UI candidate without an approved file intake", async () => { + // npm installation is intentionally not native-release qualification. Passing + // member checks must never silently grant native approval. await assert.rejects( loadOriginals({ target: "production", @@ -98,7 +98,7 @@ test("native approval refuses the multilingual UI candidate against the approved hashes: approvedProductionHashes, installed: true, }), - /ui protected archive hash mismatch/, + /@mdbase-dev\/ui must remain a file pin/, ); }); test("production still refuses staging protected hashes", async () => { diff --git a/scripts/tests/reader-publisher.test.mjs b/scripts/tests/reader-publisher.test.mjs index 0e40cd17..5f1152e0 100644 --- a/scripts/tests/reader-publisher.test.mjs +++ b/scripts/tests/reader-publisher.test.mjs @@ -83,18 +83,30 @@ test("last current HEAD rejects moved branch even if source remains ancestor", a ]) await assert.rejects(assertCurrentHead(env, async () => Response.json(value))); }); -test("ALL installed SDK, multilingual UI candidate, protocol and peers match their archives (not native approval)", async () => { +test("ALL installed SDK, npm UI candidate, protocol and peers match original members (not native approval)", async () => { const repoRoot = process.cwd(); const installerEvidence = []; const sdkMembers = originalMembers("packages/connect/vendor/sdk-dce61ff5-production-beta141.tgz"); - const uiArchive = "vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz"; - assert.equal( - createHash("sha256") - .update(await readFile(uiArchive)) - .digest("hex"), - "1230707f2ba9545a041f2a9325ab5e2d25ed001885ebc0369d836e00b19d30f0", - ); - const uiMembers = originalMembers(uiArchive); + // Generated from npm's integrity-verified beta.147 archive, not from the + // installation being tested. Keep this offline fixture separate from native + // approval: publishing to npm does not approve a native release intake. + const ui = JSON.parse(await readFile("scripts/tests/fixtures/ui-npm-members.json", "utf8")); + const lock = parseYaml(await readFile("pnpm-lock.yaml", "utf8")); + assert.equal(ui.name, "@mdbase-dev/ui"); + assert.equal(ui.version, "0.1.0-beta.147"); + assert.equal(lock.packages[`${ui.name}@${ui.version}`].resolution.integrity, ui.integrity); + for (const owner of [ + "apps/reader", + "apps/extension", + "packages/i18n", + "packages/ui", + "packages/markdown-editor", + ]) { + const pkg = JSON.parse(await readFile(`${owner}/package.json`, "utf8")); + assert.equal(pkg.dependencies[ui.name], ui.version); + assert.equal(lock.importers[owner].dependencies[ui.name].specifier, ui.version); + } + const uiMembers = ui.members; const protocolMembers = originalMembers( "packages/connect/vendor/mdbase-dev-connect-protocol-0.1.0-beta.129-c280cd194ffd.tgz", ); @@ -111,6 +123,7 @@ test("ALL installed SDK, multilingual UI candidate, protocol and peers match the for (const owner of [ "apps/reader", "apps/extension", + "packages/i18n", "packages/ui", "packages/markdown-editor", ]) { diff --git a/vendor/mdbase-dev-i18n-0.1.0-beta.141-096d80bf.tgz b/vendor/mdbase-dev-i18n-0.1.0-beta.141-096d80bf.tgz deleted file mode 100644 index 96eb4e27..00000000 Binary files a/vendor/mdbase-dev-i18n-0.1.0-beta.141-096d80bf.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz b/vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz deleted file mode 100644 index ee678a36..00000000 Binary files a/vendor/mdbase-dev-i18n-0.1.0-beta.141-24e9f5d0.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-i18n-0.1.0-beta.141-8785bd19.tgz b/vendor/mdbase-dev-i18n-0.1.0-beta.141-8785bd19.tgz deleted file mode 100644 index 523babf1..00000000 Binary files a/vendor/mdbase-dev-i18n-0.1.0-beta.141-8785bd19.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-i18n-0.1.0-beta.141-a36fa009.tgz b/vendor/mdbase-dev-i18n-0.1.0-beta.141-a36fa009.tgz deleted file mode 100644 index 2c77d6a0..00000000 Binary files a/vendor/mdbase-dev-i18n-0.1.0-beta.141-a36fa009.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-i18n-0.1.0-beta.141-b4134d71.tgz b/vendor/mdbase-dev-i18n-0.1.0-beta.141-b4134d71.tgz deleted file mode 100644 index f938b988..00000000 Binary files a/vendor/mdbase-dev-i18n-0.1.0-beta.141-b4134d71.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz b/vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz deleted file mode 100644 index b688a9b6..00000000 Binary files a/vendor/mdbase-dev-ui-0.1.0-beta.141-24e9f5d0.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-ui-0.1.0-beta.141-9041442d.tgz b/vendor/mdbase-dev-ui-0.1.0-beta.141-9041442d.tgz deleted file mode 100644 index d1343d59..00000000 Binary files a/vendor/mdbase-dev-ui-0.1.0-beta.141-9041442d.tgz and /dev/null differ diff --git a/vendor/mdbase-dev-ui-0.1.0-beta.141-a36fa009.tgz b/vendor/mdbase-dev-ui-0.1.0-beta.141-a36fa009.tgz deleted file mode 100644 index 0155fe76..00000000 Binary files a/vendor/mdbase-dev-ui-0.1.0-beta.141-a36fa009.tgz and /dev/null differ diff --git a/vendor/mdbase-ui-i18n.json b/vendor/mdbase-ui-i18n.json deleted file mode 100644 index 36fda9b0..00000000 --- a/vendor/mdbase-ui-i18n.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "package": "@mdbase-dev/ui", - "version": "0.1.0-beta.141", - "artifact": "mdbase-dev-ui-0.1.0-beta.141-a36fa009.tgz", - "sourceCommit": "a36fa00914af2aacef03b8e23cb566bee5531e4a", - "label": "strict-complete multilingual integration; not release-qualified", - "sha256": "e7199463d7f4d282cfd6f5f16e71dc1aa1029330a634f43112ae5b2f63dea7a0", - "releaseQualified": false, - "repository": "mdbase-dev/mdbase-connect" -}