@instantdb/core 0.22.140 → 0.22.141-experimental.docs-chat-streaming.22119821468.1
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/dist/commonjs/Stream.d.ts +6 -0
- package/dist/commonjs/Stream.d.ts.map +1 -1
- package/dist/commonjs/Stream.js +52 -10
- package/dist/commonjs/Stream.js.map +1 -1
- package/dist/commonjs/index.d.ts +14 -0
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/esm/Stream.d.ts +6 -0
- package/dist/esm/Stream.d.ts.map +1 -1
- package/dist/esm/Stream.js +52 -10
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/index.d.ts +14 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/standalone/index.js +1430 -1409
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +2 -2
- package/src/Stream.ts +77 -15
- package/src/index.ts +14 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Logger } from './utils/log.ts';
|
|
2
|
+
import { RuleParams } from './schemaTypes.ts';
|
|
2
3
|
export type WritableStreamCtor = {
|
|
3
4
|
new <W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;
|
|
4
5
|
};
|
|
@@ -12,6 +13,7 @@ type StartStreamMsg = {
|
|
|
12
13
|
op: 'start-stream';
|
|
13
14
|
'client-id': string;
|
|
14
15
|
'reconnect-token': string;
|
|
16
|
+
'rule-params'?: RuleParams;
|
|
15
17
|
};
|
|
16
18
|
type AppendStreamMsg = {
|
|
17
19
|
op: 'append-stream';
|
|
@@ -26,6 +28,7 @@ type SubscribeStreamMsg = {
|
|
|
26
28
|
'stream-id'?: string;
|
|
27
29
|
'client-id'?: string;
|
|
28
30
|
offset?: number;
|
|
31
|
+
'rule-params'?: RuleParams;
|
|
29
32
|
};
|
|
30
33
|
type UnsubscribeStreamMsg = {
|
|
31
34
|
op: 'unsubscribe-stream';
|
|
@@ -89,11 +92,14 @@ export declare class InstantStream {
|
|
|
89
92
|
});
|
|
90
93
|
createWriteStream(opts: {
|
|
91
94
|
clientId: string;
|
|
95
|
+
waitUntil?: (promise: Promise<any>) => void | null | undefined;
|
|
96
|
+
ruleParams?: RuleParams | null | undefined;
|
|
92
97
|
}): InstantWritableStream<string>;
|
|
93
98
|
createReadStream(opts: {
|
|
94
99
|
clientId?: string | null | undefined;
|
|
95
100
|
streamId?: string | null | undefined;
|
|
96
101
|
byteOffset?: number | null | undefined;
|
|
102
|
+
ruleParams?: RuleParams | null | undefined;
|
|
97
103
|
}): ReadableStream<string>;
|
|
98
104
|
private startWriteStream;
|
|
99
105
|
private registerWriteStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/Stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/Stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,GAAG,GAAG,EACV,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAClC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,GAAG,GAAG,EACV,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAC7C,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC5B,cAAc,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AA0oBD,KAAK,cAAc,GAAG;IACpB,EAAE,EAAE,cAAc,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,kBAAkB,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,EAAE,EAAE,oBAAoB,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,OAAO,GACR,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,oBAAoB,CAAC;AAEzB,KAAK,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,iBAAiB,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,gBAAgB,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAGF,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,mBAAmB,CAGpB;IAEP,OAAO,CAAC,mBAAmB,CAGpB;IACP,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAmD;gBAE5D,EACV,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,GACJ,EAAE;QACD,OAAO,EAAE,kBAAkB,CAAC;QAC5B,OAAO,EAAE,kBAAkB,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb;IAOM,iBAAiB,CAAC,IAAI,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;QAC/D,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;KAC5C,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAe1B,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QACvC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;KAC5C;IAcD,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,YAAY;IA6BpB,cAAc,CAAC,GAAG,EAAE,qBAAqB;IAOzC,eAAe,CAAC,GAAG,EAAE,gBAAgB;IAUrC,eAAe,CAAC,GAAG,EAAE,gBAAgB;IAarC,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,gBAAgB;IASxB,cAAc,CAAC,GAAG,EAAE,eAAe;IAsCnC,wBAAwB,CAAC,MAAM,KAAA;IA6B/B,cAAc,CAAC,GAAG,EAAE,qBAAqB;IAwCzC,gBAAgB;CAGjB"}
|
package/dist/commonjs/Stream.js
CHANGED
|
@@ -16,6 +16,7 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
16
16
|
let closed = false;
|
|
17
17
|
const closeCbs = [];
|
|
18
18
|
const streamIdCbs = [];
|
|
19
|
+
const completeCbs = [];
|
|
19
20
|
let disconnected = false;
|
|
20
21
|
// Chunks that we haven't been notified are flushed to disk
|
|
21
22
|
let bufferOffset = 0;
|
|
@@ -37,6 +38,30 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
}
|
|
41
|
+
function addCompleteCb(cb) {
|
|
42
|
+
completeCbs.push(cb);
|
|
43
|
+
return () => {
|
|
44
|
+
const i = completeCbs.indexOf(cb);
|
|
45
|
+
if (i !== -1) {
|
|
46
|
+
completeCbs.splice(i, 1);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (opts.waitUntil) {
|
|
51
|
+
opts.waitUntil(new Promise((resolve) => {
|
|
52
|
+
completeCbs.push(resolve);
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
function runCompleteCbs() {
|
|
56
|
+
for (const cb of completeCbs) {
|
|
57
|
+
try {
|
|
58
|
+
// cb could be provided by the user in the waitUntil,
|
|
59
|
+
// so protect against errors.
|
|
60
|
+
cb();
|
|
61
|
+
}
|
|
62
|
+
catch (_e) { }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
40
65
|
function addStreamIdCb(cb) {
|
|
41
66
|
streamIdCbs.push(cb);
|
|
42
67
|
return () => {
|
|
@@ -75,10 +100,16 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
75
100
|
buffer.splice(0, segmentsToDrop);
|
|
76
101
|
}
|
|
77
102
|
}
|
|
103
|
+
function error(controller, e) {
|
|
104
|
+
markClosed();
|
|
105
|
+
controller.error(e);
|
|
106
|
+
runCompleteCbs();
|
|
107
|
+
}
|
|
78
108
|
async function onConnectionReconnect() {
|
|
79
109
|
const result = await startStream({
|
|
80
110
|
clientId,
|
|
81
111
|
reconnectToken,
|
|
112
|
+
ruleParams: opts.ruleParams,
|
|
82
113
|
});
|
|
83
114
|
switch (result.type) {
|
|
84
115
|
case 'ok': {
|
|
@@ -101,8 +132,7 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
101
132
|
}
|
|
102
133
|
case 'error': {
|
|
103
134
|
if (controller_) {
|
|
104
|
-
|
|
105
|
-
markClosed();
|
|
135
|
+
error(controller_, result.error);
|
|
106
136
|
}
|
|
107
137
|
break;
|
|
108
138
|
}
|
|
@@ -117,18 +147,17 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
117
147
|
discardFlushed(offset);
|
|
118
148
|
if (done) {
|
|
119
149
|
isDone = true;
|
|
150
|
+
runCompleteCbs();
|
|
120
151
|
}
|
|
121
152
|
}
|
|
122
|
-
function error(controller, error) {
|
|
123
|
-
markClosed();
|
|
124
|
-
controller.error(error);
|
|
125
|
-
}
|
|
126
153
|
function ensureSetup(controller) {
|
|
127
154
|
if (isDone) {
|
|
128
155
|
error(controller, new InstantError_ts_1.InstantError('Stream has been closed.'));
|
|
156
|
+
return null;
|
|
129
157
|
}
|
|
130
158
|
if (!streamId_) {
|
|
131
159
|
error(controller, new InstantError_ts_1.InstantError('Stream has not been initialized.'));
|
|
160
|
+
return null;
|
|
132
161
|
}
|
|
133
162
|
return streamId_;
|
|
134
163
|
}
|
|
@@ -143,6 +172,7 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
143
172
|
const result = await startStream({
|
|
144
173
|
clientId: opts.clientId,
|
|
145
174
|
reconnectToken,
|
|
175
|
+
ruleParams: opts.ruleParams,
|
|
146
176
|
});
|
|
147
177
|
switch (result.type) {
|
|
148
178
|
case 'ok': {
|
|
@@ -239,6 +269,9 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
239
269
|
isDone: true,
|
|
240
270
|
});
|
|
241
271
|
}
|
|
272
|
+
else {
|
|
273
|
+
runCompleteCbs();
|
|
274
|
+
}
|
|
242
275
|
markClosed();
|
|
243
276
|
},
|
|
244
277
|
abort(reason) {
|
|
@@ -251,12 +284,15 @@ function createWriteStream({ WStream, opts, startStream, appendStream, registerS
|
|
|
251
284
|
abortReason: reason,
|
|
252
285
|
});
|
|
253
286
|
}
|
|
287
|
+
else {
|
|
288
|
+
runCompleteCbs();
|
|
289
|
+
}
|
|
254
290
|
markClosed();
|
|
255
291
|
},
|
|
256
292
|
});
|
|
257
293
|
return {
|
|
258
294
|
stream,
|
|
259
|
-
|
|
295
|
+
addCompleteCb,
|
|
260
296
|
closed() {
|
|
261
297
|
return closed;
|
|
262
298
|
},
|
|
@@ -491,7 +527,7 @@ class InstantStream {
|
|
|
491
527
|
this.log = log;
|
|
492
528
|
}
|
|
493
529
|
createWriteStream(opts) {
|
|
494
|
-
const { stream,
|
|
530
|
+
const { stream, addCompleteCb } = createWriteStream({
|
|
495
531
|
WStream: this.WStream,
|
|
496
532
|
startStream: this.startWriteStream.bind(this),
|
|
497
533
|
appendStream: this.appendStream.bind(this),
|
|
@@ -499,7 +535,7 @@ class InstantStream {
|
|
|
499
535
|
opts,
|
|
500
536
|
});
|
|
501
537
|
this.activeStreams.add(stream);
|
|
502
|
-
|
|
538
|
+
addCompleteCb(() => {
|
|
503
539
|
this.activeStreams.delete(stream);
|
|
504
540
|
});
|
|
505
541
|
return stream;
|
|
@@ -529,6 +565,9 @@ class InstantStream {
|
|
|
529
565
|
'client-id': opts.clientId,
|
|
530
566
|
'reconnect-token': opts.reconnectToken,
|
|
531
567
|
};
|
|
568
|
+
if (opts.ruleParams) {
|
|
569
|
+
msg['rule-params'] = opts.ruleParams;
|
|
570
|
+
}
|
|
532
571
|
this.trySend(eventId, msg);
|
|
533
572
|
return promise;
|
|
534
573
|
}
|
|
@@ -575,7 +614,7 @@ class InstantStream {
|
|
|
575
614
|
delete this.writeStreams[streamId];
|
|
576
615
|
}
|
|
577
616
|
}
|
|
578
|
-
startReadStream({ eventId, clientId, streamId, offset, }) {
|
|
617
|
+
startReadStream({ eventId, clientId, streamId, offset, ruleParams, }) {
|
|
579
618
|
const msg = { op: 'subscribe-stream' };
|
|
580
619
|
if (!streamId && !clientId) {
|
|
581
620
|
throw new Error('Must provide one of streamId or clientId to subscribe to the stream.');
|
|
@@ -589,6 +628,9 @@ class InstantStream {
|
|
|
589
628
|
if (offset) {
|
|
590
629
|
msg['offset'] = offset;
|
|
591
630
|
}
|
|
631
|
+
if (ruleParams) {
|
|
632
|
+
msg['rule-params'] = ruleParams;
|
|
633
|
+
}
|
|
592
634
|
const iterator = new StreamIterator();
|
|
593
635
|
this.readStreamIterators[eventId] = iterator;
|
|
594
636
|
this.trySend(eventId, msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.js","sourceRoot":"","sources":["../../src/Stream.ts"],"names":[],"mappings":"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","sourcesContent":["import uuid from './utils/id.ts';\nimport { Logger } from './utils/log.ts';\nimport { STATUS } from './Reactor.js';\nimport { InstantError } from './InstantError.ts';\n\nexport type WritableStreamCtor = {\n new <W = any>(\n underlyingSink?: UnderlyingSink<W>,\n strategy?: QueuingStrategy<W>,\n ): WritableStream<W>;\n};\n\nexport type ReadableStreamCtor = {\n new <R = any>(\n underlyingSource?: UnderlyingDefaultSource<R>,\n strategy?: QueuingStrategy<R>,\n ): ReadableStream<R>;\n};\n\nexport interface InstantWritableStream<T> extends WritableStream<T> {\n streamId: () => Promise<string>;\n}\n\ntype WriteStreamStartResult =\n | { type: 'ok'; streamId: string; offset: number }\n | { type: 'disconnect' }\n | { type: 'error'; error: InstantError };\n\ntype WriteStreamCbs = {\n onDisconnect: () => void;\n onConnectionReconnect: () => void;\n onFlush: (args: { offset: number; done: boolean }) => void;\n onAppendFailed: () => void;\n};\n\nfunction createWriteStream({\n WStream,\n opts,\n startStream,\n appendStream,\n registerStream,\n}: {\n WStream: WritableStreamCtor;\n opts: { clientId: string };\n startStream: (opts: {\n clientId: string;\n reconnectToken: string;\n }) => Promise<WriteStreamStartResult>;\n appendStream: (opts: {\n streamId: string;\n chunks: string[];\n isDone?: boolean;\n offset: number;\n abortReason?: string;\n }) => void;\n registerStream: (streamId: string, cbs: WriteStreamCbs) => void;\n}): {\n stream: InstantWritableStream<string>;\n closed: () => boolean;\n addCloseCb: (cb: () => void) => void;\n} {\n const clientId = opts.clientId;\n let streamId_: string | null = null;\n let controller_: WritableStreamDefaultController | null = null;\n const reconnectToken = uuid();\n let isDone: boolean = false;\n let closed: boolean = false;\n const closeCbs: (() => void)[] = [];\n const streamIdCbs: ((streamId: string) => void)[] = [];\n let disconnected: boolean = false;\n // Chunks that we haven't been notified are flushed to disk\n let bufferOffset = 0;\n let bufferByteSize = 0;\n const buffer: { chunk: string; byteLen: number }[] = [];\n const encoder = new TextEncoder();\n\n function markClosed() {\n closed = true;\n for (const cb of closeCbs) {\n cb();\n }\n }\n\n function addCloseCb(cb: () => void) {\n closeCbs.push(cb);\n return () => {\n const i = closeCbs.indexOf(cb);\n if (i !== -1) {\n closeCbs.splice(i, 1);\n }\n };\n }\n\n function addStreamIdCb(cb: (streamId: string) => void) {\n streamIdCbs.push(cb);\n return () => {\n const i = streamIdCbs.indexOf(cb);\n if (i !== -1) {\n streamIdCbs.splice(i, 1);\n }\n };\n }\n\n function setStreamId(streamId: string) {\n streamId_ = streamId;\n for (const cb of streamIdCbs) {\n cb(streamId_);\n }\n }\n\n function onDisconnect() {\n disconnected = true;\n }\n\n // Clears data from our buffer after it has been flushed to a file\n function discardFlushed(offset: number) {\n let chunkOffset = bufferOffset;\n let segmentsToDrop = 0;\n let droppedSegmentsByteLen = 0;\n\n for (const { byteLen } of buffer) {\n const nextChunkOffset = chunkOffset + byteLen;\n if (nextChunkOffset > offset) {\n break;\n }\n chunkOffset = nextChunkOffset;\n segmentsToDrop++;\n droppedSegmentsByteLen += byteLen;\n }\n\n if (segmentsToDrop > 0) {\n bufferOffset += droppedSegmentsByteLen;\n bufferByteSize -= droppedSegmentsByteLen;\n buffer.splice(0, segmentsToDrop);\n }\n }\n\n async function onConnectionReconnect() {\n const result = await startStream({\n clientId,\n reconnectToken,\n });\n switch (result.type) {\n case 'ok': {\n const { streamId, offset } = result;\n streamId_ = streamId;\n discardFlushed(offset);\n if (buffer.length) {\n appendStream({\n streamId: streamId,\n chunks: buffer.map((b) => b.chunk),\n offset: bufferOffset,\n });\n }\n disconnected = false;\n break;\n }\n case 'disconnect': {\n onDisconnect();\n break;\n }\n case 'error': {\n if (controller_) {\n controller_.error(result.error);\n markClosed();\n }\n break;\n }\n }\n }\n\n // When the append fails, we'll just try to reconnect and start again\n function onAppendFailed() {\n onDisconnect();\n onConnectionReconnect();\n }\n\n function onFlush({ offset, done }: { offset: number; done: boolean }) {\n discardFlushed(offset);\n if (done) {\n isDone = true;\n }\n }\n\n function error(\n controller: WritableStreamDefaultController,\n error: InstantError,\n ) {\n markClosed();\n controller.error(error);\n }\n\n function ensureSetup(controller): string | null {\n if (isDone) {\n error(controller, new InstantError('Stream has been closed.'));\n }\n if (!streamId_) {\n error(controller, new InstantError('Stream has not been initialized.'));\n }\n return streamId_;\n }\n\n async function start(controller: WritableStreamDefaultController) {\n controller_ = controller;\n let tryAgain = true;\n let attempts = 0;\n\n while (tryAgain) {\n // rate-limit after the first few failed connects\n let nextAttempt = Date.now() + Math.min(15000, 500 * (attempts - 1));\n tryAgain = false;\n const result = await startStream({\n clientId: opts.clientId,\n reconnectToken,\n });\n\n switch (result.type) {\n case 'ok': {\n const { streamId, offset } = result;\n if (offset !== 0) {\n const e = new InstantError('Write stream is corrupted');\n error(controller, e);\n return;\n }\n setStreamId(streamId);\n registerStream(streamId, {\n onDisconnect,\n onFlush,\n onConnectionReconnect,\n onAppendFailed,\n });\n disconnected = false;\n return;\n }\n case 'disconnect': {\n tryAgain = true;\n onDisconnect();\n attempts++;\n await new Promise((resolve) => {\n // Try again immediately for the first two attempts, then back off\n setTimeout(resolve, nextAttempt - Date.now());\n });\n break;\n }\n case 'error': {\n error(controller, result.error);\n return;\n }\n }\n }\n }\n\n class WStreamEnhanced\n extends WStream<string>\n implements InstantWritableStream<string>\n {\n constructor(\n sink?: UnderlyingSink<string>,\n strategy?: QueuingStrategy<string>,\n ) {\n super(sink, strategy);\n }\n\n public async streamId(): Promise<string> {\n if (streamId_) {\n return streamId_;\n }\n return new Promise((resolve, reject) => {\n const cleanupFns: (() => void)[] = [];\n const cleanup = () => {\n for (const f of cleanupFns) {\n f();\n }\n };\n const resolveCb = (streamId: string) => {\n resolve(streamId);\n cleanup();\n };\n const rejectCb = () => {\n reject(new InstantError('Stream is closed.'));\n cleanup();\n };\n\n cleanupFns.push(addStreamIdCb(resolveCb));\n cleanupFns.push(addCloseCb(rejectCb));\n });\n }\n }\n\n const stream = new WStreamEnhanced({\n // TODO(dww): accept a storage so that write streams can survive across\n // browser restarts\n async start(controller) {\n try {\n await start(controller);\n } catch (e) {\n error(controller, e);\n }\n },\n write(chunk, controller) {\n const streamId = ensureSetup(controller);\n if (streamId) {\n const byteLen = encoder.encode(chunk).length;\n buffer.push({ chunk, byteLen });\n const offset = bufferOffset + bufferByteSize;\n bufferByteSize += byteLen;\n if (!disconnected) {\n appendStream({ streamId, chunks: [chunk], offset });\n }\n }\n },\n close() {\n if (streamId_) {\n appendStream({\n streamId: streamId_,\n chunks: [],\n offset: bufferOffset + bufferByteSize,\n isDone: true,\n });\n }\n markClosed();\n },\n abort(reason) {\n if (streamId_) {\n appendStream({\n streamId: streamId_,\n chunks: [],\n offset: bufferOffset + bufferByteSize,\n isDone: true,\n abortReason: reason,\n });\n }\n markClosed();\n },\n });\n return {\n stream,\n addCloseCb,\n closed() {\n return closed;\n },\n };\n}\n\ntype ReadStreamUpdate =\n | {\n type: 'append';\n offset: number;\n files?: { url: string; size: number }[];\n content?: string;\n }\n | { type: 'error'; error: InstantError }\n | { type: 'reconnect' };\n\nclass StreamIterator<T> {\n private items: T[] = [];\n private resolvers: ((next: {\n value: T | undefined;\n done: boolean;\n }) => void)[] = [];\n private isClosed = false;\n\n constructor() {}\n\n push(item: T) {\n if (this.isClosed) return;\n\n const resolve = this.resolvers.shift();\n if (resolve) {\n resolve({ value: item, done: false });\n } else {\n this.items.push(item);\n }\n }\n\n close() {\n this.isClosed = true;\n while (this.resolvers.length > 0) {\n const resolve = this.resolvers.shift();\n resolve!({ value: undefined, done: true });\n }\n }\n\n async *[Symbol.asyncIterator]() {\n while (true) {\n if (this.items.length > 0) {\n yield this.items.shift()!;\n } else if (this.isClosed) {\n return;\n } else {\n const { value, done } = await new Promise<{\n value: T | undefined;\n done: boolean;\n }>((resolve) => {\n this.resolvers.push(resolve);\n });\n if (done || !value) {\n return;\n }\n yield value;\n }\n }\n }\n}\n\nfunction createReadStream({\n RStream,\n opts,\n startStream,\n cancelStream,\n}: {\n RStream: ReadableStreamCtor;\n opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n byteOffset?: number | null | undefined;\n };\n startStream: (opts: {\n eventId: string;\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n offset?: number;\n }) => StreamIterator<ReadStreamUpdate>;\n cancelStream: (opts: { eventId: string }) => void;\n}): {\n stream: ReadableStream<string>;\n closed: () => boolean;\n addCloseCb: (cb: () => void) => void;\n} {\n let seenOffset = opts.byteOffset || 0;\n let canceled = false;\n const decoder = new TextDecoder('utf-8');\n const encoder = new TextEncoder();\n let eventId: string | null;\n let closed = false;\n const closeCbs: (() => void)[] = [];\n\n function markClosed() {\n closed = true;\n for (const cb of closeCbs) {\n cb();\n }\n }\n\n function addCloseCb(cb: () => void) {\n closeCbs.push(cb);\n return () => {\n const i = closeCbs.indexOf(cb);\n if (i !== -1) {\n closeCbs.splice(i, 1);\n }\n };\n }\n\n function error(\n controller: ReadableStreamDefaultController<string>,\n e: InstantError,\n ) {\n controller.error(e);\n markClosed();\n }\n\n let fetchFailures = 0;\n async function runStartStream(\n opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n offset?: number;\n },\n controller: ReadableStreamDefaultController<string>,\n ): Promise<{ retry: boolean } | undefined> {\n eventId = uuid();\n const streamOpts = { ...(opts || {}), eventId };\n for await (const item of startStream(streamOpts)) {\n if (canceled) {\n return;\n }\n\n if (item.type === 'reconnect') {\n return { retry: true };\n }\n\n if (item.type === 'error') {\n error(controller, item.error);\n return;\n }\n\n if (item.offset > seenOffset) {\n error(controller, new InstantError('Stream is corrupted.'));\n canceled = true;\n return;\n }\n\n let discardLen = seenOffset - item.offset;\n\n if (item.files && item.files.length) {\n const fetchAbort = new AbortController();\n let nextFetch = fetch(item.files[0].url, {\n signal: fetchAbort.signal,\n });\n for (let i = 0; i < item.files.length; i++) {\n const nextFile = item.files[i + 1];\n const thisFetch = nextFetch;\n const res = await thisFetch;\n if (nextFile) {\n nextFetch = fetch(nextFile.url, { signal: fetchAbort.signal });\n }\n\n if (!res.ok) {\n fetchFailures++;\n if (fetchFailures > 10) {\n error(controller, new InstantError('Unable to process stream.'));\n return;\n }\n return { retry: true };\n }\n\n if (res.body) {\n for await (const bodyChunk of res.body) {\n if (canceled) {\n fetchAbort.abort();\n return;\n }\n let chunk = bodyChunk;\n if (discardLen > 0) {\n chunk = bodyChunk.subarray(discardLen);\n discardLen -= bodyChunk.length - chunk.length;\n }\n if (!chunk.length) {\n continue;\n }\n seenOffset += chunk.length;\n const s = decoder.decode(chunk);\n\n controller.enqueue(s);\n }\n } else {\n // RN doesn't support request.body\n const bodyChunk = await res.arrayBuffer();\n let chunk: ArrayBuffer | Uint8Array<ArrayBuffer> = bodyChunk;\n if (canceled) {\n fetchAbort.abort();\n return;\n }\n if (discardLen > 0) {\n chunk = new Uint8Array(bodyChunk).subarray(discardLen);\n discardLen -= bodyChunk.byteLength - chunk.length;\n }\n if (!chunk.byteLength) {\n continue;\n }\n seenOffset += chunk.byteLength;\n const s = decoder.decode(chunk);\n controller.enqueue(s);\n }\n }\n }\n fetchFailures = 0;\n if (item.content) {\n let content = item.content;\n let encoded = encoder.encode(item.content);\n if (discardLen > 0) {\n const remaining = encoded.subarray(discardLen);\n discardLen -= encoded.length - remaining.length;\n if (!remaining.length) {\n continue;\n }\n encoded = remaining;\n content = decoder.decode(remaining);\n }\n seenOffset += encoded.length;\n controller.enqueue(content);\n }\n }\n }\n\n async function start(controller: ReadableStreamDefaultController<string>) {\n let retry = true;\n let attempts = 0;\n while (retry) {\n retry = false;\n let nextAttempt = Date.now() + Math.min(15000, 500 * (attempts - 1));\n const res = await runStartStream(\n { ...opts, offset: seenOffset },\n controller,\n );\n\n if (res?.retry) {\n retry = true;\n attempts++;\n if (nextAttempt < Date.now() - 300000) {\n // reset attempts if we last tried 5 minutes ago\n attempts = 0;\n }\n await new Promise((resolve) => {\n setTimeout(resolve, nextAttempt - Date.now());\n });\n }\n }\n if (!canceled && !closed) {\n controller.close();\n markClosed();\n }\n }\n const stream = new RStream<string>({\n start(controller) {\n start(controller);\n },\n cancel(_reason) {\n canceled = true;\n if (eventId) {\n cancelStream({ eventId });\n }\n markClosed();\n },\n });\n\n return {\n stream,\n addCloseCb,\n closed() {\n return closed;\n },\n };\n}\n\ntype StartStreamMsg = {\n op: 'start-stream';\n 'client-id': string;\n 'reconnect-token': string;\n};\n\ntype AppendStreamMsg = {\n op: 'append-stream';\n 'stream-id': string;\n chunks: string[];\n offset: number;\n done: boolean;\n 'abort-reason'?: string;\n};\n\ntype SubscribeStreamMsg = {\n op: 'subscribe-stream';\n 'stream-id'?: string;\n 'client-id'?: string;\n offset?: number;\n};\n\ntype UnsubscribeStreamMsg = {\n op: 'unsubscribe-stream';\n 'subscribe-event-id': string;\n};\n\ntype SendMsg =\n | StartStreamMsg\n | AppendStreamMsg\n | SubscribeStreamMsg\n | UnsubscribeStreamMsg;\n\ntype TrySend = (eventId: string, msg: SendMsg) => void;\n\ntype StartStreamOkMsg = {\n op: 'start-stream-ok';\n 'client-event-id': string;\n 'stream-id': string;\n offset: number;\n};\n\ntype AppendStreamFailedMsg = {\n op: 'append-failed';\n 'stream-id': string;\n};\n\ntype StreamFlushedMsg = {\n op: 'stream-flushed';\n 'stream-id': string;\n offset: number;\n done: boolean;\n};\n\n// Msg sent to reader when we receive new data\ntype StreamAppendMsg = {\n op: 'stream-append';\n 'stream-id': string;\n 'client-id': string | null;\n 'client-event-id': string;\n files?: { url: string; size: number }[];\n done?: boolean;\n 'abort-reason'?: string;\n offset: number;\n error?: string;\n retry: boolean;\n content?: string;\n};\n\ntype HandleRecieveErrorMsg = {\n 'client-event-id': string;\n 'original-event': SendMsg;\n message?: string;\n hint?: Record<string, any>;\n type?: string;\n};\n\nexport class InstantStream {\n private trySend: TrySend;\n private WStream: WritableStreamCtor;\n private RStream: ReadableStreamCtor;\n private writeStreams: Record<string, WriteStreamCbs> = {};\n private startWriteStreamCbs: Record<\n string,\n (data: WriteStreamStartResult) => void\n > = {};\n\n private readStreamIterators: Record<\n string,\n StreamIterator<ReadStreamUpdate>\n > = {};\n private log: Logger;\n private activeStreams: Set<ReadableStream | WritableStream> = new Set();\n\n constructor({\n WStream,\n RStream,\n trySend,\n log,\n }: {\n WStream: WritableStreamCtor;\n RStream: ReadableStreamCtor;\n trySend: TrySend;\n log: Logger;\n }) {\n this.WStream = WStream;\n this.RStream = RStream;\n this.trySend = trySend;\n this.log = log;\n }\n\n public createWriteStream(opts: {\n clientId: string;\n }): InstantWritableStream<string> {\n const { stream, addCloseCb } = createWriteStream({\n WStream: this.WStream,\n startStream: this.startWriteStream.bind(this),\n appendStream: this.appendStream.bind(this),\n registerStream: this.registerWriteStream.bind(this),\n opts,\n });\n this.activeStreams.add(stream);\n addCloseCb(() => {\n this.activeStreams.delete(stream);\n });\n return stream;\n }\n\n public createReadStream(opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n byteOffset?: number | null | undefined;\n }) {\n const { stream, addCloseCb } = createReadStream({\n RStream: this.RStream,\n opts,\n startStream: this.startReadStream.bind(this),\n cancelStream: this.cancelReadStream.bind(this),\n });\n this.activeStreams.add(stream);\n addCloseCb(() => {\n this.activeStreams.delete(stream);\n });\n return stream;\n }\n\n private startWriteStream(opts: {\n clientId: string;\n reconnectToken: string;\n }): Promise<WriteStreamStartResult> {\n const eventId = uuid();\n let resolve: ((data: WriteStreamStartResult) => void) | null = null;\n const promise: Promise<WriteStreamStartResult> = new Promise((r) => {\n resolve = r;\n });\n this.startWriteStreamCbs[eventId] = resolve!;\n const msg: StartStreamMsg = {\n op: 'start-stream',\n 'client-id': opts.clientId,\n 'reconnect-token': opts.reconnectToken,\n };\n\n this.trySend(eventId, msg);\n\n return promise;\n }\n\n private registerWriteStream(streamId: string, cbs: WriteStreamCbs) {\n this.writeStreams[streamId] = cbs;\n }\n\n private appendStream({\n streamId,\n chunks,\n isDone,\n offset,\n abortReason,\n }: {\n streamId: string;\n chunks: string[];\n isDone?: boolean;\n // XXX: Handle offset on the server\n offset: number;\n abortReason?: string;\n }) {\n const msg: AppendStreamMsg = {\n op: 'append-stream',\n 'stream-id': streamId,\n chunks,\n offset,\n done: !!isDone,\n };\n\n if (abortReason) {\n msg['abort-reason'] = abortReason;\n }\n\n this.trySend(uuid(), msg);\n }\n\n onAppendFailed(msg: AppendStreamFailedMsg) {\n const cbs = this.writeStreams[msg['stream-id']];\n if (cbs) {\n cbs.onAppendFailed();\n }\n }\n\n onStartStreamOk(msg: StartStreamOkMsg) {\n const cb = this.startWriteStreamCbs[msg['client-event-id']];\n if (!cb) {\n this.log.info('No stream for start-stream-ok', msg);\n return;\n }\n cb({ type: 'ok', streamId: msg['stream-id'], offset: msg.offset });\n delete this.startWriteStreamCbs[msg['client-event-id']];\n }\n\n onStreamFlushed(msg: StreamFlushedMsg) {\n const streamId = msg['stream-id'];\n const cbs = this.writeStreams[streamId];\n if (!cbs) {\n this.log.info('No stream cbs for stream-flushed', msg);\n return;\n }\n cbs.onFlush({ offset: msg.offset, done: msg.done });\n if (msg.done) {\n delete this.writeStreams[streamId];\n }\n }\n\n private startReadStream({\n eventId,\n clientId,\n streamId,\n offset,\n }: {\n eventId: string;\n clientId?: string;\n streamId?: string;\n offset?: number;\n }): StreamIterator<ReadStreamUpdate> {\n const msg: SubscribeStreamMsg = { op: 'subscribe-stream' };\n\n if (!streamId && !clientId) {\n throw new Error(\n 'Must provide one of streamId or clientId to subscribe to the stream.',\n );\n }\n\n if (streamId) {\n msg['stream-id'] = streamId;\n }\n\n if (clientId) {\n msg['client-id'] = clientId;\n }\n\n if (offset) {\n msg['offset'] = offset;\n }\n\n const iterator = new StreamIterator<ReadStreamUpdate>();\n\n this.readStreamIterators[eventId] = iterator;\n\n this.trySend(eventId, msg);\n\n return iterator;\n }\n\n private cancelReadStream({ eventId }: { eventId: string }) {\n const msg: UnsubscribeStreamMsg = {\n op: 'unsubscribe-stream',\n 'subscribe-event-id': eventId,\n };\n this.trySend(uuid(), msg);\n delete this.readStreamIterators[eventId];\n }\n\n onStreamAppend(msg: StreamAppendMsg) {\n const eventId = msg['client-event-id'];\n const iterator = this.readStreamIterators[eventId];\n\n if (!iterator) {\n this.log.info('No iterator for read stream', msg);\n return;\n }\n\n if (msg.error) {\n if (msg.retry) {\n iterator.push({ type: 'reconnect' });\n } else {\n iterator.push({\n type: 'error',\n error: new InstantError(msg.error),\n });\n }\n iterator.close();\n delete this.readStreamIterators[eventId];\n return;\n }\n\n if (msg.files?.length || msg.content) {\n iterator.push({\n type: 'append',\n offset: msg.offset,\n files: msg.files,\n content: msg.content,\n });\n }\n\n if (msg.done) {\n iterator.close();\n delete this.readStreamIterators[eventId];\n }\n }\n\n onConnectionStatusChange(status) {\n // Tell the writers to retry:\n for (const cb of Object.values(this.startWriteStreamCbs)) {\n cb({ type: 'disconnect' });\n }\n this.startWriteStreamCbs = {};\n\n if (status !== STATUS.AUTHENTICATED) {\n // Notify the writers that they've been disconnected\n for (const { onDisconnect } of Object.values(this.writeStreams)) {\n onDisconnect();\n }\n } else {\n // Notify the writers that they need to reconnect\n for (const { onConnectionReconnect } of Object.values(\n this.writeStreams,\n )) {\n onConnectionReconnect();\n }\n\n // Notify the readers that they need to reconnect\n for (const iterator of Object.values(this.readStreamIterators)) {\n iterator.push({ type: 'reconnect' });\n iterator.close();\n }\n this.readStreamIterators = {};\n }\n }\n\n onRecieveError(msg: HandleRecieveErrorMsg) {\n const ev = msg['original-event'];\n switch (ev.op) {\n case 'append-stream': {\n const streamId = ev['stream-id'];\n const cbs = this.writeStreams[streamId];\n cbs?.onAppendFailed();\n break;\n }\n case 'start-stream': {\n const eventId = msg['client-event-id'];\n const cb = this.startWriteStreamCbs[eventId];\n if (cb) {\n cb({\n type: 'error',\n error: new InstantError(msg.message || 'Unknown error', msg.hint),\n });\n delete this.startWriteStreamCbs[eventId];\n }\n break;\n }\n case 'subscribe-stream': {\n const eventId = msg['client-event-id'];\n const iterator = this.readStreamIterators[eventId];\n if (iterator) {\n iterator.push({\n type: 'error',\n error: new InstantError(msg.message || 'Unknown error', msg.hint),\n });\n iterator.close();\n delete this.readStreamIterators[eventId];\n }\n break;\n }\n case 'unsubscribe-stream': {\n break;\n }\n }\n }\n\n hasActiveStreams() {\n return this.activeStreams.size > 0;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Stream.js","sourceRoot":"","sources":["../../src/Stream.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAiC;AAEjC,6CAAsC;AACtC,uDAAiD;AAiCjD,SAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,cAAc,GAqBf;IAKC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,WAAW,GAA2C,IAAI,CAAC;IAC/D,MAAM,cAAc,GAAG,IAAA,eAAI,GAAE,CAAC;IAC9B,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAmC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAmB,EAAE,CAAC;IACvC,IAAI,YAAY,GAAY,KAAK,CAAC;IAClC,2DAA2D;IAC3D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,SAAS,UAAU;QACjB,MAAM,GAAG,IAAI,CAAC;QACd,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,EAAE,EAAE,CAAC;QACP,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,EAAc;QAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,EAAc;QACnC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CACZ,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,SAAS,cAAc;QACrB,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,qDAAqD;gBACrD,6BAA6B;gBAC7B,EAAE,EAAE,CAAC;YACP,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;QACjB,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CAAC,EAA8B;QACnD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,WAAW,CAAC,QAAgB;QACnC,SAAS,GAAG,QAAQ,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,kEAAkE;IAClE,SAAS,cAAc,CAAC,MAAc;QACpC,IAAI,WAAW,GAAG,YAAY,CAAC;QAC/B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAE/B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC;YAC9C,IAAI,eAAe,GAAG,MAAM,EAAE,CAAC;gBAC7B,MAAM;YACR,CAAC;YACD,WAAW,GAAG,eAAe,CAAC;YAC9B,cAAc,EAAE,CAAC;YACjB,sBAAsB,IAAI,OAAO,CAAC;QACpC,CAAC;QAED,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,YAAY,IAAI,sBAAsB,CAAC;YACvC,cAAc,IAAI,sBAAsB,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,SAAS,KAAK,CAAC,UAA2C,EAAE,CAAe;QACzE,UAAU,EAAE,CAAC;QACb,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,cAAc,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,UAAU,qBAAqB;QAClC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,QAAQ;YACR,cAAc;YACd,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;gBACpC,SAAS,GAAG,QAAQ,CAAC;gBACrB,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,YAAY,CAAC;wBACX,QAAQ,EAAE,QAAQ;wBAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;wBAClC,MAAM,EAAE,YAAY;qBACrB,CAAC,CAAC;gBACL,CAAC;gBACD,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,YAAY,EAAE,CAAC;gBACf,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,SAAS,cAAc;QACrB,YAAY,EAAE,CAAC;QACf,qBAAqB,EAAE,CAAC;IAC1B,CAAC;IAED,SAAS,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAqC;QAClE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,GAAG,IAAI,CAAC;YACd,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,SAAS,WAAW,CAClB,UAA2C;QAE3C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,UAAU,EAAE,IAAI,8BAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,UAAU,EAAE,IAAI,8BAAY,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,UAA2C;QAC9D,WAAW,GAAG,UAAU,CAAC;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,OAAO,QAAQ,EAAE,CAAC;YAChB,iDAAiD;YACjD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YACrE,QAAQ,GAAG,KAAK,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YAEH,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,IAAI,CAAC,CAAC,CAAC;oBACV,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;oBACpC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;wBACjB,MAAM,CAAC,GAAG,IAAI,8BAAY,CAAC,2BAA2B,CAAC,CAAC;wBACxD,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;wBACrB,OAAO;oBACT,CAAC;oBACD,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACtB,cAAc,CAAC,QAAQ,EAAE;wBACvB,YAAY;wBACZ,OAAO;wBACP,qBAAqB;wBACrB,cAAc;qBACf,CAAC,CAAC;oBACH,YAAY,GAAG,KAAK,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,CAAC;oBACX,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC5B,kEAAkE;wBAClE,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,eACJ,SAAQ,OAAe;QAGvB,YACE,IAA6B,EAC7B,QAAkC;YAElC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxB,CAAC;QAEM,KAAK,CAAC,QAAQ;YACnB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,UAAU,GAAmB,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC3B,CAAC,EAAE,CAAC;oBACN,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE;oBACrC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAClB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACpB,MAAM,CAAC,IAAI,8BAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC9C,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBAEF,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;KACF;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,uEAAuE;QACvE,8BAA8B;QAC9B,KAAK,CAAC,KAAK,CAAC,UAAU;YACpB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,UAAU;YACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,YAAY,GAAG,cAAc,CAAC;gBAC7C,cAAc,IAAI,OAAO,CAAC;gBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,CAAC;oBACX,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,YAAY,GAAG,cAAc;oBACrC,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,UAAU,EAAE,CAAC;QACf,CAAC;QACD,KAAK,CAAC,MAAM;YACV,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,CAAC;oBACX,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,YAAY,GAAG,cAAc;oBACrC,MAAM,EAAE,IAAI;oBACZ,WAAW,EAAE,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,cAAc,EAAE,CAAC;YACnB,CAAC;YACD,UAAU,EAAE,CAAC;QACf,CAAC;KACF,CAAC,CAAC;IACH,OAAO;QACL,MAAM;QACN,aAAa;QACb,MAAM;YACJ,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAYD,MAAM,cAAc;IACV,KAAK,GAAQ,EAAE,CAAC;IAChB,SAAS,GAGD,EAAE,CAAC;IACX,QAAQ,GAAG,KAAK,CAAC;IAEzB,gBAAe,CAAC;IAEhB,IAAI,CAAC,IAAO;QACV,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,OAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,OAAO,CAGtC,CAAC,OAAO,EAAE,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,EACxB,OAAO,EACP,IAAI,EACJ,WAAW,EACX,YAAY,GAiBb;IAKC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,OAAsB,CAAC;IAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,SAAS,UAAU;QACjB,MAAM,GAAG,IAAI,CAAC;QACd,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,EAAE,EAAE,CAAC;QACP,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,EAAc;QAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,KAAK,CACZ,UAAmD,EACnD,CAAe;QAEf,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,UAAU,EAAE,CAAC;IACf,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,UAAU,cAAc,CAC3B,IAKC,EACD,UAAmD;QAEnD,OAAO,GAAG,IAAA,eAAI,GAAE,CAAC;QACjB,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QAChD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC7B,KAAK,CAAC,UAAU,EAAE,IAAI,8BAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC5D,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAI,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAE1C,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;oBACvC,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAG,SAAS,CAAC;oBAC5B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;oBAC5B,IAAI,QAAQ,EAAE,CAAC;wBACb,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;oBACjE,CAAC;oBAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;wBACZ,aAAa,EAAE,CAAC;wBAChB,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;4BACvB,KAAK,CAAC,UAAU,EAAE,IAAI,8BAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC;4BACjE,OAAO;wBACT,CAAC;wBACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBACzB,CAAC;oBAED,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBACb,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;4BACvC,IAAI,QAAQ,EAAE,CAAC;gCACb,UAAU,CAAC,KAAK,EAAE,CAAC;gCACnB,OAAO;4BACT,CAAC;4BACD,IAAI,KAAK,GAAG,SAAS,CAAC;4BACtB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gCACnB,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gCACvC,UAAU,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;4BAChD,CAAC;4BACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gCAClB,SAAS;4BACX,CAAC;4BACD,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;4BAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAEhC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBACxB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,kCAAkC;wBAClC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;wBAC1C,IAAI,KAAK,GAA0C,SAAS,CAAC;wBAC7D,IAAI,QAAQ,EAAE,CAAC;4BACb,UAAU,CAAC,KAAK,EAAE,CAAC;4BACnB,OAAO;wBACT,CAAC;wBACD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;4BACnB,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;4BACvD,UAAU,IAAI,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;wBACpD,CAAC;wBACD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BACtB,SAAS;wBACX,CAAC;wBACD,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;wBAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,aAAa,GAAG,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC/C,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBAChD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,OAAO,GAAG,SAAS,CAAC;oBACpB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;gBACD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;gBAC7B,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,UAAmD;QACtE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,KAAK,EAAE,CAAC;YACb,KAAK,GAAG,KAAK,CAAC;YACd,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,cAAc,CAC9B,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAC/B,UAAU,CACX,CAAC;YAEF,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;gBACf,KAAK,GAAG,IAAI,CAAC;gBACb,QAAQ,EAAE,CAAC;gBACX,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;oBACtC,gDAAgD;oBAChD,QAAQ,GAAG,CAAC,CAAC;gBACf,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC5B,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAS;QACjC,KAAK,CAAC,UAAU;YACd,KAAK,CAAC,UAAU,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,UAAU,EAAE,CAAC;QACf,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,UAAU;QACV,MAAM;YACJ,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAiFD,MAAa,aAAa;IAChB,OAAO,CAAU;IACjB,OAAO,CAAqB;IAC5B,OAAO,CAAqB;IAC5B,YAAY,GAAmC,EAAE,CAAC;IAClD,mBAAmB,GAGvB,EAAE,CAAC;IAEC,mBAAmB,GAGvB,EAAE,CAAC;IACC,GAAG,CAAS;IACZ,aAAa,GAAyC,IAAI,GAAG,EAAE,CAAC;IAExE,YAAY,EACV,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,GAMJ;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEM,iBAAiB,CAAC,IAIxB;QACC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnD,IAAI;SACL,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,aAAa,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,IAKvB;QACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,IAIxB;QACC,MAAM,OAAO,GAAG,IAAA,eAAI,GAAE,CAAC;QACvB,IAAI,OAAO,GAAoD,IAAI,CAAC;QACpE,MAAM,OAAO,GAAoC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjE,OAAO,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,OAAQ,CAAC;QAC7C,MAAM,GAAG,GAAmB;YAC1B,EAAE,EAAE,cAAc;YAClB,WAAW,EAAE,IAAI,CAAC,QAAQ;YAC1B,iBAAiB,EAAE,IAAI,CAAC,cAAc;SACvC,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,GAAmB;QAC/D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IACpC,CAAC;IAEO,YAAY,CAAC,EACnB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,GAQZ;QACC,MAAM,GAAG,GAAoB;YAC3B,EAAE,EAAE,eAAe;YACnB,WAAW,EAAE,QAAQ;YACrB,MAAM;YACN,MAAM;YACN,IAAI,EAAE,CAAC,CAAC,MAAM;SACf,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAA,eAAI,GAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc,CAAC,GAA0B;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,eAAe,CAAC,GAAqB;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe,CAAC,GAAqB;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,EACtB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,GAOX;QACC,MAAM,GAAG,GAAuB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC;QAE3D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAoB,CAAC;QAExD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,EAAE,OAAO,EAAuB;QACvD,MAAM,GAAG,GAAyB;YAChC,EAAE,EAAE,oBAAoB;YACxB,oBAAoB,EAAE,OAAO;SAC9B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAA,eAAI,GAAE,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc,CAAC,GAAoB;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,8BAAY,CAAC,GAAG,CAAC,KAAK,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,MAAM;QAC7B,6BAA6B;QAC7B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzD,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAE9B,IAAI,MAAM,KAAK,mBAAM,CAAC,aAAa,EAAE,CAAC;YACpC,oDAAoD;YACpD,KAAK,MAAM,EAAE,YAAY,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChE,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,KAAK,MAAM,EAAE,qBAAqB,EAAE,IAAI,MAAM,CAAC,MAAM,CACnD,IAAI,CAAC,YAAY,CAClB,EAAE,CAAC;gBACF,qBAAqB,EAAE,CAAC;YAC1B,CAAC;YAED,iDAAiD;YACjD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACrC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,GAA0B;QACvC,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACd,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACxC,GAAG,EAAE,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC;wBACD,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,8BAAY,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC;qBAClE,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,8BAAY,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC;qBAClE,CAAC,CAAC;oBACH,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;IACrC,CAAC;CACF;AAtUD,sCAsUC","sourcesContent":["import uuid from './utils/id.ts';\nimport { Logger } from './utils/log.ts';\nimport { STATUS } from './Reactor.js';\nimport { InstantError } from './InstantError.ts';\nimport { RuleParams } from './schemaTypes.ts';\n\nexport type WritableStreamCtor = {\n new <W = any>(\n underlyingSink?: UnderlyingSink<W>,\n strategy?: QueuingStrategy<W>,\n ): WritableStream<W>;\n};\n\nexport type ReadableStreamCtor = {\n new <R = any>(\n underlyingSource?: UnderlyingDefaultSource<R>,\n strategy?: QueuingStrategy<R>,\n ): ReadableStream<R>;\n};\n\nexport interface InstantWritableStream<T> extends WritableStream<T> {\n streamId: () => Promise<string>;\n}\n\ntype WriteStreamStartResult =\n | { type: 'ok'; streamId: string; offset: number }\n | { type: 'disconnect' }\n | { type: 'error'; error: InstantError };\n\ntype WriteStreamCbs = {\n onDisconnect: () => void;\n onConnectionReconnect: () => void;\n onFlush: (args: { offset: number; done: boolean }) => void;\n onAppendFailed: () => void;\n};\n\nfunction createWriteStream({\n WStream,\n opts,\n startStream,\n appendStream,\n registerStream,\n}: {\n WStream: WritableStreamCtor;\n opts: {\n clientId: string;\n waitUntil?: (promise: Promise<any>) => void | null | undefined;\n ruleParams?: RuleParams | null | undefined;\n };\n startStream: (opts: {\n clientId: string;\n reconnectToken: string;\n ruleParams?: RuleParams | null | undefined;\n }) => Promise<WriteStreamStartResult>;\n appendStream: (opts: {\n streamId: string;\n chunks: string[];\n isDone?: boolean;\n offset: number;\n abortReason?: string;\n }) => void;\n registerStream: (streamId: string, cbs: WriteStreamCbs) => void;\n}): {\n stream: InstantWritableStream<string>;\n closed: () => boolean;\n addCompleteCb: (cb: () => void) => void;\n} {\n const clientId = opts.clientId;\n let streamId_: string | null = null;\n let controller_: WritableStreamDefaultController | null = null;\n const reconnectToken = uuid();\n let isDone: boolean = false;\n let closed: boolean = false;\n const closeCbs: (() => void)[] = [];\n const streamIdCbs: ((streamId: string) => void)[] = [];\n const completeCbs: (() => void)[] = [];\n let disconnected: boolean = false;\n // Chunks that we haven't been notified are flushed to disk\n let bufferOffset = 0;\n let bufferByteSize = 0;\n const buffer: { chunk: string; byteLen: number }[] = [];\n const encoder = new TextEncoder();\n\n function markClosed() {\n closed = true;\n for (const cb of closeCbs) {\n cb();\n }\n }\n\n function addCloseCb(cb: () => void) {\n closeCbs.push(cb);\n return () => {\n const i = closeCbs.indexOf(cb);\n if (i !== -1) {\n closeCbs.splice(i, 1);\n }\n };\n }\n\n function addCompleteCb(cb: () => void) {\n completeCbs.push(cb);\n return () => {\n const i = completeCbs.indexOf(cb);\n if (i !== -1) {\n completeCbs.splice(i, 1);\n }\n };\n }\n\n if (opts.waitUntil) {\n opts.waitUntil(\n new Promise<void>((resolve) => {\n completeCbs.push(resolve);\n }),\n );\n }\n\n function runCompleteCbs() {\n for (const cb of completeCbs) {\n try {\n // cb could be provided by the user in the waitUntil,\n // so protect against errors.\n cb();\n } catch (_e) {}\n }\n }\n\n function addStreamIdCb(cb: (streamId: string) => void) {\n streamIdCbs.push(cb);\n return () => {\n const i = streamIdCbs.indexOf(cb);\n if (i !== -1) {\n streamIdCbs.splice(i, 1);\n }\n };\n }\n\n function setStreamId(streamId: string) {\n streamId_ = streamId;\n for (const cb of streamIdCbs) {\n cb(streamId_);\n }\n }\n\n function onDisconnect() {\n disconnected = true;\n }\n\n // Clears data from our buffer after it has been flushed to a file\n function discardFlushed(offset: number) {\n let chunkOffset = bufferOffset;\n let segmentsToDrop = 0;\n let droppedSegmentsByteLen = 0;\n\n for (const { byteLen } of buffer) {\n const nextChunkOffset = chunkOffset + byteLen;\n if (nextChunkOffset > offset) {\n break;\n }\n chunkOffset = nextChunkOffset;\n segmentsToDrop++;\n droppedSegmentsByteLen += byteLen;\n }\n\n if (segmentsToDrop > 0) {\n bufferOffset += droppedSegmentsByteLen;\n bufferByteSize -= droppedSegmentsByteLen;\n buffer.splice(0, segmentsToDrop);\n }\n }\n\n function error(controller: WritableStreamDefaultController, e: InstantError) {\n markClosed();\n controller.error(e);\n runCompleteCbs();\n }\n\n async function onConnectionReconnect() {\n const result = await startStream({\n clientId,\n reconnectToken,\n ruleParams: opts.ruleParams,\n });\n switch (result.type) {\n case 'ok': {\n const { streamId, offset } = result;\n streamId_ = streamId;\n discardFlushed(offset);\n if (buffer.length) {\n appendStream({\n streamId: streamId,\n chunks: buffer.map((b) => b.chunk),\n offset: bufferOffset,\n });\n }\n disconnected = false;\n break;\n }\n case 'disconnect': {\n onDisconnect();\n break;\n }\n case 'error': {\n if (controller_) {\n error(controller_, result.error);\n }\n break;\n }\n }\n }\n\n // When the append fails, we'll just try to reconnect and start again\n function onAppendFailed() {\n onDisconnect();\n onConnectionReconnect();\n }\n\n function onFlush({ offset, done }: { offset: number; done: boolean }) {\n discardFlushed(offset);\n if (done) {\n isDone = true;\n runCompleteCbs();\n }\n }\n\n function ensureSetup(\n controller: WritableStreamDefaultController,\n ): string | null {\n if (isDone) {\n error(controller, new InstantError('Stream has been closed.'));\n return null;\n }\n if (!streamId_) {\n error(controller, new InstantError('Stream has not been initialized.'));\n return null;\n }\n return streamId_;\n }\n\n async function start(controller: WritableStreamDefaultController) {\n controller_ = controller;\n let tryAgain = true;\n let attempts = 0;\n\n while (tryAgain) {\n // rate-limit after the first few failed connects\n let nextAttempt = Date.now() + Math.min(15000, 500 * (attempts - 1));\n tryAgain = false;\n const result = await startStream({\n clientId: opts.clientId,\n reconnectToken,\n ruleParams: opts.ruleParams,\n });\n\n switch (result.type) {\n case 'ok': {\n const { streamId, offset } = result;\n if (offset !== 0) {\n const e = new InstantError('Write stream is corrupted');\n error(controller, e);\n return;\n }\n setStreamId(streamId);\n registerStream(streamId, {\n onDisconnect,\n onFlush,\n onConnectionReconnect,\n onAppendFailed,\n });\n disconnected = false;\n return;\n }\n case 'disconnect': {\n tryAgain = true;\n onDisconnect();\n attempts++;\n await new Promise((resolve) => {\n // Try again immediately for the first two attempts, then back off\n setTimeout(resolve, nextAttempt - Date.now());\n });\n break;\n }\n case 'error': {\n error(controller, result.error);\n return;\n }\n }\n }\n }\n\n class WStreamEnhanced\n extends WStream<string>\n implements InstantWritableStream<string>\n {\n constructor(\n sink?: UnderlyingSink<string>,\n strategy?: QueuingStrategy<string>,\n ) {\n super(sink, strategy);\n }\n\n public async streamId(): Promise<string> {\n if (streamId_) {\n return streamId_;\n }\n return new Promise((resolve, reject) => {\n const cleanupFns: (() => void)[] = [];\n const cleanup = () => {\n for (const f of cleanupFns) {\n f();\n }\n };\n const resolveCb = (streamId: string) => {\n resolve(streamId);\n cleanup();\n };\n const rejectCb = () => {\n reject(new InstantError('Stream is closed.'));\n cleanup();\n };\n\n cleanupFns.push(addStreamIdCb(resolveCb));\n cleanupFns.push(addCloseCb(rejectCb));\n });\n }\n }\n\n const stream = new WStreamEnhanced({\n // TODO(dww): accept a storage so that write streams can survive across\n // browser restarts\n async start(controller) {\n try {\n await start(controller);\n } catch (e) {\n error(controller, e);\n }\n },\n write(chunk, controller) {\n const streamId = ensureSetup(controller);\n if (streamId) {\n const byteLen = encoder.encode(chunk).length;\n buffer.push({ chunk, byteLen });\n const offset = bufferOffset + bufferByteSize;\n bufferByteSize += byteLen;\n if (!disconnected) {\n appendStream({ streamId, chunks: [chunk], offset });\n }\n }\n },\n close() {\n if (streamId_) {\n appendStream({\n streamId: streamId_,\n chunks: [],\n offset: bufferOffset + bufferByteSize,\n isDone: true,\n });\n } else {\n runCompleteCbs();\n }\n markClosed();\n },\n abort(reason) {\n if (streamId_) {\n appendStream({\n streamId: streamId_,\n chunks: [],\n offset: bufferOffset + bufferByteSize,\n isDone: true,\n abortReason: reason,\n });\n } else {\n runCompleteCbs();\n }\n markClosed();\n },\n });\n return {\n stream,\n addCompleteCb,\n closed() {\n return closed;\n },\n };\n}\n\ntype ReadStreamUpdate =\n | {\n type: 'append';\n offset: number;\n files?: { url: string; size: number }[];\n content?: string;\n }\n | { type: 'error'; error: InstantError }\n | { type: 'reconnect' };\n\nclass StreamIterator<T> {\n private items: T[] = [];\n private resolvers: ((next: {\n value: T | undefined;\n done: boolean;\n }) => void)[] = [];\n private isClosed = false;\n\n constructor() {}\n\n push(item: T) {\n if (this.isClosed) return;\n\n const resolve = this.resolvers.shift();\n if (resolve) {\n resolve({ value: item, done: false });\n } else {\n this.items.push(item);\n }\n }\n\n close() {\n this.isClosed = true;\n while (this.resolvers.length > 0) {\n const resolve = this.resolvers.shift();\n resolve!({ value: undefined, done: true });\n }\n }\n\n async *[Symbol.asyncIterator]() {\n while (true) {\n if (this.items.length > 0) {\n yield this.items.shift()!;\n } else if (this.isClosed) {\n return;\n } else {\n const { value, done } = await new Promise<{\n value: T | undefined;\n done: boolean;\n }>((resolve) => {\n this.resolvers.push(resolve);\n });\n if (done || !value) {\n return;\n }\n yield value;\n }\n }\n }\n}\n\nfunction createReadStream({\n RStream,\n opts,\n startStream,\n cancelStream,\n}: {\n RStream: ReadableStreamCtor;\n opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n byteOffset?: number | null | undefined;\n ruleParams?: RuleParams | null | undefined;\n };\n startStream: (opts: {\n eventId: string;\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n offset?: number;\n ruleParams?: RuleParams | null | undefined;\n }) => StreamIterator<ReadStreamUpdate>;\n cancelStream: (opts: { eventId: string }) => void;\n}): {\n stream: ReadableStream<string>;\n closed: () => boolean;\n addCloseCb: (cb: () => void) => void;\n} {\n let seenOffset = opts.byteOffset || 0;\n let canceled = false;\n const decoder = new TextDecoder('utf-8');\n const encoder = new TextEncoder();\n let eventId: string | null;\n let closed = false;\n const closeCbs: (() => void)[] = [];\n\n function markClosed() {\n closed = true;\n for (const cb of closeCbs) {\n cb();\n }\n }\n\n function addCloseCb(cb: () => void) {\n closeCbs.push(cb);\n return () => {\n const i = closeCbs.indexOf(cb);\n if (i !== -1) {\n closeCbs.splice(i, 1);\n }\n };\n }\n\n function error(\n controller: ReadableStreamDefaultController<string>,\n e: InstantError,\n ) {\n controller.error(e);\n markClosed();\n }\n\n let fetchFailures = 0;\n async function runStartStream(\n opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n offset?: number;\n ruleParams?: RuleParams | null | undefined;\n },\n controller: ReadableStreamDefaultController<string>,\n ): Promise<{ retry: boolean } | undefined> {\n eventId = uuid();\n const streamOpts = { ...(opts || {}), eventId };\n for await (const item of startStream(streamOpts)) {\n if (canceled) {\n return;\n }\n\n if (item.type === 'reconnect') {\n return { retry: true };\n }\n\n if (item.type === 'error') {\n error(controller, item.error);\n return;\n }\n\n if (item.offset > seenOffset) {\n error(controller, new InstantError('Stream is corrupted.'));\n canceled = true;\n return;\n }\n\n let discardLen = seenOffset - item.offset;\n\n if (item.files && item.files.length) {\n const fetchAbort = new AbortController();\n let nextFetch = fetch(item.files[0].url, {\n signal: fetchAbort.signal,\n });\n for (let i = 0; i < item.files.length; i++) {\n const nextFile = item.files[i + 1];\n const thisFetch = nextFetch;\n const res = await thisFetch;\n if (nextFile) {\n nextFetch = fetch(nextFile.url, { signal: fetchAbort.signal });\n }\n\n if (!res.ok) {\n fetchFailures++;\n if (fetchFailures > 10) {\n error(controller, new InstantError('Unable to process stream.'));\n return;\n }\n return { retry: true };\n }\n\n if (res.body) {\n for await (const bodyChunk of res.body) {\n if (canceled) {\n fetchAbort.abort();\n return;\n }\n let chunk = bodyChunk;\n if (discardLen > 0) {\n chunk = bodyChunk.subarray(discardLen);\n discardLen -= bodyChunk.length - chunk.length;\n }\n if (!chunk.length) {\n continue;\n }\n seenOffset += chunk.length;\n const s = decoder.decode(chunk);\n\n controller.enqueue(s);\n }\n } else {\n // RN doesn't support request.body\n const bodyChunk = await res.arrayBuffer();\n let chunk: ArrayBuffer | Uint8Array<ArrayBuffer> = bodyChunk;\n if (canceled) {\n fetchAbort.abort();\n return;\n }\n if (discardLen > 0) {\n chunk = new Uint8Array(bodyChunk).subarray(discardLen);\n discardLen -= bodyChunk.byteLength - chunk.length;\n }\n if (!chunk.byteLength) {\n continue;\n }\n seenOffset += chunk.byteLength;\n const s = decoder.decode(chunk);\n controller.enqueue(s);\n }\n }\n }\n fetchFailures = 0;\n if (item.content) {\n let content = item.content;\n let encoded = encoder.encode(item.content);\n if (discardLen > 0) {\n const remaining = encoded.subarray(discardLen);\n discardLen -= encoded.length - remaining.length;\n if (!remaining.length) {\n continue;\n }\n encoded = remaining;\n content = decoder.decode(remaining);\n }\n seenOffset += encoded.length;\n controller.enqueue(content);\n }\n }\n }\n\n async function start(controller: ReadableStreamDefaultController<string>) {\n let retry = true;\n let attempts = 0;\n while (retry) {\n retry = false;\n let nextAttempt = Date.now() + Math.min(15000, 500 * (attempts - 1));\n const res = await runStartStream(\n { ...opts, offset: seenOffset },\n controller,\n );\n\n if (res?.retry) {\n retry = true;\n attempts++;\n if (nextAttempt < Date.now() - 300000) {\n // reset attempts if we last tried 5 minutes ago\n attempts = 0;\n }\n await new Promise((resolve) => {\n setTimeout(resolve, nextAttempt - Date.now());\n });\n }\n }\n if (!canceled && !closed) {\n controller.close();\n markClosed();\n }\n }\n const stream = new RStream<string>({\n start(controller) {\n start(controller);\n },\n cancel(_reason) {\n canceled = true;\n if (eventId) {\n cancelStream({ eventId });\n }\n markClosed();\n },\n });\n\n return {\n stream,\n addCloseCb,\n closed() {\n return closed;\n },\n };\n}\n\ntype StartStreamMsg = {\n op: 'start-stream';\n 'client-id': string;\n 'reconnect-token': string;\n 'rule-params'?: RuleParams;\n};\n\ntype AppendStreamMsg = {\n op: 'append-stream';\n 'stream-id': string;\n chunks: string[];\n offset: number;\n done: boolean;\n 'abort-reason'?: string;\n};\n\ntype SubscribeStreamMsg = {\n op: 'subscribe-stream';\n 'stream-id'?: string;\n 'client-id'?: string;\n offset?: number;\n 'rule-params'?: RuleParams;\n};\n\ntype UnsubscribeStreamMsg = {\n op: 'unsubscribe-stream';\n 'subscribe-event-id': string;\n};\n\ntype SendMsg =\n | StartStreamMsg\n | AppendStreamMsg\n | SubscribeStreamMsg\n | UnsubscribeStreamMsg;\n\ntype TrySend = (eventId: string, msg: SendMsg) => void;\n\ntype StartStreamOkMsg = {\n op: 'start-stream-ok';\n 'client-event-id': string;\n 'stream-id': string;\n offset: number;\n};\n\ntype AppendStreamFailedMsg = {\n op: 'append-failed';\n 'stream-id': string;\n};\n\ntype StreamFlushedMsg = {\n op: 'stream-flushed';\n 'stream-id': string;\n offset: number;\n done: boolean;\n};\n\n// Msg sent to reader when we receive new data\ntype StreamAppendMsg = {\n op: 'stream-append';\n 'stream-id': string;\n 'client-id': string | null;\n 'client-event-id': string;\n files?: { url: string; size: number }[];\n done?: boolean;\n 'abort-reason'?: string;\n offset: number;\n error?: string;\n retry: boolean;\n content?: string;\n};\n\ntype HandleRecieveErrorMsg = {\n 'client-event-id': string;\n 'original-event': SendMsg;\n message?: string;\n hint?: Record<string, any>;\n type?: string;\n};\n\nexport class InstantStream {\n private trySend: TrySend;\n private WStream: WritableStreamCtor;\n private RStream: ReadableStreamCtor;\n private writeStreams: Record<string, WriteStreamCbs> = {};\n private startWriteStreamCbs: Record<\n string,\n (data: WriteStreamStartResult) => void\n > = {};\n\n private readStreamIterators: Record<\n string,\n StreamIterator<ReadStreamUpdate>\n > = {};\n private log: Logger;\n private activeStreams: Set<ReadableStream | WritableStream> = new Set();\n\n constructor({\n WStream,\n RStream,\n trySend,\n log,\n }: {\n WStream: WritableStreamCtor;\n RStream: ReadableStreamCtor;\n trySend: TrySend;\n log: Logger;\n }) {\n this.WStream = WStream;\n this.RStream = RStream;\n this.trySend = trySend;\n this.log = log;\n }\n\n public createWriteStream(opts: {\n clientId: string;\n waitUntil?: (promise: Promise<any>) => void | null | undefined;\n ruleParams?: RuleParams | null | undefined;\n }): InstantWritableStream<string> {\n const { stream, addCompleteCb } = createWriteStream({\n WStream: this.WStream,\n startStream: this.startWriteStream.bind(this),\n appendStream: this.appendStream.bind(this),\n registerStream: this.registerWriteStream.bind(this),\n opts,\n });\n this.activeStreams.add(stream);\n addCompleteCb(() => {\n this.activeStreams.delete(stream);\n });\n return stream;\n }\n\n public createReadStream(opts: {\n clientId?: string | null | undefined;\n streamId?: string | null | undefined;\n byteOffset?: number | null | undefined;\n ruleParams?: RuleParams | null | undefined;\n }) {\n const { stream, addCloseCb } = createReadStream({\n RStream: this.RStream,\n opts,\n startStream: this.startReadStream.bind(this),\n cancelStream: this.cancelReadStream.bind(this),\n });\n this.activeStreams.add(stream);\n addCloseCb(() => {\n this.activeStreams.delete(stream);\n });\n return stream;\n }\n\n private startWriteStream(opts: {\n clientId: string;\n reconnectToken: string;\n ruleParams?: RuleParams | null | undefined;\n }): Promise<WriteStreamStartResult> {\n const eventId = uuid();\n let resolve: ((data: WriteStreamStartResult) => void) | null = null;\n const promise: Promise<WriteStreamStartResult> = new Promise((r) => {\n resolve = r;\n });\n this.startWriteStreamCbs[eventId] = resolve!;\n const msg: StartStreamMsg = {\n op: 'start-stream',\n 'client-id': opts.clientId,\n 'reconnect-token': opts.reconnectToken,\n };\n\n if (opts.ruleParams) {\n msg['rule-params'] = opts.ruleParams;\n }\n\n this.trySend(eventId, msg);\n\n return promise;\n }\n\n private registerWriteStream(streamId: string, cbs: WriteStreamCbs) {\n this.writeStreams[streamId] = cbs;\n }\n\n private appendStream({\n streamId,\n chunks,\n isDone,\n offset,\n abortReason,\n }: {\n streamId: string;\n chunks: string[];\n isDone?: boolean;\n // XXX: Handle offset on the server\n offset: number;\n abortReason?: string;\n }) {\n const msg: AppendStreamMsg = {\n op: 'append-stream',\n 'stream-id': streamId,\n chunks,\n offset,\n done: !!isDone,\n };\n\n if (abortReason) {\n msg['abort-reason'] = abortReason;\n }\n\n this.trySend(uuid(), msg);\n }\n\n onAppendFailed(msg: AppendStreamFailedMsg) {\n const cbs = this.writeStreams[msg['stream-id']];\n if (cbs) {\n cbs.onAppendFailed();\n }\n }\n\n onStartStreamOk(msg: StartStreamOkMsg) {\n const cb = this.startWriteStreamCbs[msg['client-event-id']];\n if (!cb) {\n this.log.info('No stream for start-stream-ok', msg);\n return;\n }\n cb({ type: 'ok', streamId: msg['stream-id'], offset: msg.offset });\n delete this.startWriteStreamCbs[msg['client-event-id']];\n }\n\n onStreamFlushed(msg: StreamFlushedMsg) {\n const streamId = msg['stream-id'];\n const cbs = this.writeStreams[streamId];\n if (!cbs) {\n this.log.info('No stream cbs for stream-flushed', msg);\n return;\n }\n cbs.onFlush({ offset: msg.offset, done: msg.done });\n if (msg.done) {\n delete this.writeStreams[streamId];\n }\n }\n\n private startReadStream({\n eventId,\n clientId,\n streamId,\n offset,\n ruleParams,\n }: {\n eventId: string;\n clientId?: string;\n streamId?: string;\n offset?: number;\n ruleParams?: RuleParams | null | undefined;\n }): StreamIterator<ReadStreamUpdate> {\n const msg: SubscribeStreamMsg = { op: 'subscribe-stream' };\n\n if (!streamId && !clientId) {\n throw new Error(\n 'Must provide one of streamId or clientId to subscribe to the stream.',\n );\n }\n\n if (streamId) {\n msg['stream-id'] = streamId;\n }\n\n if (clientId) {\n msg['client-id'] = clientId;\n }\n\n if (offset) {\n msg['offset'] = offset;\n }\n\n if (ruleParams) {\n msg['rule-params'] = ruleParams;\n }\n\n const iterator = new StreamIterator<ReadStreamUpdate>();\n\n this.readStreamIterators[eventId] = iterator;\n\n this.trySend(eventId, msg);\n\n return iterator;\n }\n\n private cancelReadStream({ eventId }: { eventId: string }) {\n const msg: UnsubscribeStreamMsg = {\n op: 'unsubscribe-stream',\n 'subscribe-event-id': eventId,\n };\n this.trySend(uuid(), msg);\n delete this.readStreamIterators[eventId];\n }\n\n onStreamAppend(msg: StreamAppendMsg) {\n const eventId = msg['client-event-id'];\n const iterator = this.readStreamIterators[eventId];\n\n if (!iterator) {\n this.log.info('No iterator for read stream', msg);\n return;\n }\n\n if (msg.error) {\n if (msg.retry) {\n iterator.push({ type: 'reconnect' });\n } else {\n iterator.push({\n type: 'error',\n error: new InstantError(msg.error),\n });\n }\n iterator.close();\n delete this.readStreamIterators[eventId];\n return;\n }\n\n if (msg.files?.length || msg.content) {\n iterator.push({\n type: 'append',\n offset: msg.offset,\n files: msg.files,\n content: msg.content,\n });\n }\n\n if (msg.done) {\n iterator.close();\n delete this.readStreamIterators[eventId];\n }\n }\n\n onConnectionStatusChange(status) {\n // Tell the writers to retry:\n for (const cb of Object.values(this.startWriteStreamCbs)) {\n cb({ type: 'disconnect' });\n }\n this.startWriteStreamCbs = {};\n\n if (status !== STATUS.AUTHENTICATED) {\n // Notify the writers that they've been disconnected\n for (const { onDisconnect } of Object.values(this.writeStreams)) {\n onDisconnect();\n }\n } else {\n // Notify the writers that they need to reconnect\n for (const { onConnectionReconnect } of Object.values(\n this.writeStreams,\n )) {\n onConnectionReconnect();\n }\n\n // Notify the readers that they need to reconnect\n for (const iterator of Object.values(this.readStreamIterators)) {\n iterator.push({ type: 'reconnect' });\n iterator.close();\n }\n this.readStreamIterators = {};\n }\n }\n\n onRecieveError(msg: HandleRecieveErrorMsg) {\n const ev = msg['original-event'];\n switch (ev.op) {\n case 'append-stream': {\n const streamId = ev['stream-id'];\n const cbs = this.writeStreams[streamId];\n cbs?.onAppendFailed();\n break;\n }\n case 'start-stream': {\n const eventId = msg['client-event-id'];\n const cb = this.startWriteStreamCbs[eventId];\n if (cb) {\n cb({\n type: 'error',\n error: new InstantError(msg.message || 'Unknown error', msg.hint),\n });\n delete this.startWriteStreamCbs[eventId];\n }\n break;\n }\n case 'subscribe-stream': {\n const eventId = msg['client-event-id'];\n const iterator = this.readStreamIterators[eventId];\n if (iterator) {\n iterator.push({\n type: 'error',\n error: new InstantError(msg.message || 'Unknown error', msg.hint),\n });\n iterator.close();\n delete this.readStreamIterators[eventId];\n }\n break;\n }\n case 'unsubscribe-stream': {\n break;\n }\n }\n }\n\n hasActiveStreams() {\n return this.activeStreams.size > 0;\n }\n}\n"]}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -296,9 +296,23 @@ type CreateReadStreamOpts = {
|
|
|
296
296
|
clientId?: string | null | undefined;
|
|
297
297
|
streamId?: string | null | undefined;
|
|
298
298
|
byteOffset?: number | null | undefined;
|
|
299
|
+
ruleParams?: RuleParams | null | undefined;
|
|
299
300
|
};
|
|
300
301
|
type CreateWriteStreamOpts = {
|
|
301
302
|
clientId: string;
|
|
303
|
+
/**
|
|
304
|
+
* A function that takes a promise and ensures that the current program stays alive
|
|
305
|
+
* until the promise is resolved.
|
|
306
|
+
*
|
|
307
|
+
* Useful in serverless environments to ensure the writer fully flushes before the
|
|
308
|
+
* environment is shut down.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* import { after } from 'next/server'
|
|
312
|
+
* db.streams.createWriteStream({clientId, waitUntil: after})
|
|
313
|
+
*/
|
|
314
|
+
waitUntil?: (promise: Promise<any>) => void | null | undefined;
|
|
315
|
+
ruleParams?: RuleParams | null | undefined;
|
|
302
316
|
};
|
|
303
317
|
/**
|
|
304
318
|
* Functions to manage streams.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|