@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.
Files changed (900) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +844 -2
  3. package/dist/account-key.d.ts +176 -0
  4. package/dist/account-key.js +409 -0
  5. package/dist/account-key.js.map +1 -0
  6. package/dist/account.d.ts +11 -0
  7. package/dist/account.js +9 -0
  8. package/dist/account.js.map +1 -0
  9. package/dist/app-grant/client.d.ts +209 -0
  10. package/dist/app-grant/client.js +930 -0
  11. package/dist/app-grant/client.js.map +1 -0
  12. package/dist/app-grant/grant-store.d.ts +77 -0
  13. package/dist/app-grant/grant-store.js +201 -0
  14. package/dist/app-grant/grant-store.js.map +1 -0
  15. package/dist/app-grant/index.d.ts +11 -0
  16. package/dist/app-grant/index.js +10 -0
  17. package/dist/app-grant/index.js.map +1 -0
  18. package/dist/app-grant/native-completion.d.ts +22 -0
  19. package/dist/app-grant/native-completion.js +63 -0
  20. package/dist/app-grant/native-completion.js.map +1 -0
  21. package/dist/app-grant/people.d.ts +10 -0
  22. package/dist/app-grant/people.js +84 -0
  23. package/dist/app-grant/people.js.map +1 -0
  24. package/dist/app-grant/setup-attempt.d.ts +12 -0
  25. package/dist/app-grant/setup-attempt.js +62 -0
  26. package/dist/app-grant/setup-attempt.js.map +1 -0
  27. package/dist/app-grant/setup-producer.d.ts +31 -0
  28. package/dist/app-grant/setup-producer.js +65 -0
  29. package/dist/app-grant/setup-producer.js.map +1 -0
  30. package/dist/app-grant/setup.d.ts +11 -0
  31. package/dist/app-grant/setup.js +222 -0
  32. package/dist/app-grant/setup.js.map +1 -0
  33. package/dist/app-host/app-environment.d.ts +27 -0
  34. package/dist/app-host/app-environment.js +48 -0
  35. package/dist/app-host/app-environment.js.map +1 -0
  36. package/dist/app-host/app-origin.d.ts +7 -0
  37. package/dist/app-host/app-origin.js +48 -0
  38. package/dist/app-host/app-origin.js.map +1 -0
  39. package/dist/app-host/bases-pages.d.ts +29 -0
  40. package/dist/app-host/bases-pages.js +42 -0
  41. package/dist/app-host/bases-pages.js.map +1 -0
  42. package/dist/app-host/bases-wire.d.ts +159 -0
  43. package/dist/app-host/bases-wire.js +376 -0
  44. package/dist/app-host/bases-wire.js.map +1 -0
  45. package/dist/app-host/browser-direct-access.d.ts +18 -0
  46. package/dist/app-host/browser-direct-access.js +17 -0
  47. package/dist/app-host/browser-direct-access.js.map +1 -0
  48. package/dist/app-host/cloud-copy-bootstrap.d.ts +127 -0
  49. package/dist/app-host/cloud-copy-bootstrap.js +606 -0
  50. package/dist/app-host/cloud-copy-bootstrap.js.map +1 -0
  51. package/dist/app-host/cloud-copy-host.d.ts +248 -0
  52. package/dist/app-host/cloud-copy-host.js +1028 -0
  53. package/dist/app-host/cloud-copy-host.js.map +1 -0
  54. package/dist/app-host/cloud-copy-persistence-idb.d.ts +33 -0
  55. package/dist/app-host/cloud-copy-persistence-idb.js +255 -0
  56. package/dist/app-host/cloud-copy-persistence-idb.js.map +1 -0
  57. package/dist/app-host/cloud-copy-persistence.d.ts +57 -0
  58. package/dist/app-host/cloud-copy-persistence.js +341 -0
  59. package/dist/app-host/cloud-copy-persistence.js.map +1 -0
  60. package/dist/app-host/collection-control.d.ts +111 -0
  61. package/dist/app-host/collection-control.js +604 -0
  62. package/dist/app-host/collection-control.js.map +1 -0
  63. package/dist/app-host/collection-delete.d.ts +7 -0
  64. package/dist/app-host/collection-delete.js +54 -0
  65. package/dist/app-host/collection-delete.js.map +1 -0
  66. package/dist/app-host/collection-display-name.d.ts +2 -0
  67. package/dist/app-host/collection-display-name.js +22 -0
  68. package/dist/app-host/collection-display-name.js.map +1 -0
  69. package/dist/app-host/collection-join-ledger.d.ts +52 -0
  70. package/dist/app-host/collection-join-ledger.js +208 -0
  71. package/dist/app-host/collection-join-ledger.js.map +1 -0
  72. package/dist/app-host/collection-people.d.ts +32 -0
  73. package/dist/app-host/collection-people.js +119 -0
  74. package/dist/app-host/collection-people.js.map +1 -0
  75. package/dist/app-host/collection-readiness.d.ts +119 -0
  76. package/dist/app-host/collection-readiness.js +649 -0
  77. package/dist/app-host/collection-readiness.js.map +1 -0
  78. package/dist/app-host/collection-setup-journal.d.ts +59 -0
  79. package/dist/app-host/collection-setup-journal.js +813 -0
  80. package/dist/app-host/collection-setup-journal.js.map +1 -0
  81. package/dist/app-host/collection-setup-types.d.ts +155 -0
  82. package/dist/app-host/collection-setup-types.js +10 -0
  83. package/dist/app-host/collection-setup-types.js.map +1 -0
  84. package/dist/app-host/cp-authority.d.ts +65 -0
  85. package/dist/app-host/cp-authority.js +243 -0
  86. package/dist/app-host/cp-authority.js.map +1 -0
  87. package/dist/app-host/cp-people.d.ts +23 -0
  88. package/dist/app-host/cp-people.js +145 -0
  89. package/dist/app-host/cp-people.js.map +1 -0
  90. package/dist/app-host/cp-problem.d.ts +34 -0
  91. package/dist/app-host/cp-problem.js +114 -0
  92. package/dist/app-host/cp-problem.js.map +1 -0
  93. package/dist/app-host/device-key-custody.d.ts +51 -0
  94. package/dist/app-host/device-key-custody.js +128 -0
  95. package/dist/app-host/device-key-custody.js.map +1 -0
  96. package/dist/app-host/device-key-idb.d.ts +31 -0
  97. package/dist/app-host/device-key-idb.js +176 -0
  98. package/dist/app-host/device-key-idb.js.map +1 -0
  99. package/dist/app-host/device-key-provider.d.ts +33 -0
  100. package/dist/app-host/device-key-provider.js +181 -0
  101. package/dist/app-host/device-key-provider.js.map +1 -0
  102. package/dist/app-host/device-registration.d.ts +51 -0
  103. package/dist/app-host/device-registration.js +180 -0
  104. package/dist/app-host/device-registration.js.map +1 -0
  105. package/dist/app-host/foreground-wake.d.ts +43 -0
  106. package/dist/app-host/foreground-wake.js +113 -0
  107. package/dist/app-host/foreground-wake.js.map +1 -0
  108. package/dist/app-host/handover.d.ts +27 -0
  109. package/dist/app-host/handover.js +82 -0
  110. package/dist/app-host/handover.js.map +1 -0
  111. package/dist/app-host/http-log.d.ts +96 -0
  112. package/dist/app-host/http-log.js +608 -0
  113. package/dist/app-host/http-log.js.map +1 -0
  114. package/dist/app-host/index.d.ts +63 -0
  115. package/dist/app-host/index.js +33 -0
  116. package/dist/app-host/index.js.map +1 -0
  117. package/dist/app-host/initial-sync.d.ts +22 -0
  118. package/dist/app-host/initial-sync.js +41 -0
  119. package/dist/app-host/initial-sync.js.map +1 -0
  120. package/dist/app-host/installation-sign-in.d.ts +319 -0
  121. package/dist/app-host/installation-sign-in.js +1231 -0
  122. package/dist/app-host/installation-sign-in.js.map +1 -0
  123. package/dist/app-host/installation-store.d.ts +56 -0
  124. package/dist/app-host/installation-store.js +285 -0
  125. package/dist/app-host/installation-store.js.map +1 -0
  126. package/dist/app-host/ledger-rows.d.ts +3 -0
  127. package/dist/app-host/ledger-rows.js +23 -0
  128. package/dist/app-host/ledger-rows.js.map +1 -0
  129. package/dist/app-host/local-facade.d.ts +24 -0
  130. package/dist/app-host/local-facade.js +361 -0
  131. package/dist/app-host/local-facade.js.map +1 -0
  132. package/dist/app-host/log-pump.d.ts +124 -0
  133. package/dist/app-host/log-pump.js +326 -0
  134. package/dist/app-host/log-pump.js.map +1 -0
  135. package/dist/app-host/log-push.d.ts +90 -0
  136. package/dist/app-host/log-push.js +376 -0
  137. package/dist/app-host/log-push.js.map +1 -0
  138. package/dist/app-host/log-token-cache.d.ts +28 -0
  139. package/dist/app-host/log-token-cache.js +104 -0
  140. package/dist/app-host/log-token-cache.js.map +1 -0
  141. package/dist/app-host/native-sign-in.d.ts +27 -0
  142. package/dist/app-host/native-sign-in.js +12 -0
  143. package/dist/app-host/native-sign-in.js.map +1 -0
  144. package/dist/app-host/noise-custody.d.ts +62 -0
  145. package/dist/app-host/noise-custody.js +238 -0
  146. package/dist/app-host/noise-custody.js.map +1 -0
  147. package/dist/app-host/noise-idb.d.ts +33 -0
  148. package/dist/app-host/noise-idb.js +199 -0
  149. package/dist/app-host/noise-idb.js.map +1 -0
  150. package/dist/app-host/open-wait.d.ts +3 -0
  151. package/dist/app-host/open-wait.js +17 -0
  152. package/dist/app-host/open-wait.js.map +1 -0
  153. package/dist/app-host/opening-progress.d.ts +3 -0
  154. package/dist/app-host/opening-progress.js +5 -0
  155. package/dist/app-host/opening-progress.js.map +1 -0
  156. package/dist/app-host/owner.d.ts +103 -0
  157. package/dist/app-host/owner.js +262 -0
  158. package/dist/app-host/owner.js.map +1 -0
  159. package/dist/app-host/private-bootstrap.d.ts +78 -0
  160. package/dist/app-host/private-bootstrap.js +230 -0
  161. package/dist/app-host/private-bootstrap.js.map +1 -0
  162. package/dist/app-host/private-persistence-idb.d.ts +32 -0
  163. package/dist/app-host/private-persistence-idb.js +188 -0
  164. package/dist/app-host/private-persistence-idb.js.map +1 -0
  165. package/dist/app-host/private-persistence.d.ts +55 -0
  166. package/dist/app-host/private-persistence.js +257 -0
  167. package/dist/app-host/private-persistence.js.map +1 -0
  168. package/dist/app-host/scoped-sign-in-session.d.ts +49 -0
  169. package/dist/app-host/scoped-sign-in-session.js +243 -0
  170. package/dist/app-host/scoped-sign-in-session.js.map +1 -0
  171. package/dist/app-host/setup-engine.d.ts +14 -0
  172. package/dist/app-host/setup-engine.js +73 -0
  173. package/dist/app-host/setup-engine.js.map +1 -0
  174. package/dist/app-host/sign-out-erase.d.ts +37 -0
  175. package/dist/app-host/sign-out-erase.js +139 -0
  176. package/dist/app-host/sign-out-erase.js.map +1 -0
  177. package/dist/app-host/status.d.ts +62 -0
  178. package/dist/app-host/status.js +43 -0
  179. package/dist/app-host/status.js.map +1 -0
  180. package/dist/app-host/storage-probe.d.ts +46 -0
  181. package/dist/app-host/storage-probe.js +63 -0
  182. package/dist/app-host/storage-probe.js.map +1 -0
  183. package/dist/app-host/timer-port.d.ts +29 -0
  184. package/dist/app-host/timer-port.js +483 -0
  185. package/dist/app-host/timer-port.js.map +1 -0
  186. package/dist/app-host/wasm-runtime.d.ts +302 -0
  187. package/dist/app-host/wasm-runtime.js +1050 -0
  188. package/dist/app-host/wasm-runtime.js.map +1 -0
  189. package/dist/app-host/web-collection.d.ts +78 -0
  190. package/dist/app-host/web-collection.js +671 -0
  191. package/dist/app-host/web-collection.js.map +1 -0
  192. package/dist/app-host/web-sign-in-problem.d.ts +17 -0
  193. package/dist/app-host/web-sign-in-problem.js +59 -0
  194. package/dist/app-host/web-sign-in-problem.js.map +1 -0
  195. package/dist/app-host/web-sign-in-session.d.ts +367 -0
  196. package/dist/app-host/web-sign-in-session.js +1258 -0
  197. package/dist/app-host/web-sign-in-session.js.map +1 -0
  198. package/dist/app-storage/app-binary-index.d.ts +33 -0
  199. package/dist/app-storage/app-binary-index.js +274 -0
  200. package/dist/app-storage/app-binary-index.js.map +1 -0
  201. package/dist/app-storage/app-sqlite-index.d.ts +40 -0
  202. package/dist/app-storage/app-sqlite-index.js +102 -0
  203. package/dist/app-storage/app-sqlite-index.js.map +1 -0
  204. package/dist/app-storage/collection-sql.d.ts +39 -0
  205. package/dist/app-storage/collection-sql.js +93 -0
  206. package/dist/app-storage/collection-sql.js.map +1 -0
  207. package/dist/app-storage/index.d.ts +10 -0
  208. package/dist/app-storage/index.js +7 -0
  209. package/dist/app-storage/index.js.map +1 -0
  210. package/dist/app-storage/sqlite-index.d.ts +95 -0
  211. package/dist/app-storage/sqlite-index.js +280 -0
  212. package/dist/app-storage/sqlite-index.js.map +1 -0
  213. package/dist/application/asset-loader.d.ts +22 -0
  214. package/dist/application/asset-loader.js +130 -0
  215. package/dist/application/asset-loader.js.map +1 -0
  216. package/dist/application/asset-pins.json +24 -0
  217. package/dist/application/browser-capabilities.d.ts +48 -0
  218. package/dist/application/browser-capabilities.js +87 -0
  219. package/dist/application/browser-capabilities.js.map +1 -0
  220. package/dist/application/browser-selection.d.ts +58 -0
  221. package/dist/application/browser-selection.js +160 -0
  222. package/dist/application/browser-selection.js.map +1 -0
  223. package/dist/application/capabilities.d.ts +20 -0
  224. package/dist/application/capabilities.js +22 -0
  225. package/dist/application/capabilities.js.map +1 -0
  226. package/dist/application/collection-selection.d.ts +147 -0
  227. package/dist/application/collection-selection.js +351 -0
  228. package/dist/application/collection-selection.js.map +1 -0
  229. package/dist/application/configuration.d.ts +52 -0
  230. package/dist/application/configuration.js +568 -0
  231. package/dist/application/configuration.js.map +1 -0
  232. package/dist/application/declaration.d.ts +51 -0
  233. package/dist/application/declaration.js +100 -0
  234. package/dist/application/declaration.js.map +1 -0
  235. package/dist/application/entry.d.ts +343 -0
  236. package/dist/application/entry.js +945 -0
  237. package/dist/application/entry.js.map +1 -0
  238. package/dist/application/file-access.d.ts +55 -0
  239. package/dist/application/file-access.js +93 -0
  240. package/dist/application/file-access.js.map +1 -0
  241. package/dist/application/file-readiness.d.ts +16 -0
  242. package/dist/application/file-readiness.js +53 -0
  243. package/dist/application/file-readiness.js.map +1 -0
  244. package/dist/application/forgotten.d.ts +15 -0
  245. package/dist/application/forgotten.js +70 -0
  246. package/dist/application/forgotten.js.map +1 -0
  247. package/dist/application/front-door.d.ts +68 -0
  248. package/dist/application/front-door.js +66 -0
  249. package/dist/application/front-door.js.map +1 -0
  250. package/dist/application/local-build.d.ts +5 -0
  251. package/dist/application/local-build.js +22 -0
  252. package/dist/application/local-build.js.map +1 -0
  253. package/dist/application/manifest.d.ts +16 -0
  254. package/dist/application/manifest.js +31 -0
  255. package/dist/application/manifest.js.map +1 -0
  256. package/dist/application/native-assets.d.ts +25 -0
  257. package/dist/application/native-assets.js +29 -0
  258. package/dist/application/native-assets.js.map +1 -0
  259. package/dist/application/native-authorization-rpc.d.ts +23 -0
  260. package/dist/application/native-authorization-rpc.js +54 -0
  261. package/dist/application/native-authorization-rpc.js.map +1 -0
  262. package/dist/application/notification-readiness.d.ts +33 -0
  263. package/dist/application/notification-readiness.js +222 -0
  264. package/dist/application/notification-readiness.js.map +1 -0
  265. package/dist/application/packaged-assets.d.ts +5 -0
  266. package/dist/application/packaged-assets.js +55 -0
  267. package/dist/application/packaged-assets.js.map +1 -0
  268. package/dist/application/packaged-trust.d.ts +5 -0
  269. package/dist/application/packaged-trust.js +10 -0
  270. package/dist/application/packaged-trust.js.map +1 -0
  271. package/dist/application/people-readiness.d.ts +23 -0
  272. package/dist/application/people-readiness.js +213 -0
  273. package/dist/application/people-readiness.js.map +1 -0
  274. package/dist/application/phase.d.ts +108 -0
  275. package/dist/application/phase.js +113 -0
  276. package/dist/application/phase.js.map +1 -0
  277. package/dist/application/portal-reservation.d.ts +38 -0
  278. package/dist/application/portal-reservation.js +183 -0
  279. package/dist/application/portal-reservation.js.map +1 -0
  280. package/dist/application/private-collections.d.ts +114 -0
  281. package/dist/application/private-collections.js +415 -0
  282. package/dist/application/private-collections.js.map +1 -0
  283. package/dist/application/readiness.d.ts +59 -0
  284. package/dist/application/readiness.js +223 -0
  285. package/dist/application/readiness.js.map +1 -0
  286. package/dist/application/registration-refusal.d.ts +16 -0
  287. package/dist/application/registration-refusal.js +41 -0
  288. package/dist/application/registration-refusal.js.map +1 -0
  289. package/dist/application/registration.d.ts +26 -0
  290. package/dist/application/registration.js +372 -0
  291. package/dist/application/registration.js.map +1 -0
  292. package/dist/application/return-url.d.ts +1 -0
  293. package/dist/application/return-url.js +40 -0
  294. package/dist/application/return-url.js.map +1 -0
  295. package/dist/application/runtime.d.ts +107 -0
  296. package/dist/application/runtime.js +379 -0
  297. package/dist/application/runtime.js.map +1 -0
  298. package/dist/application/scope.d.ts +34 -0
  299. package/dist/application/scope.js +164 -0
  300. package/dist/application/scope.js.map +1 -0
  301. package/dist/application/session-hint.d.ts +21 -0
  302. package/dist/application/session-hint.js +87 -0
  303. package/dist/application/session-hint.js.map +1 -0
  304. package/dist/application/setup.d.ts +105 -0
  305. package/dist/application/setup.js +137 -0
  306. package/dist/application/setup.js.map +1 -0
  307. package/dist/application/sign-out.d.ts +17 -0
  308. package/dist/application/sign-out.js +28 -0
  309. package/dist/application/sign-out.js.map +1 -0
  310. package/dist/application/storage-scope.d.ts +8 -0
  311. package/dist/application/storage-scope.js +15 -0
  312. package/dist/application/storage-scope.js.map +1 -0
  313. package/dist/application/tabs.d.ts +98 -0
  314. package/dist/application/tabs.js +407 -0
  315. package/dist/application/tabs.js.map +1 -0
  316. package/dist/application/timer-criteria.d.ts +5 -0
  317. package/dist/application/timer-criteria.js +15 -0
  318. package/dist/application/timer-criteria.js.map +1 -0
  319. package/dist/application/ui-connections.d.ts +35 -0
  320. package/dist/application/ui-connections.js +129 -0
  321. package/dist/application/ui-connections.js.map +1 -0
  322. package/dist/application/worker-client.d.ts +59 -0
  323. package/dist/application/worker-client.js +381 -0
  324. package/dist/application/worker-client.js.map +1 -0
  325. package/dist/application/worker-host.d.ts +84 -0
  326. package/dist/application/worker-host.js +547 -0
  327. package/dist/application/worker-host.js.map +1 -0
  328. package/dist/application/worker-protocol.d.ts +40 -0
  329. package/dist/application/worker-protocol.js +83 -0
  330. package/dist/application/worker-protocol.js.map +1 -0
  331. package/dist/application/worker-session.d.ts +45 -0
  332. package/dist/application/worker-session.js +37 -0
  333. package/dist/application/worker-session.js.map +1 -0
  334. package/dist/application/worker.d.ts +1 -0
  335. package/dist/application/worker.js +34835 -0
  336. package/dist/application/worker.js.map +1 -0
  337. package/dist/attachment-wire.d.ts +15 -0
  338. package/dist/attachment-wire.js +47 -0
  339. package/dist/attachment-wire.js.map +1 -0
  340. package/dist/browser/mdbase-sdk.js +49398 -0
  341. package/dist/browser/mdbase-sdk.min.js +130 -0
  342. package/dist/browser.d.ts +4 -0
  343. package/dist/browser.js +5 -0
  344. package/dist/browser.js.map +1 -0
  345. package/dist/cbor.d.ts +52 -0
  346. package/dist/cbor.js +480 -0
  347. package/dist/cbor.js.map +1 -0
  348. package/dist/client.d.ts +658 -0
  349. package/dist/client.js +1966 -0
  350. package/dist/client.js.map +1 -0
  351. package/dist/codec.d.ts +82 -0
  352. package/dist/codec.js +388 -0
  353. package/dist/codec.js.map +1 -0
  354. package/dist/collection-availability.d.ts +34 -0
  355. package/dist/collection-availability.js +63 -0
  356. package/dist/collection-availability.js.map +1 -0
  357. package/dist/contract-query.d.ts +31 -0
  358. package/dist/contract-query.js +13 -0
  359. package/dist/contract-query.js.map +1 -0
  360. package/dist/contract-records.d.ts +51 -0
  361. package/dist/contract-records.js +14 -0
  362. package/dist/contract-records.js.map +1 -0
  363. package/dist/describe-error.d.ts +61 -0
  364. package/dist/describe-error.js +452 -0
  365. package/dist/describe-error.js.map +1 -0
  366. package/dist/errors.d.ts +65 -0
  367. package/dist/errors.js +94 -0
  368. package/dist/errors.js.map +1 -0
  369. package/dist/files.d.ts +147 -0
  370. package/dist/files.js +537 -0
  371. package/dist/files.js.map +1 -0
  372. package/dist/holds.d.ts +74 -0
  373. package/dist/holds.js +118 -0
  374. package/dist/holds.js.map +1 -0
  375. package/dist/index.d.ts +36 -0
  376. package/dist/index.js +22 -0
  377. package/dist/index.js.map +1 -0
  378. package/dist/keys.d.ts +40 -0
  379. package/dist/keys.js +181 -0
  380. package/dist/keys.js.map +1 -0
  381. package/dist/live.d.ts +38 -0
  382. package/dist/live.js +82 -0
  383. package/dist/live.js.map +1 -0
  384. package/dist/local-build.d.ts +13 -0
  385. package/dist/local-build.js +47 -0
  386. package/dist/local-build.js.map +1 -0
  387. package/dist/native/provenance.json +23 -0
  388. package/dist/native/runtime.wasm +0 -0
  389. package/dist/native/sqlite3.d.ts +5 -0
  390. package/dist/native/sqlite3.js +17392 -0
  391. package/dist/native/sqlite3.js.map +1 -0
  392. package/dist/native/sqlite3.wasm +0 -0
  393. package/dist/node.d.ts +63 -0
  394. package/dist/node.js +255 -0
  395. package/dist/node.js.map +1 -0
  396. package/dist/notifications.d.ts +95 -0
  397. package/dist/notifications.js +226 -0
  398. package/dist/notifications.js.map +1 -0
  399. package/dist/offline-shell-build.d.ts +25 -0
  400. package/dist/offline-shell-build.js +78 -0
  401. package/dist/offline-shell-build.js.map +1 -0
  402. package/dist/offline-shell-worker.d.ts +46 -0
  403. package/dist/offline-shell-worker.js +115 -0
  404. package/dist/offline-shell-worker.js.map +1 -0
  405. package/dist/people.d.ts +82 -0
  406. package/dist/people.js +199 -0
  407. package/dist/people.js.map +1 -0
  408. package/dist/presence.d.ts +21 -0
  409. package/dist/presence.js +109 -0
  410. package/dist/presence.js.map +1 -0
  411. package/dist/private-account.d.ts +197 -0
  412. package/dist/private-account.js +510 -0
  413. package/dist/private-account.js.map +1 -0
  414. package/dist/private.d.ts +55 -0
  415. package/dist/private.js +69 -0
  416. package/dist/private.js.map +1 -0
  417. package/dist/read-helpers.d.ts +32 -0
  418. package/dist/read-helpers.js +181 -0
  419. package/dist/read-helpers.js.map +1 -0
  420. package/dist/records/session.d.ts +60 -0
  421. package/dist/records/session.js +534 -0
  422. package/dist/records/session.js.map +1 -0
  423. package/dist/records/types.d.ts +76 -0
  424. package/dist/records/types.js +2 -0
  425. package/dist/records/types.js.map +1 -0
  426. package/dist/records/witness.d.ts +19 -0
  427. package/dist/records/witness.js +64 -0
  428. package/dist/records/witness.js.map +1 -0
  429. package/dist/records.d.ts +23 -0
  430. package/dist/records.js +234 -0
  431. package/dist/records.js.map +1 -0
  432. package/dist/runtime/wasm.d.ts +69 -0
  433. package/dist/runtime/wasm.js +274 -0
  434. package/dist/runtime/wasm.js.map +1 -0
  435. package/dist/runtime-wire.d.ts +71 -0
  436. package/dist/runtime-wire.js +71 -0
  437. package/dist/runtime-wire.js.map +1 -0
  438. package/dist/saved-views.d.ts +29 -0
  439. package/dist/saved-views.js +171 -0
  440. package/dist/saved-views.js.map +1 -0
  441. package/dist/semver.d.ts +22 -0
  442. package/dist/semver.js +63 -0
  443. package/dist/semver.js.map +1 -0
  444. package/dist/session.d.ts +65 -0
  445. package/dist/session.js +332 -0
  446. package/dist/session.js.map +1 -0
  447. package/dist/status.d.ts +46 -0
  448. package/dist/status.js +59 -0
  449. package/dist/status.js.map +1 -0
  450. package/dist/strength.d.ts +12 -0
  451. package/dist/strength.js +194 -0
  452. package/dist/strength.js.map +1 -0
  453. package/dist/testing/application.d.ts +59 -0
  454. package/dist/testing/application.js +230 -0
  455. package/dist/testing/application.js.map +1 -0
  456. package/dist/testing/index.d.ts +10 -0
  457. package/dist/testing/index.js +6 -0
  458. package/dist/testing/index.js.map +1 -0
  459. package/dist/testing/memory-contracts.d.ts +40 -0
  460. package/dist/testing/memory-contracts.js +127 -0
  461. package/dist/testing/memory-contracts.js.map +1 -0
  462. package/dist/testing/memory-replica.d.ts +191 -0
  463. package/dist/testing/memory-replica.js +1465 -0
  464. package/dist/testing/memory-replica.js.map +1 -0
  465. package/dist/testing/noise-server.d.ts +11 -0
  466. package/dist/testing/noise-server.js +65 -0
  467. package/dist/testing/noise-server.js.map +1 -0
  468. package/dist/testing/test-app.d.ts +93 -0
  469. package/dist/testing/test-app.js +140 -0
  470. package/dist/testing/test-app.js.map +1 -0
  471. package/dist/thin-client.d.ts +67 -0
  472. package/dist/thin-client.js +42 -0
  473. package/dist/thin-client.js.map +1 -0
  474. package/dist/timers.d.ts +158 -0
  475. package/dist/timers.js +258 -0
  476. package/dist/timers.js.map +1 -0
  477. package/dist/transport/bases-rpc.d.ts +15 -0
  478. package/dist/transport/bases-rpc.js +61 -0
  479. package/dist/transport/bases-rpc.js.map +1 -0
  480. package/dist/transport/control-route.d.ts +34 -0
  481. package/dist/transport/control-route.js +84 -0
  482. package/dist/transport/control-route.js.map +1 -0
  483. package/dist/transport/inprocess.d.ts +13 -0
  484. package/dist/transport/inprocess.js +37 -0
  485. package/dist/transport/inprocess.js.map +1 -0
  486. package/dist/transport/local-link.d.ts +53 -0
  487. package/dist/transport/local-link.js +66 -0
  488. package/dist/transport/local-link.js.map +1 -0
  489. package/dist/transport/next-relay.d.ts +64 -0
  490. package/dist/transport/next-relay.js +222 -0
  491. package/dist/transport/next-relay.js.map +1 -0
  492. package/dist/transport/noise-session.d.ts +88 -0
  493. package/dist/transport/noise-session.js +264 -0
  494. package/dist/transport/noise-session.js.map +1 -0
  495. package/dist/transport/noise.d.ts +102 -0
  496. package/dist/transport/noise.js +307 -0
  497. package/dist/transport/noise.js.map +1 -0
  498. package/dist/transport/original-session.d.ts +6 -0
  499. package/dist/transport/original-session.js +6 -0
  500. package/dist/transport/original-session.js.map +1 -0
  501. package/dist/transport/port.d.ts +67 -0
  502. package/dist/transport/port.js +184 -0
  503. package/dist/transport/port.js.map +1 -0
  504. package/dist/transport/read-fence-policy.d.ts +3 -0
  505. package/dist/transport/read-fence-policy.js +11 -0
  506. package/dist/transport/read-fence-policy.js.map +1 -0
  507. package/dist/transport/relay-close.d.ts +31 -0
  508. package/dist/transport/relay-close.js +23 -0
  509. package/dist/transport/relay-close.js.map +1 -0
  510. package/dist/transport/relay-pipe.d.ts +15 -0
  511. package/dist/transport/relay-pipe.js +190 -0
  512. package/dist/transport/relay-pipe.js.map +1 -0
  513. package/dist/transport/relay.d.ts +36 -0
  514. package/dist/transport/relay.js +45 -0
  515. package/dist/transport/relay.js.map +1 -0
  516. package/dist/type-packs.d.ts +124 -0
  517. package/dist/type-packs.js +188 -0
  518. package/dist/type-packs.js.map +1 -0
  519. package/dist/validation.d.ts +30 -0
  520. package/dist/validation.js +125 -0
  521. package/dist/validation.js.map +1 -0
  522. package/dist/values.d.ts +37 -0
  523. package/dist/values.js +133 -0
  524. package/dist/values.js.map +1 -0
  525. package/dist/view-sources.d.ts +31 -0
  526. package/dist/view-sources.js +78 -0
  527. package/dist/view-sources.js.map +1 -0
  528. package/dist/wire.d.ts +857 -0
  529. package/dist/wire.js +915 -0
  530. package/dist/wire.js.map +1 -0
  531. package/dist/witness.d.ts +7 -0
  532. package/dist/witness.js +82 -0
  533. package/dist/witness.js.map +1 -0
  534. package/dist/write-ledger.d.ts +41 -0
  535. package/dist/write-ledger.js +184 -0
  536. package/dist/write-ledger.js.map +1 -0
  537. package/node_modules/@mdbase-dev/connect-protocol/dist/application-authorization.d.ts +32 -0
  538. package/node_modules/@mdbase-dev/connect-protocol/dist/application-authorization.js +207 -0
  539. package/node_modules/@mdbase-dev/connect-protocol/dist/application-contract.d.ts +23 -0
  540. package/node_modules/@mdbase-dev/connect-protocol/dist/application-contract.js +76 -0
  541. package/node_modules/@mdbase-dev/connect-protocol/dist/application-declaration.d.ts +120 -0
  542. package/node_modules/@mdbase-dev/connect-protocol/dist/application-declaration.js +1 -0
  543. package/node_modules/@mdbase-dev/connect-protocol/dist/authorization-errors.d.ts +34 -0
  544. package/node_modules/@mdbase-dev/connect-protocol/dist/authorization-errors.js +52 -0
  545. package/node_modules/@mdbase-dev/connect-protocol/dist/capabilities.d.ts +73 -0
  546. package/node_modules/@mdbase-dev/connect-protocol/dist/capabilities.js +92 -0
  547. package/node_modules/@mdbase-dev/connect-protocol/dist/change-events.generated.d.ts +48 -0
  548. package/node_modules/@mdbase-dev/connect-protocol/dist/change-events.generated.js +18 -0
  549. package/node_modules/@mdbase-dev/connect-protocol/dist/collection-setup.d.ts +93 -0
  550. package/node_modules/@mdbase-dev/connect-protocol/dist/collection-setup.js +7 -0
  551. package/node_modules/@mdbase-dev/connect-protocol/dist/compatibility.d.ts +37 -0
  552. package/node_modules/@mdbase-dev/connect-protocol/dist/compatibility.js +65 -0
  553. package/node_modules/@mdbase-dev/connect-protocol/dist/connect-problems.generated.d.ts +1533 -0
  554. package/node_modules/@mdbase-dev/connect-protocol/dist/connect-problems.generated.js +598 -0
  555. package/node_modules/@mdbase-dev/connect-protocol/dist/files.d.ts +288 -0
  556. package/node_modules/@mdbase-dev/connect-protocol/dist/files.js +426 -0
  557. package/node_modules/@mdbase-dev/connect-protocol/dist/index.d.ts +723 -0
  558. package/node_modules/@mdbase-dev/connect-protocol/dist/index.js +104 -0
  559. package/node_modules/@mdbase-dev/connect-protocol/dist/manifest-validators.generated.d.ts +13 -0
  560. package/node_modules/@mdbase-dev/connect-protocol/dist/manifest-validators.generated.js +7940 -0
  561. package/node_modules/@mdbase-dev/connect-protocol/dist/manifest.d.ts +72 -0
  562. package/node_modules/@mdbase-dev/connect-protocol/dist/manifest.js +643 -0
  563. package/node_modules/@mdbase-dev/connect-protocol/dist/mutation-fingerprint.d.ts +6 -0
  564. package/node_modules/@mdbase-dev/connect-protocol/dist/mutation-fingerprint.js +116 -0
  565. package/node_modules/@mdbase-dev/connect-protocol/dist/next-authorization.d.ts +30 -0
  566. package/node_modules/@mdbase-dev/connect-protocol/dist/next-authorization.js +90 -0
  567. package/node_modules/@mdbase-dev/connect-protocol/dist/operations.d.ts +15 -0
  568. package/node_modules/@mdbase-dev/connect-protocol/dist/operations.js +196 -0
  569. package/node_modules/@mdbase-dev/connect-protocol/dist/people.d.ts +33 -0
  570. package/node_modules/@mdbase-dev/connect-protocol/dist/people.js +26 -0
  571. package/node_modules/@mdbase-dev/connect-protocol/dist/records.d.ts +108 -0
  572. package/node_modules/@mdbase-dev/connect-protocol/dist/records.js +3 -0
  573. package/node_modules/@mdbase-dev/connect-protocol/dist/type-packs.d.ts +154 -0
  574. package/node_modules/@mdbase-dev/connect-protocol/dist/type-packs.js +30 -0
  575. package/node_modules/@mdbase-dev/connect-protocol/package.json +49 -0
  576. package/node_modules/@mdbase-dev/connect-protocol/schemas/application-capability-catalog.v1.json +40 -0
  577. package/node_modules/@mdbase-dev/connect-protocol/schemas/application-capability-catalog.v2.json +68 -0
  578. package/node_modules/@mdbase-dev/connect-protocol/schemas/catalog.json +17 -0
  579. package/node_modules/@mdbase-dev/connect-protocol/schemas/change-events.v1.json +48 -0
  580. package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-problem.v1.schema.json +5665 -0
  581. package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-problems.v1.catalog.json +373 -0
  582. package/node_modules/@mdbase-dev/connect-protocol/schemas/connect-protocol.v1.schema.json +901 -0
  583. package/node_modules/@mdbase-dev/connect-protocol/schemas/data-contract.schema.json +163 -0
  584. package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v1.schema.json +63 -0
  585. package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v2.schema.json +63 -0
  586. package/node_modules/@mdbase-dev/connect-protocol/schemas/encrypted-relay.v3.schema.json +64 -0
  587. package/node_modules/@mdbase-dev/connect-protocol/schemas/files.v1.schema.json +551 -0
  588. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-cancellation.schema.json +6 -0
  589. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-invocation.schema.json +6 -0
  590. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-outcome.schema.json +6 -0
  591. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-provider-declaration.schema.json +6 -0
  592. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/action-request.schema.json +6 -0
  593. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/conformance-claim.schema.json +6 -0
  594. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/event-source-declaration.schema.json +6 -0
  595. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/event.schema.json +6 -0
  596. package/node_modules/@mdbase-dev/connect-protocol/schemas/interop/v0.1/profile.schema.json +456 -0
  597. package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-app.legacy-v1.schema.json +430 -0
  598. package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-app.schema.json +437 -0
  599. package/node_modules/@mdbase-dev/connect-protocol/schemas/mdbase-query.v0.3.schema.json +176 -0
  600. package/node_modules/@mdbase-dev/connect-protocol/schemas/next-trust.v1.schema.json +54 -0
  601. package/node_modules/@mdbase-dev/connect-protocol/schemas/notification-webhook.v1.schema.json +56 -0
  602. package/node_modules/@mdbase-dev/connect-protocol/schemas/operation-catalog.v1.json +43 -0
  603. package/node_modules/@mdbase-dev/connect-protocol/schemas/operation-mutation-classification.v1.json +554 -0
  604. package/node_modules/@mdbase-dev/connect-protocol/schemas/sync.v1.schema.json +483 -0
  605. package/node_modules/@noble/hashes/LICENSE +21 -0
  606. package/node_modules/@noble/hashes/README.md +478 -0
  607. package/node_modules/@noble/hashes/_blake.d.ts +20 -0
  608. package/node_modules/@noble/hashes/_blake.js +59 -0
  609. package/node_modules/@noble/hashes/_md.d.ts +95 -0
  610. package/node_modules/@noble/hashes/_md.js +209 -0
  611. package/node_modules/@noble/hashes/_u64.d.ts +36 -0
  612. package/node_modules/@noble/hashes/_u64.js +77 -0
  613. package/node_modules/@noble/hashes/argon2.d.ts +148 -0
  614. package/node_modules/@noble/hashes/argon2.js +577 -0
  615. package/node_modules/@noble/hashes/blake1.d.ts +162 -0
  616. package/node_modules/@noble/hashes/blake1.js +630 -0
  617. package/node_modules/@noble/hashes/blake2.d.ts +203 -0
  618. package/node_modules/@noble/hashes/blake2.js +573 -0
  619. package/node_modules/@noble/hashes/blake3.d.ts +68 -0
  620. package/node_modules/@noble/hashes/blake3.js +310 -0
  621. package/node_modules/@noble/hashes/eskdf.d.ts +91 -0
  622. package/node_modules/@noble/hashes/eskdf.js +225 -0
  623. package/node_modules/@noble/hashes/hkdf.d.ts +70 -0
  624. package/node_modules/@noble/hashes/hkdf.js +152 -0
  625. package/node_modules/@noble/hashes/hmac.d.ts +50 -0
  626. package/node_modules/@noble/hashes/hmac.js +93 -0
  627. package/node_modules/@noble/hashes/index.d.ts +1 -0
  628. package/node_modules/@noble/hashes/index.js +34 -0
  629. package/node_modules/@noble/hashes/legacy.d.ts +107 -0
  630. package/node_modules/@noble/hashes/legacy.js +348 -0
  631. package/node_modules/@noble/hashes/package.json +91 -0
  632. package/node_modules/@noble/hashes/pbkdf2.d.ts +66 -0
  633. package/node_modules/@noble/hashes/pbkdf2.js +176 -0
  634. package/node_modules/@noble/hashes/scrypt.d.ts +98 -0
  635. package/node_modules/@noble/hashes/scrypt.js +304 -0
  636. package/node_modules/@noble/hashes/sha2.d.ts +176 -0
  637. package/node_modules/@noble/hashes/sha2.js +446 -0
  638. package/node_modules/@noble/hashes/sha3-addons.d.ts +533 -0
  639. package/node_modules/@noble/hashes/sha3-addons.js +973 -0
  640. package/node_modules/@noble/hashes/sha3.d.ts +208 -0
  641. package/node_modules/@noble/hashes/sha3.js +475 -0
  642. package/node_modules/@noble/hashes/src/_blake.ts +67 -0
  643. package/node_modules/@noble/hashes/src/_md.ts +227 -0
  644. package/node_modules/@noble/hashes/src/_u64.ts +111 -0
  645. package/node_modules/@noble/hashes/src/argon2.ts +693 -0
  646. package/node_modules/@noble/hashes/src/blake1.ts +677 -0
  647. package/node_modules/@noble/hashes/src/blake2.ts +648 -0
  648. package/node_modules/@noble/hashes/src/blake3.ts +344 -0
  649. package/node_modules/@noble/hashes/src/eskdf.ts +265 -0
  650. package/node_modules/@noble/hashes/src/hkdf.ts +161 -0
  651. package/node_modules/@noble/hashes/src/hmac.ts +130 -0
  652. package/node_modules/@noble/hashes/src/index.ts +33 -0
  653. package/node_modules/@noble/hashes/src/legacy.ts +361 -0
  654. package/node_modules/@noble/hashes/src/pbkdf2.ts +219 -0
  655. package/node_modules/@noble/hashes/src/scrypt.ts +375 -0
  656. package/node_modules/@noble/hashes/src/sha2.ts +486 -0
  657. package/node_modules/@noble/hashes/src/sha3-addons.ts +1157 -0
  658. package/node_modules/@noble/hashes/src/sha3.ts +525 -0
  659. package/node_modules/@noble/hashes/src/utils.ts +978 -0
  660. package/node_modules/@noble/hashes/src/webcrypto.ts +283 -0
  661. package/node_modules/@noble/hashes/utils.d.ts +560 -0
  662. package/node_modules/@noble/hashes/utils.js +687 -0
  663. package/node_modules/@noble/hashes/webcrypto.d.ts +121 -0
  664. package/node_modules/@noble/hashes/webcrypto.js +228 -0
  665. package/node_modules/yaml/LICENSE +13 -0
  666. package/node_modules/yaml/README.md +172 -0
  667. package/node_modules/yaml/bin.mjs +11 -0
  668. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  669. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  670. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  671. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  672. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  673. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  674. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  675. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  676. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  677. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  678. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +226 -0
  679. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  680. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  681. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  682. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  683. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  684. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  685. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  686. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  687. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  688. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  689. package/node_modules/yaml/browser/dist/errors.js +57 -0
  690. package/node_modules/yaml/browser/dist/index.js +17 -0
  691. package/node_modules/yaml/browser/dist/log.js +11 -0
  692. package/node_modules/yaml/browser/dist/nodes/Alias.js +118 -0
  693. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  694. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  695. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  696. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  697. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  698. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  699. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  700. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  701. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  702. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  703. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  704. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  705. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  706. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  707. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  708. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  709. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  710. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  711. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  712. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  713. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  714. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  715. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  716. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  717. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  718. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  719. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  720. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  721. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  722. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  723. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  724. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  725. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  726. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  727. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  728. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  729. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  730. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  731. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  732. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  733. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  734. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  735. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  736. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  737. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  738. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  739. package/node_modules/yaml/browser/dist/util.js +11 -0
  740. package/node_modules/yaml/browser/dist/visit.js +233 -0
  741. package/node_modules/yaml/browser/index.js +5 -0
  742. package/node_modules/yaml/browser/package.json +3 -0
  743. package/node_modules/yaml/dist/cli.d.ts +8 -0
  744. package/node_modules/yaml/dist/cli.mjs +201 -0
  745. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  746. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  747. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  748. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  749. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  750. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  751. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  752. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  753. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  754. package/node_modules/yaml/dist/compose/composer.js +224 -0
  755. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  756. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  757. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  758. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  759. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  760. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  761. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  762. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  763. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  764. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  765. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  766. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +228 -0
  767. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  768. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  769. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  770. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  771. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  772. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  773. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  774. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  775. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  776. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  777. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  778. package/node_modules/yaml/dist/doc/Document.js +337 -0
  779. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  780. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  781. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  782. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  783. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  784. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  785. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  786. package/node_modules/yaml/dist/doc/directives.js +178 -0
  787. package/node_modules/yaml/dist/errors.d.ts +21 -0
  788. package/node_modules/yaml/dist/errors.js +62 -0
  789. package/node_modules/yaml/dist/index.d.ts +25 -0
  790. package/node_modules/yaml/dist/index.js +50 -0
  791. package/node_modules/yaml/dist/log.d.ts +3 -0
  792. package/node_modules/yaml/dist/log.js +19 -0
  793. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  794. package/node_modules/yaml/dist/nodes/Alias.js +120 -0
  795. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  796. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  797. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  798. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  799. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  800. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  801. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  802. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  803. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  804. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  805. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  806. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  807. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  808. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  809. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  810. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  811. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  812. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  813. package/node_modules/yaml/dist/options.d.ts +350 -0
  814. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  815. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  816. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  817. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  818. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  819. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  820. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  821. package/node_modules/yaml/dist/parse/cst.js +112 -0
  822. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  823. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  824. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  825. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  826. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  827. package/node_modules/yaml/dist/parse/parser.js +980 -0
  828. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  829. package/node_modules/yaml/dist/public-api.js +107 -0
  830. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  831. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  832. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  833. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  834. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  835. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  836. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  837. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  838. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  839. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  840. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  841. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  842. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  843. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  844. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  845. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  846. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  847. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  848. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  849. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  850. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  851. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  852. package/node_modules/yaml/dist/schema/tags.js +99 -0
  853. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  854. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  855. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  856. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  857. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  858. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  859. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  860. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  861. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  862. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  863. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  864. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  865. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  866. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  867. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  868. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  869. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  870. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  871. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  872. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  873. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  874. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  875. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  876. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  877. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  878. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  879. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  880. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  881. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  882. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  883. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  884. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  885. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  886. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  887. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  888. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  889. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  890. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  891. package/node_modules/yaml/dist/test-events.js +134 -0
  892. package/node_modules/yaml/dist/util.d.ts +16 -0
  893. package/node_modules/yaml/dist/util.js +28 -0
  894. package/node_modules/yaml/dist/visit.d.ts +102 -0
  895. package/node_modules/yaml/dist/visit.js +236 -0
  896. package/node_modules/yaml/package.json +97 -0
  897. package/node_modules/yaml/util.js +2 -0
  898. package/package.json +108 -4
  899. package/vendor/mdbase-connect-sdk-e6e66bcd172f.json +13 -0
  900. package/vendor/mdbase-dev-connect-protocol-0.1.0-beta.145-e6e66bcd172f.tgz +0 -0
