@agentshouse/mdruntime 0.1.0-cb2e390ee7b89 → 0.1.0-cb8a03985803b

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 +23 -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 +163 -125
  12. package/dist/adapter.d.ts.map +1 -1
  13. package/dist/attached-model.d.ts +7 -10
  14. package/dist/attached-model.d.ts.map +1 -1
  15. package/dist/attached-model.js +40 -41
  16. package/dist/binary.d.ts +0 -5
  17. package/dist/binary.d.ts.map +1 -1
  18. package/dist/binary.js +1 -1
  19. package/dist/bootstrap.d.ts +30 -11
  20. package/dist/bootstrap.d.ts.map +1 -1
  21. package/dist/bootstrap.js +309 -113
  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 -16
  29. package/dist/change-set.d.ts.map +1 -1
  30. package/dist/change-set.js +17 -89
  31. package/dist/change.d.ts +32 -1
  32. package/dist/change.d.ts.map +1 -1
  33. package/dist/change.js +14 -3
  34. package/dist/chat-types.d.ts +5 -0
  35. package/dist/chat-types.d.ts.map +1 -0
  36. package/dist/chat-types.js +13 -0
  37. package/dist/client.d.ts +36 -24
  38. package/dist/client.d.ts.map +1 -1
  39. package/dist/client.js +118 -23
  40. package/dist/collection.d.ts +29 -21
  41. package/dist/collection.d.ts.map +1 -1
  42. package/dist/collection.js +48 -290
  43. package/dist/compile.d.ts +18 -0
  44. package/dist/compile.d.ts.map +1 -0
  45. package/dist/compile.js +724 -0
  46. package/dist/connection.d.ts +7 -134
  47. package/dist/connection.d.ts.map +1 -1
  48. package/dist/connection.js +107 -3606
  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} +1 -4
  52. package/dist/conversation-live.d.ts +140 -0
  53. package/dist/conversation-live.d.ts.map +1 -0
  54. package/dist/conversation-live.js +250 -0
  55. package/dist/conversation-row.d.ts +33 -0
  56. package/dist/conversation-row.d.ts.map +1 -0
  57. package/dist/conversation-row.js +53 -0
  58. package/dist/conversation.d.ts +72 -49
  59. package/dist/conversation.d.ts.map +1 -1
  60. package/dist/conversation.js +1005 -794
  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 +20 -4
  71. package/dist/durability.d.ts.map +1 -1
  72. package/dist/durability.js +9 -0
  73. package/dist/entry.d.ts +5 -2
  74. package/dist/entry.d.ts.map +1 -1
  75. package/dist/entry.js +33 -28
  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 +197 -0
  85. package/dist/file.d.ts +2 -19
  86. package/dist/file.d.ts.map +1 -1
  87. package/dist/file.js +7 -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 +21 -11
  92. package/dist/host.d.ts.map +1 -1
  93. package/dist/host.js +113 -49
  94. package/dist/identity.d.ts +0 -2
  95. package/dist/identity.d.ts.map +1 -1
  96. package/dist/identity.js +0 -6
  97. package/dist/index.d.ts +39 -15
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +18 -4
  100. package/dist/install.d.ts +54 -0
  101. package/dist/install.d.ts.map +1 -0
  102. package/dist/install.js +530 -0
  103. package/dist/lifecycle.d.ts +7 -0
  104. package/dist/lifecycle.d.ts.map +1 -0
  105. package/dist/lifecycle.js +277 -0
  106. package/dist/listing.d.ts +48 -0
  107. package/dist/listing.d.ts.map +1 -0
  108. package/dist/listing.js +139 -0
  109. package/dist/live.d.ts +23 -0
  110. package/dist/live.d.ts.map +1 -0
  111. package/dist/live.js +165 -0
  112. package/dist/locks.d.ts +7 -0
  113. package/dist/locks.d.ts.map +1 -0
  114. package/dist/locks.js +32 -0
  115. package/dist/lost.d.ts +5 -0
  116. package/dist/lost.d.ts.map +1 -0
  117. package/dist/lost.js +49 -0
  118. package/dist/media.d.ts +8 -0
  119. package/dist/media.d.ts.map +1 -0
  120. package/dist/media.js +218 -0
  121. package/dist/memory.d.ts +17 -8
  122. package/dist/memory.d.ts.map +1 -1
  123. package/dist/memory.js +273 -121
  124. package/dist/messages.d.ts +56 -0
  125. package/dist/messages.d.ts.map +1 -0
  126. package/dist/messages.js +158 -0
  127. package/dist/model.d.ts +8 -11
  128. package/dist/model.d.ts.map +1 -1
  129. package/dist/model.js +6 -23
  130. package/dist/models.d.ts +10 -0
  131. package/dist/models.d.ts.map +1 -0
  132. package/dist/models.js +153 -0
  133. package/dist/name.d.ts +4 -0
  134. package/dist/name.d.ts.map +1 -0
  135. package/dist/name.js +122 -0
  136. package/dist/observation.d.ts +17 -3
  137. package/dist/observation.d.ts.map +1 -1
  138. package/dist/observation.js +107 -17
  139. package/dist/opened.d.ts +22 -0
  140. package/dist/opened.d.ts.map +1 -0
  141. package/dist/opened.js +107 -0
  142. package/dist/opening.d.ts +4 -0
  143. package/dist/opening.d.ts.map +1 -0
  144. package/dist/opening.js +53 -0
  145. package/dist/outcome.d.ts +47 -9
  146. package/dist/outcome.d.ts.map +1 -1
  147. package/dist/outcome.js +56 -2
  148. package/dist/overlay.d.ts +7 -5
  149. package/dist/overlay.d.ts.map +1 -1
  150. package/dist/overlay.js +123 -182
  151. package/dist/page-metadata.d.ts +8 -0
  152. package/dist/page-metadata.d.ts.map +1 -0
  153. package/dist/page-metadata.js +19 -0
  154. package/dist/parts.d.ts +4 -0
  155. package/dist/parts.d.ts.map +1 -0
  156. package/dist/parts.js +13 -0
  157. package/dist/paths.d.ts +2 -0
  158. package/dist/paths.d.ts.map +1 -1
  159. package/dist/paths.js +26 -0
  160. package/dist/preparation.d.ts +20 -0
  161. package/dist/preparation.d.ts.map +1 -0
  162. package/dist/preparation.js +227 -0
  163. package/dist/presence.d.ts +52 -0
  164. package/dist/presence.d.ts.map +1 -0
  165. package/dist/presence.js +220 -0
  166. package/dist/queries.d.ts +16 -0
  167. package/dist/queries.d.ts.map +1 -0
  168. package/dist/queries.js +282 -0
  169. package/dist/query.d.ts +21 -203
  170. package/dist/query.d.ts.map +1 -1
  171. package/dist/query.js +3 -491
  172. package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
  173. package/dist/questions.d.ts.map +1 -0
  174. package/dist/{chat/questions.js → questions.js} +11 -7
  175. package/dist/queue.d.ts +40 -0
  176. package/dist/queue.d.ts.map +1 -0
  177. package/dist/queue.js +450 -0
  178. package/dist/reach.d.ts +20 -9
  179. package/dist/reach.d.ts.map +1 -1
  180. package/dist/reach.js +341 -111
  181. package/dist/react.d.ts +16 -4
  182. package/dist/react.d.ts.map +1 -1
  183. package/dist/react.js +35 -15
  184. package/dist/{chat/read.d.ts → read.d.ts} +2 -0
  185. package/dist/read.d.ts.map +1 -0
  186. package/dist/{chat/read.js → read.js} +4 -0
  187. package/dist/readiness.d.ts +14 -18
  188. package/dist/readiness.d.ts.map +1 -1
  189. package/dist/readiness.js +2 -8
  190. package/dist/reads.d.ts +38 -10
  191. package/dist/reads.d.ts.map +1 -1
  192. package/dist/reads.js +163 -83
  193. package/dist/recovery.d.ts +5 -2
  194. package/dist/recovery.d.ts.map +1 -1
  195. package/dist/recovery.js +65 -8
  196. package/dist/refresh.d.ts +18 -15
  197. package/dist/refresh.d.ts.map +1 -1
  198. package/dist/refresh.js +145 -60
  199. package/dist/refusal.d.ts +5 -0
  200. package/dist/refusal.d.ts.map +1 -0
  201. package/dist/refusal.js +55 -0
  202. package/dist/replica.d.ts +49 -36
  203. package/dist/replica.d.ts.map +1 -1
  204. package/dist/replica.js +320 -196
  205. package/dist/retried.d.ts +30 -0
  206. package/dist/retried.d.ts.map +1 -0
  207. package/dist/retried.js +72 -0
  208. package/dist/room-draft.d.ts +28 -11
  209. package/dist/room-draft.d.ts.map +1 -1
  210. package/dist/room-draft.js +194 -118
  211. package/dist/room-drafts.d.ts +24 -0
  212. package/dist/room-drafts.d.ts.map +1 -0
  213. package/dist/room-drafts.js +217 -0
  214. package/dist/rows.d.ts +31 -30
  215. package/dist/rows.d.ts.map +1 -1
  216. package/dist/rows.js +60 -120
  217. package/dist/runtime.d.ts +34 -0
  218. package/dist/runtime.d.ts.map +1 -0
  219. package/dist/runtime.js +1 -0
  220. package/dist/save.d.ts +43 -49
  221. package/dist/save.d.ts.map +1 -1
  222. package/dist/save.js +776 -275
  223. package/dist/saves.d.ts +32 -0
  224. package/dist/saves.d.ts.map +1 -0
  225. package/dist/saves.js +410 -0
  226. package/dist/search.d.ts +12 -95
  227. package/dist/search.d.ts.map +1 -1
  228. package/dist/search.js +10 -266
  229. package/dist/seed.d.ts +11 -2
  230. package/dist/seed.d.ts.map +1 -1
  231. package/dist/seed.js +71 -1
  232. package/dist/shared.d.ts +6 -7
  233. package/dist/shared.d.ts.map +1 -1
  234. package/dist/shared.js +75 -104
  235. package/dist/shown.d.ts +33 -0
  236. package/dist/shown.d.ts.map +1 -0
  237. package/dist/shown.js +295 -0
  238. package/dist/socket/admission.d.ts +7 -0
  239. package/dist/socket/admission.d.ts.map +1 -0
  240. package/dist/socket/admission.js +39 -0
  241. package/dist/socket/answers.d.ts +6 -0
  242. package/dist/socket/answers.d.ts.map +1 -0
  243. package/dist/socket/answers.js +20 -0
  244. package/dist/socket/lanes.d.ts +28 -0
  245. package/dist/socket/lanes.d.ts.map +1 -0
  246. package/dist/socket/lanes.js +103 -0
  247. package/dist/socket/reads.d.ts +10 -0
  248. package/dist/socket/reads.d.ts.map +1 -0
  249. package/dist/socket/reads.js +31 -0
  250. package/dist/socket/session.d.ts +38 -0
  251. package/dist/socket/session.d.ts.map +1 -0
  252. package/dist/socket/session.js +23 -0
  253. package/dist/socket.d.ts +67 -0
  254. package/dist/socket.d.ts.map +1 -0
  255. package/dist/socket.js +164 -0
  256. package/dist/source.d.ts +54 -0
  257. package/dist/source.d.ts.map +1 -0
  258. package/dist/source.js +82 -0
  259. package/dist/status.d.ts +4 -5
  260. package/dist/status.d.ts.map +1 -1
  261. package/dist/status.js +3 -7
  262. package/dist/store/installs.d.ts +30 -0
  263. package/dist/store/installs.d.ts.map +1 -0
  264. package/dist/store/installs.js +34 -0
  265. package/dist/store/readiness.d.ts +10 -0
  266. package/dist/store/readiness.d.ts.map +1 -0
  267. package/dist/store/readiness.js +52 -0
  268. package/dist/store/records.d.ts +214 -0
  269. package/dist/store/records.d.ts.map +1 -0
  270. package/dist/store/records.js +438 -0
  271. package/dist/store/room-held.d.ts +8 -0
  272. package/dist/store/room-held.d.ts.map +1 -0
  273. package/dist/store/room-held.js +17 -0
  274. package/dist/store/space.d.ts +11 -0
  275. package/dist/store/space.d.ts.map +1 -0
  276. package/dist/store/space.js +41 -0
  277. package/dist/store/watchers.d.ts +17 -0
  278. package/dist/store/watchers.d.ts.map +1 -0
  279. package/dist/store/watchers.js +56 -0
  280. package/dist/store/writes.d.ts +24 -0
  281. package/dist/store/writes.d.ts.map +1 -0
  282. package/dist/store/writes.js +125 -0
  283. package/dist/store.d.ts +111 -164
  284. package/dist/store.d.ts.map +1 -1
  285. package/dist/store.js +159 -754
  286. package/dist/stored.d.ts +157 -0
  287. package/dist/stored.d.ts.map +1 -0
  288. package/dist/stored.js +649 -0
  289. package/dist/surface.d.ts +88 -0
  290. package/dist/surface.d.ts.map +1 -0
  291. package/dist/surface.js +220 -0
  292. package/dist/sync.d.ts +19 -0
  293. package/dist/sync.d.ts.map +1 -0
  294. package/dist/sync.js +535 -0
  295. package/dist/tables.d.ts +415 -0
  296. package/dist/tables.d.ts.map +1 -0
  297. package/dist/tables.js +761 -0
  298. package/dist/tallies.d.ts +18 -0
  299. package/dist/tallies.d.ts.map +1 -0
  300. package/dist/tallies.js +129 -0
  301. package/dist/transfer.d.ts +0 -5
  302. package/dist/transfer.d.ts.map +1 -1
  303. package/dist/turn.d.ts +5 -3
  304. package/dist/turn.d.ts.map +1 -1
  305. package/dist/turn.js +51 -21
  306. package/dist/validation.d.ts +29 -0
  307. package/dist/validation.d.ts.map +1 -0
  308. package/dist/validation.js +104 -0
  309. package/dist/windows.d.ts +9 -16
  310. package/dist/windows.d.ts.map +1 -1
  311. package/dist/windows.js +11 -75
  312. package/dist/wire.d.ts +89 -9
  313. package/dist/wire.d.ts.map +1 -1
  314. package/dist/wire.js +29 -6
  315. package/package.json +19 -19
  316. package/AGENTS.md +0 -299
  317. package/dist/acquisition.d.ts +0 -14
  318. package/dist/acquisition.d.ts.map +0 -1
  319. package/dist/acquisition.js +0 -24
  320. package/dist/attempt.d.ts +0 -16
  321. package/dist/attempt.d.ts.map +0 -1
  322. package/dist/attempt.js +0 -70
  323. package/dist/chat/acts.d.ts +0 -33
  324. package/dist/chat/acts.d.ts.map +0 -1
  325. package/dist/chat/acts.js +0 -36
  326. package/dist/chat/context.d.ts +0 -3
  327. package/dist/chat/context.d.ts.map +0 -1
  328. package/dist/chat/earlier.d.ts +0 -10
  329. package/dist/chat/earlier.d.ts.map +0 -1
  330. package/dist/chat/earlier.js +0 -54
  331. package/dist/chat/input.d.ts +0 -9
  332. package/dist/chat/input.d.ts.map +0 -1
  333. package/dist/chat/input.js +0 -99
  334. package/dist/chat/kit.d.ts +0 -61
  335. package/dist/chat/kit.d.ts.map +0 -1
  336. package/dist/chat/kit.js +0 -123
  337. package/dist/chat/lasting.d.ts +0 -6
  338. package/dist/chat/lasting.d.ts.map +0 -1
  339. package/dist/chat/lasting.js +0 -19
  340. package/dist/chat/list.d.ts +0 -27
  341. package/dist/chat/list.d.ts.map +0 -1
  342. package/dist/chat/list.js +0 -99
  343. package/dist/chat/markdown.d.ts +0 -20
  344. package/dist/chat/markdown.d.ts.map +0 -1
  345. package/dist/chat/markdown.js +0 -188
  346. package/dist/chat/message.d.ts +0 -6
  347. package/dist/chat/message.d.ts.map +0 -1
  348. package/dist/chat/message.js +0 -192
  349. package/dist/chat/messages.d.ts +0 -22
  350. package/dist/chat/messages.d.ts.map +0 -1
  351. package/dist/chat/messages.js +0 -155
  352. package/dist/chat/name.d.ts +0 -6
  353. package/dist/chat/name.d.ts.map +0 -1
  354. package/dist/chat/name.js +0 -37
  355. package/dist/chat/opened.d.ts +0 -11
  356. package/dist/chat/opened.d.ts.map +0 -1
  357. package/dist/chat/opened.js +0 -17
  358. package/dist/chat/overlay.d.ts +0 -31
  359. package/dist/chat/overlay.d.ts.map +0 -1
  360. package/dist/chat/overlay.js +0 -97
  361. package/dist/chat/parts.d.ts +0 -57
  362. package/dist/chat/parts.d.ts.map +0 -1
  363. package/dist/chat/parts.js +0 -119
  364. package/dist/chat/process.d.ts +0 -20
  365. package/dist/chat/process.d.ts.map +0 -1
  366. package/dist/chat/process.js +0 -32
  367. package/dist/chat/provider.d.ts +0 -63
  368. package/dist/chat/provider.d.ts.map +0 -1
  369. package/dist/chat/provider.js +0 -635
  370. package/dist/chat/question.d.ts +0 -9
  371. package/dist/chat/question.d.ts.map +0 -1
  372. package/dist/chat/question.js +0 -69
  373. package/dist/chat/questions.d.ts.map +0 -1
  374. package/dist/chat/read.d.ts.map +0 -1
  375. package/dist/chat/ready.d.ts +0 -34
  376. package/dist/chat/ready.d.ts.map +0 -1
  377. package/dist/chat/ready.js +0 -91
  378. package/dist/chat/style.d.ts +0 -4
  379. package/dist/chat/style.d.ts.map +0 -1
  380. package/dist/chat/style.js +0 -302
  381. package/dist/chat.d.ts +0 -14
  382. package/dist/chat.d.ts.map +0 -1
  383. package/dist/chat.js +0 -8
  384. package/dist/fence.d.ts +0 -6
  385. package/dist/fence.d.ts.map +0 -1
  386. package/dist/fence.js +0 -10
  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 -25
  391. package/dist/read-side.d.ts.map +0 -1
  392. package/dist/read-side.js +0 -761
