@rocicorp/zero 0.11.2025012200 → 0.12.2025012401

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 (63) hide show
  1. package/out/{chunk-5OVHF6ZM.js → chunk-BHEGTSLF.js} +68 -30
  2. package/out/{chunk-5OVHF6ZM.js.map → chunk-BHEGTSLF.js.map} +2 -2
  3. package/out/react.js +1 -0
  4. package/out/react.js.map +2 -2
  5. package/out/replicache/src/sync/request-id.d.ts.map +1 -1
  6. package/out/solid.js +1 -1
  7. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  8. package/out/zero-cache/src/auth/write-authorizer.js +1 -1
  9. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  10. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  11. package/out/zero-cache/src/server/change-streamer.js +4 -0
  12. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  13. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  14. package/out/zero-cache/src/server/main.js +3 -1
  15. package/out/zero-cache/src/server/main.js.map +1 -1
  16. package/out/zero-cache/src/server/multi/runtime.d.ts.map +1 -1
  17. package/out/zero-cache/src/server/multi/runtime.js +5 -1
  18. package/out/zero-cache/src/server/multi/runtime.js.map +1 -1
  19. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  20. package/out/zero-cache/src/services/change-streamer/storer.js +0 -14
  21. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  22. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.d.ts +1 -1
  23. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.d.ts.map +1 -1
  24. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.js +9 -2
  25. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.js.map +1 -1
  26. package/out/zero-cache/src/types/error-for-client.d.ts +3 -1
  27. package/out/zero-cache/src/types/error-for-client.d.ts.map +1 -1
  28. package/out/zero-client/src/client/server-error.d.ts +2 -2
  29. package/out/zero-client/src/client/server-error.d.ts.map +1 -1
  30. package/out/zero-client/src/client/zero.d.ts +1 -1
  31. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  32. package/out/zero-client/src/mod.d.ts +1 -0
  33. package/out/zero-client/src/mod.d.ts.map +1 -1
  34. package/out/zero-protocol/src/ast.d.ts +24 -22
  35. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  36. package/out/zero-protocol/src/ast.js +23 -1
  37. package/out/zero-protocol/src/ast.js.map +1 -1
  38. package/out/zero-protocol/src/error-kind-enum.d.ts +4 -0
  39. package/out/zero-protocol/src/error-kind-enum.d.ts.map +1 -1
  40. package/out/zero-protocol/src/error-kind-enum.js +2 -0
  41. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  42. package/out/zero-protocol/src/error.d.ts +8 -5
  43. package/out/zero-protocol/src/error.d.ts.map +1 -1
  44. package/out/zero-protocol/src/error.js +15 -5
  45. package/out/zero-protocol/src/error.js.map +1 -1
  46. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  47. package/out/zero-protocol/src/protocol-version.js +1 -1
  48. package/out/zero-schema/src/table-schema.d.ts +2 -2
  49. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  50. package/out/zero.js +1 -1
  51. package/out/zql/src/query/expression.d.ts +3 -3
  52. package/out/zql/src/query/expression.d.ts.map +1 -1
  53. package/out/zql/src/query/expression.js.map +1 -1
  54. package/out/zql/src/query/query-impl.d.ts +2 -2
  55. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  56. package/out/zql/src/query/query-impl.js.map +1 -1
  57. package/out/zql/src/query/query.d.ts +4 -3
  58. package/out/zql/src/query/query.d.ts.map +1 -1
  59. package/out/zqlite/src/db.d.ts +9 -1
  60. package/out/zqlite/src/db.d.ts.map +1 -1
  61. package/out/zqlite/src/db.js +20 -5
  62. package/out/zqlite/src/db.js.map +1 -1
  63. package/package.json +1 -1
@@ -7151,14 +7151,8 @@ function getSessionID() {
7151
7151
  }
7152
7152
  var REQUEST_COUNTERS = /* @__PURE__ */ new Map();
7153
7153
  function newRequestID(clientID) {
7154
- let counter = REQUEST_COUNTERS.get(clientID);
7155
- if (!counter) {
7156
- REQUEST_COUNTERS.set(clientID, 0);
7157
- counter = 0;
7158
- } else {
7159
- counter++;
7160
- REQUEST_COUNTERS.set(clientID, counter);
7161
- }
7154
+ const counter = REQUEST_COUNTERS.get(clientID) ?? 0;
7155
+ REQUEST_COUNTERS.set(clientID, counter + 1);
7162
7156
  return `${clientID}-${getSessionID()}-${counter}`;
7163
7157
  }
7164
7158
 
@@ -8565,8 +8559,13 @@ var columnReferenceSchema = readonlyObject({
8565
8559
  });
8566
8560
  var parameterReferenceSchema = readonlyObject({
8567
8561
  type: valita_exports.literal("static"),
8562
+ // The "namespace" of the injected parameter.
8563
+ // Write authorization will send the value of a row
8564
+ // prior to the mutation being run (preMutationRow).
8565
+ // Read and write authorization will both send the
8566
+ // current authentication data (authData).
8568
8567
  anchor: valita_exports.union(valita_exports.literal("authData"), valita_exports.literal("preMutationRow")),
8569
- field: valita_exports.string()
8568
+ field: valita_exports.union(valita_exports.string(), valita_exports.array(valita_exports.string()))
8570
8569
  });
