@rocicorp/zero 0.2.2024101101 → 0.3.2024102500

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 (632) hide show
  1. package/out/react.js +91 -39
  2. package/out/react.js.map +2 -2
  3. package/out/replicache/src/async-iterable-to-array.js +8 -0
  4. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  5. package/out/replicache/src/bg-interval.js +38 -0
  6. package/out/replicache/src/bg-interval.js.map +1 -0
  7. package/out/replicache/src/binary-search.js +31 -0
  8. package/out/replicache/src/binary-search.js.map +1 -0
  9. package/out/replicache/src/broadcast-channel.js +29 -0
  10. package/out/replicache/src/broadcast-channel.js.map +1 -0
  11. package/out/replicache/src/btree/diff.js +6 -0
  12. package/out/replicache/src/btree/diff.js.map +1 -0
  13. package/out/replicache/src/btree/node.js +392 -0
  14. package/out/replicache/src/btree/node.js.map +1 -0
  15. package/out/replicache/src/btree/read.js +227 -0
  16. package/out/replicache/src/btree/read.js.map +1 -0
  17. package/out/replicache/src/btree/splice.js +79 -0
  18. package/out/replicache/src/btree/splice.js.map +1 -0
  19. package/out/replicache/src/btree/write.js +154 -0
  20. package/out/replicache/src/btree/write.js.map +1 -0
  21. package/out/replicache/src/call-default-fetch.js +37 -0
  22. package/out/replicache/src/call-default-fetch.js.map +1 -0
  23. package/out/replicache/src/config.js +13 -0
  24. package/out/replicache/src/config.js.map +1 -0
  25. package/out/replicache/src/connection-loop-delegates.js +30 -0
  26. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  27. package/out/replicache/src/connection-loop.js +268 -0
  28. package/out/replicache/src/connection-loop.js.map +1 -0
  29. package/out/replicache/src/cookies.js +41 -0
  30. package/out/replicache/src/cookies.js.map +1 -0
  31. package/out/replicache/src/dag/chunk.js +60 -0
  32. package/out/replicache/src/dag/chunk.js.map +1 -0
  33. package/out/replicache/src/dag/gc.js +126 -0
  34. package/out/replicache/src/dag/gc.js.map +1 -0
  35. package/out/replicache/src/dag/key-type-enum.js +6 -0
  36. package/out/replicache/src/dag/key-type-enum.js.map +1 -0
  37. package/out/replicache/src/dag/key.js +54 -0
  38. package/out/replicache/src/dag/key.js.map +1 -0
  39. package/out/replicache/src/dag/lazy-store.js +532 -0
  40. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  41. package/out/replicache/src/dag/store-impl.js +175 -0
  42. package/out/replicache/src/dag/store-impl.js.map +1 -0
  43. package/out/replicache/src/dag/store.js +22 -0
  44. package/out/replicache/src/dag/store.js.map +1 -0
  45. package/out/replicache/src/dag/visitor.js +22 -0
  46. package/out/replicache/src/dag/visitor.js.map +1 -0
  47. package/out/replicache/src/db/commit.js +443 -0
  48. package/out/replicache/src/db/commit.js.map +1 -0
  49. package/out/replicache/src/db/index-operation-enum.js +4 -0
  50. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  51. package/out/replicache/src/db/index.js +170 -0
  52. package/out/replicache/src/db/index.js.map +1 -0
  53. package/out/replicache/src/db/meta-type-enum.js +7 -0
  54. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  55. package/out/replicache/src/db/read.js +59 -0
  56. package/out/replicache/src/db/read.js.map +1 -0
  57. package/out/replicache/src/db/rebase.js +56 -0
  58. package/out/replicache/src/db/rebase.js.map +1 -0
  59. package/out/replicache/src/db/scan.js +2 -0
  60. package/out/replicache/src/db/scan.js.map +1 -0
  61. package/out/replicache/src/db/write.js +260 -0
  62. package/out/replicache/src/db/write.js.map +1 -0
  63. package/out/replicache/src/error-responses.js +30 -0
  64. package/out/replicache/src/error-responses.js.map +1 -0
  65. package/out/replicache/src/filter-async-iterable.js +15 -0
  66. package/out/replicache/src/filter-async-iterable.js.map +1 -0
  67. package/out/replicache/src/format-version-enum.js +9 -0
  68. package/out/replicache/src/format-version-enum.js.map +1 -0
  69. package/out/replicache/src/format-version.js +8 -0
  70. package/out/replicache/src/format-version.js.map +1 -0
  71. package/out/replicache/src/frozen-json.js +151 -0
  72. package/out/replicache/src/frozen-json.js.map +1 -0
  73. package/out/replicache/src/get-default-puller.js +74 -0
  74. package/out/replicache/src/get-default-puller.js.map +1 -0
  75. package/out/replicache/src/get-default-pusher.js +36 -0
  76. package/out/replicache/src/get-default-pusher.js.map +1 -0
  77. package/out/replicache/src/hash.js +73 -0
  78. package/out/replicache/src/hash.js.map +1 -0
  79. package/out/replicache/src/http-request-info.js +7 -0
  80. package/out/replicache/src/http-request-info.js.map +1 -0
  81. package/out/replicache/src/impl.js +2 -0
  82. package/out/replicache/src/impl.js.map +1 -0
  83. package/out/replicache/src/index-defs.js +28 -0
  84. package/out/replicache/src/index-defs.js.map +1 -0
  85. package/out/replicache/src/invoke-kind-enum.js +4 -0
  86. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  87. package/out/replicache/src/iterable-union.js +5 -0
  88. package/out/replicache/src/iterable-union.js.map +1 -0
  89. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +93 -0
  90. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  91. package/out/replicache/src/kv/idb-store.js +179 -0
  92. package/out/replicache/src/kv/idb-store.js.map +1 -0
  93. package/out/replicache/src/kv/mem-store.js +61 -0
  94. package/out/replicache/src/kv/mem-store.js.map +1 -0
  95. package/out/replicache/src/kv/read-impl.js +23 -0
  96. package/out/replicache/src/kv/read-impl.js.map +1 -0
  97. package/out/replicache/src/kv/store.js +2 -0
  98. package/out/replicache/src/kv/store.js.map +1 -0
  99. package/out/replicache/src/kv/write-impl-base.js +48 -0
  100. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  101. package/out/replicache/src/kv/write-impl.js +25 -0
  102. package/out/replicache/src/kv/write-impl.js.map +1 -0
  103. package/out/replicache/src/lazy.js +10 -0
  104. package/out/replicache/src/lazy.js.map +1 -0
  105. package/out/replicache/src/log-options.js +13 -0
  106. package/out/replicache/src/log-options.js.map +1 -0
  107. package/out/replicache/src/merge-async-iterables.js +61 -0
  108. package/out/replicache/src/merge-async-iterables.js.map +1 -0
  109. package/out/replicache/src/mod.js +14 -0
  110. package/out/replicache/src/mod.js.map +1 -0
  111. package/out/replicache/src/mutation-recovery.js +439 -0
  112. package/out/replicache/src/mutation-recovery.js.map +1 -0
  113. package/out/replicache/src/new-client-channel.js +77 -0
  114. package/out/replicache/src/new-client-channel.js.map +1 -0
  115. package/out/replicache/src/on-persist-channel.js +33 -0
  116. package/out/replicache/src/on-persist-channel.js.map +1 -0
  117. package/out/replicache/src/patch-operation.js +37 -0
  118. package/out/replicache/src/patch-operation.js.map +1 -0
  119. package/out/replicache/src/pending-mutations.js +18 -0
  120. package/out/replicache/src/pending-mutations.js.map +1 -0
  121. package/out/replicache/src/persist/client-gc.js +38 -0
  122. package/out/replicache/src/persist/client-gc.js.map +1 -0
  123. package/out/replicache/src/persist/client-group-gc.js +38 -0
  124. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  125. package/out/replicache/src/persist/client-groups.js +180 -0
  126. package/out/replicache/src/persist/client-groups.js.map +1 -0
  127. package/out/replicache/src/persist/clients.js +390 -0
  128. package/out/replicache/src/persist/clients.js.map +1 -0
  129. package/out/replicache/src/persist/collect-idb-databases.js +174 -0
  130. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  131. package/out/replicache/src/persist/gather-mem-only-visitor.js +25 -0
  132. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  133. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -0
  134. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  135. package/out/replicache/src/persist/heartbeat.js +37 -0
  136. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  137. package/out/replicache/src/persist/idb-databases-store-db-name.js +18 -0
  138. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  139. package/out/replicache/src/persist/idb-databases-store.js +90 -0
  140. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  141. package/out/replicache/src/persist/make-client-id.js +13 -0
  142. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  143. package/out/replicache/src/persist/persist.js +132 -0
  144. package/out/replicache/src/persist/persist.js.map +1 -0
  145. package/out/replicache/src/persist/refresh.js +147 -0
  146. package/out/replicache/src/persist/refresh.js.map +1 -0
  147. package/out/replicache/src/process-scheduler.js +93 -0
  148. package/out/replicache/src/process-scheduler.js.map +1 -0
  149. package/out/replicache/src/puller.js +2 -0
  150. package/out/replicache/src/puller.js.map +1 -0
  151. package/out/replicache/src/pusher.js +32 -0
  152. package/out/replicache/src/pusher.js.map +1 -0
  153. package/out/replicache/src/replicache-impl.js +1007 -0
  154. package/out/replicache/src/replicache-impl.js.map +1 -0
  155. package/out/replicache/src/replicache-options.js +2 -0
  156. package/out/replicache/src/replicache-options.js.map +1 -0
  157. package/out/replicache/src/replicache.js +387 -0
  158. package/out/replicache/src/replicache.js.map +1 -0
  159. package/out/replicache/src/request-idle.js +15 -0
  160. package/out/replicache/src/request-idle.js.map +1 -0
  161. package/out/replicache/src/scan-iterator.js +202 -0
  162. package/out/replicache/src/scan-iterator.js.map +1 -0
  163. package/out/replicache/src/scan-options.js +45 -0
  164. package/out/replicache/src/scan-options.js.map +1 -0
  165. package/out/replicache/src/set-interval-with-signal.js +7 -0
  166. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  167. package/out/replicache/src/size-of-value.js +77 -0
  168. package/out/replicache/src/size-of-value.js.map +1 -0
  169. package/out/replicache/src/subscriptions.js +357 -0
  170. package/out/replicache/src/subscriptions.js.map +1 -0
  171. package/out/replicache/src/sync/diff.js +75 -0
  172. package/out/replicache/src/sync/diff.js.map +1 -0
  173. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +5 -0
  174. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  175. package/out/replicache/src/sync/ids.js +4 -0
  176. package/out/replicache/src/sync/ids.js.map +1 -0
  177. package/out/replicache/src/sync/patch.js +41 -0
  178. package/out/replicache/src/sync/patch.js.map +1 -0
  179. package/out/replicache/src/sync/pull-error.js +16 -0
  180. package/out/replicache/src/sync/pull-error.js.map +1 -0
  181. package/out/replicache/src/sync/pull.js +375 -0
  182. package/out/replicache/src/sync/pull.js.map +1 -0
  183. package/out/replicache/src/sync/push.js +141 -0
  184. package/out/replicache/src/sync/push.js.map +1 -0
  185. package/out/replicache/src/sync/request-id.js +31 -0
  186. package/out/replicache/src/sync/request-id.js.map +1 -0
  187. package/out/replicache/src/sync/sync-head-name.js +2 -0
  188. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  189. package/out/replicache/src/test-license-key.js +3 -0
  190. package/out/replicache/src/test-license-key.js.map +1 -0
  191. package/out/replicache/src/to-error.js +7 -0
  192. package/out/replicache/src/to-error.js.map +1 -0
  193. package/out/replicache/src/transaction-closed-error.js +17 -0
  194. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  195. package/out/replicache/src/transactions.js +144 -0
  196. package/out/replicache/src/transactions.js.map +1 -0
  197. package/out/replicache/src/types.js +2 -0
  198. package/out/replicache/src/types.js.map +1 -0
  199. package/out/replicache/src/version.js +5 -0
  200. package/out/replicache/src/version.js.map +1 -0
  201. package/out/replicache/src/with-transactions.js +28 -0
  202. package/out/replicache/src/with-transactions.js.map +1 -0
  203. package/out/shared/src/browser-env.js +14 -0
  204. package/out/shared/src/browser-env.js.map +1 -0
  205. package/out/shared/src/document-visible.js +76 -0
  206. package/out/shared/src/document-visible.js.map +1 -0
  207. package/out/shared/src/immutable.js +2 -0
  208. package/out/shared/src/immutable.js.map +1 -0
  209. package/out/shared/src/iterables.d.ts +2 -2
  210. package/out/shared/src/iterables.d.ts.map +1 -1
  211. package/out/shared/src/iterables.js +40 -0
  212. package/out/shared/src/iterables.js.map +1 -0
  213. package/out/shared/src/navigator.js +3 -0
  214. package/out/shared/src/navigator.js.map +1 -0
  215. package/out/shared/src/random-uint64.js +8 -0
  216. package/out/shared/src/random-uint64.js.map +1 -0
  217. package/out/shared/src/random-values.d.ts +1 -0
  218. package/out/shared/src/random-values.d.ts.map +1 -1
  219. package/out/shared/src/random-values.js +22 -0
  220. package/out/shared/src/random-values.js.map +1 -0
  221. package/out/shared/src/set-utils.d.ts +1 -1
  222. package/out/shared/src/set-utils.d.ts.map +1 -1
  223. package/out/shared/src/set-utils.js +6 -4
  224. package/out/shared/src/set-utils.js.map +1 -1
  225. package/out/shared/src/sorted-entries.d.ts +2 -0
  226. package/out/shared/src/sorted-entries.d.ts.map +1 -0
  227. package/out/shared/src/sorted-entries.js +6 -0
  228. package/out/shared/src/sorted-entries.js.map +1 -0
  229. package/out/shared/src/types.js +2 -0
  230. package/out/shared/src/types.js.map +1 -0
  231. package/out/shared/src/valita.d.ts +1 -1
  232. package/out/shared/src/valita.d.ts.map +1 -1
  233. package/out/shared/src/valita.js.map +1 -1
  234. package/out/shared/src/writable.d.ts +4 -0
  235. package/out/shared/src/writable.d.ts.map +1 -0
  236. package/out/shared/src/writable.js +2 -0
  237. package/out/shared/src/writable.js.map +1 -0
  238. package/out/zero/src/config.d.ts +2 -0
  239. package/out/zero/src/config.d.ts.map +1 -0
  240. package/out/zero/src/config.js +2 -0
  241. package/out/zero/src/config.js.map +1 -0
  242. package/out/zero-cache/src/config/config-query.d.ts +18 -0
  243. package/out/zero-cache/src/config/config-query.d.ts.map +1 -0
  244. package/out/zero-cache/src/config/config-query.js +19 -0
  245. package/out/zero-cache/src/config/config-query.js.map +1 -0
  246. package/out/zero-cache/src/config/define-config.d.ts +43 -0
  247. package/out/zero-cache/src/config/define-config.d.ts.map +1 -0
  248. package/out/zero-cache/src/config/define-config.js +120 -0
  249. package/out/zero-cache/src/config/define-config.js.map +1 -0
  250. package/out/zero-cache/src/config/refs.d.ts +3 -0
  251. package/out/zero-cache/src/config/refs.d.ts.map +1 -0
  252. package/out/zero-cache/src/config/refs.js +14 -0
  253. package/out/zero-cache/src/config/refs.js.map +1 -0
  254. package/out/zero-cache/src/config/zero-config.d.ts +126 -686
  255. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  256. package/out/zero-cache/src/config/zero-config.js +43 -161
  257. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  258. package/out/zero-cache/src/db/create.d.ts +8 -0
  259. package/out/zero-cache/src/db/create.d.ts.map +1 -0
  260. package/out/zero-cache/src/db/create.js +39 -0
  261. package/out/zero-cache/src/db/create.js.map +1 -0
  262. package/out/zero-cache/src/db/lite-tables.d.ts +3 -3
  263. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  264. package/out/zero-cache/src/db/lite-tables.js +29 -20
  265. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  266. package/out/zero-cache/src/db/migration-lite.d.ts +60 -20
  267. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  268. package/out/zero-cache/src/db/migration-lite.js +89 -69
  269. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  270. package/out/zero-cache/src/db/migration.d.ts +61 -20
  271. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  272. package/out/zero-cache/src/db/migration.js +92 -75
  273. package/out/zero-cache/src/db/migration.js.map +1 -1
  274. package/out/zero-cache/src/db/pg-to-lite.d.ts +11 -0
  275. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -0
  276. package/out/zero-cache/src/{services/change-streamer/pg/schema/lite.js → db/pg-to-lite.js} +27 -15
  277. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -0
  278. package/out/zero-cache/src/db/specs.d.ts +73 -0
  279. package/out/zero-cache/src/db/specs.d.ts.map +1 -0
  280. package/out/zero-cache/src/db/specs.js +30 -0
  281. package/out/zero-cache/src/db/specs.js.map +1 -0
  282. package/out/zero-cache/src/db/statements.d.ts +1 -1
  283. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  284. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  285. package/out/zero-cache/src/server/life-cycle.js +9 -5
  286. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  287. package/out/zero-cache/src/server/main.js +3 -3
  288. package/out/zero-cache/src/server/main.js.map +1 -1
  289. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  290. package/out/zero-cache/src/server/syncer.js +2 -1
  291. package/out/zero-cache/src/server/syncer.js.map +1 -1
  292. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
  293. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  294. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +1 -4
  295. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  296. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +455 -13
  297. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  298. package/out/zero-cache/src/services/change-streamer/change-streamer.js +16 -0
  299. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  300. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
  301. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +313 -88
  302. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
  303. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  304. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +13 -54
  305. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  306. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +239 -59
  307. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  308. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +291 -183
  309. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  310. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts +5 -0
  311. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts.map +1 -0
  312. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js +18 -0
  313. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js.map +1 -0
  314. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +4 -4
  315. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  316. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +14 -19
  317. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  318. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts +17 -0
  319. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +1 -0
  320. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js +150 -0
  321. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +1 -0
  322. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +1 -1
  323. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +11 -5
  324. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
  325. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +325 -26
  326. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  327. package/out/zero-cache/src/services/change-streamer/schema/change.js +84 -1
  328. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
  329. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +2 -2
  330. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  331. package/out/zero-cache/src/services/change-streamer/schema/init.js +13 -5
  332. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  333. package/out/zero-cache/src/services/change-streamer/schema/tables.js +6 -6
  334. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  335. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
  336. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  337. package/out/zero-cache/src/services/dispatcher/connect-params.js +5 -2
  338. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  339. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  340. package/out/zero-cache/src/services/mutagen/mutagen.js +21 -22
  341. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  342. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  343. package/out/zero-cache/src/services/mutagen/write-authorizer.js +18 -9
  344. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  345. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  346. package/out/zero-cache/src/services/replicator/incremental-sync.js +131 -16
  347. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  348. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +20 -3
  349. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  350. package/out/zero-cache/src/services/replicator/schema/change-log.js +46 -14
  351. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  352. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
  353. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  354. package/out/zero-cache/src/services/replicator/schema/replication-state.js +9 -9
  355. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  356. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +4 -3
  357. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  358. package/out/zero-cache/src/services/view-syncer/client-handler.js +27 -21
  359. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  360. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -4
  361. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  362. package/out/zero-cache/src/services/view-syncer/cvr-store.js +63 -18
  363. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  364. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +11 -8
  365. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  366. package/out/zero-cache/src/services/view-syncer/cvr.js +22 -13
  367. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  368. package/out/zero-cache/src/services/view-syncer/database-storage.js +1 -1
  369. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  370. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +31 -0
  371. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -0
  372. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +53 -0
  373. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
  374. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +13 -5
  375. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  376. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +27 -0
  377. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  378. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -1
  379. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  380. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +5 -4
  381. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  382. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +4 -0
  383. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -0
  384. package/out/zero-cache/src/services/view-syncer/schema/init.js +16 -0
  385. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -0
  386. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +8 -216
  387. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  388. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -4
  389. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  390. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +12 -4
  391. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  392. package/out/zero-cache/src/services/view-syncer/snapshotter.js +59 -49
  393. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  394. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -4
  395. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  396. package/out/zero-cache/src/services/view-syncer/view-syncer.js +105 -44
  397. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  398. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  399. package/out/zero-cache/src/types/lite.js +8 -9
  400. package/out/zero-cache/src/types/lite.js.map +1 -1
  401. package/out/zero-cache/src/types/pg.d.ts +10 -4
  402. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  403. package/out/zero-cache/src/types/pg.js +37 -15
  404. package/out/zero-cache/src/types/pg.js.map +1 -1
  405. package/out/zero-cache/src/workers/connection.d.ts +4 -2
  406. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  407. package/out/zero-cache/src/workers/connection.js +21 -2
  408. package/out/zero-cache/src/workers/connection.js.map +1 -1
  409. package/out/zero-cache/src/workers/syncer.d.ts +2 -1
  410. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  411. package/out/zero-cache/src/workers/syncer.js +20 -9
  412. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  413. package/out/zero-client/src/client/context.d.ts +1 -1
  414. package/out/zero-client/src/client/context.d.ts.map +1 -1
  415. package/out/zero-client/src/client/context.js +99 -0
  416. package/out/zero-client/src/client/context.js.map +1 -0
  417. package/out/zero-client/src/client/crud.d.ts +8 -10
  418. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  419. package/out/zero-client/src/client/crud.js +181 -0
  420. package/out/zero-client/src/client/crud.js.map +1 -0
  421. package/out/zero-client/src/client/enable-analytics.js +21 -0
  422. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  423. package/out/zero-client/src/client/http-string.js +14 -0
  424. package/out/zero-client/src/client/http-string.js.map +1 -0
  425. package/out/zero-client/src/client/keys.d.ts +3 -2
  426. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  427. package/out/zero-client/src/client/keys.js +32 -0
  428. package/out/zero-client/src/client/keys.js.map +1 -0
  429. package/out/zero-client/src/client/log-options.js +57 -0
  430. package/out/zero-client/src/client/log-options.js.map +1 -0
  431. package/out/zero-client/src/client/metrics.js +268 -0
  432. package/out/zero-client/src/client/metrics.js.map +1 -0
  433. package/out/zero-client/src/client/normalized-schema.d.ts +17 -0
  434. package/out/zero-client/src/client/normalized-schema.d.ts.map +1 -0
  435. package/out/zero-client/src/client/normalized-schema.js +31 -0
  436. package/out/zero-client/src/client/normalized-schema.js.map +1 -0
  437. package/out/zero-client/src/client/options.js +2 -0
  438. package/out/zero-client/src/client/options.js.map +1 -0
  439. package/out/zero-client/src/client/query-manager.d.ts +18 -3
  440. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  441. package/out/zero-client/src/client/query-manager.js +149 -0
  442. package/out/zero-client/src/client/query-manager.js.map +1 -0
  443. package/out/zero-client/src/client/reload-error-handler.js +23 -0
  444. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  445. package/out/zero-client/src/client/replicache-types.js +2 -0
  446. package/out/zero-client/src/client/replicache-types.js.map +1 -0
  447. package/out/zero-client/src/client/server-error.js +22 -0
  448. package/out/zero-client/src/client/server-error.js.map +1 -0
  449. package/out/zero-client/src/client/server-option.js +37 -0
  450. package/out/zero-client/src/client/server-option.js.map +1 -0
  451. package/out/zero-client/src/client/version.js +5 -0
  452. package/out/zero-client/src/client/version.js.map +1 -0
  453. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  454. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  455. package/out/zero-client/src/client/zero-poke-handler.js +240 -0
  456. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  457. package/out/zero-client/src/client/zero.d.ts +3 -2
  458. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  459. package/out/zero-client/src/client/zero.js +1212 -0
  460. package/out/zero-client/src/client/zero.js.map +1 -0
  461. package/out/zero-client/src/mod.d.ts +1 -0
  462. package/out/zero-client/src/mod.d.ts.map +1 -1
  463. package/out/zero-client/src/mod.js +5 -0
  464. package/out/zero-client/src/mod.js.map +1 -0
  465. package/out/zero-client/src/util/nanoid.js +34 -0
  466. package/out/zero-client/src/util/nanoid.js.map +1 -0
  467. package/out/zero-client/src/util/socket.js +4 -0
  468. package/out/zero-client/src/util/socket.js.map +1 -0
  469. package/out/zero-protocol/src/ast.d.ts +87 -1
  470. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  471. package/out/zero-protocol/src/ast.js +53 -0
  472. package/out/zero-protocol/src/ast.js.map +1 -1
  473. package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
  474. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  475. package/out/zero-protocol/src/clients-patch.d.ts +1 -1
  476. package/out/zero-protocol/src/connect.d.ts +15 -8
  477. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  478. package/out/zero-protocol/src/connect.js +21 -0
  479. package/out/zero-protocol/src/connect.js.map +1 -1
  480. package/out/zero-protocol/src/data.d.ts +36 -0
  481. package/out/zero-protocol/src/data.d.ts.map +1 -0
  482. package/out/zero-protocol/src/data.js +4 -0
  483. package/out/zero-protocol/src/data.js.map +1 -0
  484. package/out/zero-protocol/src/delete-clients.d.ts +4 -4
  485. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
  486. package/out/zero-protocol/src/down.d.ts +18 -16
  487. package/out/zero-protocol/src/down.d.ts.map +1 -1
  488. package/out/zero-protocol/src/down.js +2 -1
  489. package/out/zero-protocol/src/down.js.map +1 -1
  490. package/out/zero-protocol/src/mod.d.ts +1 -2
  491. package/out/zero-protocol/src/mod.d.ts.map +1 -1
  492. package/out/zero-protocol/src/mod.js +2 -2
  493. package/out/zero-protocol/src/mod.js.map +1 -1
  494. package/out/zero-protocol/src/ping.d.ts +1 -1
  495. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  496. package/out/zero-protocol/src/poke.d.ts +26 -26
  497. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  498. package/out/zero-protocol/src/poke.js +8 -5
  499. package/out/zero-protocol/src/poke.js.map +1 -1
  500. package/out/zero-protocol/src/pong.d.ts +1 -1
  501. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  502. package/out/zero-protocol/src/primary-key.d.ts +2 -3
  503. package/out/zero-protocol/src/primary-key.d.ts.map +1 -1
  504. package/out/zero-protocol/src/primary-key.js +1 -3
  505. package/out/zero-protocol/src/primary-key.js.map +1 -1
  506. package/out/zero-protocol/src/pull.d.ts +4 -4
  507. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  508. package/out/zero-protocol/src/push.d.ts +105 -98
  509. package/out/zero-protocol/src/push.d.ts.map +1 -1
  510. package/out/zero-protocol/src/push.js +17 -13
  511. package/out/zero-protocol/src/push.js.map +1 -1
  512. package/out/zero-protocol/src/queries-patch.d.ts +4 -4
  513. package/out/zero-protocol/src/row-patch.d.ts +38 -0
  514. package/out/zero-protocol/src/row-patch.d.ts.map +1 -0
  515. package/out/zero-protocol/src/{entities-patch.js → row-patch.js} +10 -11
  516. package/out/zero-protocol/src/row-patch.js.map +1 -0
  517. package/out/zero-protocol/src/up.d.ts +28 -27
  518. package/out/zero-protocol/src/up.d.ts.map +1 -1
  519. package/out/zero-protocol/src/warm.d.ts +10 -0
  520. package/out/zero-protocol/src/warm.d.ts.map +1 -0
  521. package/out/zero-protocol/src/warm.js +6 -0
  522. package/out/zero-protocol/src/warm.js.map +1 -0
  523. package/out/zero-react/src/use-query.d.ts.map +1 -1
  524. package/out/zero.js +522 -217
  525. package/out/zero.js.map +4 -4
  526. package/out/zql/src/zql/builder/builder.d.ts +3 -4
  527. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  528. package/out/zql/src/zql/builder/builder.js +1 -2
  529. package/out/zql/src/zql/builder/builder.js.map +1 -1
  530. package/out/zql/src/zql/builder/filter.d.ts +2 -2
  531. package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
  532. package/out/zql/src/zql/builder/filter.js.map +1 -1
  533. package/out/zql/src/zql/ivm/array-view.d.ts +5 -12
  534. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
  535. package/out/zql/src/zql/ivm/array-view.js +226 -0
  536. package/out/zql/src/zql/ivm/array-view.js.map +1 -0
  537. package/out/zql/src/zql/ivm/change.d.ts +2 -1
  538. package/out/zql/src/zql/ivm/change.d.ts.map +1 -1
  539. package/out/zql/src/zql/ivm/data.d.ts +2 -33
  540. package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
  541. package/out/zql/src/zql/ivm/data.js.map +1 -1
  542. package/out/zql/src/zql/ivm/filter.d.ts +2 -1
  543. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
  544. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  545. package/out/zql/src/zql/ivm/join.d.ts +1 -1
  546. package/out/zql/src/zql/ivm/join.d.ts.map +1 -1
  547. package/out/zql/src/zql/ivm/join.js +68 -24
  548. package/out/zql/src/zql/ivm/join.js.map +1 -1
  549. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
  550. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  551. package/out/zql/src/zql/ivm/memory-source.d.ts +8 -6
  552. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  553. package/out/zql/src/zql/ivm/memory-source.js +2 -0
  554. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  555. package/out/zql/src/zql/ivm/memory-storage.js +33 -0
  556. package/out/zql/src/zql/ivm/memory-storage.js.map +1 -0
  557. package/out/zql/src/zql/ivm/operator.d.ts +2 -1
  558. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
  559. package/out/zql/src/zql/ivm/schema.d.ts +3 -3
  560. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  561. package/out/zql/src/zql/ivm/schema.js.map +1 -1
  562. package/out/zql/src/zql/ivm/skip.d.ts +2 -1
  563. package/out/zql/src/zql/ivm/skip.d.ts.map +1 -1
  564. package/out/zql/src/zql/ivm/skip.js.map +1 -1
  565. package/out/zql/src/zql/ivm/source.d.ts +2 -2
  566. package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
  567. package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
  568. package/out/zql/src/zql/ivm/take.js.map +1 -1
  569. package/out/zql/src/zql/query/like.d.ts +2 -0
  570. package/out/zql/src/zql/query/like.d.ts.map +1 -0
  571. package/out/zql/src/zql/query/like.js +18 -0
  572. package/out/zql/src/zql/query/like.js.map +1 -0
  573. package/out/zql/src/zql/query/normalize-table-schema.d.ts +48 -0
  574. package/out/zql/src/zql/query/normalize-table-schema.d.ts.map +1 -0
  575. package/out/zql/src/zql/query/normalize-table-schema.js +116 -0
  576. package/out/zql/src/zql/query/normalize-table-schema.js.map +1 -0
  577. package/out/zql/src/zql/query/query-impl.d.ts +6 -5
  578. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  579. package/out/zql/src/zql/query/query-impl.js +263 -0
  580. package/out/zql/src/zql/query/query-impl.js.map +1 -0
  581. package/out/zql/src/zql/query/query.d.ts +1 -1
  582. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  583. package/out/zql/src/zql/query/query.js +3 -0
  584. package/out/zql/src/zql/query/query.js.map +1 -0
  585. package/out/zql/src/zql/query/schema.d.ts +13 -4
  586. package/out/zql/src/zql/query/schema.d.ts.map +1 -1
  587. package/out/zql/src/zql/query/schema.js +7 -0
  588. package/out/zql/src/zql/query/schema.js.map +1 -0
  589. package/out/zql/src/zql/query/typed-view.d.ts +5 -2
  590. package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
  591. package/out/zql/src/zql/query/typed-view.js +2 -0
  592. package/out/zql/src/zql/query/typed-view.js.map +1 -0
  593. package/out/zqlite/src/db.d.ts +1 -1
  594. package/out/zqlite/src/db.d.ts.map +1 -1
  595. package/out/zqlite/src/db.js +1 -1
  596. package/out/zqlite/src/db.js.map +1 -1
  597. package/out/zqlite/src/table-source.d.ts +2 -2
  598. package/out/zqlite/src/table-source.d.ts.map +1 -1
  599. package/out/zqlite/src/table-source.js.map +1 -1
  600. package/package.json +10 -8
  601. package/deps/sqlite3/sqlite3.c +0 -260574
  602. package/deps/sqlite3/sqlite3.h +0 -13572
  603. package/deps/sqlite3/sqlite3ext.h +0 -719
  604. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
  605. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
  606. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
  607. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
  608. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -6
  609. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
  610. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
  611. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +0 -11
  612. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +0 -1
  613. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +0 -86
  614. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +0 -1
  615. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +0 -4
  616. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +0 -1
  617. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +0 -12
  618. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +0 -1
  619. package/out/zero-cache/src/types/specs.d.ts +0 -29
  620. package/out/zero-cache/src/types/specs.d.ts.map +0 -1
  621. package/out/zero-cache/src/types/specs.js +0 -2
  622. package/out/zero-cache/src/types/specs.js.map +0 -1
  623. package/out/zero-client/src/client/make-id-from-primary-key.d.ts +0 -5
  624. package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +0 -1
  625. package/out/zero-protocol/src/entities-patch.d.ts +0 -66
  626. package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
  627. package/out/zero-protocol/src/entities-patch.js.map +0 -1
  628. package/out/zql/src/zql/ast/ast.d.ts +0 -84
  629. package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
  630. package/out/zql/src/zql/ast/ast.js +0 -54
  631. package/out/zql/src/zql/ast/ast.js.map +0 -1
  632. package/tool/install-sqlite3.js +0 -37
