@rocicorp/zero 0.0.202410041744 → 0.2.2024101100

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 (383) hide show
  1. package/out/btree/src/mod.d.ts +2 -0
  2. package/out/btree/src/mod.d.ts.map +1 -0
  3. package/out/btree/src/mod.js +2 -0
  4. package/out/btree/src/mod.js.map +1 -0
  5. package/out/datadog/src/mod.js +2 -0
  6. package/out/datadog/src/mod.js.map +1 -0
  7. package/out/react.js +9 -3
  8. package/out/react.js.map +3 -3
  9. package/out/replicache/src/btree/node.d.ts.map +1 -1
  10. package/out/replicache/src/config.d.ts.map +1 -1
  11. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  12. package/out/replicache/src/cookies.d.ts.map +1 -1
  13. package/out/replicache/src/dag/gc.d.ts.map +1 -1
  14. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  15. package/out/replicache/src/db/scan.d.ts.map +1 -1
  16. package/out/replicache/src/frozen-json.d.ts.map +1 -1
  17. package/out/replicache/src/get-default-puller.d.ts.map +1 -1
  18. package/out/replicache/src/hash.d.ts.map +1 -1
  19. package/out/replicache/src/http-request-info.d.ts.map +1 -1
  20. package/out/replicache/src/index-defs.d.ts.map +1 -1
  21. package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
  22. package/out/replicache/src/kv/store.d.ts.map +1 -1
  23. package/out/replicache/src/kv/write-impl-base.d.ts.map +1 -1
  24. package/out/replicache/src/mod.d.ts.map +1 -1
  25. package/out/replicache/src/mutation-recovery.d.ts.map +1 -1
  26. package/out/replicache/src/patch-operation.d.ts.map +1 -1
  27. package/out/replicache/src/pending-mutations.d.ts.map +1 -1
  28. package/out/replicache/src/persist/client-groups.d.ts.map +1 -1
  29. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  30. package/out/replicache/src/puller.d.ts.map +1 -1
  31. package/out/replicache/src/replicache-impl.d.ts +0 -1
  32. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  33. package/out/replicache/src/replicache.d.ts.map +1 -1
  34. package/out/replicache/src/scan-iterator.d.ts.map +1 -1
  35. package/out/replicache/src/subscriptions.d.ts +1 -1
  36. package/out/replicache/src/subscriptions.d.ts.map +1 -1
  37. package/out/replicache/src/sync/ids.d.ts.map +1 -1
  38. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  39. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  40. package/out/replicache/src/sync/push.d.ts.map +1 -1
  41. package/out/replicache/src/sync/request-id.d.ts.map +1 -1
  42. package/out/replicache/src/transactions.d.ts.map +1 -1
  43. package/out/replicache/src/types.d.ts.map +1 -1
  44. package/out/shared/src/browser-env.d.ts +4 -2
  45. package/out/shared/src/browser-env.d.ts.map +1 -1
  46. package/out/shared/src/h64-with-reverse.d.ts +6 -0
  47. package/out/shared/src/h64-with-reverse.d.ts.map +1 -0
  48. package/out/shared/src/h64-with-reverse.js +13 -0
  49. package/out/shared/src/h64-with-reverse.js.map +1 -0
  50. package/out/shared/src/reverse-string.d.ts +2 -0
  51. package/out/shared/src/reverse-string.d.ts.map +1 -0
  52. package/out/shared/src/reverse-string.js +8 -0
  53. package/out/shared/src/reverse-string.js.map +1 -0
  54. package/out/zero/src/cli.js +0 -0
  55. package/out/zero/src/react.d.ts +1 -1
  56. package/out/zero/src/react.d.ts.map +1 -1
  57. package/out/zero/src/server/change-streamer.d.ts.map +1 -1
  58. package/out/zero/src/server/change-streamer.js.map +1 -1
  59. package/out/zero/src/server/main.d.ts.map +1 -1
  60. package/out/zero/src/server/main.js.map +1 -1
  61. package/out/zero/src/server/replicator.d.ts.map +1 -1
  62. package/out/zero/src/server/replicator.js.map +1 -1
  63. package/out/zero/src/server/syncer.d.ts.map +1 -1
  64. package/out/zero/src/server/syncer.js.map +1 -1
  65. package/out/zero/src/zero.d.ts +1 -1
  66. package/out/zero/src/zero.d.ts.map +1 -1
  67. package/out/zero-cache/src/config/zero-config.d.ts +46 -21
  68. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  69. package/out/zero-cache/src/config/zero-config.js +38 -20
  70. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  71. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  72. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  73. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  74. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  75. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  76. package/out/zero-cache/src/db/migration.js.map +1 -1
  77. package/out/zero-cache/src/db/statements.d.ts +2 -0
  78. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  79. package/out/zero-cache/src/db/statements.js +6 -0
  80. package/out/zero-cache/src/db/statements.js.map +1 -1
  81. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  82. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  83. package/out/zero-cache/src/server/change-streamer.js +5 -5
  84. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  85. package/out/zero-cache/src/server/life-cycle.d.ts +38 -0
  86. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -0
  87. package/out/zero-cache/src/server/life-cycle.js +125 -0
  88. package/out/zero-cache/src/server/life-cycle.js.map +1 -0
  89. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  90. package/out/zero-cache/src/server/logging.js +43 -4
  91. package/out/zero-cache/src/server/logging.js.map +1 -1
  92. package/out/zero-cache/src/server/main.js +18 -16
  93. package/out/zero-cache/src/server/main.js.map +1 -1
  94. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  95. package/out/zero-cache/src/server/replicator.js +12 -11
  96. package/out/zero-cache/src/server/replicator.js.map +1 -1
  97. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  98. package/out/zero-cache/src/server/syncer.js +9 -8
  99. package/out/zero-cache/src/server/syncer.js.map +1 -1
  100. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +3 -3
  101. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  102. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +11 -10
  103. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  104. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +2 -2
  105. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  106. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +4 -4
  107. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  108. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +2 -2
  109. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  110. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
  111. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +10 -5
  112. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
  113. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  114. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +6 -6
  115. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  116. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +1 -1
  117. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +1 -1
  118. package/out/zero-cache/src/services/change-streamer/pg/lsn.js +1 -1
  119. package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +1 -1
  120. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +1 -1
  121. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +1 -1
  122. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +1 -1
  123. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +1 -1
  124. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +1 -1
  125. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  126. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  127. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +3 -2
  128. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +1 -1
  129. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +20 -68
  130. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +1 -1
  131. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +1 -1
  132. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  133. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  134. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +1 -1
  135. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +1 -1
  136. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +1 -1
  137. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
  138. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +2 -2
  139. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  140. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +1 -1
  141. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  142. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  143. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
  144. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  145. package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
  146. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  147. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +1 -1
  148. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  149. package/out/zero-cache/src/services/change-streamer/subscriber.js +1 -1
  150. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  151. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
  152. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  153. package/out/zero-cache/src/services/dispatcher/connect-params.js +3 -1
  154. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  155. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +1 -1
  156. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -1
  157. package/out/zero-cache/src/services/dispatcher/dispatcher.js +2 -6
  158. package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
  159. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +1 -1
  160. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +15 -8
  161. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  162. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +8 -4
  163. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  164. package/out/zero-cache/src/services/mutagen/mutagen.js +25 -16
  165. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  166. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  167. package/out/zero-cache/src/services/mutagen/write-authorizer.js +1 -1
  168. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  169. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +8 -7
  170. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  171. package/out/zero-cache/src/services/replicator/incremental-sync.js +88 -57
  172. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  173. package/out/zero-cache/src/services/replicator/replicator.d.ts +4 -13
  174. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  175. package/out/zero-cache/src/services/replicator/replicator.js +2 -2
  176. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  177. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +7 -7
  178. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  179. package/out/zero-cache/src/services/replicator/schema/change-log.js +3 -3
  180. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  181. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
  182. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  183. package/out/zero-cache/src/services/replicator/schema/replication-state.js +1 -1
  184. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  185. package/out/zero-cache/src/services/runner.d.ts +2 -5
  186. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  187. package/out/zero-cache/src/services/runner.js +4 -22
  188. package/out/zero-cache/src/services/runner.js.map +1 -1
  189. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  190. package/out/zero-cache/src/services/running-state.js +3 -3
  191. package/out/zero-cache/src/services/running-state.js.map +1 -1
  192. package/out/zero-cache/src/services/service.d.ts +8 -0
  193. package/out/zero-cache/src/services/service.d.ts.map +1 -1
  194. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +3 -2
  195. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  196. package/out/zero-cache/src/services/view-syncer/client-handler.js +14 -3
  197. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  198. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  199. package/out/zero-cache/src/services/view-syncer/cvr-store.js +1 -1
  200. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  201. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  202. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  203. package/out/zero-cache/src/services/view-syncer/cvr.js +1 -1
  204. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  205. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +1 -1
  206. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  207. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +12 -9
  208. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  209. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +33 -23
  210. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  211. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +1 -1
  212. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  213. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  214. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  215. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +30 -14
  216. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  217. package/out/zero-cache/src/services/view-syncer/snapshotter.js +38 -37
  218. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  219. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -0
  220. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  221. package/out/zero-cache/src/services/view-syncer/view-syncer.js +28 -44
  222. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  223. package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -1
  224. package/out/zero-cache/src/types/bigint-json.js.map +1 -1
  225. package/out/zero-cache/src/types/error-for-client.d.ts.map +1 -1
  226. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  227. package/out/zero-cache/src/types/lite.d.ts +30 -8
  228. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  229. package/out/zero-cache/src/types/lite.js +114 -15
  230. package/out/zero-cache/src/types/lite.js.map +1 -1
  231. package/out/zero-cache/src/types/pg.d.ts +21 -0
  232. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  233. package/out/zero-cache/src/types/pg.js +49 -6
  234. package/out/zero-cache/src/types/pg.js.map +1 -1
  235. package/out/zero-cache/src/types/processes.d.ts +1 -1
  236. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  237. package/out/zero-cache/src/types/processes.js +8 -14
  238. package/out/zero-cache/src/types/processes.js.map +1 -1
  239. package/out/zero-cache/src/types/row-key.d.ts +4 -1
  240. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  241. package/out/zero-cache/src/types/row-key.js +5 -14
  242. package/out/zero-cache/src/types/row-key.js.map +1 -1
  243. package/out/zero-cache/src/types/schema-versions.d.ts +8 -0
  244. package/out/zero-cache/src/types/schema-versions.d.ts.map +1 -0
  245. package/out/zero-cache/src/types/schema-versions.js +21 -0
  246. package/out/zero-cache/src/types/schema-versions.js.map +1 -0
  247. package/out/zero-cache/src/types/streams.d.ts +2 -2
  248. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  249. package/out/zero-cache/src/types/streams.js +36 -26
  250. package/out/zero-cache/src/types/streams.js.map +1 -1
  251. package/out/zero-cache/src/types/timeout.js.map +1 -1
  252. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  253. package/out/zero-cache/src/workers/connection.js +6 -6
  254. package/out/zero-cache/src/workers/connection.js.map +1 -1
  255. package/out/zero-cache/src/workers/replicator.d.ts +4 -4
  256. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  257. package/out/zero-cache/src/workers/replicator.js +3 -31
  258. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  259. package/out/zero-cache/src/workers/syncer.d.ts +12 -4
  260. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  261. package/out/zero-cache/src/workers/syncer.js +34 -2
  262. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  263. package/out/zero-client/src/client/context.d.ts +4 -4
  264. package/out/zero-client/src/client/context.d.ts.map +1 -1
  265. package/out/zero-client/src/client/crud.d.ts +20 -18
  266. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  267. package/out/zero-client/src/client/keys.d.ts +2 -2
  268. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  269. package/out/zero-client/src/client/log-options.d.ts +1 -1
  270. package/out/zero-client/src/client/log-options.d.ts.map +1 -1
  271. package/out/zero-client/src/client/make-id-from-primary-key.d.ts +5 -0
  272. package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +1 -0
  273. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  274. package/out/zero-client/src/client/options.d.ts +1 -1
  275. package/out/zero-client/src/client/options.d.ts.map +1 -1
  276. package/out/zero-client/src/client/query-manager.d.ts +5 -3
  277. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  278. package/out/zero-client/src/client/replicache-types.d.ts +1 -1
  279. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
  280. package/out/zero-client/src/client/server-error.d.ts.map +1 -1
  281. package/out/zero-client/src/client/server-option.d.ts.map +1 -1
  282. package/out/zero-client/src/client/zero-poke-handler.d.ts +5 -4
  283. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  284. package/out/zero-client/src/client/zero.d.ts +3 -3
  285. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  286. package/out/zero-client/src/mod.d.ts +2 -2
  287. package/out/zero-client/src/mod.d.ts.map +1 -1
  288. package/out/zero-client/src/util/socket.d.ts.map +1 -1
  289. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  290. package/out/zero-protocol/src/ast.js +5 -8
  291. package/out/zero-protocol/src/ast.js.map +1 -1
  292. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  293. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  294. package/out/zero-protocol/src/clients-patch.d.ts.map +1 -1
  295. package/out/zero-protocol/src/clients-patch.js.map +1 -1
  296. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  297. package/out/zero-protocol/src/connect.js.map +1 -1
  298. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
  299. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  300. package/out/zero-protocol/src/down.d.ts +9 -5
  301. package/out/zero-protocol/src/down.d.ts.map +1 -1
  302. package/out/zero-protocol/src/down.js.map +1 -1
  303. package/out/zero-protocol/src/entities-patch.d.ts +15 -15
  304. package/out/zero-protocol/src/entities-patch.d.ts.map +1 -1
  305. package/out/zero-protocol/src/entities-patch.js +5 -4
  306. package/out/zero-protocol/src/entities-patch.js.map +1 -1
  307. package/out/zero-protocol/src/error.d.ts +2 -1
  308. package/out/zero-protocol/src/error.d.ts.map +1 -1
  309. package/out/zero-protocol/src/error.js +2 -1
  310. package/out/zero-protocol/src/error.js.map +1 -1
  311. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  312. package/out/zero-protocol/src/ping.js.map +1 -1
  313. package/out/zero-protocol/src/poke.d.ts +18 -10
  314. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  315. package/out/zero-protocol/src/poke.js +4 -0
  316. package/out/zero-protocol/src/poke.js.map +1 -1
  317. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  318. package/out/zero-protocol/src/pong.js.map +1 -1
  319. package/out/zero-protocol/src/primary-key.d.ts +9 -0
  320. package/out/zero-protocol/src/primary-key.d.ts.map +1 -0
  321. package/out/zero-protocol/src/primary-key.js +7 -0
  322. package/out/zero-protocol/src/primary-key.js.map +1 -0
  323. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  324. package/out/zero-protocol/src/pull.js.map +1 -1
  325. package/out/zero-protocol/src/push.d.ts +53 -53
  326. package/out/zero-protocol/src/push.d.ts.map +1 -1
  327. package/out/zero-protocol/src/push.js +5 -5
  328. package/out/zero-protocol/src/push.js.map +1 -1
  329. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  330. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  331. package/out/zero-protocol/src/up.d.ts +8 -8
  332. package/out/zero-protocol/src/up.d.ts.map +1 -1
  333. package/out/zero-protocol/src/up.js.map +1 -1
  334. package/out/zero-protocol/src/version.d.ts.map +1 -1
  335. package/out/zero-protocol/src/version.js.map +1 -1
  336. package/out/zero-react/src/use-query.d.ts +1 -1
  337. package/out/zero-react/src/use-query.d.ts.map +1 -1
  338. package/out/zero-react/src/use-zero.d.ts +1 -1
  339. package/out/zero-react/src/use-zero.d.ts.map +1 -1
  340. package/out/zero.js +294 -124
  341. package/out/zero.js.map +4 -4
  342. package/out/zql/src/zql/ast/ast.js.map +1 -1
  343. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  344. package/out/zql/src/zql/builder/builder.js.map +1 -1
  345. package/out/zql/src/zql/builder/filter.js.map +1 -1
  346. package/out/zql/src/zql/builder/like.js.map +1 -1
  347. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
  348. package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
  349. package/out/zql/src/zql/ivm/data.js +1 -1
  350. package/out/zql/src/zql/ivm/data.js.map +1 -1
  351. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  352. package/out/zql/src/zql/ivm/join.js.map +1 -1
  353. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  354. package/out/zql/src/zql/ivm/memory-source.js +1 -1
  355. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  356. package/out/zql/src/zql/ivm/memory-storage.d.ts.map +1 -1
  357. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
  358. package/out/zql/src/zql/ivm/schema.d.ts +1 -1
  359. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  360. package/out/zql/src/zql/ivm/schema.js.map +1 -1
  361. package/out/zql/src/zql/ivm/skip.js.map +1 -1
  362. package/out/zql/src/zql/ivm/take.js.map +1 -1
  363. package/out/zql/src/zql/query/query-impl.d.ts +4 -1
  364. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  365. package/out/zql/src/zql/query/query.d.ts +2 -1
  366. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  367. package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
  368. package/out/zqlite/src/db.js +1 -1
  369. package/out/zqlite/src/db.js.map +1 -1
  370. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  371. package/out/zqlite/src/table-source.d.ts +1 -1
  372. package/out/zqlite/src/table-source.d.ts.map +1 -1
  373. package/out/zqlite/src/table-source.js +36 -33
  374. package/out/zqlite/src/table-source.js.map +1 -1
  375. package/package.json +10 -6
  376. package/out/zero-cache/src/services/replicator/checkpointer.d.ts +0 -79
  377. package/out/zero-cache/src/services/replicator/checkpointer.d.ts.map +0 -1
  378. package/out/zero-cache/src/services/replicator/checkpointer.js +0 -124
  379. package/out/zero-cache/src/services/replicator/checkpointer.js.map +0 -1
  380. package/out/zero-protocol/src/entity.d.ts +0 -9
  381. package/out/zero-protocol/src/entity.d.ts.map +0 -1
  382. package/out/zero-protocol/src/entity.js +0 -8
  383. package/out/zero-protocol/src/entity.js.map +0 -1
