@rocicorp/zero 0.22.2025081301 → 0.23.2025081400

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 (204) hide show
  1. package/out/analyze-query/src/bin-analyze.js +5 -8
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/{chunk-C3ZE2IHA.js → chunk-JHJ3MBXW.js} +8 -6
  4. package/out/chunk-JHJ3MBXW.js.map +7 -0
  5. package/out/chunk-MKB4RXL3.js +15 -0
  6. package/out/chunk-MKB4RXL3.js.map +7 -0
  7. package/out/{chunk-LENWM5WE.js → chunk-O536GEIT.js} +410 -218
  8. package/out/chunk-O536GEIT.js.map +7 -0
  9. package/out/chunk-SGW2EIVJ.js +192 -0
  10. package/out/chunk-SGW2EIVJ.js.map +7 -0
  11. package/out/{chunk-N2EOVSVB.js → chunk-ZKRMVMWK.js} +209 -153
  12. package/out/chunk-ZKRMVMWK.js.map +7 -0
  13. package/out/expo.js +356 -0
  14. package/out/expo.js.map +7 -0
  15. package/out/{inspector-AF3UI76B.js → inspector-J5P4DOGH.js} +122 -26
  16. package/out/inspector-J5P4DOGH.js.map +7 -0
  17. package/out/{inspector-ENPS6L3H.js → inspector-YIRP3TTL.js} +1 -1
  18. package/out/{inspector-ENPS6L3H.js.map → inspector-YIRP3TTL.js.map} +1 -1
  19. package/out/react.js +7 -4
  20. package/out/react.js.map +2 -2
  21. package/out/replicache/src/kv/sqlite-store.d.ts +117 -0
  22. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -0
  23. package/out/shared/src/binary-search.js +31 -0
  24. package/out/shared/src/binary-search.js.map +1 -0
  25. package/out/shared/src/centroid.d.ts +10 -0
  26. package/out/shared/src/centroid.d.ts.map +1 -0
  27. package/out/shared/src/centroid.js +28 -0
  28. package/out/shared/src/centroid.js.map +1 -0
  29. package/out/shared/src/logging-test-utils.d.ts +12 -0
  30. package/out/shared/src/logging-test-utils.d.ts.map +1 -0
  31. package/out/shared/src/logging-test-utils.js +21 -0
  32. package/out/shared/src/logging-test-utils.js.map +1 -0
  33. package/out/shared/src/objects.d.ts +3 -1
  34. package/out/shared/src/objects.d.ts.map +1 -1
  35. package/out/shared/src/objects.js.map +1 -1
  36. package/out/shared/src/tdigest-schema.d.ts +8 -0
  37. package/out/shared/src/tdigest-schema.d.ts.map +1 -0
  38. package/out/shared/src/tdigest-schema.js +7 -0
  39. package/out/shared/src/tdigest-schema.js.map +1 -0
  40. package/out/shared/src/tdigest.d.ts +53 -0
  41. package/out/shared/src/tdigest.d.ts.map +1 -0
  42. package/out/shared/src/tdigest.js +304 -0
  43. package/out/shared/src/tdigest.js.map +1 -0
  44. package/out/solid.js +13 -9
  45. package/out/solid.js.map +2 -2
  46. package/out/zero/package.json +9 -4
  47. package/out/zero/src/expo.d.ts +2 -0
  48. package/out/zero/src/expo.d.ts.map +1 -0
  49. package/out/zero/src/zero-cache-dev.js.map +1 -1
  50. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  51. package/out/zero-cache/src/auth/write-authorizer.js +3 -2
  52. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  53. package/out/zero-cache/src/config/zero-config.d.ts +18 -297
  54. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  55. package/out/zero-cache/src/config/zero-config.js +43 -5
  56. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  57. package/out/zero-cache/src/observability/events.d.ts +15 -0
  58. package/out/zero-cache/src/observability/events.d.ts.map +1 -0
  59. package/out/zero-cache/src/observability/events.js +93 -0
  60. package/out/zero-cache/src/observability/events.js.map +1 -0
  61. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +1 -1
  62. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
  63. package/out/zero-cache/src/server/anonymous-otel-start.js +40 -18
  64. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  65. package/out/zero-cache/src/server/change-streamer.js +4 -4
  66. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  67. package/out/zero-cache/src/server/main.js +4 -4
  68. package/out/zero-cache/src/server/main.js.map +1 -1
  69. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  70. package/out/zero-cache/src/server/replicator.js +7 -6
  71. package/out/zero-cache/src/server/replicator.js.map +1 -1
  72. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  73. package/out/zero-cache/src/server/runner/run-worker.js +3 -2
  74. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  75. package/out/zero-cache/src/server/syncer.js +5 -5
  76. package/out/zero-cache/src/server/syncer.js.map +1 -1
  77. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/change-source/custom/change-source.js +46 -35
  79. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  80. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +7 -2
  82. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  83. package/out/zero-cache/src/services/mutagen/mutagen.js +1 -1
  84. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  85. package/out/zero-cache/src/services/mutagen/pusher.d.ts +28 -2
  86. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  87. package/out/zero-cache/src/services/mutagen/pusher.js +1 -1
  88. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  89. package/out/zero-cache/src/services/replicator/change-processor.d.ts +5 -1
  90. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  91. package/out/zero-cache/src/services/replicator/change-processor.js +10 -8
  92. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  93. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  94. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  95. package/out/zero-cache/src/services/replicator/incremental-sync.js +17 -3
  96. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  97. package/out/zero-cache/src/services/replicator/replication-status.d.ts +12 -0
  98. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -0
  99. package/out/zero-cache/src/services/replicator/replication-status.js +92 -0
  100. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -0
  101. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  102. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  103. package/out/zero-cache/src/services/replicator/replicator.js +2 -2
  104. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  105. package/out/zero-cache/src/services/statz.d.ts.map +1 -1
  106. package/out/zero-cache/src/services/statz.js +0 -23
  107. package/out/zero-cache/src/services/statz.js.map +1 -1
  108. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +2 -1
  110. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +10 -1
  112. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/view-syncer.js +77 -8
  114. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  115. package/out/zero-cache/src/types/pg.d.ts +9 -0
  116. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  117. package/out/zero-cache/src/types/pg.js +78 -1
  118. package/out/zero-cache/src/types/pg.js.map +1 -1
  119. package/out/zero-client/src/client/context.d.ts +11 -11
  120. package/out/zero-client/src/client/context.d.ts.map +1 -1
  121. package/out/zero-client/src/client/custom.d.ts +6 -6
  122. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  123. package/out/zero-client/src/client/inspector/inspector.d.ts +10 -1
  124. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  125. package/out/zero-client/src/client/inspector/types.d.ts +10 -0
  126. package/out/zero-client/src/client/inspector/types.d.ts.map +1 -1
  127. package/out/zero-client/src/client/measure-push-operator.d.ts +17 -0
  128. package/out/zero-client/src/client/measure-push-operator.d.ts.map +1 -0
  129. package/out/zero-client/src/client/options.d.ts +2 -2
  130. package/out/zero-client/src/client/options.d.ts.map +1 -1
  131. package/out/zero-client/src/client/query-manager.d.ts +18 -5
  132. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  133. package/out/zero-client/src/client/zero.d.ts +4 -4
  134. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  135. package/out/zero-client/src/mod.d.ts +1 -1
  136. package/out/zero-client/src/mod.d.ts.map +1 -1
  137. package/out/zero-events/src/index.d.ts +29 -0
  138. package/out/zero-events/src/index.d.ts.map +1 -0
  139. package/out/zero-events/src/index.js +28 -0
  140. package/out/zero-events/src/index.js.map +1 -0
  141. package/out/zero-events/src/status.d.ts +113 -0
  142. package/out/zero-events/src/status.d.ts.map +1 -0
  143. package/out/zero-events/src/status.js +72 -0
  144. package/out/zero-events/src/status.js.map +1 -0
  145. package/out/zero-expo/src/mod.d.ts +2 -0
  146. package/out/zero-expo/src/mod.d.ts.map +1 -0
  147. package/out/zero-expo/src/store.d.ts +4 -0
  148. package/out/zero-expo/src/store.d.ts.map +1 -0
  149. package/out/zero-protocol/src/down.d.ts +18 -2
  150. package/out/zero-protocol/src/down.d.ts.map +1 -1
  151. package/out/zero-protocol/src/inspect-down.d.ts +64 -6
  152. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  153. package/out/zero-protocol/src/inspect-down.js +18 -3
  154. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  155. package/out/zero-protocol/src/inspect-up.d.ts +25 -6
  156. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  157. package/out/zero-protocol/src/inspect-up.js +8 -3
  158. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  159. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  160. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  161. package/out/zero-protocol/src/protocol-version.js +3 -1
  162. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  163. package/out/zero-protocol/src/up.d.ts +7 -2
  164. package/out/zero-protocol/src/up.d.ts.map +1 -1
  165. package/out/zero-react/src/components/inspector.d.ts +1 -1
  166. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  167. package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
  168. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  169. package/out/zero-react/src/zero-provider.d.ts +4 -4
  170. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  171. package/out/zero-schema/src/permissions.d.ts +15 -0
  172. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  173. package/out/zero-schema/src/table-schema.d.ts +1 -8
  174. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  175. package/out/zero-schema/src/table-schema.js.map +1 -1
  176. package/out/zero-solid/src/use-zero.d.ts +4 -4
  177. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  178. package/out/zero.js +5 -3
  179. package/out/zql/src/builder/builder.d.ts +3 -2
  180. package/out/zql/src/builder/builder.d.ts.map +1 -1
  181. package/out/zql/src/builder/builder.js +9 -8
  182. package/out/zql/src/builder/builder.js.map +1 -1
  183. package/out/zql/src/ivm/operator.d.ts +1 -1
  184. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  185. package/out/zql/src/ivm/operator.js +0 -1
  186. package/out/zql/src/ivm/operator.js.map +1 -1
  187. package/out/zql/src/query/metrics-delegate.d.ts +14 -0
  188. package/out/zql/src/query/metrics-delegate.d.ts.map +1 -0
  189. package/out/zql/src/query/metrics-delegate.js +2 -0
  190. package/out/zql/src/query/metrics-delegate.js.map +1 -0
  191. package/out/zql/src/query/query-delegate.d.ts +7 -2
  192. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  193. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  194. package/out/zql/src/query/query-impl.js +17 -14
  195. package/out/zql/src/query/query-impl.js.map +1 -1
  196. package/out/zqlite/src/query-delegate.d.ts +7 -6
  197. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  198. package/out/zqlite/src/query-delegate.js +5 -2
  199. package/out/zqlite/src/query-delegate.js.map +1 -1
  200. package/package.json +9 -4
  201. package/out/chunk-C3ZE2IHA.js.map +0 -7
  202. package/out/chunk-LENWM5WE.js.map +0 -7
  203. package/out/chunk-N2EOVSVB.js.map +0 -7
  204. package/out/inspector-AF3UI76B.js.map +0 -7
