@dxos/echo-db 2.33.5-dev.0a40e013 → 2.33.5-dev.0d84e06f

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 (352) hide show
  1. package/dist/src/api/index.d.ts +0 -5
  2. package/dist/src/api/index.d.ts.map +1 -1
  3. package/dist/src/api/index.js +0 -5
  4. package/dist/src/api/index.js.map +1 -1
  5. package/dist/src/api/schema.test.js +1 -1
  6. package/dist/src/api/schema.test.js.map +1 -1
  7. package/dist/src/echo.d.ts +1 -0
  8. package/dist/src/echo.d.ts.map +1 -1
  9. package/dist/src/echo.js +9 -20
  10. package/dist/src/echo.js.map +1 -1
  11. package/dist/src/echo.test.js +12 -0
  12. package/dist/src/echo.test.js.map +1 -1
  13. package/dist/src/halo/contact-manager.d.ts +2 -1
  14. package/dist/src/halo/contact-manager.d.ts.map +1 -1
  15. package/dist/src/halo/contact-manager.js +1 -1
  16. package/dist/src/halo/contact-manager.js.map +1 -1
  17. package/dist/src/halo/halo-factory.d.ts.map +1 -1
  18. package/dist/src/halo/halo-factory.js +5 -11
  19. package/dist/src/halo/halo-factory.js.map +1 -1
  20. package/dist/src/halo/halo-party.d.ts +1 -1
  21. package/dist/src/halo/halo-party.d.ts.map +1 -1
  22. package/dist/src/halo/halo-party.js +5 -5
  23. package/dist/src/halo/halo-party.js.map +1 -1
  24. package/dist/src/halo/halo.test.js +4 -3
  25. package/dist/src/halo/halo.test.js.map +1 -1
  26. package/dist/src/halo/identity.js +2 -2
  27. package/dist/src/halo/identity.js.map +1 -1
  28. package/dist/src/halo/party-opener.d.ts +1 -1
  29. package/dist/src/halo/party-opener.d.ts.map +1 -1
  30. package/dist/src/halo/party-opener.js +2 -2
  31. package/dist/src/halo/party-opener.js.map +1 -1
  32. package/dist/src/halo/preferences.d.ts +1 -1
  33. package/dist/src/halo/preferences.d.ts.map +1 -1
  34. package/dist/src/halo/preferences.js +8 -11
  35. package/dist/src/halo/preferences.js.map +1 -1
  36. package/dist/src/index.d.ts +2 -2
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +2 -2
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/invitations/greeting-protocol-provider.d.ts.map +1 -1
  41. package/dist/src/invitations/greeting-protocol-provider.js +5 -9
  42. package/dist/src/invitations/greeting-protocol-provider.js.map +1 -1
  43. package/dist/src/invitations/greeting-responder.d.ts +6 -4
  44. package/dist/src/invitations/greeting-responder.d.ts.map +1 -1
  45. package/dist/src/invitations/greeting-responder.js +11 -14
  46. package/dist/src/invitations/greeting-responder.js.map +1 -1
  47. package/dist/src/invitations/halo-recovery-initiator.js +1 -1
  48. package/dist/src/invitations/halo-recovery-initiator.js.map +1 -1
  49. package/dist/src/invitations/invitation-descriptor.js +1 -1
  50. package/dist/src/invitations/invitation-descriptor.js.map +1 -1
  51. package/dist/src/invitations/invitation-factory.d.ts +5 -2
  52. package/dist/src/invitations/invitation-factory.d.ts.map +1 -1
  53. package/dist/src/invitations/invitation-factory.js +4 -3
  54. package/dist/src/invitations/invitation-factory.js.map +1 -1
  55. package/dist/src/invitations/offline-invitation-claimer.d.ts.map +1 -1
  56. package/dist/src/invitations/offline-invitation-claimer.js +6 -8
  57. package/dist/src/invitations/offline-invitation-claimer.js.map +1 -1
  58. package/dist/src/{database → packlets/database}/data-mirror.d.ts +0 -0
  59. package/dist/src/packlets/database/data-mirror.d.ts.map +1 -0
  60. package/dist/src/{database → packlets/database}/data-mirror.js +0 -0
  61. package/dist/src/packlets/database/data-mirror.js.map +1 -0
  62. package/dist/src/{database → packlets/database}/data-mirror.test.d.ts +0 -0
  63. package/dist/src/packlets/database/data-mirror.test.d.ts.map +1 -0
  64. package/dist/src/{database → packlets/database}/data-mirror.test.js +0 -0
  65. package/dist/src/packlets/database/data-mirror.test.js.map +1 -0
  66. package/dist/src/{database → packlets/database}/data-service-host.d.ts +0 -0
  67. package/dist/src/packlets/database/data-service-host.d.ts.map +1 -0
  68. package/dist/src/{database → packlets/database}/data-service-host.js +4 -3
  69. package/dist/src/packlets/database/data-service-host.js.map +1 -0
  70. package/dist/src/{database → packlets/database}/data-service-router.d.ts +0 -0
  71. package/dist/src/packlets/database/data-service-router.d.ts.map +1 -0
  72. package/dist/src/{database → packlets/database}/data-service-router.js +0 -0
  73. package/dist/src/packlets/database/data-service-router.js.map +1 -0
  74. package/dist/src/{database → packlets/database}/database-backend.d.ts +0 -0
  75. package/dist/src/packlets/database/database-backend.d.ts.map +1 -0
  76. package/dist/src/{database → packlets/database}/database-backend.js +0 -0
  77. package/dist/src/packlets/database/database-backend.js.map +1 -0
  78. package/dist/src/{api → packlets/database}/database.d.ts +2 -1
  79. package/dist/src/packlets/database/database.d.ts.map +1 -0
  80. package/dist/src/{api → packlets/database}/database.js +2 -2
  81. package/dist/src/packlets/database/database.js.map +1 -0
  82. package/dist/src/{api → packlets/database}/database.test.d.ts +0 -0
  83. package/dist/src/packlets/database/database.test.d.ts.map +1 -0
  84. package/dist/src/{api → packlets/database}/database.test.js +3 -3
  85. package/dist/src/packlets/database/database.test.js.map +1 -0
  86. package/dist/src/{api → packlets/database}/entity.d.ts +1 -1
  87. package/dist/src/packlets/database/entity.d.ts.map +1 -0
  88. package/dist/src/{api → packlets/database}/entity.js +0 -0
  89. package/dist/src/packlets/database/entity.js.map +1 -0
  90. package/dist/src/{database → packlets/database}/index.d.ts +5 -0
  91. package/dist/src/packlets/database/index.d.ts.map +1 -0
  92. package/dist/src/{database → packlets/database}/index.js +5 -0
  93. package/dist/src/packlets/database/index.js.map +1 -0
  94. package/dist/src/{database → packlets/database}/item-demuxer.d.ts +3 -2
  95. package/dist/src/packlets/database/item-demuxer.d.ts.map +1 -0
  96. package/dist/src/{database → packlets/database}/item-demuxer.js +3 -3
  97. package/dist/src/packlets/database/item-demuxer.js.map +1 -0
  98. package/dist/src/{database → packlets/database}/item-demuxer.test.d.ts +0 -0
  99. package/dist/src/packlets/database/item-demuxer.test.d.ts.map +1 -0
  100. package/dist/src/{database → packlets/database}/item-demuxer.test.js +2 -2
  101. package/dist/src/packlets/database/item-demuxer.test.js.map +1 -0
  102. package/dist/src/{database → packlets/database}/item-manager.d.ts +3 -1
  103. package/dist/src/packlets/database/item-manager.d.ts.map +1 -0
  104. package/dist/src/{database → packlets/database}/item-manager.js +13 -12
  105. package/dist/src/packlets/database/item-manager.js.map +1 -0
  106. package/dist/src/{database → packlets/database}/item-manager.test.d.ts +0 -0
  107. package/dist/src/packlets/database/item-manager.test.d.ts.map +1 -0
  108. package/dist/src/{database → packlets/database}/item-manager.test.js +0 -0
  109. package/dist/src/packlets/database/item-manager.test.js.map +1 -0
  110. package/dist/src/{api → packlets/database}/item.d.ts +1 -1
  111. package/dist/src/packlets/database/item.d.ts.map +1 -0
  112. package/dist/src/{api → packlets/database}/item.js +0 -0
  113. package/dist/src/packlets/database/item.js.map +1 -0
  114. package/dist/src/{api → packlets/database}/link.d.ts +1 -1
  115. package/dist/src/packlets/database/link.d.ts.map +1 -0
  116. package/dist/src/{api → packlets/database}/link.js +0 -0
  117. package/dist/src/packlets/database/link.js.map +1 -0
  118. package/dist/src/{api → packlets/database}/selection/index.d.ts +0 -0
  119. package/dist/src/packlets/database/selection/index.d.ts.map +1 -0
  120. package/dist/src/{api → packlets/database}/selection/index.js +0 -0
  121. package/dist/src/packlets/database/selection/index.js.map +1 -0
  122. package/dist/src/{api → packlets/database}/selection/queries.d.ts +0 -0
  123. package/dist/src/packlets/database/selection/queries.d.ts.map +1 -0
  124. package/dist/src/{api → packlets/database}/selection/queries.js +13 -17
  125. package/dist/src/packlets/database/selection/queries.js.map +1 -0
  126. package/dist/src/{api → packlets/database}/selection/result.d.ts +0 -0
  127. package/dist/src/packlets/database/selection/result.d.ts.map +1 -0
  128. package/dist/src/{api → packlets/database}/selection/result.js +0 -0
  129. package/dist/src/packlets/database/selection/result.js.map +1 -0
  130. package/dist/src/{api → packlets/database}/selection/selection.d.ts +0 -0
  131. package/dist/src/packlets/database/selection/selection.d.ts.map +1 -0
  132. package/dist/src/{api → packlets/database}/selection/selection.js +1 -3
  133. package/dist/src/packlets/database/selection/selection.js.map +1 -0
  134. package/dist/src/{api → packlets/database}/selection/selection.test.d.ts +0 -0
  135. package/dist/src/packlets/database/selection/selection.test.d.ts.map +1 -0
  136. package/dist/src/{api → packlets/database}/selection/selection.test.js +4 -12
  137. package/dist/src/packlets/database/selection/selection.test.js.map +1 -0
  138. package/dist/src/{api → packlets/database}/selection/util.d.ts +0 -0
  139. package/dist/src/packlets/database/selection/util.d.ts.map +1 -0
  140. package/dist/src/{api → packlets/database}/selection/util.js +0 -0
  141. package/dist/src/packlets/database/selection/util.js.map +1 -0
  142. package/dist/src/{database → packlets/database}/testing.d.ts +1 -1
  143. package/dist/src/packlets/database/testing.d.ts.map +1 -0
  144. package/dist/src/{database → packlets/database}/testing.js +4 -4
  145. package/dist/src/packlets/database/testing.js.map +1 -0
  146. package/dist/src/{database → packlets/database}/timeframe-clock.d.ts +0 -0
  147. package/dist/src/packlets/database/timeframe-clock.d.ts.map +1 -0
  148. package/dist/src/{database → packlets/database}/timeframe-clock.js +0 -0
  149. package/dist/src/packlets/database/timeframe-clock.js.map +1 -0
  150. package/dist/src/{errors.d.ts → packlets/errors/index.d.ts} +1 -1
  151. package/dist/src/packlets/errors/index.d.ts.map +1 -0
  152. package/dist/src/{errors.js → packlets/errors/index.js} +1 -1
  153. package/dist/src/packlets/errors/index.js.map +1 -0
  154. package/dist/src/parties/data-party.d.ts +8 -5
  155. package/dist/src/parties/data-party.d.ts.map +1 -1
  156. package/dist/src/parties/data-party.js +10 -9
  157. package/dist/src/parties/data-party.js.map +1 -1
  158. package/dist/src/parties/data-party.test.js +18 -17
  159. package/dist/src/parties/data-party.test.js.map +1 -1
  160. package/dist/src/parties/party-factory.d.ts +0 -6
  161. package/dist/src/parties/party-factory.d.ts.map +1 -1
  162. package/dist/src/parties/party-factory.js +20 -48
  163. package/dist/src/parties/party-factory.js.map +1 -1
  164. package/dist/src/parties/party-manager.d.ts.map +1 -1
  165. package/dist/src/parties/party-manager.js +2 -1
  166. package/dist/src/parties/party-manager.js.map +1 -1
  167. package/dist/src/parties/party-manager.test.js +13 -9
  168. package/dist/src/parties/party-manager.test.js.map +1 -1
  169. package/dist/src/pipeline/message-selector.d.ts +3 -3
  170. package/dist/src/pipeline/message-selector.d.ts.map +1 -1
  171. package/dist/src/pipeline/message-selector.js +30 -29
  172. package/dist/src/pipeline/message-selector.js.map +1 -1
  173. package/dist/src/pipeline/metadata-store.d.ts +3 -3
  174. package/dist/src/pipeline/metadata-store.d.ts.map +1 -1
  175. package/dist/src/pipeline/metadata-store.js +5 -5
  176. package/dist/src/pipeline/metadata-store.js.map +1 -1
  177. package/dist/src/pipeline/metadata-store.test.js +8 -4
  178. package/dist/src/pipeline/metadata-store.test.js.map +1 -1
  179. package/dist/src/pipeline/party-core.d.ts +4 -3
  180. package/dist/src/pipeline/party-core.d.ts.map +1 -1
  181. package/dist/src/pipeline/party-core.js +7 -7
  182. package/dist/src/pipeline/party-core.js.map +1 -1
  183. package/dist/src/pipeline/party-core.test.js +28 -27
  184. package/dist/src/pipeline/party-core.test.js.map +1 -1
  185. package/dist/src/pipeline/party-processor.d.ts +21 -9
  186. package/dist/src/pipeline/party-processor.d.ts.map +1 -1
  187. package/dist/src/pipeline/party-processor.js +0 -8
  188. package/dist/src/pipeline/party-processor.js.map +1 -1
  189. package/dist/src/pipeline/pipeline.d.ts +3 -5
  190. package/dist/src/pipeline/pipeline.d.ts.map +1 -1
  191. package/dist/src/pipeline/pipeline.js +8 -11
  192. package/dist/src/pipeline/pipeline.js.map +1 -1
  193. package/dist/src/pipeline/pipeline.test.js +4 -5
  194. package/dist/src/pipeline/pipeline.test.js.map +1 -1
  195. package/dist/src/protocol/auth-plugin.d.ts +1 -1
  196. package/dist/src/protocol/auth-plugin.d.ts.map +1 -1
  197. package/dist/src/protocol/auth-plugin.js +1 -3
  198. package/dist/src/protocol/auth-plugin.js.map +1 -1
  199. package/dist/src/protocol/authenticator.d.ts +4 -4
  200. package/dist/src/protocol/authenticator.d.ts.map +1 -1
  201. package/dist/src/protocol/authenticator.js +12 -16
  202. package/dist/src/protocol/authenticator.js.map +1 -1
  203. package/dist/src/protocol/authenticator.test.js +1 -4
  204. package/dist/src/protocol/authenticator.test.js.map +1 -1
  205. package/dist/src/protocol/halo-recovery-plugin.d.ts +1 -1
  206. package/dist/src/protocol/halo-recovery-plugin.d.ts.map +1 -1
  207. package/dist/src/protocol/halo-recovery-plugin.js +1 -3
  208. package/dist/src/protocol/halo-recovery-plugin.js.map +1 -1
  209. package/dist/src/protocol/identity-credentials.d.ts +2 -2
  210. package/dist/src/protocol/identity-credentials.d.ts.map +1 -1
  211. package/dist/src/protocol/identity-credentials.js +4 -4
  212. package/dist/src/protocol/identity-credentials.js.map +1 -1
  213. package/dist/src/protocol/offline-invitation-plugin.d.ts +1 -1
  214. package/dist/src/protocol/offline-invitation-plugin.d.ts.map +1 -1
  215. package/dist/src/protocol/offline-invitation-plugin.js +1 -3
  216. package/dist/src/protocol/offline-invitation-plugin.js.map +1 -1
  217. package/dist/src/protocol/replicator-plugin.d.ts.map +1 -1
  218. package/dist/src/protocol/replicator-plugin.js +4 -6
  219. package/dist/src/protocol/replicator-plugin.js.map +1 -1
  220. package/dist/src/snapshots/snapshot-generator.d.ts +2 -2
  221. package/dist/src/snapshots/snapshot-generator.d.ts.map +1 -1
  222. package/dist/src/snapshots/snapshot-generator.js +13 -15
  223. package/dist/src/snapshots/snapshot-generator.js.map +1 -1
  224. package/dist/src/snapshots/snapshot-store.d.ts +3 -3
  225. package/dist/src/snapshots/snapshot-store.d.ts.map +1 -1
  226. package/dist/src/snapshots/snapshot-store.js +5 -5
  227. package/dist/src/snapshots/snapshot-store.js.map +1 -1
  228. package/dist/src/snapshots/snapshot-store.test.js +1 -1
  229. package/dist/src/snapshots/snapshot-store.test.js.map +1 -1
  230. package/dist/src/snapshots/snapshot.test.js +1 -1
  231. package/dist/src/snapshots/snapshot.test.js.map +1 -1
  232. package/dist/src/testing/testing-factories.d.ts +1 -1
  233. package/dist/src/testing/testing-factories.d.ts.map +1 -1
  234. package/dist/src/testing/testing-factories.js +2 -2
  235. package/dist/src/testing/testing-factories.js.map +1 -1
  236. package/dist/tsconfig.tsbuildinfo +1 -1
  237. package/package.json +18 -18
  238. package/src/api/index.ts +0 -5
  239. package/src/api/schema.test.ts +1 -2
  240. package/src/echo.test.ts +16 -1
  241. package/src/echo.ts +10 -20
  242. package/src/halo/contact-manager.ts +3 -2
  243. package/src/halo/halo-factory.ts +6 -18
  244. package/src/halo/halo-party.ts +10 -5
  245. package/src/halo/halo.test.ts +4 -3
  246. package/src/halo/identity.ts +2 -2
  247. package/src/halo/party-opener.ts +2 -2
  248. package/src/halo/preferences.ts +10 -12
  249. package/src/index.ts +3 -2
  250. package/src/invitations/greeting-protocol-provider.ts +5 -9
  251. package/src/invitations/greeting-responder.ts +15 -17
  252. package/src/invitations/halo-recovery-initiator.ts +1 -1
  253. package/src/invitations/invitation-descriptor.ts +1 -1
  254. package/src/invitations/invitation-factory.ts +8 -5
  255. package/src/invitations/offline-invitation-claimer.ts +6 -8
  256. package/src/{database → packlets/database}/data-mirror.test.ts +1 -1
  257. package/src/{database → packlets/database}/data-mirror.ts +1 -1
  258. package/src/{database → packlets/database}/data-service-host.ts +2 -1
  259. package/src/{database → packlets/database}/data-service-router.ts +0 -0
  260. package/src/{database → packlets/database}/database-backend.ts +0 -0
  261. package/src/{api → packlets/database}/database.test.ts +2 -1
  262. package/src/{api → packlets/database}/database.ts +3 -1
  263. package/src/{api → packlets/database}/entity.ts +1 -1
  264. package/src/{database → packlets/database}/index.ts +5 -0
  265. package/src/{database → packlets/database}/item-demuxer.test.ts +1 -1
  266. package/src/{database → packlets/database}/item-demuxer.ts +5 -3
  267. package/src/{database → packlets/database}/item-manager.test.ts +0 -0
  268. package/src/{database → packlets/database}/item-manager.ts +5 -3
  269. package/src/{api → packlets/database}/item.ts +2 -2
  270. package/src/{api → packlets/database}/link.ts +1 -1
  271. package/src/{api → packlets/database}/selection/index.ts +0 -0
  272. package/src/{api → packlets/database}/selection/queries.ts +14 -18
  273. package/src/{api → packlets/database}/selection/result.ts +0 -0
  274. package/src/{api → packlets/database}/selection/selection.test.ts +4 -12
  275. package/src/{api → packlets/database}/selection/selection.ts +1 -7
  276. package/src/{api → packlets/database}/selection/util.ts +0 -0
  277. package/src/{database → packlets/database}/testing.ts +2 -2
  278. package/src/{database → packlets/database}/timeframe-clock.ts +0 -0
  279. package/src/{errors.ts → packlets/errors/index.ts} +0 -0
  280. package/src/parties/data-party.test.ts +19 -17
  281. package/src/parties/data-party.ts +15 -10
  282. package/src/parties/party-factory.ts +26 -72
  283. package/src/parties/party-manager.test.ts +20 -10
  284. package/src/parties/party-manager.ts +2 -1
  285. package/src/pipeline/message-selector.ts +32 -35
  286. package/src/pipeline/metadata-store.test.ts +8 -4
  287. package/src/pipeline/metadata-store.ts +5 -5
  288. package/src/pipeline/party-core.test.ts +29 -28
  289. package/src/pipeline/party-core.ts +8 -9
  290. package/src/pipeline/party-processor.ts +23 -15
  291. package/src/pipeline/pipeline.test.ts +4 -5
  292. package/src/pipeline/pipeline.ts +12 -15
  293. package/src/protocol/auth-plugin.ts +1 -3
  294. package/src/protocol/authenticator.test.ts +1 -4
  295. package/src/protocol/authenticator.ts +33 -33
  296. package/src/protocol/halo-recovery-plugin.ts +4 -6
  297. package/src/protocol/identity-credentials.ts +4 -4
  298. package/src/protocol/offline-invitation-plugin.ts +4 -6
  299. package/src/protocol/replicator-plugin.ts +4 -6
  300. package/src/snapshots/snapshot-generator.ts +13 -17
  301. package/src/snapshots/snapshot-store.test.ts +1 -1
  302. package/src/snapshots/snapshot-store.ts +5 -6
  303. package/src/snapshots/snapshot.test.ts +1 -1
  304. package/src/testing/testing-factories.ts +3 -3
  305. package/dist/src/api/database.d.ts.map +0 -1
  306. package/dist/src/api/database.js.map +0 -1
  307. package/dist/src/api/database.test.d.ts.map +0 -1
  308. package/dist/src/api/database.test.js.map +0 -1
  309. package/dist/src/api/entity.d.ts.map +0 -1
  310. package/dist/src/api/entity.js.map +0 -1
  311. package/dist/src/api/item.d.ts.map +0 -1
  312. package/dist/src/api/item.js.map +0 -1
  313. package/dist/src/api/link.d.ts.map +0 -1
  314. package/dist/src/api/link.js.map +0 -1
  315. package/dist/src/api/selection/index.d.ts.map +0 -1
  316. package/dist/src/api/selection/index.js.map +0 -1
  317. package/dist/src/api/selection/queries.d.ts.map +0 -1
  318. package/dist/src/api/selection/queries.js.map +0 -1
  319. package/dist/src/api/selection/result.d.ts.map +0 -1
  320. package/dist/src/api/selection/result.js.map +0 -1
  321. package/dist/src/api/selection/selection.d.ts.map +0 -1
  322. package/dist/src/api/selection/selection.js.map +0 -1
  323. package/dist/src/api/selection/selection.test.d.ts.map +0 -1
  324. package/dist/src/api/selection/selection.test.js.map +0 -1
  325. package/dist/src/api/selection/util.d.ts.map +0 -1
  326. package/dist/src/api/selection/util.js.map +0 -1
  327. package/dist/src/database/data-mirror.d.ts.map +0 -1
  328. package/dist/src/database/data-mirror.js.map +0 -1
  329. package/dist/src/database/data-mirror.test.d.ts.map +0 -1
  330. package/dist/src/database/data-mirror.test.js.map +0 -1
  331. package/dist/src/database/data-service-host.d.ts.map +0 -1
  332. package/dist/src/database/data-service-host.js.map +0 -1
  333. package/dist/src/database/data-service-router.d.ts.map +0 -1
  334. package/dist/src/database/data-service-router.js.map +0 -1
  335. package/dist/src/database/database-backend.d.ts.map +0 -1
  336. package/dist/src/database/database-backend.js.map +0 -1
  337. package/dist/src/database/index.d.ts.map +0 -1
  338. package/dist/src/database/index.js.map +0 -1
  339. package/dist/src/database/item-demuxer.d.ts.map +0 -1
  340. package/dist/src/database/item-demuxer.js.map +0 -1
  341. package/dist/src/database/item-demuxer.test.d.ts.map +0 -1
  342. package/dist/src/database/item-demuxer.test.js.map +0 -1
  343. package/dist/src/database/item-manager.d.ts.map +0 -1
  344. package/dist/src/database/item-manager.js.map +0 -1
  345. package/dist/src/database/item-manager.test.d.ts.map +0 -1
  346. package/dist/src/database/item-manager.test.js.map +0 -1
  347. package/dist/src/database/testing.d.ts.map +0 -1
  348. package/dist/src/database/testing.js.map +0 -1
  349. package/dist/src/database/timeframe-clock.d.ts.map +0 -1
  350. package/dist/src/database/timeframe-clock.js.map +0 -1
  351. package/dist/src/errors.d.ts.map +0 -1
  352. package/dist/src/errors.js.map +0 -1
