@mdbase-dev/sdk 0.0.0-stage → 0.1.0-beta.153
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 +48 -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 +606 -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 +608 -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 +376 -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 +40 -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 +34835 -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 +49398 -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 +658 -0
- package/dist/client.js +1966 -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 +13 -0
- package/dist/local-build.js +47 -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 +857 -0
- package/dist/wire.js +915 -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 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite3.js","sourceRoot":"","sources":["../../src/native/sqlite3.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAGxD;+EAC+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,MAAM,UAAU,GAAuC,OAAO,CAAA,EAAE,CAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAC,SAAS,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrH,eAAe,UAAU,CAAC"}
|
|
Binary file
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Uuid } from "./wire.js";
|
|
2
|
+
import { KeyPair, StaticKey } from "./transport/noise.js";
|
|
3
|
+
import { WebSocketFactory } from "./transport/noise-session.js";
|
|
4
|
+
import { LocalLink } from "./transport/local-link.js";
|
|
5
|
+
import type { Connector } from "./transport/port.js";
|
|
6
|
+
/**
|
|
7
|
+
* The daemon's per-user state directory, as `crates/daemon` (`paths.rs`) defines it:
|
|
8
|
+
* - Linux: `~/.local/state/mdbase` (fixed: `XDG_STATE_HOME` is **not** honoured, so
|
|
9
|
+
* apps and a daemon started from different environments always agree)
|
|
10
|
+
* - macOS: `~/Library/Application Support/mdbase`
|
|
11
|
+
* - Windows: `%LOCALAPPDATA%\mdbase\state`
|
|
12
|
+
*/
|
|
13
|
+
export declare function defaultDaemonStateDir(os?: NodeJS.Platform): string;
|
|
14
|
+
/** The daemon's replica endpoint for the current user (§12.2). */
|
|
15
|
+
export declare function defaultIpcPath(sid?: string, os?: NodeJS.Platform): string;
|
|
16
|
+
export interface DaemonIdentity {
|
|
17
|
+
/** The daemon's device ID (the Noise target). */
|
|
18
|
+
device: Uuid;
|
|
19
|
+
/** Its replica Noise public key. */
|
|
20
|
+
noisePublicKey: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Where `daemon.json` lives: the daemon's state directory, **never** beside the socket.
|
|
24
|
+
* A named pipe's "directory" is `\\.\pipe\`, a namespace any local user can create
|
|
25
|
+
* names in, so deriving the file from the pipe path would let them supply their own
|
|
26
|
+
* Noise key. Throws for a location that isn't an ordinary per-user path.
|
|
27
|
+
*/
|
|
28
|
+
export declare function daemonIdentityFile(stateDir: string, os?: NodeJS.Platform): string;
|
|
29
|
+
/**
|
|
30
|
+
* Read the daemon's identity, `{"device": "<uuid>", "noise_pk": "<64 hex>"}`, from
|
|
31
|
+
* `daemon.json` in its state directory, after checking who owns it.
|
|
32
|
+
*/
|
|
33
|
+
export declare function readDaemonIdentity(stateDir?: string): Promise<DaemonIdentity>;
|
|
34
|
+
/**
|
|
35
|
+
* The localhost link (§12.4): `local-link.json` (`{port, token}`) plus the pinned
|
|
36
|
+
* identity from `daemon.json`, both owner-checked.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readLocalLink(stateDir?: string): Promise<LocalLink>;
|
|
39
|
+
/**
|
|
40
|
+
* Connect to the desktop daemon over the localhost link as the hosting session of
|
|
41
|
+
* `collection` (§12.4). Re-reads the link files on every reconnect (new port and token
|
|
42
|
+
* at each daemon start). For Obsidian, pass `webSocket` if the global one isn't used.
|
|
43
|
+
*/
|
|
44
|
+
export declare function connectDaemonLocalhost(o: {
|
|
45
|
+
collection: Uuid;
|
|
46
|
+
localOnly?: boolean;
|
|
47
|
+
stateDir?: string;
|
|
48
|
+
webSocket?: WebSocketFactory;
|
|
49
|
+
}): Connector;
|
|
50
|
+
export interface IpcConnectorOptions {
|
|
51
|
+
collection: Uuid;
|
|
52
|
+
/** The app's grant, or null for the hosting app itself. */
|
|
53
|
+
grant: Uuid | null;
|
|
54
|
+
staticKey: KeyPair | StaticKey;
|
|
55
|
+
/** Socket or pipe path; default {@link defaultIpcPath}. */
|
|
56
|
+
path?: string;
|
|
57
|
+
/** The daemon's identity; default read from `daemon.json` in its state directory. */
|
|
58
|
+
daemon?: DaemonIdentity;
|
|
59
|
+
/** The daemon's state directory (isolated daemons); default {@link defaultDaemonStateDir}. */
|
|
60
|
+
stateDir?: string;
|
|
61
|
+
}
|
|
62
|
+
/** A connector to the desktop daemon over local IPC. */
|
|
63
|
+
export declare function ipcConnector(o: IpcConnectorOptions): Connector;
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@mdbase-dev/sdk/node`: local IPC to the desktop daemon (`replica-client-api.md`
|
|
3
|
+
* §12.2). Node only (Electron main, CLIs, MCP servers, tests).
|
|
4
|
+
*
|
|
5
|
+
* - Linux: `$XDG_RUNTIME_DIR/mdbase/replica.sock`
|
|
6
|
+
* - macOS: `~/Library/Application Support/mdbase/replica.sock`
|
|
7
|
+
* - Windows: `\\.\pipe\mdbase-replica-<user SID>`
|
|
8
|
+
*
|
|
9
|
+
* Authentication is the same Noise IK handshake as remote clients, with the daemon's
|
|
10
|
+
* replica Noise key. Noise messages travel as `u16be(length) ‖ message`. The key comes
|
|
11
|
+
* from `daemon.json` in the daemon's owner-checked state directory, never from beside
|
|
12
|
+
* the socket or pipe, so whoever holds the endpoint name can't impersonate
|
|
13
|
+
* the daemon.
|
|
14
|
+
*/
|
|
15
|
+
import { constants as fsConstants } from "node:fs";
|
|
16
|
+
import { lstat, open } from "node:fs/promises";
|
|
17
|
+
import { connect as netConnect } from "node:net";
|
|
18
|
+
import { homedir, platform } from "node:os";
|
|
19
|
+
import { join, win32 } from "node:path";
|
|
20
|
+
import { fromHex } from "./cbor.js";
|
|
21
|
+
import { uuidToBytes } from "./codec.js";
|
|
22
|
+
import { mdbaseError } from "./errors.js";
|
|
23
|
+
import { clientPrologue } from "./transport/noise.js";
|
|
24
|
+
import { noiseConnector, streamCarrier } from "./transport/noise-session.js";
|
|
25
|
+
import { localLinkConnector } from "./transport/local-link.js";
|
|
26
|
+
function env(name) {
|
|
27
|
+
const v = process.env[name];
|
|
28
|
+
return v && v.length ? v : undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The daemon's per-user state directory, as `crates/daemon` (`paths.rs`) defines it:
|
|
32
|
+
* - Linux: `~/.local/state/mdbase` (fixed: `XDG_STATE_HOME` is **not** honoured, so
|
|
33
|
+
* apps and a daemon started from different environments always agree)
|
|
34
|
+
* - macOS: `~/Library/Application Support/mdbase`
|
|
35
|
+
* - Windows: `%LOCALAPPDATA%\mdbase\state`
|
|
36
|
+
*/
|
|
37
|
+
export function defaultDaemonStateDir(os = platform()) {
|
|
38
|
+
switch (os) {
|
|
39
|
+
case "win32": {
|
|
40
|
+
const base = env("LOCALAPPDATA");
|
|
41
|
+
if (!base)
|
|
42
|
+
throw mdbaseError("unavailable", "LOCALAPPDATA is not set");
|
|
43
|
+
return win32.join(base, "mdbase", "state");
|
|
44
|
+
}
|
|
45
|
+
case "darwin":
|
|
46
|
+
return join(homedir(), "Library", "Application Support", "mdbase");
|
|
47
|
+
default:
|
|
48
|
+
return join(homedir(), ".local", "state", "mdbase");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** The daemon's replica endpoint for the current user (§12.2). */
|
|
52
|
+
export function defaultIpcPath(sid, os = platform()) {
|
|
53
|
+
switch (os) {
|
|
54
|
+
case "win32":
|
|
55
|
+
if (!sid)
|
|
56
|
+
throw mdbaseError("invalid_request", "pass the user SID for the named pipe path");
|
|
57
|
+
return `\\\\.\\pipe\\mdbase-replica-${sid}`;
|
|
58
|
+
case "darwin":
|
|
59
|
+
return join(defaultDaemonStateDir(os), "replica.sock");
|
|
60
|
+
default: {
|
|
61
|
+
const run = env("XDG_RUNTIME_DIR");
|
|
62
|
+
return run ? join(run, "mdbase", "replica.sock") : join(defaultDaemonStateDir(os), "run", "replica.sock");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Where `daemon.json` lives: the daemon's state directory, **never** beside the socket.
|
|
68
|
+
* A named pipe's "directory" is `\\.\pipe\`, a namespace any local user can create
|
|
69
|
+
* names in, so deriving the file from the pipe path would let them supply their own
|
|
70
|
+
* Noise key. Throws for a location that isn't an ordinary per-user path.
|
|
71
|
+
*/
|
|
72
|
+
export function daemonIdentityFile(stateDir, os = platform()) {
|
|
73
|
+
if (os === "win32") {
|
|
74
|
+
const norm = stateDir.replace(/\//g, "\\");
|
|
75
|
+
if (norm.startsWith("\\\\")) {
|
|
76
|
+
throw mdbaseError("invalid_request", `daemon state directory must be a local path, not ${stateDir}`, "untrusted_identity");
|
|
77
|
+
}
|
|
78
|
+
if (!win32.isAbsolute(norm))
|
|
79
|
+
throw mdbaseError("invalid_request", "daemon state directory must be absolute");
|
|
80
|
+
return win32.join(norm, "daemon.json");
|
|
81
|
+
}
|
|
82
|
+
if (!stateDir.startsWith("/"))
|
|
83
|
+
throw mdbaseError("invalid_request", "daemon state directory must be absolute");
|
|
84
|
+
return join(stateDir, "daemon.json");
|
|
85
|
+
}
|
|
86
|
+
function untrusted(p, st) {
|
|
87
|
+
const uid = process.getuid?.();
|
|
88
|
+
if (st.isSymbolicLink())
|
|
89
|
+
return `${p} is a symlink`;
|
|
90
|
+
if (uid !== undefined && st.uid !== uid)
|
|
91
|
+
return `${p} is owned by another user`;
|
|
92
|
+
if ((st.mode & 0o022) !== 0)
|
|
93
|
+
return `${p} is writable by group or others`;
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function refuse(why) {
|
|
97
|
+
throw mdbaseError("unauthenticated", `refusing the daemon identity: ${why}`, "untrusted_identity");
|
|
98
|
+
}
|
|
99
|
+
function notRunning(p) {
|
|
100
|
+
throw mdbaseError("unavailable", `the mdbase daemon is not running (no ${p})`, "daemon_not_running");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Read the daemon's identity, `{"device": "<uuid>", "noise_pk": "<64 hex>"}`, from
|
|
104
|
+
* `daemon.json` in its state directory, after checking who owns it.
|
|
105
|
+
*/
|
|
106
|
+
/**
|
|
107
|
+
* Read an owner-only JSON file from the daemon's state directory: the directory is
|
|
108
|
+
* `lstat`-checked, the file is opened (`O_NOFOLLOW`) and then the **opened handle** is
|
|
109
|
+
* checked (regular file, owned by this uid, no group/other write), so there is no
|
|
110
|
+
* check-then-read race.
|
|
111
|
+
*/
|
|
112
|
+
async function readOwnerOnlyJson(stateDir, name) {
|
|
113
|
+
const file = daemonIdentityFile(stateDir).replace(/daemon\.json$/, name);
|
|
114
|
+
const posix = platform() !== "win32";
|
|
115
|
+
if (posix) {
|
|
116
|
+
let st;
|
|
117
|
+
try {
|
|
118
|
+
st = await lstat(stateDir);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
notRunning(stateDir);
|
|
122
|
+
}
|
|
123
|
+
const why = untrusted(stateDir, st);
|
|
124
|
+
if (why)
|
|
125
|
+
refuse(why);
|
|
126
|
+
}
|
|
127
|
+
let fh;
|
|
128
|
+
try {
|
|
129
|
+
fh = await open(file, posix ? fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW : "r");
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
if (e.code === "ELOOP")
|
|
133
|
+
refuse(`${file} is a symlink`);
|
|
134
|
+
notRunning(file);
|
|
135
|
+
}
|
|
136
|
+
let raw;
|
|
137
|
+
try {
|
|
138
|
+
const st = await fh.stat();
|
|
139
|
+
if (!st.isFile())
|
|
140
|
+
refuse(`${file} is not a regular file`);
|
|
141
|
+
if (posix) {
|
|
142
|
+
const why = untrusted(file, { isSymbolicLink: () => false, uid: st.uid, mode: st.mode });
|
|
143
|
+
if (why)
|
|
144
|
+
refuse(why);
|
|
145
|
+
}
|
|
146
|
+
raw = await fh.readFile("utf8");
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
await fh.close();
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
return { file, json: JSON.parse(raw) };
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
throw mdbaseError("internal", `${file} is not valid JSON`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Read the daemon's identity, `{"device": "<uuid>", "noise_pk": "<64 hex>"}`, from
|
|
160
|
+
* `daemon.json` in its state directory, after checking who owns it.
|
|
161
|
+
*/
|
|
162
|
+
export async function readDaemonIdentity(stateDir = defaultDaemonStateDir()) {
|
|
163
|
+
const { file, json: j } = await readOwnerOnlyJson(stateDir, "daemon.json");
|
|
164
|
+
if (j.schema_version !== undefined && j.schema_version !== 1) {
|
|
165
|
+
throw mdbaseError("upgrade_required", `${file} has schema_version ${j.schema_version}`);
|
|
166
|
+
}
|
|
167
|
+
if (!j.device || !j.noise_pk || !/^[0-9a-f]{64}$/.test(j.noise_pk)) {
|
|
168
|
+
throw mdbaseError("internal", `${file} is incomplete`);
|
|
169
|
+
}
|
|
170
|
+
return { device: j.device, noisePublicKey: fromHex(j.noise_pk) };
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The localhost link (§12.4): `local-link.json` (`{port, token}`) plus the pinned
|
|
174
|
+
* identity from `daemon.json`, both owner-checked.
|
|
175
|
+
*/
|
|
176
|
+
export async function readLocalLink(stateDir = defaultDaemonStateDir()) {
|
|
177
|
+
const id = await readDaemonIdentity(stateDir);
|
|
178
|
+
const { file, json: j } = await readOwnerOnlyJson(stateDir, "local-link.json");
|
|
179
|
+
if (!Number.isInteger(j.port) || !j.token || !/^[0-9a-f]{64}$/.test(j.token)) {
|
|
180
|
+
throw mdbaseError("internal", `${file} is incomplete`);
|
|
181
|
+
}
|
|
182
|
+
return { port: j.port, token: fromHex(j.token), device: id.device, noisePublicKey: id.noisePublicKey };
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Connect to the desktop daemon over the localhost link as the hosting session of
|
|
186
|
+
* `collection` (§12.4). Re-reads the link files on every reconnect (new port and token
|
|
187
|
+
* at each daemon start). For Obsidian, pass `webSocket` if the global one isn't used.
|
|
188
|
+
*/
|
|
189
|
+
export function connectDaemonLocalhost(o) {
|
|
190
|
+
return localLinkConnector({
|
|
191
|
+
collection: o.collection,
|
|
192
|
+
...(o.localOnly ? { localOnly: true } : {}),
|
|
193
|
+
...(o.webSocket ? { webSocket: o.webSocket } : {}),
|
|
194
|
+
link: () => readLocalLink(o.stateDir),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
function socketStream(sock) {
|
|
198
|
+
const s = {
|
|
199
|
+
ondata: null,
|
|
200
|
+
onclose: null,
|
|
201
|
+
write: (b) => void sock.write(b),
|
|
202
|
+
close: () => sock.destroy(),
|
|
203
|
+
};
|
|
204
|
+
sock.on("data", (d) => s.ondata?.(new Uint8Array(d.buffer, d.byteOffset, d.byteLength)));
|
|
205
|
+
sock.on("close", () => s.onclose?.());
|
|
206
|
+
sock.on("error", (e) => s.onclose?.(e));
|
|
207
|
+
return s;
|
|
208
|
+
}
|
|
209
|
+
function openSocket(path, signal) {
|
|
210
|
+
return new Promise((resolve, reject) => {
|
|
211
|
+
const sock = netConnect(path);
|
|
212
|
+
const onAbort = () => {
|
|
213
|
+
sock.destroy();
|
|
214
|
+
reject(mdbaseError("cancelled", "connect aborted"));
|
|
215
|
+
};
|
|
216
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
217
|
+
sock.once("connect", () => {
|
|
218
|
+
signal?.removeEventListener("abort", onAbort);
|
|
219
|
+
resolve(streamCarrier(socketStream(sock)));
|
|
220
|
+
});
|
|
221
|
+
sock.once("error", (e) => {
|
|
222
|
+
signal?.removeEventListener("abort", onAbort);
|
|
223
|
+
const notRunning = e.code === "ENOENT" || e.code === "ECONNREFUSED";
|
|
224
|
+
reject(mdbaseError("unavailable", notRunning ? "the mdbase daemon is not running" : e.message, {
|
|
225
|
+
...(notRunning ? { reason: "daemon_not_running" } : {}),
|
|
226
|
+
retryAfterMs: 1000,
|
|
227
|
+
}));
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/** A connector to the desktop daemon over local IPC. */
|
|
232
|
+
export function ipcConnector(o) {
|
|
233
|
+
const collection = uuidToBytes(o.collection);
|
|
234
|
+
const grant = o.grant ? uuidToBytes(o.grant) : null;
|
|
235
|
+
return noiseConnector({
|
|
236
|
+
description: `ipc:${o.path ?? "default"}`,
|
|
237
|
+
staticKey: o.staticKey,
|
|
238
|
+
target: async () => {
|
|
239
|
+
const path = o.path ?? defaultIpcPath();
|
|
240
|
+
const daemon = o.daemon ?? (await readDaemonIdentity(o.stateDir));
|
|
241
|
+
const prologue = clientPrologue(collection, grant, uuidToBytes(daemon.device));
|
|
242
|
+
return {
|
|
243
|
+
prologue,
|
|
244
|
+
remoteStatic: daemon.noisePublicKey,
|
|
245
|
+
// One daemon serves many collections on one socket: the prologue goes first,
|
|
246
|
+
// in clear, as one `u16be(64) ‖ prologue` record so the daemon can pick the
|
|
247
|
+
// collection and grant (daemon interface note §3). Tampering fails the handshake.
|
|
248
|
+
preamble: prologue,
|
|
249
|
+
device: daemon.device,
|
|
250
|
+
openCarrier: (signal) => openSocket(path, signal),
|
|
251
|
+
};
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export declare const MDBASE_NOTIFICATION_TYPE = "mdbase.notification";
|
|
2
|
+
/** The message `handleMdbaseNotificationClick` posts to the app window it focuses. */
|
|
3
|
+
export declare const MDBASE_NOTIFICATION_CLICK = "mdbase.notification.click";
|
|
4
|
+
export interface MdbaseNotificationPresentation {
|
|
5
|
+
title: string;
|
|
6
|
+
body?: string;
|
|
7
|
+
tag?: string;
|
|
8
|
+
}
|
|
9
|
+
/** A validated envelope. */
|
|
10
|
+
export interface MdbaseNotification {
|
|
11
|
+
version: 1;
|
|
12
|
+
/** Idempotency key: the same signal may be delivered more than once. */
|
|
13
|
+
signalId: string;
|
|
14
|
+
/** The app's manifest criterion id. Its meaning is the app's own. */
|
|
15
|
+
criterionId: string;
|
|
16
|
+
/** Opaque wake cursor. Never parse it. */
|
|
17
|
+
cursor: string;
|
|
18
|
+
/** Static manifest text. `null` for native data, where the OS shows the text. */
|
|
19
|
+
presentation: MdbaseNotificationPresentation | null;
|
|
20
|
+
}
|
|
21
|
+
export interface MdbaseNotificationClickMessage {
|
|
22
|
+
type: typeof MDBASE_NOTIFICATION_CLICK;
|
|
23
|
+
notification: MdbaseNotification;
|
|
24
|
+
}
|
|
25
|
+
export interface MdbaseNotificationDisplayOptions {
|
|
26
|
+
icon?: string;
|
|
27
|
+
badge?: string;
|
|
28
|
+
}
|
|
29
|
+
/** The parts of a `ServiceWorkerRegistration` the helpers use. */
|
|
30
|
+
export interface MdbaseNotificationRegistration {
|
|
31
|
+
readonly scope?: string;
|
|
32
|
+
showNotification(title: string, options?: NotificationOptions): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** The parts of a service-worker `PushEvent` the helpers use. */
|
|
35
|
+
export interface MdbasePushEvent {
|
|
36
|
+
readonly data: {
|
|
37
|
+
text(): string;
|
|
38
|
+
} | null;
|
|
39
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
40
|
+
}
|
|
41
|
+
/** The parts of a service-worker `NotificationEvent` the helpers use. */
|
|
42
|
+
export interface MdbaseNotificationClickEvent {
|
|
43
|
+
readonly notification: {
|
|
44
|
+
readonly data: unknown;
|
|
45
|
+
close(): void;
|
|
46
|
+
};
|
|
47
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
48
|
+
}
|
|
49
|
+
interface WindowClientLike {
|
|
50
|
+
readonly url: string;
|
|
51
|
+
focus(): Promise<unknown>;
|
|
52
|
+
postMessage(message: unknown): void;
|
|
53
|
+
}
|
|
54
|
+
/** The parts of a service worker's `Clients` the helpers use. */
|
|
55
|
+
export interface MdbaseNotificationClients {
|
|
56
|
+
matchAll(options: {
|
|
57
|
+
type: "window";
|
|
58
|
+
includeUncontrolled: boolean;
|
|
59
|
+
}): Promise<readonly WindowClientLike[]>;
|
|
60
|
+
openWindow(url: string): Promise<unknown>;
|
|
61
|
+
}
|
|
62
|
+
export interface HandleMdbasePushOptions extends MdbaseNotificationDisplayOptions {
|
|
63
|
+
/** Defaults to the service worker's own `registration`. */
|
|
64
|
+
registration?: MdbaseNotificationRegistration;
|
|
65
|
+
}
|
|
66
|
+
export interface HandleMdbaseNotificationClickOptions {
|
|
67
|
+
/** The page to open when no app window is open. Defaults to the registration scope. */
|
|
68
|
+
url?: string;
|
|
69
|
+
/** Defaults to the service worker's own `clients`. */
|
|
70
|
+
clients?: MdbaseNotificationClients;
|
|
71
|
+
/** Defaults to the service worker's own `registration.scope`. */
|
|
72
|
+
scope?: string;
|
|
73
|
+
}
|
|
74
|
+
/** Parse a Web Push payload: an object, a JSON string or `PushMessageData`. */
|
|
75
|
+
export declare function parseMdbasePush(value: unknown): MdbaseNotification;
|
|
76
|
+
/** Parse the string-valued data of an FCM/APNs notification (`version` "1" or 1). */
|
|
77
|
+
export declare function parseMdbaseNativeNotification(data: unknown): MdbaseNotification;
|
|
78
|
+
/** Read the envelope kept on a shown notification, or on a native tap. `null` if it is not one. */
|
|
79
|
+
export declare function readMdbaseNotificationData(data: unknown): MdbaseNotification | null;
|
|
80
|
+
/** Validate a Web Push payload and show it. Resolves with the envelope. */
|
|
81
|
+
export declare function showMdbaseNotification(registration: MdbaseNotificationRegistration, value: unknown, options?: MdbaseNotificationDisplayOptions): Promise<MdbaseNotification>;
|
|
82
|
+
/**
|
|
83
|
+
* A service-worker `push` handler. Returns `false` for a push that is not an
|
|
84
|
+
* mdbase notification, so the app can handle its own pushes. Otherwise it
|
|
85
|
+
* shows the notification inside `event.waitUntil` and returns `true`.
|
|
86
|
+
*/
|
|
87
|
+
export declare function handleMdbasePush(event: MdbasePushEvent, options?: HandleMdbasePushOptions): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* A service-worker `notificationclick` handler. Returns `false` for a
|
|
90
|
+
* notification that is not an mdbase one. Otherwise it closes it, focuses an
|
|
91
|
+
* open app window (posting `MdbaseNotificationClickMessage` to it) or opens
|
|
92
|
+
* `url`, and returns `true`.
|
|
93
|
+
*/
|
|
94
|
+
export declare function handleMdbaseNotificationClick(event: MdbaseNotificationClickEvent, options?: HandleMdbaseNotificationClickOptions): boolean;
|
|
95
|
+
export {};
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@mdbase-dev/sdk/notifications`: the mdbase push delivery envelope
|
|
3
|
+
* (`docs/contracts/push-envelope.md`) and service-worker helpers.
|
|
4
|
+
*
|
|
5
|
+
* The envelope is opaque. It carries a dedupe key, an opaque wake cursor, the
|
|
6
|
+
* app's own manifest criterion id and the criterion's static presentation. It
|
|
7
|
+
* never carries record, timer or collection identifiers or app data. Treat the
|
|
8
|
+
* presentation as untrusted text and a push as a wake-up hint: on wake, the app
|
|
9
|
+
* reads current state through its connection.
|
|
10
|
+
*
|
|
11
|
+
* This module imports no Worker, wasm or client code, so a service worker can
|
|
12
|
+
* import it on its own.
|
|
13
|
+
*/
|
|
14
|
+
import { MdbaseError, mdbaseError } from "./errors.js";
|
|
15
|
+
export const MDBASE_NOTIFICATION_TYPE = "mdbase.notification";
|
|
16
|
+
/** The message `handleMdbaseNotificationClick` posts to the app window it focuses. */
|
|
17
|
+
export const MDBASE_NOTIFICATION_CLICK = "mdbase.notification.click";
|
|
18
|
+
// Visible ASCII: today `tmr_` + base64url for timers; connector signals may differ.
|
|
19
|
+
const OPAQUE = /^[\x21-\x7e]{1,256}$/;
|
|
20
|
+
const CRITERION = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/;
|
|
21
|
+
const invalid = (message) => mdbaseError("invalid_request", message, "invalid_push_payload");
|
|
22
|
+
const unsupported = () => mdbaseError("upgrade_required", "The push uses an envelope version this SDK does not support.", "unsupported_push_version");
|
|
23
|
+
function object(value) {
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
try {
|
|
26
|
+
value = JSON.parse(value);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw invalid("The push payload is not JSON.");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (value && typeof value === "object" && typeof value.json === "function") {
|
|
33
|
+
try {
|
|
34
|
+
value = value.json();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw invalid("The push payload is not JSON.");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
41
|
+
throw invalid("The push payload is not an object.");
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
function text(value, min, max) {
|
|
45
|
+
return typeof value === "string" && value.length >= min && value.length <= max;
|
|
46
|
+
}
|
|
47
|
+
function presentation(value) {
|
|
48
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
49
|
+
return null;
|
|
50
|
+
const p = value;
|
|
51
|
+
if (!text(p.title, 1, 80) || (p.body !== undefined && !text(p.body, 0, 160))
|
|
52
|
+
|| (p.tag !== undefined && !text(p.tag, 1, 80)))
|
|
53
|
+
return null;
|
|
54
|
+
return Object.freeze({
|
|
55
|
+
title: p.title,
|
|
56
|
+
...(typeof p.body === "string" && p.body.length ? { body: p.body } : {}),
|
|
57
|
+
...(typeof p.tag === "string" ? { tag: p.tag } : {}),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function envelope(raw, version, shown) {
|
|
61
|
+
if (raw.type !== MDBASE_NOTIFICATION_TYPE)
|
|
62
|
+
throw invalid("The payload is not an mdbase notification.");
|
|
63
|
+
if (version !== 1) {
|
|
64
|
+
if (typeof version === "number" && Number.isSafeInteger(version) && version > 1)
|
|
65
|
+
throw unsupported();
|
|
66
|
+
throw invalid("The payload has no valid envelope version.");
|
|
67
|
+
}
|
|
68
|
+
if (!text(raw.signal_id, 1, 256) || !OPAQUE.test(raw.signal_id) || !text(raw.cursor, 1, 256) || !OPAQUE.test(raw.cursor)
|
|
69
|
+
|| !text(raw.criterion_id, 1, 100) || !CRITERION.test(raw.criterion_id)) {
|
|
70
|
+
throw invalid("The payload is not an mdbase notification.");
|
|
71
|
+
}
|
|
72
|
+
// Unknown fields are ignored: v1 may gain optional fields.
|
|
73
|
+
return Object.freeze({ version: 1, signalId: raw.signal_id, criterionId: raw.criterion_id, cursor: raw.cursor, presentation: shown });
|
|
74
|
+
}
|
|
75
|
+
/** Parse a Web Push payload: an object, a JSON string or `PushMessageData`. */
|
|
76
|
+
export function parseMdbasePush(value) {
|
|
77
|
+
const raw = object(value);
|
|
78
|
+
const result = envelope(raw, raw.version, presentation(raw.presentation));
|
|
79
|
+
if (!result.presentation)
|
|
80
|
+
throw invalid("The push has no valid presentation.");
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
/** Parse the string-valued data of an FCM/APNs notification (`version` "1" or 1). */
|
|
84
|
+
export function parseMdbaseNativeNotification(data) {
|
|
85
|
+
if (!data || typeof data !== "object" || Array.isArray(data))
|
|
86
|
+
throw invalid("The native notification data is not an object.");
|
|
87
|
+
const raw = data;
|
|
88
|
+
const version = typeof raw.version === "string" && /^[1-9][0-9]{0,8}$/.test(raw.version) ? Number(raw.version) : raw.version;
|
|
89
|
+
return envelope(raw, version, null);
|
|
90
|
+
}
|
|
91
|
+
/** Read the envelope kept on a shown notification, or on a native tap. `null` if it is not one. */
|
|
92
|
+
export function readMdbaseNotificationData(data) {
|
|
93
|
+
try {
|
|
94
|
+
return parseMdbaseNativeNotification(data);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** The `data` kept on a shown notification. Same shape as prod Connect builds. */
|
|
101
|
+
function shownData(n) {
|
|
102
|
+
return { type: MDBASE_NOTIFICATION_TYPE, version: n.version, signal_id: n.signalId, criterion_id: n.criterionId, cursor: n.cursor };
|
|
103
|
+
}
|
|
104
|
+
/** Validate a Web Push payload and show it. Resolves with the envelope. */
|
|
105
|
+
export async function showMdbaseNotification(registration, value, options = {}) {
|
|
106
|
+
const n = parseMdbasePush(value);
|
|
107
|
+
const p = n.presentation;
|
|
108
|
+
await registration.showNotification(p.title, {
|
|
109
|
+
...(p.body ? { body: p.body } : {}),
|
|
110
|
+
...(p.tag ? { tag: p.tag } : {}),
|
|
111
|
+
...(options.icon ? { icon: options.icon } : {}),
|
|
112
|
+
...(options.badge ? { badge: options.badge } : {}),
|
|
113
|
+
data: shownData(n),
|
|
114
|
+
});
|
|
115
|
+
return n;
|
|
116
|
+
}
|
|
117
|
+
function own(name) {
|
|
118
|
+
return globalThis[name];
|
|
119
|
+
}
|
|
120
|
+
/** The service worker's own origin (its location, else its registration scope). */
|
|
121
|
+
function workerOrigin(registrationScope) {
|
|
122
|
+
const location = globalThis.location;
|
|
123
|
+
if (typeof location?.origin === "string" && location.origin !== "null")
|
|
124
|
+
return location.origin;
|
|
125
|
+
try {
|
|
126
|
+
return registrationScope ? new URL(registrationScope).origin : null;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Click `url`/`scope` must stay on the app's own origin. Without a known
|
|
133
|
+
* origin only a root-relative path is accepted. */
|
|
134
|
+
function sameOrigin(value, origin, name) {
|
|
135
|
+
const reject = () => mdbaseError("invalid_request", `The notification click ${name} must be on the app's own origin.`, "click_target_cross_origin");
|
|
136
|
+
if (typeof value !== "string")
|
|
137
|
+
throw reject();
|
|
138
|
+
if (origin === null) {
|
|
139
|
+
if (!value.startsWith("/") || value.startsWith("//") || value.startsWith("/\\"))
|
|
140
|
+
throw reject();
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
let url;
|
|
144
|
+
try {
|
|
145
|
+
url = new URL(value, `${origin}/`);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
throw reject();
|
|
149
|
+
}
|
|
150
|
+
if (url.origin !== origin)
|
|
151
|
+
throw reject();
|
|
152
|
+
return url.href;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* A service-worker `push` handler. Returns `false` for a push that is not an
|
|
156
|
+
* mdbase notification, so the app can handle its own pushes. Otherwise it
|
|
157
|
+
* shows the notification inside `event.waitUntil` and returns `true`.
|
|
158
|
+
*/
|
|
159
|
+
export function handleMdbasePush(event, options = {}) {
|
|
160
|
+
let raw;
|
|
161
|
+
try {
|
|
162
|
+
raw = object(event.data?.text() ?? null);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
if (raw.type !== MDBASE_NOTIFICATION_TYPE)
|
|
168
|
+
return false;
|
|
169
|
+
const registration = options.registration ?? own("registration");
|
|
170
|
+
if (!registration)
|
|
171
|
+
throw mdbaseError("invalid_request", "No service worker registration to show the notification.", "push_registration_missing");
|
|
172
|
+
const display = { ...(options.icon ? { icon: options.icon } : {}), ...(options.badge ? { badge: options.badge } : {}) };
|
|
173
|
+
event.waitUntil((async () => {
|
|
174
|
+
try {
|
|
175
|
+
parseMdbasePush(raw);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Only a NEWER envelope major falls back: it still carries a displayable
|
|
179
|
+
// presentation, shown without data rather than a browser's generic
|
|
180
|
+
// "updated in the background". Malformed v1 stays rejected.
|
|
181
|
+
const shown = error instanceof MdbaseError && error.reason === "unsupported_push_version" ? presentation(raw.presentation) : null;
|
|
182
|
+
if (!shown)
|
|
183
|
+
throw error;
|
|
184
|
+
await registration.showNotification(shown.title, {
|
|
185
|
+
...(shown.body ? { body: shown.body } : {}),
|
|
186
|
+
...(shown.tag ? { tag: shown.tag } : {}),
|
|
187
|
+
...display,
|
|
188
|
+
});
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
// Display failures propagate; they are not a compatibility case.
|
|
192
|
+
return showMdbaseNotification(registration, raw, display);
|
|
193
|
+
})());
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* A service-worker `notificationclick` handler. Returns `false` for a
|
|
198
|
+
* notification that is not an mdbase one. Otherwise it closes it, focuses an
|
|
199
|
+
* open app window (posting `MdbaseNotificationClickMessage` to it) or opens
|
|
200
|
+
* `url`, and returns `true`.
|
|
201
|
+
*/
|
|
202
|
+
export function handleMdbaseNotificationClick(event, options = {}) {
|
|
203
|
+
const n = readMdbaseNotificationData(event.notification.data);
|
|
204
|
+
if (!n)
|
|
205
|
+
return false;
|
|
206
|
+
event.notification.close();
|
|
207
|
+
const clients = options.clients ?? own("clients");
|
|
208
|
+
const registrationScope = own("registration")?.scope;
|
|
209
|
+
const origin = workerOrigin(registrationScope);
|
|
210
|
+
const scope = options.scope === undefined ? registrationScope : sameOrigin(options.scope, origin, "scope");
|
|
211
|
+
const target = options.url === undefined ? scope ?? "/" : sameOrigin(options.url, origin, "url");
|
|
212
|
+
if (!clients)
|
|
213
|
+
return true;
|
|
214
|
+
event.waitUntil((async () => {
|
|
215
|
+
const windows = await clients.matchAll({ type: "window", includeUncontrolled: true });
|
|
216
|
+
const open = windows.find(client => !scope || client.url.startsWith(scope));
|
|
217
|
+
if (!open)
|
|
218
|
+
return clients.openWindow(target);
|
|
219
|
+
await open.focus();
|
|
220
|
+
const message = { type: MDBASE_NOTIFICATION_CLICK, notification: n };
|
|
221
|
+
open.postMessage(message);
|
|
222
|
+
return open;
|
|
223
|
+
})());
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=notifications.js.map
|