@agentshouse/mdruntime 0.1.0-c0136de3edfbe → 0.1.0-c014edb0e9d9b

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 (228) hide show
  1. package/README.md +8 -8
  2. package/dist/acceptance.d.ts +0 -3
  3. package/dist/acceptance.d.ts.map +1 -1
  4. package/dist/acceptance.js +74 -145
  5. package/dist/act-lanes.d.ts +33 -0
  6. package/dist/act-lanes.d.ts.map +1 -0
  7. package/dist/act-lanes.js +177 -0
  8. package/dist/actions.d.ts +7 -2
  9. package/dist/actions.d.ts.map +1 -1
  10. package/dist/actions.js +44 -31
  11. package/dist/adapter.d.ts +30 -44
  12. package/dist/adapter.d.ts.map +1 -1
  13. package/dist/bootstrap.d.ts +1 -1
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +6 -18
  16. package/dist/change-set.d.ts +4 -0
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +6 -0
  19. package/dist/change.d.ts.map +1 -1
  20. package/dist/change.js +4 -2
  21. package/dist/chat-types.d.ts +2 -0
  22. package/dist/chat-types.d.ts.map +1 -1
  23. package/dist/chat-types.js +11 -0
  24. package/dist/client.d.ts +9 -12
  25. package/dist/client.d.ts.map +1 -1
  26. package/dist/client.js +29 -14
  27. package/dist/collection.d.ts +22 -4
  28. package/dist/collection.d.ts.map +1 -1
  29. package/dist/collection.js +12 -2
  30. package/dist/compile.d.ts.map +1 -1
  31. package/dist/compile.js +15 -21
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +30 -17
  34. package/dist/conversation-live.d.ts +138 -0
  35. package/dist/conversation-live.d.ts.map +1 -0
  36. package/dist/conversation-live.js +249 -0
  37. package/dist/conversation-row.d.ts.map +1 -1
  38. package/dist/conversation-row.js +7 -1
  39. package/dist/conversation.d.ts +44 -44
  40. package/dist/conversation.d.ts.map +1 -1
  41. package/dist/conversation.js +904 -1024
  42. package/dist/declaration.d.ts +10 -0
  43. package/dist/declaration.d.ts.map +1 -0
  44. package/dist/declaration.js +24 -0
  45. package/dist/discovery.d.ts.map +1 -1
  46. package/dist/discovery.js +18 -40
  47. package/dist/durability.d.ts +12 -0
  48. package/dist/durability.d.ts.map +1 -1
  49. package/dist/expectation.d.ts +4 -2
  50. package/dist/expectation.d.ts.map +1 -1
  51. package/dist/expectation.js +33 -11
  52. package/dist/failure.d.ts +3 -0
  53. package/dist/failure.d.ts.map +1 -1
  54. package/dist/failure.js +6 -0
  55. package/dist/figures.d.ts +1 -0
  56. package/dist/figures.d.ts.map +1 -1
  57. package/dist/figures.js +2 -2
  58. package/dist/holdings.d.ts +29 -0
  59. package/dist/holdings.d.ts.map +1 -0
  60. package/dist/holdings.js +95 -0
  61. package/dist/host.d.ts +17 -2
  62. package/dist/host.d.ts.map +1 -1
  63. package/dist/host.js +38 -8
  64. package/dist/index.d.ts +13 -6
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +9 -3
  67. package/dist/install.d.ts +1 -3
  68. package/dist/install.d.ts.map +1 -1
  69. package/dist/install.js +49 -70
  70. package/dist/lifecycle.d.ts +1 -1
  71. package/dist/lifecycle.d.ts.map +1 -1
  72. package/dist/lifecycle.js +42 -30
  73. package/dist/listing.d.ts +6 -11
  74. package/dist/listing.d.ts.map +1 -1
  75. package/dist/listing.js +25 -61
  76. package/dist/live.d.ts.map +1 -1
  77. package/dist/live.js +3 -3
  78. package/dist/locks.d.ts +2 -4
  79. package/dist/locks.d.ts.map +1 -1
  80. package/dist/locks.js +10 -38
  81. package/dist/lost.d.ts.map +1 -1
  82. package/dist/lost.js +10 -21
  83. package/dist/media.d.ts +1 -1
  84. package/dist/media.d.ts.map +1 -1
  85. package/dist/media.js +4 -4
  86. package/dist/memory.d.ts +4 -2
  87. package/dist/memory.d.ts.map +1 -1
  88. package/dist/memory.js +38 -20
  89. package/dist/messages.d.ts +1 -4
  90. package/dist/messages.d.ts.map +1 -1
  91. package/dist/messages.js +14 -32
  92. package/dist/model.d.ts +0 -1
  93. package/dist/model.d.ts.map +1 -1
  94. package/dist/model.js +0 -5
  95. package/dist/models.d.ts +4 -8
  96. package/dist/models.d.ts.map +1 -1
  97. package/dist/models.js +97 -134
  98. package/dist/observation.d.ts.map +1 -1
  99. package/dist/observation.js +12 -17
  100. package/dist/opened.d.ts +1 -1
  101. package/dist/opened.d.ts.map +1 -1
  102. package/dist/opened.js +5 -5
  103. package/dist/opening.d.ts.map +1 -1
  104. package/dist/opening.js +8 -5
  105. package/dist/outcome.d.ts +6 -1
  106. package/dist/outcome.d.ts.map +1 -1
  107. package/dist/outcome.js +15 -0
  108. package/dist/overlay.d.ts +2 -1
  109. package/dist/overlay.d.ts.map +1 -1
  110. package/dist/overlay.js +32 -21
  111. package/dist/page-metadata.d.ts +8 -0
  112. package/dist/page-metadata.d.ts.map +1 -0
  113. package/dist/page-metadata.js +19 -0
  114. package/dist/parts.d.ts +3 -51
  115. package/dist/parts.d.ts.map +1 -1
  116. package/dist/parts.js +14 -111
  117. package/dist/paths.d.ts +1 -0
  118. package/dist/paths.d.ts.map +1 -1
  119. package/dist/paths.js +22 -0
  120. package/dist/preparation.d.ts.map +1 -1
  121. package/dist/preparation.js +22 -15
  122. package/dist/presence.d.ts +52 -0
  123. package/dist/presence.d.ts.map +1 -0
  124. package/dist/presence.js +220 -0
  125. package/dist/queries.d.ts +1 -1
  126. package/dist/queries.d.ts.map +1 -1
  127. package/dist/queries.js +5 -7
  128. package/dist/query.d.ts +0 -1
  129. package/dist/query.d.ts.map +1 -1
  130. package/dist/questions.d.ts +2 -0
  131. package/dist/questions.d.ts.map +1 -1
  132. package/dist/questions.js +5 -1
  133. package/dist/queue.d.ts +40 -0
  134. package/dist/queue.d.ts.map +1 -0
  135. package/dist/queue.js +455 -0
  136. package/dist/reach.d.ts.map +1 -1
  137. package/dist/reach.js +28 -9
  138. package/dist/react.d.ts +15 -0
  139. package/dist/react.d.ts.map +1 -1
  140. package/dist/react.js +15 -1
  141. package/dist/readiness.d.ts +0 -1
  142. package/dist/readiness.d.ts.map +1 -1
  143. package/dist/reads.d.ts +4 -1
  144. package/dist/reads.d.ts.map +1 -1
  145. package/dist/reads.js +47 -5
  146. package/dist/refresh.js +2 -2
  147. package/dist/refusal.d.ts.map +1 -1
  148. package/dist/refusal.js +5 -4
  149. package/dist/replica.d.ts +5 -10
  150. package/dist/replica.d.ts.map +1 -1
  151. package/dist/replica.js +15 -16
  152. package/dist/retried.d.ts +30 -0
  153. package/dist/retried.d.ts.map +1 -0
  154. package/dist/retried.js +72 -0
  155. package/dist/room-draft.d.ts +4 -6
  156. package/dist/room-draft.d.ts.map +1 -1
  157. package/dist/room-draft.js +36 -52
  158. package/dist/room-drafts.d.ts.map +1 -1
  159. package/dist/room-drafts.js +17 -16
  160. package/dist/rows.d.ts.map +1 -1
  161. package/dist/rows.js +3 -4
  162. package/dist/runtime.d.ts +11 -17
  163. package/dist/runtime.d.ts.map +1 -1
  164. package/dist/save.d.ts +41 -86
  165. package/dist/save.d.ts.map +1 -1
  166. package/dist/save.js +232 -112
  167. package/dist/saves.d.ts +2 -40
  168. package/dist/saves.d.ts.map +1 -1
  169. package/dist/saves.js +107 -698
  170. package/dist/seed.d.ts.map +1 -1
  171. package/dist/seed.js +2 -3
  172. package/dist/shared.d.ts +1 -6
  173. package/dist/shared.d.ts.map +1 -1
  174. package/dist/shared.js +13 -95
  175. package/dist/shown.d.ts +4 -3
  176. package/dist/shown.d.ts.map +1 -1
  177. package/dist/shown.js +29 -33
  178. package/dist/socket/lanes.d.ts +2 -1
  179. package/dist/socket/lanes.d.ts.map +1 -1
  180. package/dist/socket/lanes.js +5 -2
  181. package/dist/socket/session.d.ts +0 -1
  182. package/dist/socket/session.d.ts.map +1 -1
  183. package/dist/socket.d.ts +2 -4
  184. package/dist/socket.d.ts.map +1 -1
  185. package/dist/socket.js +4 -8
  186. package/dist/source.d.ts.map +1 -1
  187. package/dist/source.js +5 -4
  188. package/dist/store/records.d.ts +4 -4
  189. package/dist/store/records.d.ts.map +1 -1
  190. package/dist/store/records.js +33 -11
  191. package/dist/store/space.d.ts +1 -1
  192. package/dist/store/space.d.ts.map +1 -1
  193. package/dist/store/space.js +0 -2
  194. package/dist/store/watchers.js +1 -2
  195. package/dist/store.d.ts +11 -6
  196. package/dist/store.d.ts.map +1 -1
  197. package/dist/store.js +38 -13
  198. package/dist/stored.d.ts +1 -1
  199. package/dist/stored.d.ts.map +1 -1
  200. package/dist/stored.js +22 -10
  201. package/dist/surface.d.ts +4 -2
  202. package/dist/surface.d.ts.map +1 -1
  203. package/dist/surface.js +20 -14
  204. package/dist/sync.d.ts +0 -1
  205. package/dist/sync.d.ts.map +1 -1
  206. package/dist/sync.js +91 -82
  207. package/dist/tables.d.ts +13 -8
  208. package/dist/tables.d.ts.map +1 -1
  209. package/dist/tables.js +25 -12
  210. package/dist/tallies.js +5 -5
  211. package/dist/validation.d.ts.map +1 -1
  212. package/dist/validation.js +2 -2
  213. package/dist/wire.d.ts +41 -4
  214. package/dist/wire.d.ts.map +1 -1
  215. package/dist/wire.js +13 -3
  216. package/package.json +3 -2
  217. package/dist/attempt.d.ts +0 -16
  218. package/dist/attempt.d.ts.map +0 -1
  219. package/dist/attempt.js +0 -70
  220. package/dist/job.d.ts +0 -33
  221. package/dist/job.d.ts.map +0 -1
  222. package/dist/job.js +0 -54
  223. package/dist/socket/rooms.d.ts +0 -43
  224. package/dist/socket/rooms.d.ts.map +0 -1
  225. package/dist/socket/rooms.js +0 -90
  226. package/dist/store/fences.d.ts +0 -16
  227. package/dist/store/fences.d.ts.map +0 -1
  228. package/dist/store/fences.js +0 -26
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAS,KAAK,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,IAAI,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAEjG,KAAK,WAAW,GAAG,CACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,KAAK,EACjD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAChC,MAAM,IAAI,CAAC;AA0ChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBtD;AA+BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAOxF;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAMlE;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,GACjB,MAAM,IAAI,CA4BZ"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAS,KAAK,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,IAAI,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAEjG,KAAK,WAAW,GAAG,CACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,KAAK,EACjD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAChC,MAAM,IAAI,CAAC;AA0ChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAmBtD;AA+BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAOxF;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAMlE;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,GACjB,MAAM,IAAI,CA4BZ"}
package/dist/seed.js CHANGED
@@ -62,7 +62,6 @@ export function seededResult(seed) {
62
62
  generation,
63
63
  current: false,
64
64
  })),