package/src/echo.ts CHANGED
@@ -19,11 +19,11 @@ import { Storage, createStorage, StorageType } from '@dxos/random-access-multi-s
19
19
  import { SubscriptionGroup } from '@dxos/util';
20
20
 
21
21
  import { ResultSet } from './api';
22
- import { DataServiceRouter } from './database';
23
- import { IdentityNotInitializedError, InvalidStorageVersionError } from './errors';
24
22
  import { HALO } from './halo';
25
23
  import { autoPartyOpener } from './halo/party-opener';
26
24
  import { InvitationDescriptor, OfflineInvitationClaimer } from './invitations';
25
+ import { DataServiceRouter } from './packlets/database';
26
+ import { IdentityNotInitializedError, InvalidStorageVersionError } from './packlets/errors';
27
27
  import { OpenProgress, PartyFactory, DataParty, PartyManager } from './parties';
28
28
  import { MetadataStore, STORAGE_VERSION, PartyFeedProvider } from './pipeline';
29
29
  import { SnapshotStore } from './snapshots';
@@ -87,6 +87,7 @@ export class ECHO {
87
87
  private readonly _halo: HALO;
88
88
  private readonly _keyring: Keyring;
89
89
 
90
+ private readonly _storage: Storage;
90
91
  private readonly _feedStore: FeedStore;
91
92
  private readonly _modelFactory: ModelFactory;
92
93
  private readonly _networkManager: NetworkManager;
@@ -114,11 +115,12 @@ export class ECHO {
114
115
  this._modelFactory = new ModelFactory()
115
116
  .registerModel(ObjectModel);
116
117
 
118
+ this._storage = storage;
117
119
  this._networkManager = new NetworkManager(networkManagerOptions);
118
- this._snapshotStore = new SnapshotStore(storage.subDir('snapshots'));
119
- this._metadataStore = new MetadataStore(storage.subDir('metadata'));
120
+ this._snapshotStore = new SnapshotStore(storage.directory('snapshots'));
121
+ this._metadataStore = new MetadataStore(storage.directory('metadata'));
120
122
  this._keyring = new Keyring(new KeyStore(keyStorage));
121
- this._feedStore = new FeedStore(storage.subDir('feeds'), { valueEncoding: codec });
123
+ this._feedStore = new FeedStore(storage.directory('feeds'), { valueEncoding: codec });
122
124
 
123
125
  const feedProviderFactory = (partyKey: PublicKey) => new PartyFeedProvider(
124
126
  this._metadataStore,
@@ -275,26 +277,14 @@ export class ECHO {
275
277
  await this.close();
276
278
 
277
279
  try {
278
- if (this._feedStore.storage.destroy) {
279
- await this._feedStore.storage.destroy();
280
+ if (this._storage.destroy) {
281
+ await this._storage.destroy();
280
282
  }
281
283
  } catch (err: any) {
282
- error('Error clearing feed storage:', err);
284
+ error('Error clearing storage:', err);
283
285
  }
284
286
 
285
287
  await this.halo.reset();
286
-
287
- try {
288
- await this._snapshotStore.clear();
289
- } catch (err: any) {
290
- error('Error clearing snapshot storage:', err);
291
- }
292
-
293
- try {
294
- await this._metadataStore.clear();
295
- } catch (err: any) {
296
- error('Error clearing metadata storage:', err);
297
- }
298
288
  }
299
289
 
300
290
  //
@@ -7,8 +7,9 @@ import { PublicKey } from '@dxos/crypto';
7
7
  import { raise } from '@dxos/debug';
8
8
  import { ObjectModel } from '@dxos/object-model';
9
9
 
10
- import { Database, Item, ResultSet } from '../api';
11
- import { IdentityNotInitializedError } from '../errors';
10
+ import { ResultSet } from '../api';
11
+ import { Database, Item } from '../packlets/database';
12
+ import { IdentityNotInitializedError } from '../packlets/errors';
12
13
  import { PartyMember } from '../parties';
13
14
  import { HALO_PARTY_CONTACT_LIST_TYPE } from './halo-party';
14
15
 
@@ -14,8 +14,7 @@ import {
14
14
  KeyType,
15
15
  Filter,
16
16
  SecretProvider,
17
- KeyHint,
18
- createFeedAdmitMessage
17
+ KeyHint
19
18
  } from '@dxos/credentials';
20
19
  import { keyToString, PublicKey, keyPairFromSeedPhrase } from '@dxos/crypto';
21
20
  import { ModelFactory } from '@dxos/model-factory';
@@ -94,21 +93,21 @@ export class HaloFactory {
94
93
  * B. Device key (the first "member" of the Identity's HALO).
95
94
  * C. Feed key (the feed owned by the Device).
96
95
  */
97
- await halo.processor.writeHaloMessage(createPartyGenesisMessage(this._keyring, identityKey, feedKeyPair.publicKey, deviceKey));
96
+ await halo.credentialsWriter.write(createPartyGenesisMessage(this._keyring, identityKey, feedKeyPair.publicKey, deviceKey));
98
97
 
99
98
  /* 3. Make a special self-signed KeyAdmit message which will serve as an "IdentityGenesis" message. This
100
99
  * message will be copied into other Parties which we create or join.
101
100
  */
102
- await halo.processor.writeHaloMessage(createKeyAdmitMessage(this._keyring, identityKey.publicKey, identityKey));
101
+ await halo.credentialsWriter.write(createKeyAdmitMessage(this._keyring, identityKey.publicKey, identityKey));
103
102
 
104
103
  if (options.identityDisplayName) {
105
104
  // 4. Write the IdentityInfo message with descriptive details (eg, display name).
106
- await halo.processor.writeHaloMessage(createIdentityInfoMessage(this._keyring, options.identityDisplayName, identityKey));
105
+ await halo.credentialsWriter.write(createIdentityInfoMessage(this._keyring, options.identityDisplayName, identityKey));
107
106
  }
108
107
 
109
108
  if (options.deviceDisplayName) {
110
109
  // 5. Write the DeviceInfo message with descriptive details (eg, display name).
111
- await halo.processor.writeHaloMessage(createDeviceInfoMessage(this._keyring, options.deviceDisplayName, deviceKey));
110
+ await halo.credentialsWriter.write(createDeviceInfoMessage(this._keyring, options.deviceDisplayName, deviceKey));
112
111
  }
113
112
 
114
113
  // Create special properties item.
@@ -193,22 +192,11 @@ export class HaloFactory {
193
192
  );
194
193
 
195
194
  await initiator.connect();
196
- const { partyKey, hints } = await initiator.redeemInvitation(secretProvider);
195
+ const { hints } = await initiator.redeemInvitation(secretProvider);
197
196
 
198
- /*
199
- * TODO(telackey): We shouldn't have to add our key here, it should be in the hints, but our hint
200
- * mechanism is broken by not waiting on the messages to be processed before returning.
201
- */
202
197
  const halo = await this.constructParty(hints);
203
198
  await halo.open();
204
199
 
205
- // Write the Feed genesis message.
206
- await halo.processor.writeHaloMessage(createFeedAdmitMessage(
207
- credentialsSigner.signer,
208
- partyKey,
209
- await halo.getWriteFeedKey(),
210
- [credentialsSigner.getDeviceKey()]
211
- ));
212
200
  await initiator.destroy();
213
201
 
214
202
  await halo.database.createItem({
@@ -114,10 +114,6 @@ export class HaloParty {
114
114
  return this._partyCore.processor.credentialMessages.get(this._credentialsSigner.getIdentityKey().publicKey.toHex());
115
115
  }
116
116
 
117
- get memberKeys () {
118
- return this._partyCore.processor.memberKeys;
119
- }
120
-
121
117
  get credentialMessages () {
122
118
  return this._partyCore.processor.credentialMessages;
123
119
  }
@@ -126,6 +122,10 @@ export class HaloParty {
126
122
  return this._partyCore.processor.feedKeys;
127
123
  }
128
124
 
125
+ get credentialsWriter () {
126
+ return this._partyCore.credentialsWriter;
127
+ }
128
+
129
129
  async getWriteFeedKey () {
130
130
  const feed = await this._feedProvider.createOrOpenWritableFeed();
131
131
  return feed.key;
@@ -150,6 +150,7 @@ export class HaloParty {
150
150
  this._invitationManager = new InvitationFactory(
151
151
  this._partyCore.processor,
152
152
  this._credentialsSigner,
153
+ this._partyCore.credentialsWriter,
153
154
  this._networkManager
154
155
  );
155
156
 
@@ -169,7 +170,11 @@ export class HaloParty {
169
170
  // Replication.
170
171
  await this._protocol.start([
171
172
  createReplicatorPlugin(this._feedProvider),
172
- createAuthPlugin(createAuthenticator(this._partyCore.processor, this._credentialsSigner), peerId),
173
+ createAuthPlugin(createAuthenticator(
174
+ this._partyCore.processor,
175
+ this._credentialsSigner,
176
+ this._partyCore.credentialsWriter
177
+ ), peerId),
173
178
  createHaloRecoveryPlugin(this._credentialsSigner.getIdentityKey().publicKey, this._invitationManager, peerId)
174
179
  ]);
175
180
 
@@ -26,10 +26,11 @@ describe('HALO', () => {
26
26
  .registerModel(ObjectModel);
27
27
 
28
28
  const networkManager = new NetworkManager();
29
- const snapshotStore = new SnapshotStore(createStorage('snapshots', StorageType.RAM));
30
- const metadataStore = new MetadataStore(createStorage('metadata', StorageType.RAM));
29
+ const storage = createStorage('', StorageType.RAM);
30
+ const snapshotStore = new SnapshotStore(storage.directory('snapshots'));
31
+ const metadataStore = new MetadataStore(storage.directory('metadata'));
31
32
  const keyring = new Keyring();
32
- const feedStore = new FeedStore(createStorage('feed', StorageType.RAM), { valueEncoding: codec });
33
+ const feedStore = new FeedStore(storage.directory('feed'), { valueEncoding: codec });
33
34
 
34
35
  const feedProviderFactory = (partyKey: PublicKey) => new PartyFeedProvider(
35
36
  metadataStore,
@@ -102,7 +102,7 @@ export class Identity implements IdentityCredentials {
102
102
 
103
103
  export type IdentityProvider = () => Identity | undefined;
104
104
 
105
- function getDeviceKeyChainFromHalo (halo: HaloParty, deviceKey: KeyRecord) {
105
+ const getDeviceKeyChainFromHalo = (halo: HaloParty, deviceKey: KeyRecord) => {
106
106
  try {
107
107
  return Keyring.buildKeyChain(
108
108
  deviceKey.publicKey,
@@ -113,4 +113,4 @@ function getDeviceKeyChainFromHalo (halo: HaloParty, deviceKey: KeyRecord) {
113
113
  log('Unable to locate device KeyChain:', err);
114
114
  throw err;
115
115
  }
116
- }
116
+ };
@@ -14,7 +14,7 @@ const log = debug('dxos:echo-db:party-opener');
14
14
  /**
15
15
  * Automatically adds, opens, and clothes parties from HALO preferences.
16
16
  */
17
- export function autoPartyOpener (preferences: Preferences, partyManager: PartyManager): Unsubscribe {
17
+ export const autoPartyOpener = (preferences: Preferences, partyManager: PartyManager): Unsubscribe => {
18
18
  const subs = new SubscriptionGroup();
19
19
 
20
20
  subs.push(preferences.subscribeToJoinedPartyList(async values => {
@@ -46,4 +46,4 @@ export function autoPartyOpener (preferences: Preferences, partyManager: PartyMa
46
46
  }));
47
47
 
48
48
  return () => subs.unsubscribe();
49
- }
49
+ };
@@ -12,8 +12,9 @@ import { PublicKey } from '@dxos/crypto';
12
12
  import { raise } from '@dxos/debug';
13
13
  import { ObjectModel } from '@dxos/object-model';
14
14
 
15
- import { Database, Item, ResultSet } from '../api';
16
- import { IdentityNotInitializedError } from '../errors';
15
+ import { ResultSet } from '../api';
16
+ import { Database, Item } from '../packlets/database';
17
+ import { IdentityNotInitializedError } from '../packlets/errors';
17
18
  import { DataParty } from '../parties';
18
19
  import {
19
20
  HALO_PARTY_DESCRIPTOR_TYPE, HALO_PARTY_DEVICE_PREFERENCES_TYPE, HALO_PARTY_PREFERENCES_TYPE, JoinedParty
@@ -159,16 +160,13 @@ export class Preferences {
159
160
  subscribeToJoinedPartyList (callback: (parties: JoinedParty[]) => void): () => void {
160
161
  const database = this._getDatabase() ?? raise(new IdentityNotInitializedError());
161
162
 
162
- const converter = (partyDesc: Item<any>) => {
163
- // TODO(burdon): Define type.
164
- return {
165
- partyKey: PublicKey.from(partyDesc.model.get('publicKey')),
166
- keyHints: Object.values(partyDesc.model.get('hints')).map((hint: any) => ({
167
- ...hint,
168
- publicKey: PublicKey.from(hint.publicKey)
169
- } as KeyHint))
170
- };
171
- };
163
+ const converter = (partyDesc: Item<any>) => ({
164
+ partyKey: PublicKey.from(partyDesc.model.get('publicKey')),
165
+ keyHints: Object.values(partyDesc.model.get('hints')).map((hint: any) => ({
166
+ ...hint,
167
+ publicKey: PublicKey.from(hint.publicKey)
168
+ } as KeyHint))
169
+ });
172
170
 
173
171
  const result = database.select({ type: HALO_PARTY_DESCRIPTOR_TYPE }).exec();
174
172
 
package/src/index.ts CHANGED
@@ -4,10 +4,11 @@
4
4
 
5
5
  export { codec } from '@dxos/echo-protocol';
6
6
 
7
+ export * from './packlets/database';
8
+ export * from './packlets/errors';
9
+
7
10
  export * from './api';
8
- export * from './database';
9
11
  export * from './echo';
10
- export * from './errors';
11
12
  export * from './halo';
12
13
  export * from './invitations';
13
14
  export * from './protocol';
@@ -14,12 +14,8 @@ import { protocolFactory } from '@dxos/network-manager';
14
14
  */
15
15
  // TODO(burdon): When closed?
16
16
  // TODO(dboreham): Write a test to check resources are released (no resource leaks).
17
- export const greetingProtocolProvider = (rendezvousKey: any, peerId: Buffer | Uint8Array, protocolPlugins: any[]) => {
18
- return protocolFactory({
19
- getTopics: () => {
20
- return [rendezvousKey];
21
- },
22
- session: { peerId: keyToString(peerId) },
23
- plugins: protocolPlugins
24
- });
25
- };
17
+ export const greetingProtocolProvider = (rendezvousKey: any, peerId: Buffer | Uint8Array, protocolPlugins: any[]) => protocolFactory({
18
+ getTopics: () => [rendezvousKey],
19
+ session: { peerId: keyToString(peerId) },
20
+ plugins: protocolPlugins
21
+ });
@@ -14,12 +14,13 @@ import {
14
14
  KeyType,
15
15
  SecretProvider,
16
16
  SecretValidator
17
+ , Message as HaloMessage
17
18
  } from '@dxos/credentials';
18
19
  import { keyToString, randomBytes, PublicKey } from '@dxos/crypto';
19
- import { SwarmKey } from '@dxos/echo-protocol';
20
+ import { FeedWriter, SwarmKey } from '@dxos/echo-protocol';
20
21
  import { FullyConnectedTopology, NetworkManager } from '@dxos/network-manager';
21
22
 
22
- import { PartyProcessor } from '../pipeline';
23
+ import { PartyStateProvider } from '../pipeline';
23
24
  import { CredentialsSigner } from '../protocol/credentials-signer';
24
25
  import { InvitationOptions } from './common';
25
26
  import { greetingProtocolProvider } from './greeting-protocol-provider';
@@ -57,8 +58,9 @@ export class GreetingResponder {
57
58
 
58
59
  constructor (
59
60
  private readonly _networkManager: NetworkManager,
60
- private readonly _partyProcessor: PartyProcessor,
61
- private readonly _credentialsSigner: CredentialsSigner
61
+ private readonly _partyProcessor: PartyStateProvider,
62
+ private readonly _credentialsSigner: CredentialsSigner,
63
+ private readonly _credentialsWriter: FeedWriter<HaloMessage>
62
64
  ) {
63
65
  this._greeter = new Greeter(
64
66
  this._partyProcessor.partyKey,
@@ -222,7 +224,7 @@ export class GreetingResponder {
222
224
  [this._credentialsSigner.getDeviceSigningKeys()]
223
225
  );
224
226
 
225
- await this._partyProcessor.writeHaloMessage(envelope);
227
+ await this._credentialsWriter.write(envelope);
226
228
 
227
229
  // Wait for keys to be admitted.
228
230
  await waitForCondition(() => admittedKeys.every(hasKey));
@@ -243,19 +245,15 @@ export class GreetingResponder {
243
245
  _gatherHints (): KeyHint[] {
244
246
  assert(this._state === GreetingState.SUCCEEDED);
245
247
 
246
- const memberKeys = this._partyProcessor.memberKeys.map(publicKey => {
247
- return {
248
- publicKey,
249
- type: KeyType.UNKNOWN
250
- };
251
- });
248
+ const memberKeys = this._partyProcessor.memberKeys.map((publicKey) => ({
249
+ publicKey,
250
+ type: KeyType.UNKNOWN
251
+ }));
252
252
 
253
- const memberFeeds = this._partyProcessor.feedKeys.map(publicKey => {
254
- return {
255
- publicKey,
256
- type: KeyType.FEED
257
- };
258
- });
253
+ const memberFeeds = this._partyProcessor.feedKeys.map((publicKey) => ({
254
+ publicKey,
255
+ type: KeyType.FEED
256
+ }));
259
257
 
260
258
  return [...memberKeys, ...memberFeeds];
261
259
  }
@@ -22,7 +22,7 @@ import {
22
22
  import { keyToBuffer, keyToString, PublicKey, randomBytes, verify } from '@dxos/crypto';
23
23
  import { FullyConnectedTopology, NetworkManager } from '@dxos/network-manager';
24
24
 
25
- import { InvalidInvitationError } from '../errors';
25
+ import { InvalidInvitationError } from '../packlets/errors';
26
26
  import { CredentialsSigner } from '../protocol/credentials-signer';
27
27
  import { greetingProtocolProvider } from './greeting-protocol-provider';
28
28
  import { GreetingState } from './greeting-responder';
@@ -10,7 +10,7 @@ import { keyToBuffer, keyToString, ripemd160, PublicKey } from '@dxos/crypto';
10
10
  import { SwarmKey } from '@dxos/echo-protocol';
11
11
  import * as proto from '@dxos/echo-protocol';
12
12
 
13
- import { InvalidInvitationError } from '../errors';
13
+ import { InvalidInvitationError } from '../packlets/errors';
14
14
 
15
15
  // Re-exporting type enum from protobuf definitions.
16
16
  export import InvitationDescriptorType = proto.InvitationDescriptor.Type;
@@ -4,11 +4,12 @@
4
4
 
5
5
  import assert from 'assert';
6
6
 
7
- import { createPartyInvitationMessage } from '@dxos/credentials';
7
+ import { createPartyInvitationMessage, Message as HaloMessage } from '@dxos/credentials';
8
8
  import { PublicKey } from '@dxos/crypto';
9
+ import { FeedWriter } from '@dxos/echo-protocol';
9
10
  import { NetworkManager } from '@dxos/network-manager';
10
11
 
11
- import { PartyProcessor } from '../pipeline';
12
+ import { PartyStateProvider } from '../pipeline';
12
13
  import { CredentialsSigner } from '../protocol/credentials-signer';
13
14
  import { defaultInvitationAuthenticator, InvitationAuthenticator, InvitationOptions } from './common';
14
15
  import { GreetingResponder } from './greeting-responder';
@@ -19,10 +20,11 @@ import { InvitationDescriptor, InvitationDescriptorType } from './invitation-des
19
20
  */
20
21
  export class InvitationFactory {
21
22
  constructor (
22
- private readonly _partyProcessor: PartyProcessor,
23
+ private readonly _partyProcessor: PartyStateProvider,
23
24
  // This needs to be a provider in case this is a backend for the HALO party.
24
25
  // Then the identity would be changed after this is instantiated.
25
26
  private readonly _credentialsSigner: CredentialsSigner,
27
+ private readonly _credentialsWriter: FeedWriter<HaloMessage>,
26
28
  private readonly _networkManager: NetworkManager
27
29
  ) {}
28
30
 
@@ -42,7 +44,7 @@ export class InvitationFactory {
42
44
  this._credentialsSigner.getDeviceSigningKeys()
43
45
  );
44
46
 
45
- await this._partyProcessor.writeHaloMessage(invitationMessage);
47
+ await this._credentialsWriter.write(invitationMessage);
46
48
 
47
49
  return new InvitationDescriptor(
48
50
  InvitationDescriptorType.OFFLINE,
@@ -60,7 +62,8 @@ export class InvitationFactory {
60
62
  const responder = new GreetingResponder(
61
63
  this._networkManager,
62
64
  this._partyProcessor,
63
- this._credentialsSigner
65
+ this._credentialsSigner,
66
+ this._credentialsWriter
64
67
  );
65
68
 
66
69
  const { secretValidator, secretProvider } = authenticationDetails;
@@ -23,7 +23,7 @@ import {
23
23
  import { keyToBuffer, keyToString, PublicKey, randomBytes } from '@dxos/crypto';
24
24
  import { FullyConnectedTopology, NetworkManager } from '@dxos/network-manager';
25
25
 
26
- import { InvalidInvitationError } from '../errors';
26
+ import { InvalidInvitationError } from '../packlets/errors';
27
27
  import { CredentialsSigner } from '../protocol';
28
28
  import { greetingProtocolProvider } from './greeting-protocol-provider';
29
29
  import { GreetingState } from './greeting-responder';
@@ -170,19 +170,17 @@ export class OfflineInvitationClaimer {
170
170
 
171
171
  // The secretProvider should provide an `Auth` message signed directly by the Identity key.
172
172
  static createSecretProvider (credentials: CredentialsSigner): SecretProvider {
173
- return async (info?: SecretInfo) => {
174
- return Buffer.from(codec.encode(
175
- /* The signed portion of the Auth message includes the ID and authNonce provided
173
+ return async (info?: SecretInfo) => Buffer.from(codec.encode(
174
+ /* The signed portion of the Auth message includes the ID and authNonce provided
176
175
  * by the `info` object. These values will be validated on the other end.
177
176
  */
178
- createAuthMessage(
179
- credentials.signer,
177
+ createAuthMessage(
178
+ credentials.signer,
180
179
  info!.id.value,
181
180
  credentials.getIdentityKey(),
182
181
  credentials.getDeviceSigningKeys(),
183
182
  undefined,
184
183
  info!.authNonce.value)
185
- ));
186
- };
184
+ ));
187
185
  }
188
186
  }
@@ -11,10 +11,10 @@ import { EchoEnvelope, MockFeedWriter, Timeframe } from '@dxos/echo-protocol';
11
11
  import { ModelFactory } from '@dxos/model-factory';
12
12
  import { ObjectModel } from '@dxos/object-model';
13
13
 
14
- import { Item } from '../api';
15
14
  import { DataMirror } from './data-mirror';
16
15
  import { DataServiceHost } from './data-service-host';
17
16
  import { DataServiceRouter } from './data-service-router';
17
+ import { Item } from './item';
18
18
  import { ItemDemuxer } from './item-demuxer';
19
19
  import { ItemManager } from './item-manager';
20
20
 
@@ -10,7 +10,7 @@ import { failUndefined } from '@dxos/debug';
10
10
  import { DataService } from '@dxos/echo-protocol';
11
11
  import { Model } from '@dxos/model-factory';
12
12
 
13
- import { Entity } from '../api';
13
+ import { Entity } from './entity';
14
14
  import { ItemManager } from './item-manager';
15
15
 
16
16
  const log = debug('dxos:echo-db:data-mirror');
@@ -18,10 +18,11 @@ import {
18
18
  SubscribeEntityStreamResponse
19
19
  } from '@dxos/echo-protocol';
20
20
 
21
- import { Item, Link } from '../api';
22
21
  import { EntityNotFoundError } from '../errors';
22
+ import { Item } from './item';
23
23
  import { ItemDemuxer } from './item-demuxer';
24
24
  import { ItemManager } from './item-manager';
25
+ import { Link } from './link';
25
26
 
26
27
  const log = debug('dxos:echo-db:data-service-host');
27
28
 
@@ -10,9 +10,10 @@ import { ModelFactory, TestListModel } from '@dxos/model-factory';
10
10
  import { ObjectModel } from '@dxos/object-model';
11
11
  import { afterTest } from '@dxos/testutils';
12
12
 
13
- import { createInMemoryDatabase, createRemoteDatabaseFromDataServiceHost, DataServiceHost } from '../database';
13
+ import { DataServiceHost } from './data-service-host';
14
14
  import { Item } from './item';
15
15
  import { ItemFilterDeleted } from './selection';
16
+ import { createInMemoryDatabase, createRemoteDatabaseFromDataServiceHost } from './testing';
16
17
 
17
18
  const OBJECT_ORG = 'example:object/org';
18
19
  const OBJECT_PERSON = 'example:object/person';
@@ -10,9 +10,11 @@ import { ItemID, ItemType } from '@dxos/echo-protocol';
10
10
  import { Model, ModelConstructor, ModelFactory, validateModelClass } from '@dxos/model-factory';
11
11
  import { ObjectModel } from '@dxos/object-model';
12
12
 
13
- import { DatabaseBackend, DataServiceHost, ItemManager } from '../database';
13
+ import { DataServiceHost } from './data-service-host';
14
+ import { DatabaseBackend } from './database-backend';
14
15
  import { Entity } from './entity';
15
16
  import { Item } from './item';
17
+ import { ItemManager } from './item-manager';
16
18
  import { Link } from './link';
17
19
  import { RootFilter, Selection, createSelection } from './selection';
18
20
 
@@ -7,7 +7,7 @@ import { ItemID, ItemType } from '@dxos/echo-protocol';
7
7
  import { Model, ModelMeta, StateManager } from '@dxos/model-factory';
8
8
  import { SubscriptionGroup } from '@dxos/util';
9
9
 
10
- import { ItemManager } from '../database';
10
+ import { ItemManager } from './item-manager';
11
11
 
12
12
  /**
13
13
  * Base class for all ECHO entitities.
@@ -10,3 +10,8 @@ export * from './item-demuxer';
10
10
  export * from './item-manager';
11
11
  export * from './testing';
12
12
  export * from './timeframe-clock';
13
+ export * from './item';
14
+ export * from './link';
15
+ export * from './entity';
16
+ export * from './selection';
17
+ export * from './database';
@@ -14,7 +14,7 @@ import { createTransform } from '@dxos/feed-store';
14
14
  import { ModelFactory, TestModel } from '@dxos/model-factory';
15
15
  import { ObjectModel } from '@dxos/object-model';
16
16
 
17
- import { Item } from '../api';
17
+ import { Item } from './item';
18
18
  import { ItemDemuxer } from './item-demuxer';
19
19
  import { ItemManager } from './item-manager';
20
20
 
@@ -11,8 +11,10 @@ import { DatabaseSnapshot, IEchoStream, ItemID, ItemSnapshot, LinkSnapshot } fro
11
11
  import { createWritable } from '@dxos/feed-store';
12
12
  import { Model, ModelFactory, ModelMessage } from '@dxos/model-factory';
13
13
 
14
- import { Entity, Item, Link } from '../api';
14
+ import { Entity } from './entity';
15
+ import { Item } from './item';
15
16
  import { ItemManager, ModelConstructionOptions } from './item-manager';
17
+ import { Link } from './link';
16
18
 
17
19
  const log = debug('dxos:echo-db:item-demuxer');
18
20
 
@@ -185,7 +187,7 @@ export class ItemDemuxer {
185
187
  * Sort based on parents.
186
188
  * @param items
187
189
  */
188
- export function sortItemsTopologically (items: ItemSnapshot[]): ItemSnapshot[] {
190
+ export const sortItemsTopologically = (items: ItemSnapshot[]): ItemSnapshot[] => {
189
191
  const snapshots: ItemSnapshot[] = [];
190
192
  const seenIds = new Set<ItemID>();
191
193
 
@@ -204,4 +206,4 @@ export function sortItemsTopologically (items: ItemSnapshot[]): ItemSnapshot[] {
204
206
  }
205
207
 
206
208
  return snapshots;
207
- }
209
+ };
@@ -11,8 +11,10 @@ import { timed } from '@dxos/debug';
11
11
  import { EchoEnvelope, FeedWriter, ItemID, ItemType, mapFeedWriter, ModelSnapshot } from '@dxos/echo-protocol';
12
12
  import { Model, ModelFactory, ModelMessage, ModelType, StateManager } from '@dxos/model-factory';
13
13
 
14
- import { Entity, Item, Link } from '../api';
15
14
  import { UnknownModelError } from '../errors';
15
+ import { Entity } from './entity';
16
+ import { Item } from './item';
17
+ import { Link } from './link';
16
18
 
17
19
  const log = debug('dxos:echo-db:item-manager');
18
20
 
@@ -375,7 +377,7 @@ export class ItemManager {
375
377
  /**
376
378
  * Returns a new event that groups all of the updates emitted during single tick into a single event emission.
377
379
  */
378
- function debounceEntityUpdateEvent (event: Event<Entity<any>>): Event<Entity<any>[]> {
380
+ const debounceEntityUpdateEvent = (event: Event<Entity<any>>): Event<Entity<any>[]> => {
379
381
  const debouncedEvent = new Event<Entity<any>[]>();
380
382
 
381
383
  let firing = false;
@@ -395,4 +397,4 @@ function debounceEntityUpdateEvent (event: Event<Entity<any>>): Event<Entity<any
395
397
  }));
396
398
 
397
399
  return debouncedEvent;
398
- }
400
+ };
@@ -7,10 +7,10 @@ import debug from 'debug';
7
7
  import { EchoEnvelope, ItemID, ItemMutation, ItemType, FeedWriter } from '@dxos/echo-protocol';
8
8
  import { Model, StateManager } from '@dxos/model-factory';
9
9
 
10
- import { ItemManager } from '../database';
11
10
  import { Entity } from './entity';
11
+ import { ItemManager } from './item-manager';
12
12
  import type { Link } from './link';
13
- import { Selection, createItemSelection } from './selection';
13
+ import { createItemSelection, Selection } from './selection';
14
14
 
15
15
  const log = debug('dxos:echo-db:item');
16
16