package/out/zero.js CHANGED
@@ -609,6 +609,20 @@ var WriteImplBase = class {
609
609
  }
610
610
  };
611
611
 
612
+ // ../shared/src/browser-env.ts
613
+ function getBrowserGlobal(name) {
614
+ return globalThis[name];
615
+ }
616
+ function mustGetBrowserGlobal(name) {
617
+ const r = getBrowserGlobal(name);
618
+ if (r === void 0) {
619
+ throw new Error(
620
+ `Unsupported JavaScript environment: Could not find ${name}.`
621
+ );
622
+ }
623
+ return r;
624
+ }
625
+
612
626
  // ../replicache/src/kv/idb-store.ts
613
627
  var RELAXED = { durability: "relaxed" };
614
628
  var OBJECT_STORE = "chunks";
@@ -663,7 +677,7 @@ var IDBStore = class {
663
677
  return fn(reopened);
664
678
  } else if (e.name === "NotFoundError") {
665
679
  this.#idbDeleted = true;
666
- indexedDB.deleteDatabase(db.name);
680
+ mustGetBrowserGlobal("indexedDB").deleteDatabase(db.name);
667
681
  throw new IDBNotFoundError(
668
682
  `Replicache IndexedDB ${db.name} missing object store. Deleting db.`
669
683
  );
@@ -744,8 +758,9 @@ function objectStore(tx) {
744
758
  return tx.objectStore(OBJECT_STORE);
745
759
  }
746
760
  function openDatabase(name) {
761
+ const idb = mustGetBrowserGlobal("indexedDB");
747
762
  return new Promise((resolve, reject) => {
748
- const req = indexedDB.open(name);
763
+ const req = idb.open(name);
749
764
  req.onupgradeneeded = () => {
750
765
  req.result.createObjectStore(OBJECT_STORE);
751
766
  };
@@ -1571,14 +1586,6 @@ function dropIDBStore(name) {
1571
1586
  import { consoleLogSink as consoleLogSink2 } from "@rocicorp/logger";
1572
1587
  import { resolver as resolver6 } from "@rocicorp/resolver";
1573
1588
 
1574
- // ../shared/src/browser-env.ts
1575
- function getDocument() {
1576
- return typeof document !== "undefined" ? document : void 0;
1577
- }
1578
- function getLocation() {
1579
- return typeof location !== "undefined" ? location : void 0;
1580
- }
1581
-
1582
1589
  // ../shared/src/document-visible.ts
1583
1590
  import { resolver as resolver3 } from "@rocicorp/resolver";
1584
1591
  function getDocumentVisibilityWatcher(doc, hiddenIntervalMS, signal) {
@@ -7712,9 +7719,11 @@ var SubscriptionsManagerImpl = class {
7712
7719
  #queryInternal;
7713
7720
  #lc;
7714
7721
  hasPendingSubscriptionRuns = false;
7715
- constructor(queryInternal, lc) {
7722
+ #signal;
7723
+ constructor(queryInternal, lc, signal) {
7716
7724
  this.#queryInternal = queryInternal;
7717
7725
  this.#lc = lc;
7726
+ this.#signal = signal;
7718
7727
  }
7719
7728
  add(subscription) {
7720
7729
  this.#subscriptions.add(subscription);
@@ -7734,6 +7743,9 @@ var SubscriptionsManagerImpl = class {
7734
7743
  await this.#fireSubscriptions(subscriptions, Regular, diffs);
7735
7744
  }
7736
7745
  async #fireSubscriptions(subscriptions, kind, diffs) {
7746
+ if (this.#signal.aborted) {
7747
+ return;
7748
+ }
7737
7749
  const subs = [...subscriptions];
7738
7750
  if (subs.length === 0) {
7739
7751
  return;
@@ -7947,7 +7959,7 @@ var ReplicacheImpl = class {
7947
7959
  auth;
7948
7960
  /** The name of the Replicache database. Populated by {@link ReplicacheOptions#name}. */
7949
7961
  name;
7950
- subscriptions;
7962
+ #subscriptions;
7951
7963
  #mutationRecovery;
7952
7964
  /**
7953
7965
  * Client groups gets disabled when the server does not know about it.
@@ -8137,9 +8149,10 @@ var ReplicacheImpl = class {
8137
8149
  name,
8138
8150
  "replicache version": version
8139
8151
  });
8140
- this.subscriptions = new SubscriptionsManagerImpl(
8152
+ this.#subscriptions = new SubscriptionsManagerImpl(
8141
8153
  this.#queryInternal,
8142
- this.#lc
8154
+ this.#lc,
8155
+ this.#closeAbortController.signal
8143
8156
  );
8144
8157
  const kvStoreProvider = getKVStoreProvider(this.#lc, options.kvStore);
8145
8158
  this.#kvStoreProvider = kvStoreProvider;
@@ -8157,7 +8170,7 @@ var ReplicacheImpl = class {
8157
8170
  const { minDelayMs = MIN_DELAY_MS, maxDelayMs = MAX_DELAY_MS } = requestOptions;
8158
8171
  this.#requestOptions = { maxDelayMs, minDelayMs };
8159
8172
  const visibilityWatcher = getDocumentVisibilityWatcher(
8160
- getDocument(),
8173
+ getBrowserGlobal("document"),
8161
8174
  0,
8162
8175
  this.#closeAbortController.signal
8163
8176
  );
@@ -8272,7 +8285,7 @@ var ReplicacheImpl = class {
8272
8285
  signal
8273
8286
  );
8274
8287
  void this.recoverMutations(clients);
8275
- getDocument()?.addEventListener(
8288
+ getBrowserGlobal("document")?.addEventListener(
8276
8289
  "visibilitychange",
8277
8290
  this.#onVisibilityChange
8278
8291
  );
@@ -8281,7 +8294,7 @@ var ReplicacheImpl = class {
8281
8294
  if (this.#closed) {
8282
8295
  return;
8283
8296
  }
8284
- if (getDocument()?.visibilityState !== "visible") {
8297
+ if (getBrowserGlobal("document")?.visibilityState !== "visible") {
8285
8298
  return;
8286
8299
  }
8287
8300
  await this.#checkForClientStateNotFoundAndCallHandler();
@@ -8353,7 +8366,7 @@ var ReplicacheImpl = class {
8353
8366
  const { promise, resolve } = resolver6();
8354
8367
  closingInstances.set(this.name, promise);
8355
8368
  this.#closeAbortController.abort();
8356
- getDocument()?.removeEventListener(
8369
+ getBrowserGlobal("document")?.removeEventListener(
8357
8370
  "visibilitychange",
8358
8371
  this.#onVisibilityChange
8359
8372
  );
@@ -8365,7 +8378,7 @@ var ReplicacheImpl = class {
8365
8378
  ];
8366
8379
  this.#pullConnectionLoop.close();
8367
8380
  this.#pushConnectionLoop.close();
8368
- this.subscriptions.clear();
8381
+ this.#subscriptions.clear();
8369
8382
  await Promise.all(closingPromises);
8370
8383
  closingInstances.delete(this.name);
8371
8384
  resolve();
@@ -8383,16 +8396,16 @@ var ReplicacheImpl = class {
8383
8396
  lc,
8384
8397
  syncHead,
8385
8398
  clientID,
8386
- this.subscriptions,
8399
+ this.#subscriptions,
8387
8400
  Latest
8388
8401
  );
8389
8402
  if (!replayMutations || replayMutations.length === 0) {
8390
- await this.subscriptions.fire(diffs);
8403
+ await this.#subscriptions.fire(diffs);
8391
8404
  void this.#schedulePersist();
8392
8405
  return;
8393
8406
  }
8394
8407
  for (const mutation of replayMutations) {
8395
- if (this.subscriptions.hasPendingSubscriptionRuns) {
8408
+ if (this.#subscriptions.hasPendingSubscriptionRuns) {
8396
8409
  await Promise.resolve();
8397
8410
  }
8398
8411
  const { meta } = mutation;
@@ -8753,7 +8766,7 @@ var ReplicacheImpl = class {
8753
8766
  this.perdag,
8754
8767
  clientID,
8755
8768
  this.#mutatorRegistry,
8756
- this.subscriptions,
8769
+ this.#subscriptions,
8757
8770
  () => this.closed,
8758
8771
  Latest
8759
8772
  );
@@ -8767,7 +8780,7 @@ var ReplicacheImpl = class {
8767
8780
  }
8768
8781
  }
8769
8782
  if (diffs !== void 0) {
8770
- await this.subscriptions.fire(diffs);
8783
+ await this.#subscriptions.fire(diffs);
8771
8784
  }
8772
8785
  }
8773
8786
  #fireOnClientStateNotFound() {
@@ -8877,12 +8890,12 @@ var ReplicacheImpl = class {
8877
8890
  options = { onData: options };
8878
8891
  }
8879
8892
  const { onData, onError, onDone, isEqual } = options;
8880
- return this.subscriptions.add(
8893
+ return this.#subscriptions.add(
8881
8894
  new SubscriptionImpl(body, onData, onError, onDone, isEqual)
8882
8895
  );
8883
8896
  }
8884
8897
  experimentalWatch(callback, options) {
8885
- return this.subscriptions.add(
8898
+ return this.#subscriptions.add(
8886
8899
  new WatchSubscription(callback, options)
8887
8900
  );
8888
8901
  }
@@ -8935,7 +8948,7 @@ var ReplicacheImpl = class {
8935
8948
  }
8936
8949
  async #mutate(name, mutatorImpl, args, timestamp) {
8937
8950
  const frozenArgs = deepFreeze(args ?? null);
8938
- if (this.subscriptions.hasPendingSubscriptionRuns) {
8951
+ if (this.#subscriptions.hasPendingSubscriptionRuns) {
8939
8952
  await Promise.resolve();
8940
8953
  }
8941
8954
  await this.#ready;
@@ -8966,11 +8979,11 @@ var ReplicacheImpl = class {
8966
8979
  const lastMutationID = await dbWrite.getMutationID();
8967
8980
  const diffs = await dbWrite.commitWithDiffs(
8968
8981
  DEFAULT_HEAD_NAME,
8969
- this.subscriptions
8982
+ this.#subscriptions
8970
8983
  );
8971
8984
  this.lastMutationID = lastMutationID;
8972
8985
  this.#pushConnectionLoop.send(false).catch(() => void 0);
8973
- await this.subscriptions.fire(diffs);
8986
+ await this.#subscriptions.fire(diffs);
8974
8987
  void this.#schedulePersist();
8975
8988
  return result;
8976
8989
  } catch (ex) {
@@ -9211,6 +9224,9 @@ async function anyPendingMutationsInClientGroups(perdag) {
9211
9224
  return false;
9212
9225
  }
9213
9226
 
9227
+ // ../zql/src/zql/query/query-impl.ts
9228
+ import { resolver as resolver7 } from "@rocicorp/resolver";
9229
+
9214
9230
  // ../shared/src/must.ts
9215
9231
  function must(v2, msg) {
9216
9232
  if (v2 == null) {
@@ -10884,10 +10900,16 @@ var QueryImpl = class extends AbstractQuery {
10884
10900
  return view;
10885
10901
  }
10886
10902
  preload() {
10903
+ const { resolve, promise: complete } = resolver7();
10887
10904
  const ast = this._completeAst();
10888
- const unsub = this.#delegate.addServerQuery(ast);
10905
+ const unsub = this.#delegate.addServerQuery(ast, (got) => {
10906
+ if (got) {
10907
+ resolve();
10908
+ }
10909
+ });
10889
10910
  return {
10890
- cleanup: unsub
10911
+ cleanup: unsub,
10912
+ complete
10891
10913
  };
10892
10914
  }
10893
10915
  };
@@ -10921,17 +10943,14 @@ function addPrimaryKeysToAst(schema, ast) {
10921
10943
 
10922
10944
  // ../zero-client/src/client/zero.ts
10923
10945
  import { LogContext as LogContext3 } from "@rocicorp/logger";
10924
- import { resolver as resolver7 } from "@rocicorp/resolver";
10946
+ import { resolver as resolver8 } from "@rocicorp/resolver";
10925
10947
 
10926
10948
  // ../zero-protocol/src/ast.ts
10927
- function readonly2(t2) {
10928
- return t2;
10929
- }
10930
10949
  var selectorSchema = valita_exports.string();
10931
- var orderingElementSchema = readonly2(
10950
+ var orderingElementSchema = readonly(
10932
10951
  valita_exports.tuple([selectorSchema, valita_exports.union(valita_exports.literal("asc"), valita_exports.literal("desc"))])
10933
10952
  );
10934
- var orderingSchema = readonly2(valita_exports.array(orderingElementSchema));
10953
+ var orderingSchema = readonlyArray(orderingElementSchema);
10935
10954
  var primitiveSchema = valita_exports.union(
10936
10955
  valita_exports.string(),
10937
10956
  valita_exports.number(),
@@ -10966,7 +10985,7 @@ var simpleConditionSchema = valita_exports.object({
10966
10985
  valita_exports.string(),
10967
10986
  valita_exports.number(),
10968
10987
  valita_exports.boolean(),
10969
- readonly2(valita_exports.array(valita_exports.union(valita_exports.string(), valita_exports.number(), valita_exports.boolean()))),
10988
+ readonlyArray(valita_exports.union(valita_exports.string(), valita_exports.number(), valita_exports.boolean())),
10970
10989
  valita_exports.object({
10971
10990
  type: valita_exports.literal("static"),
10972
10991
  anchor: valita_exports.union(valita_exports.literal("authData"), valita_exports.literal("preMutationRow")),
@@ -10990,8 +11009,8 @@ var astSchema = valita_exports.object({
10990
11009
  schema: valita_exports.string().optional(),
10991
11010
  table: valita_exports.string(),
10992
11011
  alias: valita_exports.string().optional(),
10993
- where: readonly2(valita_exports.array(conditionSchema)).optional(),
10994
- related: readonly2(valita_exports.array(correlatedSubquerySchema)).optional(),
11012
+ where: readonlyArray(conditionSchema).optional(),
11013
+ related: readonlyArray(correlatedSubquerySchema).optional(),
10995
11014
  limit: valita_exports.number().optional(),
10996
11015
  orderBy: orderingSchema.optional(),
10997
11016
  start: valita_exports.object({
@@ -11069,6 +11088,7 @@ var errorKindSchema = valita_exports.union(
11069
11088
  valita_exports.literal("InvalidConnectionRequestClientDeleted" /* InvalidConnectionRequestClientDeleted */),
11070
11089
  valita_exports.literal("InvalidMessage" /* InvalidMessage */),
11071
11090
  valita_exports.literal("InvalidPush" /* InvalidPush */),
11091
+ valita_exports.literal("MutationRateLimited" /* MutationRateLimited */),
11072
11092
  valita_exports.literal("MutationFailed" /* MutationFailed */),
11073
11093
  valita_exports.literal("Unauthorized" /* Unauthorized */),
11074
11094
  valita_exports.literal("VersionNotSupported" /* VersionNotSupported */),
@@ -11085,27 +11105,35 @@ var errorMessageSchema = valita_exports.tuple([
11085
11105
  var versionSchema = valita_exports.string();
11086
11106
  var nullableVersionSchema = valita_exports.union(versionSchema, valita_exports.null());
11087
11107
 
11088
- // ../zero-protocol/src/entity.ts
11089
- var entityIDSchema = valita_exports.record(valita_exports.string());
11108
+ // ../zero-protocol/src/primary-key.ts
11109
+ var primaryKeySchema = valita_exports.array(valita_exports.string()).assert((arr) => arr.length > 0);
11110
+ var primaryKeyValueSchema = valita_exports.union(
11111
+ valita_exports.string(),
11112
+ valita_exports.number(),
11113
+ valita_exports.boolean()
11114
+ );
11115
+ var primaryKeyValueRecordSchema = readonlyRecord(
11116
+ primaryKeyValueSchema
11117
+ );
11090
11118
 
11091
11119
  // ../zero-protocol/src/entities-patch.ts
11092
11120
  var putOpSchema3 = valita_exports.object({
11093
11121
  op: valita_exports.literal("put"),
11094
11122
  entityType: valita_exports.string(),
11095
- entityID: entityIDSchema,
11123
+ entityID: primaryKeyValueRecordSchema,
11096
11124
  value: jsonObjectSchema
11097
11125
  });
11098
11126
  var updateOpSchema = valita_exports.object({
11099
11127
  op: valita_exports.literal("update"),
11100
11128
  entityType: valita_exports.string(),
11101
- entityID: entityIDSchema,
11129
+ entityID: primaryKeyValueRecordSchema,
11102
11130
  merge: jsonObjectSchema.optional(),
11103
11131
  constrain: valita_exports.array(valita_exports.string()).optional()
11104
11132
  });
11105
11133
  var delOpSchema3 = valita_exports.object({
11106
11134
  op: valita_exports.literal("del"),
11107
11135
  entityType: valita_exports.string(),
11108
- entityID: entityIDSchema
11136
+ entityID: primaryKeyValueRecordSchema
11109
11137
  });
11110
11138
  var clearOpSchema3 = valita_exports.object({
11111
11139
  op: valita_exports.literal("clear")
@@ -11126,6 +11154,10 @@ var pokeStartBodySchema = valita_exports.object({
11126
11154
  // able to send a base cookie with value `null` to match that state.
11127
11155
  baseCookie: nullableVersionSchema,
11128
11156
  cookie: versionSchema,
11157
+ schemaVersions: valita_exports.object({
11158
+ minSupportedVersion: valita_exports.number(),
11159
+ maxSupportedVersion: valita_exports.number()
11160
+ }),
11129
11161
  timestamp: valita_exports.number().optional()
11130
11162
  });
11131
11163
  var pokePartBodySchema = valita_exports.object({
@@ -11206,25 +11238,25 @@ var CRUD_MUTATION_NAME = "_zero_crud";
11206
11238
  var createOpSchema = valita_exports.object({
11207
11239
  op: valita_exports.literal("create"),
11208
11240
  entityType: valita_exports.string(),
11209
- id: entityIDSchema,
11241
+ id: primaryKeyValueRecordSchema,
11210
11242
  value: jsonObjectSchema
11211
11243
  });
11212
11244
  var setOpSchema = valita_exports.object({
11213
11245
  op: valita_exports.literal("set"),
11214
11246
  entityType: valita_exports.string(),
11215
- id: entityIDSchema,
11247
+ id: primaryKeyValueRecordSchema,
11216
11248
  value: jsonObjectSchema
11217
11249
  });
11218
11250
  var updateOpSchema2 = valita_exports.object({
11219
11251
  op: valita_exports.literal("update"),
11220
11252
  entityType: valita_exports.string(),
11221
- id: entityIDSchema,
11253
+ id: primaryKeyValueRecordSchema,
11222
11254
  partialValue: jsonObjectSchema
11223
11255
  });
11224
11256
  var deleteOpSchema = valita_exports.object({
11225
11257
  op: valita_exports.literal("delete"),
11226
11258
  entityType: valita_exports.string(),
11227
- id: entityIDSchema
11259
+ id: primaryKeyValueRecordSchema
11228
11260
  });
11229
11261
  var crudOpSchema = valita_exports.union(
11230
11262
  createOpSchema,
@@ -13408,6 +13440,27 @@ var MemoryStorage = class {
13408
13440
  }
13409
13441
  };
13410
13442
 
13443
+ // ../shared/src/reverse-string.ts
13444
+ function reverseString(str) {
13445
+ let reversed = "";
13446
+ for (let i = str.length - 1; i >= 0; i--) {
13447
+ reversed += str[i];
13448
+ }
13449
+ return reversed;
13450
+ }
13451
+
13452
+ // ../shared/src/xxhash.ts
13453
+ import xxhash from "xxhash-wasm";
13454
+ var { create64, h32, h64 } = await xxhash();
13455
+
13456
+ // ../shared/src/h64-with-reverse.ts
13457
+ function h64WithReverse(str) {
13458
+ const forward = h64(str);
13459
+ const backward = h64(reverseString(str));
13460
+ const full = (forward << 64n) + backward;
13461
+ return full.toString(36);
13462
+ }
13463
+
13411
13464
  // ../zero-client/src/client/keys.ts
13412
13465
  var CLIENTS_KEY_PREFIX = "c/";
13413
13466
  var DESIRED_QUERIES_KEY_PREFIX = "d/";
@@ -13425,11 +13478,23 @@ function desiredQueriesPrefixForClient(clientID) {
13425
13478
  function toGotQueriesKey(hash2) {
13426
13479
  return GOT_QUERIES_KEY_PREFIX + hash2;
13427
13480
  }
13428
- function toEntitiesKey(entityType, entityID) {
13429
- const idKeys = Object.keys(entityID);
13430
- assert(idKeys.length > 0);
13431
- const idSegment = idKeys.length === 1 ? entityID[idKeys[0]] : JSON.stringify(entityID, idKeys.sort());
13432
- return ENTITIES_KEY_PREFIX + entityType + "/" + idSegment;
13481
+ function maybeSort(arr) {
13482
+ for (let i = 1; i < arr.length; i++) {
13483
+ if (arr[i] < arr[i - 1]) {
13484
+ return [...arr].sort();
13485
+ }
13486
+ }
13487
+ return arr;
13488
+ }
13489
+ function toPrimaryKeyString(tableName, primaryKey, id) {
13490
+ if (primaryKey.length === 1) {
13491
+ return ENTITIES_KEY_PREFIX + tableName + "/" + id[primaryKey[0]];
13492
+ }
13493
+ const sorted = maybeSort(primaryKey);
13494
+ const arr = sorted.map((k) => id[k]);
13495
+ const str = JSON.stringify(arr);
13496
+ const idSegment = h64WithReverse(str);
13497
+ return ENTITIES_KEY_PREFIX + tableName + "/" + idSegment;
13433
13498
  }
13434
13499
 
13435
13500
  // ../zero-client/src/client/context.ts
@@ -13456,8 +13521,8 @@ var ZeroContext = class {
13456
13521
  this.#sources.set(name, source);
13457
13522
  return source;
13458
13523
  }
13459
- addServerQuery(ast) {
13460
- return this.#addQuery(ast);
13524
+ addServerQuery(ast, gotCallback) {
13525
+ return this.#addQuery(ast, gotCallback);
13461
13526
  }
13462
13527
  createStorage() {
13463
13528
  return new MemoryStorage();
@@ -13518,6 +13583,15 @@ var ZeroContext = class {
13518
13583
  }
13519
13584
  };
13520
13585
 
13586
+ // ../zero-client/src/client/make-id-from-primary-key.ts
13587
+ function makeIDFromPrimaryKey(primaryKey, value) {
13588
+ const id = {};
13589
+ for (const key of primaryKey) {
13590
+ id[key] = parse(value[key], primaryKeyValueSchema);
13591
+ }
13592
+ return id;
13593
+ }
13594
+
13521
13595
  // ../zero-client/src/client/crud.ts
13522
13596
  function makeCRUDMutate(schema, repMutate) {
13523
13597
  const { [CRUD_MUTATION_NAME]: zeroCRUD } = repMutate;
@@ -13531,7 +13605,7 @@ function makeCRUDMutate(schema, repMutate) {
13531
13605
  const ops = [];
13532
13606
  const m = {};
13533
13607
  for (const name of Object.keys(schema.tables)) {
13534
- m[name] = makeBatchCRUDMutate(name, ops);
13608
+ m[name] = makeBatchCRUDMutate(name, schema, ops);
13535
13609
  }
13536
13610
  const rv = await body(m);
13537
13611
  await zeroCRUD({ ops });
@@ -13545,118 +13619,147 @@ function makeCRUDMutate(schema, repMutate) {
13545
13619
  throw new Error(`Cannot call mutate.${entityType}.${op} inside a batch`);
13546
13620
  }
13547
13621
  };
13548
- for (const name of Object.keys(schema.tables)) {
13549
- mutate[name] = makeEntityCRUDMutate(name, zeroCRUD, assertNotInBatch);
13622
+ for (const [name, tableSchema] of Object.entries(schema.tables)) {
13623
+ mutate[name] = makeEntityCRUDMutate(
13624
+ name,
13625
+ tableSchema.primaryKey,
13626
+ zeroCRUD,
13627
+ assertNotInBatch
13628
+ );
13550
13629
  }
13551
13630
  return mutate;
13552
13631
  }
13553
- function makeEntityCRUDMutate(entityType, zeroCRUD, assertNotInBatch) {
13632
+ function makeEntityCRUDMutate(entityType, primaryKey, zeroCRUD, assertNotInBatch) {
13554
13633
  return {
13555
13634
  create: (value) => {
13556
13635
  assertNotInBatch(entityType, "create");
13557
- const { id } = value;
13558
13636
  const op = {
13559
13637
  op: "create",
13560
13638
  entityType,
13561
- // TODO: Current crud mutators expect id to always exist
13562
- id: { id },
13639
+ id: makeIDFromPrimaryKey(primaryKey, value),
13563
13640
  value
13564
13641
  };
13565
13642
  return zeroCRUD({ ops: [op] });
13566
13643
  },
13567
13644
  set: (value) => {
13568
13645
  assertNotInBatch(entityType, "set");
13569
- const { id } = value;
13570
- const op = { op: "set", entityType, id: { id }, value };
13646
+ const op = {
13647
+ op: "set",
13648
+ entityType,
13649
+ id: makeIDFromPrimaryKey(primaryKey, value),
13650
+ value
13651
+ };
13571
13652
  return zeroCRUD({ ops: [op] });
13572
13653
  },
13573
13654
  update: (value) => {
13574
13655
  assertNotInBatch(entityType, "update");
13575
- const { id } = value;
13576
13656
  const op = {
13577
13657
  op: "update",
13578
13658
  entityType,
13579
- id: { id },
13659
+ id: makeIDFromPrimaryKey(primaryKey, value),
13580
13660
  partialValue: value
13581
13661
  };
13582
13662
  return zeroCRUD({ ops: [op] });
13583
13663
  },
13584
13664
  delete: (id) => {
13585
13665
  assertNotInBatch(entityType, "delete");
13586
- const op = { op: "delete", entityType, id };
13666
+ const op = {
13667
+ op: "delete",
13668
+ entityType,
13669
+ id: makeIDFromPrimaryKey(primaryKey, id)
13670
+ };
13587
13671
  return zeroCRUD({ ops: [op] });
13588
13672
  }
13589
13673
  };
13590
13674
  }
13591
- function makeBatchCRUDMutate(entityType, ops) {
13675
+ function makeBatchCRUDMutate(tableName, schema, ops) {
13676
+ const { primaryKey } = schema.tables[tableName];
13592
13677
  return {
13593
13678
  create: (value) => {
13594
- const { id } = value;
13595
13679
  const op = {
13596
13680
  op: "create",
13597
- entityType,
13598
- id: { id },
13681
+ entityType: tableName,
13682
+ id: makeIDFromPrimaryKey(primaryKey, value),
13599
13683
  value
13600
13684
  };
13601
13685
  ops.push(op);
13602
13686
  return promiseVoid;
13603
13687
  },
13604
13688
  set: (value) => {
13605
- const { id } = value;
13606
- const op = { op: "set", entityType, id: { id }, value };
13689
+ const op = {
13690
+ op: "set",
13691
+ entityType: tableName,
13692
+ id: makeIDFromPrimaryKey(primaryKey, value),
13693
+ value
13694
+ };
13607
13695
  ops.push(op);
13608
13696
  return promiseVoid;
13609
13697
  },
13610
13698
  update: (value) => {
13611
- const { id } = value;
13612
13699
  const op = {
13613
13700
  op: "update",
13614
- entityType,
13615
- id: { id },
13701
+ entityType: tableName,
13702
+ id: makeIDFromPrimaryKey(primaryKey, value),
13616
13703
  partialValue: value
13617
13704
  };
13618
13705
  ops.push(op);
13619
13706
  return promiseVoid;
13620
13707
  },
13621
13708
  delete: (id) => {
13622
- const op = { op: "delete", entityType, id };
13709
+ const op = {
13710
+ op: "delete",
13711
+ entityType: tableName,
13712
+ id: makeIDFromPrimaryKey(primaryKey, id)
13713
+ };
13623
13714
  ops.push(op);
13624
13715
  return promiseVoid;
13625
13716
  }
13626
13717
  };
13627
13718
  }
13628
- function makeCRUDMutator(_schemas) {
13719
+ function makeCRUDMutator(schema) {
13629
13720
  return async function zeroCRUDMutator(tx, crudArg) {
13630
13721
  for (const op of crudArg.ops) {
13631
13722
  switch (op.op) {
13632
13723
  case "create":
13633
- await createImpl(tx, op);
13724
+ await createImpl(tx, op, schema);
13634
13725
  break;
13635
13726
  case "set":
13636
- await setImpl(tx, op);
13727
+ await setImpl(tx, op, schema);
13637
13728
  break;
13638
13729
  case "update":
13639
- await updateImpl(tx, op);
13730
+ await updateImpl(tx, op, schema);
13640
13731
  break;
13641
13732
  case "delete":
13642
- await deleteImpl(tx, op);
13733
+ await deleteImpl(tx, op, schema);
13643
13734
  break;
13644
13735
  }
13645
13736
  }
13646
13737
  };
13647
13738
  }
13648
- async function createImpl(tx, arg) {
13649
- const key = toEntitiesKey(arg.entityType, arg.id);
13739
+ async function createImpl(tx, arg, schema) {
13740
+ const key = toPrimaryKeyString(
13741
+ arg.entityType,
13742
+ schema.tables[arg.entityType].primaryKey,
13743
+ arg.id
13744
+ );
13650
13745
  if (!await tx.has(key)) {
13651
13746
  await tx.set(key, arg.value);
13652
13747
  }
13653
13748
  }
13654
- async function setImpl(tx, arg) {
13655
- const key = toEntitiesKey(arg.entityType, arg.id);
13749
+ async function setImpl(tx, arg, schema) {
13750
+ const key = toPrimaryKeyString(
13751
+ arg.entityType,
13752
+ schema.tables[arg.entityType].primaryKey,
13753
+ arg.id
13754
+ );
13656
13755
  await tx.set(key, arg.value);
13657
13756
  }
13658
- async function updateImpl(tx, arg) {
13659
- const key = toEntitiesKey(arg.entityType, arg.id);
13757
+ async function updateImpl(tx, arg, schema) {
13758
+ const key = toPrimaryKeyString(
13759
+ arg.entityType,
13760
+ schema.tables[arg.entityType].primaryKey,
13761
+ arg.id
13762
+ );
13660
13763
  const prev = await tx.get(key);
13661
13764
  if (prev === void 0) {
13662
13765
  return;
@@ -13665,8 +13768,12 @@ async function updateImpl(tx, arg) {
13665
13768
  const next = { ...prev, ...update };
13666
13769
  await tx.set(key, next);
13667
13770
  }
13668
- async function deleteImpl(tx, arg) {
13669
- const key = toEntitiesKey(arg.entityType, arg.id);
13771
+ async function deleteImpl(tx, arg, schema) {
13772
+ const key = toPrimaryKeyString(
13773
+ arg.entityType,
13774
+ schema.tables[arg.entityType].primaryKey,
13775
+ arg.id
13776
+ );
13670
13777
  await tx.del(key);
13671
13778
  }
13672
13779
 
@@ -14201,10 +14308,6 @@ var State = class {
14201
14308
  }
14202
14309
  };
14203
14310
 
14204
- // ../shared/src/xxhash.ts
14205
- import xxhash from "xxhash-wasm";
14206
- var { create64, h32, h64 } = await xxhash();
14207
-
14208
14311
  // ../zql/src/zql/ast/ast.ts
14209
14312
  import { compareUTF8 as compareUTF84 } from "compare-utf8";
14210
14313
  function normalizeAST(ast) {
@@ -14264,9 +14367,37 @@ var QueryManager = class {
14264
14367
  #clientID;
14265
14368
  #send;
14266
14369
  #queries = /* @__PURE__ */ new Map();
14267
- constructor(clientID, send2) {
14370
+ #gotQueries = /* @__PURE__ */ new Set();
14371
+ constructor(clientID, send2, experimentalWatch) {
14268
14372
  this.#clientID = clientID;
14269
14373
  this.#send = send2;
14374
+ experimentalWatch(
14375
+ (diff2) => {
14376
+ for (const diffOp of diff2) {
14377
+ const queryHash = diffOp.key.substring(GOT_QUERIES_KEY_PREFIX.length);
14378
+ switch (diffOp.op) {
14379
+ case "add":
14380
+ this.#gotQueries.add(queryHash);
14381
+ this.#fireGotCallbacks(queryHash, true);
14382
+ break;
14383
+ case "del":
14384
+ this.#gotQueries.delete(queryHash);
14385
+ this.#fireGotCallbacks(queryHash, false);
14386
+ break;
14387
+ }
14388
+ }
14389
+ },
14390
+ {
14391
+ prefix: GOT_QUERIES_KEY_PREFIX,
14392
+ initialValuesInFirstDiff: true
14393
+ }
14394
+ );
14395
+ }
14396
+ #fireGotCallbacks(queryHash, got) {
14397
+ const gotCallbacks = this.#queries.get(queryHash)?.gotCallbacks ?? [];
14398
+ for (const gotCallback of gotCallbacks) {
14399
+ gotCallback(got);
14400
+ }
14270
14401
  }
14271
14402
  async getQueriesPatch(tx) {
14272
14403
  const existingQueryHashes = /* @__PURE__ */ new Set();
@@ -14287,12 +14418,16 @@ var QueryManager = class {
14287
14418
  }
14288
14419
  return patch;
14289
14420
  }
14290
- add(ast) {
14421
+ add(ast, gotCallback) {
14291
14422
  const normalized = normalizeAST(ast);
14292
14423
  const astHash = hash(normalized);
14293
14424
  let entry = this.#queries.get(astHash);
14294
14425
  if (!entry) {
14295
- entry = { normalized, count: 1 };
14426
+ entry = {
14427
+ normalized,
14428
+ count: 1,
14429
+ gotCallbacks: gotCallback === void 0 ? [] : [gotCallback]
14430
+ };
14296
14431
  this.#queries.set(astHash, entry);
14297
14432
  this.#send([
14298
14433
  "changeDesiredQueries",
@@ -14302,6 +14437,14 @@ var QueryManager = class {
14302
14437
  ]);
14303
14438
  } else {
14304
14439
  ++entry.count;
14440
+ if (gotCallback) {
14441
+ entry.gotCallbacks.push(gotCallback);
14442
+ }
14443
+ }
14444
+ if (gotCallback) {
14445
+ queueMicrotask(() => {
14446
+ gotCallback(this.#gotQueries.has(astHash));
14447
+ });
14305
14448
  }
14306
14449
  let removed = false;
14307
14450
  return () => {
@@ -14408,6 +14551,9 @@ function validateServerParam(paramName, server) {
14408
14551
  }
14409
14552
  function getServer(server) {
14410
14553
  if (server === void 0 || server === null) {
14554
+ console.warn(
14555
+ "Zero starting up with no server URL. This is supported for unit testing and prototyping, but no data will be synced."
14556
+ );
14411
14557
  return null;
14412
14558
  }
14413
14559
  return validateServerParam("server", server);
@@ -14427,10 +14573,12 @@ var PokeHandler = class {
14427
14573
  // Serializes calls to this.#replicachePoke otherwise we can cause out of
14428
14574
  // order poke errors.
14429
14575
  #pokeLock = new Lock3();
14430
- constructor(replicachePoke, onPokeError, clientID, lc) {
14576
+ #schema;
14577
+ constructor(replicachePoke, onPokeError, clientID, schema, lc) {
14431
14578
  this.#replicachePoke = replicachePoke;
14432
14579
  this.#onPokeError = onPokeError;
14433
14580
  this.#clientID = clientID;
14581
+ this.#schema = schema;
14434
14582
  this.#lc = lc.withContext("PokeHandler");
14435
14583
  }
14436
14584
  handlePokeStart(pokeStart) {
@@ -14504,7 +14652,7 @@ var PokeHandler = class {
14504
14652
  lc.debug?.("got poke lock at", now);
14505
14653
  lc.debug?.("merging", this.#pokeBuffer.length);
14506
14654
  try {
14507
- const merged = mergePokes(this.#pokeBuffer);
14655
+ const merged = mergePokes(this.#pokeBuffer, this.#schema);
14508
14656
  this.#pokeBuffer.length = 0;
14509
14657
  if (merged === void 0) {
14510
14658
  lc.debug?.("frame is empty");
@@ -14533,7 +14681,7 @@ var PokeHandler = class {
14533
14681
  this.#pokeBuffer.length = 0;
14534
14682
  }
14535
14683
  };
14536
- function mergePokes(pokeBuffer) {
14684
+ function mergePokes(pokeBuffer, schema) {
14537
14685
  if (pokeBuffer.length === 0) {
14538
14686
  return void 0;
14539
14687
  }
@@ -14587,7 +14735,9 @@ function mergePokes(pokeBuffer) {
14587
14735
  }
14588
14736
  if (pokePart.entitiesPatch) {
14589
14737
  mergedPatch.push(
14590
- ...pokePart.entitiesPatch.map(entitiesPatchOpToReplicachePatchOp)
14738
+ ...pokePart.entitiesPatch.map(
14739
+ (p) => entitiesPatchOpToReplicachePatchOp(p, schema)
14740
+ )
14591
14741
  );
14592
14742
  }
14593
14743
  }
@@ -14637,25 +14787,37 @@ function queryPatchOpToReplicachePatchOp(op, toKey) {
14637
14787
  };
14638
14788
  }
14639
14789
  }
14640
- function entitiesPatchOpToReplicachePatchOp(op) {
14790
+ function entitiesPatchOpToReplicachePatchOp(op, schema) {
14641
14791
  switch (op.op) {
14642
14792
  case "clear":
14643
14793
  return op;
14644
14794
  case "del":
14645
14795
  return {
14646
14796
  op: "del",
14647
- key: toEntitiesKey(op.entityType, op.entityID)
14797
+ key: toPrimaryKeyString(
14798
+ op.entityType,
14799
+ schema.tables[op.entityType].primaryKey,
14800
+ op.entityID
14801
+ )
14648
14802
  };
14649
14803
  case "put":
14650
14804
  return {
14651
14805
  op: "put",
14652
- key: toEntitiesKey(op.entityType, op.entityID),
14806
+ key: toPrimaryKeyString(
14807
+ op.entityType,
14808
+ schema.tables[op.entityType].primaryKey,
14809
+ op.entityID
14810
+ ),
14653
14811
  value: op.value
14654
14812
  };
14655
14813
  case "update":
14656
14814
  return {
14657
14815
  op: "update",
14658
- key: toEntitiesKey(op.entityType, op.entityID),
14816
+ key: toPrimaryKeyString(
14817
+ op.entityType,
14818
+ schema.tables[op.entityType].primaryKey,
14819
+ op.entityID
14820
+ ),
14659
14821
  merge: op.merge,
14660
14822
  constrain: op.constrain
14661
14823
  };
@@ -14788,12 +14950,12 @@ var Zero = class {
14788
14950
  this.#onClientStateNotFound = value;
14789
14951
  this.#rep.onClientStateNotFound = value;
14790
14952
  }
14791
- #connectResolver = resolver7();
14953
+ #connectResolver = resolver8();
14792
14954
  #pendingPullsByRequestID = /* @__PURE__ */ new Map();
14793
14955
  #lastMutationIDReceived = 0;
14794
14956
  #socket = void 0;
14795
- #socketResolver = resolver7();
14796
- #connectionStateChangeResolver = resolver7();
14957
+ #socketResolver = resolver8();
14958
+ #connectionStateChangeResolver = resolver8();
14797
14959
  /**
14798
14960
  * This resolver is only used for rejections. It is awaited in the connected
14799
14961
  * state (including when waiting for a pong). It is rejected when we get an
@@ -14810,7 +14972,7 @@ var Zero = class {
14810
14972
  }
14811
14973
  this.#connectionState = state;
14812
14974
  this.#connectionStateChangeResolver.resolve(state);
14813
- this.#connectionStateChangeResolver = resolver7();
14975
+ this.#connectionStateChangeResolver = resolver8();
14814
14976
  if (false) {
14815
14977
  asTestZero(this)[onSetConnectionStateSymbol]?.(state);
14816
14978
  }
@@ -14830,7 +14992,7 @@ var Zero = class {
14830
14992
  #metrics;
14831
14993
  // Store as field to allow test subclass to override. Web API doesn't allow
14832
14994
  // overwriting location fields for security reasons.
14833
- #reload = () => getLocation()?.reload();
14995
+ #reload = () => getBrowserGlobal("location")?.reload();
14834
14996
  /**
14835
14997
  * Constructs a new Zero client.
14836
14998
  */
@@ -14921,11 +15083,12 @@ var Zero = class {
14921
15083
  this.mutate = makeCRUDMutate(schema, rep.mutate);
14922
15084
  this.#queryManager = new QueryManager(
14923
15085
  rep.clientID,
14924
- (msg) => this.#sendChangeDesiredQueries(msg)
15086
+ (msg) => this.#sendChangeDesiredQueries(msg),
15087
+ rep.experimentalWatch.bind(rep)
14925
15088
  );
14926
15089
  this.#zeroContext = new ZeroContext(
14927
15090
  schema.tables,
14928
- (ast) => this.#queryManager.add(ast)
15091
+ (ast, gotCallback) => this.#queryManager.add(ast, gotCallback)
14929
15092
  );
14930
15093
  rep.experimentalWatch(
14931
15094
  (diff2) => this.#zeroContext.processChanges(diff2),
@@ -14938,7 +15101,7 @@ var Zero = class {
14938
15101
  reportReloadReason(this.#lc);
14939
15102
  this.#metrics = new MetricManager({
14940
15103
  reportIntervalMs: REPORT_INTERVAL_MS,
14941
- host: getLocation()?.host ?? "",
15104
+ host: getBrowserGlobal("location")?.host ?? "",
14942
15105
  source: "client",
14943
15106
  reporter: this.#enableAnalytics ? (allSeries) => this.#reportMetrics(allSeries) : () => Promise.resolve(),
14944
15107
  lc: this.#lc
@@ -14948,10 +15111,11 @@ var Zero = class {
14948
15111
  (poke) => this.#rep.poke(poke),
14949
15112
  () => this.#onPokeError(),
14950
15113
  rep.clientID,
15114
+ schema,
14951
15115
  this.#lc
14952
15116
  );
14953
15117
  this.#visibilityWatcher = getDocumentVisibilityWatcher(
14954
- getDocument(),
15118
+ getBrowserGlobal("document"),
14955
15119
  hiddenTabDisconnectDelay,
14956
15120
  this.#closeAbortController.signal
14957
15121
  );
@@ -15131,6 +15295,11 @@ var Zero = class {
15131
15295
  // An error on the connection is fatal for the connection.
15132
15296
  async #handleErrorMessage(lc, downMessage) {
15133
15297
  const [, kind, message] = downMessage;
15298
+ if (kind === "MutationRateLimited" /* MutationRateLimited */) {
15299
+ this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
15300
+ lc.error?.("Mutation rate limited", { message });
15301
+ return;
15302
+ }
15134
15303
  lc.info?.(`${kind}: ${message}}`);
15135
15304
  const error = new ServerError(kind, message);
15136
15305
  this.#rejectMessageError?.reject(error);
@@ -15336,9 +15505,9 @@ var Zero = class {
15336
15505
  l.error?.("disconnect() called while disconnected");
15337
15506
  break;
15338
15507
  }
15339
- this.#socketResolver = resolver7();
15508
+ this.#socketResolver = resolver8();
15340
15509
  l.debug?.("Creating new connect resolver");
15341
- this.#connectResolver = resolver7();
15510
+ this.#connectResolver = resolver8();
15342
15511
  this.#setConnectionState(0 /* Disconnected */);
15343
15512
  this.#messageCount = 0;
15344
15513
  this.#connectStart = void 0;
@@ -15385,12 +15554,12 @@ var Zero = class {
15385
15554
  const body = pullResponseMessage[1];
15386
15555
  lc = lc.withContext("requestID", body.requestID);
15387
15556
  lc.debug?.("Handling pull response", body);
15388
- const resolver8 = this.#pendingPullsByRequestID.get(body.requestID);
15389
- if (!resolver8) {
15557
+ const resolver9 = this.#pendingPullsByRequestID.get(body.requestID);
15558
+ if (!resolver9) {
15390
15559
  lc.debug?.("No resolver found");
15391
15560
  return;
15392
15561
  }
15393
- resolver8.resolve(pullResponseMessage[1]);
15562
+ resolver9.resolve(pullResponseMessage[1]);
15394
15563
  }
15395
15564
  async #pusher(req, requestID) {
15396
15565
  assert(req.pushVersion === 1);
@@ -15519,7 +15688,7 @@ var Zero = class {
15519
15688
  PING_INTERVAL_MS,
15520
15689
  controller.signal
15521
15690
  );
15522
- this.#rejectMessageError = resolver7();
15691
+ this.#rejectMessageError = resolver8();
15523
15692
  let RaceCases;
15524
15693
  ((RaceCases2) => {
15525
15694
  RaceCases2[RaceCases2["Ping"] = 0] = "Ping";
@@ -15637,7 +15806,7 @@ var Zero = class {
15637
15806
  }
15638
15807
  ];
15639
15808
  send(socket, pullRequestMessage);
15640
- const pullResponseResolver = resolver7();
15809
+ const pullResponseResolver = resolver8();
15641
15810
  this.#pendingPullsByRequestID.set(requestID, pullResponseResolver);
15642
15811
  try {
15643
15812
  let RaceCases;
@@ -15698,7 +15867,7 @@ var Zero = class {
15698
15867
  */
15699
15868
  async #ping(l, messageErrorRejectionPromise) {
15700
15869
  l.debug?.("pinging");
15701
- const { promise, resolve } = resolver7();
15870
+ const { promise, resolve } = resolver8();
15702
15871
  this.#onPong = resolve;
15703
15872
  const pingMessage = ["ping", {}];
15704
15873
  const t0 = performance.now();
@@ -15758,7 +15927,8 @@ function createSocket(socketOrigin, baseCookie, clientID, clientGroupID, schemaV
15758
15927
  searchParams.set("debugPerf", true.toString());
15759
15928
  }
15760
15929
  lc.info?.("Connecting to", url.toString());
15761
- return new WebSocket(
15930
+ const WS = mustGetBrowserGlobal("WebSocket");
15931
+ return new WS(
15762
15932
  // toString() required for RN URL polyfill.
15763
15933
  url.toString(),
15764
15934
  auth === "" || auth === void 0 ? void 0 : encodeURIComponent(auth)