@@ -0,0 +1,17 @@
1
+ export function createRoomHeld() {
2
+ const rooms = new Map();
3
+ return {
4
+ of: (locator, key) => rooms.get(locator)?.get(key),
5
+ hold(locator, key, value) {
6
+ const room = rooms.get(locator) ?? new Map();
7
+ room.set(key, value);
8
+ rooms.set(locator, room);
9
+ },
10
+ drop(locator, key) {
11
+ rooms.get(locator)?.delete(key);
12
+ },
13
+ forget(locator) {
14
+ rooms.delete(locator);
15
+ },
16
+ };
17
+ }
@@ -0,0 +1,11 @@
1
+ import type { RuntimeDatabase } from '../tables.js';
2
+ export type Space = {
3
+ full(): boolean;
4
+ fill(): boolean;
5
+ probing(): boolean;
6
+ probeEachMinute(): void;
7
+ probe(): Promise<void>;
8
+ stop(): void;
9
+ };
10
+ export declare function createSpace(database: RuntimeDatabase, freed: () => void): Space;
11
+ //# sourceMappingURL=space.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/store/space.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,OAAO,CAAC;IAChB,OAAO,IAAI,OAAO,CAAC;IACnB,eAAe,IAAI,IAAI,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;CACd,CAAC;AAEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,KAAK,CA0C/E"}
@@ -0,0 +1,41 @@
1
+ export function createSpace(database, freed) {
2
+ let full = false;
3
+ let probing = null;
4
+ let testing = null;
5
+ function probe() {
6
+ testing ??= database.ask({ kind: 'space.probe' }).then(() => {
7
+ testing = null;
8
+ if (full) {
9
+ full = false;
10
+ if (probing !== null)
11
+ clearInterval(probing);
12
+ probing = null;
13
+ freed();
14
+ }
15
+ }, () => {
16
+ testing = null;
17
+ });
18
+ return testing;
19
+ }
20
+ return {
21
+ full: () => full,
22
+ fill() {
23
+ if (full)
24
+ return false;
25
+ full = true;
26
+ return true;
27
+ },
28
+ probing: () => probing !== null,
29
+ probeEachMinute() {
30
+ // A device whose storage filled after its install tries a write each minute, so space freed elsewhere ends its read-only mode without a Retry.
31
+ probing = setInterval(() => {
32
+ void probe();
33
+ }, 60_000);
34
+ },
35
+ probe,
36
+ stop() {
37
+ if (probing !== null)
38
+ clearInterval(probing);
39
+ },
40
+ };
41
+ }
@@ -0,0 +1,17 @@
1
+ export type Watcher = {
2
+ held(): boolean;
3
+ stop(): void;
4
+ answer(value: unknown): void;
5
+ };
6
+ export type Watching = 'all' | 'waiting' | 'ready';
7
+ type Watchers = {
8
+ publication(work: () => Promise<void>): Promise<void>;
9
+ owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
10
+ watch(topic: string, notify: (value: unknown) => void): Watcher;
11
+ watching(topic: string, which?: Watching): readonly Watcher[];
12
+ tell(topic: string, value: unknown): void;
13
+ close(): void;
14
+ };
15
+ export declare function createWatchers(unpublished: (error: unknown) => void): Watchers;
16
+ export {};
17
+ //# sourceMappingURL=watchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchers.d.ts","sourceRoot":"","sources":["../../src/store/watchers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;AAMnD,KAAK,QAAQ,GAAG;IACd,WAAW,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EACL,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,OAAO,EAAE,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CA6D9E"}
@@ -0,0 +1,56 @@
1
+ export function createWatchers(unpublished) {
2
+ let published = Promise.resolve();
3
+ const topics = new Map();
4
+ const owed = new Map();
5
+ function publication(work) {
6
+ published = published.then(work).catch(unpublished);
7
+ return published;
8
+ }
9
+ return {
10
+ publication,
11
+ owing(topic, add, work) {
12
+ const held = owed.get(topic);
13
+ if (held !== undefined) {
14
+ held.value = add(held.value);
15
+ return held.shown;
16
+ }
17
+ const owing = { value: add(undefined), shown: Promise.resolve() };
18
+ owed.set(topic, owing);
19
+ owing.shown = publication(async () => {
20
+ owed.delete(topic);
21
+ await work(owing.value);
22
+ });
23
+ return owing.shown;
24
+ },
25
+ watch(topic, notify) {
26
+ const held = topics.get(topic) ?? new Set();
27
+ topics.set(topic, held);
28
+ const watcher = {
29
+ ready: false,
30
+ held: () => topics.get(topic)?.has(watcher) === true,
31
+ stop() {
32
+ const on = topics.get(topic);
33
+ on?.delete(watcher);
34
+ if (on?.size === 0)
35
+ topics.delete(topic);
36
+ },
37
+ answer(value) {
38
+ watcher.ready = true;
39
+ notify(value);
40
+ },
41
+ };
42
+ held.add(watcher);
43
+ return watcher;
44
+ },
45
+ watching(topic, which = 'all') {
46
+ return [...(topics.get(topic) ?? [])].filter(({ ready }) => which === 'all' || ready === (which === 'ready'));
47
+ },
48
+ tell(topic, value) {
49
+ for (const watcher of topics.get(topic) ?? [])
50
+ watcher.answer(value);
51
+ },
52
+ close() {
53
+ topics.clear();
54
+ },
55
+ };
56
+ }
@@ -0,0 +1,24 @@
1
+ import type { Composition } from '../collection.js';
2
+ import type { RefreshedPage, RuntimeStore } from './records.js';
3
+ export type InstallHold = {
4
+ take(): void;
5
+ release(): void;
6
+ };
7
+ type Writes = {
8
+ exclusive<T>(work: () => Promise<T>): Promise<T>;
9
+ gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
10
+ written(): Promise<unknown>;
11
+ startingWrite<T>(work: () => Promise<T>): Promise<T>;
12
+ finishingWrite<T>(work: () => Promise<T>): Promise<T>;
13
+ ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
14
+ rederive(local: RuntimeStore, key: number, composition: Composition): Promise<{
15
+ readonly done: boolean;
16
+ readonly text: number;
17
+ }>;
18
+ refreshPage(local: RuntimeStore, key: number, composition: Composition, page: RefreshedPage): Promise<void>;
19
+ stageBytes(): number;
20
+ deriveBytes(): number;
21
+ };
22
+ export declare function createWrites(): Writes;
23
+ export {};
24
+ //# sourceMappingURL=writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../src/store/writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA8BhE,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC;AAE5D,KAAK,MAAM,GAAG;IACZ,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,CAAC,EAAE,CAAC,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,EACzC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,CACN,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,WAAW,CACT,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,UAAU,IAAI,MAAM,CAAC;IACrB,WAAW,IAAI,MAAM,CAAC;CACvB,CAAC;AAcF,wBAAgB,YAAY,IAAI,MAAM,CAqHrC"}
@@ -0,0 +1,125 @@
1
+ import { yielded } from '../turn.js';
2
+ const DERIVE_BYTES = 1 << 23;
3
+ const DERIVE_FLOOR = 1 << 18;
4
+ // An index build aims at this much database work, so a Save, a query or the next part's progress waits behind at most one short build.
5
+ const DERIVE_AIM_MS = 250;
6
+ // A build past its floor of text stops after a second and a half of work, its full-text writes included, so a Room whose text costs ten times the usual holds a Save, a query or the next part's progress behind no longer build.
7
+ const DERIVE_LONGEST_MS = 1_500;
8
+ const STAGE_BYTES = 1 << 20;
9
+ const STAGE_FLOOR = 1 << 16;
10
+ // A batch aims at this much database work, so a Save or a query waits behind at most one short write.
11
+ const STAGE_AIM_MS = 50;
12
+ async function timed(budget, work) {
13
+ const started = performance.now();
14
+ const done = await work();
15
+ const spent = performance.now() - started;
16
+ if (spent < budget.aim / 2)
17
+ budget.bytes = Math.min(budget.ceiling, Math.round(budget.bytes * 1.5));
18
+ else if (spent > budget.aim * 2) {
19
+ budget.bytes = Math.max(budget.floor, Math.round(budget.bytes / 1.5));
20
+ }
21
+ return done;
22
+ }
23
+ export function createWrites() {
24
+ let mutations = Promise.resolve();
25
+ let gathering = null;
26
+ const stageBudget = {
27
+ bytes: STAGE_FLOOR * 4,
28
+ floor: STAGE_FLOOR,
29
+ ceiling: STAGE_BYTES,
30
+ aim: STAGE_AIM_MS,
31
+ };
32
+ const deriveBudget = {
33
+ bytes: DERIVE_FLOOR * 4,
34
+ floor: DERIVE_FLOOR,
35
+ ceiling: DERIVE_BYTES,
36
+ aim: DERIVE_AIM_MS,
37
+ };
38
+ const installTurns = { busy: false, ahead: 0, finishing: [], starting: [] };
39
+ function exclusive(work) {
40
+ gathering = null;
41
+ const next = mutations.then(work, work);
42
+ mutations = next.then(() => undefined, () => undefined);
43
+ return next;
44
+ }
45
+ function gathered(key, input, merge, work) {
46
+ const tail = gathering;
47
+ if (tail !== null && tail.key === key) {
48
+ const merged = merge(tail.input, input);
49
+ if (merged !== null) {
50
+ tail.input = merged;
51
+ return tail.done;
52
+ }
53
+ }
54
+ const entry = { key, input, done: Promise.resolve() };
55
+ entry.done = exclusive(() => {
56
+ if (gathering === entry)
57
+ gathering = null;
58
+ return work(entry.input);
59
+ });
60
+ gathering = entry;
61
+ return entry.done;
62
+ }
63
+ function nextInstallTurn() {
64
+ if (installTurns.busy || installTurns.ahead > 0)
65
+ return;
66
+ const turn = installTurns.finishing.shift() ?? installTurns.starting.shift();
67
+ if (turn === undefined)
68
+ return;
69
+ installTurns.busy = true;
70
+ turn();
71
+ }
72
+ function installTurn(queue, work) {
73
+ return new Promise((resolve, reject) => {
74
+ queue.push(() => void exclusive(work)
75
+ .then(resolve, reject)
76
+ .finally(() => {
77
+ installTurns.busy = false;
78
+ nextInstallTurn();
79
+ }));
80
+ nextInstallTurn();
81
+ });
82
+ }
83
+ function resumeInstall() {
84
+ if (installTurns.ahead > 0)
85
+ return;
86
+ void yielded().then(nextInstallTurn);
87
+ }
88
+ async function ahead(work) {
89
+ let taken = false;
90
+ const hold = {
91
+ take() {
92
+ if (taken)
93
+ return;
94
+ taken = true;
95
+ installTurns.ahead += 1;
96
+ },
97
+ release() {
98
+ if (!taken)
99
+ return;
100
+ taken = false;
101
+ installTurns.ahead -= 1;
102
+ resumeInstall();
103
+ },
104
+ };
105
+ hold.take();
106
+ try {
107
+ return await work(hold);
108
+ }
109
+ finally {
110
+ hold.release();
111
+ }
112
+ }
113
+ return {
114
+ exclusive,
115
+ gathered,
116
+ written: () => mutations,
117
+ startingWrite: (work) => installTurn(installTurns.starting, work),
118
+ finishingWrite: (work) => installTurn(installTurns.finishing, work),
119
+ ahead,
120
+ rederive: (local, key, composition) => timed(deriveBudget, () => local.rederive(key, composition, deriveBudget.bytes, DERIVE_LONGEST_MS, DERIVE_FLOOR)),
121
+ refreshPage: (local, key, composition, page) => timed(stageBudget, () => local.refresh(key, composition, page)),
122
+ stageBytes: () => stageBudget.bytes,
123
+ deriveBytes: () => deriveBudget.bytes,
124
+ };
125
+ }
package/dist/store.d.ts CHANGED
@@ -1,175 +1,122 @@
1
- import type { ModelState } from './model.js';
2
- import type { Capability, HeadChange, Member, OperationScopes, ProviderLimit, ReplicaAdmission, TypedSelection } from './adapter.js';
3
- import type { AcceptedMessage, KeptReceipt } from './adapter.js';
1
+ import type { TypedPath } from './adapter.js';
2
+ import { schemaTypes } from './attached-model.js';
3
+ import { type Cell } from './cell.js';
4
4
  import type { ChangeBatch } from './change.js';