@@ -0,0 +1,945 @@
1
+ import { applicationDeclaration, rebindApplicationDeclaration } from "./declaration.js";
2
+ import { describeDiagnostic } from "../describe-error.js";
3
+ import { currentAppOrigin, isAppOrigin, urlOrigin } from "../app-host/app-origin.js";
4
+ import { compileApplicationManifest } from "./manifest.js";
5
+ import { declaredReturnUrl } from "./return-url.js";
6
+ import { resolveApplicationRegistration } from "./registration.js";
7
+ import { packagedApplicationAssets } from "./packaged-assets.js";
8
+ import { appReleaseTrust } from "./packaged-trust.js";
9
+ import { applicationLoopbackAllowed } from "./local-build.js";
10
+ import { selectAppEnvironment } from "../app-host/app-environment.js";
11
+ import { ApplicationBrowserSelection, ApplicationSelectionError, browserApplicationSelectionPort } from "./browser-selection.js";
12
+ import { ApplicationCollectionSelection } from "./collection-selection.js";
13
+ import { APPLICATION_WORKER_PROTOCOL } from "./worker-protocol.js";
14
+ import { browserApplicationPortalHost, openerApplicationPortalHost, reserveApplicationPortal } from "./portal-reservation.js";
15
+ import { MdbaseError, mdbaseError } from "../errors.js";
16
+ import { awaitFileAccess, consentedFileActions, fileAccessDeclaration, grantedResult, missingFileActions } from "./file-access.js";
17
+ import { registrationRefusal } from "./registration-refusal.js";
18
+ import { waitForAppSignInRelease } from "../app-host/owner.js";
19
+ import { applicationStorageNamespace } from "./storage-scope.js";
20
+ import { ApplicationTabs } from "./tabs.js";
21
+ import { probeBrowserCapabilities } from "./browser-capabilities.js";
22
+ import { appSaveState, appStoragePolicy } from "../app-host/status.js";
23
+ /** Resolves when the document is (or becomes) visible; non-document hosts count as visible. */
24
+ function whenVisible(signal) {
25
+ const doc = globalThis.document;
26
+ if (!doc || typeof doc.addEventListener !== "function" || doc.visibilityState !== "hidden")
27
+ return Promise.resolve();
28
+ return new Promise((resolve, reject) => {
29
+ const done = () => { if (doc.visibilityState === "hidden")
30
+ return; doc.removeEventListener("visibilitychange", done); signal.removeEventListener("abort", stop); resolve(); };
31
+ const stop = () => { doc.removeEventListener("visibilitychange", done); reject(signal.reason); };
32
+ doc.addEventListener("visibilitychange", done);
33
+ signal.addEventListener("abort", stop, { once: true });
34
+ });
35
+ }
36
+ import { unresolvedSetup } from "./setup.js";
37
+ import { applicationPhase, SLOW_OPENING_MS } from "./phase.js";
38
+ import { summarizeStatus } from "../status.js";
39
+ import { applicationForgotten } from "./forgotten.js";
40
+ import { applicationSessionHint } from "./session-hint.js";
41
+ import { ApplicationPrivateCollections, withPrivateCollections } from "./private-collections.js";
42
+ export class MdbaseApplicationUnavailableError extends Error {
43
+ code = "application_not_yet_available";
44
+ constructor() { super("MdbaseConnect application runtime is not yet available"); this.name = "MdbaseApplicationUnavailableError"; }
45
+ }
46
+ const problem = Object.freeze({ code: "application_not_yet_available" });
47
+ const facet = Object.freeze({ checking: false, assessment: null, problem });
48
+ const readiness = Object.freeze({ checking: false, assessment: null, problem,
49
+ facets: Object.freeze({ capabilities: facet, contracts: facet, configuration: facet, files: facet, people: facet, notifications: facet }) });
50
+ const emptyFacet = Object.freeze({ checking: false, assessment: null, problem: null });
51
+ const emptyReadiness = Object.freeze({ checking: false, assessment: null, problem: null,
52
+ facets: Object.freeze({ capabilities: emptyFacet, contracts: emptyFacet, configuration: emptyFacet, files: emptyFacet, people: emptyFacet, notifications: emptyFacet }) });
53
+ const unavailable = () => new MdbaseApplicationUnavailableError();
54
+ const noSelection = Object.freeze({ state: "none", problem: null, usable: null,
55
+ requested: Object.freeze({ collectionId: null, source: "none", displayName: null, approved: false }) });
56
+ /** Honest shell where the SDK cannot host its own module Worker (SSR, Node,
57
+ * non-browser tests, non-web origins). Performs no registration, key, Worker,
58
+ * storage, network or popup IO and never returns a fake client/READY state. */
59
+ function unavailableApplication() {
60
+ const base = { status: "blocked", signIn: null, collections: Object.freeze([]), selectedCollectionId: null, problem: problem.code, timing: null, readiness, selection: noSelection };
61
+ const snapshot = Object.freeze({ ...base, phase: applicationPhase(base), sync: null, writes: null, links: null });
62
+ const refuse = () => Promise.reject(unavailable());
63
+ return Object.freeze({ getSnapshot: () => snapshot, subscribe: () => () => { }, start: refuse, authorize: refuse, select: refuse, approve: refuse, reauthorize: refuse, refreshCollectionList: refuse, requestAccess: refuse, chooseAnother: refuse,
64
+ assess: refuse, configure: refuse, setup: Object.freeze({ plan: refuse, apply: refuse }), clearSelection: refuse, forget: refuse, deleteCollection: refuse, setForeground() { throw unavailable(); }, close: refuse, signOut: refuse });
65
+ }
66
+ const browserHost = (origin) => typeof Worker === "function" && typeof MessageChannel === "function" && currentAppOrigin() !== null && isAppOrigin(origin, true);
67
+ function signInOpener(value, declaration) {
68
+ if (value === undefined)
69
+ return null;
70
+ const fail = () => { throw mdbaseError("invalid_request", "Invalid sign-in opener", "application_sign_in_opener"); };
71
+ if (!value || typeof value !== "object" || typeof value.open !== "function" || (value.close !== undefined && typeof value.close !== "function"))
72
+ return fail();
73
+ const returnUrl = value.returnUrl;
74
+ if (returnUrl !== undefined) {
75
+ if (!declaredReturnUrl(returnUrl, declaration.manifest, applicationLoopbackAllowed(declaration.environment)))
76
+ fail();
77
+ }
78
+ const open = value.open.bind(value), close = value.close?.bind(value);
79
+ return Object.freeze({ open, ...(close ? { close } : {}), ...(returnUrl !== undefined ? { returnUrl } : {}) });
80
+ }
81
+ /** Page-side sign-out follow-up: the app's Web Push subscription (created on
82
+ * the page by `registerWebPush`) and console diagnostics. Never throws. */
83
+ async function signOutDiagnostics(result) {
84
+ let push = true;
85
+ if (result.webPush) {
86
+ const container = globalThis.navigator?.serviceWorker;
87
+ let timer;
88
+ if (container && typeof container.getRegistration === "function")
89
+ push = await Promise.race([(async () => {
90
+ const subscription = await (await container.getRegistration())?.pushManager?.getSubscription();
91
+ return subscription ? await subscription.unsubscribe() : true;
92
+ })().catch(() => false), new Promise(resolve => { timer = setTimeout(() => resolve(false), 5_000); })]).finally(() => clearTimeout(timer));
93
+ }
94
+ try {
95
+ if (result.server === "incomplete")
96
+ console.warn("mdbase: signed out on this device, but mdbase could not be reached to end the session. This device stays listed under the account until it is removed there.");
97
+ if (result.local === "incomplete" || !push)
98
+ console.warn("mdbase: signed out, but some local data on this device could not be removed.");
99
+ }
100
+ catch { /* no console */ }
101
+ }
102
+ /** Last-used collection, a REQUESTED hint only (never approval). Optional storage. */
103
+ function selectionMemory(namespace) {
104
+ const key = `mdbase.${namespace}.selected-collection.v1`;
105
+ return Object.freeze({ read: () => { try {
106
+ return globalThis.localStorage?.getItem(key) ?? null;
107
+ }
108
+ catch {
109
+ return null;
110
+ } },
111
+ write: (id) => { try {
112
+ if (id === null)
113
+ globalThis.localStorage?.removeItem(key);
114
+ else
115
+ globalThis.localStorage?.setItem(key, id);
116
+ }
117
+ catch { /* hint storage is optional */ } } });
118
+ }
119
+ /** The application entry. New code: `createMdbase(declaration)`, the same
120
+ * entry with a strict snapshot; `MdbaseConnect` keeps its name for one cut.
121
+ * Declaration-only public entry. Construction is IO-free; SDK registration,
122
+ * same-artifact Worker and original profile/SQL start lazily on the first
123
+ * action. The URL names the requested collection; sign-in approval decides what
124
+ * opens. No app factories, private authority hooks, replacement actors or
125
+ * transport-only READY. */
126
+ export class MdbaseConnect {
127
+ app;
128
+ declaration;
129
+ compiled;
130
+ lifetime = new AbortController();
131
+ listeners = new Set();
132
+ nativeListeners = new Set();
133
+ selection = null;
134
+ memory = null;
135
+ runtime = null;
136
+ initialization = null;
137
+ closing = null;
138
+ closed = false;
139
+ foreground = true;
140
+ /** Page lifecycle: bumped on every pagehide; set while the page is hidden. */
141
+ incarnation = 0;
142
+ hidden = null;
143
+ /** This page's tab group (leader or follower), and the current election. */
144
+ tabs = null;
145
+ election = null;
146
+ signingOut = false;
147
+ snapshot = Object.freeze({ status: "not_started", signIn: null, collections: Object.freeze([]), selectedCollectionId: null, problem: null, timing: null, readiness: emptyReadiness });
148
+ composed = null;
149
+ hint = null;
150
+ forgotten = null;
151
+ handledApproval = null;
152
+ refreshing = null;
153
+ refreshedAt = 0;
154
+ /** Non-owning UI handle: the original Worker request still owns its lifetime. */
155
+ approvalPortal = null;
156
+ /** Bumped by state outside base/selection: the slow-opening timer and sync. */
157
+ revision = 0;
158
+ links = null;
159
+ cpOrigin = null;
160
+ opening = null;
161
+ syncing = null;
162
+ /** On-device storage policy for this origin; null where it cannot be read. */
163
+ storagePolicy = null;
164
+ pendingSave = null;
165
+ signIn;
166
+ typeIssues;
167
+ /** SDK-10: this tab's Private collections (page-side thin clients, never the Worker). */
168
+ privates = null;
169
+ overlaid = new WeakMap();
170
+ constructor(declaration, options = {}) {
171
+ this.declaration = applicationDeclaration(declaration);
172
+ this.compiled = compileApplicationManifest(this.declaration);
173
+ const typeIssues = options.readiness?.typeIssues ?? "block";
174
+ if (typeIssues !== "block" && typeIssues !== "degrade")
175
+ throw new TypeError('readiness.typeIssues must be "block" or "degrade"');
176
+ this.typeIssues = typeIssues;
177
+ this.signIn = signInOpener(options.signIn, this.declaration);
178
+ if (!browserHost(this.declaration.origin)) {
179
+ this.app = unavailableApplication();
180
+ return;
181
+ }
182
+ try {
183
+ const cp = this.environment().cpOrigin;
184
+ this.cpOrigin = cp;
185
+ this.hint = applicationSessionHint(this.declaration.storage.applicationNamespace, cp);
186
+ this.forgotten = applicationForgotten(this.declaration.storage.applicationNamespace, cp);
187
+ this.links = Object.freeze({ account: `${cp}/account`, manageAccess: `${cp}/account/applications` });
188
+ }
189
+ catch { /* no links where the environment is unknown */ }
190
+ if (options.followVisibility !== false)
191
+ this.followVisibility();
192
+ this.followPageLifecycle();
193
+ this.followFocus();
194
+ this.followStoragePolicy();
195
+ this.memory = selectionMemory(this.declaration.storage.applicationNamespace);
196
+ if (options.privateCollections !== false)
197
+ this.privates = new ApplicationPrivateCollections({ declaration: this.declaration, onChange: () => { this.revision++; this.notify(); } });
198
+ this.selection = new ApplicationCollectionSelection({ browser: new ApplicationBrowserSelection(this.declaration.origin, {}, browserApplicationSelectionPort()),
199
+ session: this.selectionSession(), memory: this.memory });
200
+ this.selection.subscribe(() => { this.unforgetApproved(); this.notify(false); });
201
+ const view = () => this.getSnapshot();
202
+ this.app = Object.freeze({ getSnapshot: view, subscribe: (listener) => { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; },
203
+ start: (options) => this.track(() => this.call(runtime => this.started(runtime, options)).catch(error => {
204
+ // Open in another tab is a wait, not a failure: the snapshot says so and
205
+ // this tab takes over by itself when the other one lets go.
206
+ const native = this.runtime?.getNativeSnapshot();
207
+ if (error?.code === "open_in_another_tab" && native?.status === "blocked" && native.problem === "open_in_another_tab")
208
+ return;
209
+ throw error;
210
+ })),
211
+ authorize: (options) => this.track(() => this.approve(undefined, options)),
212
+ approve: (id, options) => this.track(() => this.approve(id, options)),
213
+ reauthorize: (options) => this.track(() => {
214
+ const selection = this.choose(), snapshot = selection.getSnapshot();
215
+ const id = this.privates?.state()?.collectionId ?? snapshot.usable?.collectionId ?? snapshot.requested.collectionId;
216
+ return id ? this.approve(id, options) : selection.reauthorize(options);
217
+ }),
218
+ addPrivateCollection: (options) => this.track(() => this.approve(null, options)),
219
+ refreshCollectionList: (options) => this.track(() => Promise.all([this.call(runtime => runtime.queue(() => runtime.refreshCollections(options))), this.privates?.refresh(this.account()).catch(() => { })])),
220
+ requestAccess: (request, options) => this.requestAccess(request, options),
221
+ // The person switching collections: a pushed history entry, so Back
222
+ // returns to the previous one. SDK corrections replace the entry.
223
+ select: (id, options) => this.track(() => this.choose().select(id, { ...options, history: "push" })),
224
+ clearSelection: (options) => this.track(() => this.choose().select(null, options)),
225
+ chooseAnother: (options) => this.track(() => this.choose().chooseAnother(options)),
226
+ forget: (id, options) => this.track(async () => {
227
+ // SDK-3: hidden on this device for this account, across reloads; a later
228
+ // approval shows it again. Without a signed-in account, the session forgets it.
229
+ const selection = this.choose(), account = this.account();
230
+ if (this.privates?.has(id)) {
231
+ // A Private grant lives in this browser only: forgetting it drops it.
232
+ await this.privates.forget(id);
233
+ if (selection.getSnapshot().requested.collectionId === id)
234
+ await selection.select(null, options);
235
+ return;
236
+ }
237
+ if (account && this.forgotten) {
238
+ this.forgotten.add(account, id);
239
+ this.revision++;
240
+ if (selection.getSnapshot().requested.collectionId === id || (this.runtime?.getSnapshot() ?? this.snapshot).selectedCollectionId === id)
241
+ await selection.select(null, options);
242
+ this.notify(false);
243
+ return;
244
+ }
245
+ await this.call(runtime => runtime.queue(() => runtime.forget(id, options)));
246
+ if (selection.getSnapshot().requested.collectionId === id)
247
+ await selection.select(null, options);
248
+ }),
249
+ deleteCollection: (id, options) => this.track(async () => {
250
+ const selection = this.choose(), { confirmName, ...request } = options ?? {};
251
+ await this.call(runtime => runtime.queue(() => runtime.deleteCollection(id, confirmName, request)));
252
+ if (selection.getSnapshot().requested.collectionId === id)
253
+ await selection.select(null, request);
254
+ }),
255
+ assess: (options) => this.privates?.isOpen() ? this.privates.assess() : this.call(runtime => runtime.queue(() => runtime.assess(options))),
256
+ configure: (options) => this.track(() => this.privates?.isOpen() ? this.privates.configure(options) : this.call(runtime => runtime.queue(() => runtime.configure(options)))),
257
+ setup: Object.freeze({
258
+ plan: (options) => (this.privates?.isOpen() ? this.privates.plan(options) : this.call(runtime => runtime.queue(() => runtime.planSetup(options))))
259
+ .then(plan => unresolvedSetup(plan, this.getSnapshot().readiness)),
260
+ apply: (plan, options) => this.track(() => this.privates?.isOpen() ? this.privates.apply(plan, options) : this.call(runtime => runtime.queue(() => runtime.applySetup(plan, options)))),
261
+ }),
262
+ setForeground: (active) => this.setForeground(active), close: () => this.close(),
263
+ signOut: (options) => this.signOut(options) });
264
+ }
265
+ /** SDK-10: the session's snapshot with this tab's Private collections listed
266
+ * and, while one is open, as the selected collection. Stable per change. */
267
+ withPrivate(raw) {
268
+ const privates = this.privates;
269
+ if (!privates)
270
+ return raw;
271
+ const last = this.overlaid.get(raw);
272
+ if (last && last.revision === privates.revision)
273
+ return last.value;
274
+ const value = withPrivateCollections(raw, privates.entries(), privates.state());
275
+ this.overlaid.set(raw, { revision: privates.revision, value });
276
+ return value;
277
+ }
278
+ getSnapshot() {
279
+ const raw = this.withPrivate(this.runtime?.getSnapshot() ?? this.snapshot), selection = this.selection?.getSnapshot() ?? noSelection, last = this.composed;
280
+ // While starting, and in a second tab, show the last paired session from this browser (P4).
281
+ const hint = raw.signIn === null && (raw.status === "starting" || (raw.status === "blocked" && raw.problem === "open_in_another_tab")) ? this.hint?.read() ?? null : null;
282
+ if (last && last.base === raw && last.selection === selection && last.revision === this.revision && last.hint === hint)
283
+ return last.value;
284
+ const shown = hint ? Object.freeze({ ...raw, signIn: hint.signIn, collections: hint.collections }) : raw;
285
+ // SDK-3: hide forgotten collections (an explicitly opened one stays listed).
286
+ const hidden = this.forgotten?.read(shown.signIn?.accountId) ?? null;
287
+ const base = hidden?.size && shown.collections.some(c => hidden.has(c.collectionId) && c.collectionId !== shown.selectedCollectionId)
288
+ ? Object.freeze({ ...shown, collections: Object.freeze(shown.collections.filter(c => !hidden.has(c.collectionId) || c.collectionId === shown.selectedCollectionId)) }) : shown;
289
+ const id = base.selectedCollectionId, connection = id && !this.closed ? this.privates?.connection(id) ?? this.runtime?.connection(id) ?? null : null;
290
+ let phase = applicationPhase({ ...base, selection }, { connection, previous: last?.value.phase ?? null, ...(this.cpOrigin ? { cpOrigin: this.cpOrigin } : {}) });
291
+ phase = this.trackOpening(phase);
292
+ const sync = this.trackSync(phase, base.problem, base.transport ?? null, base.live ?? null);
293
+ const writes = this.syncing?.writes() ?? null;
294
+ const saveWarning = this.trackSaveWarning();
295
+ const value = Object.freeze({ ...base, selection, phase, sync, writes, storage: this.storagePolicy, saveWarning, links: this.links });
296
+ this.composed = { base: raw, selection, revision: this.revision, hint, value };
297
+ return value;
298
+ }
299
+ /** One grace window per continuously pending replica, not per edit or request. */
300
+ trackSaveWarning() {
301
+ const syncing = this.syncing, status = syncing?.status, count = status?.pending ?? 0;
302
+ if (this.pendingSave && (this.closed || this.hidden || !count || this.pendingSave.id !== syncing?.id))
303
+ this.clearPendingSave();
304
+ if (this.closed || this.hidden || !syncing || !status || !count)
305
+ return null;
306
+ if (!this.pendingSave) {
307
+ const pending = { id: syncing.id, since: performance.now(), timer: null };
308
+ pending.timer = setTimeout(() => { if (this.pendingSave !== pending)
309
+ return; pending.timer = null; this.revision++; this.notify(false); }, 30_000);
310
+ this.pendingSave = pending;
311
+ }
312
+ return appSaveState(count, this.storagePolicy ?? { persistent: false, installed: false }, { pendingForMs: performance.now() - this.pendingSave.since, connection: status.connection }).warning;
313
+ }
314
+ clearPendingSave() {
315
+ if (this.pendingSave?.timer !== null && this.pendingSave?.timer !== undefined)
316
+ clearTimeout(this.pendingSave.timer);
317
+ this.pendingSave = null;
318
+ }
319
+ /** SDK-9: one timer per opening collection; `slow` after SLOW_OPENING_MS. */
320
+ trackOpening(phase) {
321
+ const id = phase.kind === "opening" ? phase.collectionId : null;
322
+ if (this.opening && this.opening.id !== id) {
323
+ clearTimeout(this.opening.timer);
324
+ this.opening = null;
325
+ }
326
+ if (id === null || this.closed)
327
+ return phase;
328
+ if (!this.opening) {
329
+ const opening = { id, slow: false, timer: setTimeout(() => { if (this.opening !== opening)
330
+ return; opening.slow = true; this.revision++; this.notify(false); }, SLOW_OPENING_MS) };
331
+ this.opening = opening;
332
+ }
333
+ return phase.kind === "opening" && this.opening.slow ? { ...phase, slow: true } : phase;
334
+ }
335
+ /** Follow the open collection's sync status while it is ready. */
336
+ trackSync(phase, problem, transport, live) {
337
+ const id = phase.kind === "ready" ? phase.collectionId : null;
338
+ if (this.syncing && this.syncing.id !== id) {
339
+ try {
340
+ this.syncing.stop();
341
+ }
342
+ catch { /* observer only */ }
343
+ this.syncing = null;
344
+ }
345
+ if (phase.kind !== "ready" || this.closed)
346
+ return null;
347
+ if (!this.syncing) {
348
+ const records = phase.connection.records;
349
+ let status = null;
350
+ try {
351
+ status = records.status;
352
+ }
353
+ catch { /* not yet known */ }
354
+ const syncing = { id: phase.collectionId, stop: () => { }, status, writes: () => null };
355
+ const changed = () => { if (this.syncing !== syncing)
356
+ return; this.revision++; this.getSnapshot(); this.notify(false); };
357
+ let offStatus = () => { }, offWrites = () => { };
358
+ try {
359
+ offStatus = records.onStatus(next => { syncing.status = next; changed(); });
360
+ }
361
+ catch { /* status stays as read */ }
362
+ try {
363
+ const ledger = records.ledger;
364
+ offWrites = ledger.subscribe(changed);
365
+ syncing.writes = () => { try {
366
+ return ledger.getSnapshot();
367
+ }
368
+ catch {
369
+ return null;
370
+ } };
371
+ }
372
+ catch { /* no ledger */ }
373
+ syncing.stop = () => { offStatus(); offWrites(); };
374
+ this.syncing = syncing;
375
+ }
376
+ // A transport that cannot deliver writes makes pending ones "saved on this device".
377
+ try {
378
+ phase.connection.records.setTransportDeferred(transport !== null);
379
+ }
380
+ catch { /* observer only */ }
381
+ return this.syncing.status ? summarizeStatus(this.syncing.status, problem, transport, live) : null;
382
+ }
383
+ nativeAuthorization(call, portal, signal) {
384
+ if (!this.privates || this.closed || this.hidden)
385
+ return Promise.reject(mdbaseError("unavailable", "Native authorization unavailable"));
386
+ return this.privates.nativeAuthorization(call, portal, AbortSignal.any([signal, this.lifetime.signal]));
387
+ }
388
+ account() { return (this.runtime?.getSnapshot() ?? this.snapshot).signIn?.accountId ?? null; }
389
+ /** SDK-3: approving a forgotten collection again shows it again. */
390
+ unforgetApproved() {
391
+ const last = this.selection?.getSnapshot().lastApproval ?? null, account = this.account();
392
+ if (!last || last === this.handledApproval)
393
+ return;
394
+ this.handledApproval = last;
395
+ if (account && last.collectionId && (last.outcome === "added" || last.outcome === "unchanged") && this.forgotten?.remove(account, last.collectionId))
396
+ this.revision++;
397
+ }
398
+ /** SDK-2: re-read the approved list when the app is shown or focused again
399
+ * (an approval in Connect, another app or another device). No polling. */
400
+ followFocus() {
401
+ const win = typeof window === "undefined" ? undefined : window, doc = globalThis.document;
402
+ if (!win || typeof win.addEventListener !== "function")
403
+ return;
404
+ const refresh = () => { if (doc?.visibilityState !== "hidden")
405
+ this.refreshCollections(); };
406
+ win.addEventListener("focus", refresh, { signal: this.lifetime.signal });
407
+ if (doc && typeof doc.addEventListener === "function")
408
+ doc.addEventListener("visibilitychange", refresh, { signal: this.lifetime.signal });
409
+ }
410
+ refreshCollections() {
411
+ const runtime = this.runtime, now = Date.now();
412
+ // focus and visibilitychange arrive together: one read.
413
+ if (!runtime || this.closed || this.hidden || this.refreshing || now - this.refreshedAt < 2_000)
414
+ return;
415
+ const s = runtime.getNativeSnapshot();
416
+ if (s.signIn?.state !== "paired" || (s.status !== "unselected" && s.status !== "ready" && s.status !== "setup_required"))
417
+ return;
418
+ this.refreshedAt = now;
419
+ void this.privates?.refresh(s.signIn.accountId).catch(() => { });
420
+ this.refreshing = runtime.queue(() => runtime.refreshCollections()).catch(() => { }).finally(() => { this.refreshing = null; });
421
+ }
422
+ /** Request persistence once at app start, then re-read the policy when the
423
+ * page is shown again. A denial never blocks startup. Where the browser cannot
424
+ * say — no `navigator.storage`, no document — the policy stays null and the
425
+ * save warning assumes the conservative non-persistent state. */
426
+ followStoragePolicy() {
427
+ const storage = globalThis.navigator?.storage;
428
+ if (!storage || typeof storage.persisted !== "function")
429
+ return;
430
+ const installed = () => { try {
431
+ return globalThis.matchMedia?.("(display-mode: standalone)").matches === true || globalThis.navigator?.standalone === true;
432
+ }
433
+ catch {
434
+ return false;
435
+ } };
436
+ const refresh = (requestPersistence = false) => {
437
+ if (this.closed)
438
+ return;
439
+ void appStoragePolicy(storage, installed(), requestPersistence).then(policy => {
440
+ if (this.closed || (this.storagePolicy?.persistent === policy.persistent && this.storagePolicy?.installed === policy.installed))
441
+ return;
442
+ this.storagePolicy = policy;
443
+ this.revision++;
444
+ this.notify(false);
445
+ }).catch(() => { });
446
+ };
447
+ const doc = globalThis.document;
448
+ if (doc && typeof doc.addEventListener === "function")
449
+ doc.addEventListener("visibilitychange", () => { if (doc.visibilityState !== "hidden")
450
+ refresh(); }, { signal: this.lifetime.signal });
451
+ refresh(true);
452
+ }
453
+ notify(native = true) {
454
+ // SDK-10: read this browser's Private collections once per signed-in account.
455
+ const s = this.runtime?.getSnapshot();
456
+ const account = s?.signIn?.state === "paired" ? s.signIn.accountId : null;
457
+ if (account && !this.closed && !this.hidden) {
458
+ this.privates?.bind(account, s?.signIn?.nativeGrants ?? []);
459
+ this.privates?.ensure(account);
460
+ }
461
+ if (native)
462
+ for (const listener of [...this.nativeListeners])
463
+ try {
464
+ listener();
465
+ }
466
+ catch { /* selection observes, never owns lifecycle */ }
467
+ for (const listener of [...this.listeners])
468
+ try {
469
+ listener();
470
+ }
471
+ catch { /* UI observers cannot own initialization */ }
472
+ }
473
+ /** Selection starts with the first action: it reads the URL request and
474
+ * follows Back/forward. Explicit actions still call the session themselves. */
475
+ choose() { this.check(); const selection = this.selection; selection.start(); return selection; }
476
+ async track(action) { await action(); return this.getSnapshot(); }
477
+ /** SDK-private port over the ONE runtime. Retire-before-switch and the
478
+ * same-scope fast path live in runtime.select; the popup is reserved here
479
+ * synchronously, before lazy registration/Worker startup awaits. */
480
+ selectionSession() {
481
+ return Object.freeze({
482
+ getSnapshot: () => this.withPrivate(this.runtime?.getNativeSnapshot() ?? this.snapshot),
483
+ subscribe: (listener) => { this.nativeListeners.add(listener); return () => { this.nativeListeners.delete(listener); }; },
484
+ open: (id, options = {}) => this.call(async (runtime) => {
485
+ const privates = this.privates, hosted = runtime.getNativeSnapshot().collections.some(c => c.collectionId === id);
486
+ if (!privates || hosted || !privates.has(id)) {
487
+ privates?.close();
488
+ return runtime.queue(() => runtime.select(id, options));
489
+ }
490
+ // A Private collection opens in this page: leave the hosted one first.
491
+ if (runtime.getNativeSnapshot().selectedCollectionId !== null)
492
+ await runtime.queue(() => runtime.clearSelection(options));
493
+ const account = runtime.getNativeSnapshot().signIn?.accountId, installation = runtime.getNativeSnapshot().signIn?.installationId;
494
+ if (!account || !installation)
495
+ throw mdbaseError("unauthenticated", "Sign in before opening a collection");
496
+ // Waiting for the person's computer can take minutes: the snapshot shows
497
+ // it, and a later selection replaces it, so the selection does not wait.
498
+ void privates.openCollection(id, { account, installation }).catch(() => { });
499
+ }),
500
+ clear: (options = {}) => { this.privates?.close(); return this.call(runtime => runtime.queue(() => runtime.clearSelection(options))); },
501
+ authorize: (options = {}) => this.authorize(options, options.collectionHint ?? null),
502
+ // SDK-10: a URL naming a Private collection waits for this browser's grant list.
503
+ listing: () => this.privates?.listing(this.account()) ?? false,
504
+ });
505
+ }
506
+ check() { if (this.closed || this.hidden || this.lifetime.signal.aborted)
507
+ throw mdbaseError("cancelled", "Application entry fenced", "application_entry_fenced"); }
508
+ environment() { return selectAppEnvironment({ environment: this.declaration.environment, appOrigin: this.declaration.origin, platform: this.declaration.manifest.platform === "native" ? "native" : undefined, release: appReleaseTrust() }); }
509
+ initialize() {
510
+ if (this.initialization)
511
+ return this.initialization;
512
+ const incarnation = this.incarnation;
513
+ const pending = Promise.resolve().then(async () => {
514
+ this.check();
515
+ // Classic IIFE/relocated/foreign factories are unsupported. No DOM,
516
+ // currentScript, guessed CDN/path or application-supplied loader fallback.
517
+ if (typeof import.meta.url !== "string")
518
+ throw unavailable();
519
+ const moduleUrl = new URL(import.meta.url);
520
+ if (urlOrigin(moduleUrl) !== this.declaration.origin || currentAppOrigin() !== this.declaration.origin)
521
+ throw mdbaseError("unavailable", "Application module binding unavailable", "application_worker_module_binding");
522
+ const environment = this.environment();
523
+ packagedApplicationAssets(this.declaration.environment, this.declaration.origin, this.declaration.manifest.platform === "native" ? "native" : undefined);
524
+ // A browser below the SDK's feature floor fails here, once, with a typed
525
+ // problem — before any registration, Worker, key or storage allocation.
526
+ const capabilities = await probeBrowserCapabilities();
527
+ this.check();
528
+ if (!capabilities.ok)
529
+ throw mdbaseError("unavailable", "This browser can't run mdbase", { reason: capabilities.problem, details: new Map([["missing", capabilities.missing.join(",")]]) });
530
+ // Registration resolves BEFORE any Worker, key, profile or DB allocation.
531
+ const registered = await resolveApplicationRegistration({ declaration: this.declaration, signal: this.lifetime.signal, isCurrent: () => !this.closed });
532
+ this.check();
533
+ // UI runtime/collection setup is only needed when activating a session.
534
+ const { ApplicationRuntime } = await import("./runtime.js");
535
+ this.check();
536
+ // A pagehide during registration or loading superseded this start: no Worker for it.
537
+ if (incarnation !== this.incarnation)
538
+ throw mdbaseError("cancelled", "Application entry fenced", "application_entry_fenced");
539
+ const declaration = rebindApplicationDeclaration(this.declaration, registered);
540
+ if (registered.supersededDeclaredId)
541
+ console.info(`mdbase: ${describeDiagnostic("application_registration_id_superseded")}`);
542
+ const storageNamespace = applicationStorageNamespace(this.declaration);
543
+ const signInScope = Object.freeze({ cpOrigin: environment.cpOrigin, appId: declaration.id, ...(storageNamespace === null ? {} : { storageNamespace }) });
544
+ const install = (runtime) => {
545
+ this.runtime = runtime;
546
+ runtime.subscribe(() => { this.hint?.observe(runtime.getNativeSnapshot()); this.observeSignOut(runtime); if (runtime.getNativeSnapshot().signIn?.state === "paired")
547
+ this.tabs?.signedIn(); this.notify(); this.awaitOtherTab(runtime, signInScope); });
548
+ runtime.setForeground(this.foreground);
549
+ this.notify();
550
+ return runtime;
551
+ };
552
+ // One session per app per browser: lead (run the Worker) or join the leader.
553
+ const tabs = this.tabsFor(signInScope), election = new AbortController();
554
+ this.election?.abort();
555
+ this.election = election;
556
+ const role = tabs ? await tabs.elect(AbortSignal.any([this.lifetime.signal, election.signal])) : { kind: "leader" };
557
+ if (this.closed || this.hidden || incarnation !== this.incarnation || election.signal.aborted) {
558
+ if (role.kind === "follower")
559
+ role.leave();
560
+ else
561
+ tabs?.resign();
562
+ throw mdbaseError("cancelled", "Application entry fenced", "application_entry_fenced");
563
+ }
564
+ if (role.kind === "follower")
565
+ return install(new ApplicationRuntime({ declaration, compiledManifest: this.compiled, typeIssues: this.typeIssues, cpOrigin: environment.cpOrigin, port: role.port, binding: role.binding, releaseWorker: () => role.leave(), nativeAuthorization: (call, portal, signal) => this.nativeAuthorization(call, portal, signal) }));
566
+ const channel = new MessageChannel(), binding = crypto.randomUUID();
567
+ let worker;
568
+ // Literal module-relative form so app bundlers emit the SDK Worker chunk.
569
+ try {
570
+ worker = new Worker(new URL("./worker.js", import.meta.url), { type: "module" });
571
+ }
572
+ catch {
573
+ tabs?.resign();
574
+ channel.port1.close();
575
+ channel.port2.close();
576
+ throw mdbaseError("unavailable", "Application Worker construction unavailable", "application_worker_unavailable");
577
+ }
578
+ const failed = (event) => { event.preventDefault(); channel.port1.dispatchEvent(new MessageEvent("messageerror")); tabs?.fault(); };
579
+ worker.addEventListener("error", failed);
580
+ const runtime = new ApplicationRuntime({ declaration, compiledManifest: this.compiled, typeIssues: this.typeIssues, cpOrigin: environment.cpOrigin, port: channel.port1, binding, releaseWorker: () => { worker.removeEventListener("error", failed); worker.terminate(); tabs?.resign(); }, nativeAuthorization: (call, portal, signal) => this.nativeAuthorization(call, portal, signal) });
581
+ try {
582
+ worker.postMessage([APPLICATION_WORKER_PROTOCOL, binding, declaration, ...(storageNamespace === null ? [] : [storageNamespace])], [channel.port2]);
583
+ }
584
+ catch {
585
+ // No startup request was accepted; the original bootstrap transfer failed.
586
+ worker.removeEventListener("error", failed);
587
+ worker.terminate();
588
+ tabs?.resign();
589
+ channel.port1.close();
590
+ channel.port2.close();
591
+ throw mdbaseError("unavailable", "Application bootstrap unavailable", "application_worker_binding");
592
+ }
593
+ // Other tabs of this app attach to this Worker through this page.
594
+ tabs?.lead({ attach: (port, id) => worker.postMessage([APPLICATION_WORKER_PROTOCOL, binding, "attach", id], [port]), detach: id => worker.postMessage([APPLICATION_WORKER_PROTOCOL, binding, "detach", id]) });
595
+ return install(runtime);
596
+ }).catch(error => {
597
+ // Nothing native was allocated (no runtime installed), so a later explicit
598
+ // action may retry; registration itself retries only its exact upsert.
599
+ const current = this.initialization === pending;
600
+ if (current)
601
+ this.initialization = null;
602
+ if (!this.closed && current) {
603
+ const { problemDetail: _stale, ...previous } = this.snapshot;
604
+ // A registration refusal keeps only its re-validated code and manifest paths.
605
+ const refusal = error instanceof MdbaseError && error.reason === "application_registration_refused" ? registrationRefusal(error.details) : null;
606
+ this.snapshot = Object.freeze({ ...previous, status: "blocked", problem: typeof error?.reason === "string" ? error.reason : typeof error?.code === "string" ? error.code : "application_entry_unavailable",
607
+ ...(refusal ? { problemDetail: Object.freeze({ name: "MdbaseError", code: error.code, registration: refusal }) } : {}) });
608
+ this.notify();
609
+ }
610
+ throw error;
611
+ });
612
+ this.initialization = pending;
613
+ {
614
+ const { problemDetail: _stale, signOutResult: _done, ...previous } = this.snapshot;
615
+ this.snapshot = Object.freeze({ ...previous, status: "starting", problem: null });
616
+ }
617
+ this.notify();
618
+ return pending;
619
+ }
620
+ async call(action) { this.check(); const runtime = await this.initialize(); this.check(); return action(runtime); }
621
+ /** Sign-in start is idempotent in the native session; every lifecycle action
622
+ * that needs the protected request runs it first. */
623
+ started(runtime, options) {
624
+ this.choose();
625
+ const status = runtime.getNativeSnapshot().status;
626
+ return status === "not_started" || status === "starting" || (status === "blocked" && !runtime.getNativeSnapshot().signIn) ? runtime.queue(() => runtime.start(options)) : Promise.resolve();
627
+ }
628
+ /** Reserve the SDK popup synchronously in the user gesture, before any await. */
629
+ reservePortal(options) {
630
+ this.check();
631
+ const environment = this.environment(), signal = options.signal ? AbortSignal.any([this.lifetime.signal, options.signal]) : this.lifetime.signal;
632
+ const lab = applicationLoopbackAllowed(this.declaration.environment), current = () => !this.closed;
633
+ const host = this.signIn ? openerApplicationPortalHost(environment.cpOrigin, signal, current, this.signIn, lab) : browserApplicationPortalHost(environment.cpOrigin, signal, current, lab);
634
+ return { portal: reserveApplicationPortal(host), signal };
635
+ }
636
+ requestAccess(request, options) {
637
+ try {
638
+ this.check();
639
+ const runtime = this.runtime, native = runtime?.getNativeSnapshot(), id = native?.selectedCollectionId ?? null;
640
+ const declaration = fileAccessDeclaration(this.compiled), consented = () => id && runtime ? consentedFileActions(runtime.getNativeSnapshot(), id) : [];
641
+ const missing = missingFileActions(declaration, request, options, consented());
642
+ const connection = id ? runtime.connection(id) : null;
643
+ if (!runtime || !id || !connection)
644
+ throw mdbaseError("invalid_request", "requestAccess needs an open collection", "access_no_collection");
645
+ const granted = () => grantedResult(connection.files, declaration, consented());
646
+ if (!missing.length)
647
+ return Promise.resolve(granted());
648
+ const { portal, signal } = this.reservePortal(options);
649
+ return awaitFileAccess({ granted, native: () => runtime.getNativeSnapshot(),
650
+ start: () => runtime.queue(() => runtime.requestFileAccess(portal, id, missing, options.reason, { signal })),
651
+ poll: requestId => runtime.queue(() => runtime.pollFileAccess(requestId)) }, portal, signal);
652
+ }
653
+ catch (error) {
654
+ return Promise.reject(error);
655
+ }
656
+ }
657
+ /** Repeating the SAME approval is a window gesture, not another Worker
658
+ * request (which would close the original portal before reporting busy). */
659
+ approve(id, options = {}) {
660
+ const selection = this.choose(), snapshot = selection.getSnapshot(), portal = this.approvalPortal;
661
+ if (portal && snapshot.approval) {
662
+ if ((id === undefined ? snapshot.requested.collectionId : id) !== snapshot.approval.collectionId)
663
+ return Promise.reject(new ApplicationSelectionError("application_selection_busy"));
664
+ if (options.signal?.aborted)
665
+ throw mdbaseError("cancelled", "Application entry fenced", "application_entry_fenced");
666
+ // A closed window is not a cancellation receipt. The original Worker
667
+ // observes closure, reads its receipt and ends approval before any restart.
668
+ if (!portal.closed)
669
+ portal.focus();
670
+ return Promise.resolve();
671
+ }
672
+ return selection.approve(id, options);
673
+ }
674
+ authorize(options = {}, collectionHint = null) {
675
+ let portal;
676
+ try {
677
+ portal = this.approvalPortal = this.reservePortal(options).portal;
678
+ }
679
+ catch (error) {
680
+ return Promise.reject(error);
681
+ }
682
+ return this.call(async (runtime) => { await this.started(runtime, options); return runtime.queue(() => runtime.authorizeReserved(portal, options, collectionHint)); })
683
+ .catch(error => { try {
684
+ portal.close();
685
+ }
686
+ catch { /* original stop failure retained by the portal */ } throw error; });
687
+ }
688
+ /** UX-011. The Worker session signs out and erases; then this entry drops
689
+ * that runtime the way the back/forward-cache path does (incarnation, no
690
+ * initialization), so the next action starts a fresh Worker and a fresh
691
+ * pairing, and clears its own page storage (session hint, last collection,
692
+ * forgotten collections). */
693
+ async signOut(options = {}) {
694
+ const runtime = await this.call(async (runtime) => { await this.started(runtime, options); return runtime; });
695
+ this.signingOut = true;
696
+ try {
697
+ await runtime.queue(() => runtime.signOut(options));
698
+ }
699
+ finally {
700
+ this.signingOut = false;
701
+ }
702
+ const result = runtime.getNativeSnapshot().signOutResult ?? null;
703
+ await this.signedOut(runtime, result);
704
+ const final = this.snapshot.signOutResult ?? result;
705
+ if (final)
706
+ await signOutDiagnostics(final);
707
+ return this.getSnapshot();
708
+ }
709
+ /** Drop the signed-out runtime the way the back/forward-cache path does
710
+ * (incarnation, no initialization), so the next action starts afresh, and
711
+ * clear this page's storage (session hint, last and forgotten collections). */
712
+ async signedOut(runtime, result, leaderGone = false) {
713
+ // Leading tab: followers learn it was a sign-out, not a handover.
714
+ if (!leaderGone)
715
+ this.tabs?.signedOut();
716
+ this.clearPendingSave();
717
+ ++this.incarnation;
718
+ if (this.runtime === runtime)
719
+ this.runtime = null;
720
+ this.initialization = null;
721
+ this.hint?.clear();
722
+ this.forgotten?.clear();
723
+ this.handledApproval = null;
724
+ // SDK-10: this browser's Private grants belong to the signed-out account
725
+ // too. The session is already gone, so a failed wipe never blocks
726
+ // sign-out — but it is never silent either: it lands in signOutResult
727
+ // (`grants`/`local: incomplete`), or as problem when there is no result.
728
+ let grants = null;
729
+ if (this.privates) {
730
+ try {
731
+ await this.privates.forgetAll();
732
+ grants = "erased";
733
+ }
734
+ catch {
735
+ grants = "incomplete";
736
+ }
737
+ }
738
+ const final = result && grants ? Object.freeze({ ...result, grants, ...(grants === "incomplete" ? { local: "incomplete" } : {}) }) : result;
739
+ this.snapshot = Object.freeze({ status: "signed_out", signIn: null, collections: Object.freeze([]), selectedCollectionId: null, problem: !final && grants === "incomplete" ? "sign_out_failed" : null, timing: null, readiness: emptyReadiness, ...(final ? { signOutResult: final } : {}) });
740
+ try {
741
+ this.memory?.write(null);
742
+ }
743
+ catch { /* optional hint storage */ }
744
+ if (this.selection && !this.closed) {
745
+ this.selection.resync();
746
+ await this.selection.select(null, { history: "replace" }).catch(() => { });
747
+ }
748
+ this.revision++;
749
+ this.notify();
750
+ // The leader's Worker is gone with its session: nothing to acknowledge.
751
+ if (leaderGone) {
752
+ runtime.abandon();
753
+ return;
754
+ }
755
+ // The session already closed everything; this is the Worker's terminal ACK.
756
+ await runtime.close().catch(() => { });
757
+ }
758
+ /** Another tab signed out of the one shared session: this tab is signed out too. */
759
+ observeSignOut(runtime) {
760
+ const result = runtime.getNativeSnapshot().signOutResult;
761
+ if (!result || this.signingOut || this.closed || this.runtime !== runtime)
762
+ return;
763
+ void this.signedOut(runtime, result);
764
+ }
765
+ tabsFor(scope) {
766
+ if (this.tabs)
767
+ return this.tabs;
768
+ const locks = globalThis.navigator?.locks, Channel = globalThis.BroadcastChannel;
769
+ if (!locks || typeof locks.request !== "function" || typeof Channel !== "function")
770
+ return null;
771
+ // The SDK module URL is per build: tabs on different builds never share a Worker.
772
+ this.tabs = new ApplicationTabs({ ...scope, build: import.meta.url }, { locks, BroadcastChannel: Channel }, this.leaderLost, this.signedInElsewhere);
773
+ return this.tabs;
774
+ }
775
+ /** The leader tab went away: start again, as the new leader or a follower of it.
776
+ * If it went because the session signed out, this tab is signed out too: it
777
+ * neither leads nor starts a new session (its snapshot may not have arrived). */
778
+ leaderLost = (signedOut) => {
779
+ if (this.closed || this.hidden)
780
+ return;
781
+ const runtime = this.runtime, active = runtime !== null || this.initialization !== null;
782
+ this.election?.abort();
783
+ this.election = null;
784
+ if (signedOut && runtime && !this.signingOut)
785
+ void this.signedOut(runtime, runtime.getNativeSnapshot().signOutResult ?? null, true);
786
+ else if (signedOut && active) {
787
+ ++this.incarnation;
788
+ this.initialization = null;
789
+ }
790
+ // Nothing to run here (signed out, or never started): let another tab lead.
791
+ if (!active || signedOut) {
792
+ this.tabs?.resign();
793
+ return;
794
+ }
795
+ ++this.incarnation;
796
+ this.initialization = null;
797
+ this.runtime = null;
798
+ runtime?.abandon();
799
+ const { problemDetail: _stale, ...previous } = this.snapshot;
800
+ this.snapshot = Object.freeze({ ...previous, status: "starting", problem: null, selectedCollectionId: null, readiness: emptyReadiness });
801
+ this.notify();
802
+ this.selection?.resync();
803
+ void this.app.start().catch(() => { });
804
+ };
805
+ /** Every tab signed out, then another tab signed in again: follow that
806
+ * session as this tab would on load (no second sign-in or approval). */
807
+ signedInElsewhere = () => {
808
+ if (this.closed || this.hidden || this.signingOut || this.runtime !== null || this.initialization !== null || this.snapshot.status !== "signed_out")
809
+ return;
810
+ this.selection?.resync();
811
+ void this.app.start().catch(() => { });
812
+ };
813
+ setForeground(active) { this.foreground = active; this.runtime?.setForeground(active); }
814
+ followVisibility() {
815
+ const doc = globalThis.document;
816
+ if (!doc || typeof doc.addEventListener !== "function")
817
+ return;
818
+ // Not through this.app: this runs from the constructor, before it exists.
819
+ const sync = () => { if (!this.closed)
820
+ this.setForeground(doc.visibilityState !== "hidden"); };
821
+ const wake = () => { if (doc.visibilityState !== "hidden")
822
+ sync(); };
823
+ doc.addEventListener("visibilitychange", sync, { signal: this.lifetime.signal });
824
+ const win = typeof window === "undefined" ? undefined : window;
825
+ if (win && typeof win.addEventListener === "function") {
826
+ win.addEventListener("focus", wake, { signal: this.lifetime.signal });
827
+ win.addEventListener("online", wake, { signal: this.lifetime.signal });
828
+ }
829
+ sync();
830
+ }
831
+ /** Back/forward cache: a page parked there is frozen with its Worker, which
832
+ * would keep holding the collection lease and block the next document of
833
+ * this app ("busy"). On pagehide, stop the Worker synchronously (a frozen
834
+ * page cannot finish an async stop); on a persisted pageshow, start a fresh
835
+ * one so the restored page works again. A non-persisted pagehide (unload)
836
+ * stops it the same way: the page is going anyway, and the lease is free at
837
+ * once for the document that replaces it. Browser Window contexts only. */
838
+ followPageLifecycle() {
839
+ const win = typeof window === "undefined" ? undefined : window;
840
+ if (!win || typeof win.addEventListener !== "function")
841
+ return;
842
+ win.addEventListener("pagehide", this.pageHidden, { signal: this.lifetime.signal });
843
+ win.addEventListener("pageshow", this.pageShown, { signal: this.lifetime.signal });
844
+ // A frozen page (a background tab the browser froze) runs no script, so it
845
+ // can serve no other tab: stop like a parked page, start again on resume.
846
+ const doc = globalThis.document;
847
+ if (doc && typeof doc.addEventListener === "function") {
848
+ doc.addEventListener("freeze", () => this.pageHidden(), { signal: this.lifetime.signal });
849
+ doc.addEventListener("resume", () => this.pageShown({ persisted: true }), { signal: this.lifetime.signal });
850
+ }
851
+ }
852
+ pageHidden = () => {
853
+ if (this.closed || this.hidden)
854
+ return;
855
+ const runtime = this.runtime, resume = runtime !== null || this.initialization !== null;
856
+ ++this.incarnation;
857
+ this.hidden = Object.freeze({ resume });
858
+ this.clearPendingSave();
859
+ // A start still registering is superseded (incarnation); an installed one stops now.
860
+ this.initialization = null;
861
+ this.runtime = null;
862
+ this.election?.abort();
863
+ this.election = null;
864
+ runtime?.abandon();
865
+ // Leadership and presence go now; other tabs carry on without this one.
866
+ this.tabs?.release();
867
+ const { problemDetail: _stale, ...previous } = this.snapshot;
868
+ this.snapshot = Object.freeze({ ...previous, status: resume ? "starting" : this.snapshot.status, problem: null, selectedCollectionId: null, readiness: emptyReadiness });
869
+ };
870
+ pageShown = (event) => {
871
+ const hidden = this.hidden;
872
+ if (this.closed || !hidden || !event.persisted)
873
+ return;
874
+ this.hidden = null;
875
+ this.notify();
876
+ if (!hidden.resume)
877
+ return;
878
+ // Same path as the app's first start: fresh registration check, Worker and
879
+ // session; selection then reopens the requested collection.
880
+ this.selection?.resync();
881
+ void this.app.start().catch(() => { });
882
+ };
883
+ /** Fallback when tabs cannot share one Worker: another tab of this app on a
884
+ * different build (or one still letting go during a leader handover) holds the
885
+ * sign-in slot. Wait for it to be released (that tab closes, reloads or is
886
+ * parked in the back/forward cache), then start again by the bfcache-restore
887
+ * path. A hidden tab waits until it is shown, so it never takes over from a
888
+ * tab the user is reloading. Only Web Lock waits: no timers, no network. */
889
+ awaitingOtherTab = false;
890
+ awaitOtherTab(runtime, scope) {
891
+ const native = runtime.getNativeSnapshot(), locks = globalThis.navigator?.locks;
892
+ if (this.awaitingOtherTab || this.closed || native.status !== "blocked" || native.problem !== "open_in_another_tab" || !locks)
893
+ return;
894
+ this.awaitingOtherTab = true;
895
+ const incarnation = this.incarnation, signal = this.lifetime.signal;
896
+ const current = () => !this.closed && !this.hidden && incarnation === this.incarnation && this.runtime === runtime;
897
+ void waitForAppSignInRelease(locks, scope, signal).then(() => whenVisible(signal)).then(() => {
898
+ this.awaitingOtherTab = false;
899
+ if (!current())
900
+ return;
901
+ this.selection?.resync();
902
+ void this.app.start().catch(() => { });
903
+ }, () => { this.awaitingOtherTab = false; });
904
+ }
905
+ close() {
906
+ if (this.closing)
907
+ return this.closing;
908
+ this.closed = true;
909
+ this.lifetime.abort();
910
+ this.selection?.close();
911
+ this.election?.abort();
912
+ this.privates?.dispose();
913
+ if (this.opening) {
914
+ clearTimeout(this.opening.timer);
915
+ this.opening = null;
916
+ }
917
+ this.clearPendingSave();
918
+ if (this.syncing) {
919
+ try {
920
+ this.syncing.stop();
921
+ }
922
+ catch { /* observer only */ }
923
+ this.syncing = null;
924
+ }
925
+ this.closing = Promise.resolve().then(async () => {
926
+ // A registration/asset failure allocated no native resources; an installed
927
+ // runtime always requires its original terminal ACK and UI/helper drains.
928
+ await this.initialization?.catch(() => { });
929
+ await this.runtime?.close();
930
+ this.tabs?.release();
931
+ {
932
+ const { problemDetail: _stale, ...previous } = this.snapshot;
933
+ this.snapshot = Object.freeze({ ...previous, status: "closed", problem: null, selectedCollectionId: null });
934
+ }
935
+ this.runtime = null;
936
+ this.notify();
937
+ this.listeners.clear();
938
+ this.nativeListeners.clear();
939
+ });
940
+ return this.closing;
941
+ }
942
+ application() { return this.app; }
943
+ connection(collectionId) { return this.closed ? null : this.privates?.connection(collectionId) ?? this.runtime?.connection(collectionId) ?? null; }
944
+ }
945
+ //# sourceMappingURL=entry.js.map