@@ -0,0 +1,304 @@
1
+ // Apache License 2.0
2
+ // https://github.com/influxdata/tdigest
3
+ import { binarySearch } from "./binary-search.js";
4
+ import { Centroid, sortCentroidList } from "./centroid.js";
5
+ // TDigest is a data structure for accurate on-line accumulation of
6
+ // rank-based statistics such as quantiles and trimmed means.
7
+ export class TDigest {
8
+ compression;
9
+ #maxProcessed;
10
+ #maxUnprocessed;
11
+ #processed;
12
+ #unprocessed;
13
+ #cumulative;
14
+ #processedWeight;
15
+ #unprocessedWeight;
16
+ #min;
17
+ #max;
18
+ constructor(compression = 1000) {
19
+ this.compression = compression;
20
+ this.#maxProcessed = processedSize(0, this.compression);
21
+ this.#maxUnprocessed = unprocessedSize(0, this.compression);
22
+ this.reset();
23
+ }
24
+ /**
25
+ * fromJSON creates a TDigest from a JSON-serializable representation.
26
+ * The data should be an object with compression and centroids array.
27
+ */
28
+ static fromJSON(data) {
29
+ const digest = new TDigest(data[0]);
30
+ if (data.length % 2 !== 1) {
31
+ throw new Error('Invalid centroids array');
32
+ }
33
+ for (let i = 1; i < data.length; i += 2) {
34
+ digest.add(data[i], data[i + 1]);
35
+ }
36
+ return digest;
37
+ }
38
+ reset() {
39
+ this.#processed = [];
40
+ this.#unprocessed = [];
41
+ this.#cumulative = [];
42
+ this.#processedWeight = 0;
43
+ this.#unprocessedWeight = 0;
44
+ this.#min = Number.MAX_VALUE;
45
+ this.#max = -Number.MAX_VALUE;
46
+ }
47
+ add(mean, weight = 1) {
48
+ this.addCentroid(new Centroid(mean, weight));
49
+ }
50
+ /** AddCentroidList can quickly add multiple centroids. */
51
+ addCentroidList(centroidList) {
52
+ for (const c of centroidList) {
53
+ this.addCentroid(c);
54
+ }
55
+ }
56
+ /**
57
+ * AddCentroid adds a single centroid.
58
+ * Weights which are not a number or are <= 0 are ignored, as are NaN means.
59
+ */
60
+ addCentroid(c) {
61
+ if (Number.isNaN(c.mean) ||
62
+ c.weight <= 0 ||
63
+ Number.isNaN(c.weight) ||
64
+ !Number.isFinite(c.weight)) {
65
+ return;
66
+ }
67
+ this.#unprocessed.push(new Centroid(c.mean, c.weight));
68
+ this.#unprocessedWeight += c.weight;
69
+ if (this.#processed.length > this.#maxProcessed ||
70
+ this.#unprocessed.length > this.#maxUnprocessed) {
71
+ this.#process();
72
+ }
73
+ }
74
+ /**
75
+ * Merges the supplied digest into this digest. Functionally equivalent to
76
+ * calling t.AddCentroidList(t2.Centroids(nil)), but avoids making an extra
77
+ * copy of the CentroidList.
78
+ **/
79
+ merge(t2) {
80
+ t2.#process();
81
+ this.addCentroidList(t2.#processed);
82
+ }
83
+ #process() {
84
+ if (this.#unprocessed.length > 0 ||
85
+ this.#processed.length > this.#maxProcessed) {
86
+ // Append all processed centroids to the unprocessed list and sort
87
+ this.#unprocessed.push(...this.#processed);
88
+ sortCentroidList(this.#unprocessed);
89
+ // Reset processed list with first centroid
90
+ this.#processed.length = 0;
91
+ this.#processed.push(this.#unprocessed[0]);
92
+ this.#processedWeight += this.#unprocessedWeight;
93
+ this.#unprocessedWeight = 0;
94
+ let soFar = this.#unprocessed[0].weight;
95
+ let limit = this.#processedWeight * this.#integratedQ(1);
96
+ for (let i = 1; i < this.#unprocessed.length; i++) {
97
+ const centroid = this.#unprocessed[i];
98
+ const projected = soFar + centroid.weight;
99
+ if (projected <= limit) {
100
+ soFar = projected;
101
+ this.#processed[this.#processed.length - 1].add(centroid);
102
+ }
103
+ else {
104
+ const k1 = this.#integratedLocation(soFar / this.#processedWeight);
105
+ limit = this.#processedWeight * this.#integratedQ(k1 + 1);
106
+ soFar += centroid.weight;
107
+ this.#processed.push(centroid);
108
+ }
109
+ }
110
+ this.#min = Math.min(this.#min, this.#processed[0].mean);
111
+ this.#max = Math.max(this.#max, this.#processed[this.#processed.length - 1].mean);
112
+ this.#unprocessed.length = 0;
113
+ }
114
+ }
115
+ /**
116
+ * Centroids returns a copy of processed centroids.
117
+ * Useful when aggregating multiple t-digests.
118
+ *
119
+ * Centroids are appended to the passed CentroidList; if you're re-using a
120
+ * buffer, be sure to pass cl[:0].
121
+ */
122
+ centroids(cl = []) {
123
+ this.#process();
124
+ return cl.concat(this.#processed);
125
+ }
126
+ count() {
127
+ this.#process();
128
+ // this.process always updates this.processedWeight to the total count of all
129
+ // centroids, so we don't need to re-count here.
130
+ return this.#processedWeight;
131
+ }
132
+ /**
133
+ * toJSON returns a JSON-serializable representation of the digest.
134
+ * This processes the digest and returns an object with compression and centroid data.
135
+ */
136
+ toJSON() {
137
+ this.#process();
138
+ const data = [this.compression];
139
+ for (const centroid of this.#processed) {
140
+ data.push(centroid.mean, centroid.weight);
141
+ }
142
+ return data;
143
+ }
144
+ #updateCumulative() {
145
+ // Weight can only increase, so the final cumulative value will always be
146
+ // either equal to, or less than, the total weight. If they are the same,
147
+ // then nothing has changed since the last update.
148
+ if (this.#cumulative.length > 0 &&
149
+ this.#cumulative[this.#cumulative.length - 1] === this.#processedWeight) {
150
+ return;
151
+ }
152
+ const n = this.#processed.length + 1;
153
+ if (this.#cumulative.length > n) {
154
+ this.#cumulative.length = n;
155
+ }
156
+ let prev = 0;
157
+ for (let i = 0; i < this.#processed.length; i++) {
158
+ const centroid = this.#processed[i];
159
+ const cur = centroid.weight;
160
+ this.#cumulative[i] = prev + cur / 2;
161
+ prev += cur;
162
+ }
163
+ this.#cumulative[this.#processed.length] = prev;
164
+ }
165
+ // Quantile returns the (approximate) quantile of
166
+ // the distribution. Accepted values for q are between 0 and 1.
167
+ // Returns NaN if Count is zero or bad inputs.
168
+ quantile(q) {
169
+ this.#process();
170
+ this.#updateCumulative();
171
+ if (q < 0 || q > 1 || this.#processed.length === 0) {
172
+ return NaN;
173
+ }
174
+ if (this.#processed.length === 1) {
175
+ return this.#processed[0].mean;
176
+ }
177
+ const index = q * this.#processedWeight;
178
+ if (index <= this.#processed[0].weight / 2) {
179
+ return (this.#min +
180
+ ((2 * index) / this.#processed[0].weight) *
181
+ (this.#processed[0].mean - this.#min));
182
+ }
183
+ const lower = binarySearch(this.#cumulative.length, (i) => -this.#cumulative[i] + index);
184
+ if (lower + 1 !== this.#cumulative.length) {
185
+ const z1 = index - this.#cumulative[lower - 1];
186
+ const z2 = this.#cumulative[lower] - index;
187
+ return weightedAverage(this.#processed[lower - 1].mean, z2, this.#processed[lower].mean, z1);
188
+ }
189
+ const z1 = index - this.#processedWeight - this.#processed[lower - 1].weight / 2;
190
+ const z2 = this.#processed[lower - 1].weight / 2 - z1;
191
+ return weightedAverage(this.#processed[this.#processed.length - 1].mean, z1, this.#max, z2);
192
+ }
193
+ /**
194
+ * CDF returns the cumulative distribution function for a given value x.
195
+ */
196
+ cdf(x) {
197
+ this.#process();
198
+ this.#updateCumulative();
199
+ switch (this.#processed.length) {
200
+ case 0:
201
+ return 0;
202
+ case 1: {
203
+ const width = this.#max - this.#min;
204
+ if (x <= this.#min) {
205
+ return 0;
206
+ }
207
+ if (x >= this.#max) {
208
+ return 1;
209
+ }
210
+ if (x - this.#min <= width) {
211
+ // min and max are too close together to do any viable interpolation
212
+ return 0.5;
213
+ }
214
+ return (x - this.#min) / width;
215
+ }
216
+ }
217
+ if (x <= this.#min) {
218
+ return 0;
219
+ }
220
+ if (x >= this.#max) {
221
+ return 1;
222
+ }
223
+ const m0 = this.#processed[0].mean;
224
+ // Left Tail
225
+ if (x <= m0) {
226
+ if (m0 - this.#min > 0) {
227
+ return ((((x - this.#min) / (m0 - this.#min)) * this.#processed[0].weight) /
228
+ this.#processedWeight /
229
+ 2);
230
+ }
231
+ return 0;
232
+ }
233
+ // Right Tail
234
+ const mn = this.#processed[this.#processed.length - 1].mean;
235
+ if (x >= mn) {
236
+ if (this.#max - mn > 0) {
237
+ return (1 -
238
+ (((this.#max - x) / (this.#max - mn)) *
239
+ this.#processed[this.#processed.length - 1].weight) /
240
+ this.#processedWeight /
241
+ 2);
242
+ }
243
+ return 1;
244
+ }
245
+ const upper = binarySearch(this.#processed.length,
246
+ // Treat equals as greater than, so we can use the upper index
247
+ // This is equivalent to:
248
+ // i => this.#processed[i].mean > x ? -1 : 1,
249
+ i => x - this.#processed[i].mean || 1);
250
+ const z1 = x - this.#processed[upper - 1].mean;
251
+ const z2 = this.#processed[upper].mean - x;
252
+ return (weightedAverage(this.#cumulative[upper - 1], z2, this.#cumulative[upper], z1) / this.#processedWeight);
253
+ }
254
+ #integratedQ(k) {
255
+ return ((Math.sin((Math.min(k, this.compression) * Math.PI) / this.compression -
256
+ Math.PI / 2) +
257
+ 1) /
258
+ 2);
259
+ }
260
+ #integratedLocation(q) {
261
+ return (this.compression * (Math.asin(2 * q - 1) + Math.PI / 2)) / Math.PI;
262
+ }
263
+ }
264
+ // Calculate number of bytes needed for a tdigest of size c,
265
+ // where c is the compression value
266
+ export function byteSizeForCompression(comp) {
267
+ const c = comp | 0;
268
+ // // A centroid is 2 float64s, so we need 16 bytes for each centroid
269
+ // float_size := 8
270
+ // centroid_size := 2 * float_size
271
+ // // Unprocessed and processed can grow up to length c
272
+ // unprocessed_size := centroid_size * c
273
+ // processed_size := unprocessed_size
274
+ // // the cumulative field can also be of length c, but each item is a single float64
275
+ // cumulative_size := float_size * c // <- this could also be unprocessed_size / 2
276
+ // return unprocessed_size + processed_size + cumulative_size
277
+ // // or, more succinctly:
278
+ // return float_size * c * 5
279
+ // or even more succinctly
280
+ return c * 40;
281
+ }
282
+ function weightedAverage(x1, w1, x2, w2) {
283
+ if (x1 <= x2) {
284
+ return weightedAverageSorted(x1, w1, x2, w2);
285
+ }
286
+ return weightedAverageSorted(x2, w2, x1, w1);
287
+ }
288
+ function weightedAverageSorted(x1, w1, x2, w2) {
289
+ const x = (x1 * w1 + x2 * w2) / (w1 + w2);
290
+ return Math.max(x1, Math.min(x, x2));
291
+ }
292
+ function processedSize(size, compression) {
293
+ if (size === 0) {
294
+ return Math.ceil(compression) * 2;
295
+ }
296
+ return size;
297
+ }
298
+ function unprocessedSize(size, compression) {
299
+ if (size === 0) {
300
+ return Math.ceil(compression) * 8;
301
+ }
302
+ return size;
303
+ }
304
+ //# sourceMappingURL=tdigest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tdigest.js","sourceRoot":"","sources":["../../../../shared/src/tdigest.ts"],"names":[],"mappings":"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"}
package/out/solid.js CHANGED
@@ -1,12 +1,14 @@
1
- import "./chunk-C3ZE2IHA.js";
1
+ import "./chunk-JHJ3MBXW.js";
2
2
  import {
3
3
  Zero
4
- } from "./chunk-N2EOVSVB.js";
4
+ } from "./chunk-ZKRMVMWK.js";
5
+ import "./chunk-MKB4RXL3.js";
5
6
  import {
6
7
  DEFAULT_TTL_MS,
7
8
  applyChange,
8
9
  idSymbol
9
- } from "./chunk-LENWM5WE.js";
10
+ } from "./chunk-O536GEIT.js";
11
+ import "./chunk-SGW2EIVJ.js";
10
12
  import "./chunk-424PT5DM.js";
11
13
 
12
14
  // ../zero-solid/src/use-query.ts
@@ -206,7 +208,10 @@ function createZero(options) {
206
208
  }
207
209
  function useZero() {
208
210
  const zero = useContext(ZeroContext);
209
- return zero ?? (() => void 0);
211
+ if (zero === void 0) {
212
+ throw new Error("useZero must be used within a ZeroProvider");
213
+ }
214
+ return zero;
210
215
  }
211
216
  function createUseZero() {
212
217
  return () => useZero();
@@ -246,7 +251,7 @@ function useQuery(querySignal, options) {
246
251
  let view = void 0;
247
252
  createComputed(
248
253
  ([prevView, prevClientID, prevQuery, prevQueryHash, prevTtl]) => {
249
- const clientID = useZero()()?.clientID;
254
+ const { clientID } = useZero()();
250
255
  const query = querySignal();
251
256
  const queryHash = query.hash();
252
257
  const ttl = normalize(options)?.ttl ?? DEFAULT_TTL_MS;
@@ -278,10 +283,9 @@ function normalize(options) {
278
283
  import { createSignal, onCleanup as onCleanup3 } from "solid-js";
279
284
  function useZeroOnline() {
280
285
  const zero = useZero()();
281
- const [online, setOnline] = createSignal(zero?.online ?? false);
282
- const unsubscribe = zero?.onOnline(setOnline);
283
- onCleanup3(unsubscribe ?? (() => {
284
- }));
286
+ const [online, setOnline] = createSignal(zero.online);
287
+ const unsubscribe = zero.onOnline(setOnline);
288
+ onCleanup3(unsubscribe);
285
289
  return online;
286
290
  }
287
291
  export {
package/out/solid.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../zero-solid/src/use-query.ts", "../../zero-solid/src/solid-view.ts", "../../zero-solid/src/use-zero.ts", "../../zero-solid/src/use-zero-online.ts"],
4
- "sourcesContent": ["import {createComputed, onCleanup, type Accessor} from 'solid-js';\nimport {createStore} from 'solid-js/store';\nimport {\n type ClientID,\n type HumanReadable,\n type Query,\n type Schema,\n type TTL,\n} from '../../zero/src/zero.ts';\nimport {DEFAULT_TTL_MS} from '../../zql/src/query/ttl.ts';\nimport {\n createSolidViewFactory,\n UNKNOWN,\n type QueryResultDetails,\n type SolidView,\n type State,\n} from './solid-view.ts';\nimport {useZero} from './use-zero.ts';\n\nexport type QueryResult<TReturn> = readonly [\n Accessor<HumanReadable<TReturn>>,\n Accessor<QueryResultDetails>,\n];\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode UseQueryOptions} instead.\n */\nexport type CreateQueryOptions = {\n ttl?: TTL | undefined;\n};\n\nexport type UseQueryOptions = {\n ttl?: TTL | undefined;\n};\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode useQuery} instead.\n */\nexport function createQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: Accessor<Query<TSchema, TTable, TReturn>>,\n options?: CreateQueryOptions | Accessor<CreateQueryOptions>,\n): QueryResult<TReturn> {\n return useQuery(querySignal, options);\n}\n\nexport function useQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: Accessor<Query<TSchema, TTable, TReturn>>,\n options?: UseQueryOptions | Accessor<UseQueryOptions>,\n): QueryResult<TReturn> {\n const [state, setState] = createStore<State>([\n {\n '': undefined,\n },\n UNKNOWN,\n ]);\n\n let view: SolidView | undefined = undefined;\n // Wrap in in createComputed to ensure a new view is created if the querySignal changes.\n createComputed<\n [\n SolidView | undefined,\n ClientID | undefined,\n Query<TSchema, TTable, TReturn> | undefined,\n string | undefined,\n TTL | undefined,\n ]\n >(\n ([prevView, prevClientID, prevQuery, prevQueryHash, prevTtl]) => {\n const clientID = useZero()()?.clientID;\n const query = querySignal();\n const queryHash = query.hash();\n const ttl = normalize(options)?.ttl ?? DEFAULT_TTL_MS;\n if (\n !prevView ||\n clientID !== prevClientID ||\n (query !== prevQuery &&\n (clientID === undefined || query.hash() !== prevQueryHash))\n ) {\n if (prevView) {\n prevView.destroy();\n }\n view = query.materialize(createSolidViewFactory(setState), ttl);\n } else {\n view = prevView;\n if (ttl !== prevTtl) {\n view.updateTTL(ttl);\n }\n }\n\n return [view, clientID, query, queryHash, ttl];\n },\n [undefined, undefined, undefined, undefined, undefined],\n );\n\n onCleanup(() => {\n view?.destroy();\n });\n\n return [() => state[0][''] as HumanReadable<TReturn>, () => state[1]];\n}\n\nfunction normalize<T>(\n options?: T | Accessor<T | undefined> | undefined,\n): T | undefined {\n return typeof options === 'function' ? (options as Accessor<T>)() : options;\n}\n", "import {produce, reconcile, type SetStoreFunction} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type Input,\n type Node,\n type Output,\n type Query,\n type ResultType,\n type Schema,\n type Stream,\n type TTL,\n type ViewChange,\n type ViewFactory,\n} from '../../zero-client/src/mod.js';\nimport {idSymbol} from '../../zql/src/ivm/view-apply-change.ts';\n\nexport type QueryResultDetails = {\n readonly type: ResultType;\n};\n\nexport type State = [Entry, QueryResultDetails];\n\nexport const COMPLETE: QueryResultDetails = Object.freeze({type: 'complete'});\nexport const UNKNOWN: QueryResultDetails = Object.freeze({type: 'unknown'});\n\nexport class SolidView implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n readonly #updateTTL: (ttl: TTL) => void;\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n setState: SetStoreFunction<State>,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#updateTTL = updateTTL;\n\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n input.fetch({}),\n node => ({type: 'add', node}),\n initialRoot,\n );\n\n this.#setState = setState;\n this.#setState(\n reconcile([initialRoot, queryComplete === true ? COMPLETE : UNKNOWN], {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true) {\n void queryComplete.then(() => {\n this.#setState(prev => [prev[0], COMPLETE]);\n });\n }\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n #onTransactionCommit = () => {\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(\n 0,\n reconcile(builderRoot, {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n this.#setState(prev => [builderRoot, prev[1]]);\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n };\n\n push(change: Change): void {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(change, this.#builderRoot);\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(\n root,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n true /* withIDs */,\n );\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n\n updateTTL(ttl: TTL): void {\n this.#updateTTL(ttl);\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change.type) {\n case 'add':\n return {type: 'add', node: materializeNodeRelationships(change.node)};\n case 'remove':\n return {type: 'remove', node: materializeNodeRelationships(change.node)};\n case 'child':\n return {\n type: 'child',\n node: {row: change.node.row},\n child: {\n relationshipName: change.child.relationshipName,\n change: materializeRelationships(change.child.change),\n },\n };\n case 'edit':\n return {\n type: 'edit',\n node: {row: change.node.row},\n oldNode: {row: change.oldNode.row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of node.relationships[relationship]()) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function createSolidViewFactory(setState: SetStoreFunction<State>) {\n function solidViewFactory<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n >(\n _query: Query<TSchema, TTable, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n ) {\n return new SolidView(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n updateTTL,\n setState,\n );\n }\n\n solidViewFactory satisfies ViewFactory<Schema, string, unknown, unknown>;\n\n return solidViewFactory;\n}\n", "import {\n batch,\n createContext,\n createMemo,\n onCleanup,\n splitProps,\n useContext,\n type Accessor,\n type JSX,\n} from 'solid-js';\nimport {\n Zero,\n type CustomMutatorDefs,\n type Schema,\n type ZeroOptions,\n} from '../../zero/src/zero.ts';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any\nconst ZeroContext = createContext<Accessor<Zero<any, any>> | undefined>(\n undefined,\n);\n\nexport function createZero<S extends Schema, MD extends CustomMutatorDefs<S>>(\n options: ZeroOptions<S, MD>,\n): Zero<S, MD> {\n const opts = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n\nexport function useZero<\n S extends Schema,\n MD extends CustomMutatorDefs<S> | undefined = undefined,\n>(): () => Zero<S, MD> | undefined {\n const zero = useContext(ZeroContext);\n\n // TODO: uncomment when we require ZeroProvider in a future release.\n // if (zero === undefined) {\n // throw new Error('useZero must be used within a ZeroProvider');\n // }\n return zero ?? (() => undefined);\n}\n\nexport function createUseZero<\n S extends Schema,\n MD extends CustomMutatorDefs<S> | undefined = undefined,\n>() {\n return () => useZero<S, MD>();\n}\n\nexport function ZeroProvider<\n S extends Schema,\n MD extends CustomMutatorDefs<S> | undefined = undefined,\n>(\n props: {children: JSX.Element} & (\n | {\n zero: Zero<S, MD>;\n }\n | ZeroOptions<S, MD>\n ),\n) {\n const zero = createMemo(() => {\n if ('zero' in props) {\n return props.zero;\n }\n const [, options] = splitProps(props, ['children']);\n const createdZero = new Zero({\n ...options,\n batchViewUpdates: batch,\n });\n onCleanup(() => createdZero.close());\n return createdZero;\n });\n\n return ZeroContext.Provider({\n value: zero,\n get children() {\n return props.children;\n },\n });\n}\n", "import {createSignal, onCleanup, type Accessor} from 'solid-js';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the online status of the current Zero instance.\n *\n * @returns An accessor \u2014 call `online()` to get a reactive `boolean`.\n *\n * @example\n * const online = useZeroOnline();\n *\n * <span>\n * {online() ? 'Online' : 'Offline'}\n * </span>\n */\nexport function useZeroOnline(): Accessor<boolean> {\n const zero = useZero()();\n\n const [online, setOnline] = createSignal<boolean>(zero?.online ?? false);\n\n const unsubscribe = zero?.onOnline(setOnline);\n\n onCleanup(unsubscribe ?? (() => {}));\n\n return online;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {createComputed, onCleanup, type Accessor} from 'solid-js';\nimport {createStore} from 'solid-js/store';\nimport {\n type ClientID,\n type HumanReadable,\n type Query,\n type Schema,\n type TTL,\n} from '../../zero/src/zero.ts';\nimport {DEFAULT_TTL_MS} from '../../zql/src/query/ttl.ts';\nimport {\n createSolidViewFactory,\n UNKNOWN,\n type QueryResultDetails,\n type SolidView,\n type State,\n} from './solid-view.ts';\nimport {useZero} from './use-zero.ts';\n\nexport type QueryResult<TReturn> = readonly [\n Accessor<HumanReadable<TReturn>>,\n Accessor<QueryResultDetails>,\n];\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode UseQueryOptions} instead.\n */\nexport type CreateQueryOptions = {\n ttl?: TTL | undefined;\n};\n\nexport type UseQueryOptions = {\n ttl?: TTL | undefined;\n};\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode useQuery} instead.\n */\nexport function createQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: Accessor<Query<TSchema, TTable, TReturn>>,\n options?: CreateQueryOptions | Accessor<CreateQueryOptions>,\n): QueryResult<TReturn> {\n return useQuery(querySignal, options);\n}\n\nexport function useQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n querySignal: Accessor<Query<TSchema, TTable, TReturn>>,\n options?: UseQueryOptions | Accessor<UseQueryOptions>,\n): QueryResult<TReturn> {\n const [state, setState] = createStore<State>([\n {\n '': undefined,\n },\n UNKNOWN,\n ]);\n\n let view: SolidView | undefined = undefined;\n // Wrap in in createComputed to ensure a new view is created if the querySignal changes.\n createComputed<\n [\n SolidView | undefined,\n ClientID | undefined,\n Query<TSchema, TTable, TReturn> | undefined,\n string | undefined,\n TTL | undefined,\n ]\n >(\n ([prevView, prevClientID, prevQuery, prevQueryHash, prevTtl]) => {\n const {clientID} = useZero()();\n const query = querySignal();\n const queryHash = query.hash();\n const ttl = normalize(options)?.ttl ?? DEFAULT_TTL_MS;\n if (\n !prevView ||\n clientID !== prevClientID ||\n (query !== prevQuery &&\n (clientID === undefined || query.hash() !== prevQueryHash))\n ) {\n if (prevView) {\n prevView.destroy();\n }\n view = query.materialize(createSolidViewFactory(setState), ttl);\n } else {\n view = prevView;\n if (ttl !== prevTtl) {\n view.updateTTL(ttl);\n }\n }\n\n return [view, clientID, query, queryHash, ttl];\n },\n [undefined, undefined, undefined, undefined, undefined],\n );\n\n onCleanup(() => {\n view?.destroy();\n });\n\n return [() => state[0][''] as HumanReadable<TReturn>, () => state[1]];\n}\n\nfunction normalize<T>(\n options?: T | Accessor<T | undefined> | undefined,\n): T | undefined {\n return typeof options === 'function' ? (options as Accessor<T>)() : options;\n}\n", "import {produce, reconcile, type SetStoreFunction} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type Input,\n type Node,\n type Output,\n type Query,\n type ResultType,\n type Schema,\n type Stream,\n type TTL,\n type ViewChange,\n type ViewFactory,\n} from '../../zero-client/src/mod.js';\nimport {idSymbol} from '../../zql/src/ivm/view-apply-change.ts';\n\nexport type QueryResultDetails = {\n readonly type: ResultType;\n};\n\nexport type State = [Entry, QueryResultDetails];\n\nexport const COMPLETE: QueryResultDetails = Object.freeze({type: 'complete'});\nexport const UNKNOWN: QueryResultDetails = Object.freeze({type: 'unknown'});\n\nexport class SolidView implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n readonly #updateTTL: (ttl: TTL) => void;\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n setState: SetStoreFunction<State>,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#updateTTL = updateTTL;\n\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n input.fetch({}),\n node => ({type: 'add', node}),\n initialRoot,\n );\n\n this.#setState = setState;\n this.#setState(\n reconcile([initialRoot, queryComplete === true ? COMPLETE : UNKNOWN], {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true) {\n void queryComplete.then(() => {\n this.#setState(prev => [prev[0], COMPLETE]);\n });\n }\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n #onTransactionCommit = () => {\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(\n 0,\n reconcile(builderRoot, {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n this.#setState(prev => [builderRoot, prev[1]]);\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n };\n\n push(change: Change): void {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(change, this.#builderRoot);\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(\n root,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n true /* withIDs */,\n );\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n\n updateTTL(ttl: TTL): void {\n this.#updateTTL(ttl);\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change.type) {\n case 'add':\n return {type: 'add', node: materializeNodeRelationships(change.node)};\n case 'remove':\n return {type: 'remove', node: materializeNodeRelationships(change.node)};\n case 'child':\n return {\n type: 'child',\n node: {row: change.node.row},\n child: {\n relationshipName: change.child.relationshipName,\n change: materializeRelationships(change.child.change),\n },\n };\n case 'edit':\n return {\n type: 'edit',\n node: {row: change.node.row},\n oldNode: {row: change.oldNode.row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of node.relationships[relationship]()) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function createSolidViewFactory(setState: SetStoreFunction<State>) {\n function solidViewFactory<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n >(\n _query: Query<TSchema, TTable, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n ) {\n return new SolidView(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n updateTTL,\n setState,\n );\n }\n\n solidViewFactory satisfies ViewFactory<Schema, string, unknown, unknown>;\n\n return solidViewFactory;\n}\n", "import {\n batch,\n createContext,\n createMemo,\n onCleanup,\n splitProps,\n useContext,\n type Accessor,\n type JSX,\n} from 'solid-js';\nimport {\n Zero,\n type CustomMutatorDefs,\n type Schema,\n type ZeroOptions,\n} from '../../zero/src/zero.ts';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any\nconst ZeroContext = createContext<Accessor<Zero<any, any>> | undefined>(\n undefined,\n);\n\nexport function createZero<S extends Schema, MD extends CustomMutatorDefs>(\n options: ZeroOptions<S, MD>,\n): Zero<S, MD> {\n const opts = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n\nexport function useZero<\n S extends Schema,\n MD extends CustomMutatorDefs | undefined = undefined,\n>(): () => Zero<S, MD> {\n const zero = useContext(ZeroContext);\n\n if (zero === undefined) {\n throw new Error('useZero must be used within a ZeroProvider');\n }\n return zero;\n}\n\nexport function createUseZero<\n S extends Schema,\n MD extends CustomMutatorDefs | undefined = undefined,\n>() {\n return () => useZero<S, MD>();\n}\n\nexport function ZeroProvider<\n S extends Schema,\n MD extends CustomMutatorDefs | undefined = undefined,\n>(\n props: {children: JSX.Element} & (\n | {\n zero: Zero<S, MD>;\n }\n | ZeroOptions<S, MD>\n ),\n) {\n const zero = createMemo(() => {\n if ('zero' in props) {\n return props.zero;\n }\n const [, options] = splitProps(props, ['children']);\n const createdZero = new Zero({\n ...options,\n batchViewUpdates: batch,\n });\n onCleanup(() => createdZero.close());\n return createdZero;\n });\n\n return ZeroContext.Provider({\n value: zero,\n get children() {\n return props.children;\n },\n });\n}\n", "import {createSignal, onCleanup, type Accessor} from 'solid-js';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the online status of the current Zero instance.\n *\n * @returns An accessor \u2014 call `online()` to get a reactive `boolean`.\n *\n * @example\n * const online = useZeroOnline();\n *\n * <span>\n * {online() ? 'Online' : 'Offline'}\n * </span>\n */\nexport function useZeroOnline(): Accessor<boolean> {\n const zero = useZero()();\n\n const [online, setOnline] = createSignal<boolean>(zero.online);\n\n const unsubscribe = zero.onOnline(setOnline);\n\n onCleanup(unsubscribe);\n\n return online;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["onCleanup", "onCleanup", "onCleanup", "onCleanup"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocicorp/zero",
3
- "version": "0.22.2025081301",
3
+ "version": "0.23.2025081400",
4
4
  "description": "Zero is a web framework for serverless web development.",
5
5
  "author": "Rocicorp, Inc.",
6
6
  "repository": {
@@ -38,9 +38,7 @@
38
38
  "@opentelemetry/api": "^1.9.0",
39
39
  "@opentelemetry/api-logs": "^0.203.0",
40
40
  "@opentelemetry/auto-instrumentations-node": "^0.62.0",
41
- "@opentelemetry/exporter-logs-otlp-http": "^0.203.0",
42
41
  "@opentelemetry/exporter-metrics-otlp-http": "^0.203.0",
43
- "@opentelemetry/exporter-trace-otlp-http": "^0.203.0",
44
42
  "@opentelemetry/resources": "^2.0.1",
45
43
  "@opentelemetry/sdk-metrics": "^2.0.1",
46
44
  "@opentelemetry/sdk-node": "^0.203.0",
@@ -55,6 +53,7 @@
55
53
  "chalk": "^5.3.0",
56
54
  "chalk-template": "^1.1.0",
57
55
  "chokidar": "^4.0.1",
56
+ "cloudevents": "^10.0.0",
58
57
  "command-line-args": "^6.0.1",
59
58
  "command-line-usage": "^7.0.3",
60
59
  "compare-utf8": "^0.1.1",
@@ -89,11 +88,13 @@
89
88
  "vitest": "3.2.4",
90
89
  "zero-client": "0.0.0",
91
90
  "zqlite": "0.0.0",
91
+ "zero-events": "0.0.0",
92
92
  "zero-solid": "0.0.0",
93
93
  "zero-pg": "0.0.0",
94
94
  "zero-react": "0.0.0",
95
95
  "zero-server": "0.0.0",
96
- "zero-cache": "0.0.0"
96
+ "zero-cache": "0.0.0",
97
+ "zero-expo": "0.0.0"
97
98
  },
98
99
  "type": "module",
99
100
  "main": "out/zero.js",
@@ -135,6 +136,10 @@
135
136
  "./zqlite": {
136
137
  "types": "./out/zqlite/src/mod.d.ts",
137
138
  "default": "./out/zero/src/zqlite.js"
139
+ },
140
+ "./expo": {
141
+ "types": "./out/zero-expo/src/mod.d.ts",
142
+ "default": "./out/expo.js"
138
143
  }
139
144
  },
140
145
  "bin": {
@@ -0,0 +1,2 @@
1
+ export * from '../../zero-expo/src/mod.ts';
2
+ //# sourceMappingURL=expo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/expo.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"zero-cache-dev.js","sourceRoot":"","sources":["../../../src/zero-cache-dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zero-cache-dev.js","sourceRoot":"","sources":["../../../src/zero-cache-dev.ts"],"names":[],"mappings":";AACA,+BAA+B;AAE/B,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAC,KAAK,EAAoB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,WAAW,GACZ,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,6CAA6C,CAAC;AAErF,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,SAAS,WAAW,CAAC,YAAsC;IACzD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,QAAQ,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kDAAkD;IAClD,0DAA0D;IAC1D,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,EAAC,MAAM,EAAC,GAAG,oBAAoB,CACnC;QACE,GAAG,wBAAwB;QAC3B,GAAG,WAAW;KACf,EACD;QACE,aAAa,EAAE,mBAAmB;QAClC,wEAAwE;QACxE,YAAY,EAAE,IAAI,EAAE,sCAAsC;KAC3D,CACF,CAAC;IAEF,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE;QACxC,EAAE,CAAC,KAAK,EAAE,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;QACtD,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,EAAC,OAAO,EAAE,aAAa,EAAC,GAAG,oBAAoB,CACnD,wBAAwB,EACxB,EAAC,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAC,CACzD,CAAC;IAEF,MAAM,EAAC,OAAO,EAAE,qBAAqB,EAAC,GAAG,oBAAoB,CAAC,WAAW,EAAE;QACzE,aAAa,EAAE,mBAAmB;QAClC,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,kBAA4C,CAAC;IACjD,IAAI,gBAA0C,CAAC;IAE/C,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,iBAAiB;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClC,EAAE,CAAC,IAAI,EAAE,CACP,uCAAuC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CACvE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACtC,kBAAkB,GAAG,SAAS,CAAC;QAE/B,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,uBAAuB,GAAG,CAAC,CAAC;QACjD,kBAAkB,GAAG,KAAK,CACxB,uBAAuB,EACvB,qBAAqB,IAAI,EAAE,EAC3B;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CACF,CAAC;QAEF,MAAM,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,GAAG,QAAQ,EAAU,CAAC;QACpD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,uBAAuB,0BAA0B,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,KAAK,EAAE,CAAC,qCAAqC,IAAI,GAAG,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,UAAU,kCAAkC;QAC/C,gBAAgB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACpC,gBAAgB,GAAG,SAAS,CAAC;QAE7B,IAAI,MAAM,iBAAiB,EAAE,EAAE,CAAC;YAC9B,EAAE,CAAC,IAAI,EAAE,CACP,WAAW,eAAe,6BAA6B,MAAM,CAAC,IAAI,IAAI,CACvE,CAAC;YACF,MAAM,GAAG,GAAsB;gBAC7B,sEAAsE;gBACtE,sCAAsC;gBACtC,CAAC,uBAAuB,CAAC,EAAE,GAAG;gBAC9B,CAAC,oBAAoB,CAAC,EAAE,GAAG;gBAC3B,CAAC,yBAAyB,CAAC,EAAE,GAAG;gBAChC,4DAA4D;gBAC5D,GAAG,OAAO,CAAC,GAAG;aACf,CAAC;YACF,gBAAgB,GAAG,KAAK,CAAC,eAAe,EAAE,aAAa,IAAI,EAAE,EAAE;gBAC7D,GAAG;gBACH,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,eAAe,mBAAmB,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,kCAAkC,EAAE,CAAC;IAE3C,yBAAyB;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;QAC1B,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,EAAC,kBAAkB,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAC;KAC/D,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;QAC9B,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;QACtC,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-authorizer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/write-authorizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAcrC,OAAO,KAAK,EACV,MAAM,EAIN,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAU5C,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AAMnD,OAAO,KAAK,EAAY,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAmBpE,MAAM,WAAW,eAAe;IAC9B,cAAc,CACZ,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,eAAe,CACb,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,iBAAiB,IAAI,IAAI,CAAC;IAC1B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;CAC1D;AAED,qBAAa,mBAAoB,YAAW,eAAe;;gBAgBvD,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM;IAyBd,iBAAiB;IASjB,OAAO;IAID,cAAc,CAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IAsB5B,eAAe,CACnB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IA6DlC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;CA0SzD"}
1
+ {"version":3,"file":"write-authorizer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/auth/write-authorizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAcrC,OAAO,KAAK,EACV,MAAM,EAIN,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAW5C,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAC;AAMnD,OAAO,KAAK,EAAY,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAiBpE,MAAM,WAAW,eAAe;IAC9B,cAAc,CACZ,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,eAAe,CACb,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,iBAAiB,IAAI,IAAI,CAAC;IAC1B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;CAC1D;AAED,qBAAa,mBAAoB,YAAW,eAAe;;gBAgBvD,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM;IA0Bd,iBAAiB;IASjB,OAAO;IAID,cAAc,CAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IAsB5B,eAAe,CACnB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;IA6DlC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;CA0SzD"}
@@ -8,6 +8,7 @@ import { randInt } from "../../../shared/src/rand.js";
8
8
  import * as v from "../../../shared/src/valita.js";
9
9
  import { primaryKeyValueSchema, } from "../../../zero-protocol/src/primary-key.js";
10
10
  import { bindStaticParameters, buildPipeline, } from "../../../zql/src/builder/builder.js";
11
+ import { simplifyCondition } from "../../../zql/src/query/expression.js";
11
12
  import { StaticQuery, staticQuery } from "../../../zql/src/query/static-query.js";
12
13
  import { Database } from "../../../zqlite/src/db.js";
13
14
  import { compile, sql } from "../../../zqlite/src/internal/sql.js";
@@ -17,7 +18,6 @@ import { StatementRunner } from "../db/statements.js";
17
18
  import { DatabaseStorage, } from "../services/view-syncer/database-storage.js";
18
19
  import { mapLiteDataTypeToZqlSchemaValue } from "../types/lite.js";
19
20
  import { getSchema, reloadPermissionsIfChanged, } from "./load-permissions.js";
20
- import { simplifyCondition } from "../../../zql/src/query/expression.js";
21
21
  export class WriteAuthorizerImpl {
22
22
  #schema;
23
23
  #replica;
@@ -44,6 +44,7 @@ export class WriteAuthorizerImpl {
44
44
  this.#builderDelegate = {
45
45
  getSource: name => this.#getSource(name),
46
46
  createStorage: () => this.#cgStorage.createStorage(),
47
+ decorateSourceInput: input => input,
47
48
  decorateInput: input => input,
48
49
  decorateFilterInput: input => input,
49
50
  };
@@ -326,7 +327,7 @@ export class WriteAuthorizerImpl {
326
327
  // call the compiler directly
327
328
  // run the sql against upstream.
328
329
  // remove the collecting into json? just need to know if a row comes back.
329
- const input = buildPipeline(rowQueryAst, this.#builderDelegate);
330
+ const input = buildPipeline(rowQueryAst, this.#builderDelegate, 'query-id');
330
331
  try {
331
332
  const res = input.fetch({});
332
333
  for (const _ of res) {