5
- import { type HeldBinary } from './overlay.js';
6
- import type { ChatDraftFile } from './file.js';
7
- import type { Submission } from './outcome.js';
8
- import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
9
- export declare const STORE_SCHEMA = 25;
10
- export declare const AUTHORED_SCHEMA = 3;
11
- export type ReplicaRecord = {
12
- locator: string;
13
- name: string;
14
- handle: string;
15
- operations: OperationScopes;
16
- replica: ReplicaAdmission;
17
- model: ModelState;
18
- typedSelection: TypedSelection | null;
19
- selectionModel: ModelState;
20
- providerOwnedPaths: readonly string[];
21
- roomVersion: string;
22
- transfer: string;
23
- documents: Readonly<Record<string, string>>;
24
- binaries: Readonly<Record<string, HeldBinary>>;
25
- revisions: Readonly<Record<string, string>>;
26
- fileIds: Readonly<Record<string, string>>;
27
- changes: Readonly<Record<string, HeadChange>>;
28
- written: Readonly<Record<string, string>>;
29
- };
30
- export type StagedLayer = Pick<ReplicaRecord, 'documents' | 'binaries' | 'revisions' | 'fileIds' | 'changes' | 'written'>;
31
- export type TransferRecord = {
32
- locator: string;
33
- transfer: string;
34
- selection: string;
35
- from: string;
36
- last: string;
37
- pageToken: string | null;
38
- models: {
39
- collection: ModelState;
40
- selection: ModelState;
41
- };
42
- };
43
- export type PendingState = {
44
- readonly drafts: readonly SavedDraft[];
45
- readonly submission: Submission;
46
- readonly lost: boolean;
47
- readonly upload?: unknown;
48
- readonly accepted?: string;
49
- };
50
- export type TargetRecord = {
51
- established: boolean;
52
- };
53
- export type QueueRecord = {
54
- locator: string;
55
- pending: readonly {
56
- batch: ChangeBatch;
57
- state: PendingState;
58
- }[];
59
- };
60
- export type PresentationRecord = {
61
- app: string;
62
- value: unknown;
63
- };
64
- export type HeldConversation = {
65
- conversation: string;
66
- read: string | null | undefined;
67
- partial: boolean;
68
- };
69
- export type MessageWindow = {
70
- messages: AcceptedMessage[];
71
- more: boolean;
5
+ import type { ChangeSet } from './change-set.js';
6
+ import type { Composition } from './collection.js';
7
+ import type { ReadinessWatch } from './preparation.js';
8
+ import type { Persistence } from './readiness.js';
9
+ import type { Retries } from './retried.js';
10
+ import type { Listing } from './listing.js';
11
+ import type { Seeded } from './seed.js';
12
+ import type { ModelState } from './model.js';
13
+ import { type OpenedFiles } from './opened.js';
14
+ import { type HeldReplica, type ReplicaRecord } from './replica.js';
15
+ import type { RoomDraftRecord } from './room-draft.js';
16
+ import { type SyncStatus } from './status.js';
17
+ import type { RuntimeDatabase } from './tables.js';
18
+ import { type Installs } from './store/installs.js';
19
+ import { type HeldCover, type HeldStatus, type PendingState, type RuntimeStore } from './store/records.js';
20
+ import { type ReadinessQueue } from './store/readiness.js';
21
+ import { type RoomHeld } from './store/room-held.js';
22
+ import { type Space } from './store/space.js';
23
+ import { type Watcher, type Watching } from './store/watchers.js';
24
+ import { createWrites, type InstallHold } from './store/writes.js';
25
+ export type { RoomInstall } from './store/installs.js';
26
+ export type { AuthoredWrite, ChatDraftRecord, ChatSubmission, ConversationFact, CoveredRoom, Facts, HeldConversation, HeldCover, PendingState, RefreshedPage, RuntimeStore, StagedPage, TransferRecord, } from './store/records.js';
27
+ export type { InstallHold } from './store/writes.js';
28
+ export type { CommittedWrite, QueryRoom, RoomCommit, RuntimeDatabase, StoredEntry, StoredFile, View, } from './tables.js';
29
+ export type Stored = {
30
+ readonly record: ReplicaRecord;
31
+ readonly indexed: boolean;
32
+ readonly documents: number;
72
33
  };
73
- export type ConversationWrite = {
74
- conversation: string;
75
- messages: readonly AcceptedMessage[];
76
- read?: {
77
- at: string | null;
78
- partial: boolean;
79
- };
34
+ export type Held = HeldReplica & {
35
+ readonly states: ReadonlyMap<string, PendingState>;
80
36
  };
81
- export type ChatSubmission = {
82
- readonly operation: string;
83
- readonly text: string;
84
- readonly files: readonly ChatDraftFile[];
85
- readonly turn: string | null;
37
+ export type Work = {
38
+ readonly replica: Held | undefined;
39
+ readonly queue: readonly ChangeBatch[];
40
+ readonly states: ReadonlyMap<string, PendingState>;
86
41
  };
87
- export type ChatDraftRecord = {
88
- conversation: string;
89
- text: string;
90
- files: readonly ChatDraftFile[];
91
- revision: string;
92
- submitted?: readonly ChatSubmission[];
93
- moves?: readonly string[];
42
+ type LandedAhead = Readonly<Record<string, string | undefined>>;
43
+ type AttachedFile = {
44
+ readonly revision: string;
45
+ readonly mediaType: string;
94
46
  };
95
- export type CallRecord = {
96
- readonly operation: string;
97
- readonly name: string;
98
- readonly input: unknown;
47
+ type Seeds = {
48
+ of(key: string): Seeded | undefined;
49
+ keep(key: string, seed: Seeded): void;
50
+ drop(key: string): void;
99
51
  };
100
- export type RecordWrite = {
101
- next: ReplicaRecord;
102
- previous: ReplicaRecord | null;
103
- stored?: StagedLayer;
52
+ type Device = {
53
+ readonly persistence: Persistence;
54
+ readonly storageLoss: string | null;
55
+ readonly heldWhenOpened: boolean;
56
+ readonly preparing: boolean;
57
+ readonly sweeping: boolean;
58
+ readonly unpreparedDemand: ReadonlySet<string>;
59
+ readonly unpreparable: ReadonlySet<string>;
60
+ readonly establishing: ReadonlySet<string>;
61
+ readonly status: SyncStatus;
62
+ readonly roomsShown: Listing | null;
104
63
  };
105
- export type AuthoredWrite = {
106
- locator: string;
107
- queue: readonly ChangeBatch[];
108
- founded?: readonly ChangeBatch[];
109
- saved?: ReadonlyMap<string, readonly SavedDraft[]>;
110
- roomDrafts?: readonly RoomDraftRecord[];
111
- consumedRoomDrafts?: readonly string[];
64
+ type StoreOptions = {
65
+ readonly database: RuntimeDatabase;
66
+ readonly roomTypes: Parameters<typeof schemaTypes>[1];
67
+ readonly builtIn: ModelState;
68
+ readonly typedPaths: readonly TypedPath[];
69
+ readonly persistence: Persistence;
70
+ readonly retries: Retries;
71
+ lost(locator: string): boolean;
72
+ opening(records: RuntimeStore): Promise<RuntimeStore>;
73
+ unpublished(error: unknown): void;
74
+ changed(set: ChangeSet): Promise<void>;
75
+ deliverReadiness(owed: readonly ReadinessWatch[]): Promise<void>;
76
+ spaceFreed(): void;
112
77
  };
113
- export type RuntimeStore = {
114
- all(): Promise<readonly ReplicaRecord[]>;
115
- keepAuthored(input: AuthoredWrite): Promise<void>;
116
- write(input: RecordWrite): Promise<void>;
117
- revokeModels(records: readonly ReplicaRecord[]): Promise<void>;
118
- lastCompleted(): Promise<string | null>;
119
- complete(at: string): Promise<void>;
120
- providerLimits(): Promise<readonly ProviderLimit[]>;
121
- capabilities(): Promise<readonly Capability[]>;
122
- declare(limits: readonly ProviderLimit[], capabilities: readonly Capability[]): Promise<void>;
123
- member(): Promise<Member | null>;
124
- keepMember(member: Member | null): Promise<void>;
125
- targets(): Promise<Readonly<Record<string, TargetRecord>>>;
126
- keepTargets(targets: Readonly<Record<string, TargetRecord>>): Promise<void>;
127
- queues(): Promise<readonly QueueRecord[]>;
128
- submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
129
- accept(locator: string, id: string, roomVersion: string): Promise<void>;
130
- keepUpload(locator: string, id: string, upload: unknown): Promise<void>;
131
- roomDrafts(): Promise<readonly RoomDraftRecord[]>;
132
- presentation(): Promise<readonly PresentationRecord[]>;
133
- present(record: PresentationRecord): Promise<void>;
134
- conversations(): Promise<readonly HeldConversation[]>;
135
- keepMessages(write: ConversationWrite): Promise<void>;
136
- messageWindow(conversation: string, limit: number | undefined, before: readonly [string, string] | null): Promise<MessageWindow>;
137
- messageCount(conversation: string): Promise<number>;
138
- messagesAfter(conversation: string, identity: string | null): Promise<AcceptedMessage[]>;
139
- messageIdentities(conversation: string): Promise<readonly string[]>;
140
- turnArrived(conversation: string, turn: string): Promise<boolean>;
141
- dropConversations(conversations: readonly string[]): Promise<void>;
142
- chatDrafts(): Promise<readonly ChatDraftRecord[]>;
143
- keepChatDrafts(records: readonly ChatDraftRecord[]): Promise<void>;
144
- dropChatDraft(conversation: string): Promise<void>;
145
- calls(): Promise<readonly CallRecord[]>;
146
- keepCall(record: CallRecord): Promise<void>;
147
- dropCall(operation: string): Promise<void>;
148
- keepRoomDraft(record: RoomDraftRecord): Promise<void>;
149
- discardRoomDraft(locator: string, path: string): Promise<void>;
150
- fences(): Promise<readonly string[]>;
151
- erase(locators: readonly string[]): Promise<void>;
152
- discard(locator: string): Promise<void>;
153
- transfers(): Promise<readonly TransferRecord[]>;
154
- staged(record: TransferRecord): Promise<StagedLayer>;
155
- stage(record: TransferRecord, page: StagedLayer): Promise<void>;
156
- abandon(locator: string): Promise<void>;
157
- receivedHeads(): Promise<readonly KeptReceipt[]>;
158
- receivedParts(key: string, count: number): Promise<readonly unknown[]>;
159
- keepReceived(key: string, head: unknown, part?: {
160
- index: number;
161
- value: unknown;
162
- }): Promise<void>;
163
- dropReceived(keys: readonly string[]): Promise<void>;
164
- generation(): Promise<string | null>;
165
- rememberGeneration(value: string): Promise<void>;
78
+ export type Store = {
79
+ readonly device: Cell<Device>;
80
+ readonly space: Space;
81
+ readonly readiness: ReadinessQueue<ReadinessWatch>;
82
+ ask: RuntimeDatabase['ask'];
83
+ changed(set: ChangeSet): Promise<void>;
84
+ open(): Promise<RuntimeStore>;
85
+ durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;
86
+ exclusive<T>(work: () => Promise<T>): Promise<T>;
87
+ gathered<I, T>(key: string, input: I, merge: (earlier: I, later: I) => I | null, work: (input: I) => Promise<T>): Promise<T>;
88
+ written(): Promise<unknown>;
89
+ startingWrite<T>(work: () => Promise<T>): Promise<T>;
90
+ finishingWrite<T>(work: () => Promise<T>): Promise<T>;
91
+ ahead<T>(work: (hold: InstallHold) => Promise<T>): Promise<T>;
92
+ rederive: ReturnType<typeof createWrites>['rederive'];
93
+ refreshPage: ReturnType<typeof createWrites>['refreshPage'];
94
+ stageBytes(): number;
95
+ deriveBytes(): number;
96
+ rooms(locators?: readonly string[]): Promise<ReadonlyMap<string, Stored>>;
97
+ record(locator: string): Promise<ReplicaRecord | undefined>;
98
+ work(locator: string): Promise<Work>;
99
+ replica(locator: string): Promise<Held | undefined>;
100
+ covering(): Promise<HeldCover>;
101
+ status(): Promise<HeldStatus>;
102
+ queued(): Promise<readonly string[]>;
103
+ drafts(locator?: string, paths?: readonly string[]): Promise<readonly RoomDraftRecord[]>;
104
+ draft(locator: string, path: string): Promise<RoomDraftRecord | undefined>;
105
+ composed(record: Pick<ReplicaRecord, 'model' | 'declaration'>): Composition;
106
+ publication(work: () => Promise<void>): Promise<void>;
107
+ owing<T>(topic: string, add: (owed: T | undefined) => T, work: (owed: T) => Promise<void>): Promise<void>;
108
+ watch(topic: string, notify: (value: unknown) => void): Watcher;
109
+ watching(topic: string, which?: Watching): readonly Watcher[];
110
+ tell(topic: string, value: unknown): void;
111
+ readonly installs: Installs;
112
+ readonly seeds: Seeds;
113
+ readonly landed: RoomHeld<LandedAhead>;
114
+ readonly attached: RoomHeld<AttachedFile>;
115
+ readonly opened: OpenedFiles;
116
+ part(file: string, part: number): Promise<Uint8Array | null>;
117
+ prepareAgain(locator?: string): void;
118
+ forget(locator: string): void;
166
119
  close(): void;
167
120
  };
168
- export declare function authoredHolder(): Promise<string | null>;
169
- export declare function authoredBy(holder: string): Promise<boolean>;
170
- export declare function authoredBinding(): Promise<string | null>;
171
- export declare function bindAuthored(binding: string): Promise<void>;
172
- export declare function removeRuntimeStore(holder?: string): Promise<boolean>;
173
- export declare function openDatabase(name: string, version: number, upgrade: (opening: IDBOpenDBRequest, oldVersion: number) => void): Promise<IDBDatabase>;
174
- export declare function openRuntimeStore(fenced: (locator: string) => boolean): Promise<RuntimeStore>;
121
+ export declare function createStore(options: StoreOptions): Store;
175
122
  //# sourceMappingURL=store.d.ts.map