@@ -0,0 +1,375 @@
1
+ import { assert } from '../../../shared/src/asserts.js';
2
+ import { deepEqual } from '../../../shared/src/json.js';
3
+ import { diff } from '../btree/diff.js';
4
+ import { BTreeRead } from '../btree/read.js';
5
+ import { compareCookies } from '../cookies.js';
6
+ import { assertSnapshotMetaDD31, baseSnapshotFromHash, Commit, commitChain, commitFromHash, commitIsLocalDD31, DEFAULT_HEAD_NAME, localMutations as localMutations_1, snapshotMetaParts, } from '../db/commit.js';
7
+ import { newWriteSnapshotDD31, newWriteSnapshotSDD, readIndexesForWrite, updateIndexes, } from '../db/write.js';
8
+ import { isErrorResponse } from '../error-responses.js';
9
+ import * as FormatVersion from '../format-version-enum.js';
10
+ import { deepFreeze } from '../frozen-json.js';
11
+ import { assertPullerResultV0, assertPullerResultV1, } from '../get-default-puller.js';
12
+ import { emptyHash } from '../hash.js';
13
+ import { ReportError } from '../replicache.js';
14
+ import { toError } from '../to-error.js';
15
+ import { withRead, withWriteNoImplicitCommit } from '../with-transactions.js';
16
+ import { addDiffsForIndexes, DiffsMap, } from './diff.js';
17
+ import * as HandlePullResponseResultType from './handle-pull-response-result-type-enum.js';
18
+ import * as patch from './patch.js';
19
+ import { PullError } from './pull-error.js';
20
+ import { SYNC_HEAD_NAME } from './sync-head-name.js';
21
+ export const PULL_VERSION_SDD = 0;
22
+ export const PULL_VERSION_DD31 = 1;
23
+ export function isPullRequestV1(pr) {
24
+ return pr.pullVersion === PULL_VERSION_DD31;
25
+ }
26
+ export async function beginPullV0(profileID, clientID, schemaVersion, puller, requestID, store, formatVersion, lc, createSyncBranch = true) {
27
+ const [lastMutationID, baseCookie] = await withRead(store, async (dagRead) => {
28
+ const mainHeadHash = await dagRead.getHead(DEFAULT_HEAD_NAME);
29
+ if (!mainHeadHash) {
30
+ throw new Error('Internal no main head found');
31
+ }
32
+ const baseSnapshot = await baseSnapshotFromHash(mainHeadHash, dagRead);
33
+ const baseSnapshotMeta = baseSnapshot.meta;
34
+ const baseCookie = baseSnapshotMeta.cookieJSON;
35
+ const lastMutationID = await baseSnapshot.getMutationID(clientID, dagRead);
36
+ return [lastMutationID, baseCookie];
37
+ });
38
+ const pullReq = {
39
+ profileID,
40
+ clientID,
41
+ cookie: baseCookie,
42
+ lastMutationID,
43
+ pullVersion: PULL_VERSION_SDD,
44
+ schemaVersion,
45
+ };
46
+ const { response, httpRequestInfo } = (await callPuller(lc, puller, pullReq, requestID));
47
+ // If Puller did not get a pull response we still want to return the HTTP
48
+ // request info to the JS SDK.
49
+ if (!response) {
50
+ return {
51
+ httpRequestInfo,
52
+ syncHead: emptyHash,
53
+ };
54
+ }
55
+ if (!createSyncBranch || isErrorResponse(response)) {
56
+ return {
57
+ httpRequestInfo,
58
+ pullResponse: response,
59
+ syncHead: emptyHash,
60
+ };
61
+ }
62
+ const result = await handlePullResponseV0(lc, store, baseCookie, response, clientID, formatVersion);
63
+ if (result.type === HandlePullResponseResultType.CookieMismatch) {
64
+ throw new Error('Overlapping sync');
65
+ }
66
+ return {
67
+ httpRequestInfo,
68
+ pullResponse: response,
69
+ syncHead: result.type === HandlePullResponseResultType.Applied
70
+ ? result.syncHead
71
+ : emptyHash,
72
+ };
73
+ }
74
+ export async function beginPullV1(profileID, clientID, clientGroupID, schemaVersion, puller, requestID, store, formatVersion, lc, createSyncBranch = true) {
75
+ const baseCookie = await withRead(store, async (dagRead) => {
76
+ const mainHeadHash = await dagRead.getHead(DEFAULT_HEAD_NAME);
77
+ if (!mainHeadHash) {
78
+ throw new Error('Internal no main head found');
79
+ }
80
+ const baseSnapshot = await baseSnapshotFromHash(mainHeadHash, dagRead);
81
+ const baseSnapshotMeta = baseSnapshot.meta;
82
+ assertSnapshotMetaDD31(baseSnapshotMeta);
83
+ return baseSnapshotMeta.cookieJSON;
84
+ });
85
+ const pullReq = {
86
+ profileID,
87
+ clientGroupID,
88
+ cookie: baseCookie,
89
+ pullVersion: PULL_VERSION_DD31,
90
+ schemaVersion,
91
+ };
92
+ const { response, httpRequestInfo } = (await callPuller(lc, puller, pullReq, requestID));
93
+ // If Puller did not get a pull response we still want to return the HTTP
94
+ // request info.
95
+ if (!response) {
96
+ return {
97
+ httpRequestInfo,
98
+ syncHead: emptyHash,
99
+ };
100
+ }
101
+ if (!createSyncBranch || isErrorResponse(response)) {
102
+ return {
103
+ httpRequestInfo,
104
+ pullResponse: response,
105
+ syncHead: emptyHash,
106
+ };
107
+ }
108
+ const result = await handlePullResponseV1(lc, store, baseCookie, response, clientID, formatVersion);
109
+ return {
110
+ httpRequestInfo,
111
+ pullResponse: response,
112
+ syncHead: result.type === HandlePullResponseResultType.Applied
113
+ ? result.syncHead
114
+ : emptyHash,
115
+ };
116
+ }
117
+ async function callPuller(lc, puller, pullReq, requestID) {
118
+ lc.debug?.('Starting pull...');
119
+ const pullStart = Date.now();
120
+ let pullerResult;
121
+ try {
122
+ pullerResult = await puller(pullReq, requestID);
123
+ lc.debug?.(`...Pull ${pullerResult.response ? 'complete' : 'failed'} in `, Date.now() - pullStart, 'ms');
124
+ }
125
+ catch (e) {
126
+ throw new PullError(toError(e));
127
+ }
128
+ try {
129
+ if (isPullRequestV1(pullReq)) {
130
+ assertPullerResultV1(pullerResult);
131
+ }
132
+ else {
133
+ assertPullerResultV0(pullerResult);
134
+ }
135
+ return pullerResult;
136
+ }
137
+ catch (e) {
138
+ throw new ReportError('Invalid puller result', toError(e));
139
+ }
140
+ }
141
+ // Returns new sync head, or null if response did not apply due to mismatched cookie.
142
+ export function handlePullResponseV0(lc, store, expectedBaseCookie, response, clientID, formatVersion) {
143
+ // It is possible that another sync completed while we were pulling. Ensure
144
+ // that is not the case by re-checking the base snapshot.
145
+ return withWriteNoImplicitCommit(store, async (dagWrite) => {
146
+ assert(formatVersion <= FormatVersion.SDD);
147
+ const dagRead = dagWrite;
148
+ const mainHead = await dagRead.getHead(DEFAULT_HEAD_NAME);
149
+ if (mainHead === undefined) {
150
+ throw new Error('Main head disappeared');
151
+ }
152
+ const baseSnapshot = await baseSnapshotFromHash(mainHead, dagRead);
153
+ const [baseLastMutationID, baseCookie] = snapshotMetaParts(baseSnapshot, clientID);
154
+ // TODO(MP) Here we are using whether the cookie has changes as a proxy for whether
155
+ // the base snapshot changed, which is the check we used to do. I don't think this
156
+ // is quite right. We need to firm up under what conditions we will/not accept an
157
+ // update from the server: https://github.com/rocicorp/replicache/issues/713.
158
+ if (!deepEqual(expectedBaseCookie, baseCookie)) {
159
+ return {
160
+ type: HandlePullResponseResultType.CookieMismatch,
161
+ };
162
+ }
163
+ // If other entities (eg, other clients) are modifying the client view
164
+ // the client view can change but the lastMutationID stays the same.
165
+ // So be careful here to reject only a lesser lastMutationID.
166
+ if (response.lastMutationID < baseLastMutationID) {
167
+ throw new Error(badOrderMessage(`lastMutationID`, String(response.lastMutationID), String(baseLastMutationID)));
168
+ }
169
+ const frozenCookie = deepFreeze(response.cookie ?? null);
170
+ // If the cookie didn't change, it's a nop.
171
+ // Otherwise, we will write a new commit, including for the case of just
172
+ // a cookie change.
173
+ if (deepEqual(frozenCookie, baseCookie)) {
174
+ if (response.patch.length > 0) {
175
+ lc.error?.(`handlePullResponse: cookie ${JSON.stringify(baseCookie)} did not change, but patch is not empty`);
176
+ }
177
+ if (response.lastMutationID !== baseLastMutationID) {
178
+ lc.error?.(`handlePullResponse: cookie ${JSON.stringify(baseCookie)} did not change, but lastMutationID did change`);
179
+ }
180
+ return {
181
+ type: HandlePullResponseResultType.NoOp,
182
+ };
183
+ }
184
+ // We are going to need to adjust the indexes. Imagine we have just pulled:
185
+ //
186
+ // S1 - M1 - main
187
+ // \ S2 - sync
188
+ //
189
+ // Let's say S2 says that it contains up to M1. Are we safe at this moment
190
+ // to set main to S2?
191
+ //
192
+ // No, because the Replicache protocol does not require a snapshot
193
+ // containing M1 to have the same data as the client computed for M1!
194
+ //
195
+ // We must diff the main map in M1 against the main map in S2 and see if it
196
+ // contains any changes. Whatever changes it contains must be applied to
197
+ // all indexes.
198
+ //
199
+ // We start with the index definitions in the last commit that was
200
+ // integrated into the new snapshot.
201
+ const chain = await commitChain(mainHead, dagRead);
202
+ let lastIntegrated;
203
+ for (const commit of chain) {
204
+ if ((await commit.getMutationID(clientID, dagRead)) <=
205
+ response.lastMutationID) {
206
+ lastIntegrated = commit;
207
+ break;
208
+ }
209
+ }
210
+ if (!lastIntegrated) {
211
+ throw new Error('Internal invalid chain');
212
+ }
213
+ const dbWrite = await newWriteSnapshotSDD(baseSnapshot.chunk.hash, response.lastMutationID, frozenCookie, dagWrite, readIndexesForWrite(lastIntegrated, dagWrite, formatVersion), clientID, formatVersion);
214
+ await patch.apply(lc, dbWrite, response.patch);
215
+ const lastIntegratedMap = new BTreeRead(dagRead, formatVersion, lastIntegrated.valueHash);
216
+ for await (const change of dbWrite.map.diff(lastIntegratedMap)) {
217
+ await updateIndexes(lc, dbWrite.indexes, change.key, () => Promise.resolve(change.oldValue), change.newValue);
218
+ }
219
+ return {
220
+ type: HandlePullResponseResultType.Applied,
221
+ syncHead: await dbWrite.commit(SYNC_HEAD_NAME),
222
+ };
223
+ });
224
+ }
225
+ function badOrderMessage(name, receivedValue, lastSnapshotValue) {
226
+ return `Received ${name} ${receivedValue} is < than last snapshot ${name} ${lastSnapshotValue}; ignoring client view`;
227
+ }
228
+ export function handlePullResponseV1(lc, store, expectedBaseCookie, response, clientID, formatVersion) {
229
+ // It is possible that another sync completed while we were pulling. Ensure
230
+ // that is not the case by re-checking the base snapshot.
231
+ return withWriteNoImplicitCommit(store, async (dagWrite) => {
232
+ const dagRead = dagWrite;
233
+ const mainHead = await dagRead.getHead(DEFAULT_HEAD_NAME);
234
+ if (mainHead === undefined) {
235
+ throw new Error('Main head disappeared');
236
+ }
237
+ const baseSnapshot = await baseSnapshotFromHash(mainHead, dagRead);
238
+ const baseSnapshotMeta = baseSnapshot.meta;
239
+ assertSnapshotMetaDD31(baseSnapshotMeta);
240
+ const baseCookie = baseSnapshotMeta.cookieJSON;
241
+ // TODO(MP) Here we are using whether the cookie has changed as a proxy for whether
242
+ // the base snapshot changed, which is the check we used to do. I don't think this
243
+ // is quite right. We need to firm up under what conditions we will/not accept an
244
+ // update from the server: https://github.com/rocicorp/replicache/issues/713.
245
+ // In DD31 this is expected to happen if a refresh occurs during a pull.
246
+ if (!deepEqual(expectedBaseCookie, baseCookie)) {
247
+ lc.debug?.('handlePullResponse: cookie mismatch, response is not applicable');
248
+ return {
249
+ type: HandlePullResponseResultType.CookieMismatch,
250
+ };
251
+ }
252
+ // Check that the lastMutationIDs are not going backwards.
253
+ for (const [clientID, lmidChange] of Object.entries(response.lastMutationIDChanges)) {
254
+ const lastMutationID = baseSnapshotMeta.lastMutationIDs[clientID];
255
+ if (lastMutationID !== undefined && lmidChange < lastMutationID) {
256
+ throw new Error(badOrderMessage(`${clientID} lastMutationID`, String(lmidChange), String(lastMutationID)));
257
+ }
258
+ }
259
+ const frozenResponseCookie = deepFreeze(response.cookie);
260
+ if (compareCookies(frozenResponseCookie, baseCookie) < 0) {
261
+ throw new Error(badOrderMessage('cookie', JSON.stringify(frozenResponseCookie), JSON.stringify(baseCookie)));
262
+ }
263
+ if (deepEqual(frozenResponseCookie, baseCookie)) {
264
+ if (response.patch.length > 0) {
265
+ lc.error?.(`handlePullResponse: cookie ${JSON.stringify(baseCookie)} did not change, but patch is not empty`);
266
+ }
267
+ if (Object.keys(response.lastMutationIDChanges).length > 0) {
268
+ console.log(response.lastMutationIDChanges);
269
+ lc.error?.(`handlePullResponse: cookie ${JSON.stringify(baseCookie)} did not change, but lastMutationIDChanges is not empty`);
270
+ }
271
+ // If the cookie doesn't change, it's a nop.
272
+ return {
273
+ type: HandlePullResponseResultType.NoOp,
274
+ };
275
+ }
276
+ const dbWrite = await newWriteSnapshotDD31(baseSnapshot.chunk.hash, { ...baseSnapshotMeta.lastMutationIDs, ...response.lastMutationIDChanges }, frozenResponseCookie, dagWrite, clientID, formatVersion);
277
+ await patch.apply(lc, dbWrite, response.patch);
278
+ return {
279
+ type: HandlePullResponseResultType.Applied,
280
+ syncHead: await dbWrite.commit(SYNC_HEAD_NAME),
281
+ };
282
+ });
283
+ }
284
+ export function maybeEndPull(store, lc, expectedSyncHead, clientID, diffConfig, formatVersion) {
285
+ return withWriteNoImplicitCommit(store, async (dagWrite) => {
286
+ const dagRead = dagWrite;
287
+ // Ensure sync head is what the caller thinks it is.
288
+ const syncHeadHash = await dagRead.getHead(SYNC_HEAD_NAME);
289
+ if (syncHeadHash === undefined) {
290
+ throw new Error('Missing sync head');
291
+ }
292
+ if (syncHeadHash !== expectedSyncHead) {
293
+ lc.error?.('maybeEndPull, Wrong sync head. Expecting:', expectedSyncHead, 'got:', syncHeadHash);
294
+ throw new Error('Wrong sync head');
295
+ }
296
+ // Ensure another sync has not landed a new snapshot on the main chain.
297
+ // TODO: In DD31, it is expected that a newer snapshot might have appeared
298
+ // on the main chain. In that case, we just abort this pull.
299
+ const syncSnapshot = await baseSnapshotFromHash(syncHeadHash, dagRead);
300
+ const mainHeadHash = await dagRead.getHead(DEFAULT_HEAD_NAME);
301
+ if (mainHeadHash === undefined) {
302
+ throw new Error('Missing main head');
303
+ }
304
+ const mainSnapshot = await baseSnapshotFromHash(mainHeadHash, dagRead);
305
+ const { meta } = syncSnapshot;
306
+ const syncSnapshotBasis = meta.basisHash;
307
+ if (syncSnapshot === null) {
308
+ throw new Error('Sync snapshot with no basis');
309
+ }
310
+ if (syncSnapshotBasis !== mainSnapshot.chunk.hash) {
311
+ throw new Error('Overlapping syncs');
312
+ }
313
+ // Collect pending commits from the main chain and determine which
314
+ // of them if any need to be replayed.
315
+ const syncHead = await commitFromHash(syncHeadHash, dagRead);
316
+ const pending = [];
317
+ const localMutations = await localMutations_1(mainHeadHash, dagRead);
318
+ for (const commit of localMutations) {
319
+ let cid = clientID;
320
+ if (commitIsLocalDD31(commit)) {
321
+ cid = commit.meta.clientID;
322
+ }
323
+ if ((await commit.getMutationID(cid, dagRead)) >
324
+ (await syncHead.getMutationID(cid, dagRead))) {
325
+ // We know that the dag can only contain either LocalMetaSDD or LocalMetaDD31
326
+ pending.push(commit);
327
+ }
328
+ }
329
+ // pending() gave us the pending mutations in sync-head-first order whereas
330
+ // caller wants them in the order to replay (lower mutation ids first).
331
+ pending.reverse();
332
+ // We return the keys that changed due to this pull. This is used by
333
+ // subscriptions in the JS API when there are no more pending mutations.
334
+ const diffsMap = new DiffsMap();
335
+ // Return replay commits if any.
336
+ if (pending.length > 0) {
337
+ return {
338
+ syncHead: syncHeadHash,
339
+ replayMutations: pending,
340
+ // The changed keys are not reported when further replays are
341
+ // needed. The diffs will be reported at the end when there
342
+ // are no more mutations to be replay and then it will be reported
343
+ // relative to DEFAULT_HEAD_NAME.
344
+ diffs: diffsMap,
345
+ };
346
+ }
347
+ // TODO check invariants
348
+ // Compute diffs (changed keys) for value map and index maps.
349
+ const mainHead = await commitFromHash(mainHeadHash, dagRead);
350
+ if (diffConfig.shouldComputeDiffs()) {
351
+ const mainHeadMap = new BTreeRead(dagRead, formatVersion, mainHead.valueHash);
352
+ const syncHeadMap = new BTreeRead(dagRead, formatVersion, syncHead.valueHash);
353
+ const valueDiff = await diff(mainHeadMap, syncHeadMap);
354
+ diffsMap.set('', valueDiff);
355
+ await addDiffsForIndexes(mainHead, syncHead, dagRead, diffsMap, diffConfig, formatVersion);
356
+ }
357
+ // No mutations to replay so set the main head to the sync head and sync complete!
358
+ await Promise.all([
359
+ dagWrite.setHead(DEFAULT_HEAD_NAME, syncHeadHash),
360
+ dagWrite.removeHead(SYNC_HEAD_NAME),
361
+ ]);
362
+ await dagWrite.commit();
363
+ if (lc.debug) {
364
+ const [oldLastMutationID, oldCookie] = snapshotMetaParts(mainSnapshot, clientID);
365
+ const [newLastMutationID, newCookie] = snapshotMetaParts(syncSnapshot, clientID);
366
+ lc.debug(`Successfully pulled new snapshot with lastMutationID:`, newLastMutationID, `(prev:`, oldLastMutationID, `), cookie: `, newCookie, `(prev:`, oldCookie, `), sync head hash:`, syncHeadHash, ', main head hash:', mainHeadHash, `, valueHash:`, syncHead.valueHash, `(prev:`, mainSnapshot.valueHash);
367
+ }
368
+ return {
369
+ syncHead: syncHeadHash,
370
+ replayMutations: [],
371
+ diffs: diffsMap,
372
+ };
373
+ });
374
+ }
375
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../../replicache/src/sync/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { assert } from '../../../shared/src/asserts.js';
2
+ import { jsonSchema } from '../../../shared/src/json-schema.js';
3
+ import * as valita from '../../../shared/src/valita.js';
4
+ import { DEFAULT_HEAD_NAME, commitIsLocalDD31, commitIsLocalSDD, localMutations, } from '../db/commit.js';
5
+ import { PushError, assertPusherResult, } from '../pusher.js';
6
+ import { ReportError } from '../replicache.js';
7
+ import { toError } from '../to-error.js';
8
+ import { withRead } from '../with-transactions.js';
9
+ import { clientGroupIDSchema, clientIDSchema, } from './ids.js';
10
+ export const PUSH_VERSION_SDD = 0;
11
+ export const PUSH_VERSION_DD31 = 1;
12
+ const mutationV0Schema = valita.readonlyObject({
13
+ id: valita.number(),
14
+ name: valita.string(),
15
+ args: jsonSchema,
16
+ timestamp: valita.number(),
17
+ });
18
+ const mutationV1Schema = valita.readonlyObject({
19
+ id: valita.number(),
20
+ name: valita.string(),
21
+ args: jsonSchema,
22
+ timestamp: valita.number(),
23
+ clientID: clientIDSchema,
24
+ });
25
+ const pushRequestV0Schema = valita.object({
26
+ pushVersion: valita.literal(0),
27
+ schemaVersion: valita.string(),
28
+ profileID: valita.string(),
29
+ clientID: clientIDSchema,
30
+ mutations: valita.array(mutationV0Schema),
31
+ });
32
+ const pushRequestV1Schema = valita.object({
33
+ pushVersion: valita.literal(1),
34
+ schemaVersion: valita.string(),
35
+ profileID: valita.string(),
36
+ clientGroupID: clientGroupIDSchema,
37
+ mutations: valita.array(mutationV1Schema),
38
+ });
39
+ export function assertPushRequestV0(value) {
40
+ valita.assert(value, pushRequestV0Schema);
41
+ }
42
+ export function assertPushRequestV1(value) {
43
+ valita.assert(value, pushRequestV1Schema);
44
+ }
45
+ function convertSDD(lm) {
46
+ return {
47
+ id: lm.mutationID,
48
+ name: lm.mutatorName,
49
+ args: lm.mutatorArgsJSON,
50
+ timestamp: lm.timestamp,
51
+ };
52
+ }
53
+ function convertDD31(lm) {
54
+ return {
55
+ id: lm.mutationID,
56
+ name: lm.mutatorName,
57
+ args: lm.mutatorArgsJSON,
58
+ timestamp: lm.timestamp,
59
+ clientID: lm.clientID,
60
+ };
61
+ }
62
+ export async function push(requestID, store, lc, profileID, clientGroupID, clientID, pusher, schemaVersion, pushVersion) {
63
+ // Find pending commits between the base snapshot and the main head and push
64
+ // them to the data layer.
65
+ const pending = await withRead(store, async (dagRead) => {
66
+ const mainHeadHash = await dagRead.getHead(DEFAULT_HEAD_NAME);
67
+ if (!mainHeadHash) {
68
+ throw new Error('Internal no main head');
69
+ }
70
+ return localMutations(mainHeadHash, dagRead);
71
+ // Important! Don't hold the lock through an HTTP request!
72
+ });
73
+ if (pending.length === 0) {
74
+ return undefined;
75
+ }
76
+ // Commit.pending gave us commits in head-first order; the bindings
77
+ // want tail first (in mutation id order).
78
+ pending.reverse();
79
+ let pushReq;
80
+ if (pushVersion === PUSH_VERSION_DD31) {
81
+ const pushMutations = [];
82
+ for (const commit of pending) {
83
+ if (commitIsLocalDD31(commit)) {
84
+ pushMutations.push(convertDD31(commit.meta));
85
+ }
86
+ else {
87
+ throw new Error('Internal non local pending commit');
88
+ }
89
+ }
90
+ assert(clientGroupID);
91
+ const r = {
92
+ profileID,
93
+ clientGroupID,
94
+ mutations: pushMutations,
95
+ pushVersion: PUSH_VERSION_DD31,
96
+ schemaVersion,
97
+ };
98
+ pushReq = r;
99
+ }
100
+ else {
101
+ assert(pushVersion === PUSH_VERSION_SDD);
102
+ const pushMutations = [];
103
+ for (const commit of pending) {
104
+ if (commitIsLocalSDD(commit)) {
105
+ pushMutations.push(convertSDD(commit.meta));
106
+ }
107
+ else {
108
+ throw new Error('Internal non local pending commit');
109
+ }
110
+ }
111
+ pushReq = {
112
+ profileID,
113
+ clientID,
114
+ mutations: pushMutations,
115
+ pushVersion: PUSH_VERSION_SDD,
116
+ schemaVersion,
117
+ };
118
+ }
119
+ lc.debug?.('Starting push...');
120
+ const pushStart = Date.now();
121
+ const pusherResult = await callPusher(pusher, pushReq, requestID);
122
+ lc.debug?.('...Push complete in ', Date.now() - pushStart, 'ms');
123
+ return pusherResult;
124
+ }
125
+ async function callPusher(pusher, body, requestID) {
126
+ let pusherResult;
127
+ try {
128
+ pusherResult = await pusher(body, requestID);
129
+ }
130
+ catch (e) {
131
+ throw new PushError(toError(e));
132
+ }
133
+ try {
134
+ assertPusherResult(pusherResult);
135
+ return pusherResult;
136
+ }
137
+ catch (e) {
138
+ throw new ReportError('Invalid pusher result', toError(e));
139
+ }
140
+ }
141
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../../replicache/src/sync/push.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,oCAAoC,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AAExD,OAAO,EACL,iBAAiB,EAGjB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EAGT,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAGL,mBAAmB,EACnB,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAanC,MAAM,gBAAgB,GAA4B,MAAM,CAAC,cAAc,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAaH,MAAM,gBAAgB,GAA4B,MAAM,CAAC,cAAc,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAC1B,QAAQ,EAAE,cAAc;CACzB,CAAC,CAAC;AAyBH,MAAM,mBAAmB,GAA+B,MAAM,CAAC,MAAM,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAC1B,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;CAC1C,CAAC,CAAC;AAoBH,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;IAC1B,aAAa,EAAE,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;CAC1C,CAAC,CAAC;AAIH,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAC5C,CAAC;AASD,SAAS,UAAU,CAAC,EAAgB;IAClC,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,UAAU;QACjB,IAAI,EAAE,EAAE,CAAC,WAAW;QACpB,IAAI,EAAE,EAAE,CAAC,eAAe;QACxB,SAAS,EAAE,EAAE,CAAC,SAAS;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAiB;IACpC,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,UAAU;QACjB,IAAI,EAAE,EAAE,CAAC,WAAW;QACpB,IAAI,EAAE,EAAE,CAAC,eAAe;QACxB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,SAAiB,EACjB,KAAY,EACZ,EAAc,EACd,SAAiB,EACjB,aAAwC,EACxC,QAAkB,EAClB,MAAc,EACd,aAAqB,EACrB,WAA+D;IAE/D,4EAA4E;IAC5E,0BAA0B;IAC1B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QACpD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,0DAA0D;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,0CAA0C;IAC1C,OAAO,CAAC,OAAO,EAAE,CAAC;IAElB,IAAI,OAAsC,CAAC;IAE3C,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QACtC,MAAM,aAAa,GAAuB,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,CAAC;QACtB,MAAM,CAAC,GAAkB;YACvB,SAAS;YACT,aAAa;YACb,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,iBAAiB;YAC9B,aAAa;SACd,CAAC;QACF,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,WAAW,KAAK,gBAAgB,CAAC,CAAC;QACzC,MAAM,aAAa,GAAuB,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,OAAO,GAAG;YACR,SAAS;YACT,QAAQ;YACR,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,gBAAgB;YAC7B,aAAa;SACd,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAClE,EAAE,CAAC,KAAK,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAc,EACd,IAAmC,EACnC,SAAiB;IAEjB,IAAI,YAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { getNonCryptoRandomValues } from '../../../shared/src/random-values.js';
2
+ let sessionID = '';
3
+ function getSessionID() {
4
+ if (sessionID === '') {
5
+ const buf = new Uint8Array(4);
6
+ getNonCryptoRandomValues(buf);
7
+ sessionID = Array.from(buf, x => x.toString(16)).join('');
8
+ }
9
+ return sessionID;
10
+ }
11
+ const REQUEST_COUNTERS = new Map();
12
+ /**
13
+ * Returns a new requestID of the form <client ID>-<session ID>-<request
14
+ * count>. The request count enables one to find the request following or
15
+ * preceding a given request. The sessionid scopes the request count, ensuring
16
+ * the requestID is probabilistically unique across restarts (which is good
17
+ * enough).
18
+ */
19
+ export function newRequestID(clientID) {
20
+ let counter = REQUEST_COUNTERS.get(clientID);
21
+ if (!counter) {
22
+ REQUEST_COUNTERS.set(clientID, 0);
23
+ counter = 0;
24
+ }
25
+ else {
26
+ counter++;
27
+ REQUEST_COUNTERS.set(clientID, counter);
28
+ }
29
+ return `${clientID}-${getSessionID()}-${counter}`;
30
+ }
31
+ //# sourceMappingURL=request-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../../replicache/src/sync/request-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,sCAAsC,CAAC;AAG9E,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,SAAS,YAAY;IACnB,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC9B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,IAAI,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;QACV,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,QAAQ,IAAI,YAAY,EAAE,IAAI,OAAO,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const SYNC_HEAD_NAME = 'sync';
2
+ //# sourceMappingURL=sync-head-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-head-name.js","sourceRoot":"","sources":["../../../../../replicache/src/sync/sync-head-name.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** @deprecated */
2
+ export const TEST_LICENSE_KEY = 'This key only good for automated testing';
3
+ //# sourceMappingURL=test-license-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-license-key.js","sourceRoot":"","sources":["../../../../replicache/src/test-license-key.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export function toError(e) {
2
+ if (e instanceof Error) {
3
+ return e;
4
+ }
5
+ return new Error(String(e));
6
+ }
7
+ //# sourceMappingURL=to-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-error.js","sourceRoot":"","sources":["../../../../replicache/src/to-error.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This error is thrown when you try to call methods on a closed transaction.
3
+ */
4
+ export class TransactionClosedError extends Error {
5
+ constructor() {
6
+ super('Transaction is closed');
7
+ }
8
+ }
9
+ export function throwIfClosed(tx) {
10
+ if (tx.closed) {
11
+ throw new TransactionClosedError();
12
+ }
13
+ }
14
+ export function rejectIfClosed(tx) {
15
+ return tx.closed ? Promise.reject(new TransactionClosedError()) : undefined;
16
+ }
17
+ //# sourceMappingURL=transaction-closed-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-closed-error.js","sourceRoot":"","sources":["../../../../replicache/src/transaction-closed-error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACjC,CAAC;CACF;AAID,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC"}