8571
8570
  var conditionValueSchema = valita_exports.union(
8572
8571
  literalReferenceSchema,
@@ -11486,6 +11485,8 @@ var InvalidMessage = "InvalidMessage";
11486
11485
  var InvalidPush = "InvalidPush";
11487
11486
  var MutationFailed = "MutationFailed";
11488
11487
  var MutationRateLimited = "MutationRateLimited";
11488
+ var Rebalance = "Rebalance";
11489
+ var Rehome = "Rehome";
11489
11490
  var Unauthorized = "Unauthorized";
11490
11491
  var VersionNotSupported = "VersionNotSupported";
11491
11492
  var SchemaVersionNotSupported = "SchemaVersionNotSupported";
@@ -11557,7 +11558,7 @@ function encodeSecProtocols(initConnectionMessage, authToken) {
11557
11558
  }
11558
11559
 
11559
11560
  // ../zero-protocol/src/error.ts
11560
- var errorKindSchema = valita_exports.union(
11561
+ var basicErrorKindSchema = valita_exports.union(
11561
11562
  valita_exports.literal(AuthInvalidated),
11562
11563
  valita_exports.literal(ClientNotFound),
11563
11564
  valita_exports.literal(InvalidConnectionRequest),
@@ -11574,18 +11575,29 @@ var errorKindSchema = valita_exports.union(
11574
11575
  valita_exports.literal(Internal)
11575
11576
  );
11576
11577
  var basicErrorBodySchema = valita_exports.object({
11577
- kind: errorKindSchema,
11578
+ kind: basicErrorKindSchema,
11578
11579
  message: valita_exports.string()
11579
11580
  });
11580
- var serverOverloadedBodySchema = valita_exports.object({
11581
- kind: valita_exports.literal(ServerOverloaded),
11581
+ var backoffErrorKindSchema = valita_exports.union(
11582
+ valita_exports.literal(Rebalance),
11583
+ valita_exports.literal(Rehome),
11584
+ valita_exports.literal(ServerOverloaded)
11585
+ );
11586
+ var backoffBodySchema = valita_exports.object({
11587
+ kind: backoffErrorKindSchema,
11582
11588
  message: valita_exports.string(),
11583
- minBackoffMs: valita_exports.number().optional()
11589
+ minBackoffMs: valita_exports.number().optional(),
11590
+ maxBackoffMs: valita_exports.number().optional(),
11591
+ // Query parameters to send in the next reconnect. In the event of
11592
+ // a conflict, these will be overridden by the parameters used by
11593
+ // the client; it is the responsibility of the server to avoid
11594
+ // parameter name conflicts.
11595
+ //
11596
+ // The parameters will only be added to the immediately following
11597
+ // reconnect, and not after that.
11598
+ reconnectParams: valita_exports.record(valita_exports.string()).optional()
11584
11599
  });
11585
- var errorBodySchema = valita_exports.union(
11586
- basicErrorBodySchema,
11587
- serverOverloadedBodySchema
11588
- );
11600
+ var errorBodySchema = valita_exports.union(basicErrorBodySchema, backoffBodySchema);
11589
11601
  var errorMessageSchema = valita_exports.tuple([
11590
11602
  valita_exports.literal("error"),
11591
11603
  errorBodySchema
@@ -11827,7 +11839,7 @@ var upstreamSchema = valita_exports.union(
11827
11839
  );
11828
11840
 
11829
11841
  // ../zero-protocol/src/protocol-version.ts
11830
- var PROTOCOL_VERSION = 3;
11842
+ var PROTOCOL_VERSION = 4;
11831
11843
  var MIN_SERVER_SUPPORTED_PROTOCOL_VERSION = 2;
11832
11844
  assert(MIN_SERVER_SUPPORTED_PROTOCOL_VERSION < PROTOCOL_VERSION);
11833
11845
 
@@ -13412,7 +13424,7 @@ function makeMessage(message, context, logLevel) {
13412
13424
  }
13413
13425
 
13414
13426
  // ../zero-client/src/client/version.ts
13415
- var version2 = "0.11.2025012200+592c81";
13427
+ var version2 = "0.12.2025012401+a73306";
13416
13428
 
13417
13429
  // ../zero-client/src/client/log-options.ts
13418
13430
  var LevelFilterLogSink = class {
@@ -13966,8 +13978,16 @@ function isAuthError(ex) {
13966
13978
  function isAuthErrorKind(kind) {
13967
13979
  return kind === AuthInvalidated || kind === Unauthorized;
13968
13980
  }
13969
- function isServerOverloadedError(ex) {
13970
- return isServerError(ex) && ex.errorBody.kind === ServerOverloaded ? ex.errorBody : void 0;
13981
+ function isBackoffError(ex) {
13982
+ if (isServerError(ex)) {
13983
+ switch (ex.errorBody.kind) {
13984
+ case Rebalance:
13985
+ case Rehome:
13986
+ case ServerOverloaded:
13987
+ return ex.errorBody;
13988
+ }
13989
+ }
13990
+ return void 0;
13971
13991
  }
13972
13992
 
13973
13993
  // ../zero-client/src/client/server-option.ts
@@ -14875,7 +14895,7 @@ var Zero = class {
14875
14895
  * is received before the connected message is received or if the connection
14876
14896
  * attempt times out.
14877
14897
  */
14878
- async #connect(l) {
14898
+ async #connect(l, additionalConnectParams) {
14879
14899
  assert(this.#server);
14880
14900
  assert(this.#connectionState === Disconnected);
14881
14901
  const wsid = nanoid();
@@ -14923,7 +14943,8 @@ var Zero = class {
14923
14943
  wsid,
14924
14944
  this.#options.logLevel === "debug",
14925
14945
  l,
14926
- this.#options.maxHeaderLength
14946
+ this.#options.maxHeaderLength,
14947
+ additionalConnectParams
14927
14948
  );
14928
14949
  if (this.closed) {
14929
14950
  return;
@@ -15134,6 +15155,7 @@ var Zero = class {
15134
15155
  let needsReauth = false;
15135
15156
  let gotError = false;
15136
15157
  let backoffMs = RUN_LOOP_INTERVAL_MS;
15158
+ let additionalConnectParams;
15137
15159
  while (!this.closed) {
15138
15160
  runLoopCounter++;
15139
15161
  let lc = getLogContext();
@@ -15152,7 +15174,8 @@ var Zero = class {
15152
15174
  if (reloadScheduled()) {
15153
15175
  break;
15154
15176
  }
15155
- await this.#connect(lc);
15177
+ await this.#connect(lc, additionalConnectParams);
15178
+ additionalConnectParams = void 0;
15156
15179
  if (this.closed) {
15157
15180
  break;
15158
15181
  }
@@ -15234,9 +15257,15 @@ var Zero = class {
15234
15257
  if (isServerError(ex) || ex instanceof TimedOutError || ex instanceof CloseError) {
15235
15258
  gotError = true;
15236
15259
  }
15237
- const overloaded = isServerOverloadedError(ex);
15238
- if (overloaded && overloaded.minBackoffMs) {
15239
- backoffMs = Math.max(backoffMs, overloaded.minBackoffMs);
15260
+ const backoffError = isBackoffError(ex);
15261
+ if (backoffError) {
15262
+ if (backoffError.minBackoffMs !== void 0) {
15263
+ backoffMs = Math.max(backoffMs, backoffError.minBackoffMs);
15264
+ }
15265
+ if (backoffError.maxBackoffMs !== void 0) {
15266
+ backoffMs = Math.min(backoffMs, backoffError.maxBackoffMs);
15267
+ }
15268
+ additionalConnectParams = backoffError.reconnectParams;
15240
15269
  }
15241
15270
  }
15242
15271
  if (gotError) {
@@ -15376,7 +15405,7 @@ var Zero = class {
15376
15405
  return rv;
15377
15406
  }
15378
15407
  };
15379
- async function createSocket(rep, queryManager, socketOrigin, baseCookie, clientID, clientGroupID, schemaVersion, userID, auth, lmid, wsid, debugPerf, lc, maxHeaderLength = 1024 * 8) {
15408
+ async function createSocket(rep, queryManager, socketOrigin, baseCookie, clientID, clientGroupID, schemaVersion, userID, auth, lmid, wsid, debugPerf, lc, maxHeaderLength = 1024 * 8, additionalConnectParams) {
15380
15409
  const url = new URL(
15381
15410
  appendPath(socketOrigin, `/sync/v${PROTOCOL_VERSION}/connect`)
15382
15411
  );
@@ -15392,6 +15421,15 @@ async function createSocket(rep, queryManager, socketOrigin, baseCookie, clientI
15392
15421
  if (debugPerf) {
15393
15422
  searchParams.set("debugPerf", true.toString());
15394
15423
  }
15424
+ if (additionalConnectParams) {
15425
+ for (const k in additionalConnectParams) {
15426
+ if (searchParams.has(k)) {
15427
+ lc.warn?.(`skipping conflicting parameter ${k}`);
15428
+ } else {
15429
+ searchParams.set(k, additionalConnectParams[k]);
15430
+ }
15431
+ }
15432
+ }
15395
15433
  lc.info?.("Connecting to", url.toString());
15396
15434
  const WS = mustGetBrowserGlobal("WebSocket");
15397
15435
  let queriesPatch = await rep.query(
@@ -15453,4 +15491,4 @@ export {
15453
15491
  escapeLike,
15454
15492
  Zero
15455
15493
  };
15456
- //# sourceMappingURL=chunk-5OVHF6ZM.js.map
15494
+ //# sourceMappingURL=chunk-BHEGTSLF.js.map