65
- indexes: [],
66
65
  overlay: [],
67
66
  };
68
67
  if ('groups' in seed.rows) {
@@ -83,9 +82,9 @@ function seedRoomHeld({ socket }, room, version, held) {
83
82
  socket.reads.reached(room, stored.roomVersion, version));
84
83
  }
85
84
  function seedHeld(runtime, at, held) {
86
- const { socket } = runtime;
85
+ const { socket, presence } = runtime;
87
86
  return Object.entries(at).every(([room, version]) => (socket.session.now().roomsListed &&
88
- socket.rooms.declared(room) === undefined &&
87
+ presence.room(room) === undefined &&
89
88
  !held.rooms.has(room)) ||
90
89
  seedRoomHeld(runtime, room, version, held));
91
90
  }
package/dist/shared.d.ts CHANGED
@@ -1,14 +1,9 @@
1
1
  export type Paths<V> = Readonly<Record<string, V>>;
2
+ export declare function guarding<V>(values: Paths<V>, handler: ProxyHandler<Paths<V>>): Paths<V>;
2
3
  export declare function entriesIn<V>(map: Paths<V>): Generator<readonly [string, V]>;
3
4
  export declare function sortedKeys(map: Paths<unknown>): Generator<number, readonly string[], void>;
4
5
  export declare function sorting(keys: Iterable<string>): Generator<number, readonly string[], void>;
