@rocicorp/zero 0.16.2025022800 → 0.17.2025030300

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 (217) hide show
  1. package/out/{chunk-CC4BCASH.js → chunk-BBNRRMOA.js} +132 -103
  2. package/out/{chunk-CC4BCASH.js.map → chunk-BBNRRMOA.js.map} +2 -2
  3. package/out/react.js +1 -4
  4. package/out/react.js.map +2 -2
  5. package/out/shared/src/set-utils.d.ts +1 -1
  6. package/out/shared/src/set-utils.js +1 -1
  7. package/out/shared/src/types.js +2 -0
  8. package/out/shared/src/types.js.map +1 -0
  9. package/out/solid.js +1 -1
  10. package/out/z2s/src/compiler.d.ts +26 -0
  11. package/out/z2s/src/compiler.d.ts.map +1 -0
  12. package/out/z2s/src/compiler.js +155 -0
  13. package/out/z2s/src/compiler.js.map +1 -0
  14. package/out/z2s/src/sql.d.ts +12 -0
  15. package/out/z2s/src/sql.d.ts.map +1 -0
  16. package/out/z2s/src/sql.js +18 -0
  17. package/out/z2s/src/sql.js.map +1 -0
  18. package/out/zero/src/pg.d.ts +2 -0
  19. package/out/zero/src/pg.d.ts.map +1 -0
  20. package/out/zero/src/pg.js +3 -0
  21. package/out/zero/src/pg.js.map +1 -0
  22. package/out/zero-cache/src/auth/load-permissions.d.ts +2 -2
  23. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  24. package/out/zero-cache/src/auth/load-permissions.js +6 -6
  25. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  26. package/out/zero-cache/src/auth/write-authorizer.d.ts +1 -1
  27. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  28. package/out/zero-cache/src/auth/write-authorizer.js +4 -2
  29. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  30. package/out/zero-cache/src/config/zero-config.d.ts +25 -9
  31. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  32. package/out/zero-cache/src/config/zero-config.js +49 -20
  33. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  34. package/out/zero-cache/src/db/migration.d.ts +1 -1
  35. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  36. package/out/zero-cache/src/db/migration.js +16 -5
  37. package/out/zero-cache/src/db/migration.js.map +1 -1
  38. package/out/zero-cache/src/scripts/deploy-permissions.js +35 -19
  39. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  40. package/out/zero-cache/src/scripts/permissions.d.ts +17 -0
  41. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  42. package/out/zero-cache/src/scripts/permissions.js +3 -1
  43. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  44. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/change-streamer.js +5 -3
  46. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  47. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  48. package/out/zero-cache/src/server/main.js +3 -1
  49. package/out/zero-cache/src/server/main.js.map +1 -1
  50. package/out/zero-cache/src/server/multi/config.d.ts +13 -3
  51. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  52. package/out/zero-cache/src/server/multi/config.js +1 -1
  53. package/out/zero-cache/src/server/multi/config.js.map +1 -1
  54. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  55. package/out/zero-cache/src/server/syncer.js +5 -3
  56. package/out/zero-cache/src/server/syncer.js.map +1 -1
  57. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +3 -3
  58. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/change-source/custom/change-source.js +21 -19
  60. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  61. package/out/zero-cache/src/services/change-source/custom/sync-schema.d.ts +1 -1
  62. package/out/zero-cache/src/services/change-source/custom/sync-schema.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +3 -3
  64. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  65. package/out/zero-cache/src/services/change-source/pg/change-source.js +29 -29
  66. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  67. package/out/zero-cache/src/services/change-source/pg/decommission.d.ts +4 -0
  68. package/out/zero-cache/src/services/change-source/pg/decommission.d.ts.map +1 -0
  69. package/out/zero-cache/src/services/change-source/pg/decommission.js +21 -0
  70. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -0
  71. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +2 -2
  72. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  73. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -10
  74. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  75. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +3 -2
  76. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +39 -18
  78. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  79. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +4 -3
  80. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/change-source/pg/schema/init.js +52 -12
  82. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  83. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +3 -5
  84. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/change-source/pg/schema/published.js +1 -3
  86. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  87. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +10 -14
  88. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
  89. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +69 -66
  90. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  91. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +1 -0
  92. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  93. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +1 -0
  94. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  95. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts +1 -1
  96. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
  97. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  98. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +3 -2
  99. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  100. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +11 -11
  101. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  102. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +3 -2
  103. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/change-streamer/schema/init.js +25 -14
  105. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  106. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +6 -5
  107. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  108. package/out/zero-cache/src/services/change-streamer/schema/tables.js +28 -26
  109. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  110. package/out/zero-cache/src/services/change-streamer/storer.d.ts +4 -2
  111. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  112. package/out/zero-cache/src/services/change-streamer/storer.js +20 -12
  113. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  114. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +3 -2
  115. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  116. package/out/zero-cache/src/services/mutagen/mutagen.js +19 -17
  117. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  118. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +7 -5
  119. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  120. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  121. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +2 -1
  122. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  123. package/out/zero-cache/src/services/view-syncer/client-handler.js +6 -6
  124. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  125. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +3 -1
  126. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  127. package/out/zero-cache/src/services/view-syncer/cvr-store.js +20 -10
  128. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  129. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +6 -3
  130. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  131. package/out/zero-cache/src/services/view-syncer/cvr.js +106 -62
  132. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  133. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +3 -2
  134. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  135. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +5 -3
  136. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  137. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +3 -2
  138. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  139. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +5 -3
  140. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  141. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +3 -5
  142. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  143. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +38 -40
  144. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  145. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +2 -1
  146. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  147. package/out/zero-cache/src/services/view-syncer/schema/init.js +7 -6
  148. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  149. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +26 -18
  150. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  151. package/out/zero-cache/src/services/view-syncer/schema/types.js +12 -9
  152. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  153. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +5 -3
  154. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  155. package/out/zero-cache/src/services/view-syncer/snapshotter.js +25 -23
  156. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  157. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +10 -1
  158. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  159. package/out/zero-cache/src/services/view-syncer/view-syncer.js +159 -29
  160. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  161. package/out/zero-cache/src/types/shards.d.ts +33 -0
  162. package/out/zero-cache/src/types/shards.d.ts.map +1 -0
  163. package/out/zero-cache/src/types/shards.js +44 -0
  164. package/out/zero-cache/src/types/shards.js.map +1 -0
  165. package/out/zero-client/src/client/custom.d.ts +1 -1
  166. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  167. package/out/zero-client/src/client/zero.d.ts +1 -1
  168. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  169. package/out/zero-client/src/mod.d.ts +1 -0
  170. package/out/zero-client/src/mod.d.ts.map +1 -1
  171. package/out/zero-pg/src/custom.d.ts +42 -0
  172. package/out/zero-pg/src/custom.d.ts.map +1 -0
  173. package/out/zero-pg/src/custom.js +99 -0
  174. package/out/zero-pg/src/custom.js.map +1 -0
  175. package/out/zero-pg/src/db.d.ts +27 -0
  176. package/out/zero-pg/src/db.d.ts.map +1 -0
  177. package/out/zero-pg/src/db.js +2 -0
  178. package/out/zero-pg/src/db.js.map +1 -0
  179. package/out/zero-pg/src/logging.d.ts +3 -0
  180. package/out/zero-pg/src/logging.d.ts.map +1 -0
  181. package/out/zero-pg/src/logging.js +5 -0
  182. package/out/zero-pg/src/logging.js.map +1 -0
  183. package/out/zero-pg/src/mod.d.ts +6 -0
  184. package/out/zero-pg/src/mod.d.ts.map +1 -0
  185. package/out/zero-pg/src/mod.js +2 -0
  186. package/out/zero-pg/src/mod.js.map +1 -0
  187. package/out/zero-pg/src/query.d.ts +22 -0
  188. package/out/zero-pg/src/query.d.ts.map +1 -0
  189. package/out/zero-pg/src/query.js +54 -0
  190. package/out/zero-pg/src/query.js.map +1 -0
  191. package/out/zero-pg/src/web.d.ts +16 -0
  192. package/out/zero-pg/src/web.d.ts.map +1 -0
  193. package/out/zero-pg/src/web.js +115 -0
  194. package/out/zero-pg/src/web.js.map +1 -0
  195. package/out/zero-react/src/use-zero.d.ts +5 -4
  196. package/out/zero-react/src/use-zero.d.ts.map +1 -1
  197. package/out/zero.js +1 -1
  198. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  199. package/out/zql/src/ivm/exists.js +138 -122
  200. package/out/zql/src/ivm/exists.js.map +1 -1
  201. package/out/zql/src/mutate/custom.js +10 -0
  202. package/out/zql/src/mutate/custom.js.map +1 -0
  203. package/out/zql/src/query/query-impl.d.ts +2 -2
  204. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  205. package/out/zql/src/query/query-impl.js +1 -1
  206. package/out/zql/src/query/query-impl.js.map +1 -1
  207. package/out/zql/src/query/query.d.ts +1 -1
  208. package/out/zql/src/query/query.d.ts.map +1 -1
  209. package/out/zql/src/query/static-query.d.ts +1 -1
  210. package/out/zql/src/query/static-query.d.ts.map +1 -1
  211. package/out/zql/src/query/static-query.js +3 -3
  212. package/out/zql/src/query/static-query.js.map +1 -1
  213. package/package.json +5 -1
  214. package/out/zero-cache/src/services/change-source/pg/shard-config.d.ts +0 -19
  215. package/out/zero-cache/src/services/change-source/pg/shard-config.d.ts.map +0 -1
  216. package/out/zero-cache/src/services/change-source/pg/shard-config.js +0 -2
  217. package/out/zero-cache/src/services/change-source/pg/shard-config.js.map +0 -1
