@rocicorp/zero 0.17.2025030300 → 0.17.2025030600

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 (151) hide show
  1. package/out/{chunk-BBNRRMOA.js → chunk-XXZWDMNW.js} +64 -44
  2. package/out/{chunk-BBNRRMOA.js.map → chunk-XXZWDMNW.js.map} +3 -3
  3. package/out/react.js +19 -11
  4. package/out/react.js.map +2 -2
  5. package/out/solid.js +8 -3
  6. package/out/solid.js.map +2 -2
  7. package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -1
  8. package/out/zero-cache/src/auth/read-authorizer.js +0 -1
  9. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  10. package/out/zero-cache/src/config/zero-config.d.ts +22 -5
  11. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  12. package/out/zero-cache/src/config/zero-config.js +30 -15
  13. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  14. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  15. package/out/zero-cache/src/db/migration-lite.js +12 -6
  16. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  17. package/out/zero-cache/src/db/pg-to-lite.d.ts +4 -0
  18. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  19. package/out/zero-cache/src/db/pg-to-lite.js +14 -4
  20. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  21. package/out/zero-cache/src/server/change-streamer.js +7 -7
  22. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  23. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  24. package/out/zero-cache/src/server/main.js +8 -2
  25. package/out/zero-cache/src/server/main.js.map +1 -1
  26. package/out/zero-cache/src/server/multi/config.d.ts +11 -7
  27. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  28. package/out/zero-cache/src/server/multi/config.js +1 -3
  29. package/out/zero-cache/src/server/multi/config.js.map +1 -1
  30. package/out/zero-cache/src/server/multi/run-worker.d.ts.map +1 -1
  31. package/out/zero-cache/src/server/multi/run-worker.js +1 -3
  32. package/out/zero-cache/src/server/multi/run-worker.js.map +1 -1
  33. package/out/zero-cache/src/server/replicator.js +1 -1
  34. package/out/zero-cache/src/server/replicator.js.map +1 -1
  35. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  36. package/out/zero-cache/src/server/syncer.js +10 -9
  37. package/out/zero-cache/src/server/syncer.js.map +1 -1
  38. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  39. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  40. package/out/zero-cache/src/services/change-source/pg/change-source.js +12 -3
  41. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  42. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -0
  43. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  44. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +33 -8
  45. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  46. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
  47. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +9 -0
  48. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  49. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  50. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  51. package/out/zero-cache/src/services/litestream/commands.js +3 -3
  52. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  53. package/out/zero-cache/src/services/mutagen/mutagen.js +1 -1
  54. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  55. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +7 -0
  56. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  57. package/out/zero-cache/src/services/replicator/schema/replication-state.js +29 -1
  58. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
  60. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/client-handler.js +2 -1
  62. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  63. package/out/zero-cache/src/services/view-syncer/cvr-store.js +1 -1
  64. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -1
  66. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  67. package/out/zero-cache/src/services/view-syncer/cvr.js +7 -16
  68. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  69. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts +2 -0
  70. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +1 -1
  71. package/out/zero-cache/src/services/view-syncer/database-storage.js +8 -3
  72. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  73. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +11 -3
  74. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  75. package/out/zero-cache/src/services/view-syncer/view-syncer.js +40 -17
  76. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  77. package/out/zero-cache/src/types/lite.d.ts +2 -2
  78. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  79. package/out/zero-cache/src/types/lite.js +9 -4
  80. package/out/zero-cache/src/types/lite.js.map +1 -1
  81. package/out/zero-cache/src/types/pg.d.ts +7 -3
  82. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  83. package/out/zero-cache/src/types/pg.js +11 -5
  84. package/out/zero-cache/src/types/pg.js.map +1 -1
  85. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  86. package/out/zero-cache/src/workers/connection.js +39 -20
  87. package/out/zero-cache/src/workers/connection.js.map +1 -1
  88. package/out/zero-cache/src/workers/replicator.d.ts +2 -1
  89. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  90. package/out/zero-cache/src/workers/replicator.js +42 -17
  91. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  92. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +4 -4
  93. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  94. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +5 -2
  95. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  96. package/out/zero-client/src/client/custom.d.ts +2 -11
  97. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  98. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  99. package/out/zero-client/src/mod.d.ts +1 -0
  100. package/out/zero-client/src/mod.d.ts.map +1 -1
  101. package/out/zero-pg/src/custom.d.ts +1 -2
  102. package/out/zero-pg/src/custom.d.ts.map +1 -1
  103. package/out/zero-pg/src/custom.js.map +1 -1
  104. package/out/zero-pg/src/mod.d.ts +1 -2
  105. package/out/zero-pg/src/mod.d.ts.map +1 -1
  106. package/out/zero-pg/src/query.d.ts +3 -4
  107. package/out/zero-pg/src/query.d.ts.map +1 -1
  108. package/out/zero-pg/src/query.js +5 -7
  109. package/out/zero-pg/src/query.js.map +1 -1
  110. package/out/zero-pg/src/web.d.ts +1 -1
  111. package/out/zero-pg/src/web.d.ts.map +1 -1
  112. package/out/zero-pg/src/web.js.map +1 -1
  113. package/out/zero-protocol/src/close-connection.d.ts +16 -0
  114. package/out/zero-protocol/src/close-connection.d.ts.map +1 -0
  115. package/out/zero-protocol/src/close-connection.js +17 -0
  116. package/out/zero-protocol/src/close-connection.js.map +1 -0
  117. package/out/zero-protocol/src/up.d.ts +1 -1
  118. package/out/zero-protocol/src/up.d.ts.map +1 -1
  119. package/out/zero-protocol/src/up.js +2 -1
  120. package/out/zero-protocol/src/up.js.map +1 -1
  121. package/out/zero-react/src/use-query.d.ts +11 -2
  122. package/out/zero-react/src/use-query.d.ts.map +1 -1
  123. package/out/zero-solid/src/use-query.d.ts +4 -1
  124. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  125. package/out/zero.js +1 -1
  126. package/out/zql/src/mutate/custom.d.ts +36 -1
  127. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  128. package/out/zql/src/mutate/custom.js.map +1 -1
  129. package/out/zql/src/query/query-impl.d.ts +8 -8
  130. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  131. package/out/zql/src/query/query-impl.js +29 -25
  132. package/out/zql/src/query/query-impl.js.map +1 -1
  133. package/out/zql/src/query/query-internal.d.ts +2 -2
  134. package/out/zql/src/query/query-internal.d.ts.map +1 -1
  135. package/out/zql/src/query/query.d.ts +10 -2
  136. package/out/zql/src/query/query.d.ts.map +1 -1
  137. package/out/zql/src/query/query.js +1 -1
  138. package/out/zql/src/query/query.js.map +1 -1
  139. package/out/zql/src/query/static-query.d.ts +1 -1
  140. package/out/zql/src/query/static-query.d.ts.map +1 -1
  141. package/out/zql/src/query/static-query.js +2 -2
  142. package/out/zql/src/query/static-query.js.map +1 -1
  143. package/out/zqlite/src/db.d.ts +3 -1
  144. package/out/zqlite/src/db.d.ts.map +1 -1
  145. package/out/zqlite/src/db.js +47 -0
  146. package/out/zqlite/src/db.js.map +1 -1
  147. package/package.json +2 -2
  148. package/out/zero-pg/src/db.d.ts +0 -27
  149. package/out/zero-pg/src/db.d.ts.map +0 -1
  150. package/out/zero-pg/src/db.js +0 -2
  151. package/out/zero-pg/src/db.js.map +0 -1
