@rocicorp/zero 0.10.2025011100 → 0.11.2025011401
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.
- package/out/advanced.js +1 -1
- package/out/{chunk-Y6OVFUGE.js → chunk-I5GSZARI.js} +1 -7
- package/out/{chunk-Y6OVFUGE.js.map → chunk-I5GSZARI.js.map} +1 -1
- package/out/{chunk-FEVIDCUL.js → chunk-JWWOECJ3.js} +575 -691
- package/out/chunk-JWWOECJ3.js.map +7 -0
- package/out/replicache/src/btree/node.d.ts +5 -3
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/btree/read.d.ts +4 -1
- package/out/replicache/src/btree/read.d.ts.map +1 -1
- package/out/replicache/src/btree/write.d.ts +4 -1
- package/out/replicache/src/btree/write.d.ts.map +1 -1
- package/out/replicache/src/dag/key-type-enum.d.ts +0 -1
- package/out/replicache/src/dag/key-type-enum.d.ts.map +1 -1
- package/out/replicache/src/db/index-operation-enum.d.ts +0 -1
- package/out/replicache/src/db/index-operation-enum.d.ts.map +1 -1
- package/out/replicache/src/db/index.d.ts +4 -1
- package/out/replicache/src/db/index.d.ts.map +1 -1
- package/out/replicache/src/db/meta-type-enum.d.ts +0 -1
- package/out/replicache/src/db/meta-type-enum.d.ts.map +1 -1
- package/out/replicache/src/db/read.d.ts +4 -1
- package/out/replicache/src/db/read.d.ts.map +1 -1
- package/out/replicache/src/db/rebase.d.ts +5 -2
- package/out/replicache/src/db/rebase.d.ts.map +1 -1
- package/out/replicache/src/db/write.d.ts +8 -5
- package/out/replicache/src/db/write.d.ts.map +1 -1
- package/out/replicache/src/format-version-enum.d.ts +0 -2
- package/out/replicache/src/format-version-enum.d.ts.map +1 -1
- package/out/replicache/src/format-version.d.ts +4 -1
- package/out/replicache/src/format-version.d.ts.map +1 -1
- package/out/replicache/src/invoke-kind-enum.d.ts +0 -1
- package/out/replicache/src/invoke-kind-enum.d.ts.map +1 -1
- package/out/replicache/src/mutation-recovery.d.ts.map +1 -1
- package/out/replicache/src/persist/clients.d.ts +3 -1
- package/out/replicache/src/persist/clients.d.ts.map +1 -1
- package/out/replicache/src/persist/persist.d.ts +4 -1
- package/out/replicache/src/persist/persist.d.ts.map +1 -1
- package/out/replicache/src/persist/refresh.d.ts +4 -1
- package/out/replicache/src/persist/refresh.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +1 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/subscriptions.d.ts +5 -3
- package/out/replicache/src/subscriptions.d.ts.map +1 -1
- package/out/replicache/src/sync/diff.d.ts +4 -1
- package/out/replicache/src/sync/diff.d.ts.map +1 -1
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts +0 -1
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.d.ts +4 -3
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/shared/src/enum.d.ts +37 -0
- package/out/shared/src/enum.d.ts.map +1 -0
- package/out/shared/src/enum.js +2 -0
- package/out/shared/src/enum.js.map +1 -0
- package/out/solid.js +2 -3
- package/out/solid.js.map +1 -1
- package/out/zero-cache/src/db/mode-enum.d.ts +5 -0
- package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -0
- package/out/zero-cache/src/db/mode-enum.js +3 -0
- package/out/zero-cache/src/db/mode-enum.js.map +1 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +2 -1
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/postgres-type-class-enum.d.ts +15 -0
- package/out/zero-cache/src/db/postgres-type-class-enum.d.ts.map +1 -0
- package/out/zero-cache/src/db/postgres-type-class-enum.js +10 -0
- package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -0
- package/out/zero-cache/src/db/specs.d.ts +6 -15
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +1 -11
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts +3 -4
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +1 -5
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +13 -14
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +17 -48
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +13 -9
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +10 -10
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +4 -4
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js +7 -6
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +0 -19
- package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js +0 -19
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +8 -8
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +18 -12
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +5 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +20 -10
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +6 -10
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +0 -7
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +9 -0
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js +6 -0
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +6 -25
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +5 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +2 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +4 -3
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +17 -49
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +3 -4
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +15 -20
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts +7 -0
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.js +8 -1
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +3 -2
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +3 -2
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +4 -2
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +3 -3
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +6 -5
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-for-client.d.ts +2 -2
- package/out/zero-cache/src/types/pg.js +2 -2
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/schema-versions.js +1 -1
- package/out/zero-cache/src/types/schema-versions.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +2 -1
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +1 -1
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/connection-state-enum.d.ts +7 -0
- package/out/zero-client/src/client/connection-state-enum.d.ts.map +1 -0
- package/out/zero-client/src/client/metric-name-enum.d.ts +13 -0
- package/out/zero-client/src/client/metric-name-enum.d.ts.map +1 -0
- package/out/zero-client/src/client/metrics.d.ts +2 -9
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/ping-result-enum.d.ts +5 -0
- package/out/zero-client/src/client/ping-result-enum.d.ts.map +1 -0
- package/out/zero-client/src/client/server-error.d.ts +4 -1
- package/out/zero-client/src/client/server-error.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +4 -5
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-protocol/src/error-kind-enum.d.ts +31 -0
- package/out/zero-protocol/src/error-kind-enum.d.ts.map +1 -0
- package/out/zero-protocol/src/error-kind-enum.js +20 -0
- package/out/zero-protocol/src/error-kind-enum.js.map +1 -0
- package/out/zero-protocol/src/error.d.ts +4 -21
- package/out/zero-protocol/src/error.d.ts.map +1 -1
- package/out/zero-protocol/src/error.js +1 -21
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.d.ts +5 -0
- package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -0
- package/out/zero-protocol/src/mutation-type-enum.js +4 -0
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -0
- package/out/zero-protocol/src/push.d.ts +8 -12
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +1 -5
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +2 -2
- package/out/zero.js +2 -3
- package/package.json +2 -2
- package/out/change-protocol.js +0 -257
- package/out/change-protocol.js.map +0 -7
- package/out/chunk-FEVIDCUL.js.map +0 -7
- package/out/chunk-ZRR54VX5.js +0 -224
- package/out/chunk-ZRR54VX5.js.map +0 -7
|
@@ -7,25 +7,16 @@ import {
|
|
|
7
7
|
assertArray,
|
|
8
8
|
assertBoolean,
|
|
9
9
|
assertNotNull,
|
|
10
|
-
assertNotUndefined,
|
|
11
10
|
assertNumber,
|
|
12
11
|
assertObject,
|
|
13
12
|
assertString,
|
|
14
13
|
must,
|
|
15
14
|
throwInvalidType,
|
|
16
15
|
unreachable
|
|
17
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-I5GSZARI.js";
|
|
18
17
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
readonly,
|
|
22
|
-
readonlyArray,
|
|
23
|
-
readonlyObject,
|
|
24
|
-
readonlyRecord,
|
|
25
|
-
valita_exports
|
|
26
|
-
} from "./chunk-ZRR54VX5.js";
|
|
27
|
-
import {
|
|
28
|
-
__export
|
|
18
|
+
__export,
|
|
19
|
+
__reExport
|
|
29
20
|
} from "./chunk-F5QR3K72.js";
|
|
30
21
|
|
|
31
22
|
// ../replicache/src/call-default-fetch.ts
|
|
@@ -120,73 +111,73 @@ function deepEqual(a, b) {
|
|
|
120
111
|
}
|
|
121
112
|
return aSize === bSize;
|
|
122
113
|
}
|
|
123
|
-
function assertJSONValue(
|
|
114
|
+
function assertJSONValue(v2) {
|
|
124
115
|
if (isProd) {
|
|
125
116
|
return;
|
|
126
117
|
}
|
|
127
|
-
switch (typeof
|
|
118
|
+
switch (typeof v2) {
|
|
128
119
|
case "boolean":
|
|
129
120
|
case "number":
|
|
130
121
|
case "string":
|
|
131
122
|
return;
|
|
132
123
|
case "object":
|
|
133
|
-
if (
|
|
124
|
+
if (v2 === null) {
|
|
134
125
|
return;
|
|
135
126
|
}
|
|
136
|
-
if (Array.isArray(
|
|
137
|
-
return assertJSONArray(
|
|
127
|
+
if (Array.isArray(v2)) {
|
|
128
|
+
return assertJSONArray(v2);
|
|
138
129
|
}
|
|
139
|
-
return assertObjectIsJSONObject(
|
|
130
|
+
return assertObjectIsJSONObject(v2);
|
|
140
131
|
}
|
|
141
|
-
throwInvalidType(
|
|
132
|
+
throwInvalidType(v2, "JSON value");
|
|
142
133
|
}
|
|
143
|
-
function assertJSONObject(
|
|
144
|
-
assertObject(
|
|
145
|
-
assertObjectIsJSONObject(
|
|
134
|
+
function assertJSONObject(v2) {
|
|
135
|
+
assertObject(v2);
|
|
136
|
+
assertObjectIsJSONObject(v2);
|
|
146
137
|
}
|
|
147
|
-
function assertObjectIsJSONObject(
|
|
148
|
-
for (const k in
|
|
149
|
-
if (hasOwn(
|
|
150
|
-
const value =
|
|
138
|
+
function assertObjectIsJSONObject(v2) {
|
|
139
|
+
for (const k in v2) {
|
|
140
|
+
if (hasOwn(v2, k)) {
|
|
141
|
+
const value = v2[k];
|
|
151
142
|
if (value !== void 0) {
|
|
152
143
|
assertJSONValue(value);
|
|
153
144
|
}
|
|
154
145
|
}
|
|
155
146
|
}
|
|
156
147
|
}
|
|
157
|
-
function assertJSONArray(
|
|
158
|
-
for (const item of
|
|
148
|
+
function assertJSONArray(v2) {
|
|
149
|
+
for (const item of v2) {
|
|
159
150
|
assertJSONValue(item);
|
|
160
151
|
}
|
|
161
152
|
}
|
|
162
|
-
function isJSONValue(
|
|
163
|
-
switch (typeof
|
|
153
|
+
function isJSONValue(v2, path2) {
|
|
154
|
+
switch (typeof v2) {
|
|
164
155
|
case "boolean":
|
|
165
156
|
case "number":
|
|
166
157
|
case "string":
|
|
167
158
|
return true;
|
|
168
159
|
case "object":
|
|
169
|
-
if (
|
|
160
|
+
if (v2 === null) {
|
|
170
161
|
return true;
|
|
171
162
|
}
|
|
172
|
-
if (Array.isArray(
|
|
173
|
-
return isJSONArray(
|
|
163
|
+
if (Array.isArray(v2)) {
|
|
164
|
+
return isJSONArray(v2, path2);
|
|
174
165
|
}
|
|
175
|
-
return objectIsJSONObject(
|
|
166
|
+
return objectIsJSONObject(v2, path2);
|
|
176
167
|
}
|
|
177
168
|
return false;
|
|
178
169
|
}
|
|
179
|
-
function isJSONObject(
|
|
180
|
-
if (typeof
|
|
170
|
+
function isJSONObject(v2, path2) {
|
|
171
|
+
if (typeof v2 !== "object" || v2 === null) {
|
|
181
172
|
return false;
|
|
182
173
|
}
|
|
183
|
-
return objectIsJSONObject(
|
|
174
|
+
return objectIsJSONObject(v2, path2);
|
|
184
175
|
}
|
|
185
|
-
function objectIsJSONObject(
|
|
186
|
-
for (const k in
|
|
187
|
-
if (hasOwn(
|
|
176
|
+
function objectIsJSONObject(v2, path2) {
|
|
177
|
+
for (const k in v2) {
|
|
178
|
+
if (hasOwn(v2, k)) {
|
|
188
179
|
path2.push(k);
|
|
189
|
-
const value =
|
|
180
|
+
const value = v2[k];
|
|
190
181
|
if (value !== void 0 && !isJSONValue(value, path2)) {
|
|
191
182
|
return false;
|
|
192
183
|
}
|
|
@@ -195,10 +186,10 @@ function objectIsJSONObject(v, path2) {
|
|
|
195
186
|
}
|
|
196
187
|
return true;
|
|
197
188
|
}
|
|
198
|
-
function isJSONArray(
|
|
199
|
-
for (let i = 0; i <
|
|
189
|
+
function isJSONArray(v2, path2) {
|
|
190
|
+
for (let i = 0; i < v2.length; i++) {
|
|
200
191
|
path2.push(i);
|
|
201
|
-
if (!isJSONValue(
|
|
192
|
+
if (!isJSONValue(v2[i], path2)) {
|
|
202
193
|
return false;
|
|
203
194
|
}
|
|
204
195
|
path2.pop();
|
|
@@ -241,12 +232,12 @@ function getCompareValue(cookie) {
|
|
|
241
232
|
}
|
|
242
233
|
return cookie.order;
|
|
243
234
|
}
|
|
244
|
-
function assertCookie(
|
|
245
|
-
if (
|
|
235
|
+
function assertCookie(v2) {
|
|
236
|
+
if (v2 === null || typeof v2 === "string" || typeof v2 === "number") {
|
|
246
237
|
return;
|
|
247
238
|
}
|
|
248
|
-
assertJSONObject(
|
|
249
|
-
if (typeof
|
|
239
|
+
assertJSONObject(v2);
|
|
240
|
+
if (typeof v2.order === "string" || typeof v2.order === "number") {
|
|
250
241
|
return;
|
|
251
242
|
}
|
|
252
243
|
throw new Error("Invalid cookie");
|
|
@@ -259,14 +250,14 @@ function isError(obj, type) {
|
|
|
259
250
|
function isErrorResponse(obj) {
|
|
260
251
|
return typeof obj.error === "string";
|
|
261
252
|
}
|
|
262
|
-
function isClientStateNotFoundResponse(
|
|
263
|
-
return isError(
|
|
253
|
+
function isClientStateNotFoundResponse(v2) {
|
|
254
|
+
return isError(v2, "ClientStateNotFound");
|
|
264
255
|
}
|
|
265
|
-
function isVersionNotSupportedResponse(
|
|
266
|
-
if (!isError(
|
|
256
|
+
function isVersionNotSupportedResponse(v2) {
|
|
257
|
+
if (!isError(v2, "VersionNotSupported")) {
|
|
267
258
|
return false;
|
|
268
259
|
}
|
|
269
|
-
const { versionType } =
|
|
260
|
+
const { versionType } = v2;
|
|
270
261
|
switch (versionType) {
|
|
271
262
|
case void 0:
|
|
272
263
|
case "pull":
|
|
@@ -276,15 +267,15 @@ function isVersionNotSupportedResponse(v) {
|
|
|
276
267
|
}
|
|
277
268
|
return false;
|
|
278
269
|
}
|
|
279
|
-
function assertVersionNotSupportedResponse(
|
|
280
|
-
assert(isVersionNotSupportedResponse(
|
|
270
|
+
function assertVersionNotSupportedResponse(v2) {
|
|
271
|
+
assert(isVersionNotSupportedResponse(v2));
|
|
281
272
|
}
|
|
282
273
|
|
|
283
274
|
// ../replicache/src/http-request-info.ts
|
|
284
|
-
function assertHTTPRequestInfo(
|
|
285
|
-
assertObject(
|
|
286
|
-
assertNumber(
|
|
287
|
-
assertString(
|
|
275
|
+
function assertHTTPRequestInfo(v2) {
|
|
276
|
+
assertObject(v2);
|
|
277
|
+
assertNumber(v2.httpStatusCode);
|
|
278
|
+
assertString(v2.errorMessage);
|
|
288
279
|
}
|
|
289
280
|
|
|
290
281
|
// ../replicache/src/patch-operation.ts
|
|
@@ -349,17 +340,17 @@ var defaultPullers = /* @__PURE__ */ new WeakSet();
|
|
|
349
340
|
function isDefaultPuller(puller) {
|
|
350
341
|
return defaultPullers.has(puller);
|
|
351
342
|
}
|
|
352
|
-
function assertPullResponseV1(
|
|
353
|
-
assertObject(
|
|
354
|
-
if (isClientStateNotFoundResponse(
|
|
343
|
+
function assertPullResponseV1(v2) {
|
|
344
|
+
assertObject(v2);
|
|
345
|
+
if (isClientStateNotFoundResponse(v2) || isVersionNotSupportedResponse(v2)) {
|
|
355
346
|
return;
|
|
356
347
|
}
|
|
357
|
-
const
|
|
358
|
-
if (
|
|
359
|
-
assertCookie(
|
|
348
|
+
const v22 = v2;
|
|
349
|
+
if (v22.cookie !== void 0) {
|
|
350
|
+
assertCookie(v22.cookie);
|
|
360
351
|
}
|
|
361
|
-
assertLastMutationIDChanges(
|
|
362
|
-
assertPatchOperations(
|
|
352
|
+
assertLastMutationIDChanges(v22.lastMutationIDChanges);
|
|
353
|
+
assertPatchOperations(v22.patch);
|
|
363
354
|
}
|
|
364
355
|
function assertLastMutationIDChanges(lastMutationIDChanges) {
|
|
365
356
|
assertObject(lastMutationIDChanges);
|
|
@@ -368,11 +359,11 @@ function assertLastMutationIDChanges(lastMutationIDChanges) {
|
|
|
368
359
|
assertNumber(value);
|
|
369
360
|
}
|
|
370
361
|
}
|
|
371
|
-
function assertPullerResultV1(
|
|
372
|
-
assertObject(
|
|
373
|
-
assertHTTPRequestInfo(
|
|
374
|
-
if (
|
|
375
|
-
assertPullResponseV1(
|
|
362
|
+
function assertPullerResultV1(v2) {
|
|
363
|
+
assertObject(v2);
|
|
364
|
+
assertHTTPRequestInfo(v2.httpRequestInfo);
|
|
365
|
+
if (v2.response !== void 0) {
|
|
366
|
+
assertPullResponseV1(v2.response);
|
|
376
367
|
}
|
|
377
368
|
}
|
|
378
369
|
|
|
@@ -387,15 +378,15 @@ var promiseVoid = Promise.resolve();
|
|
|
387
378
|
|
|
388
379
|
// ../replicache/src/frozen-json.ts
|
|
389
380
|
var deepFrozenObjects = /* @__PURE__ */ new WeakSet();
|
|
390
|
-
function deepFreeze(
|
|
381
|
+
function deepFreeze(v2) {
|
|
391
382
|
if (isProd) {
|
|
392
|
-
return
|
|
383
|
+
return v2;
|
|
393
384
|
}
|
|
394
|
-
deepFreezeInternal(
|
|
395
|
-
return
|
|
385
|
+
deepFreezeInternal(v2, []);
|
|
386
|
+
return v2;
|
|
396
387
|
}
|
|
397
|
-
function deepFreezeInternal(
|
|
398
|
-
switch (typeof
|
|
388
|
+
function deepFreezeInternal(v2, seen) {
|
|
389
|
+
switch (typeof v2) {
|
|
399
390
|
case "undefined":
|
|
400
391
|
throw new TypeError("Unexpected value undefined");
|
|
401
392
|
case "boolean":
|
|
@@ -403,84 +394,84 @@ function deepFreezeInternal(v, seen) {
|
|
|
403
394
|
case "string":
|
|
404
395
|
return;
|
|
405
396
|
case "object": {
|
|
406
|
-
if (
|
|
397
|
+
if (v2 === null) {
|
|
407
398
|
return;
|
|
408
399
|
}
|
|
409
|
-
if (deepFrozenObjects.has(
|
|
400
|
+
if (deepFrozenObjects.has(v2)) {
|
|
410
401
|
return;
|
|
411
402
|
}
|
|
412
|
-
deepFrozenObjects.add(
|
|
413
|
-
if (seen.includes(
|
|
414
|
-
throwInvalidType(
|
|
403
|
+
deepFrozenObjects.add(v2);
|
|
404
|
+
if (seen.includes(v2)) {
|
|
405
|
+
throwInvalidType(v2, "Cyclic JSON object");
|
|
415
406
|
}
|
|
416
|
-
seen.push(
|
|
417
|
-
Object.freeze(
|
|
418
|
-
if (Array.isArray(
|
|
419
|
-
deepFreezeArray(
|
|
407
|
+
seen.push(v2);
|
|
408
|
+
Object.freeze(v2);
|
|
409
|
+
if (Array.isArray(v2)) {
|
|
410
|
+
deepFreezeArray(v2, seen);
|
|
420
411
|
} else {
|
|
421
|
-
deepFreezeObject(
|
|
412
|
+
deepFreezeObject(v2, seen);
|
|
422
413
|
}
|
|
423
414
|
seen.pop();
|
|
424
415
|
return;
|
|
425
416
|
}
|
|
426
417
|
default:
|
|
427
|
-
throwInvalidType(
|
|
418
|
+
throwInvalidType(v2, "JSON value");
|
|
428
419
|
}
|
|
429
420
|
}
|
|
430
|
-
function deepFreezeArray(
|
|
431
|
-
for (const item of
|
|
421
|
+
function deepFreezeArray(v2, seen) {
|
|
422
|
+
for (const item of v2) {
|
|
432
423
|
deepFreezeInternal(item, seen);
|
|
433
424
|
}
|
|
434
425
|
}
|
|
435
|
-
function deepFreezeObject(
|
|
436
|
-
for (const k in
|
|
437
|
-
if (hasOwn(
|
|
438
|
-
const value =
|
|
426
|
+
function deepFreezeObject(v2, seen) {
|
|
427
|
+
for (const k in v2) {
|
|
428
|
+
if (hasOwn(v2, k)) {
|
|
429
|
+
const value = v2[k];
|
|
439
430
|
if (value !== void 0) {
|
|
440
431
|
deepFreezeInternal(value, seen);
|
|
441
432
|
}
|
|
442
433
|
}
|
|
443
434
|
}
|
|
444
435
|
}
|
|
445
|
-
function assertDeepFrozen(
|
|
436
|
+
function assertDeepFrozen(v2) {
|
|
446
437
|
if (isProd) {
|
|
447
438
|
return;
|
|
448
439
|
}
|
|
449
|
-
if (!isDeepFrozen(
|
|
440
|
+
if (!isDeepFrozen(v2, [])) {
|
|
450
441
|
throw new Error("Expected frozen object");
|
|
451
442
|
}
|
|
452
443
|
}
|
|
453
|
-
function isDeepFrozen(
|
|
454
|
-
switch (typeof
|
|
444
|
+
function isDeepFrozen(v2, seen) {
|
|
445
|
+
switch (typeof v2) {
|
|
455
446
|
case "boolean":
|
|
456
447
|
case "number":
|
|
457
448
|
case "string":
|
|
458
449
|
return true;
|
|
459
450
|
case "object":
|
|
460
|
-
if (
|
|
451
|
+
if (v2 === null) {
|
|
461
452
|
return true;
|
|
462
453
|
}
|
|
463
|
-
if (deepFrozenObjects.has(
|
|
454
|
+
if (deepFrozenObjects.has(v2)) {
|
|
464
455
|
return true;
|
|
465
456
|
}
|
|
466
|
-
if (!Object.isFrozen(
|
|
457
|
+
if (!Object.isFrozen(v2)) {
|
|
467
458
|
return false;
|
|
468
459
|
}
|
|
469
|
-
if (seen.includes(
|
|
470
|
-
throwInvalidType(
|
|
460
|
+
if (seen.includes(v2)) {
|
|
461
|
+
throwInvalidType(v2, "Cyclic JSON object");
|
|
471
462
|
}
|
|
472
|
-
seen.push(
|
|
473
|
-
if (Array.isArray(
|
|
474
|
-
for (const item of
|
|
463
|
+
seen.push(v2);
|
|
464
|
+
if (Array.isArray(v2)) {
|
|
465
|
+
for (const item of v2) {
|
|
475
466
|
if (!isDeepFrozen(item, seen)) {
|
|
476
467
|
seen.pop();
|
|
477
468
|
return false;
|
|
478
469
|
}
|
|
479
470
|
}
|
|
480
471
|
} else {
|
|
481
|
-
for (const k in
|
|
482
|
-
if (hasOwn(
|
|
483
|
-
const value =
|
|
472
|
+
for (const k in v2) {
|
|
473
|
+
if (hasOwn(v2, k)) {
|
|
474
|
+
const value = v2[k];
|
|
484
475
|
if (value !== void 0 && !isDeepFrozen(value, seen)) {
|
|
485
476
|
seen.pop();
|
|
486
477
|
return false;
|
|
@@ -488,18 +479,18 @@ function isDeepFrozen(v, seen) {
|
|
|
488
479
|
}
|
|
489
480
|
}
|
|
490
481
|
}
|
|
491
|
-
deepFrozenObjects.add(
|
|
482
|
+
deepFrozenObjects.add(v2);
|
|
492
483
|
seen.pop();
|
|
493
484
|
return true;
|
|
494
485
|
default:
|
|
495
|
-
throwInvalidType(
|
|
486
|
+
throwInvalidType(v2, "JSON value");
|
|
496
487
|
}
|
|
497
488
|
}
|
|
498
|
-
function deepFreezeAllowUndefined(
|
|
499
|
-
if (
|
|
489
|
+
function deepFreezeAllowUndefined(v2) {
|
|
490
|
+
if (v2 === void 0) {
|
|
500
491
|
return void 0;
|
|
501
492
|
}
|
|
502
|
-
return deepFreeze(
|
|
493
|
+
return deepFreeze(v2);
|
|
503
494
|
}
|
|
504
495
|
|
|
505
496
|
// ../replicache/src/kv/write-impl-base.ts
|
|
@@ -521,16 +512,16 @@ var WriteImplBase = class {
|
|
|
521
512
|
}
|
|
522
513
|
}
|
|
523
514
|
async get(key) {
|
|
524
|
-
const
|
|
525
|
-
switch (
|
|
515
|
+
const v2 = this._pending.get(key);
|
|
516
|
+
switch (v2) {
|
|
526
517
|
case deleteSentinel:
|
|
527
518
|
return void 0;
|
|
528
519
|
case void 0: {
|
|
529
|
-
const
|
|
530
|
-
return deepFreezeAllowUndefined(
|
|
520
|
+
const v3 = await this.#read.get(key);
|
|
521
|
+
return deepFreezeAllowUndefined(v3);
|
|
531
522
|
}
|
|
532
523
|
default:
|
|
533
|
-
return
|
|
524
|
+
return v2;
|
|
534
525
|
}
|
|
535
526
|
}
|
|
536
527
|
put(key, value) {
|
|
@@ -735,7 +726,6 @@ function rejectIfClosed(tx) {
|
|
|
735
726
|
}
|
|
736
727
|
|
|
737
728
|
// ../replicache/src/format-version-enum.ts
|
|
738
|
-
var SDD = 4;
|
|
739
729
|
var DD31 = 5;
|
|
740
730
|
var V6 = 6;
|
|
741
731
|
var V7 = 7;
|
|
@@ -1443,14 +1433,14 @@ var Chunk = class {
|
|
|
1443
1433
|
this.meta = refs;
|
|
1444
1434
|
}
|
|
1445
1435
|
};
|
|
1446
|
-
function assertRefs(
|
|
1447
|
-
if (!Array.isArray(
|
|
1436
|
+
function assertRefs(v2) {
|
|
1437
|
+
if (!Array.isArray(v2)) {
|
|
1448
1438
|
throw new Error("Refs must be an array");
|
|
1449
1439
|
}
|
|
1450
|
-
if (
|
|
1451
|
-
assertString(
|
|
1452
|
-
for (let i = 1; i <
|
|
1453
|
-
assertString(
|
|
1440
|
+
if (v2.length > 0) {
|
|
1441
|
+
assertString(v2[0]);
|
|
1442
|
+
for (let i = 1; i < v2.length; i++) {
|
|
1443
|
+
assertString(v2[i]);
|
|
1454
1444
|
}
|
|
1455
1445
|
}
|
|
1456
1446
|
}
|
|
@@ -1458,9 +1448,6 @@ function createChunk(data, refs, chunkHasher) {
|
|
|
1458
1448
|
const hash2 = chunkHasher();
|
|
1459
1449
|
return new Chunk(hash2, data, refs);
|
|
1460
1450
|
}
|
|
1461
|
-
function throwChunkHasher() {
|
|
1462
|
-
throw new Error("unexpected call to compute chunk hash");
|
|
1463
|
-
}
|
|
1464
1451
|
|
|
1465
1452
|
// ../shared/src/random-uint64.ts
|
|
1466
1453
|
function randomUint64() {
|
|
@@ -1469,6 +1456,215 @@ function randomUint64() {
|
|
|
1469
1456
|
return BigInt(high) << 32n | BigInt(low);
|
|
1470
1457
|
}
|
|
1471
1458
|
|
|
1459
|
+
// ../shared/src/valita.ts
|
|
1460
|
+
var valita_exports = {};
|
|
1461
|
+
__export(valita_exports, {
|
|
1462
|
+
assert: () => assert2,
|
|
1463
|
+
deepPartial: () => deepPartial,
|
|
1464
|
+
instanceOfAbstractType: () => instanceOfAbstractType,
|
|
1465
|
+
is: () => is,
|
|
1466
|
+
parse: () => parse,
|
|
1467
|
+
readonly: () => readonly,
|
|
1468
|
+
readonlyArray: () => readonlyArray,
|
|
1469
|
+
readonlyObject: () => readonlyObject,
|
|
1470
|
+
readonlyRecord: () => readonlyRecord,
|
|
1471
|
+
test: () => test,
|
|
1472
|
+
testOptional: () => testOptional
|
|
1473
|
+
});
|
|
1474
|
+
__reExport(valita_exports, valita_star);
|
|
1475
|
+
import * as v from "@badrap/valita";
|
|
1476
|
+
import * as valita_star from "@badrap/valita";
|
|
1477
|
+
function toDisplay(value) {
|
|
1478
|
+
switch (typeof value) {
|
|
1479
|
+
case "string":
|
|
1480
|
+
case "number":
|
|
1481
|
+
case "boolean":
|
|
1482
|
+
return JSON.stringify(value);
|
|
1483
|
+
case "undefined":
|
|
1484
|
+
return "undefined";
|
|
1485
|
+
case "bigint":
|
|
1486
|
+
return value.toString() + "n";
|
|
1487
|
+
default:
|
|
1488
|
+
if (value === null) {
|
|
1489
|
+
return "null";
|
|
1490
|
+
}
|
|
1491
|
+
if (Array.isArray(value)) {
|
|
1492
|
+
return "array";
|
|
1493
|
+
}
|
|
1494
|
+
return typeof value;
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
function toDisplayAtPath(v2, path2) {
|
|
1498
|
+
if (!path2?.length) {
|
|
1499
|
+
return toDisplay(v2);
|
|
1500
|
+
}
|
|
1501
|
+
let cur = v2;
|
|
1502
|
+
for (const p of path2) {
|
|
1503
|
+
cur = cur[p];
|
|
1504
|
+
}
|
|
1505
|
+
return toDisplay(cur);
|
|
1506
|
+
}
|
|
1507
|
+
function displayList(word, expected, toDisplay2 = (x) => String(x)) {
|
|
1508
|
+
if (expected.length === 1) {
|
|
1509
|
+
return toDisplay2(expected[0]);
|
|
1510
|
+
}
|
|
1511
|
+
const suffix = `${toDisplay2(
|
|
1512
|
+
expected[expected.length - 2]
|
|
1513
|
+
)} ${word} ${toDisplay2(expected[expected.length - 1])}`;
|
|
1514
|
+
if (expected.length === 2) {
|
|
1515
|
+
return suffix;
|
|
1516
|
+
}
|
|
1517
|
+
return `${expected.slice(0, -2).map(toDisplay2).join(", ")}, ${suffix}`;
|
|
1518
|
+
}
|
|
1519
|
+
function getMessage(err2, v2, schema, mode) {
|
|
1520
|
+
const firstIssue = err2.issues[0];
|
|
1521
|
+
const { path: path2 } = firstIssue;
|
|
1522
|
+
const atPath = path2?.length ? ` at ${path2.join(".")}` : "";
|
|
1523
|
+
switch (firstIssue.code) {
|
|
1524
|
+
case "invalid_type":
|
|
1525
|
+
return `Expected ${displayList(
|
|
1526
|
+
"or",
|
|
1527
|
+
firstIssue.expected
|
|
1528
|
+
)}${atPath}. Got ${toDisplayAtPath(v2, path2)}`;
|
|
1529
|
+
case "missing_value": {
|
|
1530
|
+
const atPath2 = path2 && path2.length > 1 ? ` at ${path2.slice(0, -1).join(".")}` : "";
|
|
1531
|
+
if (firstIssue.path?.length) {
|
|
1532
|
+
return `Missing property ${firstIssue.path.at(-1)}${atPath2}`;
|
|
1533
|
+
}
|
|
1534
|
+
return `TODO Unknown missing property${atPath2}`;
|
|
1535
|
+
}
|
|
1536
|
+
case "invalid_literal":
|
|
1537
|
+
return `Expected literal value ${displayList(
|
|
1538
|
+
"or",
|
|
1539
|
+
firstIssue.expected,
|
|
1540
|
+
toDisplay
|
|
1541
|
+
)}${atPath} Got ${toDisplayAtPath(v2, path2)}`;
|
|
1542
|
+
case "invalid_length": {
|
|
1543
|
+
return `Expected array with length ${firstIssue.minLength === firstIssue.maxLength ? firstIssue.minLength : `between ${firstIssue.minLength} and ${firstIssue.maxLength}`}${atPath}. Got array with length ${v2.length}`;
|
|
1544
|
+
}
|
|
1545
|
+
case "unrecognized_keys":
|
|
1546
|
+
if (firstIssue.keys.length === 1) {
|
|
1547
|
+
return `Unexpected property ${firstIssue.keys[0]}${atPath}`;
|
|
1548
|
+
}
|
|
1549
|
+
return `Unexpected properties ${displayList(
|
|
1550
|
+
"and",
|
|
1551
|
+
firstIssue.keys
|
|
1552
|
+
)}${atPath}`;
|
|
1553
|
+
case "invalid_union":
|
|
1554
|
+
return schema.name === "union" ? getDeepestUnionParseError(v2, schema, mode ?? "strict") : `Invalid union value${atPath}`;
|
|
1555
|
+
case "custom_error": {
|
|
1556
|
+
const { error } = firstIssue;
|
|
1557
|
+
const message = !error ? "unknown" : typeof error === "string" ? error : error.message ?? "unknown";
|
|
1558
|
+
return `${message}${atPath}. Got ${toDisplayAtPath(v2, path2)}`;
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
function getDeepestUnionParseError(value, schema, mode) {
|
|
1563
|
+
const failures = [];
|
|
1564
|
+
for (const type of schema.options) {
|
|
1565
|
+
const r = type.try(value, { mode });
|
|
1566
|
+
if (!r.ok) {
|
|
1567
|
+
failures.push({ type, err: r });
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
if (failures.length) {
|
|
1571
|
+
failures.sort(pathCmp);
|
|
1572
|
+
if (failures.length === 1 || pathCmp(failures[0], failures[1]) < 0) {
|
|
1573
|
+
return getMessage(failures[0].err, value, failures[0].type, mode);
|
|
1574
|
+
}
|
|
1575
|
+
}
|
|
1576
|
+
try {
|
|
1577
|
+
const str = JSON.stringify(value);
|
|
1578
|
+
return `Invalid union value: ${str}`;
|
|
1579
|
+
} catch (e) {
|
|
1580
|
+
return `Invalid union value`;
|
|
1581
|
+
}
|
|
1582
|
+
}
|
|
1583
|
+
function pathCmp(a, b) {
|
|
1584
|
+
const aPath = a.err.issues[0].path;
|
|
1585
|
+
const bPath = b.err.issues[0].path;
|
|
1586
|
+
if (aPath.length !== bPath.length) {
|
|
1587
|
+
return bPath.length - aPath.length;
|
|
1588
|
+
}
|
|
1589
|
+
for (let i = 0; i < aPath.length; i++) {
|
|
1590
|
+
if (bPath[i] > aPath[i]) {
|
|
1591
|
+
return -1;
|
|
1592
|
+
}
|
|
1593
|
+
if (bPath[i] < aPath[i]) {
|
|
1594
|
+
return 1;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1597
|
+
return 0;
|
|
1598
|
+
}
|
|
1599
|
+
function parse(value, schema, mode) {
|
|
1600
|
+
const res = test(value, schema, mode);
|
|
1601
|
+
if (!res.ok) {
|
|
1602
|
+
throw new TypeError(res.error);
|
|
1603
|
+
}
|
|
1604
|
+
return res.value;
|
|
1605
|
+
}
|
|
1606
|
+
function is(value, schema, mode) {
|
|
1607
|
+
return test(value, schema, mode).ok;
|
|
1608
|
+
}
|
|
1609
|
+
function assert2(value, schema, mode) {
|
|
1610
|
+
parse(value, schema, mode);
|
|
1611
|
+
}
|
|
1612
|
+
function test(value, schema, mode) {
|
|
1613
|
+
const res = schema.try(value, mode ? { mode } : void 0);
|
|
1614
|
+
if (!res.ok) {
|
|
1615
|
+
return {
|
|
1616
|
+
ok: false,
|
|
1617
|
+
error: getMessage(res, value, schema, mode)
|
|
1618
|
+
};
|
|
1619
|
+
}
|
|
1620
|
+
return res;
|
|
1621
|
+
}
|
|
1622
|
+
function testOptional(value, schema, mode) {
|
|
1623
|
+
let flags = 1;
|
|
1624
|
+
if (mode === "passthrough") {
|
|
1625
|
+
flags = 0;
|
|
1626
|
+
} else if (mode === "strip") {
|
|
1627
|
+
flags = 2;
|
|
1628
|
+
}
|
|
1629
|
+
const res = schema.func(value, flags);
|
|
1630
|
+
if (res === void 0) {
|
|
1631
|
+
return { ok: true, value };
|
|
1632
|
+
} else if (res.ok) {
|
|
1633
|
+
return res;
|
|
1634
|
+
}
|
|
1635
|
+
const err2 = new v.ValitaError(res);
|
|
1636
|
+
return { ok: false, error: getMessage(err2, value, schema, mode) };
|
|
1637
|
+
}
|
|
1638
|
+
function readonly(t2) {
|
|
1639
|
+
return t2;
|
|
1640
|
+
}
|
|
1641
|
+
function readonlyObject(t2) {
|
|
1642
|
+
return v.object(t2);
|
|
1643
|
+
}
|
|
1644
|
+
function readonlyArray(t2) {
|
|
1645
|
+
return v.array(t2);
|
|
1646
|
+
}
|
|
1647
|
+
function readonlyRecord(t2) {
|
|
1648
|
+
return v.record(t2);
|
|
1649
|
+
}
|
|
1650
|
+
var AbstractType = Object.getPrototypeOf(
|
|
1651
|
+
Object.getPrototypeOf(v.string().optional())
|
|
1652
|
+
).constructor;
|
|
1653
|
+
function instanceOfAbstractType(obj) {
|
|
1654
|
+
return obj instanceof AbstractType;
|
|
1655
|
+
}
|
|
1656
|
+
function deepPartial(s) {
|
|
1657
|
+
const shape = {};
|
|
1658
|
+
for (const [key, type] of Object.entries(s.shape)) {
|
|
1659
|
+
if (type.name === "object") {
|
|
1660
|
+
shape[key] = deepPartial(type).optional();
|
|
1661
|
+
} else {
|
|
1662
|
+
shape[key] = type.optional();
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
return v.object(shape);
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1472
1668
|
// ../replicache/src/hash.ts
|
|
1473
1669
|
var STRING_LENGTH = 22;
|
|
1474
1670
|
var hashRe = /^[0-9a-v-]+$/;
|
|
@@ -1875,11 +2071,11 @@ var LazyWrite = class extends LazyRead {
|
|
|
1875
2071
|
}
|
|
1876
2072
|
async #setHead(name, hash2) {
|
|
1877
2073
|
const oldHash = await this.getHead(name);
|
|
1878
|
-
const
|
|
1879
|
-
if (
|
|
2074
|
+
const v2 = this._pendingHeadChanges.get(name);
|
|
2075
|
+
if (v2 === void 0) {
|
|
1880
2076
|
this._pendingHeadChanges.set(name, { new: hash2, old: oldHash });
|
|
1881
2077
|
} else {
|
|
1882
|
-
|
|
2078
|
+
v2.new = hash2;
|
|
1883
2079
|
}
|
|
1884
2080
|
}
|
|
1885
2081
|
isMemOnlyChunkHash(hash2) {
|
|
@@ -2253,11 +2449,11 @@ var WriteImpl3 = class extends ReadImpl3 {
|
|
|
2253
2449
|
} else {
|
|
2254
2450
|
p1 = this._tx.put(hk, hash2);
|
|
2255
2451
|
}
|
|
2256
|
-
const
|
|
2257
|
-
if (
|
|
2452
|
+
const v2 = this.#changedHeads.get(name);
|
|
2453
|
+
if (v2 === void 0) {
|
|
2258
2454
|
this.#changedHeads.set(name, { new: hash2, old: oldHash });
|
|
2259
2455
|
} else {
|
|
2260
|
-
|
|
2456
|
+
v2.new = hash2;
|
|
2261
2457
|
}
|
|
2262
2458
|
await p1;
|
|
2263
2459
|
}
|
|
@@ -2457,32 +2653,32 @@ async function commitFromHead(name, dagRead) {
|
|
|
2457
2653
|
const hash2 = await mustGetHeadHash(name, dagRead);
|
|
2458
2654
|
return commitFromHash(hash2, dagRead);
|
|
2459
2655
|
}
|
|
2460
|
-
function assertLocalMetaDD31(
|
|
2461
|
-
assertString(
|
|
2462
|
-
assertNumber(
|
|
2463
|
-
assertString(
|
|
2464
|
-
if (!
|
|
2656
|
+
function assertLocalMetaDD31(v2) {
|
|
2657
|
+
assertString(v2.clientID);
|
|
2658
|
+
assertNumber(v2.mutationID);
|
|
2659
|
+
assertString(v2.mutatorName);
|
|
2660
|
+
if (!v2.mutatorName) {
|
|
2465
2661
|
throw new Error("Missing mutator name");
|
|
2466
2662
|
}
|
|
2467
|
-
assertJSONValue(
|
|
2468
|
-
if (
|
|
2469
|
-
assertHash(
|
|
2663
|
+
assertJSONValue(v2.mutatorArgsJSON);
|
|
2664
|
+
if (v2.originalHash !== null) {
|
|
2665
|
+
assertHash(v2.originalHash);
|
|
2470
2666
|
}
|
|
2471
|
-
assertNumber(
|
|
2667
|
+
assertNumber(v2.timestamp);
|
|
2472
2668
|
}
|
|
2473
2669
|
function isLocalMetaDD31(meta) {
|
|
2474
2670
|
return meta.type === LocalDD31;
|
|
2475
2671
|
}
|
|
2476
|
-
function assertSnapshotMetaDD31(
|
|
2477
|
-
if (
|
|
2478
|
-
assertHash(
|
|
2672
|
+
function assertSnapshotMetaDD31(v2) {
|
|
2673
|
+
if (v2.basisHash !== null) {
|
|
2674
|
+
assertHash(v2.basisHash);
|
|
2479
2675
|
}
|
|
2480
|
-
assertJSONValue(
|
|
2481
|
-
assertLastMutationIDs(
|
|
2676
|
+
assertJSONValue(v2.cookieJSON);
|
|
2677
|
+
assertLastMutationIDs(v2.lastMutationIDs);
|
|
2482
2678
|
}
|
|
2483
|
-
function assertLastMutationIDs(
|
|
2484
|
-
assertObject(
|
|
2485
|
-
for (const e of Object.values(
|
|
2679
|
+
function assertLastMutationIDs(v2) {
|
|
2680
|
+
assertObject(v2);
|
|
2681
|
+
for (const e of Object.values(v2)) {
|
|
2486
2682
|
assertNumber(e);
|
|
2487
2683
|
}
|
|
2488
2684
|
}
|
|
@@ -2492,35 +2688,35 @@ function assertSnapshotCommitDD31(c) {
|
|
|
2492
2688
|
function isSnapshotMetaDD31(meta) {
|
|
2493
2689
|
return meta.type === SnapshotDD31;
|
|
2494
2690
|
}
|
|
2495
|
-
function assertMeta(
|
|
2496
|
-
assertObject(
|
|
2497
|
-
assertDeepFrozen(
|
|
2498
|
-
if (
|
|
2499
|
-
assertString(
|
|
2691
|
+
function assertMeta(v2) {
|
|
2692
|
+
assertObject(v2);
|
|
2693
|
+
assertDeepFrozen(v2);
|
|
2694
|
+
if (v2.basisHash !== null) {
|
|
2695
|
+
assertString(v2.basisHash);
|
|
2500
2696
|
}
|
|
2501
|
-
assertNumber(
|
|
2502
|
-
switch (
|
|
2697
|
+
assertNumber(v2.type);
|
|
2698
|
+
switch (v2.type) {
|
|
2503
2699
|
case LocalDD31:
|
|
2504
|
-
assertLocalMetaDD31(
|
|
2700
|
+
assertLocalMetaDD31(v2);
|
|
2505
2701
|
break;
|
|
2506
2702
|
case SnapshotDD31:
|
|
2507
|
-
assertSnapshotMetaDD31(
|
|
2703
|
+
assertSnapshotMetaDD31(v2);
|
|
2508
2704
|
break;
|
|
2509
2705
|
default:
|
|
2510
|
-
throw new Error(`Invalid enum value ${
|
|
2706
|
+
throw new Error(`Invalid enum value ${v2.type}`);
|
|
2511
2707
|
}
|
|
2512
2708
|
}
|
|
2513
2709
|
function chunkIndexDefinitionEqualIgnoreName(a, b) {
|
|
2514
2710
|
return a.jsonPointer === b.jsonPointer && (a.allowEmpty ?? false) === (b.allowEmpty ?? false) && a.keyPrefix === b.keyPrefix;
|
|
2515
2711
|
}
|
|
2516
|
-
function assertChunkIndexDefinition(
|
|
2517
|
-
assertObject(
|
|
2518
|
-
assertDeepFrozen(
|
|
2519
|
-
assertString(
|
|
2520
|
-
assertString(
|
|
2521
|
-
assertString(
|
|
2522
|
-
if (
|
|
2523
|
-
assertBoolean(
|
|
2712
|
+
function assertChunkIndexDefinition(v2) {
|
|
2713
|
+
assertObject(v2);
|
|
2714
|
+
assertDeepFrozen(v2);
|
|
2715
|
+
assertString(v2.name);
|
|
2716
|
+
assertString(v2.keyPrefix);
|
|
2717
|
+
assertString(v2.jsonPointer);
|
|
2718
|
+
if (v2.allowEmpty !== void 0) {
|
|
2719
|
+
assertBoolean(v2.allowEmpty);
|
|
2524
2720
|
}
|
|
2525
2721
|
}
|
|
2526
2722
|
function toChunkIndexDefinition(name, indexDefinition) {
|
|
@@ -2531,16 +2727,16 @@ function toChunkIndexDefinition(name, indexDefinition) {
|
|
|
2531
2727
|
allowEmpty: indexDefinition.allowEmpty ?? false
|
|
2532
2728
|
};
|
|
2533
2729
|
}
|
|
2534
|
-
function assertIndexRecord(
|
|
2535
|
-
assertObject(
|
|
2536
|
-
assertDeepFrozen(
|
|
2537
|
-
assertChunkIndexDefinition(
|
|
2538
|
-
assertString(
|
|
2730
|
+
function assertIndexRecord(v2) {
|
|
2731
|
+
assertObject(v2);
|
|
2732
|
+
assertDeepFrozen(v2);
|
|
2733
|
+
assertChunkIndexDefinition(v2.definition);
|
|
2734
|
+
assertString(v2.valueHash);
|
|
2539
2735
|
}
|
|
2540
|
-
function assertIndexRecords(
|
|
2541
|
-
assertArray(
|
|
2542
|
-
assertDeepFrozen(
|
|
2543
|
-
for (const ir of
|
|
2736
|
+
function assertIndexRecords(v2) {
|
|
2737
|
+
assertArray(v2);
|
|
2738
|
+
assertDeepFrozen(v2);
|
|
2739
|
+
for (const ir of v2) {
|
|
2544
2740
|
assertIndexRecord(ir);
|
|
2545
2741
|
}
|
|
2546
2742
|
}
|
|
@@ -2614,15 +2810,15 @@ function makeCommitData(meta, valueHash, indexes) {
|
|
|
2614
2810
|
indexes
|
|
2615
2811
|
});
|
|
2616
2812
|
}
|
|
2617
|
-
function assertCommitData(
|
|
2813
|
+
function assertCommitData(v2) {
|
|
2618
2814
|
if (isProd) {
|
|
2619
2815
|
return;
|
|
2620
2816
|
}
|
|
2621
|
-
assertObject(
|
|
2622
|
-
assertDeepFrozen(
|
|
2623
|
-
assertMeta(
|
|
2624
|
-
assertString(
|
|
2625
|
-
assertIndexRecords(
|
|
2817
|
+
assertObject(v2);
|
|
2818
|
+
assertDeepFrozen(v2);
|
|
2819
|
+
assertMeta(v2.meta);
|
|
2820
|
+
assertString(v2.valueHash);
|
|
2821
|
+
assertIndexRecords(v2.indexes);
|
|
2626
2822
|
}
|
|
2627
2823
|
function validateChunk(chunk) {
|
|
2628
2824
|
const { data } = chunk;
|
|
@@ -2692,14 +2888,14 @@ function binarySearch2(key, entries) {
|
|
|
2692
2888
|
function binarySearchFound(i, entries, key) {
|
|
2693
2889
|
return i !== entries.length && entries[i][0] === key;
|
|
2694
2890
|
}
|
|
2695
|
-
function parseBTreeNode(
|
|
2891
|
+
function parseBTreeNode(v2, formatVersion, getSizeOfEntry2) {
|
|
2696
2892
|
if (isProd && formatVersion >= V7) {
|
|
2697
|
-
return
|
|
2893
|
+
return v2;
|
|
2698
2894
|
}
|
|
2699
|
-
assertArray(
|
|
2700
|
-
assertDeepFrozen(
|
|
2701
|
-
assert(
|
|
2702
|
-
const [level, entries] =
|
|
2895
|
+
assertArray(v2);
|
|
2896
|
+
assertDeepFrozen(v2);
|
|
2897
|
+
assert(v2.length >= 2);
|
|
2898
|
+
const [level, entries] = v2;
|
|
2703
2899
|
assertNumber(level);
|
|
2704
2900
|
assertArray(entries);
|
|
2705
2901
|
const f = level > 0 ? assertString : assertJSONValue;
|
|
@@ -2707,7 +2903,7 @@ function parseBTreeNode(v, formatVersion, getSizeOfEntry2) {
|
|
|
2707
2903
|
for (const e of entries) {
|
|
2708
2904
|
assertEntry(e, f);
|
|
2709
2905
|
}
|
|
2710
|
-
return
|
|
2906
|
+
return v2;
|
|
2711
2907
|
}
|
|
2712
2908
|
const newEntries = entries.map((e) => convertNonV7Entry(e, f, getSizeOfEntry2));
|
|
2713
2909
|
return [level, newEntries];
|
|
@@ -2801,13 +2997,13 @@ var DataNodeImpl = class extends NodeImpl {
|
|
|
2801
2997
|
}
|
|
2802
2998
|
}
|
|
2803
2999
|
};
|
|
2804
|
-
function readonlySplice(
|
|
2805
|
-
const arr =
|
|
3000
|
+
function readonlySplice(array10, start, deleteCount, ...items) {
|
|
3001
|
+
const arr = array10.slice(0, start);
|
|
2806
3002
|
for (let i = 0; i < items.length; i++) {
|
|
2807
3003
|
arr.push(items[i]);
|
|
2808
3004
|
}
|
|
2809
|
-
for (let i = start + deleteCount; i <
|
|
2810
|
-
arr.push(
|
|
3005
|
+
for (let i = start + deleteCount; i < array10.length; i++) {
|
|
3006
|
+
arr.push(array10[i]);
|
|
2811
3007
|
}
|
|
2812
3008
|
return arr;
|
|
2813
3009
|
}
|
|
@@ -3559,8 +3755,8 @@ import { greaterThan } from "compare-utf8";
|
|
|
3559
3755
|
// ../replicache/src/async-iterable-to-array.ts
|
|
3560
3756
|
async function asyncIterableToArray(it) {
|
|
3561
3757
|
const arr = [];
|
|
3562
|
-
for await (const
|
|
3563
|
-
arr.push(
|
|
3758
|
+
for await (const v2 of it) {
|
|
3759
|
+
arr.push(v2);
|
|
3564
3760
|
}
|
|
3565
3761
|
return arr;
|
|
3566
3762
|
}
|
|
@@ -4502,14 +4698,6 @@ function createLogContext(logLevel = "info", logSinks = [consoleLogSink], contex
|
|
|
4502
4698
|
return new LogContext(logLevel, context, logSink);
|
|
4503
4699
|
}
|
|
4504
4700
|
|
|
4505
|
-
// ../replicache/src/format-version.ts
|
|
4506
|
-
function parseReplicacheFormatVersion(v) {
|
|
4507
|
-
if (v !== (v | 0) || v < SDD || v > Latest) {
|
|
4508
|
-
throw new Error(`Unsupported format version: ${v}`);
|
|
4509
|
-
}
|
|
4510
|
-
return v;
|
|
4511
|
-
}
|
|
4512
|
-
|
|
4513
4701
|
// ../replicache/src/index-defs.ts
|
|
4514
4702
|
var indexDefinitionSchema = readonlyObject({
|
|
4515
4703
|
prefix: valita_exports.string().optional(),
|
|
@@ -5070,22 +5258,22 @@ function maybeEndPull(store, lc, expectedSyncHead, clientID, diffConfig, formatV
|
|
|
5070
5258
|
// ../shared/src/json-schema.ts
|
|
5071
5259
|
import * as valita from "@badrap/valita";
|
|
5072
5260
|
var path = [];
|
|
5073
|
-
var jsonSchema = valita_exports.unknown().chain((
|
|
5261
|
+
var jsonSchema = valita_exports.unknown().chain((v2) => {
|
|
5074
5262
|
if (isProd) {
|
|
5075
|
-
return valita.ok(
|
|
5263
|
+
return valita.ok(v2);
|
|
5076
5264
|
}
|
|
5077
|
-
const rv = isJSONValue(
|
|
5265
|
+
const rv = isJSONValue(v2, path) ? valita.ok(v2) : valita.err({
|
|
5078
5266
|
message: `Not a JSON value`,
|
|
5079
5267
|
path: path.slice()
|
|
5080
5268
|
});
|
|
5081
5269
|
path.length = 0;
|
|
5082
5270
|
return rv;
|
|
5083
5271
|
});
|
|
5084
|
-
var jsonObjectSchema = valita_exports.unknown().chain((
|
|
5272
|
+
var jsonObjectSchema = valita_exports.unknown().chain((v2) => {
|
|
5085
5273
|
if (isProd) {
|
|
5086
|
-
return valita.ok(
|
|
5274
|
+
return valita.ok(v2);
|
|
5087
5275
|
}
|
|
5088
|
-
const rv = isJSONObject(
|
|
5276
|
+
const rv = isJSONObject(v2, path) ? valita.ok(v2) : valita.err({
|
|
5089
5277
|
message: `Not a JSON object`,
|
|
5090
5278
|
path: path.slice()
|
|
5091
5279
|
});
|
|
@@ -5094,18 +5282,18 @@ var jsonObjectSchema = valita_exports.unknown().chain((v) => {
|
|
|
5094
5282
|
});
|
|
5095
5283
|
|
|
5096
5284
|
// ../replicache/src/pusher.ts
|
|
5097
|
-
function assertPusherResult(
|
|
5098
|
-
assertObject(
|
|
5099
|
-
assertHTTPRequestInfo(
|
|
5100
|
-
if (
|
|
5101
|
-
assertPushResponse(
|
|
5285
|
+
function assertPusherResult(v2) {
|
|
5286
|
+
assertObject(v2);
|
|
5287
|
+
assertHTTPRequestInfo(v2.httpRequestInfo);
|
|
5288
|
+
if (v2.response !== void 0) {
|
|
5289
|
+
assertPushResponse(v2.response);
|
|
5102
5290
|
}
|
|
5103
5291
|
}
|
|
5104
|
-
function assertPushResponse(
|
|
5105
|
-
if (isClientStateNotFoundResponse(
|
|
5292
|
+
function assertPushResponse(v2) {
|
|
5293
|
+
if (isClientStateNotFoundResponse(v2)) {
|
|
5106
5294
|
return;
|
|
5107
5295
|
}
|
|
5108
|
-
assertVersionNotSupportedResponse(
|
|
5296
|
+
assertVersionNotSupportedResponse(v2);
|
|
5109
5297
|
}
|
|
5110
5298
|
var PushError = class extends Error {
|
|
5111
5299
|
name = "PushError";
|
|
@@ -5201,346 +5389,6 @@ async function callPusher(pusher, body, requestID) {
|
|
|
5201
5389
|
|
|
5202
5390
|
// ../replicache/src/mutation-recovery.ts
|
|
5203
5391
|
var MUTATION_RECOVERY_LAZY_STORE_SOURCE_CHUNK_CACHE_SIZE_LIMIT = 10 * 2 ** 20;
|
|
5204
|
-
var MutationRecovery = class {
|
|
5205
|
-
#recoveringMutations = false;
|
|
5206
|
-
#options;
|
|
5207
|
-
constructor(options) {
|
|
5208
|
-
this.#options = options;
|
|
5209
|
-
}
|
|
5210
|
-
async recoverMutations(ready, perdag, idbDatabase, idbDatabases, createStore) {
|
|
5211
|
-
const { lc, enableMutationRecovery, isPushDisabled, delegate } = this.#options;
|
|
5212
|
-
if (!enableMutationRecovery || this.#recoveringMutations || !delegate.online || delegate.closed || isPushDisabled()) {
|
|
5213
|
-
return false;
|
|
5214
|
-
}
|
|
5215
|
-
const stepDescription = "Recovering mutations.";
|
|
5216
|
-
lc.debug?.("Start:", stepDescription);
|
|
5217
|
-
try {
|
|
5218
|
-
this.#recoveringMutations = true;
|
|
5219
|
-
await ready;
|
|
5220
|
-
await recoverMutationsFromPerdag(idbDatabase, this.#options, perdag);
|
|
5221
|
-
for (const database of Object.values(await idbDatabases.getDatabases())) {
|
|
5222
|
-
if (delegate.closed) {
|
|
5223
|
-
lc.debug?.("Exiting early due to close:", stepDescription);
|
|
5224
|
-
return true;
|
|
5225
|
-
}
|
|
5226
|
-
if (database.replicacheName === delegate.name && database.name !== delegate.idbName) {
|
|
5227
|
-
switch (database.replicacheFormatVersion) {
|
|
5228
|
-
case SDD:
|
|
5229
|
-
case DD31:
|
|
5230
|
-
case V6:
|
|
5231
|
-
case V7:
|
|
5232
|
-
await recoverMutationsWithNewPerdag(
|
|
5233
|
-
database,
|
|
5234
|
-
this.#options,
|
|
5235
|
-
createStore
|
|
5236
|
-
);
|
|
5237
|
-
}
|
|
5238
|
-
}
|
|
5239
|
-
}
|
|
5240
|
-
} catch (e) {
|
|
5241
|
-
logMutationRecoveryError(e, lc, stepDescription, delegate);
|
|
5242
|
-
} finally {
|
|
5243
|
-
lc.debug?.("End:", stepDescription);
|
|
5244
|
-
this.#recoveringMutations = false;
|
|
5245
|
-
}
|
|
5246
|
-
return true;
|
|
5247
|
-
}
|
|
5248
|
-
};
|
|
5249
|
-
function logMutationRecoveryError(e, lc, stepDescription, closedDelegate) {
|
|
5250
|
-
if (closedDelegate.closed) {
|
|
5251
|
-
lc.debug?.(
|
|
5252
|
-
`Mutation recovery error likely due to close during:
|
|
5253
|
-
${stepDescription}
|
|
5254
|
-
Error:
|
|
5255
|
-
`,
|
|
5256
|
-
e
|
|
5257
|
-
);
|
|
5258
|
-
} else {
|
|
5259
|
-
lc.error?.(
|
|
5260
|
-
`Mutation recovery error during:
|
|
5261
|
-
${stepDescription}
|
|
5262
|
-
Error:
|
|
5263
|
-
`,
|
|
5264
|
-
e
|
|
5265
|
-
);
|
|
5266
|
-
}
|
|
5267
|
-
}
|
|
5268
|
-
async function recoverMutationsWithNewPerdag(database, options, createStore) {
|
|
5269
|
-
const perKvStore = createStore(database.name);
|
|
5270
|
-
const perdag = new StoreImpl(perKvStore, newRandomHash, assertHash);
|
|
5271
|
-
try {
|
|
5272
|
-
await recoverMutationsFromPerdag(database, options, perdag);
|
|
5273
|
-
} finally {
|
|
5274
|
-
await perdag.close();
|
|
5275
|
-
}
|
|
5276
|
-
}
|
|
5277
|
-
function recoverMutationsFromPerdag(database, options, perdag) {
|
|
5278
|
-
assert(database.replicacheFormatVersion >= DD31);
|
|
5279
|
-
return recoverMutationsFromPerdagDD31(database, options, perdag);
|
|
5280
|
-
}
|
|
5281
|
-
async function recoverMutationsFromPerdagDD31(database, options, perdag) {
|
|
5282
|
-
const { delegate, lc } = options;
|
|
5283
|
-
const stepDescription = `Recovering mutations from db ${database.name}.`;
|
|
5284
|
-
lc.debug?.("Start:", stepDescription);
|
|
5285
|
-
try {
|
|
5286
|
-
const formatVersion = parseReplicacheFormatVersion(database.replicacheFormatVersion);
|
|
5287
|
-
let clientGroups = await withRead(
|
|
5288
|
-
perdag,
|
|
5289
|
-
(read) => getClientGroups(read)
|
|
5290
|
-
);
|
|
5291
|
-
const clientGroupIDsVisited = /* @__PURE__ */ new Set();
|
|
5292
|
-
while (clientGroups) {
|
|
5293
|
-
let newClientGroups;
|
|
5294
|
-
for (const [clientGroupID, clientGroup] of clientGroups) {
|
|
5295
|
-
if (delegate.closed) {
|
|
5296
|
-
lc.debug?.("Exiting early due to close:", stepDescription);
|
|
5297
|
-
return;
|
|
5298
|
-
}
|
|
5299
|
-
if (!clientGroupIDsVisited.has(clientGroupID)) {
|
|
5300
|
-
clientGroupIDsVisited.add(clientGroupID);
|
|
5301
|
-
newClientGroups = await recoverMutationsOfClientGroupDD31(
|
|
5302
|
-
clientGroup,
|
|
5303
|
-
clientGroupID,
|
|
5304
|
-
perdag,
|
|
5305
|
-
database,
|
|
5306
|
-
options,
|
|
5307
|
-
formatVersion
|
|
5308
|
-
);
|
|
5309
|
-
if (newClientGroups) {
|
|
5310
|
-
break;
|
|
5311
|
-
}
|
|
5312
|
-
}
|
|
5313
|
-
}
|
|
5314
|
-
clientGroups = newClientGroups;
|
|
5315
|
-
}
|
|
5316
|
-
} catch (e) {
|
|
5317
|
-
logMutationRecoveryError(e, lc, stepDescription, delegate);
|
|
5318
|
-
}
|
|
5319
|
-
lc.debug?.("End:", stepDescription);
|
|
5320
|
-
}
|
|
5321
|
-
function isResponseThatShouldDisableClientGroup(response) {
|
|
5322
|
-
return isClientStateNotFoundResponse(response) || isVersionNotSupportedResponse(response);
|
|
5323
|
-
}
|
|
5324
|
-
async function disableClientGroup2(lc, selfClientGroupID, clientGroupID, response, perdag) {
|
|
5325
|
-
if (isClientStateNotFoundResponse(response)) {
|
|
5326
|
-
lc.debug?.(
|
|
5327
|
-
`Client group ${selfClientGroupID} cannot recover mutations for client group ${clientGroupID}. The client group is unknown on the server. Marking it as disabled.`
|
|
5328
|
-
);
|
|
5329
|
-
} else if (isVersionNotSupportedResponse(response)) {
|
|
5330
|
-
lc.debug?.(
|
|
5331
|
-
`Client group ${selfClientGroupID} cannot recover mutations for client group ${clientGroupID}. The client group's version is not supported on the server. versionType: ${response.versionType}. Marking it as disabled.`
|
|
5332
|
-
);
|
|
5333
|
-
}
|
|
5334
|
-
await withWrite(
|
|
5335
|
-
perdag,
|
|
5336
|
-
(perdagWrite) => disableClientGroup(clientGroupID, perdagWrite)
|
|
5337
|
-
);
|
|
5338
|
-
}
|
|
5339
|
-
async function recoverMutationsOfClientGroupDD31(clientGroup, clientGroupID, perdag, database, options, formatVersion) {
|
|
5340
|
-
assert(database.replicacheFormatVersion >= DD31);
|
|
5341
|
-
const {
|
|
5342
|
-
delegate,
|
|
5343
|
-
lc,
|
|
5344
|
-
wrapInOnlineCheck,
|
|
5345
|
-
wrapInReauthRetries,
|
|
5346
|
-
isPushDisabled,
|
|
5347
|
-
isPullDisabled,
|
|
5348
|
-
clientGroupIDPromise
|
|
5349
|
-
} = options;
|
|
5350
|
-
const selfClientGroupID = await clientGroupIDPromise;
|
|
5351
|
-
assertNotUndefined(selfClientGroupID);
|
|
5352
|
-
if (selfClientGroupID === clientGroupID) {
|
|
5353
|
-
return;
|
|
5354
|
-
}
|
|
5355
|
-
let clientID;
|
|
5356
|
-
let allAckd = true;
|
|
5357
|
-
for (const [cid, mutationID] of Object.entries(clientGroup.mutationIDs)) {
|
|
5358
|
-
if (!clientGroup.lastServerAckdMutationIDs[cid] || clientGroup.lastServerAckdMutationIDs[cid] < mutationID) {
|
|
5359
|
-
clientID = cid;
|
|
5360
|
-
allAckd = false;
|
|
5361
|
-
break;
|
|
5362
|
-
}
|
|
5363
|
-
}
|
|
5364
|
-
if (allAckd) {
|
|
5365
|
-
return;
|
|
5366
|
-
}
|
|
5367
|
-
if (clientGroup.disabled) {
|
|
5368
|
-
lc.debug?.(
|
|
5369
|
-
`Not recovering mutations for client group ${clientGroupID} because group is disabled.`
|
|
5370
|
-
);
|
|
5371
|
-
return;
|
|
5372
|
-
}
|
|
5373
|
-
const stepDescription = `Recovering mutations for client group ${clientGroupID}.`;
|
|
5374
|
-
lc.debug?.("Start:", stepDescription);
|
|
5375
|
-
const lazyDagForOtherClientGroup = new LazyStore(
|
|
5376
|
-
perdag,
|
|
5377
|
-
MUTATION_RECOVERY_LAZY_STORE_SOURCE_CHUNK_CACHE_SIZE_LIMIT,
|
|
5378
|
-
throwChunkHasher,
|
|
5379
|
-
assertHash
|
|
5380
|
-
);
|
|
5381
|
-
try {
|
|
5382
|
-
await withWrite(
|
|
5383
|
-
lazyDagForOtherClientGroup,
|
|
5384
|
-
(write) => write.setHead(DEFAULT_HEAD_NAME, clientGroup.headHash)
|
|
5385
|
-
);
|
|
5386
|
-
if (isPushDisabled()) {
|
|
5387
|
-
lc.debug?.(
|
|
5388
|
-
`Cannot recover mutations for client group ${clientGroupID} because push is disabled.`
|
|
5389
|
-
);
|
|
5390
|
-
return;
|
|
5391
|
-
}
|
|
5392
|
-
const { pusher } = delegate;
|
|
5393
|
-
const pushDescription = "recoveringMutationsPush";
|
|
5394
|
-
const pushSucceeded = await wrapInOnlineCheck(async () => {
|
|
5395
|
-
const { result: pusherResult } = await wrapInReauthRetries(
|
|
5396
|
-
async (requestID, requestLc) => {
|
|
5397
|
-
assert(clientID);
|
|
5398
|
-
assert(lazyDagForOtherClientGroup);
|
|
5399
|
-
const pusherResult2 = await push(
|
|
5400
|
-
requestID,
|
|
5401
|
-
lazyDagForOtherClientGroup,
|
|
5402
|
-
requestLc,
|
|
5403
|
-
await delegate.profileID,
|
|
5404
|
-
clientGroupID,
|
|
5405
|
-
// TODO(DD31): clientID is not needed in DD31. It is currently kept for debugging purpose.
|
|
5406
|
-
clientID,
|
|
5407
|
-
pusher,
|
|
5408
|
-
database.schemaVersion,
|
|
5409
|
-
PUSH_VERSION_DD31
|
|
5410
|
-
);
|
|
5411
|
-
return {
|
|
5412
|
-
result: pusherResult2,
|
|
5413
|
-
httpRequestInfo: pusherResult2?.httpRequestInfo
|
|
5414
|
-
};
|
|
5415
|
-
},
|
|
5416
|
-
pushDescription,
|
|
5417
|
-
lc
|
|
5418
|
-
);
|
|
5419
|
-
if (!pusherResult) {
|
|
5420
|
-
return false;
|
|
5421
|
-
}
|
|
5422
|
-
const pusherResponse = pusherResult.response;
|
|
5423
|
-
if (isResponseThatShouldDisableClientGroup(pusherResponse)) {
|
|
5424
|
-
await disableClientGroup2(
|
|
5425
|
-
lc,
|
|
5426
|
-
selfClientGroupID,
|
|
5427
|
-
clientGroupID,
|
|
5428
|
-
pusherResponse,
|
|
5429
|
-
perdag
|
|
5430
|
-
);
|
|
5431
|
-
return false;
|
|
5432
|
-
}
|
|
5433
|
-
return pusherResult.httpRequestInfo.httpStatusCode === 200;
|
|
5434
|
-
}, pushDescription);
|
|
5435
|
-
if (!pushSucceeded) {
|
|
5436
|
-
lc.debug?.(
|
|
5437
|
-
`Failed to recover mutations for client ${clientGroupID} due to a push error.`
|
|
5438
|
-
);
|
|
5439
|
-
return;
|
|
5440
|
-
}
|
|
5441
|
-
if (isPullDisabled()) {
|
|
5442
|
-
lc.debug?.(
|
|
5443
|
-
`Cannot confirm mutations were recovered for client ${clientGroupID} because pull is disabled.`
|
|
5444
|
-
);
|
|
5445
|
-
return;
|
|
5446
|
-
}
|
|
5447
|
-
const { puller } = delegate;
|
|
5448
|
-
const pullDescription = "recoveringMutationsPull";
|
|
5449
|
-
let okPullResponse;
|
|
5450
|
-
const pullSucceeded = await wrapInOnlineCheck(async () => {
|
|
5451
|
-
const { result: beginPullResponse } = await wrapInReauthRetries(
|
|
5452
|
-
async (requestID, requestLc) => {
|
|
5453
|
-
assert(clientID);
|
|
5454
|
-
const beginPullResponse2 = await beginPullV1(
|
|
5455
|
-
await delegate.profileID,
|
|
5456
|
-
clientID,
|
|
5457
|
-
clientGroupID,
|
|
5458
|
-
database.schemaVersion,
|
|
5459
|
-
puller,
|
|
5460
|
-
requestID,
|
|
5461
|
-
lazyDagForOtherClientGroup,
|
|
5462
|
-
formatVersion,
|
|
5463
|
-
requestLc,
|
|
5464
|
-
false
|
|
5465
|
-
);
|
|
5466
|
-
return {
|
|
5467
|
-
result: beginPullResponse2,
|
|
5468
|
-
httpRequestInfo: beginPullResponse2.httpRequestInfo
|
|
5469
|
-
};
|
|
5470
|
-
},
|
|
5471
|
-
pullDescription,
|
|
5472
|
-
lc
|
|
5473
|
-
);
|
|
5474
|
-
const { pullResponse } = beginPullResponse;
|
|
5475
|
-
if (isResponseThatShouldDisableClientGroup(pullResponse)) {
|
|
5476
|
-
await disableClientGroup2(
|
|
5477
|
-
lc,
|
|
5478
|
-
selfClientGroupID,
|
|
5479
|
-
clientGroupID,
|
|
5480
|
-
pullResponse,
|
|
5481
|
-
perdag
|
|
5482
|
-
);
|
|
5483
|
-
return false;
|
|
5484
|
-
}
|
|
5485
|
-
if (!pullResponse || beginPullResponse.httpRequestInfo.httpStatusCode !== 200) {
|
|
5486
|
-
return false;
|
|
5487
|
-
}
|
|
5488
|
-
okPullResponse = pullResponse;
|
|
5489
|
-
return true;
|
|
5490
|
-
}, pullDescription);
|
|
5491
|
-
if (!pullSucceeded) {
|
|
5492
|
-
lc.debug?.(
|
|
5493
|
-
`Failed to recover mutations for client ${clientGroupID} due to a pull error.`
|
|
5494
|
-
);
|
|
5495
|
-
return;
|
|
5496
|
-
}
|
|
5497
|
-
assert(okPullResponse);
|
|
5498
|
-
lc.debug?.(
|
|
5499
|
-
`Client group ${selfClientGroupID} recovered mutations for client group ${clientGroupID}. Details`,
|
|
5500
|
-
{
|
|
5501
|
-
mutationIDs: clientGroup.mutationIDs,
|
|
5502
|
-
lastServerAckdMutationIDs: clientGroup.lastServerAckdMutationIDs,
|
|
5503
|
-
lastMutationIDChanges: okPullResponse.lastMutationIDChanges
|
|
5504
|
-
}
|
|
5505
|
-
);
|
|
5506
|
-
return await withWrite(perdag, async (dagWrite) => {
|
|
5507
|
-
const clientGroups = await getClientGroups(dagWrite);
|
|
5508
|
-
const clientGroupToUpdate = clientGroups.get(clientGroupID);
|
|
5509
|
-
if (!clientGroupToUpdate) {
|
|
5510
|
-
return clientGroups;
|
|
5511
|
-
}
|
|
5512
|
-
assert(okPullResponse);
|
|
5513
|
-
const lastServerAckdMutationIDsUpdates = {};
|
|
5514
|
-
let anyMutationIDsUpdated = false;
|
|
5515
|
-
for (const [clientID2, lastMutationIDChange] of Object.entries(
|
|
5516
|
-
okPullResponse.lastMutationIDChanges
|
|
5517
|
-
)) {
|
|
5518
|
-
if ((clientGroupToUpdate.lastServerAckdMutationIDs[clientID2] ?? 0) < lastMutationIDChange) {
|
|
5519
|
-
lastServerAckdMutationIDsUpdates[clientID2] = lastMutationIDChange;
|
|
5520
|
-
anyMutationIDsUpdated = true;
|
|
5521
|
-
}
|
|
5522
|
-
}
|
|
5523
|
-
if (!anyMutationIDsUpdated) {
|
|
5524
|
-
return clientGroups;
|
|
5525
|
-
}
|
|
5526
|
-
const newClientGroups = new Map(clientGroups).set(clientGroupID, {
|
|
5527
|
-
...clientGroupToUpdate,
|
|
5528
|
-
lastServerAckdMutationIDs: {
|
|
5529
|
-
...clientGroupToUpdate.lastServerAckdMutationIDs,
|
|
5530
|
-
...lastServerAckdMutationIDsUpdates
|
|
5531
|
-
}
|
|
5532
|
-
});
|
|
5533
|
-
await setClientGroups(newClientGroups, dagWrite);
|
|
5534
|
-
return newClientGroups;
|
|
5535
|
-
});
|
|
5536
|
-
} catch (e) {
|
|
5537
|
-
logMutationRecoveryError(e, lc, stepDescription, delegate);
|
|
5538
|
-
} finally {
|
|
5539
|
-
await lazyDagForOtherClientGroup.close();
|
|
5540
|
-
lc.debug?.("End:", stepDescription);
|
|
5541
|
-
}
|
|
5542
|
-
return;
|
|
5543
|
-
}
|
|
5544
5392
|
|
|
5545
5393
|
// ../replicache/src/broadcast-channel.ts
|
|
5546
5394
|
var NoopBroadcastChannel = class {
|
|
@@ -7281,14 +7129,14 @@ function diffBinarySearch(diff2, prefix, compareKey) {
|
|
|
7281
7129
|
}
|
|
7282
7130
|
|
|
7283
7131
|
// ../shared/src/random-values.ts
|
|
7284
|
-
function getNonCryptoRandomValues(
|
|
7285
|
-
if (
|
|
7132
|
+
function getNonCryptoRandomValues(array10) {
|
|
7133
|
+
if (array10 === null) {
|
|
7286
7134
|
throw new TypeError("array cannot be null");
|
|
7287
7135
|
}
|
|
7288
|
-
for (let i = 0; i <
|
|
7289
|
-
|
|
7136
|
+
for (let i = 0; i < array10.length; i++) {
|
|
7137
|
+
array10[i] = Math.floor(Math.random() * 256);
|
|
7290
7138
|
}
|
|
7291
|
-
return
|
|
7139
|
+
return array10;
|
|
7292
7140
|
}
|
|
7293
7141
|
|
|
7294
7142
|
// ../replicache/src/sync/request-id.ts
|
|
@@ -7568,16 +7416,18 @@ var ReplicacheImpl = class {
|
|
|
7568
7416
|
this.#profileIDPromise = profileIDResolver.promise;
|
|
7569
7417
|
const clientGroupIDResolver = resolver6();
|
|
7570
7418
|
this.#clientGroupIDPromise = clientGroupIDResolver.promise;
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7419
|
+
if (false) {
|
|
7420
|
+
this.#mutationRecovery = new MutationRecovery({
|
|
7421
|
+
delegate: this,
|
|
7422
|
+
lc: this.#lc,
|
|
7423
|
+
enableMutationRecovery,
|
|
7424
|
+
wrapInOnlineCheck: this.#wrapInOnlineCheck.bind(this),
|
|
7425
|
+
wrapInReauthRetries: this.#wrapInReauthRetries.bind(this),
|
|
7426
|
+
isPullDisabled: this.#isPullDisabled.bind(this),
|
|
7427
|
+
isPushDisabled: this.#isPushDisabled.bind(this),
|
|
7428
|
+
clientGroupIDPromise: this.#clientGroupIDPromise
|
|
7429
|
+
});
|
|
7430
|
+
}
|
|
7581
7431
|
this.#onPersist = initOnPersistChannel(
|
|
7582
7432
|
this.name,
|
|
7583
7433
|
this.#closeAbortController.signal,
|
|
@@ -8382,17 +8232,19 @@ var ReplicacheImpl = class {
|
|
|
8382
8232
|
return ex;
|
|
8383
8233
|
}
|
|
8384
8234
|
recoverMutations() {
|
|
8385
|
-
const result = this.#mutationRecovery.recoverMutations(
|
|
8386
|
-
this.#ready,
|
|
8387
|
-
this.perdag,
|
|
8388
|
-
this.#idbDatabase,
|
|
8389
|
-
this.#idbDatabases,
|
|
8390
|
-
this.#kvStoreProvider.create
|
|
8391
|
-
);
|
|
8392
8235
|
if (false) {
|
|
8393
|
-
|
|
8236
|
+
const result = this.#mutationRecovery.recoverMutations(
|
|
8237
|
+
this.#ready,
|
|
8238
|
+
this.perdag,
|
|
8239
|
+
this.#idbDatabase,
|
|
8240
|
+
this.#idbDatabases,
|
|
8241
|
+
this.#kvStoreProvider.create
|
|
8242
|
+
);
|
|
8243
|
+
if (false) {
|
|
8244
|
+
void this.onRecoverMutations(result);
|
|
8245
|
+
}
|
|
8246
|
+
return result;
|
|
8394
8247
|
}
|
|
8395
|
-
return result;
|
|
8396
8248
|
}
|
|
8397
8249
|
/**
|
|
8398
8250
|
* List of pending mutations. The order of this is from oldest to newest.
|
|
@@ -8475,9 +8327,9 @@ __export(column_exports, {
|
|
|
8475
8327
|
enumeration: () => enumeration,
|
|
8476
8328
|
json: () => json,
|
|
8477
8329
|
number: () => number4,
|
|
8478
|
-
string: () =>
|
|
8330
|
+
string: () => string7
|
|
8479
8331
|
});
|
|
8480
|
-
function
|
|
8332
|
+
function string7(optional) {
|
|
8481
8333
|
return {
|
|
8482
8334
|
type: "string",
|
|
8483
8335
|
optional: optional ?? false,
|
|
@@ -8526,8 +8378,8 @@ function isJunctionRelationship(relationship) {
|
|
|
8526
8378
|
}
|
|
8527
8379
|
|
|
8528
8380
|
// ../shared/src/sorted-entries.ts
|
|
8529
|
-
function sortedEntries(
|
|
8530
|
-
return Object.entries(
|
|
8381
|
+
function sortedEntries(object18) {
|
|
8382
|
+
return Object.entries(object18).sort((a, b) => stringCompare(a[0], b[0]));
|
|
8531
8383
|
}
|
|
8532
8384
|
|
|
8533
8385
|
// ../zero-schema/src/normalize-table-schema.ts
|
|
@@ -9187,8 +9039,8 @@ var negateOperatorMap = {
|
|
|
9187
9039
|
function negateOperator(op) {
|
|
9188
9040
|
return must(negateOperatorMap[op]);
|
|
9189
9041
|
}
|
|
9190
|
-
function filterUndefined(
|
|
9191
|
-
return
|
|
9042
|
+
function filterUndefined(array10) {
|
|
9043
|
+
return array10.filter((e) => e !== void 0);
|
|
9192
9044
|
}
|
|
9193
9045
|
function filterTrue(conditions) {
|
|
9194
9046
|
return conditions.filter((c) => !isAlwaysTrue(c));
|
|
@@ -9259,8 +9111,8 @@ function compareValues(a, b) {
|
|
|
9259
9111
|
}
|
|
9260
9112
|
throw new Error(`Unsupported type: ${a}`);
|
|
9261
9113
|
}
|
|
9262
|
-
function normalizeUndefined(
|
|
9263
|
-
return
|
|
9114
|
+
function normalizeUndefined(v2) {
|
|
9115
|
+
return v2 ?? null;
|
|
9264
9116
|
}
|
|
9265
9117
|
function makeComparator(order, reverse) {
|
|
9266
9118
|
return (a, b) => {
|
|
@@ -9288,8 +9140,8 @@ function* take(stream, limit) {
|
|
|
9288
9140
|
return;
|
|
9289
9141
|
}
|
|
9290
9142
|
let count = 0;
|
|
9291
|
-
for (const
|
|
9292
|
-
yield
|
|
9143
|
+
for (const v2 of stream) {
|
|
9144
|
+
yield v2;
|
|
9293
9145
|
if (++count === limit) {
|
|
9294
9146
|
break;
|
|
9295
9147
|
}
|
|
@@ -11490,9 +11342,9 @@ var QueryImpl = class extends AbstractQuery {
|
|
|
11490
11342
|
return view;
|
|
11491
11343
|
}
|
|
11492
11344
|
run() {
|
|
11493
|
-
const
|
|
11494
|
-
const ret =
|
|
11495
|
-
|
|
11345
|
+
const v2 = this.materialize();
|
|
11346
|
+
const ret = v2.data;
|
|
11347
|
+
v2.destroy();
|
|
11496
11348
|
return ret;
|
|
11497
11349
|
}
|
|
11498
11350
|
preload() {
|
|
@@ -11531,12 +11383,12 @@ function addPrimaryKeysToAst(schema, ast) {
|
|
|
11531
11383
|
};
|
|
11532
11384
|
}
|
|
11533
11385
|
function arrayViewFactory(_query, input, format, onDestroy, onTransactionCommit, queryComplete) {
|
|
11534
|
-
const
|
|
11535
|
-
|
|
11386
|
+
const v2 = new ArrayView(input, format, queryComplete);
|
|
11387
|
+
v2.onDestroy = onDestroy;
|
|
11536
11388
|
onTransactionCommit(() => {
|
|
11537
|
-
|
|
11389
|
+
v2.flush();
|
|
11538
11390
|
});
|
|
11539
|
-
return
|
|
11391
|
+
return v2;
|
|
11540
11392
|
}
|
|
11541
11393
|
|
|
11542
11394
|
// ../zql/src/query/auth-query.ts
|
|
@@ -11691,6 +11543,23 @@ function escapeLike(val) {
|
|
|
11691
11543
|
import { LogContext as LogContext4 } from "@rocicorp/logger";
|
|
11692
11544
|
import { resolver as resolver8 } from "@rocicorp/resolver";
|
|
11693
11545
|
|
|
11546
|
+
// ../zero-protocol/src/error-kind-enum.ts
|
|
11547
|
+
var AuthInvalidated = "AuthInvalidated";
|
|
11548
|
+
var ClientNotFound = "ClientNotFound";
|
|
11549
|
+
var InvalidConnectionRequest = "InvalidConnectionRequest";
|
|
11550
|
+
var InvalidConnectionRequestBaseCookie = "InvalidConnectionRequestBaseCookie";
|
|
11551
|
+
var InvalidConnectionRequestLastMutationID = "InvalidConnectionRequestLastMutationID";
|
|
11552
|
+
var InvalidConnectionRequestClientDeleted = "InvalidConnectionRequestClientDeleted";
|
|
11553
|
+
var InvalidMessage = "InvalidMessage";
|
|
11554
|
+
var InvalidPush = "InvalidPush";
|
|
11555
|
+
var MutationFailed = "MutationFailed";
|
|
11556
|
+
var MutationRateLimited = "MutationRateLimited";
|
|
11557
|
+
var Unauthorized = "Unauthorized";
|
|
11558
|
+
var VersionNotSupported = "VersionNotSupported";
|
|
11559
|
+
var SchemaVersionNotSupported = "SchemaVersionNotSupported";
|
|
11560
|
+
var ServerOverloaded = "ServerOverloaded";
|
|
11561
|
+
var Internal = "Internal";
|
|
11562
|
+
|
|
11694
11563
|
// ../zero-protocol/src/queries-patch.ts
|
|
11695
11564
|
var putOpSchema = valita_exports.object({
|
|
11696
11565
|
op: valita_exports.literal("put"),
|
|
@@ -11757,27 +11626,27 @@ function encodeSecProtocols(initConnectionMessage, authToken) {
|
|
|
11757
11626
|
|
|
11758
11627
|
// ../zero-protocol/src/error.ts
|
|
11759
11628
|
var errorKindSchema = valita_exports.union(
|
|
11760
|
-
valita_exports.literal(
|
|
11761
|
-
valita_exports.literal(
|
|
11762
|
-
valita_exports.literal(
|
|
11763
|
-
valita_exports.literal(
|
|
11764
|
-
valita_exports.literal(
|
|
11765
|
-
valita_exports.literal(
|
|
11766
|
-
valita_exports.literal(
|
|
11767
|
-
valita_exports.literal(
|
|
11768
|
-
valita_exports.literal(
|
|
11769
|
-
valita_exports.literal(
|
|
11770
|
-
valita_exports.literal(
|
|
11771
|
-
valita_exports.literal(
|
|
11772
|
-
valita_exports.literal(
|
|
11773
|
-
valita_exports.literal(
|
|
11629
|
+
valita_exports.literal(AuthInvalidated),
|
|
11630
|
+
valita_exports.literal(ClientNotFound),
|
|
11631
|
+
valita_exports.literal(InvalidConnectionRequest),
|
|
11632
|
+
valita_exports.literal(InvalidConnectionRequestBaseCookie),
|
|
11633
|
+
valita_exports.literal(InvalidConnectionRequestLastMutationID),
|
|
11634
|
+
valita_exports.literal(InvalidConnectionRequestClientDeleted),
|
|
11635
|
+
valita_exports.literal(InvalidMessage),
|
|
11636
|
+
valita_exports.literal(InvalidPush),
|
|
11637
|
+
valita_exports.literal(MutationRateLimited),
|
|
11638
|
+
valita_exports.literal(MutationFailed),
|
|
11639
|
+
valita_exports.literal(Unauthorized),
|
|
11640
|
+
valita_exports.literal(VersionNotSupported),
|
|
11641
|
+
valita_exports.literal(SchemaVersionNotSupported),
|
|
11642
|
+
valita_exports.literal(Internal)
|
|
11774
11643
|
);
|
|
11775
11644
|
var basicErrorBodySchema = valita_exports.object({
|
|
11776
11645
|
kind: errorKindSchema,
|
|
11777
11646
|
message: valita_exports.string()
|
|
11778
11647
|
});
|
|
11779
11648
|
var serverOverloadedBodySchema = valita_exports.object({
|
|
11780
|
-
kind: valita_exports.literal(
|
|
11649
|
+
kind: valita_exports.literal(ServerOverloaded),
|
|
11781
11650
|
message: valita_exports.string(),
|
|
11782
11651
|
minBackoffMs: valita_exports.number().optional()
|
|
11783
11652
|
});
|
|
@@ -11937,6 +11806,10 @@ var downstreamSchema = valita_exports.union(
|
|
|
11937
11806
|
var pingBodySchema = valita_exports.object({});
|
|
11938
11807
|
var pingMessageSchema = valita_exports.tuple([valita_exports.literal("ping"), pingBodySchema]);
|
|
11939
11808
|
|
|
11809
|
+
// ../zero-protocol/src/mutation-type-enum.ts
|
|
11810
|
+
var CRUD = "crud";
|
|
11811
|
+
var Custom = "custom";
|
|
11812
|
+
|
|
11940
11813
|
// ../zero-protocol/src/push.ts
|
|
11941
11814
|
var CRUD_MUTATION_NAME = "_zero_crud";
|
|
11942
11815
|
var insertOpSchema = valita_exports.object({
|
|
@@ -11976,7 +11849,7 @@ var crudArgSchema = valita_exports.object({
|
|
|
11976
11849
|
});
|
|
11977
11850
|
var crudArgsSchema = valita_exports.tuple([crudArgSchema]);
|
|
11978
11851
|
var crudMutationSchema = valita_exports.object({
|
|
11979
|
-
type: valita_exports.literal(
|
|
11852
|
+
type: valita_exports.literal(CRUD),
|
|
11980
11853
|
id: valita_exports.number(),
|
|
11981
11854
|
clientID: valita_exports.string(),
|
|
11982
11855
|
name: valita_exports.literal(CRUD_MUTATION_NAME),
|
|
@@ -11984,7 +11857,7 @@ var crudMutationSchema = valita_exports.object({
|
|
|
11984
11857
|
timestamp: valita_exports.number()
|
|
11985
11858
|
});
|
|
11986
11859
|
var customMutationSchema = valita_exports.object({
|
|
11987
|
-
type: valita_exports.literal(
|
|
11860
|
+
type: valita_exports.literal(Custom),
|
|
11988
11861
|
id: valita_exports.number(),
|
|
11989
11862
|
clientID: valita_exports.string(),
|
|
11990
11863
|
name: valita_exports.string(),
|
|
@@ -12049,6 +11922,11 @@ function send(ws, data) {
|
|
|
12049
11922
|
ws.send(JSON.stringify(data));
|
|
12050
11923
|
}
|
|
12051
11924
|
|
|
11925
|
+
// ../zero-client/src/client/connection-state-enum.ts
|
|
11926
|
+
var Disconnected = 0;
|
|
11927
|
+
var Connecting = 1;
|
|
11928
|
+
var Connected = 2;
|
|
11929
|
+
|
|
12052
11930
|
// ../btree/b+tree.ts
|
|
12053
11931
|
function defaultComparator(a, b) {
|
|
12054
11932
|
if (Number.isFinite(a) && Number.isFinite(b)) {
|
|
@@ -12137,7 +12015,7 @@ var BTree = class _BTree {
|
|
|
12137
12015
|
forEach(callback, thisArg) {
|
|
12138
12016
|
if (thisArg !== void 0)
|
|
12139
12017
|
callback = callback.bind(thisArg);
|
|
12140
|
-
return this.forEachPair((k,
|
|
12018
|
+
return this.forEachPair((k, v2) => callback(v2, k, this));
|
|
12141
12019
|
}
|
|
12142
12020
|
/** Runs a function for each key-value pair, in order from smallest to
|
|
12143
12021
|
* largest key. The callback can return {break:R} (where R is any value
|
|
@@ -12262,8 +12140,8 @@ var BTree = class _BTree {
|
|
|
12262
12140
|
filter(callback, returnThisIfUnchanged) {
|
|
12263
12141
|
var nu = this.greedyClone();
|
|
12264
12142
|
var del;
|
|
12265
|
-
nu.editAll((k,
|
|
12266
|
-
if (!callback(k,
|
|
12143
|
+
nu.editAll((k, v2, i) => {
|
|
12144
|
+
if (!callback(k, v2, i))
|
|
12267
12145
|
return del = Delete;
|
|
12268
12146
|
return void 0;
|
|
12269
12147
|
});
|
|
@@ -12275,8 +12153,8 @@ var BTree = class _BTree {
|
|
|
12275
12153
|
mapValues(callback) {
|
|
12276
12154
|
var tmp = {};
|
|
12277
12155
|
var nu = this.greedyClone();
|
|
12278
|
-
nu.editAll((k,
|
|
12279
|
-
return tmp.value = callback(
|
|
12156
|
+
nu.editAll((k, v2, i) => {
|
|
12157
|
+
return tmp.value = callback(v2, k, i), tmp;
|
|
12280
12158
|
});
|
|
12281
12159
|
return nu;
|
|
12282
12160
|
}
|
|
@@ -12748,8 +12626,8 @@ var BTree = class _BTree {
|
|
|
12748
12626
|
false,
|
|
12749
12627
|
this,
|
|
12750
12628
|
0,
|
|
12751
|
-
(_k,
|
|
12752
|
-
results.push(
|
|
12629
|
+
(_k, v2) => {
|
|
12630
|
+
results.push(v2);
|
|
12753
12631
|
}
|
|
12754
12632
|
);
|
|
12755
12633
|
return results;
|
|
@@ -12864,8 +12742,8 @@ var BTree = class _BTree {
|
|
|
12864
12742
|
*/
|
|
12865
12743
|
getRange(low, high, includeHigh, maxLength = 67108863) {
|
|
12866
12744
|
var results = [];
|
|
12867
|
-
this._root.forRange(low, high, includeHigh, false, this, 0, (k,
|
|
12868
|
-
results.push([k,
|
|
12745
|
+
this._root.forRange(low, high, includeHigh, false, this, 0, (k, v2) => {
|
|
12746
|
+
results.push([k, v2]);
|
|
12869
12747
|
return results.length > maxLength ? Break : void 0;
|
|
12870
12748
|
});
|
|
12871
12749
|
return results;
|
|
@@ -13126,10 +13004,10 @@ var BNode = class _BNode {
|
|
|
13126
13004
|
return reusedArray;
|
|
13127
13005
|
}
|
|
13128
13006
|
clone() {
|
|
13129
|
-
var
|
|
13007
|
+
var v2 = this.values;
|
|
13130
13008
|
return new _BNode(
|
|
13131
13009
|
this.keys.slice(0),
|
|
13132
|
-
|
|
13010
|
+
v2 === undefVals ? v2 : v2.slice(0)
|
|
13133
13011
|
);
|
|
13134
13012
|
}
|
|
13135
13013
|
greedyClone(force) {
|
|
@@ -13229,24 +13107,24 @@ var BNode = class _BNode {
|
|
|
13229
13107
|
return true;
|
|
13230
13108
|
}
|
|
13231
13109
|
takeFromRight(rhs) {
|
|
13232
|
-
var
|
|
13110
|
+
var v2 = this.values;
|
|
13233
13111
|
if (rhs.values === undefVals) {
|
|
13234
|
-
if (
|
|
13235
|
-
|
|
13112
|
+
if (v2 !== undefVals)
|
|
13113
|
+
v2.push(void 0);
|
|
13236
13114
|
} else {
|
|
13237
|
-
|
|
13238
|
-
|
|
13115
|
+
v2 = this.reifyValues();
|
|
13116
|
+
v2.push(rhs.values.shift());
|
|
13239
13117
|
}
|
|
13240
13118
|
this.keys.push(rhs.keys.shift());
|
|
13241
13119
|
}
|
|
13242
13120
|
takeFromLeft(lhs) {
|
|
13243
|
-
var
|
|
13121
|
+
var v2 = this.values;
|
|
13244
13122
|
if (lhs.values === undefVals) {
|
|
13245
|
-
if (
|
|
13246
|
-
|
|
13123
|
+
if (v2 !== undefVals)
|
|
13124
|
+
v2.unshift(void 0);
|
|
13247
13125
|
} else {
|
|
13248
|
-
|
|
13249
|
-
|
|
13126
|
+
v2 = this.reifyValues();
|
|
13127
|
+
v2.unshift(lhs.values.pop());
|
|
13250
13128
|
}
|
|
13251
13129
|
this.keys.unshift(lhs.keys.pop());
|
|
13252
13130
|
}
|
|
@@ -14719,7 +14597,7 @@ function makeMessage(message, context, logLevel) {
|
|
|
14719
14597
|
}
|
|
14720
14598
|
|
|
14721
14599
|
// ../zero-client/src/client/version.ts
|
|
14722
|
-
var version2 = "0.
|
|
14600
|
+
var version2 = "0.11.2025011401+3a8f35";
|
|
14723
14601
|
|
|
14724
14602
|
// ../zero-client/src/client/log-options.ts
|
|
14725
14603
|
var LevelFilterLogSink = class {
|
|
@@ -14775,6 +14653,14 @@ function createLogOptions(options, createDatadogLogSink = (options2) => new Data
|
|
|
14775
14653
|
};
|
|
14776
14654
|
}
|
|
14777
14655
|
|
|
14656
|
+
// ../zero-client/src/client/metric-name-enum.ts
|
|
14657
|
+
var TimeToConnectMs = "time_to_connect_ms";
|
|
14658
|
+
var LastConnectError = "last_connect_error";
|
|
14659
|
+
var TimeToConnectMsV2 = "time_to_connect_ms_v2";
|
|
14660
|
+
var LastConnectErrorV2 = "last_connect_error_v2";
|
|
14661
|
+
var TotalTimeToConnectMs = "total_time_to_connect_ms";
|
|
14662
|
+
var NotConnected = "not_connected";
|
|
14663
|
+
|
|
14778
14664
|
// ../zero-client/src/client/metrics.ts
|
|
14779
14665
|
var DID_NOT_CONNECT_VALUE = 100 * 1e3;
|
|
14780
14666
|
var REPORT_INTERVAL_MS = 5e3;
|
|
@@ -14826,7 +14712,7 @@ var MetricManager = class {
|
|
|
14826
14712
|
// be encapsulated with the ConnectionState. This will probably happen as part
|
|
14827
14713
|
// of https://github.com/rocicorp/reflect-server/issues/255.
|
|
14828
14714
|
timeToConnectMs = this.#register(
|
|
14829
|
-
new Gauge(
|
|
14715
|
+
new Gauge(TimeToConnectMs)
|
|
14830
14716
|
);
|
|
14831
14717
|
// lastConnectError records the last error that occurred when connecting,
|
|
14832
14718
|
// if any. It is cleared when connecting successfully or when reported, so this
|
|
@@ -14834,28 +14720,28 @@ var MetricManager = class {
|
|
|
14834
14720
|
// we are still not connected.
|
|
14835
14721
|
lastConnectError = this.#register(
|
|
14836
14722
|
new State(
|
|
14837
|
-
|
|
14723
|
+
LastConnectError,
|
|
14838
14724
|
true
|
|
14839
14725
|
// clearOnFlush
|
|
14840
14726
|
)
|
|
14841
14727
|
);
|
|
14842
14728
|
// notConnected records the reason why the client is not currently connected.
|
|
14843
14729
|
// It is cleared when the client successfully connects.
|
|
14844
|
-
#notConnected = this.#register(new State(
|
|
14730
|
+
#notConnected = this.#register(new State(NotConnected));
|
|
14845
14731
|
// The time from the call to connect() to receiving the 'connected' ws message
|
|
14846
14732
|
// for the current connection. Cleared when the client is not connected.
|
|
14847
14733
|
// TODO: Not actually currently cleared on disconnect untill there is a
|
|
14848
14734
|
// connect error, or client reports disconnected and waiting for visible.
|
|
14849
14735
|
// Should have a value iff _notConnected has no value.
|
|
14850
14736
|
#timeToConnectMsV2 = this.#register(
|
|
14851
|
-
new Gauge(
|
|
14737
|
+
new Gauge(TimeToConnectMsV2)
|
|
14852
14738
|
);
|
|
14853
14739
|
// lastConnectErrorV2 records the last error that occurred when connecting,
|
|
14854
14740
|
// if any. It is cleared when the client successfully connects or
|
|
14855
14741
|
// stops trying to connect due to being hidden.
|
|
14856
14742
|
// Should have a value iff notConnected state is NotConnectedReason.Error.
|
|
14857
14743
|
#lastConnectErrorV2 = this.#register(
|
|
14858
|
-
new State(
|
|
14744
|
+
new State(LastConnectErrorV2)
|
|
14859
14745
|
);
|
|
14860
14746
|
// The total time it took to connect across retries for the current
|
|
14861
14747
|
// connection. Cleared when the client is not connected.
|
|
@@ -14864,7 +14750,7 @@ var MetricManager = class {
|
|
|
14864
14750
|
// See Zero.#totalToConnectStart for details of how this total is computed.
|
|
14865
14751
|
// Should have a value iff _notConnected has no value.
|
|
14866
14752
|
#totalTimeToConnectMs = this.#register(
|
|
14867
|
-
new Gauge(
|
|
14753
|
+
new Gauge(TotalTimeToConnectMs)
|
|
14868
14754
|
);
|
|
14869
14755
|
#setNotConnectedReason(reason) {
|
|
14870
14756
|
this.#notConnected.set(reason);
|
|
@@ -15005,6 +14891,10 @@ var State = class {
|
|
|
15005
14891
|
}
|
|
15006
14892
|
};
|
|
15007
14893
|
|
|
14894
|
+
// ../zero-client/src/client/ping-result-enum.ts
|
|
14895
|
+
var TimedOut = 0;
|
|
14896
|
+
var Success = 1;
|
|
14897
|
+
|
|
15008
14898
|
// ../zero-client/src/client/query-manager.ts
|
|
15009
14899
|
var QueryManager = class {
|
|
15010
14900
|
#clientID;
|
|
@@ -15259,10 +15149,10 @@ function isAuthError(ex) {
|
|
|
15259
15149
|
return isServerError(ex) && isAuthErrorKind(ex.kind);
|
|
15260
15150
|
}
|
|
15261
15151
|
function isAuthErrorKind(kind) {
|
|
15262
|
-
return kind ===
|
|
15152
|
+
return kind === AuthInvalidated || kind === Unauthorized;
|
|
15263
15153
|
}
|
|
15264
15154
|
function isServerOverloadedError(ex) {
|
|
15265
|
-
return isServerError(ex) && ex.errorBody.kind ===
|
|
15155
|
+
return isServerError(ex) && ex.errorBody.kind === ServerOverloaded ? ex.errorBody : void 0;
|
|
15266
15156
|
}
|
|
15267
15157
|
|
|
15268
15158
|
// ../zero-client/src/client/server-option.ts
|
|
@@ -15698,7 +15588,7 @@ var Zero = class {
|
|
|
15698
15588
|
#closeAbortController = new AbortController();
|
|
15699
15589
|
#visibilityWatcher;
|
|
15700
15590
|
// We use an accessor pair to allow the subclass to override the setter.
|
|
15701
|
-
#connectionState =
|
|
15591
|
+
#connectionState = Disconnected;
|
|
15702
15592
|
#setConnectionState(state) {
|
|
15703
15593
|
if (state === this.#connectionState) {
|
|
15704
15594
|
return;
|
|
@@ -15884,7 +15774,7 @@ var Zero = class {
|
|
|
15884
15774
|
}
|
|
15885
15775
|
}
|
|
15886
15776
|
#sendChangeDesiredQueries(msg) {
|
|
15887
|
-
if (this.#socket && this.#connectionState ===
|
|
15777
|
+
if (this.#socket && this.#connectionState === Connected) {
|
|
15888
15778
|
send(this.#socket, msg);
|
|
15889
15779
|
}
|
|
15890
15780
|
}
|
|
@@ -15981,7 +15871,7 @@ var Zero = class {
|
|
|
15981
15871
|
*/
|
|
15982
15872
|
close() {
|
|
15983
15873
|
const lc = this.#lc.withContext("close");
|
|
15984
|
-
if (this.#connectionState !==
|
|
15874
|
+
if (this.#connectionState !== Disconnected) {
|
|
15985
15875
|
this.#disconnect(lc, {
|
|
15986
15876
|
client: "ClientClosed"
|
|
15987
15877
|
});
|
|
@@ -16062,7 +15952,7 @@ var Zero = class {
|
|
|
16062
15952
|
// An error on the connection is fatal for the connection.
|
|
16063
15953
|
async #handleErrorMessage(lc, downMessage) {
|
|
16064
15954
|
const [, { kind, message }] = downMessage;
|
|
16065
|
-
if (kind ===
|
|
15955
|
+
if (kind === MutationRateLimited) {
|
|
16066
15956
|
this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
|
|
16067
15957
|
lc.error?.("Mutation rate limited", { message });
|
|
16068
15958
|
return;
|
|
@@ -16073,15 +15963,15 @@ var Zero = class {
|
|
|
16073
15963
|
lc.debug?.("Rejecting connect resolver due to error", error);
|
|
16074
15964
|
this.#connectResolver.reject(error);
|
|
16075
15965
|
this.#disconnect(lc, { server: kind });
|
|
16076
|
-
if (kind ===
|
|
15966
|
+
if (kind === VersionNotSupported) {
|
|
16077
15967
|
this.#onUpdateNeeded?.({ type: kind }, message);
|
|
16078
|
-
} else if (kind ===
|
|
15968
|
+
} else if (kind === SchemaVersionNotSupported) {
|
|
16079
15969
|
await this.#rep.disableClientGroup();
|
|
16080
15970
|
this.#onUpdateNeeded?.({ type: "SchemaVersionNotSupported" }, message);
|
|
16081
|
-
} else if (kind ===
|
|
15971
|
+
} else if (kind === ClientNotFound) {
|
|
16082
15972
|
await this.#rep.disableClientGroup();
|
|
16083
15973
|
this.#onClientStateNotFound?.(onClientStateNotFoundServerReason(message));
|
|
16084
|
-
} else if (kind ===
|
|
15974
|
+
} else if (kind === InvalidConnectionRequestLastMutationID || kind === InvalidConnectionRequestBaseCookie) {
|
|
16085
15975
|
await dropDatabase(this.#rep.idbName);
|
|
16086
15976
|
reloadWithReason(lc, this.#reload, serverAheadReloadReason(kind));
|
|
16087
15977
|
}
|
|
@@ -16152,7 +16042,7 @@ var Zero = class {
|
|
|
16152
16042
|
]);
|
|
16153
16043
|
}
|
|
16154
16044
|
this.#initConnectionQueries = void 0;
|
|
16155
|
-
this.#setConnectionState(
|
|
16045
|
+
this.#setConnectionState(Connected);
|
|
16156
16046
|
this.#connectResolver.resolve();
|
|
16157
16047
|
}
|
|
16158
16048
|
/**
|
|
@@ -16173,11 +16063,11 @@ var Zero = class {
|
|
|
16173
16063
|
*/
|
|
16174
16064
|
async #connect(l) {
|
|
16175
16065
|
assert(this.#server);
|
|
16176
|
-
assert(this.#connectionState ===
|
|
16066
|
+
assert(this.#connectionState === Disconnected);
|
|
16177
16067
|
const wsid = nanoid();
|
|
16178
16068
|
l = addWebSocketIDToLogContext(wsid, l);
|
|
16179
16069
|
l.info?.("Connecting...", { navigatorOnline: localNavigator?.onLine });
|
|
16180
|
-
this.#setConnectionState(
|
|
16070
|
+
this.#setConnectionState(Connecting);
|
|
16181
16071
|
assert(this.#connectStart === void 0);
|
|
16182
16072
|
const now = Date.now();
|
|
16183
16073
|
this.#connectStart = now;
|
|
@@ -16242,7 +16132,7 @@ var Zero = class {
|
|
|
16242
16132
|
}
|
|
16243
16133
|
}
|
|
16244
16134
|
#disconnect(l, reason) {
|
|
16245
|
-
if (this.#connectionState ===
|
|
16135
|
+
if (this.#connectionState === Connecting) {
|
|
16246
16136
|
this.#connectErrorCount++;
|
|
16247
16137
|
}
|
|
16248
16138
|
l.info?.("disconnecting", {
|
|
@@ -16257,7 +16147,7 @@ var Zero = class {
|
|
|
16257
16147
|
connectErrorCount: this.#connectErrorCount
|
|
16258
16148
|
});
|
|
16259
16149
|
switch (this.#connectionState) {
|
|
16260
|
-
case
|
|
16150
|
+
case Connected: {
|
|
16261
16151
|
if (this.#connectStart !== void 0) {
|
|
16262
16152
|
l.error?.(
|
|
16263
16153
|
"disconnect() called while connected but connect start time is defined. This should not happen."
|
|
@@ -16265,7 +16155,7 @@ var Zero = class {
|
|
|
16265
16155
|
}
|
|
16266
16156
|
break;
|
|
16267
16157
|
}
|
|
16268
|
-
case
|
|
16158
|
+
case Connecting: {
|
|
16269
16159
|
this.#metrics.lastConnectError.set(getLastConnectErrorValue(reason));
|
|
16270
16160
|
this.#metrics.timeToConnectMs.set(DID_NOT_CONNECT_VALUE);
|
|
16271
16161
|
this.#metrics.setConnectError(reason);
|
|
@@ -16281,14 +16171,14 @@ var Zero = class {
|
|
|
16281
16171
|
}
|
|
16282
16172
|
break;
|
|
16283
16173
|
}
|
|
16284
|
-
case
|
|
16174
|
+
case Disconnected:
|
|
16285
16175
|
l.error?.("disconnect() called while disconnected");
|
|
16286
16176
|
break;
|
|
16287
16177
|
}
|
|
16288
16178
|
this.#socketResolver = resolver8();
|
|
16289
16179
|
l.debug?.("Creating new connect resolver");
|
|
16290
16180
|
this.#connectResolver = resolver8();
|
|
16291
|
-
this.#setConnectionState(
|
|
16181
|
+
this.#setConnectionState(Disconnected);
|
|
16292
16182
|
this.#messageCount = 0;
|
|
16293
16183
|
this.#connectStart = void 0;
|
|
16294
16184
|
this.#connectedAt = 0;
|
|
@@ -16322,9 +16212,9 @@ var Zero = class {
|
|
|
16322
16212
|
const lc = this.#lc;
|
|
16323
16213
|
lc.info?.(
|
|
16324
16214
|
"poke error, disconnecting?",
|
|
16325
|
-
this.#connectionState !==
|
|
16215
|
+
this.#connectionState !== Disconnected
|
|
16326
16216
|
);
|
|
16327
|
-
if (this.#connectionState !==
|
|
16217
|
+
if (this.#connectionState !== Disconnected) {
|
|
16328
16218
|
this.#disconnect(lc, {
|
|
16329
16219
|
client: "UnexpectedBaseCookie"
|
|
16330
16220
|
});
|
|
@@ -16365,14 +16255,14 @@ var Zero = class {
|
|
|
16365
16255
|
const m = req.mutations[i];
|
|
16366
16256
|
const timestamp = now - Math.round(performance.now() - m.timestamp);
|
|
16367
16257
|
const zeroM = m.name === CRUD_MUTATION_NAME ? {
|
|
16368
|
-
type:
|
|
16258
|
+
type: CRUD,
|
|
16369
16259
|
timestamp,
|
|
16370
16260
|
id: m.id,
|
|
16371
16261
|
clientID: m.clientID,
|
|
16372
16262
|
name: m.name,
|
|
16373
16263
|
args: [m.args]
|
|
16374
16264
|
} : {
|
|
16375
|
-
type:
|
|
16265
|
+
type: Custom,
|
|
16376
16266
|
timestamp,
|
|
16377
16267
|
id: m.id,
|
|
16378
16268
|
clientID: m.clientID,
|
|
@@ -16436,7 +16326,7 @@ var Zero = class {
|
|
|
16436
16326
|
backoffMs = RUN_LOOP_INTERVAL_MS;
|
|
16437
16327
|
try {
|
|
16438
16328
|
switch (this.#connectionState) {
|
|
16439
|
-
case
|
|
16329
|
+
case Disconnected: {
|
|
16440
16330
|
if (this.#visibilityWatcher.visibilityState === "hidden") {
|
|
16441
16331
|
this.#metrics.setDisconnectedWaitingForVisible();
|
|
16442
16332
|
this.#totalToConnectStart = void 0;
|
|
@@ -16460,11 +16350,11 @@ var Zero = class {
|
|
|
16460
16350
|
this.#setOnline(true);
|
|
16461
16351
|
break;
|
|
16462
16352
|
}
|
|
16463
|
-
case
|
|
16353
|
+
case Connecting:
|
|
16464
16354
|
lc.error?.("unreachable");
|
|
16465
16355
|
gotError = true;
|
|
16466
16356
|
break;
|
|
16467
|
-
case
|
|
16357
|
+
case Connected: {
|
|
16468
16358
|
const controller = new AbortController();
|
|
16469
16359
|
this.#abortPingTimeout = () => controller.abort();
|
|
16470
16360
|
const [pingTimeoutPromise, pingTimeoutAborted] = sleepWithAbort(
|
|
@@ -16472,11 +16362,8 @@ var Zero = class {
|
|
|
16472
16362
|
controller.signal
|
|
16473
16363
|
);
|
|
16474
16364
|
this.#rejectMessageError = resolver8();
|
|
16475
|
-
|
|
16476
|
-
|
|
16477
|
-
RaceCases2[RaceCases2["Ping"] = 0] = "Ping";
|
|
16478
|
-
RaceCases2[RaceCases2["Hidden"] = 2] = "Hidden";
|
|
16479
|
-
})(RaceCases || (RaceCases = {}));
|
|
16365
|
+
const PING = 0;
|
|
16366
|
+
const HIDDEN = 2;
|
|
16480
16367
|
const raceResult = await promiseRace([
|
|
16481
16368
|
pingTimeoutPromise,
|
|
16482
16369
|
pingTimeoutAborted,
|
|
@@ -16489,17 +16376,17 @@ var Zero = class {
|
|
|
16489
16376
|
break;
|
|
16490
16377
|
}
|
|
16491
16378
|
switch (raceResult) {
|
|
16492
|
-
case
|
|
16379
|
+
case PING: {
|
|
16493
16380
|
const pingResult = await this.#ping(
|
|
16494
16381
|
lc,
|
|
16495
16382
|
this.#rejectMessageError.promise
|
|
16496
16383
|
);
|
|
16497
|
-
if (pingResult ===
|
|
16384
|
+
if (pingResult === TimedOut) {
|
|
16498
16385
|
gotError = true;
|
|
16499
16386
|
}
|
|
16500
16387
|
break;
|
|
16501
16388
|
}
|
|
16502
|
-
case
|
|
16389
|
+
case HIDDEN:
|
|
16503
16390
|
this.#disconnect(lc, {
|
|
16504
16391
|
client: "Hidden"
|
|
16505
16392
|
});
|
|
@@ -16510,7 +16397,7 @@ var Zero = class {
|
|
|
16510
16397
|
}
|
|
16511
16398
|
}
|
|
16512
16399
|
} catch (ex) {
|
|
16513
|
-
if (this.#connectionState !==
|
|
16400
|
+
if (this.#connectionState !== Connected) {
|
|
16514
16401
|
lc.error?.("Failed to connect", ex, {
|
|
16515
16402
|
lmid: this.#lastMutationIDReceived,
|
|
16516
16403
|
baseCookie: this.#connectCookie
|
|
@@ -16579,20 +16466,17 @@ var Zero = class {
|
|
|
16579
16466
|
const pullResponseResolver = resolver8();
|
|
16580
16467
|
this.#pendingPullsByRequestID.set(requestID, pullResponseResolver);
|
|
16581
16468
|
try {
|
|
16582
|
-
|
|
16583
|
-
|
|
16584
|
-
RaceCases2[RaceCases2["Timeout"] = 0] = "Timeout";
|
|
16585
|
-
RaceCases2[RaceCases2["Response"] = 1] = "Response";
|
|
16586
|
-
})(RaceCases || (RaceCases = {}));
|
|
16469
|
+
const TIMEOUT = 0;
|
|
16470
|
+
const RESPONSE = 1;
|
|
16587
16471
|
const raceResult = await promiseRace([
|
|
16588
16472
|
sleep(PULL_TIMEOUT_MS),
|
|
16589
16473
|
pullResponseResolver.promise
|
|
16590
16474
|
]);
|
|
16591
16475
|
switch (raceResult) {
|
|
16592
|
-
case
|
|
16476
|
+
case TIMEOUT:
|
|
16593
16477
|
lc.debug?.("Mutation recovery pull timed out");
|
|
16594
16478
|
throw new Error("Pull timed out");
|
|
16595
|
-
case
|
|
16479
|
+
case RESPONSE: {
|
|
16596
16480
|
lc.debug?.("Returning mutation recovery pull response");
|
|
16597
16481
|
const response = await pullResponseResolver.promise;
|
|
16598
16482
|
return {
|
|
@@ -16654,10 +16538,10 @@ var Zero = class {
|
|
|
16654
16538
|
this.#disconnect(l, {
|
|
16655
16539
|
client: "PingTimeout"
|
|
16656
16540
|
});
|
|
16657
|
-
return
|
|
16541
|
+
return TimedOut;
|
|
16658
16542
|
}
|
|
16659
16543
|
l.debug?.("ping succeeded in", delta, "ms");
|
|
16660
|
-
return
|
|
16544
|
+
return Success;
|
|
16661
16545
|
}
|
|
16662
16546
|
// Sends a set of metrics to the server. Throws unless the server
|
|
16663
16547
|
// returns 200.
|
|
@@ -16750,4 +16634,4 @@ export {
|
|
|
16750
16634
|
escapeLike,
|
|
16751
16635
|
Zero
|
|
16752
16636
|
};
|
|
16753
|
-
//# sourceMappingURL=chunk-
|
|
16637
|
+
//# sourceMappingURL=chunk-JWWOECJ3.js.map
|