@@ -9061,8 +9061,17 @@ var Exists = class {
9061
9061
  #storage;
9062
9062
  #not;
9063
9063
  #parentJoinKey;
9064
- #skipCache;
9064
+ #noSizeReuse;
9065
9065
  #output = throwOutput;
9066
+ /**
9067
+ * This instance variable is `true` when this operator is processing a `push`,
9068
+ * and is used to disable reuse of cached sizes across rows with the
9069
+ * same parent join key value.
9070
+ * This is necessary because during a push relationships can be inconsistent
9071
+ * due to push communicating changes (which may change multiple Nodes) one
9072
+ * Node at a time.
9073
+ */
9074
+ #inPush = false;
9066
9075
  constructor(input, storage, relationshipName, parentJoinKey, type) {
9067
9076
  this.#input = input;
9068
9077
  this.#relationshipName = relationshipName;
@@ -9071,7 +9080,7 @@ var Exists = class {
9071
9080
  assert(this.#input.getSchema().relationships[relationshipName]);
9072
9081
  this.#not = type === "NOT EXISTS";
9073
9082
  this.#parentJoinKey = parentJoinKey;
9074
- this.#skipCache = areEqual(
9083
+ this.#noSizeReuse = areEqual(
9075
9084
  parentJoinKey,
9076
9085
  this.#input.getSchema().primaryKey
9077
9086
  );
@@ -9103,82 +9112,105 @@ var Exists = class {
9103
9112
  }
9104
9113
  }
9105
9114
  push(change) {
9106
- switch (change.type) {
9107
- // add, remove and edit cannot change the size of the
9108
- // this.#relationshipName relationship, so simply #pushWithFilter
9109
- case "add":
9110
- case "edit": {
9111
- this.#pushWithFilter(change);
9112
- return;
9113
- }
9114
- case "remove": {
9115
- const size = this.#getSize(change.node);
9116
- if (size === void 0) {
9115
+ this.#inPush = true;
9116
+ try {
9117
+ switch (change.type) {
9118
+ // add, remove and edit cannot change the size of the
9119
+ // this.#relationshipName relationship, so simply #pushWithFilter
9120
+ case "add":
9121
+ case "edit": {
9122
+ this.#pushWithFilter(change);
9117
9123
  return;
9118
9124
  }
9119
- this.#pushWithFilter(change, size);
9120
- this.#delSize(change.node);
9121
- return;
9122
- }
9123
- case "child":
9124
- if (change.child.relationshipName !== this.#relationshipName || change.child.change.type === "edit" || change.child.change.type === "child") {
9125
- this.#pushWithFilter(change);
9125
+ case "remove": {
9126
+ const size = this.#getSize(change.node);
9127
+ if (size === void 0) {
9128
+ return;
9129
+ }
9130
+ this.#pushWithFilter(change, size);
9131
+ this.#delSize(change.node);
9126
9132
  return;
9127
9133
  }
9128
- switch (change.child.change.type) {
9129
- case "add": {
9130
- let size = this.#getSize(change.node);
9131
- if (size !== void 0) {
9132
- size++;
9133
- this.#setCachedSize(change.node, size);
9134
- this.#setSize(change.node, size);
9135
- } else {
9136
- size = this.#fetchSize(change.node);
9137
- }
9138
- if (size === 1) {
9139
- const type = this.#not ? "remove" : "add";
9140
- if (type === "remove") {
9141
- this.#output.push(change);
9142
- }
9143
- this.#output.push({
9144
- type,
9145
- node: change.node
9146
- });
9147
- } else {
9148
- this.#pushWithFilter(change, size);
9149
- }
9134
+ case "child":
9135
+ if (change.child.relationshipName !== this.#relationshipName || change.child.change.type === "edit" || change.child.change.type === "child") {
9136
+ this.#pushWithFilter(change);
9150
9137
  return;
9151
9138
  }
9152
- case "remove": {
9153
- let size = this.#getSize(change.node);
9154
- if (size !== void 0) {
9155
- if (size === 0) {
9156
- return;
9139
+ switch (change.child.change.type) {
9140
+ case "add": {
9141
+ let size = this.#getSize(change.node);
9142
+ if (size !== void 0) {
9143
+ size++;
9144
+ this.#setSize(change.node, size);
9145
+ } else {
9146
+ size = this.#fetchSize(change.node);
9157
9147
  }
9158
- size--;
9159
- this.#setCachedSize(change.node, size);
9160
- this.#setSize(change.node, size);
9161
- } else {
9162
- size = this.#fetchSize(change.node);
9148
+ if (size === 1) {
9149
+ if (this.#not) {
9150
+ this.#output.push({
9151
+ type: "remove",
9152
+ node: {
9153
+ row: change.node.row,
9154
+ relationships: {
9155
+ ...change.node.relationships,
9156
+ [this.#relationshipName]: () => []
9157
+ }
9158
+ }
9159
+ });
9160
+ } else {
9161
+ this.#output.push({
9162
+ type: "add",
9163
+ node: change.node
9164
+ });
9165
+ }
9166
+ } else {
9167
+ this.#pushWithFilter(change, size);
9168
+ }
9169
+ return;
9163
9170
  }
9164
- if (size === 0) {
9165
- const type = this.#not ? "add" : "remove";
9166
- if (type === "remove") {
9167
- this.#output.push(change);
9171
+ case "remove": {
9172
+ let size = this.#getSize(change.node);
9173
+ if (size !== void 0) {
9174
+ if (size === 0) {
9175
+ return;
9176
+ }
9177
+ size--;
9178
+ this.#setSize(change.node, size);
9179
+ } else {
9180
+ size = this.#fetchSize(change.node);
9168
9181
  }
9169
- this.#output.push({
9170
- type,
9171
- node: change.node
9172
- });
9173
- } else {
9174
- this.#pushWithFilter(change, size);
9182
+ if (size === 0) {
9183
+ if (this.#not) {
9184
+ this.#output.push({
9185
+ type: "add",
9186
+ node: change.node
9187
+ });
9188
+ } else {
9189
+ this.#output.push({
9190
+ type: "remove",
9191
+ node: {
9192
+ row: change.node.row,
9193
+ relationships: {
9194
+ ...change.node.relationships,
9195
+ [this.#relationshipName]: () => [
9196
+ change.child.change.node
9197
+ ]
9198
+ }
9199
+ }
9200
+ });
9201
+ }
9202
+ } else {
9203
+ this.#pushWithFilter(change, size);
9204
+ }
9205
+ return;
9175
9206
  }
9176
- return;
9177
9207
  }
9178
- }
9179
- return;
9180
- default:
9181
- unreachable(change);
9208
+ return;
9209
+ default:
9210
+ unreachable(change);
9211
+ }
9212
+ } finally {
9213
+ this.#inPush = false;
9182
9214
  }
9183
9215
  }