@@ -11053,13 +11053,16 @@ function unwrap(c) {
11053
11053
  return { type: c.type, conditions: flatten(c.type, c.conditions.map(unwrap)) };
11054
11054
  }
11055
11055
 
11056
+ // ../zql/src/query/query.ts
11057
+ var DEFAULT_TTL = 1e4;
11058
+
11056
11059
  // ../zql/src/query/query-impl.ts
11057
11060
  var astForTestingSymbol = Symbol();
11058
11061
  function newQuery(delegate, schema, table2) {
11059
11062
  return new QueryImpl(delegate, schema, table2);
11060
11063
  }
11061
- function newQueryWithDetails(delegate, schema, tableName, ast, ttl, format) {
11062
- return new QueryImpl(delegate, schema, tableName, ast, ttl, format);
11064
+ function newQueryWithDetails(delegate, schema, tableName, ast, format) {
11065
+ return new QueryImpl(delegate, schema, tableName, ast, format);
11063
11066
  }
11064
11067
  function staticParam(anchorClass, field) {
11065
11068
  return {
@@ -11074,14 +11077,12 @@ var AbstractQuery = class {
11074
11077
  #schema;
11075
11078
  #tableName;
11076
11079
  #ast;
11077
- #ttl;
11078
11080
  #format;
11079
11081
  #hash = "";
11080
- constructor(schema, tableName, ast = { table: tableName }, ttl, format) {
11082
+ constructor(schema, tableName, ast = { table: tableName }, format) {
11081
11083
  this.#schema = schema;
11082
11084
  this.#tableName = tableName;
11083
11085
  this.#ast = ast;
11084
- this.#ttl = ttl;
11085
11086
  this.#format = format ?? { singular: false, relationships: {} };
11086
11087
  }
11087
11088
  get format() {
@@ -11107,7 +11108,6 @@ var AbstractQuery = class {
11107
11108
  ...this.#ast,
11108
11109
  limit: 1
11109
11110
  },
11110
- this.#ttl,
11111
11111
  {
11112
11112
  ...this.#format,
11113
11113
  singular: true
@@ -11136,7 +11136,6 @@ var AbstractQuery = class {
11136
11136
  table: destSchema,
11137
11137
  alias: relationship
11138
11138
  },
11139
- this.#ttl,
11140
11139
  {
11141
11140
  relationships: {},
11142
11141
  singular: cardinality === "one"
@@ -11175,7 +11174,6 @@ var AbstractQuery = class {
11175
11174
  }
11176
11175
  ]
11177
11176
  },
11178
- this.#ttl,
11179
11177
  {
11180
11178
  ...this.#format,
11181
11179
  relationships: {
@@ -11198,7 +11196,6 @@ var AbstractQuery = class {
11198
11196
  table: destSchema,
11199
11197
  alias: relationship
11200
11198
  },
11201
- this.#ttl,
11202
11199
  {
11203
11200
  relationships: {},
11204
11201
  singular: secondRelation.cardinality === "one"
@@ -11247,7 +11244,6 @@ var AbstractQuery = class {
11247
11244
  }
11248
11245
  ]
11249
11246
  },
11250
- this.#ttl,
11251
11247
  {
11252
11248
  ...this.#format,
11253
11249
  relationships: {
@@ -11280,7 +11276,6 @@ var AbstractQuery = class {
11280
11276
  ...this.#ast,
11281
11277
  where: dnf(cond)
11282
11278
  },
11283
- this.#ttl,
11284
11279
  this.#format
11285
11280
  );
11286
11281
  }
@@ -11295,7 +11290,6 @@ var AbstractQuery = class {
11295
11290
  exclusive: !opts?.inclusive
11296
11291
  }
11297
11292
  },
11298
- this.#ttl,
11299
11293
  this.#format
11300
11294
  );
11301
11295
  }
@@ -11313,7 +11307,6 @@ var AbstractQuery = class {
11313
11307
  ...this.#ast,
11314
11308
  limit
11315
11309
  },
11316
- this.#ttl,
11317
11310
  this.#format
11318
11311
  );
11319
11312
  }
@@ -11325,7 +11318,6 @@ var AbstractQuery = class {
11325
11318
  ...this.#ast,
11326
11319
  orderBy: [...this.#ast.orderBy ?? [], [field, direction]]
11327
11320
  },
11328
- this.#ttl,
11329
11321
  this.#format
11330
11322
  );
11331
11323
  }
@@ -11344,7 +11336,6 @@ var AbstractQuery = class {
11344
11336
  table: destSchema,
11345
11337
  alias: `${SUBQ_PREFIX}${relationship}`
11346
11338
  },
11347
- this.#ttl,
11348
11339
  void 0
11349
11340
  )