5
- export declare function sharing<V>(map: Paths<V>): Generator<number, Paths<V>, void>;
6
- export declare function shared<V>(map: Paths<V>): Paths<V>;
7
- export declare function patched<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Paths<V>;
8
6
  export declare function patching<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Generator<number, Paths<V>, void>;
9
- export declare function sizeOf<V>(map: Paths<V>): number;
10
- export declare function differences<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): Generator<number, ReadonlySet<string>, void>;
11
- export declare function differing<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): ReadonlySet<string>;
12
7
  export declare function drafted<V>(base: Paths<V>): Record<string, V>;
13
8
  export declare function settled<V>(draft: Record<string, V>): Paths<V>;
14
9
  export declare function settling<V>(draft: Record<string, V>): Generator<number, Paths<V>, void>;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AA+LnD,wBAAiB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAO5E;AAuCD,wBAAiB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAE3F;AAED,wBAAiB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAoB3F;AAED,wBAAiB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAE5E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,KAAK,CAAC,CAAC,CAAC,CAEV;AAED,wBAAiB,QAAQ,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAoBnC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAE/C;AA8CD,wBAAiB,WAAW,CAAC,CAAC,EAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAkB9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,WAAW,CAAC,MAAM,CAAC,CAErB;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAiD5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7D;AAED,wBAAiB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAUxF"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AA8LnD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAIvF;AAED,wBAAiB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAQ5E;AAqCD,wBAAiB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAE3F;AAED,wBAAiB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAoB3F;AAED,wBAAiB,QAAQ,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAgBnC;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAiD5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7D;AAED,wBAAiB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAUxF"}
package/dist/shared.js CHANGED
@@ -100,21 +100,15 @@ function lone(node) {
100
100
  }
