@rocicorp/zero 0.5.2024110200 → 0.6.2024111700

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 (333) hide show
  1. package/out/{internal.js → advanced.js} +2 -2
  2. package/out/{chunk-YCMA66NH.js → chunk-5UY46OAF.js} +5 -2
  3. package/out/{chunk-YCMA66NH.js.map → chunk-5UY46OAF.js.map} +2 -2
  4. package/out/{chunk-INJ4WJHS.js → chunk-PIFWXXO2.js} +1209 -586
  5. package/out/chunk-PIFWXXO2.js.map +7 -0
  6. package/out/react.js.map +2 -2
  7. package/out/shared/src/browser-env.d.ts +17 -0
  8. package/out/shared/src/browser-env.d.ts.map +1 -1
  9. package/out/shared/src/expand.d.ts +7 -0
  10. package/out/shared/src/expand.d.ts.map +1 -0
  11. package/out/solid.js +5 -5
  12. package/out/solid.js.map +2 -2
  13. package/out/zero-cache/src/auth/load-authorization.d.ts +3 -0
  14. package/out/zero-cache/src/auth/load-authorization.d.ts.map +1 -0
  15. package/out/zero-cache/src/auth/load-authorization.js +21 -0
  16. package/out/zero-cache/src/auth/load-authorization.js.map +1 -0
  17. package/out/zero-cache/src/config/config.d.ts +112 -0
  18. package/out/zero-cache/src/config/config.d.ts.map +1 -0
  19. package/out/zero-cache/src/config/config.js +246 -0
  20. package/out/zero-cache/src/config/config.js.map +1 -0
  21. package/out/zero-cache/src/config/zero-config.d.ts +145 -964
  22. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  23. package/out/zero-cache/src/config/zero-config.js +242 -115
  24. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  25. package/out/zero-cache/src/db/delete-lite-db.d.ts +2 -0
  26. package/out/zero-cache/src/db/delete-lite-db.d.ts.map +1 -0
  27. package/out/zero-cache/src/db/delete-lite-db.js +7 -0
  28. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -0
  29. package/out/zero-cache/src/db/migration.d.ts +1 -0
  30. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  31. package/out/zero-cache/src/db/migration.js +17 -7
  32. package/out/zero-cache/src/db/migration.js.map +1 -1
  33. package/out/zero-cache/src/db/pg-to-lite.d.ts +1 -1
  34. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  35. package/out/zero-cache/src/db/pg-to-lite.js +7 -3
  36. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  37. package/out/zero-cache/src/db/short-lived-client.d.ts +16 -0
  38. package/out/zero-cache/src/db/short-lived-client.d.ts.map +1 -0
  39. package/out/zero-cache/src/db/short-lived-client.js +50 -0
  40. package/out/zero-cache/src/db/short-lived-client.js.map +1 -0
  41. package/out/zero-cache/src/db/specs.d.ts +12 -3
  42. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  43. package/out/zero-cache/src/db/specs.js +6 -1
  44. package/out/zero-cache/src/db/specs.js.map +1 -1
  45. package/out/zero-cache/src/db/transaction-pool.d.ts +8 -2
  46. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  47. package/out/zero-cache/src/db/transaction-pool.js +43 -9
  48. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  49. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  50. package/out/zero-cache/src/server/change-streamer.js +34 -9
  51. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  52. package/out/zero-cache/src/server/life-cycle.d.ts +1 -1
  53. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  54. package/out/zero-cache/src/server/life-cycle.js +2 -3
  55. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  56. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  57. package/out/zero-cache/src/server/logging.js +2 -15
  58. package/out/zero-cache/src/server/logging.js.map +1 -1
  59. package/out/zero-cache/src/server/main.js +28 -10
  60. package/out/zero-cache/src/server/main.js.map +1 -1
  61. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  62. package/out/zero-cache/src/server/replicator.js +6 -5
  63. package/out/zero-cache/src/server/replicator.js.map +1 -1
  64. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  65. package/out/zero-cache/src/server/syncer.js +16 -12
  66. package/out/zero-cache/src/server/syncer.js.map +1 -1
  67. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -3
  68. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  69. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +2 -3
  70. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  71. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +153 -2
  72. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  73. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +136 -19
  74. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  75. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +17 -9
  76. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/change-streamer/change-streamer.js +4 -2
  78. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  79. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -0
  80. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/change-streamer/forwarder.js +9 -2
  82. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  83. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts +10 -0
  84. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +171 -24
  86. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
  87. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  88. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +33 -19
  89. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  90. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +62 -39
  91. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  92. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +8 -40
  93. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  94. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts +8 -0
  95. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts.map +1 -1
  96. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js +41 -8
  97. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js.map +1 -1
  98. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +83 -13
  99. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  100. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +15 -5
  101. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  102. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts +39 -3
  103. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js +67 -36
  105. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +1 -1
  106. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.d.ts +8 -0
  107. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.d.ts.map +1 -0
  108. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.js +33 -0
  109. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.js.map +1 -0
  110. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +5 -1
  111. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  112. package/out/zero-cache/src/services/change-streamer/schema/change.js +3 -0
  113. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
  114. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  115. package/out/zero-cache/src/services/change-streamer/schema/init.js +4 -6
  116. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  117. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +6 -1
  118. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  119. package/out/zero-cache/src/services/change-streamer/schema/tables.js +19 -4
  120. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  121. package/out/zero-cache/src/services/change-streamer/storer.d.ts +29 -2
  122. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  123. package/out/zero-cache/src/services/change-streamer/storer.js +90 -8
  124. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  125. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +1 -0
  126. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  127. package/out/zero-cache/src/services/change-streamer/subscriber.js +18 -3
  128. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  129. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +5 -3
  130. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -1
  131. package/out/zero-cache/src/services/dispatcher/dispatcher.js +20 -5
  132. package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
  133. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +6 -5
  134. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  135. package/out/zero-cache/src/services/mutagen/mutagen.js +26 -20
  136. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  137. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +7 -6
  138. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  139. package/out/zero-cache/src/services/mutagen/write-authorizer.js +10 -18
  140. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  141. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  142. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  143. package/out/zero-cache/src/services/replicator/incremental-sync.js +8 -8
  144. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  145. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  146. package/out/zero-cache/src/services/replicator/schema/replication-state.js +1 -10
  147. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  148. package/out/zero-cache/src/services/running-state.d.ts +6 -1
  149. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  150. package/out/zero-cache/src/services/running-state.js +23 -5
  151. package/out/zero-cache/src/services/running-state.js.map +1 -1
  152. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +49 -29
  153. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  154. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  155. package/out/zero-cache/src/services/view-syncer/view-syncer.js +2 -1
  156. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  157. package/out/zero-cache/src/types/lexi-version.d.ts +3 -2
  158. package/out/zero-cache/src/types/lexi-version.d.ts.map +1 -1
  159. package/out/zero-cache/src/types/lexi-version.js +8 -6
  160. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  161. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  162. package/out/zero-cache/src/types/processes.js +1 -0
  163. package/out/zero-cache/src/types/processes.js.map +1 -1
  164. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  165. package/out/zero-cache/src/workers/replicator.js +2 -4
  166. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  167. package/out/zero-cache/src/workers/syncer.js +1 -1
  168. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  169. package/out/zero-client/src/client/crud.d.ts +56 -25
  170. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  171. package/out/zero-client/src/client/http-string.d.ts +1 -0
  172. package/out/zero-client/src/client/http-string.d.ts.map +1 -1
  173. package/out/zero-client/src/client/log-options.d.ts +2 -1
  174. package/out/zero-client/src/client/log-options.d.ts.map +1 -1
  175. package/out/zero-client/src/client/options.d.ts +8 -8
  176. package/out/zero-client/src/client/options.d.ts.map +1 -1
  177. package/out/zero-client/src/client/protocol-version.d.ts +2 -0
  178. package/out/zero-client/src/client/protocol-version.d.ts.map +1 -0
  179. package/out/zero-client/src/client/server-option.d.ts.map +1 -1
  180. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
  181. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  182. package/out/zero-client/src/client/zero.d.ts +26 -14
  183. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  184. package/out/zero-client/src/mod.d.ts +4 -2
  185. package/out/zero-client/src/mod.d.ts.map +1 -1
  186. package/out/zero-protocol/src/ast.d.ts +37 -21
  187. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  188. package/out/zero-protocol/src/ast.js +21 -6
  189. package/out/zero-protocol/src/ast.js.map +1 -1
  190. package/out/zero-protocol/src/change-desired-queries.d.ts +16 -8
  191. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  192. package/out/zero-protocol/src/connect.d.ts +16 -8
  193. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  194. package/out/zero-protocol/src/down.d.ts +16 -8
  195. package/out/zero-protocol/src/down.d.ts.map +1 -1
  196. package/out/zero-protocol/src/poke.d.ts +32 -16
  197. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  198. package/out/zero-protocol/src/push.d.ts +18 -18
  199. package/out/zero-protocol/src/push.d.ts.map +1 -1
  200. package/out/zero-protocol/src/push.js +5 -5
  201. package/out/zero-protocol/src/push.js.map +1 -1
  202. package/out/zero-protocol/src/queries-patch.d.ts +24 -12
  203. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  204. package/out/zero-protocol/src/up.d.ts +18 -10
  205. package/out/zero-protocol/src/up.d.ts.map +1 -1
  206. package/out/zero-react/src/use-zero.d.ts.map +1 -1
  207. package/out/zero-schema/src/authorization.d.ts +25 -0
  208. package/out/zero-schema/src/authorization.d.ts.map +1 -0
  209. package/out/zero-schema/src/compiled-authorization.d.ts +379 -0
  210. package/out/zero-schema/src/compiled-authorization.d.ts.map +1 -0
  211. package/out/zero-schema/src/compiled-authorization.js +15 -0
  212. package/out/zero-schema/src/compiled-authorization.js.map +1 -0
  213. package/out/zero-schema/src/mod.d.ts +1 -0
  214. package/out/zero-schema/src/mod.d.ts.map +1 -1
  215. package/out/{zero-client/src/client → zero-schema/src}/normalized-schema.d.ts +2 -2
  216. package/out/zero-schema/src/normalized-schema.d.ts.map +1 -0
  217. package/out/zero-schema/src/table-schema.d.ts +15 -7
  218. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  219. package/out/zero-schema/src/table-schema.js.map +1 -1
  220. package/out/zero.js +10 -14
  221. package/out/zql/src/builder/builder.d.ts +1 -1
  222. package/out/zql/src/builder/builder.d.ts.map +1 -1
  223. package/out/zql/src/builder/builder.js +136 -30
  224. package/out/zql/src/builder/builder.js.map +1 -1
  225. package/out/zql/src/builder/filter.d.ts +2 -1
  226. package/out/zql/src/builder/filter.d.ts.map +1 -1
  227. package/out/zql/src/builder/filter.js +18 -0
  228. package/out/zql/src/builder/filter.js.map +1 -1
  229. package/out/zql/src/builder/like.d.ts +2 -2
  230. package/out/zql/src/builder/like.d.ts.map +1 -1
  231. package/out/zql/src/ivm/change.d.ts +1 -0
  232. package/out/zql/src/ivm/change.d.ts.map +1 -1
  233. package/out/zql/src/ivm/change.js +4 -1
  234. package/out/zql/src/ivm/change.js.map +1 -1
  235. package/out/zql/src/ivm/exists.d.ts +18 -0
  236. package/out/zql/src/ivm/exists.d.ts.map +1 -0
  237. package/out/zql/src/ivm/exists.js +186 -0
  238. package/out/zql/src/ivm/exists.js.map +1 -0
  239. package/out/zql/src/ivm/fan-in.d.ts +1 -1
  240. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  241. package/out/zql/src/ivm/fan-in.js +3 -3
  242. package/out/zql/src/ivm/fan-in.js.map +1 -1
  243. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  244. package/out/zql/src/ivm/fan-out.js +4 -7
  245. package/out/zql/src/ivm/fan-out.js.map +1 -1
  246. package/out/zql/src/ivm/filter.js +1 -1
  247. package/out/zql/src/ivm/filter.js.map +1 -1
  248. package/out/zql/src/ivm/memory-source.d.ts +10 -6
  249. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  250. package/out/zql/src/ivm/memory-source.js +60 -75
  251. package/out/zql/src/ivm/memory-source.js.map +1 -1
  252. package/out/zql/src/ivm/skip.js +1 -1
  253. package/out/zql/src/ivm/skip.js.map +1 -1
  254. package/out/zql/src/ivm/take.d.ts +1 -1
  255. package/out/zql/src/ivm/take.d.ts.map +1 -1
  256. package/out/zql/src/ivm/take.js +11 -7
  257. package/out/zql/src/ivm/take.js.map +1 -1
  258. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  259. package/out/zql/src/query/auth-query.d.ts +7 -3
  260. package/out/zql/src/query/auth-query.d.ts.map +1 -1
  261. package/out/zql/src/query/dnf.d.ts +10 -0
  262. package/out/zql/src/query/dnf.d.ts.map +1 -0
  263. package/out/zql/src/query/expression.d.ts +40 -23
  264. package/out/zql/src/query/expression.d.ts.map +1 -1
  265. package/out/zql/src/query/query-impl.d.ts +7 -6
  266. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  267. package/out/zql/src/query/query.d.ts +17 -46
  268. package/out/zql/src/query/query.d.ts.map +1 -1
  269. package/out/zqlite/src/db.d.ts.map +1 -1
  270. package/out/zqlite/src/db.js +19 -6
  271. package/out/zqlite/src/db.js.map +1 -1
  272. package/out/zqlite/src/table-source.d.ts +12 -3
  273. package/out/zqlite/src/table-source.d.ts.map +1 -1
  274. package/out/zqlite/src/table-source.js +81 -2
  275. package/out/zqlite/src/table-source.js.map +1 -1
  276. package/package.json +7 -11
  277. package/out/chunk-INJ4WJHS.js.map +0 -7
  278. package/out/datadog/src/datadog-log-sink.js +0 -231
  279. package/out/datadog/src/datadog-log-sink.js.map +0 -1
  280. package/out/datadog/src/mod.js +0 -2
  281. package/out/datadog/src/mod.js.map +0 -1
  282. package/out/shared/src/immutable.js +0 -2
  283. package/out/shared/src/immutable.js.map +0 -1
  284. package/out/shared/src/sorted-entries.js +0 -6
  285. package/out/shared/src/sorted-entries.js.map +0 -1
  286. package/out/shared/src/writable.js +0 -2
  287. package/out/shared/src/writable.js.map +0 -1
  288. package/out/zero/src/config.d.ts +0 -2
  289. package/out/zero/src/config.d.ts.map +0 -1
  290. package/out/zero/src/config.js +0 -2
  291. package/out/zero/src/config.js.map +0 -1
  292. package/out/zero-cache/src/config/config-query.d.ts +0 -19
  293. package/out/zero-cache/src/config/config-query.d.ts.map +0 -1
  294. package/out/zero-cache/src/config/config-query.js +0 -22
  295. package/out/zero-cache/src/config/config-query.js.map +0 -1
  296. package/out/zero-cache/src/config/define-config.d.ts +0 -43
  297. package/out/zero-cache/src/config/define-config.d.ts.map +0 -1
  298. package/out/zero-cache/src/config/define-config.js +0 -121
  299. package/out/zero-cache/src/config/define-config.js.map +0 -1
  300. package/out/zero-cache/src/config/refs.d.ts +0 -3
  301. package/out/zero-cache/src/config/refs.d.ts.map +0 -1
  302. package/out/zero-cache/src/config/refs.js +0 -14
  303. package/out/zero-cache/src/config/refs.js.map +0 -1
  304. package/out/zero-client/src/client/normalized-schema.d.ts.map +0 -1
  305. package/out/zero-client/src/client/normalized-schema.js +0 -31
  306. package/out/zero-client/src/client/normalized-schema.js.map +0 -1
  307. package/out/zero-protocol/src/ast-hash.js +0 -14
  308. package/out/zero-protocol/src/ast-hash.js.map +0 -1
  309. package/out/zero-schema/src/mod.js +0 -4
  310. package/out/zero-schema/src/mod.js.map +0 -1
  311. package/out/zero-schema/src/normalize-table-schema.js +0 -116
  312. package/out/zero-schema/src/normalize-table-schema.js.map +0 -1
  313. package/out/zero-schema/src/schema.js +0 -4
  314. package/out/zero-schema/src/schema.js.map +0 -1
  315. package/out/zql/src/ivm/array-view.js +0 -70
  316. package/out/zql/src/ivm/array-view.js.map +0 -1
  317. package/out/zql/src/ivm/view-apply-change.js +0 -156
  318. package/out/zql/src/ivm/view-apply-change.js.map +0 -1
  319. package/out/zql/src/ivm/view.js +0 -2
  320. package/out/zql/src/ivm/view.js.map +0 -1
  321. package/out/zql/src/query/auth-query.js +0 -26
  322. package/out/zql/src/query/auth-query.js.map +0 -1
  323. package/out/zql/src/query/expression.js +0 -121
  324. package/out/zql/src/query/expression.js.map +0 -1
  325. package/out/zql/src/query/query-impl.js +0 -291
  326. package/out/zql/src/query/query-impl.js.map +0 -1
  327. package/out/zql/src/query/query-internal.js +0 -2
  328. package/out/zql/src/query/query-internal.js.map +0 -1
  329. package/out/zql/src/query/query.js +0 -3
  330. package/out/zql/src/query/query.js.map +0 -1
  331. package/out/zql/src/query/typed-view.js +0 -2
  332. package/out/zql/src/query/typed-view.js.map +0 -1
  333. /package/out/{internal.js.map → advanced.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import "./chunk-ULOTOBTC.js";
2
2
  import {
3
3
  applyChange
4
- } from "./chunk-YCMA66NH.js";
4
+ } from "./chunk-5UY46OAF.js";
5
5
  import "./chunk-F5QR3K72.js";