11350
11341
  );
@@ -11381,7 +11372,6 @@ var AbstractQuery = class {
11381
11372
  table: destSchema,
11382
11373
  alias: `${SUBQ_PREFIX}${relationship}`
11383
11374
  },
11384
- this.#ttl,
11385
11375
  void 0
11386
11376
  )
11387
11377
  );
@@ -11459,29 +11449,27 @@ var AbstractQuery = class {
11459
11449
  var completedAstSymbol = Symbol();
11460
11450
  var QueryImpl = class extends AbstractQuery {
11461
11451
  #delegate;
11462
- constructor(delegate, schema, tableName, ast, ttl, format) {
11463
- super(schema, tableName, ast, ttl, format);
11452
+ constructor(delegate, schema, tableName, ast, format) {
11453
+ super(schema, tableName, ast, format);
11464
11454
  this.#delegate = delegate;
11465
11455
  }
11466
11456
  _system = "client";
11467
11457
  get [completedAstSymbol]() {
11468
11458
  return this._completeAst();
11469
11459
  }
11470
- _newQuery(schema, tableName, ast, ttl, format) {
11471
- return newQueryWithDetails(
11472
- this.#delegate,
11473
- schema,
11474
- tableName,
11475
- ast,
11476
- ttl,
11477
- format
11478
- );
11460
+ _newQuery(schema, tableName, ast, format) {
11461
+ return newQueryWithDetails(this.#delegate, schema, tableName, ast, format);
11479
11462
  }
11480
- materialize(factory) {
11463
+ materialize(factoryOrTTL, ttl = DEFAULT_TTL) {
11464
+ let factory;
11465
+ if (typeof factoryOrTTL === "function") {
11466
+ factory = factoryOrTTL;
11467
+ } else {
11468
+ ttl = factoryOrTTL ?? DEFAULT_TTL;
11469
+ }
11481
11470
  const ast = this._completeAst();
11482
11471
  const queryCompleteResolver = resolver7();
11483
11472
  let queryGot = false;
11484
- const ttl = void 0;
11485
11473
  const removeServerQuery = this.#delegate.addServerQuery(ast, ttl, (got) => {
11486
11474
  if (got) {
11487
11475
  queryGot = true;
@@ -11515,15 +11503,18 @@ var QueryImpl = class extends AbstractQuery {
11515
11503
  v2.destroy();
11516
11504
  return Promise.resolve(ret);
11517
11505
  }
11518
- preload() {
11506
+ preload(options) {
11519
11507
  const { resolve, promise: complete } = resolver7();
11520
11508
  const ast = this._completeAst();
11521
- const ttl = void 0;
11522
- const unsub = this.#delegate.addServerQuery(ast, ttl, (got) => {
11523
- if (got) {
11524
- resolve();
11509
+ const unsub = this.#delegate.addServerQuery(
11510
+ ast,
11511
+ options?.ttl ?? DEFAULT_TTL,
11512
+ (got) => {
11513
+ if (got) {
11514
+ resolve();
11515
+ }
11525
11516
  }
11526
- });
11517
+ );
11527
11518
  return {
11528
11519
  cleanup: unsub,
11529
11520
  complete
@@ -11569,8 +11560,8 @@ var StaticQuery = class _StaticQuery extends AbstractQuery {
11569
11560
  return new ExpressionBuilder(this._exists);
11570
11561
  }
11571
11562
  _system = "permissions";
11572
- _newQuery(schema, tableName, ast, ttl, format) {
11573
- return new _StaticQuery(schema, tableName, ast, ttl, format);
11563
+ _newQuery(schema, tableName, ast, format) {
11564
+ return new _StaticQuery(schema, tableName, ast, format);
11574
11565
  }
11575
11566
  get ast() {
11576
11567
  return this._completeAst();
@@ -14103,7 +14094,7 @@ function makeMessage(message, context, logLevel) {
14103
14094
  }
14104
14095
 
14105
14096
  // ../zero-client/src/client/version.ts
14106
- var version2 = "0.17.2025030300";
14097
+ var version2 = "0.17.2025030600";
14107
14098
 
14108
14099
  // ../zero-client/src/client/log-options.ts
14109
14100
  var LevelFilterLogSink = class {
@@ -15056,6 +15047,7 @@ function onClientStateNotFoundServerReason(serverErrMsg) {
15056
15047
  return `Server could not find state needed to synchronize this client. ${serverErrMsg}`;
15057
15048
  }
15058
15049
  var ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT = "The local persistent state needed to synchronize this client has been garbage collected.";
15050
+ var CLOSE_CODE_NORMAL = 1e3;
15059
15051
  var Zero = class {
15060
15052
  version = version2;
15061
15053
  #rep;
@@ -15449,16 +15441,39 @@ var Zero = class {
15449
15441
  */
15450
15442
  close() {
15451
15443
  const lc = this.#lc.withContext("close");
15444
+ lc.debug?.("Closing Zero instance. Stack:", new Error().stack);
15452
15445
  if (this.#connectionState !== Disconnected) {
15453
- this.#disconnect(lc, {
15454
- client: "ClientClosed"
15455
- });
15446
+ let closeReason = JSON.stringify([
15447
+ "closeConnection",
15448
+ []
15449
+ ]);
15450
+ if (closeReason.length > 123) {
15451
+ lc.warn?.("Close reason is too long. Removing it.");
15452
+ closeReason = "";
15453
+ }
15454
+ this.#disconnect(
15455
+ lc,
15456
+ {
15457
+ client: "ClientClosed"
15458
+ },
15459
+ CLOSE_CODE_NORMAL,
15460
+ closeReason
15461
+ );
15456
15462
  }
15457
15463
  lc.debug?.("Aborting closeAbortController due to close()");
15458
15464
  this.#closeAbortController.abort();
15459
15465
  this.#metrics.stop();
15460
15466
  return this.#rep.close();
15461
15467
  }
15468
+ #onPageHide = (e) => {
15469
+ if (e.persisted) {
15470
+ this.#lc.debug?.("Ignoring pagehide event because it was persisted");
15471
+ } else {
15472
+ this.#lc.debug?.("Closing client because we got a clean close");
15473
+ this.close().catch(() => {
15474
+ });
15475
+ }
15476
+ };
15462
15477
  #onMessage = (e) => {
15463
15478
  const lc = this.#lc;
15464
15479
  lc.debug?.("received message", e.data);
@@ -15716,6 +15731,7 @@ var Zero = class {
15716
15731
  ws.addEventListener("close", this.#onClose);
15717
15732
  this.#socket = ws;
15718
15733
  this.#socketResolver.resolve(ws);
15734
+ getBrowserGlobal("window")?.addEventListener("pagehide", this.#onPageHide);
15719
15735
  try {
15720
15736
  l.debug?.("Waiting for connection to be acknowledged");
15721
15737
  await this.#connectResolver.promise;
@@ -15727,7 +15743,7 @@ var Zero = class {
15727
15743
  );
15728
15744
  }
15729
15745
  }
15730
- #disconnect(l, reason) {
15746
+ #disconnect(l, reason, closeCode, closeReason) {
15731
15747
  if (this.#connectionState === Connecting) {
15732
15748
  this.#connectErrorCount++;
15733
15749
  }
@@ -15781,10 +15797,14 @@ var Zero = class {
15781
15797
  this.#socket?.removeEventListener("message", this.#onMessage);
15782
15798
  this.#socket?.removeEventListener("open", this.#onOpen);
15783
15799
  this.#socket?.removeEventListener("close", this.#onClose);
15784
- this.#socket?.close();
15800
+ this.#socket?.close(closeCode, closeReason);
15785
15801
  this.#socket = void 0;
15786
15802
  this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
15787
15803
  this.#pokeHandler.handleDisconnect();
15804
+ getBrowserGlobal("window")?.removeEventListener(
15805
+ "pagehide",
15806
+ this.#onPageHide
15807
+ );
15788
15808
  }
15789
15809
  #handlePokeStart(_lc, pokeMessage) {
15790
15810
  resetBackoff();
@@ -16278,4 +16298,4 @@ export {
16278
16298
  escapeLike,
16279
16299
  Zero
16280
16300
  };
16281
- //# sourceMappingURL=chunk-BBNRRMOA.js.map
16301
+ //# sourceMappingURL=chunk-XXZWDMNW.js.map