@rocicorp/zero 0.24.2025091200 → 0.24.2025092400

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 (174) hide show
  1. package/out/analyze-query/src/bin-analyze.js +7 -8
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/explain-queries.d.ts +1 -1
  4. package/out/analyze-query/src/explain-queries.d.ts.map +1 -1
  5. package/out/analyze-query/src/run-ast.d.ts +13 -23
  6. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  7. package/out/analyze-query/src/run-ast.js +25 -20
  8. package/out/analyze-query/src/run-ast.js.map +1 -1
  9. package/out/{chunk-6XNI6IVJ.js → chunk-5JTC5G4I.js} +48 -34
  10. package/out/chunk-5JTC5G4I.js.map +7 -0
  11. package/out/{chunk-KXV3BZ4U.js → chunk-OQGMEB3H.js} +3 -3
  12. package/out/{chunk-K5ZSWG54.js → chunk-QZPMFA73.js} +841 -327
  13. package/out/chunk-QZPMFA73.js.map +7 -0
  14. package/out/{inspector-ZZSIUMBB.js → lazy-inspector-TOTYUTBC.js} +286 -249
  15. package/out/lazy-inspector-TOTYUTBC.js.map +7 -0
  16. package/out/react-native.js +1 -1
  17. package/out/react-native.js.map +2 -2
  18. package/out/react.js +2 -2
  19. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  20. package/out/replicache/src/process-scheduler.d.ts.map +1 -1
  21. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  22. package/out/shared/src/sentinels.d.ts +2 -0
  23. package/out/shared/src/sentinels.d.ts.map +1 -1
  24. package/out/shared/src/sentinels.js +7 -0
  25. package/out/shared/src/sentinels.js.map +1 -0
  26. package/out/shared/src/valita.js +1 -1
  27. package/out/shared/src/valita.js.map +1 -1
  28. package/out/solid.js +3 -3
  29. package/out/zero/package.json +4 -4
  30. package/out/zero-cache/src/config/network.d.ts.map +1 -1
  31. package/out/zero-cache/src/config/network.js +1 -2
  32. package/out/zero-cache/src/config/network.js.map +1 -1
  33. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +1 -0
  34. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
  35. package/out/zero-cache/src/server/anonymous-otel-start.js +18 -0
  36. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  37. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  38. package/out/zero-cache/src/server/inspector-delegate.js +7 -6
  39. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  40. package/out/zero-cache/src/server/reaper.d.ts.map +1 -1
  41. package/out/zero-cache/src/server/reaper.js +8 -0
  42. package/out/zero-cache/src/server/reaper.js.map +1 -1
  43. package/out/zero-cache/src/services/analyze.d.ts +8 -0
  44. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/analyze.js +103 -33
  46. package/out/zero-cache/src/services/analyze.js.map +1 -1
  47. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +3 -1
  48. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  49. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  50. package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -0
  51. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  52. package/out/zero-cache/src/services/mutagen/pusher.d.ts +28 -0
  53. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  54. package/out/zero-cache/src/services/replicator/change-processor.js +1 -1
  55. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  56. package/out/zero-cache/src/services/replicator/incremental-sync.js +2 -2
  57. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  58. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +16 -0
  59. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +1 -0
  60. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +50 -0
  61. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -0
  62. package/out/zero-cache/src/services/view-syncer/client-schema.js +1 -1
  63. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  64. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +21 -5
  66. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  67. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +1 -1
  68. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  69. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +2 -3
  70. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  71. package/out/zero-cache/src/services/view-syncer/view-syncer.js +12 -0
  72. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  73. package/out/zero-client/src/client/inspector/client-group.d.ts +12 -0
  74. package/out/zero-client/src/client/inspector/client-group.d.ts.map +1 -0
  75. package/out/zero-client/src/client/inspector/client.d.ts +15 -0
  76. package/out/zero-client/src/client/inspector/client.d.ts.map +1 -0
  77. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts +5 -0
  78. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -0
  79. package/out/zero-client/src/client/inspector/inspector.d.ts +14 -18
  80. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  81. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +49 -0
  82. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -0
  83. package/out/zero-client/src/client/inspector/query.d.ts +31 -0
  84. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -0
  85. package/out/zero-client/src/client/options.d.ts +8 -4
  86. package/out/zero-client/src/client/options.d.ts.map +1 -1
  87. package/out/zero-client/src/client/zero.d.ts +4 -4
  88. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  89. package/out/zero-client/src/mod.d.ts +4 -1
  90. package/out/zero-client/src/mod.d.ts.map +1 -1
  91. package/out/zero-protocol/src/analyze-query-result.d.ts +22 -0
  92. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -0
  93. package/out/zero-protocol/src/analyze-query-result.js +18 -0
  94. package/out/zero-protocol/src/analyze-query-result.js.map +1 -0
  95. package/out/zero-protocol/src/ast.d.ts +2 -0
  96. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  97. package/out/zero-protocol/src/ast.js +2 -0
  98. package/out/zero-protocol/src/ast.js.map +1 -1
  99. package/out/zero-protocol/src/down.d.ts +15 -0
  100. package/out/zero-protocol/src/down.d.ts.map +1 -1
  101. package/out/zero-protocol/src/inspect-down.d.ts +47 -0
  102. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  103. package/out/zero-protocol/src/inspect-down.js +6 -1
  104. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  105. package/out/zero-protocol/src/inspect-up.d.ts +34 -0
  106. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  107. package/out/zero-protocol/src/inspect-up.js +11 -1
  108. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  109. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  110. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  111. package/out/zero-protocol/src/protocol-version.js +3 -1
  112. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  113. package/out/zero-protocol/src/up.d.ts +9 -0
  114. package/out/zero-protocol/src/up.d.ts.map +1 -1
  115. package/out/zero.js +3 -3
  116. package/out/zql/src/builder/builder.d.ts.map +1 -1
  117. package/out/zql/src/builder/builder.js +23 -11
  118. package/out/zql/src/builder/builder.js.map +1 -1
  119. package/out/zql/src/builder/debug-delegate.d.ts +2 -5
  120. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  121. package/out/zql/src/builder/debug-delegate.js +1 -0
  122. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  123. package/out/zql/src/ivm/constraint.js +1 -1
  124. package/out/zql/src/ivm/constraint.js.map +1 -1
  125. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  126. package/out/zql/src/ivm/fan-in.js +3 -92
  127. package/out/zql/src/ivm/fan-in.js.map +1 -1
  128. package/out/zql/src/ivm/fan-out.js +2 -2
  129. package/out/zql/src/ivm/fan-out.js.map +1 -1
  130. package/out/zql/src/ivm/flipped-join.d.ts +33 -0
  131. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -0
  132. package/out/zql/src/ivm/flipped-join.js +341 -0
  133. package/out/zql/src/ivm/flipped-join.js.map +1 -0
  134. package/out/zql/src/ivm/join-utils.d.ts +14 -0
  135. package/out/zql/src/ivm/join-utils.d.ts.map +1 -0
  136. package/out/zql/src/ivm/join-utils.js +94 -0
  137. package/out/zql/src/ivm/join-utils.js.map +1 -0
  138. package/out/zql/src/ivm/join.d.ts +1 -1
  139. package/out/zql/src/ivm/join.d.ts.map +1 -1
  140. package/out/zql/src/ivm/join.js +3 -101
  141. package/out/zql/src/ivm/join.js.map +1 -1
  142. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  143. package/out/zql/src/ivm/memory-source.js +15 -4
  144. package/out/zql/src/ivm/memory-source.js.map +1 -1
  145. package/out/zql/src/ivm/push-accumulated.d.ts +88 -0
  146. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -0
  147. package/out/zql/src/ivm/push-accumulated.js +326 -0
  148. package/out/zql/src/ivm/push-accumulated.js.map +1 -0
  149. package/out/zql/src/query/expression.d.ts +3 -3
  150. package/out/zql/src/query/expression.d.ts.map +1 -1
  151. package/out/zql/src/query/expression.js +1 -1
  152. package/out/zql/src/query/expression.js.map +1 -1
  153. package/out/zql/src/query/query-impl.d.ts +3 -4
  154. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  155. package/out/zql/src/query/query-impl.js +12 -5
  156. package/out/zql/src/query/query-impl.js.map +1 -1
  157. package/out/zql/src/query/query.d.ts +6 -3
  158. package/out/zql/src/query/query.d.ts.map +1 -1
  159. package/out/zql/src/query/query.js.map +1 -1
  160. package/out/zqlite/src/db.d.ts +1 -1
  161. package/out/zqlite/src/db.d.ts.map +1 -1
  162. package/out/zqlite/src/db.js +3 -3
  163. package/out/zqlite/src/db.js.map +1 -1
  164. package/out/zqlite/src/table-source.d.ts +0 -1
  165. package/out/zqlite/src/table-source.d.ts.map +1 -1
  166. package/out/zqlite/src/table-source.js +4 -5
  167. package/out/zqlite/src/table-source.js.map +1 -1
  168. package/package.json +4 -4
  169. package/out/chunk-6XNI6IVJ.js.map +0 -7
  170. package/out/chunk-K5ZSWG54.js.map +0 -7
  171. package/out/inspector-ZZSIUMBB.js.map +0 -7
  172. package/out/zero-client/src/client/inspector/types.d.ts +0 -50
  173. package/out/zero-client/src/client/inspector/types.d.ts.map +0 -1
  174. /package/out/{chunk-KXV3BZ4U.js.map → chunk-OQGMEB3H.js.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import {
2
+ Client,
2
3
  ENTITIES_KEY_PREFIX,
3
4
  Latest,
4
5
  SUBQ_PREFIX,
@@ -6,6 +7,7 @@ import {
6
7
  getClient,
7
8
  getClientGroup,
8
9
  getClients,
10
+ inspectAnalyzeQueryDownSchema,
9
11
  inspectAuthenticatedDownSchema,
10
12
  inspectMetricsDownSchema,
11
13
  inspectQueriesDownSchema,
@@ -18,13 +20,88 @@ import {
18
20
  test,
19
21
  valita_exports,
20
22
  withRead
21
- } from "./chunk-K5ZSWG54.js";
23
+ } from "./chunk-QZPMFA73.js";
22
24
  import {
23
25
  assert,
24
26
  unreachable
25
27
  } from "./chunk-SGW2EIVJ.js";
26
28
  import "./chunk-424PT5DM.js";
27
29
 
30
+ // ../zero-client/src/client/inspector/html-dialog-prompt.ts
31
+ function canUseHTMLDialog() {
32
+ try {
33
+ if (typeof globalThis !== "undefined" && "__vitest_worker__" in globalThis) {
34
+ return false;
35
+ }
36
+ return typeof document !== "undefined" && typeof document.createElement === "function" && typeof HTMLDialogElement !== "undefined" && document.body !== null && // Make sure we can actually create a dialog element
37
+ document.createElement("dialog") instanceof HTMLDialogElement;
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+ function createHTMLPasswordPrompt(message) {
43
+ if (!canUseHTMLDialog()) {
44
+ return Promise.resolve(prompt(message));
45
+ }
46
+ return new Promise((resolve) => {
47
+ const reset = "all:revert;";
48
+ const w = "rgba(255,255,255,";
49
+ const white = w + "1)";
50
+ const whiteTransp = w + "0.4)";
51
+ const r1 = "0.25rem";
52
+ const font = `font-family:system-ui,sans-serif;color:${white};`;
53
+ const btnBase = `${reset}${font}cursor:pointer;font-size:1rem;font-weight:500;border:none;padding:0.4rem 0.75rem;border-radius:${r1};background:`;
54
+ const dialog = document.createElement("dialog");
55
+ dialog.style.cssText = `${reset}${font}background:rgba(0,0,0,0.95);padding:2rem;border:1px solid ${whiteTransp};border-radius:0.5rem;`;
56
+ dialog.addEventListener("keydown", (e) => {
57
+ e.stopPropagation();
58
+ });
59
+ dialog.oncancel = () => {
60
+ dialog.remove();
61
+ resolve(null);
62
+ };
63
+ const form = document.createElement("form");
64
+ form.method = "dialog";
65
+ form.style.cssText = `${reset}margin:0;`;
66
+ const messagePara = document.createElement("p");
67
+ messagePara.style.cssText = `${reset}${font}font-size:1.5rem;margin:0 0 1rem 0;`;
68
+ messagePara.append(message);
69
+ const passwordInput = document.createElement("input");
70
+ passwordInput.type = "password";
71
+ passwordInput.placeholder = "Admin password";
72
+ passwordInput.autocomplete = "current-password";
73
+ passwordInput.autofocus = true;
74
+ passwordInput.style.cssText = `${reset}${font}font-size:1rem;display:block;margin:0 0 1rem 0;padding:0.5rem;background:rgba(0,0,0,0.5);border:1px solid ${whiteTransp};border-radius:${r1};`;
75
+ const buttonDiv = document.createElement("div");
76
+ buttonDiv.style.cssText = reset;
77
+ const cancelBtn = document.createElement("button");
78
+ cancelBtn.type = "reset";
79
+ cancelBtn.append("Cancel");
80
+ cancelBtn.style.cssText = btnBase + w + "0.25);";
81
+ const okBtn = document.createElement("button");
82
+ okBtn.type = "submit";
83
+ okBtn.value = "ok";
84
+ okBtn.append("OK");
85
+ okBtn.style.cssText = btnBase + "rgba(19,106,235,1);margin-right:0.5rem;";
86
+ buttonDiv.append(okBtn, cancelBtn);
87
+ form.append(messagePara, passwordInput, buttonDiv);
88
+ dialog.append(form);
89
+ form.onreset = () => {
90
+ dialog.close();
91
+ };
92
+ dialog.onclose = () => {
93
+ if (dialog.returnValue === "ok") {
94
+ resolve(passwordInput.value || null);
95
+ } else {
96
+ resolve(null);
97
+ }
98
+ dialog.remove();
99
+ };
100
+ document.body.append(dialog);
101
+ dialog.showModal();
102
+ });
103
+ }
104
+
28
105
  // ../ast-to-zql/src/ast-to-zql.ts
29
106
  function astToZQL(ast) {
30
107
  let code = "";
@@ -195,73 +272,100 @@ function transformParameter(param) {
195
272
  return `authParam(${fieldStr})`;
196
273
  }
197
274
 
198
- // ../zero-client/src/client/inspector/inspector.ts
199
- async function newInspector(rep, delegate, schema, socket) {
200
- const clientGroupID = await rep.clientGroupID;
201
- return new Inspector(
202
- rep,
203
- delegate,
204
- schema,
205
- rep.clientID,
206
- clientGroupID,
207
- socket
208
- );
209
- }
210
- var Inspector = class {
211
- #rep;
212
- client;
213
- clientGroup;
214
- #schema;
215
- socket;
216
- #delegate;
217
- constructor(rep, delegate, schema, clientID, clientGroupID, socket) {
218
- this.#rep = rep;
219
- this.#schema = schema;
220
- this.client = new Client(
221
- rep,
222
- delegate,
223
- schema,
224
- socket,
225
- clientID,
226
- clientGroupID
227
- );
228
- this.clientGroup = this.client.clientGroup;
229
- this.socket = socket;
230
- this.#delegate = delegate;
231
- }
232
- async metrics() {
233
- const clientMetrics = this.#delegate.metrics;
234
- const serverMetricsJSON = await rpc(
235
- await this.socket(),
236
- { op: "metrics" },
237
- inspectMetricsDownSchema
238
- );
239
- return mergeMetrics(clientMetrics, serverMetricsJSON);
240
- }
241
- clients() {
242
- return withDagRead(
243
- this.#rep,
244
- (dagRead) => clients(this.#rep, this.#delegate, this.socket, this.#schema, dagRead)
245
- );
246
- }
247
- clientsWithQueries() {
248
- return withDagRead(
249
- this.#rep,
250
- (dagRead) => clientsWithQueries(
251
- this.#rep,
252
- this.#delegate,
253
- this.socket,
254
- this.#schema,
255
- dagRead
256
- )
275
+ // ../zero-client/src/client/inspector/query.ts
276
+ var Query = class {
277
+ #socket;
278
+ name;
279
+ args;
280
+ got;
281
+ ttl;
282
+ inactivatedAt;
283
+ rowCount;
284
+ deleted;
285
+ id;
286
+ clientID;
287
+ metrics;
288
+ clientZQL;
289
+ serverZQL;
290
+ #serverAST;
291
+ hydrateClient;
292
+ hydrateServer;
293
+ hydrateTotal;
294
+ updateClientP50;
295
+ updateClientP95;
296
+ updateServerP50;
297
+ updateServerP95;
298
+ constructor(row, delegate, socket) {
299
+ this.#socket = socket;
300
+ const { ast, queryID, inactivatedAt } = row;
301
+ this.clientID = row.clientID;
302
+ this.id = queryID;
303
+ this.inactivatedAt = inactivatedAt === null ? null : new Date(inactivatedAt);
304
+ this.ttl = normalizeTTL(row.ttl);
305
+ this.name = row.name;
306
+ this.args = row.args;
307
+ this.got = row.got;
308
+ this.rowCount = row.rowCount;
309
+ this.deleted = row.deleted;
310
+ this.#serverAST = ast;
311
+ this.serverZQL = ast ? ast.table + astToZQL(ast) : null;
312
+ const clientAST = delegate.getAST(queryID);
313
+ this.clientZQL = clientAST ? clientAST.table + astToZQL(clientAST) : null;
314
+ const clientMetrics = delegate.getQueryMetrics(queryID);
315
+ const serverMetrics = row.metrics;
316
+ const merged = mergeMetrics(clientMetrics, serverMetrics);
317
+ this.metrics = merged;
318
+ const percentile = (name, percentile2) => {
319
+ if (!merged?.[name]) {
320
+ return null;
321
+ }
322
+ const n = merged[name].quantile(percentile2);
323
+ return Number.isNaN(n) ? null : n;
324
+ };
325
+ this.hydrateClient = percentile("query-materialization-client", 0.5);
326
+ this.hydrateServer = percentile("query-materialization-server", 0.5);
327
+ this.hydrateTotal = percentile("query-materialization-end-to-end", 0.5);
328
+ this.updateClientP50 = percentile("query-update-client", 0.5);
329
+ this.updateClientP95 = percentile("query-update-client", 0.95);
330
+ this.updateServerP50 = percentile("query-update-server", 0.5);
331
+ this.updateServerP95 = percentile("query-update-server", 0.95);
332
+ }
333
+ async analyze(options) {
334
+ assert(this.#serverAST, "No server AST available for this query");
335
+ return rpc(
336
+ await this.#socket(),
337
+ {
338
+ op: "analyze-query",
339
+ value: this.#serverAST,
340
+ options
341
+ },
342
+ inspectAnalyzeQueryDownSchema
257
343
  );
258
344
  }
259
- async serverVersion() {
260
- return rpc(await this.socket(), { op: "version" }, inspectVersionDownSchema);
261
- }
262
- };
263
- var UnauthenticatedError = class extends Error {
264
345
  };
346
+
347
+ // ../zero-client/src/client/inspector/lazy-inspector.ts
348
+ async function rpc(socket, arg, downSchema) {
349
+ try {
350
+ return await rpcNoAuthTry(socket, arg, downSchema);
351
+ } catch (e) {
352
+ if (e instanceof UnauthenticatedError) {
353
+ const password = await createHTMLPasswordPrompt("Enter password:");
354
+ if (password) {
355
+ const authRes = await rpcNoAuthTry(
356
+ socket,
357
+ { op: "authenticate", value: password },
358
+ inspectAuthenticatedDownSchema
359
+ );
360
+ if (authRes) {
361
+ return rpcNoAuthTry(socket, arg, downSchema);
362
+ }
363
+ }
364
+ throw new Error("Authentication failed");
365
+ }
366
+ throw e;
367
+ }
368
+ }
265
369
  function rpcNoAuthTry(socket, arg, downSchema) {
266
370
  return new Promise((resolve, reject) => {
267
371
  const id = nanoid();
@@ -293,128 +397,48 @@ function rpcNoAuthTry(socket, arg, downSchema) {
293
397
  socket.send(JSON.stringify(["inspect", { ...arg, id }]));
294
398
  });
295
399
  }
296
- async function rpc(socket, arg, downSchema) {
297
- try {
298
- return await rpcNoAuthTry(socket, arg, downSchema);
299
- } catch (e) {
300
- if (e instanceof UnauthenticatedError) {
301
- const password = prompt("Enter password:");
302
- if (password) {
303
- const authRes = await rpcNoAuthTry(
304
- socket,
305
- { op: "authenticate", value: password },
306
- inspectAuthenticatedDownSchema
307
- );
308
- if (authRes) {
309
- return rpcNoAuthTry(socket, arg, downSchema);
310
- }
311
- }
312
- throw new Error("Authentication failed");
313
- }
314
- throw e;
315
- }
400
+ function mergeMetrics(clientMetrics, serverMetrics) {
401
+ return {
402
+ ...clientMetrics ?? newClientMetrics(),
403
+ ...serverMetrics ? convertServerMetrics(serverMetrics) : newServerMetrics()
404
+ };
316
405
  }
317
- var Client = class {
318
- #rep;
319
- id;
320
- clientGroup;
321
- #socket;
322
- #delegate;
323
- constructor(rep, delegate, schema, socket, id, clientGroupID) {
324
- this.#rep = rep;
325
- this.#socket = socket;
326
- this.id = id;
327
- this.clientGroup = new ClientGroup(
328
- rep,
329
- delegate,
330
- socket,
331
- schema,
332
- clientGroupID
333
- );
334
- this.#delegate = delegate;
335
- }
336
- async queries() {
337
- const rows = await rpc(
338
- await this.#socket(),
339
- { op: "queries", clientID: this.id },
340
- inspectQueriesDownSchema
341
- );
342
- return rows.map((row) => new Query(row, this.#delegate));
343
- }
344
- map() {
345
- return withDagRead(this.#rep, async (dagRead) => {
346
- const tree = await getBTree(dagRead, this.id);
347
- const map = /* @__PURE__ */ new Map();
348
- for await (const [key, value] of tree.scan("")) {
349
- map.set(key, value);
350
- }
351
- return map;
352
- });
353
- }
354
- rows(tableName) {
355
- return withDagRead(this.#rep, async (dagRead) => {
356
- const prefix = ENTITIES_KEY_PREFIX + tableName;
357
- const tree = await getBTree(dagRead, this.id);
358
- const rows = [];
359
- for await (const [key, value] of tree.scan(prefix)) {
360
- if (!key.startsWith(prefix)) {
361
- break;
362
- }
363
- rows.push(value);
364
- }
365
- return rows;
366
- });
367
- }
368
- };
369
- var ClientGroup = class {
370
- #rep;
371
- id;
372
- #schema;
373
- #socket;
374
- #delegate;
375
- constructor(rep, delegate, socket, schema, id) {
376
- this.#rep = rep;
377
- this.#delegate = delegate;
378
- this.#socket = socket;
379
- this.#schema = schema;
380
- this.id = id;
381
- }
382
- clients() {
383
- return withDagRead(
384
- this.#rep,
385
- (dagRead) => clients(
386
- this.#rep,
387
- this.#delegate,
388
- this.#socket,
389
- this.#schema,
390
- dagRead,
391
- ([_, v]) => v.clientGroupID === this.id
392
- )
393
- );
394
- }
395
- clientsWithQueries() {
396
- return withDagRead(
397
- this.#rep,
398
- (dagRead) => clientsWithQueries(
399
- this.#rep,
400
- this.#delegate,
401
- this.#socket,
402
- this.#schema,
403
- dagRead,
404
- ([_, v]) => v.clientGroupID === this.id
405
- )
406
- );
407
- }
408
- async queries() {
409
- const rows = await rpc(
410
- await this.#socket(),
411
- { op: "queries" },
412
- inspectQueriesDownSchema
413
- );
414
- return rows.map((row) => new Query(row, this.#delegate));
415
- }
416
- };
417
- async function withDagRead(rep, f) {
406
+ function newClientMetrics() {
407
+ return {
408
+ "query-materialization-client": new TDigest(),
409
+ "query-materialization-end-to-end": new TDigest(),
410
+ "query-update-client": new TDigest()
411
+ };
412
+ }
413
+ function newServerMetrics() {
414
+ return {
415
+ "query-materialization-server": new TDigest(),
416
+ "query-update-server": new TDigest()
417
+ };
418
+ }
419
+ function convertServerMetrics(metrics) {
420
+ return mapValues(metrics, (v) => TDigest.fromJSON(v));
421
+ }
422
+ async function inspectorMetrics(delegate) {
423
+ const clientMetrics = delegate.metrics;
424
+ const serverMetricsJSON = await rpc(
425
+ await delegate.getSocket(),
426
+ { op: "metrics" },
427
+ inspectMetricsDownSchema
428
+ );
429
+ return mergeMetrics(clientMetrics, serverMetricsJSON);
430
+ }
431
+ function inspectorClients(delegate) {
432
+ return withDagRead(delegate, (dagRead) => clients(delegate, dagRead));
433
+ }
434
+ function inspectorClientsWithQueries(delegate) {
435
+ return withDagRead(
436
+ delegate,
437
+ (dagRead) => clientsWithQueries(delegate, dagRead)
438
+ );
439
+ }
440
+ async function withDagRead(delegate, f) {
441
+ const { rep } = delegate;
418
442
  await rep.refresh();
419
443
  await rep.persist();
420
444
  return withRead(rep.perdag, f);
@@ -432,21 +456,14 @@ async function getBTree(dagRead, clientID) {
432
456
  );
433
457
  return dbRead.map;
434
458
  }
435
- async function clients(rep, delegate, socket, schema, dagRead, predicate = () => true) {
459
+ async function clients(delegate, dagRead, predicate = () => true) {
436
460
  const clients2 = await getClients(dagRead);
437
461
  return [...clients2.entries()].filter(predicate).map(
438
- ([clientID, { clientGroupID }]) => new Client(rep, delegate, schema, socket, clientID, clientGroupID)
462
+ ([clientID, { clientGroupID }]) => new Client(delegate, clientID, clientGroupID)
439
463
  );
440
464
  }
441
- async function clientsWithQueries(rep, delegate, socket, schema, dagRead, predicate = () => true) {
442
- const allClients = await clients(
443
- rep,
444
- delegate,
445
- socket,
446
- schema,
447
- dagRead,
448
- predicate
449
- );
465
+ async function clientsWithQueries(delegate, dagRead, predicate = () => true) {
466
+ const allClients = await clients(delegate, dagRead, predicate);
450
467
  const clientsWithQueries2 = [];
451
468
  await Promise.all(
452
469
  allClients.map(async (client) => {
@@ -458,61 +475,81 @@ async function clientsWithQueries(rep, delegate, socket, schema, dagRead, predic
458
475
  );
459
476
  return clientsWithQueries2;
460
477
  }
461
- var Query = class {
462
- name;
463
- args;
464
- got;
465
- ttl;
466
- inactivatedAt;
467
- rowCount;
468
- deleted;
469
- id;
470
- clientID;
471
- metrics;
472
- clientZQL;
473
- serverZQL;
474
- constructor(row, delegate) {
475
- const { ast, queryID, inactivatedAt } = row;
476
- this.clientID = row.clientID;
477
- this.id = queryID;
478
- this.inactivatedAt = inactivatedAt === null ? null : new Date(inactivatedAt);
479
- this.ttl = normalizeTTL(row.ttl);
480
- this.name = row.name;
481
- this.args = row.args;
482
- this.got = row.got;
483
- this.rowCount = row.rowCount;
484
- this.deleted = row.deleted;
485
- this.serverZQL = ast ? ast.table + astToZQL(ast) : null;
486
- const clientAST = delegate.getAST(queryID);
487
- this.clientZQL = clientAST ? clientAST.table + astToZQL(clientAST) : null;
488
- const clientMetrics = delegate.getQueryMetrics(queryID);
489
- const serverMetrics = row.metrics;
490
- this.metrics = mergeMetrics(clientMetrics, serverMetrics);
491
- }
492
- };
493
- function mergeMetrics(clientMetrics, serverMetrics) {
494
- return {
495
- ...clientMetrics ?? newClientMetrics(),
496
- ...serverMetrics ? convertServerMetrics(serverMetrics) : newServerMetrics()
497
- };
478
+ async function clientGroupClients(delegate, clientGroupID) {
479
+ const id = await clientGroupID;
480
+ return withDagRead(
481
+ delegate,
482
+ (dagRead) => clients(delegate, dagRead, ([_, v]) => v.clientGroupID === id)
483
+ );
498
484
  }
499
- function newClientMetrics() {
500
- return {
501
- "query-materialization-client": new TDigest(),
502
- "query-materialization-end-to-end": new TDigest(),
503
- "query-update-client": new TDigest()
504
- };
485
+ async function clientGroupClientsWithQueries(delegate, clientGroupID) {
486
+ const id = await clientGroupID;
487
+ return withDagRead(
488
+ delegate,
489
+ (dagRead) => clientsWithQueries(delegate, dagRead, ([_, v]) => v.clientGroupID === id)
490
+ );
505
491
  }
506
- function newServerMetrics() {
507
- return {
508
- "query-materialization-server": new TDigest(),
509
- "query-update-server": new TDigest()
510
- };
492
+ async function clientGroupQueries(delegate) {
493
+ const rows = await rpc(
494
+ await delegate.getSocket(),
495
+ { op: "queries" },
496
+ inspectQueriesDownSchema
497
+ );
498
+ return rows.map((row) => new Query(row, delegate, delegate.getSocket));
511
499
  }
512
- function convertServerMetrics(metrics) {
513
- return mapValues(metrics, (v) => TDigest.fromJSON(v));
500
+ function clientMap(delegate, clientID) {
501
+ return withDagRead(delegate, async (dagRead) => {
502
+ const tree = await getBTree(dagRead, clientID);
503
+ const map = /* @__PURE__ */ new Map();
504
+ for await (const [key, value] of tree.scan("")) {
505
+ map.set(key, value);
506
+ }
507
+ return map;
508
+ });
509
+ }
510
+ function clientRows(delegate, clientID, tableName) {
511
+ return withDagRead(delegate, async (dagRead) => {
512
+ const prefix = ENTITIES_KEY_PREFIX + tableName + "/";
513
+ const tree = await getBTree(dagRead, clientID);
514
+ const rows = [];
515
+ for await (const [key, value] of tree.scan(prefix)) {
516
+ if (!key.startsWith(prefix)) {
517
+ break;
518
+ }
519
+ rows.push(value);
520
+ }
521
+ return rows;
522
+ });
514
523
  }
524
+ async function serverVersion(delegate) {
525
+ return rpc(
526
+ await delegate.getSocket(),
527
+ { op: "version" },
528
+ inspectVersionDownSchema
529
+ );
530
+ }
531
+ async function clientQueries(delegate, clientID) {
532
+ const rows = await rpc(
533
+ await delegate.getSocket(),
534
+ { op: "queries", clientID },
535
+ inspectQueriesDownSchema
536
+ );
537
+ return rows.map((row) => new Query(row, delegate, delegate.getSocket));
538
+ }
539
+ var UnauthenticatedError = class extends Error {
540
+ };
515
541
  export {
516
- newInspector
542
+ clientGroupClients,
543
+ clientGroupClientsWithQueries,
544
+ clientGroupQueries,
545
+ clientMap,
546
+ clientQueries,
547
+ clientRows,
548
+ inspectorClients,
549
+ inspectorClientsWithQueries,
550
+ inspectorMetrics,
551
+ mergeMetrics,
552
+ rpc,
553
+ serverVersion
517
554
  };
518
- //# sourceMappingURL=inspector-ZZSIUMBB.js.map
555
+ //# sourceMappingURL=lazy-inspector-TOTYUTBC.js.map