@agentshouse/mdruntime 0.1.0-cec6690d5712e → 0.1.0-cedd665dffa4c

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 (392) hide show
  1. package/README.md +24 -19
  2. package/dist/acceptance.d.ts +3 -0
  3. package/dist/acceptance.d.ts.map +1 -0
  4. package/dist/acceptance.js +299 -0
  5. package/dist/act-lanes.d.ts +30 -0
  6. package/dist/act-lanes.d.ts.map +1 -0
  7. package/dist/act-lanes.js +225 -0
  8. package/dist/actions.d.ts +26 -0
  9. package/dist/actions.d.ts.map +1 -0
  10. package/dist/actions.js +302 -0
  11. package/dist/adapter.d.ts +207 -94
  12. package/dist/adapter.d.ts.map +1 -1
  13. package/dist/attached-model.d.ts +6 -10
  14. package/dist/attached-model.d.ts.map +1 -1
  15. package/dist/attached-model.js +35 -41
  16. package/dist/binary.d.ts +18 -0
  17. package/dist/binary.d.ts.map +1 -0
  18. package/dist/binary.js +8 -0
  19. package/dist/bootstrap.d.ts +31 -11
  20. package/dist/bootstrap.d.ts.map +1 -1
  21. package/dist/bootstrap.js +311 -92
  22. package/dist/cell.d.ts +6 -0
  23. package/dist/cell.d.ts.map +1 -0
  24. package/dist/cell.js +9 -0
  25. package/dist/chain.d.ts +12 -0
  26. package/dist/chain.d.ts.map +1 -0
  27. package/dist/chain.js +64 -0
  28. package/dist/change-set.d.ts +13 -14
  29. package/dist/change-set.d.ts.map +1 -1
  30. package/dist/change-set.js +17 -62
  31. package/dist/change.d.ts +46 -0
  32. package/dist/change.d.ts.map +1 -1
  33. package/dist/change.js +39 -0
  34. package/dist/chat-types.d.ts +3 -0
  35. package/dist/chat-types.d.ts.map +1 -0
  36. package/dist/chat-types.js +11 -0
  37. package/dist/client.d.ts +51 -27
  38. package/dist/client.d.ts.map +1 -1
  39. package/dist/client.js +133 -26
  40. package/dist/collection.d.ts +34 -9
  41. package/dist/collection.d.ts.map +1 -1
  42. package/dist/collection.js +55 -79
  43. package/dist/compile.d.ts +18 -0
  44. package/dist/compile.d.ts.map +1 -0
  45. package/dist/compile.js +723 -0
  46. package/dist/connection.d.ts +8 -111
  47. package/dist/connection.d.ts.map +1 -1
  48. package/dist/connection.js +113 -2221
  49. package/dist/context.d.ts +2 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/{chat/context.js → context.js} +2 -5
  52. package/dist/conversation-live.d.ts +150 -0
  53. package/dist/conversation-live.d.ts.map +1 -0
  54. package/dist/conversation-live.js +259 -0
  55. package/dist/conversation-row.d.ts +40 -0
  56. package/dist/conversation-row.d.ts.map +1 -0
  57. package/dist/conversation-row.js +66 -0
  58. package/dist/conversation.d.ts +84 -45
  59. package/dist/conversation.d.ts.map +1 -1
  60. package/dist/conversation.js +1118 -584
  61. package/dist/declaration.d.ts +10 -0
  62. package/dist/declaration.d.ts.map +1 -0
  63. package/dist/declaration.js +24 -0
  64. package/dist/digest.d.ts +7 -0
  65. package/dist/digest.d.ts.map +1 -0
  66. package/dist/digest.js +113 -0
  67. package/dist/discovery.d.ts +10 -0
  68. package/dist/discovery.d.ts.map +1 -0
  69. package/dist/discovery.js +150 -0
  70. package/dist/durability.d.ts +23 -1
  71. package/dist/durability.d.ts.map +1 -1
  72. package/dist/durability.js +9 -0
  73. package/dist/entry.d.ts +20 -0
  74. package/dist/entry.d.ts.map +1 -0
  75. package/dist/entry.js +161 -0
  76. package/dist/expectation.d.ts +26 -13
  77. package/dist/expectation.d.ts.map +1 -1
  78. package/dist/expectation.js +72 -19
  79. package/dist/failure.d.ts +3 -0
  80. package/dist/failure.d.ts.map +1 -1
  81. package/dist/failure.js +6 -0
  82. package/dist/figures.d.ts +49 -0
  83. package/dist/figures.d.ts.map +1 -0
  84. package/dist/figures.js +199 -0
  85. package/dist/file.d.ts +2 -19
  86. package/dist/file.d.ts.map +1 -1
  87. package/dist/file.js +8 -122
  88. package/dist/holdings.d.ts +29 -0
  89. package/dist/holdings.d.ts.map +1 -0
  90. package/dist/holdings.js +95 -0
  91. package/dist/host.d.ts +29 -4
  92. package/dist/host.d.ts.map +1 -1
  93. package/dist/host.js +179 -25
  94. package/dist/identity.d.ts +1 -0
  95. package/dist/identity.d.ts.map +1 -1
  96. package/dist/identity.js +3 -0
  97. package/dist/index.d.ts +42 -12
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +20 -2
  100. package/dist/install.d.ts +60 -0
  101. package/dist/install.d.ts.map +1 -0
  102. package/dist/install.js +537 -0
  103. package/dist/lifecycle.d.ts +7 -0
  104. package/dist/lifecycle.d.ts.map +1 -0
  105. package/dist/lifecycle.js +278 -0
  106. package/dist/listing.d.ts +52 -0
  107. package/dist/listing.d.ts.map +1 -0
  108. package/dist/listing.js +152 -0
  109. package/dist/live.d.ts +25 -0
  110. package/dist/live.d.ts.map +1 -0
  111. package/dist/live.js +206 -0
  112. package/dist/loaded.d.ts +5 -0
  113. package/dist/loaded.d.ts.map +1 -0
  114. package/dist/loaded.js +40 -0
  115. package/dist/locks.d.ts +7 -0
  116. package/dist/locks.d.ts.map +1 -0
  117. package/dist/locks.js +32 -0
  118. package/dist/lost.d.ts +5 -0
  119. package/dist/lost.d.ts.map +1 -0
  120. package/dist/lost.js +49 -0
  121. package/dist/media.d.ts +13 -0
  122. package/dist/media.d.ts.map +1 -0
  123. package/dist/media.js +269 -0
  124. package/dist/memory.d.ts +26 -8
  125. package/dist/memory.d.ts.map +1 -1
  126. package/dist/memory.js +307 -97
  127. package/dist/messages.d.ts +58 -0
  128. package/dist/messages.d.ts.map +1 -0
  129. package/dist/messages.js +162 -0
  130. package/dist/model.d.ts +11 -12
  131. package/dist/model.d.ts.map +1 -1
  132. package/dist/model.js +7 -15
  133. package/dist/models.d.ts +10 -0
  134. package/dist/models.d.ts.map +1 -0
  135. package/dist/models.js +153 -0
  136. package/dist/name.d.ts +4 -0
  137. package/dist/name.d.ts.map +1 -0
  138. package/dist/name.js +122 -0
  139. package/dist/observation.d.ts +42 -9
  140. package/dist/observation.d.ts.map +1 -1
  141. package/dist/observation.js +238 -33
  142. package/dist/opened.d.ts +22 -0
  143. package/dist/opened.d.ts.map +1 -0
  144. package/dist/opened.js +107 -0
  145. package/dist/opening.d.ts +4 -0
  146. package/dist/opening.d.ts.map +1 -0
  147. package/dist/opening.js +53 -0
  148. package/dist/outcome.d.ts +63 -5
  149. package/dist/outcome.d.ts.map +1 -1
  150. package/dist/outcome.js +70 -0
  151. package/dist/overlay.d.ts +21 -6
  152. package/dist/overlay.d.ts.map +1 -1
  153. package/dist/overlay.js +163 -187
  154. package/dist/page-metadata.d.ts +8 -0
  155. package/dist/page-metadata.d.ts.map +1 -0
  156. package/dist/page-metadata.js +19 -0
  157. package/dist/parts.d.ts +4 -0
  158. package/dist/parts.d.ts.map +1 -0
  159. package/dist/parts.js +13 -0
  160. package/dist/paths.d.ts +2 -0
  161. package/dist/paths.d.ts.map +1 -1
  162. package/dist/paths.js +26 -0
  163. package/dist/preparation.d.ts +41 -0
  164. package/dist/preparation.d.ts.map +1 -0
  165. package/dist/preparation.js +314 -0
  166. package/dist/presence.d.ts +58 -0
  167. package/dist/presence.d.ts.map +1 -0
  168. package/dist/presence.js +231 -0
  169. package/dist/queries.d.ts +16 -0
  170. package/dist/queries.d.ts.map +1 -0
  171. package/dist/queries.js +308 -0
  172. package/dist/query.d.ts +51 -183
  173. package/dist/query.d.ts.map +1 -1
  174. package/dist/query.js +3 -464
  175. package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
  176. package/dist/questions.d.ts.map +1 -0
  177. package/dist/{chat/questions.js → questions.js} +11 -7
  178. package/dist/queue.d.ts +40 -0
  179. package/dist/queue.d.ts.map +1 -0
  180. package/dist/queue.js +480 -0
  181. package/dist/reach.d.ts +20 -5
  182. package/dist/reach.d.ts.map +1 -1
  183. package/dist/reach.js +357 -80
  184. package/dist/react.d.ts +23 -7
  185. package/dist/react.d.ts.map +1 -1
  186. package/dist/react.js +40 -18
  187. package/dist/{chat/read.d.ts → read.d.ts} +2 -0
  188. package/dist/read.d.ts.map +1 -0
  189. package/dist/{chat/read.js → read.js} +4 -0
  190. package/dist/readiness.d.ts +55 -0
  191. package/dist/readiness.d.ts.map +1 -0
  192. package/dist/readiness.js +25 -0
  193. package/dist/reads.d.ts +39 -0
  194. package/dist/reads.d.ts.map +1 -0
  195. package/dist/reads.js +178 -0
  196. package/dist/recovery.d.ts +28 -0
  197. package/dist/recovery.d.ts.map +1 -0
  198. package/dist/recovery.js +254 -0
  199. package/dist/refresh.d.ts +17 -14
  200. package/dist/refresh.d.ts.map +1 -1
  201. package/dist/refresh.js +145 -58
  202. package/dist/refusal.d.ts +5 -0
  203. package/dist/refusal.d.ts.map +1 -0
  204. package/dist/refusal.js +55 -0
  205. package/dist/replica.d.ts +53 -33
  206. package/dist/replica.d.ts.map +1 -1
  207. package/dist/replica.js +349 -167
  208. package/dist/retried.d.ts +30 -0
  209. package/dist/retried.d.ts.map +1 -0
  210. package/dist/retried.js +72 -0
  211. package/dist/room-draft.d.ts +82 -11
  212. package/dist/room-draft.d.ts.map +1 -1
  213. package/dist/room-draft.js +490 -78
  214. package/dist/room-drafts.d.ts +24 -0
  215. package/dist/room-drafts.d.ts.map +1 -0
  216. package/dist/room-drafts.js +220 -0
  217. package/dist/rows.d.ts +31 -35
  218. package/dist/rows.d.ts.map +1 -1
  219. package/dist/rows.js +60 -126
  220. package/dist/runtime.d.ts +34 -0
  221. package/dist/runtime.d.ts.map +1 -0
  222. package/dist/runtime.js +1 -0
  223. package/dist/save.d.ts +45 -22
  224. package/dist/save.d.ts.map +1 -1
  225. package/dist/save.js +977 -215
  226. package/dist/saves.d.ts +32 -0
  227. package/dist/saves.d.ts.map +1 -0
  228. package/dist/saves.js +426 -0
  229. package/dist/search.d.ts +15 -55
  230. package/dist/search.d.ts.map +1 -1
  231. package/dist/search.js +10 -121
  232. package/dist/seed.d.ts +25 -0
  233. package/dist/seed.d.ts.map +1 -0
  234. package/dist/seed.js +145 -0
  235. package/dist/shared.d.ts +10 -0
  236. package/dist/shared.d.ts.map +1 -0
  237. package/dist/shared.js +339 -0
  238. package/dist/shown.d.ts +33 -0
  239. package/dist/shown.d.ts.map +1 -0
  240. package/dist/shown.js +309 -0
  241. package/dist/socket/admission.d.ts +7 -0
  242. package/dist/socket/admission.d.ts.map +1 -0
  243. package/dist/socket/admission.js +39 -0
  244. package/dist/socket/answers.d.ts +6 -0
  245. package/dist/socket/answers.d.ts.map +1 -0
  246. package/dist/socket/answers.js +20 -0
  247. package/dist/socket/lanes.d.ts +28 -0
  248. package/dist/socket/lanes.d.ts.map +1 -0
  249. package/dist/socket/lanes.js +103 -0
  250. package/dist/socket/reads.d.ts +10 -0
  251. package/dist/socket/reads.d.ts.map +1 -0
  252. package/dist/socket/reads.js +31 -0
  253. package/dist/socket/session.d.ts +38 -0
  254. package/dist/socket/session.d.ts.map +1 -0
  255. package/dist/socket/session.js +23 -0
  256. package/dist/socket.d.ts +67 -0
  257. package/dist/socket.d.ts.map +1 -0
  258. package/dist/socket.js +164 -0
  259. package/dist/source.d.ts +59 -0
  260. package/dist/source.d.ts.map +1 -0
  261. package/dist/source.js +93 -0
  262. package/dist/status.d.ts +5 -2
  263. package/dist/status.d.ts.map +1 -1
  264. package/dist/status.js +3 -7
  265. package/dist/store/installs.d.ts +30 -0
  266. package/dist/store/installs.d.ts.map +1 -0
  267. package/dist/store/installs.js +40 -0
  268. package/dist/store/readiness.d.ts +11 -0
  269. package/dist/store/readiness.d.ts.map +1 -0
  270. package/dist/store/readiness.js +68 -0
  271. package/dist/store/records.d.ts +217 -0
  272. package/dist/store/records.d.ts.map +1 -0
  273. package/dist/store/records.js +464 -0
  274. package/dist/store/room-held.d.ts +8 -0
  275. package/dist/store/room-held.d.ts.map +1 -0
  276. package/dist/store/room-held.js +17 -0
  277. package/dist/store/rooms-shown.d.ts +8 -0
  278. package/dist/store/rooms-shown.d.ts.map +1 -0
  279. package/dist/store/rooms-shown.js +13 -0
  280. package/dist/store/space.d.ts +11 -0
  281. package/dist/store/space.d.ts.map +1 -0
  282. package/dist/store/space.js +41 -0
  283. package/dist/store/watchers.d.ts +17 -0
  284. package/dist/store/watchers.d.ts.map +1 -0
  285. package/dist/store/watchers.js +56 -0
  286. package/dist/store/writes.d.ts +24 -0
  287. package/dist/store/writes.d.ts.map +1 -0
  288. package/dist/store/writes.js +125 -0
  289. package/dist/store.d.ts +114 -116
  290. package/dist/store.d.ts.map +1 -1
  291. package/dist/store.js +164 -494
  292. package/dist/stored.d.ts +167 -0
  293. package/dist/stored.d.ts.map +1 -0
  294. package/dist/stored.js +703 -0
  295. package/dist/surface.d.ts +89 -0
  296. package/dist/surface.d.ts.map +1 -0
  297. package/dist/surface.js +222 -0
  298. package/dist/sync.d.ts +19 -0
  299. package/dist/sync.d.ts.map +1 -0
  300. package/dist/sync.js +535 -0
  301. package/dist/tables.d.ts +419 -0
  302. package/dist/tables.d.ts.map +1 -0
  303. package/dist/tables.js +758 -0
  304. package/dist/tallies.d.ts +18 -0
  305. package/dist/tallies.d.ts.map +1 -0
  306. package/dist/tallies.js +128 -0
  307. package/dist/transfer.d.ts +0 -5
  308. package/dist/transfer.d.ts.map +1 -1
  309. package/dist/turn.d.ts +9 -0
  310. package/dist/turn.d.ts.map +1 -0
  311. package/dist/turn.js +75 -0
  312. package/dist/validation.d.ts +29 -0
  313. package/dist/validation.d.ts.map +1 -0
  314. package/dist/validation.js +98 -0
  315. package/dist/windows.d.ts +11 -0
  316. package/dist/windows.d.ts.map +1 -0
  317. package/dist/windows.js +16 -0
  318. package/dist/wire.d.ts +221 -34
  319. package/dist/wire.d.ts.map +1 -1
  320. package/dist/wire.js +74 -31
  321. package/package.json +28 -24
  322. package/AGENTS.md +0 -299
  323. package/dist/attachment.d.ts +0 -3
  324. package/dist/attachment.d.ts.map +0 -1
  325. package/dist/attachment.js +0 -8
  326. package/dist/attempt.d.ts +0 -16
  327. package/dist/attempt.d.ts.map +0 -1
  328. package/dist/attempt.js +0 -57
  329. package/dist/chat/acts.d.ts +0 -34
  330. package/dist/chat/acts.d.ts.map +0 -1
  331. package/dist/chat/acts.js +0 -36
  332. package/dist/chat/context.d.ts +0 -3
  333. package/dist/chat/context.d.ts.map +0 -1
  334. package/dist/chat/input.d.ts +0 -9
  335. package/dist/chat/input.d.ts.map +0 -1
  336. package/dist/chat/input.js +0 -99
  337. package/dist/chat/kit.d.ts +0 -60
  338. package/dist/chat/kit.d.ts.map +0 -1
  339. package/dist/chat/kit.js +0 -123
  340. package/dist/chat/lasting.d.ts +0 -6
  341. package/dist/chat/lasting.d.ts.map +0 -1
  342. package/dist/chat/lasting.js +0 -19
  343. package/dist/chat/list.d.ts +0 -20
  344. package/dist/chat/list.d.ts.map +0 -1
  345. package/dist/chat/list.js +0 -59
  346. package/dist/chat/markdown.d.ts +0 -19
  347. package/dist/chat/markdown.d.ts.map +0 -1
  348. package/dist/chat/markdown.js +0 -187
  349. package/dist/chat/message.d.ts +0 -6
  350. package/dist/chat/message.d.ts.map +0 -1
  351. package/dist/chat/message.js +0 -192
  352. package/dist/chat/messages.d.ts +0 -21
  353. package/dist/chat/messages.d.ts.map +0 -1
  354. package/dist/chat/messages.js +0 -151
  355. package/dist/chat/name.d.ts +0 -6
  356. package/dist/chat/name.d.ts.map +0 -1
  357. package/dist/chat/name.js +0 -37
  358. package/dist/chat/opened.d.ts +0 -11
  359. package/dist/chat/opened.d.ts.map +0 -1
  360. package/dist/chat/opened.js +0 -17
  361. package/dist/chat/overlay.d.ts +0 -31
  362. package/dist/chat/overlay.d.ts.map +0 -1
  363. package/dist/chat/overlay.js +0 -97
  364. package/dist/chat/parts.d.ts +0 -57
  365. package/dist/chat/parts.d.ts.map +0 -1
  366. package/dist/chat/parts.js +0 -119
  367. package/dist/chat/process.d.ts +0 -20
  368. package/dist/chat/process.d.ts.map +0 -1
  369. package/dist/chat/process.js +0 -32
  370. package/dist/chat/provider.d.ts +0 -63
  371. package/dist/chat/provider.d.ts.map +0 -1
  372. package/dist/chat/provider.js +0 -645
  373. package/dist/chat/question.d.ts +0 -9
  374. package/dist/chat/question.d.ts.map +0 -1
  375. package/dist/chat/question.js +0 -80
  376. package/dist/chat/questions.d.ts.map +0 -1
  377. package/dist/chat/read.d.ts.map +0 -1
  378. package/dist/chat/ready.d.ts +0 -33
  379. package/dist/chat/ready.d.ts.map +0 -1
  380. package/dist/chat/ready.js +0 -91
  381. package/dist/chat/style.d.ts +0 -4
  382. package/dist/chat/style.d.ts.map +0 -1
  383. package/dist/chat/style.js +0 -302
  384. package/dist/chat.d.ts +0 -14
  385. package/dist/chat.d.ts.map +0 -1
  386. package/dist/chat.js +0 -8
  387. package/dist/log.d.ts +0 -5
  388. package/dist/log.d.ts.map +0 -1
  389. package/dist/log.js +0 -14
  390. package/dist/read-side.d.ts +0 -18
  391. package/dist/read-side.d.ts.map +0 -1
  392. package/dist/read-side.js +0 -433