101
101
  function taken(node, hash, key, shift) {
102
102
  if (isLeaf(node))
103
- return node.key === key ? undefined : node;
103
+ return undefined;
104
104
  if (isCollision(node)) {
105
105
  const leaves = node.leaves.filter((leaf) => leaf.key !== key);
106
- if (leaves.length === node.leaves.length)
107
- return node;
108
106
  return leaves.length === 1 ? leaves[0] : { hash: node.hash, leaves };
109
107
  }
110
108
  const bit = 1 << fragment(hash, shift);
111
- if ((node.bitmap & bit) === 0)
112
- return node;
113
109
  const at = slot(node.bitmap, bit);
114
110
  const child = node.children[at];
115
111
  const next = taken(child, hash, key, shift + BITS);
116
- if (next === child)
117
- return node;
118
112
  if (next === undefined) {
119
113
  if (node.children.length === 1)
120
114
  return undefined;
@@ -179,11 +173,18 @@ function facade(root) {
179
173
  roots.set(map, root);
180
174
  return map;
181
175
  }
176
+ const guarded = new WeakMap();
177
+ export function guarding(values, handler) {
178
+ const map = new Proxy(values, handler);
179
+ guarded.set(map, values);
180
+ return map;
181
+ }
182
182
  export function* entriesIn(map) {
183
183
  const root = roots.get(map);
184
184
  if (root === undefined) {
185
- for (const key of Object.keys(map))
186
- yield [key, map[key]];
185
+ const values = guarded.get(map) ?? map;
186
+ for (const key of Object.keys(values))
187
+ yield [key, values[key]];
187
188
  return;
188
189
  }
189
190
  for (const leaf of leavesOf(root.node))
@@ -194,13 +195,11 @@ function* rooted(map) {
194
195
  if (held !== undefined)
195
196
  return held;
196
197
  let node;
197
- let size = 0;
198
198
  for (const [key, value] of entriesIn(map)) {
199
199
  node = put(node, { key, hash: hashOf(key), value }, 0);
200
- size += 1;
201
200
  yield ROW_WEIGHT;
202
201
  }
203
- return { node, size };
202
+ return { node };
204
203
  }
205
204
  const RUN = 1 << 10;
206
205
  function* merged(left, right) {
@@ -244,106 +243,25 @@ export function* sorting(keys) {
244
243
  }
245
244
  return runs[0] ?? [];
246
245
  }
247
- export function* sharing(map) {
248
- return roots.has(map) ? map : facade(yield* rooted(map));
249
- }
250
- export function shared(map) {
251
- return finished(sharing(map));
252
- }
253
- export function patched(base, set, removed = []) {
254
- return finished(patching(base, set, removed));
255
- }
256
246
  export function* patching(base, set, removed = []) {
257
247
  const root = yield* rooted(base);
258
248
  let node = root.node;
259
- let size = root.size;
260
249
  for (const key of removed) {
261
250
  if (node === undefined)
262
251
  break;
263
- const before = lookup({ node, size }, key);
252
+ const before = lookup({ node }, key);
264
253
  if (before === undefined)
265
254
  continue;
266
255
  node = taken(node, before.hash, key, 0);
267
- size -= 1;
268
256
  yield ROW_WEIGHT;
269
257
  }
270
258
  for (const [key, value] of set) {
271
- const before = lookup({ node, size }, key);
272
259
  node = put(node, { key, hash: hashOf(key), value }, 0);
273
- if (before === undefined)
274
- size += 1;
275
260
  yield ROW_WEIGHT;
276
261
  }
277
262
  if (node === root.node && roots.has(base))
278
263
  return base;
279
- return facade({ node, size });
280
- }
281
- export function sizeOf(map) {
282
- return roots.get(map)?.size ?? Object.keys(map).length;
283
- }
284
- function* compared(left, right, same, into) {
285
- const pending = [[left, right]];
286
- for (let pair = pending.pop(); pair !== undefined; pair = pending.pop()) {
287
- const [one, other] = pair;
288
- if (one === other)
289
- continue;
290
- if (one !== undefined &&
291
- other !== undefined &&
292
- !isLeaf(one) &&
293
- !isCollision(one) &&
294
- !isLeaf(other) &&
295
- !isCollision(other)) {
296
- const children = [];
297
- for (let remaining = one.bitmap | other.bitmap; remaining !== 0; remaining &= remaining - 1) {
298
- const bit = remaining & -remaining;
299
- children.push([
300
- (one.bitmap & bit) === 0 ? undefined : one.children[slot(one.bitmap, bit)],
301
- (other.bitmap & bit) === 0 ? undefined : other.children[slot(other.bitmap, bit)],
302
- ]);
303
- }
304
- pending.push(...children.reverse());
305
- continue;
306
- }
307
- const before = new Map();
308
- for (const leaf of leavesOf(one)) {
309
- before.set(leaf.key, leaf.value);
310
- yield ROW_WEIGHT;
311
- }
312
- for (const leaf of leavesOf(other)) {
313
- const held = before.get(leaf.key);
314
- before.delete(leaf.key);
315
- if (held === undefined || !same(held, leaf.value))
316
- into.add(leaf.key);
317
- yield ROW_WEIGHT;
318
- }
319
- for (const key of before.keys())
320
- into.add(key);
321
- }
322
- }
323
- export function* differences(left, right, same = Object.is) {
324
- const into = new Set();
325
- if (left === right)
326
- return into;
327
- const leftRoot = roots.get(left);
328
- const rightRoot = roots.get(right);
329
- if (leftRoot !== undefined && rightRoot !== undefined) {
330
- yield* compared(leftRoot.node, rightRoot.node, same, into);
331
- return into;
332
- }
333
- for (const [key, value] of entriesIn(left)) {
334
- if (!Object.hasOwn(right, key) || !same(value, right[key]))
335
- into.add(key);
336
- yield ROW_WEIGHT;
337
- }
338
- for (const [key] of entriesIn(right)) {
339
- if (!Object.hasOwn(left, key))
340
- into.add(key);
341
- yield ROW_WEIGHT;
342
- }
343
- return into;
344
- }
345
- export function differing(left, right, same = Object.is) {
346
- return finished(differences(left, right, same));
264
+ return facade({ node });
347
265
  }
348
266
  const drafts = new WeakMap();
349
267
  const GONE = Symbol('gone');
package/dist/shown.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { DiscoveredRoom, Member } from './adapter.js';
2
- import type { ChangeSet } from './change-set.js';
1
+ import type { Member } from './adapter.js';
2
+ import { type ChangeSet } from './change-set.js';
3
3
  import type { QueueEntry } from './outcome.js';
4
4
  import type { Runtime } from './runtime.js';
5
5
  import type { Live, Moving } from './socket.js';
@@ -26,6 +26,7 @@ export declare function transferring({ socket }: Runtime): Moving;
26
26
  export declare function pendingShown(runtime: Runtime): Promise<void>;
27
27
  export declare function entriesOf(runtime: Runtime, locator: string): Promise<readonly QueueEntry[]>;
28
28
  export declare function publishChangeSet(runtime: Runtime, set: ChangeSet): Promise<void>;
29
- export declare function roomUnreadable(runtime: Runtime, room: DiscoveredRoom): void;
29
+ export declare function submissionDue(runtime: Runtime, locators?: readonly string[]): Promise<void>;
30
+ export declare function roomUnreadable(runtime: Runtime, locator: string): void;
30
31
  export declare function rest(runtime: Runtime, progress: CycleProgress | null, live?: Live): Promise<void>;
31
32
  //# sourceMappingURL=shown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shown.d.ts","sourceRoot":"","sources":["../src/shown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA6B,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAiB7F,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAE1C,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAElD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,UAAU,YAAa,MAAM,WAA4B,CAAC;AA0CvE,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,QAG7D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAI9C;AA8ED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,QAK3C;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,QAGjD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,QAEnE;AAsBD,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAepD;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAYD,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAKjG;AAcD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,QAIpE;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,IAAI,GAAE,IAAqC,iBAgC5C"}
1
+ {"version":3,"file":"shown.d.ts","sourceRoot":"","sources":["../src/shown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA6B,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAiB7F,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAE1C,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAElD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,UAAU,YAAa,MAAM,WAA4B,CAAC;AAqCvE,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,QAG7D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAI9C;AA6ED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,QAK3C;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,QAGjD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,QAEnE;AAsBD,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAepD;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAYD,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAGjG;AAcD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAG/D;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,IAAI,GAAE,IAAqC,iBA6B5C"}
package/dist/shown.js CHANGED
@@ -1,4 +1,6 @@
1
- import { listingNow, list, patchedListing, shownRooms } from './listing.js';
1
+ import { changeSet, mergeChangeSets } from './change-set.js';
2
+ import { conversationsChanged, conversationsLearned } from './conversation.js';
3
+ import { listingNow, patchedListing, shownRooms } from './listing.js';
2
4
  import { emitPresentation, publishRoomDrafts } from './room-drafts.js';
3
5
  import { same } from './status.js';
4
6
  export const ROOMS_TOPIC = 'rooms';
@@ -11,9 +13,8 @@ export const AUTHORITY_TOPIC = 'authority-changes';
11
13
  export const LOCKS_TOPIC = 'locks';
12
14
  export const queueTopic = (locator) => `queue\u0000${locator}`;
13
15
  async function attended({ store, localSaves }) {
14
- const isFenced = store.fences.has;
15
- const held = await (await store.open()).status();
16
- const attentionRequired = held.returned.flatMap((record) => record.returned === null || isFenced(record.locator)
16
+ const held = await store.status();
17
+ const attentionRequired = held.returned.flatMap((record) => record.returned === null
17
18
  ? []
18
19
  : [{ room: record.locator, path: record.path, returned: structuredClone(record.returned) }]);
19
20
  attentionRequired.sort((left, right) => {
@@ -25,25 +26,22 @@ async function attended({ store, localSaves }) {
25
26
  });
26
27
  const changed = new Map();
27
28
  if (!localSaves) {
28
- for (const change of held.unsent) {
29
- if (!isFenced(change.room))
30
- changed.set(`${change.room}\u0000${change.path}`, change);
31
- }
29
+ for (const change of held.unsent)
30
+ changed.set(`${change.room}\u0000${change.path}`, change);
32
31
  }
33
32
  const unsent = [...changed]
34
33
  .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
35
34
  .map(([, change]) => change);
36
35
  return {
37
- queued: !localSaves && held.queued.some((locator) => !isFenced(locator)),
36
+ queued: !localSaves && held.queued.length > 0,
38
37
  lastCompleted: held.lastCompleted,
39
38
  attentionRequired,
40
39
  unsent,
41
- reset: held.resets.reduce((earliest, { locator, reset }) => isFenced(locator) || (earliest !== null && earliest <= reset) ? earliest : reset, null),
40
+ reset: held.resets.reduce((earliest, { reset }) => (earliest !== null && earliest <= reset ? earliest : reset), null),
42
41
  };
43
42
  }
44
43
  async function queuedWork({ store, localSaves }) {
45
- const held = await (await store.open()).queued();
46
- return !localSaves && held.some((locator) => !store.fences.has(locator));
44
+ return !localSaves && (await store.queued()).length > 0;
47
45
  }
48
46
  export function recoverReads({ liveQueries, figures }) {
49
47
  liveQueries.recover();
@@ -57,7 +55,7 @@ export function emitRooms(runtime, changed) {
57
55
  : publishRooms(runtime, 'changed', changed);
58
56
  }
59
57
  export function emitKnownRooms(runtime) {
60
- runtime.conversations.learned();
58
+ conversationsLearned(runtime.conversations);
61
59
  if (runtime.store.watching(ROOMS_TOPIC, 'waiting').length === 0)
62
60
  return;
63
61
  void publishRooms(runtime, 'known');
@@ -87,9 +85,7 @@ async function deliverRooms(runtime, owed) {
87
85
  if (patched === null && owed.changed.size > 0)
88
86
  owed.all = true;
89
87
  if (patched === null && !owed.all && owed.counted.size > 0) {
90
- const held = await store.covering().catch(() => null);
91
- if (held === null)
92
- return;
88
+ const held = await store.covering();
93
89
  const { roomsShown } = store.device.now();
94
90
  owed.all = [...owed.counted].some((locator) => held.rooms.has(locator) &&
95
91
  roomsShown?.get(locator)?.documents !== held.rooms.get(locator).documents);
@@ -100,15 +96,15 @@ async function deliverRooms(runtime, owed) {
100
96
  else if (waiting().length === 0)
101
97
  return;
102
98
  }
103
- const listing = patched ?? (await listingNow(runtime).catch(() => null));
104
- if (listing === null || socket.closed())
99
+ const listing = patched ?? (await listingNow(runtime));
100
+ if (socket.closed())
105
101
  return;
106
- const value = shownRooms(runtime, listing);
107
102
  const { roomsListed, refusal, moving } = socket.session.now();
108
103
  const joining = waiting().length > 0 &&
109
104
  (roomsListed || listing.size > 0 || refusal !== null || moving.providerUnreachable);
110
105
  if (!owed.all && patched === null && !joining)
111
106
  return;
107
+ const value = shownRooms(runtime, listing);
112
108
  const { roomsShown } = store.device.now();
113
109
  const moved = owed.all ||
114
110
  patched !== null ||
@@ -203,10 +199,7 @@ function entryOf({ localSaves }, states, batch) {
203
199
  return Object.freeze({ batch, ...(state?.submission ?? { state: 'waiting' }) });
204
200
  }
205
201
  export async function entriesOf(runtime, locator) {
206
- const { store } = runtime;
207
- if (store.fences.has(locator))
208
- return [];
209
- const { queue, states } = await store.work(locator);
202
+ const { queue, states } = await runtime.store.work(locator);
210
203
  return queue.map((batch) => entryOf(runtime, states, batch));
211
204
  }
212
205
  function emitQueue(runtime, locator) {
@@ -249,23 +242,26 @@ export function publishChangeSet(runtime, set) {
249
242
  }
250
243
  for (const app of set.presentations)
251
244
  shownNow.push(emitPresentation(runtime, app));
252
- conversations.changed(set);
245
+ conversationsChanged(conversations, set);
253
246
  return Promise.all(shownNow).then(() => undefined);
254
247
  }
255
- export function roomUnreadable(runtime, room) {
256
- runtime.socket.rooms.stand(room.locator, { unreadable: true });
257
- list(runtime, room, false);
248
+ export async function submissionDue(runtime, locators) {
249
+ const { store } = runtime;
250
+ const due = (await store.queued()).filter((locator) => locators === undefined || locators.includes(locator));
251
+ if (due.length === 0)
252
+ return;
253
+ await store.changed(mergeChangeSets(due.map((locator) => changeSet(locator, { due: true }))));
254
+ }
255
+ export function roomUnreadable(runtime, locator) {
256
+ runtime.presence.refused(locator, null);
258
257
  emitRooms(runtime);
259
258
  }
260
259
  export async function rest(runtime, progress, live = () => !runtime.socket.closed()) {
261
- const { store, socket } = runtime;
262
- const { session, lanes, rooms } = socket;
260
+ const { store, socket, presence } = runtime;
261
+ const { session, lanes } = socket;
263
262
  if (!live())
264
263
  return;
265
- const settled = () => session.now().complete &&
266
- lanes.roomWork() === 0 &&
267
- !socket.naming() &&
268
- rooms.standingWhere(({ stale }) => stale).length === 0;
264
+ const settled = () => session.now().complete && lanes.roomWork() === 0 && !socket.naming() && presence.settled();
269
265
  let synced = settled();
270
266
  if (synced && !session.now().recorded) {
271
267
  const queued = await queuedWork(runtime).catch(() => true);
@@ -3,6 +3,7 @@ type LaneRules = {
3
3
  generation(): number;
4
4
  continuing(): boolean;
5
5
  stopping(): boolean;
6
+ failed(locator: string, error: unknown): void;
6
7
  };
7
8
  export type Lanes = {
8
9
  task(lane: string, work: (live: Live) => Promise<void>): Promise<void>;
@@ -15,6 +16,6 @@ export type Lanes = {
15
16
  call(operation: string): void;
16
17
  called(operation: string): void;
17
18
  };
18
- export declare function createLanes({ generation, continuing, stopping }: LaneRules): Lanes;
19
+ export declare function createLanes({ generation, continuing, stopping, failed }: LaneRules): Lanes;
19
20
  export {};
20
21
  //# sourceMappingURL=lanes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lanes.d.ts","sourceRoot":"","sources":["../../src/socket/lanes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;AAIjC,KAAK,SAAS,GAAG;IACf,UAAU,IAAI,MAAM,CAAC;IACrB,UAAU,IAAI,OAAO,CAAC;IACtB,QAAQ,IAAI,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,IAAI,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,KAAK,CAgFlF"}
1
+ {"version":3,"file":"lanes.d.ts","sourceRoot":"","sources":["../../src/socket/lanes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;AAIjC,KAAK,SAAS,GAAG;IACf,UAAU,IAAI,MAAM,CAAC;IACrB,UAAU,IAAI,OAAO,CAAC;IACtB,QAAQ,IAAI,OAAO,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,IAAI,MAAM,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,GAAG,KAAK,CAkF1F"}
@@ -1,5 +1,5 @@
1
1
  const ROOM_READS = 256;
2
- export function createLanes({ generation, continuing, stopping }) {
2
+ export function createLanes({ generation, continuing, stopping, failed }) {
3
3
  const lanes = new Map();
4
4
  const roomLanes = new Map();
5
5
  const roomReads = { free: ROOM_READS, waiting: [] };
@@ -59,7 +59,10 @@ export function createLanes({ generation, continuing, stopping }) {
59
59
  roomTask(locator, work) {
60
60
  if (stopping())
61
61
  return Promise.resolve();
62
- return inRoom(locator, (live) => admittedRead(() => work(live))).catch(() => undefined);
62
+ return inRoom(locator, (live) => admittedRead(() => work(live))).catch((error) => {
63
+ if (!stopping())
64
+ failed(locator, error);
65
+ });
63
66
  },
64
67
  roomWork: () => roomWork,
65
68
  current: () => Promise.all([...lanes.values()]
@@ -6,7 +6,6 @@ export type RefusalReason = 'missing-required-guarantee' | 'revoked-authorizatio
6
6
  export type ConnectionRefusalCode = Open<RefusalReason>;
7
7
  export type ConnectionRefusal = {
8
8
  code: ConnectionRefusalCode;
9
- retryable: boolean;
10
9
  reauthorizationOffered: boolean;
11
10
  refusal: ProviderRefusal | null;
12
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/socket/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAEnF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAqBrF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/socket/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAEnF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAqBrF"}
package/dist/socket.d.ts CHANGED
@@ -2,13 +2,12 @@ import type { Adapter, Authorization, ConversationEvent, Discovery, HeldRoom, Ro
2
2
  import type { Reads } from './bootstrap.js';
3
3
  import type { Cell } from './cell.js';
4
4
  import type { Log } from './log.js';
5
+ import type { Retries } from './retried.js';
5
6
  import { type Admission } from './socket/admission.js';
6
7
  import { type Answers } from './socket/answers.js';
7
8
  import { type Lanes } from './socket/lanes.js';
8
- import { type Rooms } from './socket/rooms.js';
9
9
  import { type Session } from './socket/session.js';
10
10
  export type { Live } from './socket/lanes.js';
11
- export type { Declared, RoomDeclaration } from './socket/rooms.js';
12
11
  export type { ConnectionRefusal, ConnectionRefusalCode, Moving, RefusalReason, } from './socket/session.js';
13
12
  type SocketEvent = {
14
13
  readonly kind: 'opened';
@@ -28,7 +27,6 @@ export type RuntimeSocket = Admission & Answers & {
28
27
  readonly reads: Reads;
29
28
  readonly streamed: boolean;
30
29
  readonly session: Cell<Session>;
31
- readonly rooms: Rooms;
32
30
  readonly lanes: Lanes;
33
31
  readonly ready: Promise<void>;
34
32
  readonly firstDiscovery: Promise<void>;
@@ -66,5 +64,5 @@ export type RuntimeSocket = Admission & Answers & {
66
64
  abortReads(): void;
67
65
  stopReads(): void;
68
66
  };
69
- export declare function createSocket(adapter: Adapter, journal: Log, authorization: Authorization | undefined): RuntimeSocket;
67
+ export declare function createSocket(adapter: Adapter, journal: Log, retries: Retries, authorization: Authorization | undefined): RuntimeSocket;
70
68
  //# sourceMappingURL=socket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,EACN,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,KAAK,WAAW,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACxF;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,GACD,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG,SAAS,GACnC,OAAO,GAAG;IACR,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9F,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IACpD,oBAAoB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9D,KAAK,IAAI,IAAI,CAAC;IACd,cAAc,IAAI,IAAI,CAAC;IACvB,WAAW,IAAI,IAAI,CAAC;IACpB,MAAM,IAAI,OAAO,CAAC;IAClB,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,OAAO,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC;IACnB,UAAU,IAAI,OAAO,CAAC;IACtB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,MAAM,IAAI,OAAO,CAAC;IAClB,WAAW,IAAI,OAAO,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,MAAM,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC;IAClB,IAAI,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEJ,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EACZ,aAAa,EAAE,aAAa,GAAG,SAAS,GACvC,aAAa,CAiKf"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
package/dist/socket.js CHANGED
@@ -2,14 +2,12 @@ import { createAdmission } from './socket/admission.js';
2
2
  import { createAnswers } from './socket/answers.js';
3
3
  import { createLanes } from './socket/lanes.js';
4
4
  import { createReads } from './socket/reads.js';
5
- import { createRooms } from './socket/rooms.js';
6
5
  import { createSession } from './socket/session.js';
7
- export function createSocket(adapter, journal, authorization) {
6
+ export function createSocket(adapter, journal, retries, authorization) {
8
7
  const held = createReads(adapter);
9
8
  const admission = createAdmission();
10
9
  const answers = createAnswers();
11
10
  const session = createSession(authorization);
12
- const rooms = createRooms();
13
11
  let readyFromStore = () => { };
14
12
  const ready = new Promise((resolve) => {
15
13
  readyFromStore = resolve;
@@ -69,11 +67,11 @@ export function createSocket(adapter, journal, authorization) {
69
67
  reads: held.reads,
70
68
  streamed: adapter.roomStream !== undefined,
71
69
  session,
72
- rooms,
73
70
  lanes: createLanes({
74
71
  generation: () => generation,
75
72
  continuing,
76
73
  stopping: () => session.now().stopping,
74
+ failed: (locator, error) => retries.failed('download', locator, error),
77
75
  }),
78
76
  ready,
79
77
  firstDiscovery,
@@ -101,7 +99,7 @@ export function createSocket(adapter, journal, authorization) {
101
99
  },
102
100
  observe(listen) {
103
101
  const stream = adapter.roomStream;
104
- if (stream === undefined || withdrawStream !== undefined)
102
+ if (stream === undefined)
105
103
  return;
106
104
  withdrawStream = stream.observe((event) => {
107
105
  const { closed, stopping } = session.now();
@@ -111,7 +109,7 @@ export function createSocket(adapter, journal, authorization) {
111
109
  },
112
110
  observeConversations(listen) {
113
111
  const stream = adapter.conversations;
114
- if (stream === undefined || withdrawConversations !== undefined)
112
+ if (stream === undefined)
115
113
  return;
116
114
  withdrawConversations = stream.observe(listen);
117
115
  },
@@ -121,8 +119,6 @@ export function createSocket(adapter, journal, authorization) {
121
119
  close() {
122
120
  session.set({ closed: true });
123
121
  notifyDiscovered();
124
- rooms.unreadied();
125
- rooms.connectionLive();
126
122
  withdrawStream?.();
127
123
  withdrawStream = undefined;
128
124
  withdrawConversations?.();
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAoChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA4ClF"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAoChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA6ClF"}
package/dist/source.js CHANGED
@@ -36,15 +36,16 @@ export function sourceOf(value, sender) {
36
36
  return requestOf(source);
37
37
  if (source.kind === 'trigger') {
38
38
  const trigger = text(record(source.trigger), 'description');
39
- const ref = text(record(source.room), 'ref');
40
- const room = text(record(source.room), 'name');
41
- return trigger === null || ref === null || room === null
39
+ const room = record(source.room);
40
+ const ref = text(room, 'ref');
41
+ const called = text(room, 'name');
42
+ return trigger === null || ref === null || called === null
42
43
  ? null
43
44
  : {
44
45
  kind: 'trigger',
45
46
  customer: sender === 'customer',
46
47
  trigger,
47
- room: { ref, name: room },
48
+ room: { ref, name: called },
48
49
  };
49
50
  }
50
51
  if (source.kind === 'conversation') {
@@ -7,7 +7,6 @@ import type { Submission } from '../outcome.js';
7
7
  import type { RoomDraftRecord, SavedDraft } from '../room-draft.js';
8
8
  import type { ModelState, StoredModel } from '../model.js';
9
9
  import type { CommittedWrite, ConversationWrite, HeldConversation, HeldRow, HeldEntry, MessageWindow, QueryAnswer, QueryRoom, Referrer, ReplicaOpened, RoomCommit, RuntimeDatabase, StoredEntry, StoredFile, TypedEntry, View } from '../tables.js';
10
- import type { JobMarker } from '../job.js';
11
10
  export type { ConversationWrite, HeldConversation, MessageWindow } from '../tables.js';
12
11
  export type TransferRecord = {
13
12
  readonly locator: string;
@@ -126,6 +125,8 @@ export type Facts = {
126
125
  readonly targets: Readonly<Record<string, TargetRecord>>;
127
126
  readonly conversationList: readonly ListedConversation[] | null;
128
127
  readonly conversationCursor: string | null;
128
+ readonly chatPins: readonly string[];
129
+ readonly openedTurns: Readonly<Record<string, string>>;
129
130
  };
130
131
  export type Commit = {
131
132
  readonly rooms: readonly RoomCommit[];
@@ -165,7 +166,7 @@ export type RuntimeStore = {
165
166
  entries(key: number, view: View, paths: readonly string[]): Promise<readonly HeldEntry[]>;
166
167
  typed(key: number, view: View, paths: readonly string[]): Promise<readonly TypedEntry[]>;
167
168
  referrers(key: number, view: View, targets: readonly string[]): Promise<readonly Referrer[]>;
168
- folders(key: number, view: View, paths: readonly string[]): Promise<readonly string[]>;
169
+ folders(key: number, paths: readonly string[]): Promise<readonly string[]>;
169
170
  typedWithin(key: number, view: View, roots: readonly string[], within: boolean): Promise<boolean>;
170
171
  stage(record: TransferRecord, composition: Composition, page: StagedPage): Promise<number | null>;
171
172
  resume(record: TransferRecord, composition: Composition, parts: readonly string[], published: number | null): Promise<ResumedTransfer | null>;
@@ -192,7 +193,6 @@ export type RuntimeStore = {
192
193
  messageCount(conversation: string, phrase?: string | null): Promise<number>;
193
194
  turnArrived(conversation: string, turn: string): Promise<boolean>;
194
195
  conversationRows(conversations: readonly string[]): Promise<readonly HeldRow[]>;
195
- jobMarkers(conversation: string): Promise<readonly JobMarker[]>;
196
196
  dropConversations(conversations: readonly string[]): Promise<void>;
197
197
  chatDrafts(): Promise<readonly ChatDraftRecord[]>;
198
198
  chatDraft(conversation: string): Promise<ChatDraftRecord | null>;
@@ -208,5 +208,5 @@ export type RuntimeStore = {
208
208
  rememberGeneration(value: string): Promise<void>;
209
209
  file(key: string, type: string): Promise<Blob>;
210
210
  };
211
- export declare function openRuntimeStore(authored: RuntimeDatabase): RuntimeStore;
211
+ export declare function openRuntimeStore(database: RuntimeDatabase): RuntimeStore;
212
212
  //# sourceMappingURL=records.d.ts.map