@rocicorp/zero 0.20.2025050400 → 0.20.2025050600
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/analyze-query/src/bin-analyze.js +10 -3
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/{chunk-KOXC55U7.js → chunk-EBZYAQDK.js} +14 -5
- package/out/chunk-EBZYAQDK.js.map +7 -0
- package/out/{chunk-54ZZCBOP.js → chunk-N44AEZOH.js} +2 -2
- package/out/{chunk-IFAC3PDK.js → chunk-VA2YVVTK.js} +58 -9
- package/out/{chunk-IFAC3PDK.js.map → chunk-VA2YVVTK.js.map} +2 -2
- package/out/{inspector-Z55GQ5JV.js → inspector-GCX7QH7K.js} +3 -3
- package/out/react.js +1 -1
- package/out/solid.js +3 -3
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +5 -1
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/zero-cache/src/config/network.d.ts +5 -0
- package/out/zero-cache/src/config/network.d.ts.map +1 -0
- package/out/zero-cache/src/config/network.js +47 -0
- package/out/zero-cache/src/config/network.js.map +1 -0
- package/out/zero-cache/src/config/normalize.d.ts +29 -0
- package/out/zero-cache/src/config/normalize.d.ts.map +1 -0
- package/out/zero-cache/src/config/normalize.js +73 -0
- package/out/zero-cache/src/config/normalize.js.map +1 -0
- package/out/zero-cache/src/config/zero-config.d.ts +262 -99
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +64 -32
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +19 -4
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +14 -26
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +15 -4
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.d.ts +7 -0
- package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +34 -73
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.js +12 -1
- package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts +2 -9
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +9 -46
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +4 -2
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.d.ts +16 -0
- package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -0
- package/out/zero-cache/src/server/worker-dispatcher.js +99 -0
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -0
- 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 +12 -6
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +6 -3
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +31 -16
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
- 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 +4 -15
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +8 -0
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +19 -13
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
- 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 -2
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +5 -2
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +27 -11
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/statz.d.ts +1 -1
- package/out/zero-cache/src/services/statz.d.ts.map +1 -1
- package/out/zero-cache/src/services/statz.js +6 -7
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/types/error-for-client.d.ts +1 -1
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +23 -21
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/{services/dispatcher → types}/websocket-handoff.d.ts +18 -2
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -0
- package/out/zero-cache/src/{services/dispatcher → types}/websocket-handoff.js +14 -6
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -0
- package/out/zero-cache/src/{services/dispatcher → workers}/connect-params.d.ts +1 -1
- package/out/zero-cache/src/workers/connect-params.d.ts.map +1 -0
- package/out/zero-cache/src/{services/dispatcher → workers}/connect-params.js +3 -3
- package/out/zero-cache/src/workers/connect-params.js.map +1 -0
- package/out/zero-cache/src/workers/connection.d.ts +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +8 -3
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.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-protocol/src/ast.d.ts +2 -2
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +3 -1
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero.js +3 -3
- package/out/zql/src/ivm/constraint.d.ts +24 -0
- package/out/zql/src/ivm/constraint.d.ts.map +1 -1
- package/out/zql/src/ivm/constraint.js +65 -0
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +10 -5
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +1 -1
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +5 -3
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/package.json +1 -1
- package/out/chunk-KOXC55U7.js.map +0 -7
- package/out/zero-cache/src/server/runner/config.d.ts +0 -368
- package/out/zero-cache/src/server/runner/config.d.ts.map +0 -1
- package/out/zero-cache/src/server/runner/config.js +0 -103
- package/out/zero-cache/src/server/runner/config.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +0 -15
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.js +0 -64
- package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +0 -1
- package/out/zero-cache/src/types/timeout.d.ts +0 -11
- package/out/zero-cache/src/types/timeout.d.ts.map +0 -1
- package/out/zero-cache/src/types/timeout.js +0 -23
- package/out/zero-cache/src/types/timeout.js.map +0 -1
- /package/out/{chunk-54ZZCBOP.js.map → chunk-N44AEZOH.js.map} +0 -0
- /package/out/{inspector-Z55GQ5JV.js.map → inspector-GCX7QH7K.js.map} +0 -0
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
import * as v from '../../../../shared/src/valita.ts';
|
|
2
|
-
export declare const multiConfigSchema: {
|
|
3
|
-
serverVersion: {
|
|
4
|
-
type: v.Optional<string>;
|
|
5
|
-
desc: string[];
|
|
6
|
-
};
|
|
7
|
-
tenantsJSON: {
|
|
8
|
-
type: v.Optional<string>;
|
|
9
|
-
desc: string[];
|
|
10
|
-
};
|
|
11
|
-
upstream: {
|
|
12
|
-
db: {
|
|
13
|
-
type: v.Type<string>;
|
|
14
|
-
desc: string[];
|
|
15
|
-
};
|
|
16
|
-
type: {
|
|
17
|
-
type: v.Type<"pg" | "custom">;
|
|
18
|
-
desc: string[];
|
|
19
|
-
hidden: boolean;
|
|
20
|
-
};
|
|
21
|
-
maxConns: {
|
|
22
|
-
type: v.Type<number>;
|
|
23
|
-
desc: string[];
|
|
24
|
-
};
|
|
25
|
-
maxConnsPerWorker: {
|
|
26
|
-
type: v.Optional<number>;
|
|
27
|
-
hidden: boolean;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
push: {
|
|
31
|
-
url: {
|
|
32
|
-
type: v.Optional<string>;
|
|
33
|
-
desc: string[];
|
|
34
|
-
};
|
|
35
|
-
apiKey: {
|
|
36
|
-
type: v.Optional<string>;
|
|
37
|
-
desc: string[];
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
cvr: {
|
|
41
|
-
db: {
|
|
42
|
-
type: v.Optional<string>;
|
|
43
|
-
desc: string[];
|
|
44
|
-
};
|
|
45
|
-
maxConns: {
|
|
46
|
-
type: v.Type<number>;
|
|
47
|
-
desc: string[];
|
|
48
|
-
};
|
|
49
|
-
maxConnsPerWorker: {
|
|
50
|
-
type: v.Optional<number>;
|
|
51
|
-
hidden: boolean;
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
queryHydrationStats: {
|
|
55
|
-
type: v.Optional<boolean>;
|
|
56
|
-
desc: string[];
|
|
57
|
-
};
|
|
58
|
-
change: {
|
|
59
|
-
db: {
|
|
60
|
-
type: v.Optional<string>;
|
|
61
|
-
desc: string[];
|
|
62
|
-
};
|
|
63
|
-
maxConns: {
|
|
64
|
-
type: v.Type<number>;
|
|
65
|
-
desc: string[];
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
replica: {
|
|
69
|
-
file: {
|
|
70
|
-
type: v.Type<string>;
|
|
71
|
-
desc: string[];
|
|
72
|
-
};
|
|
73
|
-
vacuumIntervalHours: {
|
|
74
|
-
type: v.Optional<number>;
|
|
75
|
-
desc: string[];
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
log: {
|
|
79
|
-
level: v.Type<"error" | "debug" | "info" | "warn">;
|
|
80
|
-
format: {
|
|
81
|
-
type: v.Type<"text" | "json">;
|
|
82
|
-
desc: string[];
|
|
83
|
-
};
|
|
84
|
-
traceCollector: {
|
|
85
|
-
type: v.Optional<string>;
|
|
86
|
-
desc: string[];
|
|
87
|
-
};
|
|
88
|
-
metricCollector: {
|
|
89
|
-
type: v.Optional<string>;
|
|
90
|
-
desc: string[];
|
|
91
|
-
};
|
|
92
|
-
logCollector: {
|
|
93
|
-
type: v.Optional<string>;
|
|
94
|
-
desc: string[];
|
|
95
|
-
};
|
|
96
|
-
slowRowThreshold: {
|
|
97
|
-
type: v.Type<number>;
|
|
98
|
-
desc: string[];
|
|
99
|
-
};
|
|
100
|
-
slowHydrateThreshold: {
|
|
101
|
-
type: v.Type<number>;
|
|
102
|
-
desc: string[];
|
|
103
|
-
};
|
|
104
|
-
ivmSampling: {
|
|
105
|
-
type: v.Type<number>;
|
|
106
|
-
desc: string[];
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
app: {
|
|
110
|
-
id: {
|
|
111
|
-
type: v.Type<string>;
|
|
112
|
-
desc: string[];
|
|
113
|
-
};
|
|
114
|
-
publications: {
|
|
115
|
-
type: v.Type<string[]>;
|
|
116
|
-
desc: string[];
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
shard: {
|
|
120
|
-
id: {
|
|
121
|
-
type: v.Optional<string>;
|
|
122
|
-
hidden: boolean;
|
|
123
|
-
};
|
|
124
|
-
num: {
|
|
125
|
-
type: v.Type<number>;
|
|
126
|
-
desc: string[];
|
|
127
|
-
hidden: boolean;
|
|
128
|
-
};
|
|
129
|
-
};
|
|
130
|
-
auth: {
|
|
131
|
-
jwk: {
|
|
132
|
-
type: v.Optional<string>;
|
|
133
|
-
desc: string[];
|
|
134
|
-
};
|
|
135
|
-
jwksUrl: {
|
|
136
|
-
type: v.Optional<string>;
|
|
137
|
-
desc: string[];
|
|
138
|
-
};
|
|
139
|
-
secret: {
|
|
140
|
-
type: v.Optional<string>;
|
|
141
|
-
desc: string[];
|
|
142
|
-
};
|
|
143
|
-
};
|
|
144
|
-
port: {
|
|
145
|
-
type: v.Type<number>;
|
|
146
|
-
desc: string[];
|
|
147
|
-
};
|
|
148
|
-
changeStreamerPort: {
|
|
149
|
-
type: v.Optional<number>;
|
|
150
|
-
desc: string[];
|
|
151
|
-
};
|
|
152
|
-
taskID: {
|
|
153
|
-
type: v.Optional<string>;
|
|
154
|
-
desc: string[];
|
|
155
|
-
};
|
|
156
|
-
perUserMutationLimit: {
|
|
157
|
-
max: {
|
|
158
|
-
type: v.Optional<number>;
|
|
159
|
-
desc: string[];
|
|
160
|
-
};
|
|
161
|
-
windowMs: {
|
|
162
|
-
type: v.Type<number>;
|
|
163
|
-
desc: string[];
|
|
164
|
-
};
|
|
165
|
-
};
|
|
166
|
-
numSyncWorkers: {
|
|
167
|
-
type: v.Optional<number>;
|
|
168
|
-
desc: string[];
|
|
169
|
-
};
|
|
170
|
-
changeStreamerURI: {
|
|
171
|
-
type: v.Optional<string>;
|
|
172
|
-
desc: string[];
|
|
173
|
-
};
|
|
174
|
-
autoReset: {
|
|
175
|
-
type: v.Type<boolean>;
|
|
176
|
-
desc: string[];
|
|
177
|
-
};
|
|
178
|
-
adminPassword: {
|
|
179
|
-
type: v.Optional<string>;
|
|
180
|
-
desc: string[];
|
|
181
|
-
};
|
|
182
|
-
litestream: {
|
|
183
|
-
executable: {
|
|
184
|
-
type: v.Optional<string>;
|
|
185
|
-
desc: string[];
|
|
186
|
-
};
|
|
187
|
-
configPath: {
|
|
188
|
-
type: v.Type<string>;
|
|
189
|
-
desc: string[];
|
|
190
|
-
};
|
|
191
|
-
logLevel: {
|
|
192
|
-
type: v.Type<"error" | "debug" | "info" | "warn">;
|
|
193
|
-
};
|
|
194
|
-
backupURL: {
|
|
195
|
-
type: v.Optional<string>;
|
|
196
|
-
desc: string[];
|
|
197
|
-
};
|
|
198
|
-
port: {
|
|
199
|
-
type: v.Optional<number>;
|
|
200
|
-
desc: string[];
|
|
201
|
-
};
|
|
202
|
-
checkpointThresholdMB: {
|
|
203
|
-
type: v.Type<number>;
|
|
204
|
-
desc: string[];
|
|
205
|
-
};
|
|
206
|
-
incrementalBackupIntervalMinutes: {
|
|
207
|
-
type: v.Type<number>;
|
|
208
|
-
desc: string[];
|
|
209
|
-
};
|
|
210
|
-
snapshotBackupIntervalHours: {
|
|
211
|
-
type: v.Type<number>;
|
|
212
|
-
desc: string[];
|
|
213
|
-
};
|
|
214
|
-
restoreParallelism: {
|
|
215
|
-
type: v.Type<number>;
|
|
216
|
-
desc: string[];
|
|
217
|
-
};
|
|
218
|
-
multipartConcurrency: {
|
|
219
|
-
type: v.Type<number>;
|
|
220
|
-
desc: string[];
|
|
221
|
-
};
|
|
222
|
-
multipartSize: {
|
|
223
|
-
type: v.Type<number>;
|
|
224
|
-
desc: string[];
|
|
225
|
-
};
|
|
226
|
-
restoreDurationMsEstimate: {
|
|
227
|
-
type: v.Optional<number>;
|
|
228
|
-
desc: string[];
|
|
229
|
-
};
|
|
230
|
-
};
|
|
231
|
-
storageDBTmpDir: {
|
|
232
|
-
type: v.Optional<string>;
|
|
233
|
-
desc: string[];
|
|
234
|
-
};
|
|
235
|
-
initialSync: {
|
|
236
|
-
tableCopyWorkers: {
|
|
237
|
-
type: v.Type<number>;
|
|
238
|
-
desc: string[];
|
|
239
|
-
};
|
|
240
|
-
rowBatchSize: {
|
|
241
|
-
type: v.Type<number>;
|
|
242
|
-
desc: string[];
|
|
243
|
-
};
|
|
244
|
-
};
|
|
245
|
-
tenantID: {
|
|
246
|
-
type: v.Optional<string>;
|
|
247
|
-
desc: string[];
|
|
248
|
-
hidden: boolean;
|
|
249
|
-
};
|
|
250
|
-
targetClientRowCount: {
|
|
251
|
-
type: v.Type<number>;
|
|
252
|
-
desc: string[];
|
|
253
|
-
};
|
|
254
|
-
lazyStartup: {
|
|
255
|
-
type: v.Type<boolean>;
|
|
256
|
-
desc: string[];
|
|
257
|
-
};
|
|
258
|
-
};
|
|
259
|
-
export type MultiZeroConfig = ReturnType<typeof getMultiZeroConfig>;
|
|
260
|
-
export declare function getMultiZeroConfig(processEnv?: NodeJS.ProcessEnv, argv?: string[]): {
|
|
261
|
-
config: {
|
|
262
|
-
tenants: {
|
|
263
|
-
host?: string | undefined;
|
|
264
|
-
path?: string | undefined;
|
|
265
|
-
id: string;
|
|
266
|
-
env: {
|
|
267
|
-
[x: string]: string | undefined;
|
|
268
|
-
[x: number]: string | undefined;
|
|
269
|
-
ZERO_REPLICA_FILE: string;
|
|
270
|
-
};
|
|
271
|
-
}[];
|
|
272
|
-
upstream: {
|
|
273
|
-
db: string;
|
|
274
|
-
type: "pg" | "custom";
|
|
275
|
-
maxConns: number;
|
|
276
|
-
} & {
|
|
277
|
-
maxConnsPerWorker?: number | undefined;
|
|
278
|
-
};
|
|
279
|
-
push: {} & {
|
|
280
|
-
url?: string | undefined;
|
|
281
|
-
apiKey?: string | undefined;
|
|
282
|
-
};
|
|
283
|
-
cvr: {
|
|
284
|
-
maxConns: number;
|
|
285
|
-
} & {
|
|
286
|
-
db?: string | undefined;
|
|
287
|
-
maxConnsPerWorker?: number | undefined;
|
|
288
|
-
} & {
|
|
289
|
-
db: string;
|
|
290
|
-
};
|
|
291
|
-
change: {
|
|
292
|
-
maxConns: number;
|
|
293
|
-
} & {
|
|
294
|
-
db?: string | undefined;
|
|
295
|
-
} & {
|
|
296
|
-
db: string;
|
|
297
|
-
};
|
|
298
|
-
replica: {
|
|
299
|
-
file: string;
|
|
300
|
-
} & {
|
|
301
|
-
vacuumIntervalHours?: number | undefined;
|
|
302
|
-
};
|
|
303
|
-
log: {
|
|
304
|
-
level: "error" | "debug" | "info" | "warn";
|
|
305
|
-
format: "text" | "json";
|
|
306
|
-
slowRowThreshold: number;
|
|
307
|
-
slowHydrateThreshold: number;
|
|
308
|
-
ivmSampling: number;
|
|
309
|
-
} & {
|
|
310
|
-
traceCollector?: string | undefined;
|
|
311
|
-
metricCollector?: string | undefined;
|
|
312
|
-
logCollector?: string | undefined;
|
|
313
|
-
};
|
|
314
|
-
app: {
|
|
315
|
-
id: string;
|
|
316
|
-
publications: string[];
|
|
317
|
-
} & {};
|
|
318
|
-
shard: {
|
|
319
|
-
num: number;
|
|
320
|
-
} & {
|
|
321
|
-
id?: string | undefined;
|
|
322
|
-
};
|
|
323
|
-
auth: {} & {
|
|
324
|
-
jwk?: string | undefined;
|
|
325
|
-
jwksUrl?: string | undefined;
|
|
326
|
-
secret?: string | undefined;
|
|
327
|
-
};
|
|
328
|
-
port: number;
|
|
329
|
-
perUserMutationLimit: {
|
|
330
|
-
windowMs: number;
|
|
331
|
-
} & {
|
|
332
|
-
max?: number | undefined;
|
|
333
|
-
};
|
|
334
|
-
autoReset: boolean;
|
|
335
|
-
litestream: {
|
|
336
|
-
configPath: string;
|
|
337
|
-
logLevel: "error" | "debug" | "info" | "warn";
|
|
338
|
-
checkpointThresholdMB: number;
|
|
339
|
-
incrementalBackupIntervalMinutes: number;
|
|
340
|
-
snapshotBackupIntervalHours: number;
|
|
341
|
-
restoreParallelism: number;
|
|
342
|
-
multipartConcurrency: number;
|
|
343
|
-
multipartSize: number;
|
|
344
|
-
} & {
|
|
345
|
-
executable?: string | undefined;
|
|
346
|
-
backupURL?: string | undefined;
|
|
347
|
-
port?: number | undefined;
|
|
348
|
-
restoreDurationMsEstimate?: number | undefined;
|
|
349
|
-
};
|
|
350
|
-
initialSync: {
|
|
351
|
-
tableCopyWorkers: number;
|
|
352
|
-
rowBatchSize: number;
|
|
353
|
-
} & {};
|
|
354
|
-
targetClientRowCount: number;
|
|
355
|
-
lazyStartup: boolean;
|
|
356
|
-
serverVersion?: string | undefined;
|
|
357
|
-
queryHydrationStats?: boolean | undefined;
|
|
358
|
-
changeStreamerPort?: number | undefined;
|
|
359
|
-
taskID?: string | undefined;
|
|
360
|
-
numSyncWorkers?: number | undefined;
|
|
361
|
-
changeStreamerURI?: string | undefined;
|
|
362
|
-
adminPassword?: string | undefined;
|
|
363
|
-
storageDBTmpDir?: string | undefined;
|
|
364
|
-
tenantID?: string | undefined;
|
|
365
|
-
};
|
|
366
|
-
env: Record<string, string>;
|
|
367
|
-
};
|
|
368
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/runner/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AAKtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD7B,CAAC;AAiDF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,wBAAgB,kBAAkB,CAChC,UAAU,GAAE,MAAM,CAAC,UAAwB,EAC3C,IAAI,WAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB7B"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { envSchema, parseOptionsAdvanced, } from "../../../../shared/src/options.js";
|
|
2
|
-
import * as v from "../../../../shared/src/valita.js";
|
|
3
|
-
import { normalizeZeroConfig, zeroOptions } from "../../config/zero-config.js";
|
|
4
|
-
const ENV_VAR_PREFIX = 'ZERO_';
|
|
5
|
-
export const multiConfigSchema = {
|
|
6
|
-
...zeroOptions,
|
|
7
|
-
serverVersion: {
|
|
8
|
-
type: v.string().optional(),
|
|
9
|
-
desc: [`The version string outputted to logs when the server starts up.`],
|
|
10
|
-
},
|
|
11
|
-
tenantsJSON: {
|
|
12
|
-
type: v.string().optional(),
|
|
13
|
-
desc: [
|
|
14
|
-
`JSON encoding of per-tenant configs for running the server in multi-tenant mode:`,
|
|
15
|
-
``,
|
|
16
|
-
`\\{`,
|
|
17
|
-
` /**`,
|
|
18
|
-
` * Requests to the main application {bold port} are dispatched to the first tenant`,
|
|
19
|
-
` * with a matching {bold host} and {bold path}. If both host and path are specified,`,
|
|
20
|
-
` * both must match for the request to be dispatched to that tenant.`,
|
|
21
|
-
` *`,
|
|
22
|
-
` * Requests can also be sent directly to the {bold ZERO_PORT} specified`,
|
|
23
|
-
` * in a tenant's {bold env} overrides. In this case, no host or path`,
|
|
24
|
-
` * matching is necessary.`,
|
|
25
|
-
` */`,
|
|
26
|
-
` tenants: \\{`,
|
|
27
|
-
` /**`,
|
|
28
|
-
` * Unique per-tenant ID used internally for multi-node dispatch.`,
|
|
29
|
-
` *`,
|
|
30
|
-
` * The ID may only contain alphanumeric characters, underscores, and hyphens.`,
|
|
31
|
-
` * Note that changing the ID may result in temporary disruption in multi-node`,
|
|
32
|
-
` * mode, when the configs in the view-syncer and replication-manager differ.`,
|
|
33
|
-
` */`,
|
|
34
|
-
` id: string;`,
|
|
35
|
-
` host?: string; // case-insensitive full Host: header match`,
|
|
36
|
-
` path?: string; // first path component, with or without leading slash`,
|
|
37
|
-
``,
|
|
38
|
-
` /**`,
|
|
39
|
-
` * Options are inherited from the main application (e.g. args and ENV) by default,`,
|
|
40
|
-
` * and are overridden by values in the tenant's {bold env} object.`,
|
|
41
|
-
` */`,
|
|
42
|
-
` env: \\{`,
|
|
43
|
-
` ZERO_REPLICA_FILE: string`,
|
|
44
|
-
` ZERO_UPSTREAM_DB: string`,
|
|
45
|
-
` ZERO_CVR_DB: string`,
|
|
46
|
-
` ZERO_CHANGE_DB: string`,
|
|
47
|
-
` ...`,
|
|
48
|
-
` \\};`,
|
|
49
|
-
` \\}[];`,
|
|
50
|
-
`\\}`,
|
|
51
|
-
],
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
const zeroEnvSchema = envSchema(zeroOptions, ENV_VAR_PREFIX);
|
|
55
|
-
const tenantSchema = v.object({
|
|
56
|
-
id: v.string(),
|
|
57
|
-
host: v
|
|
58
|
-
.string()
|
|
59
|
-
.map(h => h.toLowerCase())
|
|
60
|
-
.optional(),
|
|
61
|
-
path: v
|
|
62
|
-
.string()
|
|
63
|
-
.chain(p => {
|
|
64
|
-
if (p.indexOf('/', 1) >= 0) {
|
|
65
|
-
return v.err(`Only a single path component may be specified: ${p}`);
|
|
66
|
-
}
|
|
67
|
-
p = p[0] === '/' ? p : '/' + p;
|
|
68
|
-
return v.ok(p + '/'); // normalized to '/{path}/'
|
|
69
|
-
})
|
|
70
|
-
.optional(),
|
|
71
|
-
env: zeroEnvSchema.partial().extend({
|
|
72
|
-
// Keep this as a required field. Note that ZERO_UPSTREAM_DB is optional as
|
|
73
|
-
// it can be shared provided that each tenant has its own ZERO_APP_ID.
|
|
74
|
-
['ZERO_REPLICA_FILE']: v.string(),
|
|
75
|
-
}),
|
|
76
|
-
});
|
|
77
|
-
const ID_REGEX = /^[A-Za-z0-9_-]+$/;
|
|
78
|
-
const tenantsSchema = v
|
|
79
|
-
.object({
|
|
80
|
-
tenants: v.array(tenantSchema),
|
|
81
|
-
})
|
|
82
|
-
.chain(val => {
|
|
83
|
-
const ids = new Set();
|
|
84
|
-
for (const { id } of val.tenants) {
|
|
85
|
-
if (!ID_REGEX.test(id)) {
|
|
86
|
-
return v.err(`Invalid tenant ID "${id}". Must be non-empty, and contain only alphanumeric characters, underscores, and hyphens`);
|
|
87
|
-
}
|
|
88
|
-
if (ids.has(id)) {
|
|
89
|
-
return v.err(`Multiple tenants with ID ${id}`);
|
|
90
|
-
}
|
|
91
|
-
ids.add(id);
|
|
92
|
-
}
|
|
93
|
-
return v.ok(val);
|
|
94
|
-
});
|
|
95
|
-
export function getMultiZeroConfig(processEnv = process.env, argv = process.argv.slice(2)) {
|
|
96
|
-
const { config: { tenantsJSON, ...config }, env, } = parseOptionsAdvanced(multiConfigSchema, argv, ENV_VAR_PREFIX, false, true, // allowPartial, as options can be merged with each tenant's `env`
|
|
97
|
-
processEnv);
|
|
98
|
-
const tenantsConfig = tenantsJSON
|
|
99
|
-
? v.parse(JSON.parse(tenantsJSON), tenantsSchema)
|
|
100
|
-
: { tenants: [] };
|
|
101
|
-
return { config: { ...normalizeZeroConfig(config), ...tenantsConfig }, env };
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/runner/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect-params.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,mBAAmB,GAE1B;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAwCJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect-params.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAkBpD,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,GAAQ,EACR,OAA4B;IAU5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,kBAAkB,CAC3D,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CACxC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,aAAa;gBACb,UAAU;gBACV,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,SAAS;gBACT,iBAAiB,EAAE,qBAAqB;gBACxC,IAAI,EAAE,SAAS;gBACf,MAAM;aACP;YACD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import type { Worker } from '../../types/processes.ts';
|
|
3
|
-
import { HttpService, type Options } from '../http-service.ts';
|
|
4
|
-
import type { ZeroConfig } from '../../config/zero-config.ts';
|
|
5
|
-
export declare class Dispatcher extends HttpService {
|
|
6
|
-
#private;
|
|
7
|
-
readonly id = "dispatcher";
|
|
8
|
-
constructor(config: ZeroConfig, lc: LogContext, taskID: string, parent: Worker | null, syncers: Worker[], mutator: Worker | undefined, opts: Options);
|
|
9
|
-
}
|
|
10
|
-
export declare function parsePath(url: URL): {
|
|
11
|
-
base?: string;
|
|
12
|
-
verb: 'sync' | 'mutate';
|
|
13
|
-
version: string;
|
|
14
|
-
} | undefined;
|
|
15
|
-
//# sourceMappingURL=dispatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAI5C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAI7D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAM5D,qBAAa,UAAW,SAAQ,WAAW;;IACzC,QAAQ,CAAC,EAAE,gBAAgB;gBAMzB,MAAM,EAAE,UAAU,EAClB,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,OAAO;CAoDhB;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,GAAG,GACP;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAGvE"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import UrlPattern from 'url-pattern';
|
|
3
|
-
import { h32 } from "../../../../shared/src/hash.js";
|
|
4
|
-
import { HttpService } from "../http-service.js";
|
|
5
|
-
import { getConnectParams } from "./connect-params.js";
|
|
6
|
-
import { installWebSocketHandoff } from "./websocket-handoff.js";
|
|
7
|
-
import { assert } from "../../../../shared/src/asserts.js";
|
|
8
|
-
// The server allows the client to use any /:base/ path to facilitate
|
|
9
|
-
// servicing requests on the same domain as the application.
|
|
10
|
-
const CONNECT_URL_PATTERN = new UrlPattern('(/:base)/:verb/v:version/connect');
|
|
11
|
-
export class Dispatcher extends HttpService {
|
|
12
|
-
id = 'dispatcher';
|
|
13
|
-
#taskID;
|
|
14
|
-
#syncers;
|
|
15
|
-
#mutator;
|
|
16
|
-
constructor(config, lc, taskID, parent, syncers, mutator, opts) {
|
|
17
|
-
super('dispatcher', config, lc, opts, fastify => {
|
|
18
|
-
installWebSocketHandoff(lc, req => this.#handoff(req), fastify.server);
|
|
19
|
-
});
|
|
20
|
-
this.#taskID = taskID;
|
|
21
|
-
this.#syncers = syncers;
|
|
22
|
-
this.#mutator = mutator;
|
|
23
|
-
if (parent) {
|
|
24
|
-
installWebSocketHandoff(lc, req => this.#handoff(req), parent);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
#handoff(req) {
|
|
28
|
-
const { headers, url: u } = req;
|
|
29
|
-
const url = new URL(u ?? '', 'http://unused/');
|
|
30
|
-
const path = parsePath(url);
|
|
31
|
-
if (!path) {
|
|
32
|
-
throw new Error(`Invalid URL: ${u}`);
|
|
33
|
-
}
|
|
34
|
-
const version = Number(path.version);
|
|
35
|
-
if (Number.isNaN(version)) {
|
|
36
|
-
throw new Error(`Invalid version: ${u}`);
|
|
37
|
-
}
|
|
38
|
-
const { params, error } = getConnectParams(version, url, headers);
|
|
39
|
-
if (error !== null) {
|
|
40
|
-
throw new Error(error);
|
|
41
|
-
}
|
|
42
|
-
const { clientGroupID } = params;
|
|
43
|
-
if (path.verb === 'sync') {
|
|
44
|
-
// Include the TaskID when hash-bucketting the client group to the sync
|
|
45
|
-
// worker. This diversifies the distribution of client groups (across
|
|
46
|
-
// workers) for different tasks, so that if one task sheds connections
|
|
47
|
-
// from its most heavily loaded sync worker(s), those client groups will
|
|
48
|
-
// be distributed uniformly across workers on the receiving task(s).
|
|
49
|
-
const syncer = h32(this.#taskID + '/' + clientGroupID) % this.#syncers.length;
|
|
50
|
-
this._lc.debug?.(`connecting ${clientGroupID} to syncer ${syncer}`);
|
|
51
|
-
return { payload: params, receiver: this.#syncers[syncer] };
|
|
52
|
-
}
|
|
53
|
-
else if (path.verb === 'mutate') {
|
|
54
|
-
assert(this.#mutator !== undefined, 'Received a push for a custom mutation but no `push.url` was configured.');
|
|
55
|
-
return { payload: params, receiver: this.#mutator };
|
|
56
|
-
}
|
|
57
|
-
throw new Error(`Invalid verb: ${u}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export function parsePath(url) {
|
|
61
|
-
// The match() returns both null and undefined.
|
|
62
|
-
return CONNECT_URL_PATTERN.match(url.pathname) || undefined;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=dispatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-handoff.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/websocket-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAkB,MAAM,EAAC,MAAM,WAAW,CAAC;AAElD,OAAO,EAAC,eAAe,EAAE,KAAK,SAAS,EAAC,MAAM,IAAI,CAAC;AAEnD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,MAAM,EACZ,MAAM,0BAA0B,CAAC;AAGlC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACrC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAC/B,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAE3B,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,QAyDxB;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,QAoBf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-handoff.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/websocket-handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves to the the string `"timed-out"` if `timeoutMs` elapses before
|
|
3
|
-
* the specified `promise` resolves.
|
|
4
|
-
*/
|
|
5
|
-
export declare function orTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T | 'timed-out'>;
|
|
6
|
-
/**
|
|
7
|
-
* Resolves to the specified `timeoutValue` if `timeoutMs` elapses before
|
|
8
|
-
* the specified `promise` resolves.
|
|
9
|
-
*/
|
|
10
|
-
export declare function orTimeoutWith<T, U>(promise: Promise<T>, timeoutMs: number, timeoutValue: U): Promise<T | U>;
|
|
11
|
-
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/types/timeout.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,CAE1B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAQhB"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { sleepWithAbort } from "../../../shared/src/sleep.js";
|
|
2
|
-
/**
|
|
3
|
-
* Resolves to the the string `"timed-out"` if `timeoutMs` elapses before
|
|
4
|
-
* the specified `promise` resolves.
|
|
5
|
-
*/
|
|
6
|
-
export function orTimeout(promise, timeoutMs) {
|
|
7
|
-
return orTimeoutWith(promise, timeoutMs, 'timed-out');
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Resolves to the specified `timeoutValue` if `timeoutMs` elapses before
|
|
11
|
-
* the specified `promise` resolves.
|
|
12
|
-
*/
|
|
13
|
-
export async function orTimeoutWith(promise, timeoutMs, timeoutValue) {
|
|
14
|
-
const ac = new AbortController();
|
|
15
|
-
const [timeout] = sleepWithAbort(timeoutMs, ac.signal);
|
|
16
|
-
try {
|
|
17
|
-
return await Promise.race([promise, timeout.then(() => timeoutValue)]);
|
|
18
|
-
}
|
|
19
|
-
finally {
|
|
20
|
-
ac.abort();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=timeout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../../../zero-cache/src/types/timeout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,OAAmB,EACnB,SAAiB;IAEjB,OAAO,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAmB,EACnB,SAAiB,EACjB,YAAe;IAEf,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
File without changes
|
|
File without changes
|