@mdbase-dev/sdk 0.0.0-stage → 0.1.0-beta.149
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +844 -2
- package/dist/account-key.d.ts +176 -0
- package/dist/account-key.js +409 -0
- package/dist/account-key.js.map +1 -0
- package/dist/account.d.ts +11 -0
- package/dist/account.js +9 -0
- package/dist/account.js.map +1 -0
- package/dist/app-grant/client.d.ts +209 -0
- package/dist/app-grant/client.js +930 -0
- package/dist/app-grant/client.js.map +1 -0
- package/dist/app-grant/grant-store.d.ts +77 -0
- package/dist/app-grant/grant-store.js +201 -0
- package/dist/app-grant/grant-store.js.map +1 -0
- package/dist/app-grant/index.d.ts +11 -0
- package/dist/app-grant/index.js +10 -0
- package/dist/app-grant/index.js.map +1 -0
- package/dist/app-grant/native-completion.d.ts +22 -0
- package/dist/app-grant/native-completion.js +63 -0
- package/dist/app-grant/native-completion.js.map +1 -0
- package/dist/app-grant/people.d.ts +10 -0
- package/dist/app-grant/people.js +84 -0
- package/dist/app-grant/people.js.map +1 -0
- package/dist/app-grant/setup-attempt.d.ts +12 -0
- package/dist/app-grant/setup-attempt.js +62 -0
- package/dist/app-grant/setup-attempt.js.map +1 -0
- package/dist/app-grant/setup-producer.d.ts +31 -0
- package/dist/app-grant/setup-producer.js +65 -0
- package/dist/app-grant/setup-producer.js.map +1 -0
- package/dist/app-grant/setup.d.ts +11 -0
- package/dist/app-grant/setup.js +222 -0
- package/dist/app-grant/setup.js.map +1 -0
- package/dist/app-host/app-environment.d.ts +27 -0
- package/dist/app-host/app-environment.js +48 -0
- package/dist/app-host/app-environment.js.map +1 -0
- package/dist/app-host/app-origin.d.ts +7 -0
- package/dist/app-host/app-origin.js +49 -0
- package/dist/app-host/app-origin.js.map +1 -0
- package/dist/app-host/bases-pages.d.ts +29 -0
- package/dist/app-host/bases-pages.js +42 -0
- package/dist/app-host/bases-pages.js.map +1 -0
- package/dist/app-host/bases-wire.d.ts +159 -0
- package/dist/app-host/bases-wire.js +376 -0
- package/dist/app-host/bases-wire.js.map +1 -0
- package/dist/app-host/browser-direct-access.d.ts +18 -0
- package/dist/app-host/browser-direct-access.js +17 -0
- package/dist/app-host/browser-direct-access.js.map +1 -0
- package/dist/app-host/cloud-copy-bootstrap.d.ts +127 -0
- package/dist/app-host/cloud-copy-bootstrap.js +608 -0
- package/dist/app-host/cloud-copy-bootstrap.js.map +1 -0
- package/dist/app-host/cloud-copy-host.d.ts +248 -0
- package/dist/app-host/cloud-copy-host.js +1028 -0
- package/dist/app-host/cloud-copy-host.js.map +1 -0
- package/dist/app-host/cloud-copy-persistence-idb.d.ts +33 -0
- package/dist/app-host/cloud-copy-persistence-idb.js +255 -0
- package/dist/app-host/cloud-copy-persistence-idb.js.map +1 -0
- package/dist/app-host/cloud-copy-persistence.d.ts +57 -0
- package/dist/app-host/cloud-copy-persistence.js +341 -0
- package/dist/app-host/cloud-copy-persistence.js.map +1 -0
- package/dist/app-host/collection-control.d.ts +111 -0
- package/dist/app-host/collection-control.js +604 -0
- package/dist/app-host/collection-control.js.map +1 -0
- package/dist/app-host/collection-delete.d.ts +7 -0
- package/dist/app-host/collection-delete.js +54 -0
- package/dist/app-host/collection-delete.js.map +1 -0
- package/dist/app-host/collection-display-name.d.ts +2 -0
- package/dist/app-host/collection-display-name.js +22 -0
- package/dist/app-host/collection-display-name.js.map +1 -0
- package/dist/app-host/collection-join-ledger.d.ts +52 -0
- package/dist/app-host/collection-join-ledger.js +208 -0
- package/dist/app-host/collection-join-ledger.js.map +1 -0
- package/dist/app-host/collection-people.d.ts +32 -0
- package/dist/app-host/collection-people.js +119 -0
- package/dist/app-host/collection-people.js.map +1 -0
- package/dist/app-host/collection-readiness.d.ts +119 -0
- package/dist/app-host/collection-readiness.js +649 -0
- package/dist/app-host/collection-readiness.js.map +1 -0
- package/dist/app-host/collection-setup-journal.d.ts +59 -0
- package/dist/app-host/collection-setup-journal.js +813 -0
- package/dist/app-host/collection-setup-journal.js.map +1 -0
- package/dist/app-host/collection-setup-types.d.ts +155 -0
- package/dist/app-host/collection-setup-types.js +10 -0
- package/dist/app-host/collection-setup-types.js.map +1 -0
- package/dist/app-host/cp-authority.d.ts +65 -0
- package/dist/app-host/cp-authority.js +243 -0
- package/dist/app-host/cp-authority.js.map +1 -0
- package/dist/app-host/cp-people.d.ts +23 -0
- package/dist/app-host/cp-people.js +145 -0
- package/dist/app-host/cp-people.js.map +1 -0
- package/dist/app-host/cp-problem.d.ts +34 -0
- package/dist/app-host/cp-problem.js +114 -0
- package/dist/app-host/cp-problem.js.map +1 -0
- package/dist/app-host/device-key-custody.d.ts +51 -0
- package/dist/app-host/device-key-custody.js +128 -0
- package/dist/app-host/device-key-custody.js.map +1 -0
- package/dist/app-host/device-key-idb.d.ts +31 -0
- package/dist/app-host/device-key-idb.js +176 -0
- package/dist/app-host/device-key-idb.js.map +1 -0
- package/dist/app-host/device-key-provider.d.ts +33 -0
- package/dist/app-host/device-key-provider.js +181 -0
- package/dist/app-host/device-key-provider.js.map +1 -0
- package/dist/app-host/device-registration.d.ts +51 -0
- package/dist/app-host/device-registration.js +180 -0
- package/dist/app-host/device-registration.js.map +1 -0
- package/dist/app-host/foreground-wake.d.ts +43 -0
- package/dist/app-host/foreground-wake.js +113 -0
- package/dist/app-host/foreground-wake.js.map +1 -0
- package/dist/app-host/handover.d.ts +27 -0
- package/dist/app-host/handover.js +82 -0
- package/dist/app-host/handover.js.map +1 -0
- package/dist/app-host/http-log.d.ts +96 -0
- package/dist/app-host/http-log.js +609 -0
- package/dist/app-host/http-log.js.map +1 -0
- package/dist/app-host/index.d.ts +63 -0
- package/dist/app-host/index.js +33 -0
- package/dist/app-host/index.js.map +1 -0
- package/dist/app-host/initial-sync.d.ts +22 -0
- package/dist/app-host/initial-sync.js +41 -0
- package/dist/app-host/initial-sync.js.map +1 -0
- package/dist/app-host/installation-sign-in.d.ts +319 -0
- package/dist/app-host/installation-sign-in.js +1231 -0
- package/dist/app-host/installation-sign-in.js.map +1 -0
- package/dist/app-host/installation-store.d.ts +56 -0
- package/dist/app-host/installation-store.js +285 -0
- package/dist/app-host/installation-store.js.map +1 -0
- package/dist/app-host/ledger-rows.d.ts +3 -0
- package/dist/app-host/ledger-rows.js +23 -0
- package/dist/app-host/ledger-rows.js.map +1 -0
- package/dist/app-host/local-facade.d.ts +24 -0
- package/dist/app-host/local-facade.js +361 -0
- package/dist/app-host/local-facade.js.map +1 -0
- package/dist/app-host/log-pump.d.ts +124 -0
- package/dist/app-host/log-pump.js +326 -0
- package/dist/app-host/log-pump.js.map +1 -0
- package/dist/app-host/log-push.d.ts +90 -0
- package/dist/app-host/log-push.js +377 -0
- package/dist/app-host/log-push.js.map +1 -0
- package/dist/app-host/log-token-cache.d.ts +28 -0
- package/dist/app-host/log-token-cache.js +104 -0
- package/dist/app-host/log-token-cache.js.map +1 -0
- package/dist/app-host/native-sign-in.d.ts +27 -0
- package/dist/app-host/native-sign-in.js +12 -0
- package/dist/app-host/native-sign-in.js.map +1 -0
- package/dist/app-host/noise-custody.d.ts +62 -0
- package/dist/app-host/noise-custody.js +238 -0
- package/dist/app-host/noise-custody.js.map +1 -0
- package/dist/app-host/noise-idb.d.ts +33 -0
- package/dist/app-host/noise-idb.js +199 -0
- package/dist/app-host/noise-idb.js.map +1 -0
- package/dist/app-host/open-wait.d.ts +3 -0
- package/dist/app-host/open-wait.js +17 -0
- package/dist/app-host/open-wait.js.map +1 -0
- package/dist/app-host/opening-progress.d.ts +3 -0
- package/dist/app-host/opening-progress.js +5 -0
- package/dist/app-host/opening-progress.js.map +1 -0
- package/dist/app-host/owner.d.ts +103 -0
- package/dist/app-host/owner.js +262 -0
- package/dist/app-host/owner.js.map +1 -0
- package/dist/app-host/private-bootstrap.d.ts +78 -0
- package/dist/app-host/private-bootstrap.js +230 -0
- package/dist/app-host/private-bootstrap.js.map +1 -0
- package/dist/app-host/private-persistence-idb.d.ts +32 -0
- package/dist/app-host/private-persistence-idb.js +188 -0
- package/dist/app-host/private-persistence-idb.js.map +1 -0
- package/dist/app-host/private-persistence.d.ts +55 -0
- package/dist/app-host/private-persistence.js +257 -0
- package/dist/app-host/private-persistence.js.map +1 -0
- package/dist/app-host/scoped-sign-in-session.d.ts +49 -0
- package/dist/app-host/scoped-sign-in-session.js +243 -0
- package/dist/app-host/scoped-sign-in-session.js.map +1 -0
- package/dist/app-host/setup-engine.d.ts +14 -0
- package/dist/app-host/setup-engine.js +73 -0
- package/dist/app-host/setup-engine.js.map +1 -0
- package/dist/app-host/sign-out-erase.d.ts +37 -0
- package/dist/app-host/sign-out-erase.js +139 -0
- package/dist/app-host/sign-out-erase.js.map +1 -0
- package/dist/app-host/status.d.ts +62 -0
- package/dist/app-host/status.js +43 -0
- package/dist/app-host/status.js.map +1 -0
- package/dist/app-host/storage-probe.d.ts +46 -0
- package/dist/app-host/storage-probe.js +63 -0
- package/dist/app-host/storage-probe.js.map +1 -0
- package/dist/app-host/timer-port.d.ts +29 -0
- package/dist/app-host/timer-port.js +483 -0
- package/dist/app-host/timer-port.js.map +1 -0
- package/dist/app-host/wasm-runtime.d.ts +302 -0
- package/dist/app-host/wasm-runtime.js +1050 -0
- package/dist/app-host/wasm-runtime.js.map +1 -0
- package/dist/app-host/web-collection.d.ts +78 -0
- package/dist/app-host/web-collection.js +671 -0
- package/dist/app-host/web-collection.js.map +1 -0
- package/dist/app-host/web-sign-in-problem.d.ts +17 -0
- package/dist/app-host/web-sign-in-problem.js +59 -0
- package/dist/app-host/web-sign-in-problem.js.map +1 -0
- package/dist/app-host/web-sign-in-session.d.ts +367 -0
- package/dist/app-host/web-sign-in-session.js +1258 -0
- package/dist/app-host/web-sign-in-session.js.map +1 -0
- package/dist/app-storage/app-binary-index.d.ts +33 -0
- package/dist/app-storage/app-binary-index.js +274 -0
- package/dist/app-storage/app-binary-index.js.map +1 -0
- package/dist/app-storage/app-sqlite-index.d.ts +40 -0
- package/dist/app-storage/app-sqlite-index.js +102 -0
- package/dist/app-storage/app-sqlite-index.js.map +1 -0
- package/dist/app-storage/collection-sql.d.ts +39 -0
- package/dist/app-storage/collection-sql.js +93 -0
- package/dist/app-storage/collection-sql.js.map +1 -0
- package/dist/app-storage/index.d.ts +10 -0
- package/dist/app-storage/index.js +7 -0
- package/dist/app-storage/index.js.map +1 -0
- package/dist/app-storage/sqlite-index.d.ts +95 -0
- package/dist/app-storage/sqlite-index.js +280 -0
- package/dist/app-storage/sqlite-index.js.map +1 -0
- package/dist/application/asset-loader.d.ts +22 -0
- package/dist/application/asset-loader.js +130 -0
- package/dist/application/asset-loader.js.map +1 -0
- package/dist/application/asset-pins.json +24 -0
- package/dist/application/browser-capabilities.d.ts +48 -0
- package/dist/application/browser-capabilities.js +87 -0
- package/dist/application/browser-capabilities.js.map +1 -0
- package/dist/application/browser-selection.d.ts +58 -0
- package/dist/application/browser-selection.js +160 -0
- package/dist/application/browser-selection.js.map +1 -0
- package/dist/application/capabilities.d.ts +20 -0
- package/dist/application/capabilities.js +22 -0
- package/dist/application/capabilities.js.map +1 -0
- package/dist/application/collection-selection.d.ts +147 -0
- package/dist/application/collection-selection.js +351 -0
- package/dist/application/collection-selection.js.map +1 -0
- package/dist/application/configuration.d.ts +52 -0
- package/dist/application/configuration.js +568 -0
- package/dist/application/configuration.js.map +1 -0
- package/dist/application/declaration.d.ts +51 -0
- package/dist/application/declaration.js +100 -0
- package/dist/application/declaration.js.map +1 -0
- package/dist/application/entry.d.ts +343 -0
- package/dist/application/entry.js +945 -0
- package/dist/application/entry.js.map +1 -0
- package/dist/application/file-access.d.ts +55 -0
- package/dist/application/file-access.js +93 -0
- package/dist/application/file-access.js.map +1 -0
- package/dist/application/file-readiness.d.ts +16 -0
- package/dist/application/file-readiness.js +53 -0
- package/dist/application/file-readiness.js.map +1 -0
- package/dist/application/forgotten.d.ts +15 -0
- package/dist/application/forgotten.js +70 -0
- package/dist/application/forgotten.js.map +1 -0
- package/dist/application/front-door.d.ts +68 -0
- package/dist/application/front-door.js +66 -0
- package/dist/application/front-door.js.map +1 -0
- package/dist/application/local-build.d.ts +5 -0
- package/dist/application/local-build.js +22 -0
- package/dist/application/local-build.js.map +1 -0
- package/dist/application/manifest.d.ts +16 -0
- package/dist/application/manifest.js +31 -0
- package/dist/application/manifest.js.map +1 -0
- package/dist/application/native-assets.d.ts +25 -0
- package/dist/application/native-assets.js +29 -0
- package/dist/application/native-assets.js.map +1 -0
- package/dist/application/native-authorization-rpc.d.ts +23 -0
- package/dist/application/native-authorization-rpc.js +54 -0
- package/dist/application/native-authorization-rpc.js.map +1 -0
- package/dist/application/notification-readiness.d.ts +33 -0
- package/dist/application/notification-readiness.js +222 -0
- package/dist/application/notification-readiness.js.map +1 -0
- package/dist/application/packaged-assets.d.ts +5 -0
- package/dist/application/packaged-assets.js +55 -0
- package/dist/application/packaged-assets.js.map +1 -0
- package/dist/application/packaged-trust.d.ts +5 -0
- package/dist/application/packaged-trust.js +10 -0
- package/dist/application/packaged-trust.js.map +1 -0
- package/dist/application/people-readiness.d.ts +23 -0
- package/dist/application/people-readiness.js +213 -0
- package/dist/application/people-readiness.js.map +1 -0
- package/dist/application/phase.d.ts +108 -0
- package/dist/application/phase.js +113 -0
- package/dist/application/phase.js.map +1 -0
- package/dist/application/portal-reservation.d.ts +38 -0
- package/dist/application/portal-reservation.js +183 -0
- package/dist/application/portal-reservation.js.map +1 -0
- package/dist/application/private-collections.d.ts +114 -0
- package/dist/application/private-collections.js +415 -0
- package/dist/application/private-collections.js.map +1 -0
- package/dist/application/readiness.d.ts +59 -0
- package/dist/application/readiness.js +223 -0
- package/dist/application/readiness.js.map +1 -0
- package/dist/application/registration-refusal.d.ts +16 -0
- package/dist/application/registration-refusal.js +41 -0
- package/dist/application/registration-refusal.js.map +1 -0
- package/dist/application/registration.d.ts +26 -0
- package/dist/application/registration.js +372 -0
- package/dist/application/registration.js.map +1 -0
- package/dist/application/return-url.d.ts +1 -0
- package/dist/application/return-url.js +41 -0
- package/dist/application/return-url.js.map +1 -0
- package/dist/application/runtime.d.ts +107 -0
- package/dist/application/runtime.js +379 -0
- package/dist/application/runtime.js.map +1 -0
- package/dist/application/scope.d.ts +34 -0
- package/dist/application/scope.js +164 -0
- package/dist/application/scope.js.map +1 -0
- package/dist/application/session-hint.d.ts +21 -0
- package/dist/application/session-hint.js +87 -0
- package/dist/application/session-hint.js.map +1 -0
- package/dist/application/setup.d.ts +105 -0
- package/dist/application/setup.js +137 -0
- package/dist/application/setup.js.map +1 -0
- package/dist/application/sign-out.d.ts +17 -0
- package/dist/application/sign-out.js +28 -0
- package/dist/application/sign-out.js.map +1 -0
- package/dist/application/storage-scope.d.ts +8 -0
- package/dist/application/storage-scope.js +15 -0
- package/dist/application/storage-scope.js.map +1 -0
- package/dist/application/tabs.d.ts +98 -0
- package/dist/application/tabs.js +407 -0
- package/dist/application/tabs.js.map +1 -0
- package/dist/application/timer-criteria.d.ts +5 -0
- package/dist/application/timer-criteria.js +15 -0
- package/dist/application/timer-criteria.js.map +1 -0
- package/dist/application/ui-connections.d.ts +35 -0
- package/dist/application/ui-connections.js +129 -0
- package/dist/application/ui-connections.js.map +1 -0
- package/dist/application/worker-client.d.ts +59 -0
- package/dist/application/worker-client.js +381 -0
- package/dist/application/worker-client.js.map +1 -0
- package/dist/application/worker-host.d.ts +84 -0
- package/dist/application/worker-host.js +547 -0
- package/dist/application/worker-host.js.map +1 -0
- package/dist/application/worker-protocol.d.ts +40 -0
- package/dist/application/worker-protocol.js +83 -0
- package/dist/application/worker-protocol.js.map +1 -0
- package/dist/application/worker-session.d.ts +45 -0
- package/dist/application/worker-session.js +37 -0
- package/dist/application/worker-session.js.map +1 -0
- package/dist/application/worker.d.ts +1 -0
- package/dist/application/worker.js +34826 -0
- package/dist/application/worker.js.map +1 -0
- package/dist/attachment-wire.d.ts +15 -0
- package/dist/attachment-wire.js +47 -0
- package/dist/attachment-wire.js.map +1 -0
- package/dist/browser/mdbase-sdk.js +49392 -0
- package/dist/browser/mdbase-sdk.min.js +130 -0
- package/dist/browser.d.ts +4 -0
- package/dist/browser.js +5 -0
- package/dist/browser.js.map +1 -0
- package/dist/cbor.d.ts +52 -0
- package/dist/cbor.js +480 -0
- package/dist/cbor.js.map +1 -0
- package/dist/client.d.ts +656 -0
- package/dist/client.js +1962 -0
- package/dist/client.js.map +1 -0
- package/dist/codec.d.ts +82 -0
- package/dist/codec.js +388 -0
- package/dist/codec.js.map +1 -0
- package/dist/collection-availability.d.ts +34 -0
- package/dist/collection-availability.js +63 -0
- package/dist/collection-availability.js.map +1 -0
- package/dist/contract-query.d.ts +31 -0
- package/dist/contract-query.js +13 -0
- package/dist/contract-query.js.map +1 -0
- package/dist/contract-records.d.ts +51 -0
- package/dist/contract-records.js +14 -0
- package/dist/contract-records.js.map +1 -0
- package/dist/describe-error.d.ts +61 -0
- package/dist/describe-error.js +452 -0
- package/dist/describe-error.js.map +1 -0
- package/dist/errors.d.ts +65 -0
- package/dist/errors.js +94 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +147 -0
- package/dist/files.js +537 -0
- package/dist/files.js.map +1 -0
- package/dist/holds.d.ts +74 -0
- package/dist/holds.js +118 -0
- package/dist/holds.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/keys.d.ts +40 -0
- package/dist/keys.js +181 -0
- package/dist/keys.js.map +1 -0
- package/dist/live.d.ts +38 -0
- package/dist/live.js +82 -0
- package/dist/live.js.map +1 -0
- package/dist/local-build.d.ts +9 -0
- package/dist/local-build.js +33 -0
- package/dist/local-build.js.map +1 -0
- package/dist/native/provenance.json +23 -0
- package/dist/native/runtime.wasm +0 -0
- package/dist/native/sqlite3.d.ts +5 -0
- package/dist/native/sqlite3.js +17392 -0
- package/dist/native/sqlite3.js.map +1 -0
- package/dist/native/sqlite3.wasm +0 -0
- package/dist/node.d.ts +63 -0
- package/dist/node.js +255 -0
- package/dist/node.js.map +1 -0
- package/dist/notifications.d.ts +95 -0
- package/dist/notifications.js +226 -0
- package/dist/notifications.js.map +1 -0
- package/dist/offline-shell-build.d.ts +25 -0
- package/dist/offline-shell-build.js +78 -0
- package/dist/offline-shell-build.js.map +1 -0
- package/dist/offline-shell-worker.d.ts +46 -0
- package/dist/offline-shell-worker.js +115 -0
- package/dist/offline-shell-worker.js.map +1 -0
- package/dist/people.d.ts +82 -0
- package/dist/people.js +199 -0
- package/dist/people.js.map +1 -0
- package/dist/presence.d.ts +21 -0
- package/dist/presence.js +109 -0
- package/dist/presence.js.map +1 -0
- package/dist/private-account.d.ts +197 -0
- package/dist/private-account.js +510 -0
- package/dist/private-account.js.map +1 -0
- package/dist/private.d.ts +55 -0
- package/dist/private.js +69 -0
- package/dist/private.js.map +1 -0
- package/dist/read-helpers.d.ts +32 -0
- package/dist/read-helpers.js +181 -0
- package/dist/read-helpers.js.map +1 -0
- package/dist/records/session.d.ts +60 -0
- package/dist/records/session.js +534 -0
- package/dist/records/session.js.map +1 -0
- package/dist/records/types.d.ts +76 -0
- package/dist/records/types.js +2 -0
- package/dist/records/types.js.map +1 -0
- package/dist/records/witness.d.ts +19 -0
- package/dist/records/witness.js +64 -0
- package/dist/records/witness.js.map +1 -0
- package/dist/records.d.ts +23 -0
- package/dist/records.js +234 -0
- package/dist/records.js.map +1 -0
- package/dist/runtime/wasm.d.ts +69 -0
- package/dist/runtime/wasm.js +274 -0
- package/dist/runtime/wasm.js.map +1 -0
- package/dist/runtime-wire.d.ts +71 -0
- package/dist/runtime-wire.js +71 -0
- package/dist/runtime-wire.js.map +1 -0
- package/dist/saved-views.d.ts +29 -0
- package/dist/saved-views.js +171 -0
- package/dist/saved-views.js.map +1 -0
- package/dist/semver.d.ts +22 -0
- package/dist/semver.js +63 -0
- package/dist/semver.js.map +1 -0
- package/dist/session.d.ts +65 -0
- package/dist/session.js +332 -0
- package/dist/session.js.map +1 -0
- package/dist/status.d.ts +46 -0
- package/dist/status.js +59 -0
- package/dist/status.js.map +1 -0
- package/dist/strength.d.ts +12 -0
- package/dist/strength.js +194 -0
- package/dist/strength.js.map +1 -0
- package/dist/testing/application.d.ts +59 -0
- package/dist/testing/application.js +230 -0
- package/dist/testing/application.js.map +1 -0
- package/dist/testing/index.d.ts +10 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/memory-contracts.d.ts +40 -0
- package/dist/testing/memory-contracts.js +127 -0
- package/dist/testing/memory-contracts.js.map +1 -0
- package/dist/testing/memory-replica.d.ts +191 -0
- package/dist/testing/memory-replica.js +1465 -0
- package/dist/testing/memory-replica.js.map +1 -0
- package/dist/testing/noise-server.d.ts +11 -0
- package/dist/testing/noise-server.js +65 -0
- package/dist/testing/noise-server.js.map +1 -0
- package/dist/testing/test-app.d.ts +93 -0
- package/dist/testing/test-app.js +140 -0
- package/dist/testing/test-app.js.map +1 -0
- package/dist/thin-client.d.ts +67 -0
- package/dist/thin-client.js +42 -0
- package/dist/thin-client.js.map +1 -0
- package/dist/timers.d.ts +158 -0
- package/dist/timers.js +258 -0
- package/dist/timers.js.map +1 -0
- package/dist/transport/bases-rpc.d.ts +15 -0
- package/dist/transport/bases-rpc.js +61 -0
- package/dist/transport/bases-rpc.js.map +1 -0
- package/dist/transport/control-route.d.ts +34 -0
- package/dist/transport/control-route.js +84 -0
- package/dist/transport/control-route.js.map +1 -0
- package/dist/transport/inprocess.d.ts +13 -0
- package/dist/transport/inprocess.js +37 -0
- package/dist/transport/inprocess.js.map +1 -0
- package/dist/transport/local-link.d.ts +53 -0
- package/dist/transport/local-link.js +66 -0
- package/dist/transport/local-link.js.map +1 -0
- package/dist/transport/next-relay.d.ts +64 -0
- package/dist/transport/next-relay.js +222 -0
- package/dist/transport/next-relay.js.map +1 -0
- package/dist/transport/noise-session.d.ts +88 -0
- package/dist/transport/noise-session.js +264 -0
- package/dist/transport/noise-session.js.map +1 -0
- package/dist/transport/noise.d.ts +102 -0
- package/dist/transport/noise.js +307 -0
- package/dist/transport/noise.js.map +1 -0
- package/dist/transport/original-session.d.ts +6 -0
- package/dist/transport/original-session.js +6 -0
- package/dist/transport/original-session.js.map +1 -0
- package/dist/transport/port.d.ts +67 -0
- package/dist/transport/port.js +184 -0
- package/dist/transport/port.js.map +1 -0
- package/dist/transport/read-fence-policy.d.ts +3 -0
- package/dist/transport/read-fence-policy.js +11 -0
- package/dist/transport/read-fence-policy.js.map +1 -0
- package/dist/transport/relay-close.d.ts +31 -0
- package/dist/transport/relay-close.js +23 -0
- package/dist/transport/relay-close.js.map +1 -0
- package/dist/transport/relay-pipe.d.ts +15 -0
- package/dist/transport/relay-pipe.js +190 -0
- package/dist/transport/relay-pipe.js.map +1 -0
- package/dist/transport/relay.d.ts +36 -0
- package/dist/transport/relay.js +45 -0
- package/dist/transport/relay.js.map +1 -0
- package/dist/type-packs.d.ts +124 -0
- package/dist/type-packs.js +188 -0
- package/dist/type-packs.js.map +1 -0
- package/dist/validation.d.ts +30 -0
- package/dist/validation.js +125 -0
- package/dist/validation.js.map +1 -0
- package/dist/values.d.ts +37 -0
- package/dist/values.js +133 -0
- package/dist/values.js.map +1 -0
- package/dist/view-sources.d.ts +31 -0
- package/dist/view-sources.js +78 -0
- package/dist/view-sources.js.map +1 -0
- package/dist/wire.d.ts +856 -0
- package/dist/wire.js +914 -0
- package/dist/wire.js.map +1 -0
- package/dist/witness.d.ts +7 -0
- package/dist/witness.js +82 -0
- package/dist/witness.js.map +1 -0
- package/dist/write-ledger.d.ts +41 -0
- package/dist/write-ledger.js +184 -0
- package/dist/write-ledger.js.map +1 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-authorization.d.ts +32 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-authorization.js +207 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-contract.d.ts +23 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-contract.js +76 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-declaration.d.ts +120 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/application-declaration.js +1 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/authorization-errors.d.ts +34 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/authorization-errors.js +52 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/capabilities.d.ts +73 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/capabilities.js +92 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/change-events.generated.d.ts +48 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/change-events.generated.js +18 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/collection-setup.d.ts +93 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/collection-setup.js +7 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/compatibility.d.ts +37 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/compatibility.js +65 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/connect-problems.generated.d.ts +1533 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/connect-problems.generated.js +598 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/files.d.ts +288 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/files.js +426 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/index.d.ts +723 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/index.js +104 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/manifest-validators.generated.d.ts +13 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/manifest-validators.generated.js +7940 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/manifest.d.ts +72 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/manifest.js +643 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/mutation-fingerprint.d.ts +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/mutation-fingerprint.js +116 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/next-authorization.d.ts +30 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/next-authorization.js +90 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/operations.d.ts +15 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/operations.js +196 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/people.d.ts +33 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/people.js +26 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/records.d.ts +108 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/records.js +3 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/type-packs.d.ts +154 -0
- package/node_modules/@mdbase-dev/connect-protocol/dist/type-packs.js +30 -0
- package/node_modules/@mdbase-dev/connect-protocol/package.json +49 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/application-capability-catalog.v1.json +40 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/application-capability-catalog.v2.json +68 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/catalog.json +17 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/change-events.v1.json +48 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-problem.v1.schema.json +5665 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-problems.v1.catalog.json +373 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-protocol.v1.schema.json +901 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/data-contract.schema.json +163 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v1.schema.json +63 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v2.schema.json +63 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v3.schema.json +64 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/files.v1.schema.json +551 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-cancellation.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-invocation.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-outcome.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-provider-declaration.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-request.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/conformance-claim.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/event-source-declaration.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/event.schema.json +6 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/profile.schema.json +456 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-app.legacy-v1.schema.json +430 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-app.schema.json +437 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-query.v0.3.schema.json +176 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/next-trust.v1.schema.json +54 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/notification-webhook.v1.schema.json +56 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/operation-catalog.v1.json +43 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/operation-mutation-classification.v1.json +554 -0
- package/node_modules/@mdbase-dev/connect-protocol/schemas/sync.v1.schema.json +483 -0
- package/node_modules/@noble/hashes/LICENSE +21 -0
- package/node_modules/@noble/hashes/README.md +478 -0
- package/node_modules/@noble/hashes/_blake.d.ts +20 -0
- package/node_modules/@noble/hashes/_blake.js +59 -0
- package/node_modules/@noble/hashes/_md.d.ts +95 -0
- package/node_modules/@noble/hashes/_md.js +209 -0
- package/node_modules/@noble/hashes/_u64.d.ts +36 -0
- package/node_modules/@noble/hashes/_u64.js +77 -0
- package/node_modules/@noble/hashes/argon2.d.ts +148 -0
- package/node_modules/@noble/hashes/argon2.js +577 -0
- package/node_modules/@noble/hashes/blake1.d.ts +162 -0
- package/node_modules/@noble/hashes/blake1.js +630 -0
- package/node_modules/@noble/hashes/blake2.d.ts +203 -0
- package/node_modules/@noble/hashes/blake2.js +573 -0
- package/node_modules/@noble/hashes/blake3.d.ts +68 -0
- package/node_modules/@noble/hashes/blake3.js +310 -0
- package/node_modules/@noble/hashes/eskdf.d.ts +91 -0
- package/node_modules/@noble/hashes/eskdf.js +225 -0
- package/node_modules/@noble/hashes/hkdf.d.ts +70 -0
- package/node_modules/@noble/hashes/hkdf.js +152 -0
- package/node_modules/@noble/hashes/hmac.d.ts +50 -0
- package/node_modules/@noble/hashes/hmac.js +93 -0
- package/node_modules/@noble/hashes/index.d.ts +1 -0
- package/node_modules/@noble/hashes/index.js +34 -0
- package/node_modules/@noble/hashes/legacy.d.ts +107 -0
- package/node_modules/@noble/hashes/legacy.js +348 -0
- package/node_modules/@noble/hashes/package.json +91 -0
- package/node_modules/@noble/hashes/pbkdf2.d.ts +66 -0
- package/node_modules/@noble/hashes/pbkdf2.js +176 -0
- package/node_modules/@noble/hashes/scrypt.d.ts +98 -0
- package/node_modules/@noble/hashes/scrypt.js +304 -0
- package/node_modules/@noble/hashes/sha2.d.ts +176 -0
- package/node_modules/@noble/hashes/sha2.js +446 -0
- package/node_modules/@noble/hashes/sha3-addons.d.ts +533 -0
- package/node_modules/@noble/hashes/sha3-addons.js +973 -0
- package/node_modules/@noble/hashes/sha3.d.ts +208 -0
- package/node_modules/@noble/hashes/sha3.js +475 -0
- package/node_modules/@noble/hashes/src/_blake.ts +67 -0
- package/node_modules/@noble/hashes/src/_md.ts +227 -0
- package/node_modules/@noble/hashes/src/_u64.ts +111 -0
- package/node_modules/@noble/hashes/src/argon2.ts +693 -0
- package/node_modules/@noble/hashes/src/blake1.ts +677 -0
- package/node_modules/@noble/hashes/src/blake2.ts +648 -0
- package/node_modules/@noble/hashes/src/blake3.ts +344 -0
- package/node_modules/@noble/hashes/src/eskdf.ts +265 -0
- package/node_modules/@noble/hashes/src/hkdf.ts +161 -0
- package/node_modules/@noble/hashes/src/hmac.ts +130 -0
- package/node_modules/@noble/hashes/src/index.ts +33 -0
- package/node_modules/@noble/hashes/src/legacy.ts +361 -0
- package/node_modules/@noble/hashes/src/pbkdf2.ts +219 -0
- package/node_modules/@noble/hashes/src/scrypt.ts +375 -0
- package/node_modules/@noble/hashes/src/sha2.ts +486 -0
- package/node_modules/@noble/hashes/src/sha3-addons.ts +1157 -0
- package/node_modules/@noble/hashes/src/sha3.ts +525 -0
- package/node_modules/@noble/hashes/src/utils.ts +978 -0
- package/node_modules/@noble/hashes/src/webcrypto.ts +283 -0
- package/node_modules/@noble/hashes/utils.d.ts +560 -0
- package/node_modules/@noble/hashes/utils.js +687 -0
- package/node_modules/@noble/hashes/webcrypto.d.ts +121 -0
- package/node_modules/@noble/hashes/webcrypto.js +228 -0
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +226 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +118 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +224 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +228 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +120 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +350 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +980 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/package.json +108 -4
- package/vendor/mdbase-connect-sdk-e6e66bcd172f.json +13 -0
- package/vendor/mdbase-dev-connect-protocol-0.1.0-beta.145-e6e66bcd172f.tgz +0 -0
|
@@ -0,0 +1,643 @@
|
|
|
1
|
+
import { sha256 as sha256Bytes } from "@noble/hashes/sha2.js";
|
|
2
|
+
import { bytesToHex, utf8ToBytes } from "@noble/hashes/utils.js";
|
|
3
|
+
import { isMap, parseDocument } from "yaml";
|
|
4
|
+
import { appManifestValidator as generatedAppManifestValidator, legacyAppManifestValidator as generatedLegacyAppManifestValidator } from "./manifest-validators.generated.js";
|
|
5
|
+
import { RECORD_EXTENSIONS_CONFIGURATION_PATH } from "./collection-setup.js";
|
|
6
|
+
import { isNativeRedirectUri } from "./index.js";
|
|
7
|
+
export const APPLICATION_MANIFEST_MAX_BYTES = 524_288;
|
|
8
|
+
export class AppManifestValidationError extends Error {
|
|
9
|
+
issues;
|
|
10
|
+
constructor(issues) {
|
|
11
|
+
super(`Invalid application manifest: ${formatManifestValidationIssues(issues)}`);
|
|
12
|
+
this.issues = issues;
|
|
13
|
+
this.name = "AppManifestValidationError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Precompiled from the published JSON Schemas by
|
|
17
|
+
// scripts/generate-manifest-validators.mjs, so validation stays synchronous and
|
|
18
|
+
// identical without shipping the Ajv compiler to consumers.
|
|
19
|
+
const appManifestValidator = generatedAppManifestValidator;
|
|
20
|
+
const legacyAppManifestValidator = generatedLegacyAppManifestValidator;
|
|
21
|
+
/**
|
|
22
|
+
* Validate the complete bundled application declaration accepted by Connect.
|
|
23
|
+
*
|
|
24
|
+
* This is the canonical runtime validator used by the server and developer
|
|
25
|
+
* tooling. Keep structural rules in the published JSON Schema and cross-field
|
|
26
|
+
* rules here; consumers must not maintain parallel manifest validators.
|
|
27
|
+
*/
|
|
28
|
+
export function validateAppManifest(value, options = {}) {
|
|
29
|
+
return validateManifest(value, options, false);
|
|
30
|
+
}
|
|
31
|
+
/** Explicit opt-in to predecessor declarations; omission defaults to v1. */
|
|
32
|
+
export function validateVersionedAppManifest(value, options = {}) {
|
|
33
|
+
return validateManifest(value, options, true);
|
|
34
|
+
}
|
|
35
|
+
function declaredContractVersion(value) {
|
|
36
|
+
const requirements = asObject(asObject(value).requirements);
|
|
37
|
+
return requirements.capabilities === undefined
|
|
38
|
+
? 1
|
|
39
|
+
: asObject(requirements.capabilities).contract_version;
|
|
40
|
+
}
|
|
41
|
+
function validateManifest(value, options, versioned) {
|
|
42
|
+
const sizeIssue = validateSerializedSize(value, options.maxBytes ?? APPLICATION_MANIFEST_MAX_BYTES);
|
|
43
|
+
if (sizeIssue)
|
|
44
|
+
return invalid([sizeIssue]);
|
|
45
|
+
const version = versioned ? declaredContractVersion(value) : 2;
|
|
46
|
+
if (version !== 1 && version !== 2) {
|
|
47
|
+
return invalid([issue("/requirements/capabilities/contract_version", "contractVersion", "must declare supported contract version 1 or 2")]);
|
|
48
|
+
}
|
|
49
|
+
const native = asObject(value).platform === "native";
|
|
50
|
+
const candidate = options.allowLocal || native ? localManifestSchemaCandidate(value, !options.allowLocal) : value;
|
|
51
|
+
const schemaResult = validationResult(version === 1 ? legacyAppManifestValidator : appManifestValidator, candidate);
|
|
52
|
+
if (!schemaResult.valid)
|
|
53
|
+
return schemaResult;
|
|
54
|
+
const issues = [
|
|
55
|
+
...validateManifestOrigins(value, options.allowLocal === true),
|
|
56
|
+
...(version === 1
|
|
57
|
+
? validateLegacyCapabilityRequirements(value)
|
|
58
|
+
: validateCapabilityRequirements(value)),
|
|
59
|
+
...validateProvisionRequirements(value),
|
|
60
|
+
...validateConfigurationSetup(value)
|
|
61
|
+
];
|
|
62
|
+
return issues.length === 0 ? { valid: true, issues: [] } : invalid(issues);
|
|
63
|
+
}
|
|
64
|
+
/** Validate, normalize optional sections, and return an isolated declaration. */
|
|
65
|
+
export function parseAppManifest(value, options = {}) {
|
|
66
|
+
const result = validateAppManifest(value, options);
|
|
67
|
+
if (!result.valid)
|
|
68
|
+
throw new AppManifestValidationError(result.issues);
|
|
69
|
+
return normalizeManifest(value);
|
|
70
|
+
}
|
|
71
|
+
/** Validate and clone without changing capability IDs, file aliases, or version. */
|
|
72
|
+
export function parseVersionedAppManifest(value, options = {}) {
|
|
73
|
+
const result = validateVersionedAppManifest(value, options);
|
|
74
|
+
if (!result.valid)
|
|
75
|
+
throw new AppManifestValidationError(result.issues);
|
|
76
|
+
return declaredContractVersion(value) === 1
|
|
77
|
+
? { contractVersion: 1, manifest: normalizeManifest(value) }
|
|
78
|
+
: { contractVersion: 2, manifest: normalizeManifest(value) };
|
|
79
|
+
}
|
|
80
|
+
function normalizeManifest(value) {
|
|
81
|
+
const manifest = structuredClone(value);
|
|
82
|
+
return {
|
|
83
|
+
...manifest,
|
|
84
|
+
requirements: {
|
|
85
|
+
configuration: [],
|
|
86
|
+
...manifest.requirements
|
|
87
|
+
},
|
|
88
|
+
provisions: {
|
|
89
|
+
type_packs: [],
|
|
90
|
+
configuration: [],
|
|
91
|
+
...manifest.provisions
|
|
92
|
+
},
|
|
93
|
+
notifications: manifest.notifications ?? { criteria: [] }
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function formatManifestValidationIssues(issues) {
|
|
97
|
+
return issues.map((issue) => `${issue.path || "/"} ${issue.message}`).join("; ");
|
|
98
|
+
}
|
|
99
|
+
function validationResult(validate, value) {
|
|
100
|
+
if (validate(value))
|
|
101
|
+
return { valid: true, issues: [] };
|
|
102
|
+
const issues = (validate.errors ?? []).map(validationIssue);
|
|
103
|
+
const specific = issues.filter((issue) => issue.keyword !== "oneOf");
|
|
104
|
+
return invalid(specific.length > 0 ? specific : issues);
|
|
105
|
+
}
|
|
106
|
+
function validationIssue(error) {
|
|
107
|
+
const params = error.params;
|
|
108
|
+
if (error.keyword === "required" && typeof params.missingProperty === "string") {
|
|
109
|
+
return {
|
|
110
|
+
path: joinPointer(error.instancePath, params.missingProperty),
|
|
111
|
+
keyword: error.keyword,
|
|
112
|
+
message: "is required",
|
|
113
|
+
params
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (error.keyword === "additionalProperties"
|
|
117
|
+
&& typeof params.additionalProperty === "string") {
|
|
118
|
+
return {
|
|
119
|
+
path: joinPointer(error.instancePath, params.additionalProperty),
|
|
120
|
+
keyword: error.keyword,
|
|
121
|
+
message: "is not allowed",
|
|
122
|
+
params
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
path: error.instancePath,
|
|
127
|
+
keyword: error.keyword,
|
|
128
|
+
message: error.message ?? "is invalid",
|
|
129
|
+
params
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function joinPointer(parent, child) {
|
|
133
|
+
const escaped = child.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
134
|
+
return `${parent}/${escaped}`;
|
|
135
|
+
}
|
|
136
|
+
function validateSerializedSize(value, maxBytes) {
|
|
137
|
+
const jsonIssue = validateJsonValue(value, "", new WeakSet());
|
|
138
|
+
if (jsonIssue)
|
|
139
|
+
return jsonIssue;
|
|
140
|
+
try {
|
|
141
|
+
const serialized = JSON.stringify(value);
|
|
142
|
+
const bytes = new TextEncoder().encode(serialized).byteLength;
|
|
143
|
+
return bytes <= maxBytes
|
|
144
|
+
? undefined
|
|
145
|
+
: issue("/", "maxBytes", `must not exceed ${maxBytes} UTF-8 bytes`, { maxBytes, actualBytes: bytes });
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return issue("/", "json", "must be serializable as JSON");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function validateJsonValue(value, path, ancestors) {
|
|
152
|
+
if (value === null
|
|
153
|
+
|| typeof value === "string"
|
|
154
|
+
|| typeof value === "boolean"
|
|
155
|
+
|| (typeof value === "number" && Number.isFinite(value)))
|
|
156
|
+
return undefined;
|
|
157
|
+
if (typeof value !== "object") {
|
|
158
|
+
return issue(path || "/", "json", "must be a JSON value");
|
|
159
|
+
}
|
|
160
|
+
if (ancestors.has(value)) {
|
|
161
|
+
return issue(path || "/", "json", "must not contain circular references");
|
|
162
|
+
}
|
|
163
|
+
const prototype = Object.getPrototypeOf(value);
|
|
164
|
+
if (!Array.isArray(value) && prototype !== Object.prototype && prototype !== null) {
|
|
165
|
+
return issue(path || "/", "json", "must be a plain JSON object");
|
|
166
|
+
}
|
|
167
|
+
ancestors.add(value);
|
|
168
|
+
const entries = Array.isArray(value)
|
|
169
|
+
? value.map((item, index) => [String(index), item])
|
|
170
|
+
: Object.entries(value);
|
|
171
|
+
for (const [key, child] of entries) {
|
|
172
|
+
const childIssue = validateJsonValue(child, joinPointer(path, key), ancestors);
|
|
173
|
+
if (childIssue)
|
|
174
|
+
return childIssue;
|
|
175
|
+
}
|
|
176
|
+
ancestors.delete(value);
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
function validateManifestOrigins(value, allowLocal) {
|
|
180
|
+
const manifest = asObject(value);
|
|
181
|
+
const native = manifest.platform === "native";
|
|
182
|
+
for (const [environment, policy] of Object.entries(asObject(manifest.installation_origins))) {
|
|
183
|
+
for (const [kind, origins] of Object.entries(asObject(policy))) {
|
|
184
|
+
for (const [index, origin] of origins.entries()) {
|
|
185
|
+
const path = `/installation_origins/${environment}/${kind}/${index}`;
|
|
186
|
+
try {
|
|
187
|
+
if (native && (kind !== "app-runtime" || !isNativeLoopbackOrigin(origin))) {
|
|
188
|
+
return [issue(path, "origin", "native applications require canonical IPv4 loopback HTTP app-runtime origins")];
|
|
189
|
+
}
|
|
190
|
+
const url = new URL(origin);
|
|
191
|
+
const web = (secureOrAllowedLocal(url, environment === "lab")
|
|
192
|
+
|| (native && isNativeLoopbackOrigin(origin))) && url.origin === origin;
|
|
193
|
+
const mobile = kind === "mobile" && url.protocol === "capacitor:"
|
|
194
|
+
&& /^[a-z0-9.-]+$/u.test(url.hostname) && `${url.protocol}//${url.host}` === origin;
|
|
195
|
+
// A Chrome extension ID is stable (derived from its key), so it can be
|
|
196
|
+
// declared exactly. Firefox extension origins are random per profile.
|
|
197
|
+
const extension = kind === "app-runtime" && /^chrome-extension:\/\/[a-p]{32}$/u.test(origin);
|
|
198
|
+
if ((!web && !mobile && !extension) || origin.includes("*") || url.username || url.password || url.search || url.hash) {
|
|
199
|
+
return [issue(path, "origin", "must be an exact HTTPS, loopback HTTP, mobile capacitor or Chrome extension origin without wildcards")];
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return [issue(path, "origin", "must be an exact installation origin")];
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (manifest.distribution === "portable") {
|
|
209
|
+
if (manifest.project_url === undefined) {
|
|
210
|
+
return manifest.icon === undefined
|
|
211
|
+
? []
|
|
212
|
+
: [issue("/icon", "origin", "requires a project_url on the same origin")];
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const project = new URL(String(manifest.project_url));
|
|
216
|
+
if (project.protocol !== "https:") {
|
|
217
|
+
return [issue("/project_url", "protocol", "must use HTTPS")];
|
|
218
|
+
}
|
|
219
|
+
if (manifest.icon !== undefined
|
|
220
|
+
&& new URL(String(manifest.icon)).origin !== project.origin) {
|
|
221
|
+
return [issue("/icon", "origin", "must use the project_url origin")];
|
|
222
|
+
}
|
|
223
|
+
return [];
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return [issue("/", "url", "contains an invalid URL")];
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
const homepage = new URL(String(manifest.homepage));
|
|
231
|
+
if (native ? !isNativeLoopbackUrl(String(manifest.homepage)) : !secureOrAllowedLocal(homepage, allowLocal)) {
|
|
232
|
+
return [issue("/homepage", "protocol", native ? "native applications require canonical IPv4 loopback HTTP" : "must use HTTPS (or loopback HTTP in local mode)")];
|
|
233
|
+
}
|
|
234
|
+
for (const [index, redirect] of manifest.redirect_uris.entries()) {
|
|
235
|
+
// Redirects match exactly (RFC 8252 §8.10); a wildcard is never a pattern.
|
|
236
|
+
if (String(redirect).includes("*")) {
|
|
237
|
+
return [issue(`/redirect_uris/${index}`, "url", "must be an exact URI without wildcards")];
|
|
238
|
+
}
|
|
239
|
+
const url = new URL(String(redirect));
|
|
240
|
+
if (native && ["http:", "https:"].includes(url.protocol) && !isNativeLoopbackUrl(String(redirect))) {
|
|
241
|
+
return [issue(`/redirect_uris/${index}`, "origin", "native HTTP(S) redirects require canonical IPv4 loopback HTTP")];
|
|
242
|
+
}
|
|
243
|
+
if (url.origin === homepage.origin && !secureOrAllowedLocal(url, allowLocal)
|
|
244
|
+
&& !(native && isNativeLoopbackUrl(String(redirect)))) {
|
|
245
|
+
return [issue(`/redirect_uris/${index}`, "protocol", "must use HTTPS (or loopback HTTP in local mode)")];
|
|
246
|
+
}
|
|
247
|
+
const nativeAllowed = nativeRedirectMatchesApplication(url, String(manifest.id));
|
|
248
|
+
if (url.origin !== homepage.origin && !nativeAllowed) {
|
|
249
|
+
return [issue(`/redirect_uris/${index}`, "origin", "must use the homepage origin or a private-use scheme matching the application ID")];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (manifest.icon !== undefined
|
|
253
|
+
&& new URL(String(manifest.icon)).origin !== homepage.origin) {
|
|
254
|
+
return [issue("/icon", "origin", "must use the homepage origin")];
|
|
255
|
+
}
|
|
256
|
+
return [];
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return [issue("/", "url", "contains an invalid URL")];
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function nativeRedirectMatchesApplication(url, applicationId) {
|
|
263
|
+
const scheme = url.protocol.slice(0, -1);
|
|
264
|
+
return isNativeRedirectUri(url)
|
|
265
|
+
&& (scheme === applicationId || scheme.startsWith(`${applicationId}.`));
|
|
266
|
+
}
|
|
267
|
+
function validateProvisionRequirements(value) {
|
|
268
|
+
const manifest = asObject(value);
|
|
269
|
+
const requirements = asObject(manifest.requirements);
|
|
270
|
+
const requiredContracts = Array.isArray(requirements.contracts)
|
|
271
|
+
? requirements.contracts
|
|
272
|
+
: [];
|
|
273
|
+
const required = new Set(requiredContracts.map((contract) => {
|
|
274
|
+
const value = asObject(contract);
|
|
275
|
+
return `${value.id}@${value.version}`;
|
|
276
|
+
}));
|
|
277
|
+
const provisions = asObject(manifest.provisions);
|
|
278
|
+
const packs = Array.isArray(provisions.type_packs) ? provisions.type_packs : [];
|
|
279
|
+
const issues = [];
|
|
280
|
+
for (const [packIndex, provisionValue] of packs.entries()) {
|
|
281
|
+
const provision = asObject(provisionValue);
|
|
282
|
+
const providedContracts = Array.isArray(provision.provides)
|
|
283
|
+
? provision.provides
|
|
284
|
+
: [];
|
|
285
|
+
for (const providedValue of providedContracts) {
|
|
286
|
+
const provided = asObject(providedValue);
|
|
287
|
+
if (!required.has(`${provided.id}@${provided.version}`)) {
|
|
288
|
+
issues.push(issue(`/provisions/type_packs/${packIndex}/provides`, "contractRequirement", "may only contain contracts required by the application"));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
issues.push(...validateTypePackProvision(provision, `/provisions/type_packs/${packIndex}`));
|
|
292
|
+
}
|
|
293
|
+
return issues;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Validate one schema-valid type-pack provision beyond its JSON Schema: the
|
|
297
|
+
* embedded resources are exactly the manifest's, each digest pins its bytes,
|
|
298
|
+
* and every seed `upgrade_from` baseline satisfies mdbase 05A. Issue paths are
|
|
299
|
+
* prefixed with `path`, the provision's location in its enclosing document.
|
|
300
|
+
*/
|
|
301
|
+
export function validateTypePackProvision(value, path = "") {
|
|
302
|
+
const provision = asObject(value);
|
|
303
|
+
const manifest = asObject(provision.manifest);
|
|
304
|
+
const declaredResources = Array.isArray(manifest.resources)
|
|
305
|
+
? manifest.resources.map(asObject)
|
|
306
|
+
: [];
|
|
307
|
+
const embeddedResources = Array.isArray(provision.resources)
|
|
308
|
+
? provision.resources.map(asObject)
|
|
309
|
+
: [];
|
|
310
|
+
const embedded = new Map(embeddedResources.map((resource) => [String(resource.source), resource.document]));
|
|
311
|
+
if (embedded.size !== embeddedResources.length
|
|
312
|
+
|| new Set(declaredResources.map((resource) => String(resource.source))).size
|
|
313
|
+
!== declaredResources.length
|
|
314
|
+
|| declaredResources.length !== embeddedResources.length) {
|
|
315
|
+
return [issue(`${path}/resources`, "resourceSet", "must match manifest source paths exactly")];
|
|
316
|
+
}
|
|
317
|
+
const issues = [];
|
|
318
|
+
for (const [resourceIndex, resource] of declaredResources.entries()) {
|
|
319
|
+
const resourcePath = `${path}/manifest/resources/${resourceIndex}`;
|
|
320
|
+
const source = String(resource.source);
|
|
321
|
+
const document = embedded.get(source);
|
|
322
|
+
if (typeof document !== "string") {
|
|
323
|
+
issues.push(issue(`${path}/resources`, "resourceSet", `is missing manifest source ${source}`));
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
if (sha256(document) !== resource.digest) {
|
|
327
|
+
issues.push(issue(`${resourcePath}/digest`, "digest", "does not match the embedded document"));
|
|
328
|
+
}
|
|
329
|
+
if (resource.upgrade_from !== undefined) {
|
|
330
|
+
issues.push(...validateSeedUpgrade(resource, document, `${resourcePath}/upgrade_from`));
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return issues;
|
|
334
|
+
}
|
|
335
|
+
/** 05A seed-upgrade baselines: exact, distinct, earlier starters of the same type. */
|
|
336
|
+
function validateSeedUpgrade(resource, document, path) {
|
|
337
|
+
if (resource.kind !== "type" || resource.mode !== "seed") {
|
|
338
|
+
return [issue(path, "seedUpgrade", "is only allowed for seed types")];
|
|
339
|
+
}
|
|
340
|
+
const desired = typeFrontmatter(document);
|
|
341
|
+
const listed = Array.isArray(resource.upgrade_from);
|
|
342
|
+
const baselines = (listed ? resource.upgrade_from : [resource.upgrade_from]).map(asObject);
|
|
343
|
+
const seen = new Set();
|
|
344
|
+
const issues = [];
|
|
345
|
+
for (const [index, baseline] of baselines.entries()) {
|
|
346
|
+
const baselinePath = listed ? `${path}/${index}` : path;
|
|
347
|
+
const baselineDocument = String(baseline.document);
|
|
348
|
+
if (baseline.digest !== sha256(baselineDocument)) {
|
|
349
|
+
issues.push(issue(`${baselinePath}/digest`, "digest", "does not match the baseline document"));
|
|
350
|
+
}
|
|
351
|
+
else if (seen.has(baseline.digest)) {
|
|
352
|
+
issues.push(issue(`${baselinePath}/digest`, "uniqueBaseline", "duplicates another upgrade baseline"));
|
|
353
|
+
}
|
|
354
|
+
else if (baseline.digest === resource.digest) {
|
|
355
|
+
issues.push(issue(`${baselinePath}/digest`, "seedUpgrade", "must not be the resource's own document"));
|
|
356
|
+
}
|
|
357
|
+
seen.add(baseline.digest);
|
|
358
|
+
const previous = typeFrontmatter(baselineDocument);
|
|
359
|
+
if (!desired || !previous || previous.kind !== desired.kind || previous.name !== desired.name) {
|
|
360
|
+
issues.push(issue(`${baselinePath}/document`, "seedUpgrade", "must be a type document with the same kind and name as the resource"));
|
|
361
|
+
}
|
|
362
|
+
else if (baseline.version !== undefined && previous.version !== baseline.version) {
|
|
363
|
+
issues.push(issue(`${baselinePath}/version`, "seedUpgrade", "must equal the version the baseline document declares"));
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return issues;
|
|
367
|
+
}
|
|
368
|
+
/** Top-level frontmatter of a type document, or undefined when it has none. */
|
|
369
|
+
// The identity a type document declares. Only these top-level keys are read, so
|
|
370
|
+
// anchors and aliases elsewhere in a starter are harmless and alias expansion
|
|
371
|
+
// stays disabled.
|
|
372
|
+
function typeFrontmatter(document) {
|
|
373
|
+
const source = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(document)?.[1];
|
|
374
|
+
if (source === undefined)
|
|
375
|
+
return undefined;
|
|
376
|
+
const parsed = parseDocument(source, { uniqueKeys: true });
|
|
377
|
+
if (parsed.errors.length > 0 || !isMap(parsed.contents))
|
|
378
|
+
return undefined;
|
|
379
|
+
return { kind: parsed.get("kind"), name: parsed.get("name"), version: parsed.get("version") };
|
|
380
|
+
}
|
|
381
|
+
function sha256(document) {
|
|
382
|
+
return `sha256:${bytesToHex(sha256Bytes(utf8ToBytes(document)))}`;
|
|
383
|
+
}
|
|
384
|
+
function validateConfigurationSetup(value) {
|
|
385
|
+
const manifest = asObject(value);
|
|
386
|
+
const requirements = asObject(manifest.requirements);
|
|
387
|
+
const provisions = asObject(manifest.provisions);
|
|
388
|
+
const requiredValues = Array.isArray(requirements.configuration)
|
|
389
|
+
? requirements.configuration
|
|
390
|
+
: [];
|
|
391
|
+
const provisionValues = Array.isArray(provisions.configuration)
|
|
392
|
+
? provisions.configuration
|
|
393
|
+
: [];
|
|
394
|
+
const issues = [];
|
|
395
|
+
const required = new Map();
|
|
396
|
+
for (const [index, candidate] of requiredValues.entries()) {
|
|
397
|
+
const requirement = asObject(candidate);
|
|
398
|
+
const id = String(requirement.id);
|
|
399
|
+
const path = String(requirement.path);
|
|
400
|
+
const pathError = configurationPointerError(path, requirement.value);
|
|
401
|
+
if (pathError) {
|
|
402
|
+
issues.push(issue(`/requirements/configuration/${index}/path`, "configurationPointer", pathError));
|
|
403
|
+
}
|
|
404
|
+
if (required.has(id)) {
|
|
405
|
+
issues.push(issue(`/requirements/configuration/${index}/id`, "uniqueRequirement", `duplicates configuration requirement ${id}`));
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
required.set(id, { path, value: requirement.value, index });
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
const linked = new Set();
|
|
412
|
+
const contributionKeys = new Set();
|
|
413
|
+
for (const [index, candidate] of provisionValues.entries()) {
|
|
414
|
+
const provision = asObject(candidate);
|
|
415
|
+
const requirementId = String(provision.requirement);
|
|
416
|
+
const path = String(provision.path);
|
|
417
|
+
const pathError = configurationPointerError(path, provision.value);
|
|
418
|
+
if (pathError) {
|
|
419
|
+
issues.push(issue(`/provisions/configuration/${index}/path`, "configurationPointer", pathError));
|
|
420
|
+
}
|
|
421
|
+
const requirement = required.get(requirementId);
|
|
422
|
+
if (!requirement) {
|
|
423
|
+
issues.push(issue(`/provisions/configuration/${index}/requirement`, "configurationRequirement", `references unknown configuration requirement ${requirementId}`));
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (linked.has(requirementId)) {
|
|
427
|
+
issues.push(issue(`/provisions/configuration/${index}/requirement`, "uniqueProvision", `configuration requirement ${requirementId} may have exactly one provision`));
|
|
428
|
+
}
|
|
429
|
+
linked.add(requirementId);
|
|
430
|
+
if (path !== requirement.path) {
|
|
431
|
+
issues.push(issue(`/provisions/configuration/${index}/path`, "configurationRequirement", `must equal /requirements/configuration/${requirement.index}/path`));
|
|
432
|
+
}
|
|
433
|
+
if (JSON.stringify(provision.value) !== JSON.stringify(requirement.value)) {
|
|
434
|
+
issues.push(issue(`/provisions/configuration/${index}/value`, "configurationRequirement", `must equal /requirements/configuration/${requirement.index}/value`));
|
|
435
|
+
}
|
|
436
|
+
const contributionKey = `${path}\0${JSON.stringify(provision.value)}`;
|
|
437
|
+
if (contributionKeys.has(contributionKey)) {
|
|
438
|
+
issues.push(issue(`/provisions/configuration/${index}`, "uniqueContribution", "duplicates another configuration path and value contribution"));
|
|
439
|
+
}
|
|
440
|
+
contributionKeys.add(contributionKey);
|
|
441
|
+
}
|
|
442
|
+
for (const [id, requirement] of required) {
|
|
443
|
+
if (!linked.has(id)) {
|
|
444
|
+
issues.push(issue(`/requirements/configuration/${requirement.index}`, "configurationProvision", `requires one provision linked by id ${id}`));
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return issues;
|
|
448
|
+
}
|
|
449
|
+
// Matches mdbase-rs collection setup.
|
|
450
|
+
const APPLICATION_RECORD_EXTENSIONS = ["md", "base"];
|
|
451
|
+
function configurationPointerError(path, value) {
|
|
452
|
+
if (path === RECORD_EXTENSIONS_CONFIGURATION_PATH) {
|
|
453
|
+
return APPLICATION_RECORD_EXTENSIONS.includes(value)
|
|
454
|
+
? undefined
|
|
455
|
+
: "accepts only the record extensions md and base";
|
|
456
|
+
}
|
|
457
|
+
if (!path.startsWith("/") || new TextEncoder().encode(path).byteLength > 1024) {
|
|
458
|
+
return "must be a bounded RFC 6901 JSON pointer";
|
|
459
|
+
}
|
|
460
|
+
const encoded = path.slice(1).split("/");
|
|
461
|
+
if (encoded.length < 2 || encoded.length > 16) {
|
|
462
|
+
return "must address a value below an x-* extension namespace";
|
|
463
|
+
}
|
|
464
|
+
const segments = [];
|
|
465
|
+
for (const value of encoded) {
|
|
466
|
+
if (/~(?:[^01]|$)/u.test(value))
|
|
467
|
+
return "contains an invalid RFC 6901 escape";
|
|
468
|
+
const segment = value.replaceAll("~1", "/").replaceAll("~0", "~");
|
|
469
|
+
if (segment.length === 0
|
|
470
|
+
|| segment === "-"
|
|
471
|
+
|| /^\d+$/u.test(segment)
|
|
472
|
+
|| [...segment].some((character) => /\p{Cc}/u.test(character)))
|
|
473
|
+
return "contains a disallowed object-key segment";
|
|
474
|
+
segments.push(segment);
|
|
475
|
+
}
|
|
476
|
+
return /^x-[a-z0-9][a-z0-9-]*$/u.test(segments[0])
|
|
477
|
+
? undefined
|
|
478
|
+
: "must be inside a top-level x-* extension namespace";
|
|
479
|
+
}
|
|
480
|
+
function validateCapabilityRequirements(value) {
|
|
481
|
+
const manifest = asObject(value);
|
|
482
|
+
const requirements = asObject(manifest.requirements);
|
|
483
|
+
const capabilities = asObject(requirements.capabilities);
|
|
484
|
+
const issues = [];
|
|
485
|
+
if (requirements.access !== "full_collection") {
|
|
486
|
+
issues.push(issue("/requirements/access", "collectionAccess", "must explicitly request full_collection; legacy or omitted access is not widened"));
|
|
487
|
+
}
|
|
488
|
+
const required = Array.isArray(capabilities.required)
|
|
489
|
+
? capabilities.required.map(String)
|
|
490
|
+
: [];
|
|
491
|
+
const optional = Array.isArray(capabilities.optional)
|
|
492
|
+
? capabilities.optional.map(String)
|
|
493
|
+
: [];
|
|
494
|
+
const overlap = optional.find((capability) => required.includes(capability));
|
|
495
|
+
if (overlap) {
|
|
496
|
+
issues.push(issue("/requirements/capabilities/optional", "disjoint", `must not repeat required capability ${overlap}`));
|
|
497
|
+
}
|
|
498
|
+
const files = asObject(requirements.files);
|
|
499
|
+
const requiredFiles = Array.isArray(files.required) ? files.required.map(String) : [];
|
|
500
|
+
const optionalFiles = Array.isArray(files.optional) ? files.optional.map(String) : [];
|
|
501
|
+
const fileOverlap = optionalFiles.find((action) => requiredFiles.includes(action));
|
|
502
|
+
if (fileOverlap) {
|
|
503
|
+
issues.push(issue("/requirements/files/optional", "disjoint", `must not repeat required file action ${fileOverlap}`));
|
|
504
|
+
}
|
|
505
|
+
const people = asObject(requirements.people);
|
|
506
|
+
const requiredPeople = Array.isArray(people.required) ? people.required.map(String) : [];
|
|
507
|
+
const optionalPeople = Array.isArray(people.optional) ? people.optional.map(String) : [];
|
|
508
|
+
const peopleOverlap = optionalPeople.find((permission) => requiredPeople.includes(permission));
|
|
509
|
+
if (peopleOverlap) {
|
|
510
|
+
issues.push(issue("/requirements/people/optional", "disjoint", `must not repeat required people permission ${peopleOverlap}`));
|
|
511
|
+
}
|
|
512
|
+
return issues;
|
|
513
|
+
}
|
|
514
|
+
// Frozen cross-field rules from c2596a6e; notably, absent capabilities skip
|
|
515
|
+
// alias/setup checks rather than inventing or widening a declaration.
|
|
516
|
+
function validateLegacyCapabilityRequirements(value) {
|
|
517
|
+
const manifest = asObject(value);
|
|
518
|
+
const requirements = asObject(manifest.requirements);
|
|
519
|
+
const capabilities = asObject(requirements.capabilities);
|
|
520
|
+
const issues = [];
|
|
521
|
+
if (requirements.access !== "full_collection") {
|
|
522
|
+
issues.push(issue("/requirements/access", "collectionAccess", "must explicitly request full_collection; legacy or omitted access is not widened"));
|
|
523
|
+
}
|
|
524
|
+
if (Object.keys(capabilities).length === 0)
|
|
525
|
+
return issues;
|
|
526
|
+
const required = Array.isArray(capabilities.required)
|
|
527
|
+
? capabilities.required.map(String)
|
|
528
|
+
: [];
|
|
529
|
+
const optional = Array.isArray(capabilities.optional)
|
|
530
|
+
? capabilities.optional.map(String)
|
|
531
|
+
: [];
|
|
532
|
+
const overlap = optional.find((capability) => required.includes(capability));
|
|
533
|
+
if (overlap) {
|
|
534
|
+
issues.push(issue("/requirements/capabilities/optional", "disjoint", `must not repeat required capability ${overlap}`));
|
|
535
|
+
}
|
|
536
|
+
const declared = new Set([...required, ...optional]);
|
|
537
|
+
const provisions = asObject(manifest.provisions);
|
|
538
|
+
if (declared.has("definitions.type-pack.apply")) {
|
|
539
|
+
if (requirements.access !== "full_collection") {
|
|
540
|
+
issues.push(issue("/requirements/access", "typePackAccess", "must be full_collection for definitions.type-pack.apply"));
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
if (Array.isArray(provisions.type_packs)
|
|
544
|
+
&& provisions.type_packs.length > 0
|
|
545
|
+
&& !required.includes("collection.setup.apply")) {
|
|
546
|
+
issues.push(issue("/requirements/capabilities/required", "collectionSetupCapability", "must require collection.setup.apply when bundled type packs are declared"));
|
|
547
|
+
}
|
|
548
|
+
const hasConfigurationProvisions = Array.isArray(provisions.configuration)
|
|
549
|
+
&& provisions.configuration.length > 0;
|
|
550
|
+
const hasSetupProvisions = hasConfigurationProvisions
|
|
551
|
+
|| (Array.isArray(provisions.type_packs) && provisions.type_packs.length > 0);
|
|
552
|
+
if (hasConfigurationProvisions && !required.includes("collection.setup.apply")) {
|
|
553
|
+
issues.push(issue("/requirements/capabilities/required", "collectionSetupCapability", "must require collection.setup.apply when configuration provisions are declared"));
|
|
554
|
+
}
|
|
555
|
+
if (declared.has("collection.setup.apply")) {
|
|
556
|
+
if (requirements.access !== "full_collection") {
|
|
557
|
+
issues.push(issue("/requirements/access", "collectionSetupAccess", "must be full_collection for collection.setup.apply"));
|
|
558
|
+
}
|
|
559
|
+
if (!hasSetupProvisions) {
|
|
560
|
+
issues.push(issue("/provisions", "collectionSetupProvision", "must declare a configuration provision or type pack for collection.setup.apply"));
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
if (declared.has("notifications.background-delivery")
|
|
564
|
+
&& !Array.isArray(asObject(manifest.notifications).criteria)) {
|
|
565
|
+
issues.push(issue("/notifications/criteria", "notificationCapability", "must be declared for notifications.background-delivery"));
|
|
566
|
+
}
|
|
567
|
+
const fileRequirement = asObject(requirements.files);
|
|
568
|
+
const fileActions = Array.isArray(fileRequirement.actions)
|
|
569
|
+
? new Set(fileRequirement.actions.map(String))
|
|
570
|
+
: new Set();
|
|
571
|
+
for (const action of ["list", "read", "add", "replace", "move", "delete"]) {
|
|
572
|
+
const capability = `files.${action}`;
|
|
573
|
+
if (declared.has(capability) !== fileActions.has(action)) {
|
|
574
|
+
issues.push(issue("/requirements/capabilities", "fileCapability", `${capability} and requirements.files.actions.${action} must be declared together`));
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
return issues;
|
|
578
|
+
}
|
|
579
|
+
function localManifestSchemaCandidate(value, nativeOnly = false) {
|
|
580
|
+
const source = asObject(value);
|
|
581
|
+
if (source.distribution === "portable")
|
|
582
|
+
return value;
|
|
583
|
+
// Only URL fields need a schema-safe local substitute. A shallow copy keeps
|
|
584
|
+
// non-JSON values visible to the schema instead of silently dropping them.
|
|
585
|
+
const object = { ...source };
|
|
586
|
+
for (const field of ["homepage", "icon"]) {
|
|
587
|
+
if (typeof object[field] === "string") {
|
|
588
|
+
object[field] = schemaSafeLocalUrl(object[field], nativeOnly);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
if (Array.isArray(object.redirect_uris)) {
|
|
592
|
+
object.redirect_uris = object.redirect_uris.map((url) => typeof url === "string" ? schemaSafeLocalUrl(url, nativeOnly) : url);
|
|
593
|
+
}
|
|
594
|
+
return object;
|
|
595
|
+
}
|
|
596
|
+
function schemaSafeLocalUrl(value, nativeOnly) {
|
|
597
|
+
try {
|
|
598
|
+
const url = new URL(value);
|
|
599
|
+
if (url.protocol === "http:" && (nativeOnly ? isNativeLoopbackUrl(value) : isLoopback(url.hostname)))
|
|
600
|
+
url.protocol = "https:";
|
|
601
|
+
return url.href;
|
|
602
|
+
}
|
|
603
|
+
catch {
|
|
604
|
+
return value;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
/** RFC 8252 §7.3 native exception: canonical literal IPv4 only, any valid port.
|
|
608
|
+
* This classifies transport; the registered manifest, consent and pairing grant authority. */
|
|
609
|
+
export function isNativeLoopbackOrigin(value) {
|
|
610
|
+
if (typeof value !== "string" || !/^http:\/\/127\.0\.0\.1(?::[1-9][0-9]{0,4})?$/.test(value))
|
|
611
|
+
return false;
|
|
612
|
+
try {
|
|
613
|
+
return new URL(value).origin === value;
|
|
614
|
+
}
|
|
615
|
+
catch {
|
|
616
|
+
return false;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
function isNativeLoopbackUrl(value) {
|
|
620
|
+
const origin = /^http:\/\/[^/?#]+/.exec(value)?.[0];
|
|
621
|
+
return isNativeLoopbackOrigin(origin);
|
|
622
|
+
}
|
|
623
|
+
function secureOrAllowedLocal(url, allowLocal) {
|
|
624
|
+
return url.protocol === "https:"
|
|
625
|
+
|| (allowLocal && url.protocol === "http:" && isLoopback(url.hostname));
|
|
626
|
+
}
|
|
627
|
+
function isLoopback(hostname) {
|
|
628
|
+
return hostname === "localhost"
|
|
629
|
+
|| hostname === "127.0.0.1"
|
|
630
|
+
|| hostname === "[::1]"
|
|
631
|
+
|| hostname === "::1";
|
|
632
|
+
}
|
|
633
|
+
function invalid(issues) {
|
|
634
|
+
return { valid: false, issues };
|
|
635
|
+
}
|
|
636
|
+
function issue(path, keyword, message, params = {}) {
|
|
637
|
+
return { path, keyword, message, params };
|
|
638
|
+
}
|
|
639
|
+
function asObject(value) {
|
|
640
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
641
|
+
? value
|
|
642
|
+
: {};
|
|
643
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type EncryptedOperation } from "./operations.js";
|
|
2
|
+
export declare const MUTATION_FINGERPRINT_SCHEMA_VERSION: 1;
|
|
3
|
+
export declare const MUTATION_FINGERPRINT_DOMAIN: "mdbase-connect mutation fingerprint v1\0";
|
|
4
|
+
export declare function canonicalMutationInput(input: unknown): string;
|
|
5
|
+
export declare function mutationFingerprintTranscript(operation: EncryptedOperation, input: unknown): Uint8Array<ArrayBuffer>;
|
|
6
|
+
export declare function mutationFingerprint(operation: EncryptedOperation, input: unknown): Promise<string>;
|