6
6
  export {
7
7
  applyChange
8
8
  };
9
- //# sourceMappingURL=internal.js.map
9
+ //# sourceMappingURL=advanced.js.map
@@ -131,7 +131,10 @@ function applyChange(parentEntry, change, schema, relationship, format) {
131
131
  change.node.relationships
132
132
  )) {
133
133
  const childSchema = must(schema.relationships[relationship2]);
134
- const childFormat = must(childFormats[relationship2]);
134
+ const childFormat = childFormats[relationship2];
135
+ if (childFormat === void 0) {
136
+ continue;
137
+ }
135
138
  const newView = childFormat.singular ? void 0 : [];
136
139
  newEntry[relationship2] = newView;
137
140
  for (const node of children) {
@@ -285,4 +288,4 @@ export {
285
288
  must,
286
289
  applyChange
287
290
  };
288
- //# sourceMappingURL=chunk-YCMA66NH.js.map
291
+ //# sourceMappingURL=chunk-5UY46OAF.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../shared/src/asserts.ts", "../../shared/src/must.ts", "../../zql/src/ivm/view-apply-change.ts"],
4
- "sourcesContent": ["export function assert(b: unknown, msg = 'Assertion failed'): asserts b {\n if (!b) {\n throw new Error(msg);\n }\n}\n\nexport function assertString(v: unknown): asserts v is string {\n assertType(v, 'string');\n}\n\nexport function assertNumber(v: unknown): asserts v is number {\n assertType(v, 'number');\n}\n\nexport function assertBoolean(v: unknown): asserts v is boolean {\n assertType(v, 'boolean');\n}\n\nfunction assertType(v: unknown, t: string) {\n if (typeof v !== t) {\n throwInvalidType(v, t);\n }\n}\n\nexport function assertObject(v: unknown): asserts v is Record<string, unknown> {\n if (v === null) {\n throwInvalidType(v, 'object');\n }\n assertType(v, 'object');\n}\n\nexport function assertArray(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) {\n throwInvalidType(v, 'array');\n }\n}\n\nexport function invalidType(v: unknown, t: string): string {\n let s = 'Invalid type: ';\n if (v === null || v === undefined) {\n s += v;\n } else {\n s += `${typeof v} \\`${v}\\``;\n }\n return s + `, expected ${t}`;\n}\n\nexport function throwInvalidType(v: unknown, t: string): never {\n throw new Error(invalidType(v, t));\n}\n\nexport function assertNotNull<T>(v: T | null): asserts v is T {\n if (v === null) {\n throw new Error('Expected non-null value');\n }\n}\n\nexport function assertUndefined<T>(\n v: T | undefined,\n msg = 'Expected undefined value',\n): asserts v is T {\n if (v !== undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertNotUndefined<T>(\n v: T | undefined,\n msg = 'Expected non undefined value',\n): asserts v is T {\n if (v === undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertInstanceof<T>(\n v: unknown,\n t: new (...args: unknown[]) => T,\n): asserts v is T {\n if (!(v instanceof t)) {\n throw new Error(`Expected instanceof ${t.name}`);\n }\n}\n\nexport function assertUint8Array(v: unknown): asserts v is Uint8Array {\n assertInstanceof(v, Uint8Array);\n}\n\nexport function unreachable(): never;\nexport function unreachable(v: never): never;\nexport function unreachable(_?: never): never {\n throw new Error('Unreachable');\n}\n\nexport function notImplemented(): never {\n throw new Error('Not implemented');\n}\n", "export function must<T>(v: T | undefined | null, msg?: string): T {\n // eslint-disable-next-line eqeqeq\n if (v == null) {\n throw new Error(msg ?? `Unexpected ${v} value`);\n }\n return v;\n}\n", "import {\n assert,\n assertArray,\n assertObject,\n assertUndefined,\n unreachable,\n} from '../../../shared/src/asserts.js';\nimport {must} from '../../../shared/src/must.js';\nimport type {Row} from '../../../zero-protocol/src/data.js';\nimport type {Change} from './change.js';\nimport type {Comparator} from './data.js';\nimport type {SourceSchema} from './schema.js';\nimport type {Entry, EntryList, Format} from './view.js';\n\nexport function applyChange(\n parentEntry: Entry,\n change: Change,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n) {\n if (schema.isHidden) {\n switch (change.type) {\n case 'add':\n case 'remove':\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n const childSchema = must(schema.relationships[relationship]);\n for (const node of children) {\n applyChange(\n parentEntry,\n {type: change.type, node},\n childSchema,\n relationship,\n format,\n );\n }\n }\n return;\n case 'edit':\n // If hidden at this level it means that the hidden row was changed. If\n // the row was changed in such a way that it would change the\n // relationships then the edit would have been split into remove and\n // add.\n return;\n case 'child': {\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n applyChange(\n parentEntry,\n change.child.change,\n childSchema,\n relationship,\n format,\n );\n return;\n }\n default:\n unreachable(change);\n }\n }\n\n const {singular, relationships: childFormats} = format;\n switch (change.type) {\n case 'add': {\n // TODO: Only create a new entry if we need to mutate the existing one.\n const newEntry: Entry = {\n ...change.node.row,\n };\n if (singular) {\n assertUndefined(\n parentEntry[relationship],\n 'single output already exists',\n );\n parentEntry[relationship] = newEntry;\n } else {\n const view = parentEntry[relationship];\n assertArray(view);\n const {pos, found} = binarySearch(view, newEntry, schema.compareRows);\n assert(!found, 'node already exists');\n view.splice(pos, 0, newEntry);\n }\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n // TODO: Is there a flag to make TypeScript complain that dictionary access might be undefined?\n const childSchema = must(schema.relationships[relationship]);\n const childFormat = must(childFormats[relationship]);\n const newView = childFormat.singular ? undefined : ([] as EntryList);\n newEntry[relationship] = newView;\n for (const node of children) {\n applyChange(\n newEntry,\n {type: 'add', node},\n childSchema,\n relationship,\n childFormat,\n );\n }\n }\n break;\n }\n case 'remove': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = undefined;\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(found, 'node does not exist');\n view.splice(pos, 1);\n }\n break;\n }\n case 'child': {\n let existing: Entry;\n if (singular) {\n assertObject(parentEntry[relationship]);\n existing = parentEntry[relationship];\n } else {\n assertArray(parentEntry[relationship]);\n const list = parentEntry[relationship];\n const {pos, found} = binarySearch(list, change.row, schema.compareRows);\n assert(found, 'node does not exist');\n existing = list[pos];\n }\n\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n const childFormat = must(\n format.relationships[change.child.relationshipName],\n );\n applyChange(\n existing,\n change.child.change,\n childSchema,\n change.child.relationshipName,\n childFormat,\n );\n break;\n }\n case 'edit': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = {\n ...parentEntry[relationship],\n ...change.row,\n };\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n // If the order changed due to the edit, we need to remove and reinsert.\n if (schema.compareRows(change.oldRow, change.row) === 0) {\n const {pos, found} = binarySearch(\n view,\n change.oldRow,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n view[pos] = makeEntryPreserveRelationships(\n change.row,\n view[pos],\n schema.relationships,\n );\n } else {\n // Remove\n const {pos, found} = binarySearch(\n view,\n change.oldRow,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n const oldEntry = view[pos];\n view.splice(pos, 1);\n\n // Insert\n {\n const {pos, found} = binarySearch(\n view,\n change.row,\n schema.compareRows,\n );\n assert(!found, 'node already exists');\n view.splice(\n pos,\n 0,\n makeEntryPreserveRelationships(\n change.row,\n oldEntry,\n schema.relationships,\n ),\n );\n }\n }\n }\n break;\n }\n default:\n unreachable(change);\n }\n}\n\n// TODO: Do not return an object. It puts unnecessary pressure on the GC.\nfunction binarySearch(view: EntryList, target: Entry, comparator: Comparator) {\n let low = 0;\n let high = view.length - 1;\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const comparison = comparator(view[mid] as Row, target as Row);\n if (comparison < 0) {\n low = mid + 1;\n } else if (comparison > 0) {\n high = mid - 1;\n } else {\n return {pos: mid, found: true};\n }\n }\n return {pos: low, found: false};\n}\n\nfunction makeEntryPreserveRelationships(\n row: Row,\n entry: Entry,\n relationships: {[key: string]: SourceSchema},\n): Entry {\n const result: Entry = {...row};\n for (const relationship in relationships) {\n assert(!(relationship in row), 'Relationship already exists');\n result[relationship] = entry[relationship];\n }\n return result;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export function assert(b: unknown, msg = 'Assertion failed'): asserts b {\n if (!b) {\n throw new Error(msg);\n }\n}\n\nexport function assertString(v: unknown): asserts v is string {\n assertType(v, 'string');\n}\n\nexport function assertNumber(v: unknown): asserts v is number {\n assertType(v, 'number');\n}\n\nexport function assertBoolean(v: unknown): asserts v is boolean {\n assertType(v, 'boolean');\n}\n\nfunction assertType(v: unknown, t: string) {\n if (typeof v !== t) {\n throwInvalidType(v, t);\n }\n}\n\nexport function assertObject(v: unknown): asserts v is Record<string, unknown> {\n if (v === null) {\n throwInvalidType(v, 'object');\n }\n assertType(v, 'object');\n}\n\nexport function assertArray(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) {\n throwInvalidType(v, 'array');\n }\n}\n\nexport function invalidType(v: unknown, t: string): string {\n let s = 'Invalid type: ';\n if (v === null || v === undefined) {\n s += v;\n } else {\n s += `${typeof v} \\`${v}\\``;\n }\n return s + `, expected ${t}`;\n}\n\nexport function throwInvalidType(v: unknown, t: string): never {\n throw new Error(invalidType(v, t));\n}\n\nexport function assertNotNull<T>(v: T | null): asserts v is T {\n if (v === null) {\n throw new Error('Expected non-null value');\n }\n}\n\nexport function assertUndefined<T>(\n v: T | undefined,\n msg = 'Expected undefined value',\n): asserts v is T {\n if (v !== undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertNotUndefined<T>(\n v: T | undefined,\n msg = 'Expected non undefined value',\n): asserts v is T {\n if (v === undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertInstanceof<T>(\n v: unknown,\n t: new (...args: unknown[]) => T,\n): asserts v is T {\n if (!(v instanceof t)) {\n throw new Error(`Expected instanceof ${t.name}`);\n }\n}\n\nexport function assertUint8Array(v: unknown): asserts v is Uint8Array {\n assertInstanceof(v, Uint8Array);\n}\n\nexport function unreachable(): never;\nexport function unreachable(v: never): never;\nexport function unreachable(_?: never): never {\n throw new Error('Unreachable');\n}\n\nexport function notImplemented(): never {\n throw new Error('Not implemented');\n}\n", "export function must<T>(v: T | undefined | null, msg?: string): T {\n // eslint-disable-next-line eqeqeq\n if (v == null) {\n throw new Error(msg ?? `Unexpected ${v} value`);\n }\n return v;\n}\n", "import {\n assert,\n assertArray,\n assertObject,\n assertUndefined,\n unreachable,\n} from '../../../shared/src/asserts.js';\nimport {must} from '../../../shared/src/must.js';\nimport type {Row} from '../../../zero-protocol/src/data.js';\nimport type {Change} from './change.js';\nimport type {Comparator} from './data.js';\nimport type {SourceSchema} from './schema.js';\nimport type {Entry, EntryList, Format} from './view.js';\n\nexport function applyChange(\n parentEntry: Entry,\n change: Change,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n) {\n if (schema.isHidden) {\n switch (change.type) {\n case 'add':\n case 'remove':\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n const childSchema = must(schema.relationships[relationship]);\n for (const node of children) {\n applyChange(\n parentEntry,\n {type: change.type, node},\n childSchema,\n relationship,\n format,\n );\n }\n }\n return;\n case 'edit':\n // If hidden at this level it means that the hidden row was changed. If\n // the row was changed in such a way that it would change the\n // relationships then the edit would have been split into remove and\n // add.\n return;\n case 'child': {\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n applyChange(\n parentEntry,\n change.child.change,\n childSchema,\n relationship,\n format,\n );\n return;\n }\n default:\n unreachable(change);\n }\n }\n\n const {singular, relationships: childFormats} = format;\n switch (change.type) {\n case 'add': {\n // TODO: Only create a new entry if we need to mutate the existing one.\n const newEntry: Entry = {\n ...change.node.row,\n };\n if (singular) {\n assertUndefined(\n parentEntry[relationship],\n 'single output already exists',\n );\n parentEntry[relationship] = newEntry;\n } else {\n const view = parentEntry[relationship];\n assertArray(view);\n const {pos, found} = binarySearch(view, newEntry, schema.compareRows);\n assert(!found, 'node already exists');\n view.splice(pos, 0, newEntry);\n }\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n // TODO: Is there a flag to make TypeScript complain that dictionary access might be undefined?\n const childSchema = must(schema.relationships[relationship]);\n const childFormat = childFormats[relationship];\n if (childFormat === undefined) {\n continue;\n }\n\n const newView = childFormat.singular ? undefined : ([] as EntryList);\n newEntry[relationship] = newView;\n for (const node of children) {\n applyChange(\n newEntry,\n {type: 'add', node},\n childSchema,\n relationship,\n childFormat,\n );\n }\n }\n break;\n }\n case 'remove': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = undefined;\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(found, 'node does not exist');\n view.splice(pos, 1);\n }\n break;\n }\n case 'child': {\n let existing: Entry;\n if (singular) {\n assertObject(parentEntry[relationship]);\n existing = parentEntry[relationship];\n } else {\n assertArray(parentEntry[relationship]);\n const list = parentEntry[relationship];\n const {pos, found} = binarySearch(list, change.row, schema.compareRows);\n assert(found, 'node does not exist');\n existing = list[pos];\n }\n\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n const childFormat = must(\n format.relationships[change.child.relationshipName],\n );\n applyChange(\n existing,\n change.child.change,\n childSchema,\n change.child.relationshipName,\n childFormat,\n );\n break;\n }\n case 'edit': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = {\n ...parentEntry[relationship],\n ...change.row,\n };\n } else {\n assertArray(parentEntry[relationship]);\n const view = parentEntry[relationship];\n // If the order changed due to the edit, we need to remove and reinsert.\n if (schema.compareRows(change.oldRow, change.row) === 0) {\n const {pos, found} = binarySearch(\n view,\n change.oldRow,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n view[pos] = makeEntryPreserveRelationships(\n change.row,\n view[pos],\n schema.relationships,\n );\n } else {\n // Remove\n const {pos, found} = binarySearch(\n view,\n change.oldRow,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n const oldEntry = view[pos];\n view.splice(pos, 1);\n\n // Insert\n {\n const {pos, found} = binarySearch(\n view,\n change.row,\n schema.compareRows,\n );\n assert(!found, 'node already exists');\n view.splice(\n pos,\n 0,\n makeEntryPreserveRelationships(\n change.row,\n oldEntry,\n schema.relationships,\n ),\n );\n }\n }\n }\n break;\n }\n default:\n unreachable(change);\n }\n}\n\n// TODO: Do not return an object. It puts unnecessary pressure on the GC.\nfunction binarySearch(view: EntryList, target: Entry, comparator: Comparator) {\n let low = 0;\n let high = view.length - 1;\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const comparison = comparator(view[mid] as Row, target as Row);\n if (comparison < 0) {\n low = mid + 1;\n } else if (comparison > 0) {\n high = mid - 1;\n } else {\n return {pos: mid, found: true};\n }\n }\n return {pos: low, found: false};\n}\n\nfunction makeEntryPreserveRelationships(\n row: Row,\n entry: Entry,\n relationships: {[key: string]: SourceSchema},\n): Entry {\n const result: Entry = {...row};\n for (const relationship in relationships) {\n assert(!(relationship in row), 'Relationship already exists');\n result[relationship] = entry[relationship];\n }\n return result;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["relationship", "pos", "found"]
7
7
  }