9184
9216
  /**
@@ -9208,26 +9240,8 @@ var Exists = class {
9208
9240
  #setSize(node, size) {
9209
9241
  this.#storage.set(this.#makeSizeStorageKey(node), size);
9210
9242
  }
9211
- #setCachedSize(node, size) {
9212
- if (this.#skipCache) {
9213
- return;
9214
- }
9215
- this.#storage.set(this.#makeCacheStorageKey(node), size);
9216
- }
9217
- #getCachedSize(node) {
9218
- if (this.#skipCache) {
9219
- return void 0;
9220
- }
9221
- return this.#storage.get(this.#makeCacheStorageKey(node));
9222
- }
9223
9243
  #delSize(node) {
9224
9244
  this.#storage.del(this.#makeSizeStorageKey(node));
9225
- if (!this.#skipCache) {
9226
- const cacheKey = this.#makeCacheStorageKey(node);
9227
- if (first(this.#storage.scan({ prefix: `${cacheKey}/` })) === void 0) {
9228
- this.#storage.del(cacheKey);
9229
- }
9230
- }
9231
9245
  }
9232
9246
  #getOrFetchSize(node) {
9233
9247
  const size = this.#getSize(node);
@@ -9237,10 +9251,16 @@ var Exists = class {
9237
9251
  return this.#fetchSize(node);
9238
9252
  }
9239
9253
  #fetchSize(node) {
9240
- const cachedSize = this.#getCachedSize(node);
9241
- if (cachedSize !== void 0) {
9242
- this.#setSize(node, cachedSize);
9243
- return cachedSize;
9254
+ if (!this.#noSizeReuse && !this.#inPush) {
9255
+ const cachedSizeEntry = first(
9256
+ this.#storage.scan({
9257
+ prefix: this.#makeSizeStorageKeyPrefix(node)
9258
+ })
9259
+ );
9260
+ if (cachedSizeEntry !== void 0) {
9261
+ this.#setSize(node, cachedSizeEntry[1]);
9262
+ return cachedSizeEntry[1];
9263
+ }
9244
9264
  }
9245
9265
  const relationship = node.relationships[this.#relationshipName];
9246
9266
  assert(relationship);
@@ -9248,17 +9268,14 @@ var Exists = class {
9248
9268
  for (const _relatedNode of relationship()) {
9249
9269
  size++;
9250
9270
  }
9251
- this.#setCachedSize(node, size);
9252
9271
  this.#setSize(node, size);
9253
9272
  return size;
9254
9273
  }
9255
- #makeCacheStorageKey(node) {
9256
- return `row/${JSON.stringify(
9257
- this.#getKeyValues(node, this.#parentJoinKey)
9258
- )}`;
9274
+ #makeSizeStorageKeyPrefix(node) {
9275
+ return `row/${this.#noSizeReuse ? "" : JSON.stringify(this.#getKeyValues(node, this.#parentJoinKey))}/`;
9259
9276
  }
9260
9277
  #makeSizeStorageKey(node) {
9261
- return `row/${this.#skipCache ? "" : JSON.stringify(this.#getKeyValues(node, this.#parentJoinKey))}/${JSON.stringify(
9278
+ return `${this.#makeSizeStorageKeyPrefix(node)}${JSON.stringify(
9262
9279
  this.#getKeyValues(node, this.#input.getSchema().primaryKey)
9263
9280
  )}`;
9264
9281
  }
@@ -11496,7 +11513,7 @@ var QueryImpl = class extends AbstractQuery {
11496
11513
  const v2 = this.materialize();
11497
11514
  const ret = v2.data;
11498
11515
  v2.destroy();
11499
- return ret;
11516
+ return Promise.resolve(ret);
11500
11517
  }
11501
11518
  preload() {
11502
11519
  const { resolve, promise: complete } = resolver7();
@@ -11559,13 +11576,13 @@ var StaticQuery = class _StaticQuery extends AbstractQuery {
11559
11576
  return this._completeAst();
11560
11577
  }
11561
11578
  materialize() {
11562
- throw new Error("AuthQuery cannot be materialized");
11579
+ throw new Error("StaticQuery cannot be materialized");
11563
11580
  }
11564
11581
  run() {
11565
- throw new Error("AuthQuery cannot be run");
11582
+ return Promise.reject(new Error("StaticQuery cannot be run"));
11566
11583
  }
11567
11584
  preload() {
11568
- throw new Error("AuthQuery cannot be preloaded");
11585
+ throw new Error("StaticQuery cannot be preloaded");
11569
11586
  }
11570
11587
  };
11571
11588
 
@@ -14086,7 +14103,7 @@ function makeMessage(message, context, logLevel) {
14086
14103
  }
14087
14104
 
14088
14105
  // ../zero-client/src/client/version.ts
14089
- var version2 = "0.16.2025022800";
14106
+ var version2 = "0.17.2025030300";
14090
14107
 
14091
14108
  // ../zero-client/src/client/log-options.ts
14092
14109
  var LevelFilterLogSink = class {
@@ -15143,7 +15160,6 @@ var Zero = class {
15143
15160
  onUpdateNeeded,
15144
15161
  onClientStateNotFound,
15145
15162
  hiddenTabDisconnectDelay = DEFAULT_DISCONNECT_HIDDEN_DELAY_MS,
15146
- kvStore = "idb",
15147
15163
  schema,
15148
15164
  batchViewUpdates = (applyViewUpdates) => applyViewUpdates(),
15149
15165
  maxRecentQueries = 0
@@ -15157,6 +15173,15 @@ var Zero = class {
15157
15173
  false
15158
15174
  // Reenable analytics
15159
15175
  );
15176
+ let { kvStore = "idb" } = options;
15177
+ if (kvStore === "idb") {
15178
+ if (!getBrowserGlobal("indexedDB")) {
15179
+ console.warn(
15180
+ "IndexedDB is not supported in this environment. Falling back to memory storage."
15181
+ );
15182
+ kvStore = "mem";
15183
+ }
15184
+ }
15160
15185
  if (hiddenTabDisconnectDelay < 0) {
15161
15186
  throw new Error(
15162
15187
  "ZeroOptions.hiddenTabDisconnectDelay must not be negative."
@@ -15240,7 +15265,11 @@ var Zero = class {
15240
15265
  });
15241
15266
  this.#onClientStateNotFound = onClientStateNotFoundCallback;
15242
15267
  this.#rep.onClientStateNotFound = onClientStateNotFoundCallback;
15243
- const { mutate, mutateBatch } = makeCRUDMutate(schema, rep.mutate);
15268
+ let { mutate, mutateBatch } = makeCRUDMutate(schema, rep.mutate);
15269
+ if (options.mutators) {
15270
+ mutate = {};
15271
+ mutateBatch = void 0;
15272
+ }
15244
15273
  for (const [namespace, mutatorsForNamespace] of Object.entries(
15245
15274
  options.mutators ?? {}
15246
15275
  )) {
@@ -16249,4 +16278,4 @@ export {
16249
16278
  escapeLike,
16250
16279
  Zero
16251
16280
  };
16252
- //# sourceMappingURL=chunk-CC4BCASH.js.map
16281
+ //# sourceMappingURL=chunk-BBNRRMOA.js.map