@@ -1,37 +1,170 @@
1
1
  export function rowsOf(result) {
2
- return 'groups' in result ? result.groups : result.documents;
2
+ if ('groups' in result)
3
+ return result.groups;
4
+ return 'documents' in result ? result.documents : [];
3
5
  }
4
- export function applied(keyed, change) {
5
- const rows = rowsOf(keyed.result);
6
- const byKey = new Map(keyed.keys.map((key, index) => [key, rows[index]]));
6
+ export function whole(message) {
7
+ return 'result' in message;
8
+ }
9
+ export function pendingChange(message) {
10
+ return 'pending' in message;
11
+ }
12
+ export function unchanged(change) {
13
+ return change.changed.length === 0 && change.removed.length === 0 && change.order === null;
14
+ }
15
+ export function keyedChange(held, keys, rows, same) {
16
+ const present = new Set(keys);
17
+ const changed = keys.flatMap((key, at) => {
18
+ const was = held.get(key);
19
+ return was !== undefined && same(was, rows[at]) ? [] : [[key, rows[at]]];
20
+ });
21
+ const removed = [];
22
+ const kept = [];
23
+ for (const key of held.keys())
24
+ (present.has(key) ? kept : removed).push(key);
25
+ const moved = kept.length !== keys.length || kept.some((key, at) => keys[at] !== key);
26
+ return { changed, removed, order: moved ? keys : null };
27
+ }
28
+ export function keyedAt(held, at, same) {
29
+ const changed = [];
30
+ const removed = [];
31
+ for (const [key, now] of at) {
32
+ const was = held.get(key);
33
+ if (was === undefined) {
34
+ if (now !== null)
35
+ return null;
36
+ }
37
+ else if (now === null)
38
+ removed.push(key);
39
+ else if (!same(was, now))
40
+ changed.push([key, now]);
41
+ }
42
+ return { changed, removed, order: null };
43
+ }
44
+ export function keyedInto(held, change) {
7
45
  for (const key of change.removed)
8
- byKey.delete(key);
46
+ held.delete(key);
9
47
  for (const [key, row] of change.changed)
10
- byKey.set(key, row);
11
- const keys = change.order ?? keyed.keys.filter((key) => byKey.has(key));
12
- const next = keys.map((key) => byKey.get(key));
48
+ held.set(key, row);
49
+ if (change.order === null)
50
+ return;
51
+ const placed = change.order.map((key) => [key, held.get(key)]);
52
+ held.clear();
53
+ for (const [key, row] of placed)
54
+ held.set(key, row);
55
+ }
56
+ export function samePending(was, now) {
57
+ return was.awaits === now.awaits;
58
+ }
59
+ function keyedRows(keys, rows) {
60
+ const held = new Map(keys.map((key, at) => [key, rows[at]]));
61
+ let shown = rows;
62
+ return {
63
+ rows: () => shown,
64
+ apply(change) {
65
+ if (unchanged(change))
66
+ return shown;
67
+ keyedInto(held, change);
68
+ shown = [...held.values()];
69
+ return shown;
70
+ },
71
+ };
72
+ }
73
+ function located(rooms) {
74
+ return keyedRows(rooms.map(({ locator }) => locator), rooms);
75
+ }
76
+ function keyedRooms(first) {
77
+ let held = located(first);
13
78
  return {
14
- result: 'groups' in keyed.result
15
- ? { groups: next }
16
- : { documents: next },
17
- keys,
79
+ value: first,
80
+ next(message) {
81
+ if (!Array.isArray(message))
82
+ return held.apply(message);
83
+ held = located(message);
84
+ return held.rows();
85
+ },
86
+ };
87
+ }
88
+ function covered(readiness) {
89
+ return keyedRows(readiness.coverage.rooms.map(({ room }) => room), readiness.coverage.rooms);
90
+ }
91
+ function keyedReadiness(first) {
92
+ let held = covered(first);
93
+ return {
94
+ value: first,
95
+ next(message) {
96
+ if (!('shown' in message)) {
97
+ held = covered(message);
98
+ return message;
99
+ }
100
+ const { shown, rooms } = message;
101
+ return { ...shown, coverage: { ...shown.coverage, rooms: held.apply(rooms) } };
102
+ },
18
103
  };
19
104
  }
105
+ function awaiting(pending) {
106
+ return keyedRows(pending.map(({ room }) => room), pending);
107
+ }
20
108
  function keyedResult(first) {
21
- let keyed = first;
109
+ let result = first.result;
110
+ let rows = keyedRows([], []);
111
+ let pending = awaiting([]);
112
+ const take = ({ result: next, keys }) => {
113
+ result = next;
114
+ if ('pending' in next)
115
+ pending = awaiting(next.pending);
116
+ else
117
+ rows = keyedRows(keys, rowsOf(next));
118
+ return result;
119
+ };
120
+ take(first);
22
121
  return {
23
122
  value: first.result,
24
123
  next(message) {
25
- keyed = applied(keyed, message);
26
- return keyed.result;
124
+ const asked = message;
125
+ if (whole(asked))
126
+ return take(asked);
127
+ if (pendingChange(asked)) {
128
+ if ('pending' in result)
129
+ result = { pending: pending.apply(asked.pending) };
130
+ return result;
131
+ }
132
+ if ('pending' in result)
133
+ return result;
134
+ const kept = rows.apply(asked);
135
+ const coverage = asked.coverage ?? result.coverage;
136
+ const next = asked.next === undefined ? result.next : (asked.next ?? undefined);
137
+ const total = asked.total ?? result.total;
138
+ const window = {
139
+ ...(next === undefined ? {} : { next }),
140
+ ...(total === undefined ? {} : { total }),
141
+ };
142
+ result =
143
+ 'groups' in result
144
+ ? { groups: kept, coverage, ...window }
145
+ : { documents: kept, coverage, ...window };
146
+ return result;
27
147
  },
28
148
  };
29
149
  }
30
- function whole(first) {
150
+ const FOLDS = {
151
+ query: (first) => keyedResult(first),
152
+ rooms: (first) => keyedRooms(first),
153
+ readiness: (first) => keyedReadiness(first),
154
+ };
155
+ const WHOLE = {
156
+ query: (message) => whole(message),
157
+ rooms: (message) => Array.isArray(message),
158
+ readiness: (message) => !('shown' in message),
159
+ };
160
+ export function replaces(topic, message) {
161
+ return WHOLE[topic]?.(message) ?? true;
162
+ }
163
+ function replaced(first) {
31
164
  return { value: first, next: (message) => message };
32
165
  }
33
- export function observed(first, stop, keyed) {
34
- const reducer = keyed ? keyedResult(first) : whole(first);
166
+ export function observed(first, stop, topic) {
167
+ const reducer = (FOLDS[topic] ?? replaced)(first);
35
168
  let value = reducer.value;
36
169
  let open = true;
37
170
  const listeners = new Set();
@@ -69,27 +202,99 @@ export function observed(first, stop, keyed) {
69
202
  end,
70
203
  };
71
204
  }
72
- export function opened(watch, keyed) {
205
+ export function opened(watch, topic) {
73
206
  return new Promise((resolve, reject) => {
74
207
  let handle;
75
208
  let stop = () => { };
76
- try {
77
- stop = watch((message) => {
78
- if (handle !== undefined) {
79
- handle.receive(message);
80
- return;
81
- }
82
- handle = observed(message, () => stop(), keyed);
83
- resolve(handle.observation);
84
- });
85
- }
86
- catch (error) {
209
+ stop = watch((message) => {
210
+ if (handle !== undefined) {
211
+ handle.receive(message);
212
+ return;
213
+ }
214
+ handle = observed(message, () => stop(), topic);
215
+ resolve(handle.observation);
216
+ }, (error) => {
217
+ if (handle !== undefined)
218
+ return;
219
+ stop();
87
220
  reject(error);
88
- }
221
+ });
89
222
  });
90
223
  }
91
224
  export function observing(watch) {
92
- return (topic, ...input) => opened((deliver) => watch(topic, input, (message) => {
225
+ return (topic, ...input) => opened((deliver, fail) => watch(topic, input, (message) => {
93
226
  deliver(structuredClone(message));
94
- }), topic === 'query');
227
+ }, fail), topic);
228
+ }
229
+ export function hashed(text) {
230
+ let first = 0xdeadbeef;
231
+ let second = 0x41c6ce57;
232
+ for (let index = 0; index < text.length; index += 1) {
233
+ const code = text.charCodeAt(index);
234
+ first = Math.imul(first ^ code, 2654435761);
235
+ second = Math.imul(second ^ code, 1597334677);
236
+ }
237
+ first =
238
+ Math.imul(first ^ (first >>> 16), 2246822507) ^ Math.imul(second ^ (second >>> 13), 3266489909);
239
+ second =
240
+ Math.imul(second ^ (second >>> 16), 2246822507) ^ Math.imul(first ^ (first >>> 13), 3266489909);
241
+ return 4294967296 * (2097151 & second) + (first >>> 0);
242
+ }
243
+ function rowDigest(row) {
244
+ return hashed(JSON.stringify(row));
245
+ }
246
+ export function digestOf({ result, keys }) {
247
+ if ('pending' in result)
248
+ return { pending: new Map(result.pending.map((room) => [room.room, room])) };
249
+ const rows = rowsOf(result);
250
+ return {
251
+ rows: new Map(keys.map((key, index) => [key, rowDigest(rows[index])])),
252
+ coverage: JSON.stringify(result.coverage),
253
+ next: result.next,
254
+ total: result.total,
255
+ };
256
+ }
257
+ export function digestApplied(digest, message) {
258
+ if (whole(message))
259
+ return digestOf(message);
260
+ if (pendingChange(message)) {
261
+ if ('pending' in digest)
262
+ keyedInto(digest.pending, message.pending);
263
+ return digest;
264
+ }
265
+ if ('pending' in digest)
266
+ return digest;
267
+ keyedInto(digest.rows, {
268
+ changed: message.changed.map(([key, row]) => [key, rowDigest(row)]),
269
+ removed: message.removed,
270
+ order: message.order,
271
+ });
272
+ return {
273
+ rows: digest.rows,
274
+ coverage: message.coverage === undefined ? digest.coverage : JSON.stringify(message.coverage),
275
+ next: message.next === undefined ? digest.next : (message.next ?? undefined),
276
+ total: message.total ?? digest.total,
277
+ };
278
+ }
279
+ export function changeOf(previous, next) {
280
+ const after = next.result;
281
+ if ('pending' in previous && 'pending' in after) {
282
+ const pending = keyedChange(previous.pending, after.pending.map(({ room }) => room), after.pending, samePending);
283
+ return unchanged(pending) ? null : { pending };
284
+ }
285
+ if ('pending' in previous || 'pending' in after)
286
+ return next;
287
+ const rows = keyedChange(previous.rows, next.keys, rowsOf(after), (was, row) => was === rowDigest(row));
288
+ const covered = previous.coverage !== JSON.stringify(after.coverage);
289
+ const framing = reframed(previous, after);
290
+ if (unchanged(rows) && !covered && framing === null)
291
+ return null;
292
+ return { ...rows, ...(covered ? { coverage: after.coverage } : {}), ...framing };
293
+ }
294
+ function reframed(before, after) {
295
+ const next = before.next === after.next ? {} : { next: after.next ?? null };
296
+ const total = before.total === after.total || after.total === undefined ? {} : { total: after.total };
297
+ return Object.keys(next).length === 0 && Object.keys(total).length === 0
298
+ ? null
299
+ : { ...next, ...total };
95
300
  }
@@ -0,0 +1,22 @@
1
+ import type { BinaryResult } from './adapter.js';
2
+ import { type RuntimeDatabase } from './tables.js';
3
+ export type OpenedName = {
4
+ readonly locator: string;
5
+ readonly path: string;
6
+ readonly revision: string;
7
+ };
8
+ export type KeptBinary = {
9
+ readonly kind: 'binary';
10
+ readonly file: string;
11
+ readonly byteLength: number;
12
+ readonly mediaType: string;
13
+ };
14
+ export type KeptResult = KeptBinary | Exclude<BinaryResult, {
15
+ kind: 'binary';
16
+ }>;
17
+ export type OpenedFiles = {
18
+ find(name: OpenedName): Promise<KeptBinary | null>;
19
+ fetch(name: OpenedName, read: () => Promise<BinaryResult>): Promise<KeptResult>;
20
+ };
21
+ export declare function openedFiles(database: RuntimeDatabase, lost: (locator: string) => boolean): OpenedFiles;
22
+ //# sourceMappingURL=opened.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened.d.ts","sourceRoot":"","sources":["../src/opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACjF,CAAC;AAsBF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACjC,WAAW,CAsFb"}
package/dist/opened.js ADDED
@@ -0,0 +1,107 @@
1
+ import { digest } from './digest.js';
2
+ import { binaryLocalId } from './identity.js';
3
+ import { FILE_PART_BYTES } from './tables.js';
4
+ const UNCERTAIN = { kind: 'transport-uncertainty' };
5
+ function kept({ key, byteLength, mediaType }) {
6
+ return { kind: 'binary', file: key, byteLength, mediaType };
7
+ }
8
+ function taken(chunks, size) {
9
+ const part = new Uint8Array(size);
10
+ let at = 0;
11
+ while (at < size) {
12
+ const chunk = chunks[0];
13
+ const wanted = Math.min(chunk.length, size - at);
14
+ part.set(chunk.subarray(0, wanted), at);
15
+ at += wanted;
16
+ if (wanted === chunk.length)
17
+ chunks.shift();
18
+ else
19
+ chunks[0] = chunk.subarray(wanted);
20
+ }
21
+ return part;
22
+ }
23
+ export function openedFiles(database, lost) {
24
+ const fetching = new Map();
25
+ async function find(name) {
26
+ const held = await database.ask({ kind: 'opened.find', ...name });
27
+ return held === null ? null : kept(held);
28
+ }
29
+ async function written(name, { body, mediaType, sha256 }) {
30
+ const key = binaryLocalId();
31
+ const reader = body.getReader();
32
+ const hashed = digest();
33
+ const chunks = [];
34
+ let held = 0;
35
+ let size = 0;
36
+ let part = 0;
37
+ const write = async (bytes) => {
38
+ if (!(await database.ask({ kind: 'opened.part', key, part, bytes }))) {
39
+ throw new Error();
40
+ }
41
+ part += 1;
42
+ };
43
+ try {
44
+ if (lost(name.locator) ||
45
+ !(await database.ask({ kind: 'opened.begin', key, ...name, mediaType }))) {
46
+ throw new Error();
47
+ }
48
+ for (;;) {
49
+ const read = await reader.read();
50
+ if (read.done)
51
+ break;
52
+ hashed.update(read.value);
53
+ size += read.value.length;
54
+ chunks.push(read.value);
55
+ held += read.value.length;
56
+ for (; held >= FILE_PART_BYTES; held -= FILE_PART_BYTES) {
57
+ await write(taken(chunks, FILE_PART_BYTES));
58
+ }
59
+ }
60
+ if (held > 0)
61
+ await write(taken(chunks, held));
62
+ const received = hashed.hex();
63
+ if (sha256 !== undefined && sha256 !== received) {
64
+ throw new Error();
65
+ }
66
+ const whole = await database.ask({
67
+ kind: 'opened.keep',
68
+ key,
69
+ sha256: received,
70
+ byteLength: size,
71
+ parts: part,
72
+ });
73
+ return whole ? { kind: 'binary', file: key, byteLength: size, mediaType } : null;
74
+ }
75
+ catch {
76
+ await reader.cancel().catch(() => { });
77
+ await database.ask({ kind: 'opened.drop', key }).catch(() => null);
78
+ return null;
79
+ }
80
+ }
81
+ async function fetched(name, read) {
82
+ const held = await find(name);
83
+ if (held !== null)
84
+ return held;
85
+ const result = await read();
86
+ if (result.kind !== 'binary')
87
+ return result;
88
+ return (await written(name, result)) ?? UNCERTAIN;
89
+ }
90
+ return {
91
+ find,
92
+ fetch(name, read) {
93
+ const identity = `${name.locator}\u0000${name.path}\u0000${name.revision}`;
94
+ const held = fetching.get(identity);
95
+ if (held !== undefined)
96
+ return held;
97
+ const work = fetched(name, read);
98
+ fetching.set(identity, work);
99
+ const done = () => {
100
+ if (fetching.get(identity) === work)
101
+ fetching.delete(identity);
102
+ };
103
+ work.then(done, done);
104
+ return work;
105
+ },
106
+ };
107
+ }
@@ -0,0 +1,4 @@
1
+ import type { Runtime } from './runtime.js';
2
+ import type { RuntimeStore } from './store.js';
3
+ export declare function open(runtime: Runtime, opened: RuntimeStore): Promise<RuntimeStore>;
4
+ //# sourceMappingURL=opening.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../src/opening.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAsB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCxF"}
@@ -0,0 +1,53 @@
1
+ import { conversationsOpened } from './conversation.js';
2
+ import { detectStorageLoss, nextGeneration, refusedForSpace } from './durability.js';
3
+ import { uncaught } from './failure.js';
4
+ import { sweep } from './install.js';
5
+ import { eraseFenced } from './lost.js';
6
+ import { prepare } from './preparation.js';
7
+ import { unpair } from './queue.js';
8
+ import { emitRooms, emitStorageLoss, statusShown } from './shown.js';
9
+ export async function open(runtime, opened) {
10
+ const { store, socket, shell, conversations, build, usableWhenHeld } = runtime;
11
+ if (socket.closed())
12
+ throw new Error('runtime closed');
13
+ const interrupted = await opened.fences();
14
+ const kept = shell.generation;
15
+ const storedGeneration = await opened.generation();
16
+ const loss = detectStorageLoss(storedGeneration, kept);
17
+ const generation = nextGeneration(storedGeneration, kept);
18
+ if (generation !== storedGeneration)
19
+ await opened.rememberGeneration(generation);
20
+ if (generation !== kept)
21
+ await shell.keepGeneration(generation);
22
+ if (loss !== null) {
23
+ store.device.set({ storageLoss: loss });
24
+ emitStorageLoss(runtime);
25
+ }
26
+ const held = await opened.opened();
27
+ store.device.set({
28
+ heldWhenOpened: usableWhenHeld.length > 0 && (await opened.covering()).rooms.size > 0,
29
+ });
30
+ try {
31
+ await opened.demote();
32
+ await store.ask({ kind: 'read.builds', build });
33
+ for (const key of held.orphans)
34
+ await opened.release(key);
35
+ }
36
+ catch (error) {
37
+ if (!refusedForSpace(error))
38
+ throw error;
39
+ }
40
+ if (held.erasing || held.orphans.length > 0)
41
+ queueMicrotask(() => sweep(runtime));
42
+ await conversationsOpened(conversations, opened);
43
+ if (interrupted.length > 0) {
44
+ queueMicrotask(() => {
45
+ void eraseFenced(runtime, interrupted).catch(uncaught);
46
+ });
47
+ }
48
+ statusShown(runtime);
49
+ prepare(runtime);
50
+ emitRooms(runtime);
51
+ void unpair(runtime).catch(uncaught);
52
+ return opened;
53
+ }
package/dist/outcome.d.ts CHANGED
@@ -1,19 +1,78 @@
1
- import type { ActionResult, AdapterFailure, HistoryResult, ProviderRefusal, RoomVersionAt, ScopedRefusal } from './adapter.js';
1
+ import type { ActionResult, AdapterFailure, AttachResult, BinaryLinkResult, HistoryResult, HistoryRevision, ProviderRefusal, RoomVersionAt, ScopedRefusal } from './adapter.js';
2
2
  import type { ChangeBatch } from './change.js';
3
+ import type { Attempt, Retries } from './retried.js';
4
+ import type { KeptBinary, KeptResult } from './opened.js';
3
5
  type Refused<Kind extends string> = ProviderRefusal & {
4
6
  kind: Kind;
5
7
  };
6
8
  export type Failure = Refused<'transport-uncertainty'> | Refused<'revoked-authorization'> | (Refused<'room-not-readable'> & {
7
9
  locator: string;
10
+ }) | (Refused<'room-locked'> & {
11
+ locator: string;
8
12
  }) | ScopedRefusal;
9
13
  export type CallResult = {
10
14
  kind: 'action';
11
15
  result: unknown;
12
16
  at?: RoomVersionAt;
13
- } | Refused<'rejected'> | Refused<'undeclared'> | Failure;
17
+ } | (Refused<'rejected'> & {
18
+ reset?: string;
19
+ }) | Refused<'undeclared'> | Failure;
14
20
  export type HistoryAnswer = Exclude<HistoryResult, {
15
21
  kind: Failure['kind'];
16
22
  }> | Failure;
23
+ type BinaryRefusal = Refused<'rejected'> | Refused<'absent'> | Failure;
24
+ export type BinaryAnswer = {
25
+ kind: 'binary';
26
+ stream: ReadableStream<Uint8Array>;
27
+ byteLength: number;
28
+ mediaType: string;
29
+ } | BinaryRefusal;
30
+ export type HeldBinaryAnswer = KeptBinary | BinaryRefusal;
31
+ export type BinaryLinkAnswer = {
32
+ kind: 'link';
33
+ url: string;
34
+ name: string;
35
+ mediaType: string;
36
+ } | Refused<'rejected'> | Refused<'absent'> | Failure;
37
+ export type HeldShownAnswer = KeptBinary | BinaryLinkAnswer;
38
+ export type ShownAnswer = BinaryAnswer | BinaryLinkAnswer;
39
+ export type AttachAnswer = {
40
+ kind: 'attached';
41
+ path: string;
42
+ } | Offline | Refused<'rejected'> | Failure;
43
+ export type DownloadAnswer = {
44
+ kind: 'started';
45
+ } | Refused<'rejected'> | Refused<'absent'> | Refused<'blocked'> | Failure;
46
+ export type Resolution = {
47
+ readonly kind: 'document';
48
+ readonly room: string;
49
+ readonly path: string;
50
+ } | {
51
+ readonly kind: 'deleted';
52
+ readonly room: string;
53
+ readonly path: string;
54
+ readonly revision: HistoryRevision;
55
+ } | Refused<'unreadable'> | Refused<'absent'> | Failure;
56
+ export declare const UNREADABLE: Refused<'unreadable'>;
57
+ export declare const LOCKED_UNREADABLE: Refused<'unreadable'>;
58
+ export declare const ABSENT_TARGET: Refused<'absent'>;
59
+ export declare function absentBinary(path: string): Refused<'absent'>;
60
+ export declare function declaredType(blob: Blob): string;
61
+ export declare function blobOf(binary: Extract<BinaryAnswer, {
62
+ kind: 'binary';
63
+ }>): Promise<Blob>;
64
+ export declare function binaryAnswer(result: KeptResult): HeldBinaryAnswer;
65
+ export declare function binaryLinkAnswer(result: BinaryLinkResult, held?: string): BinaryLinkAnswer;
66
+ export declare function attachAnswer(result: AttachResult): AttachAnswer;
67
+ export declare const ROOM_LOCKED = "room-locked";
68
+ export declare function lockedRoom(locator: string): Refused<'room-locked'> & {
69
+ locator: string;
70
+ };
71
+ export type Offline = {
72
+ readonly kind: 'offline';
73
+ };
74
+ export declare const OFFLINE: Offline;
75
+ export declare function answeredResult(value: unknown): boolean;
17
76
  export declare const UNCERTAIN: Failure;
18
77
  export declare function undeclared(name: string): CallResult;
19
78
  export declare function failure(result: AdapterFailure): Failure;
@@ -29,9 +88,8 @@ export type QueueEntry = {
29
88
  readonly batch: ChangeBatch;
30
89
  } & (Submission | {
31
90
  readonly state: 'local';
32
- } | {
33
- readonly state: 'accepted';
34
- readonly roomVersion: string;
35
91
  });
92
+ export declare const UNANSWERED: ActionResult;
93
+ export declare function handedOutcome(retries: Retries, attempt: Attempt | undefined, result: ActionResult): CallResult;
36
94
  export {};
37
95
  //# sourceMappingURL=outcome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,OAAO,CAAC,IAAI,SAAS,MAAM,IAAI,eAAe,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,OAAO,GACf,OAAO,CAAC,uBAAuB,CAAC,GAChC,OAAO,CAAC,uBAAuB,CAAC,GAChC,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,aAAa,CAAC;AAElB,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,aAAa,CAAA;CAAE,GACvD,OAAO,CAAC,UAAU,CAAC,GACnB,OAAO,CAAC,YAAY,CAAC,GACrB,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC;AAExF,eAAO,MAAM,SAAS,EAAE,OAKvB,CAAC;AAEF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAiBvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAE7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAIlE;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG,CACvD,UAAU,GACV;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAC/D,CAAC"}
1
+ {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"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"}