@syncular/testkit 0.0.2-136 → 0.0.2-137

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.
@@ -0,0 +1,31 @@
1
+ export interface CreateIdFactoryOptions {
2
+ prefix?: string;
3
+ separator?: string;
4
+ startAt?: number;
5
+ step?: number;
6
+ padLength?: number;
7
+ }
8
+ export interface IdFactory {
9
+ next: () => string;
10
+ peek: () => string;
11
+ current: () => number;
12
+ reset: (startAt?: number) => void;
13
+ }
14
+ export declare function createIdFactory(options?: CreateIdFactoryOptions): IdFactory;
15
+ export interface CreateCommitIdFactoryOptions extends Omit<CreateIdFactoryOptions, 'prefix'> {
16
+ prefix?: string;
17
+ }
18
+ export declare function createCommitIdFactory(options?: CreateCommitIdFactoryOptions): IdFactory;
19
+ export interface CreateFakeClockOptions {
20
+ startMs?: number;
21
+ tickMs?: number;
22
+ }
23
+ export interface FakeClock {
24
+ now: () => number;
25
+ iso: () => string;
26
+ set: (nextMs: number) => number;
27
+ advance: (deltaMs: number) => number;
28
+ tick: (stepMs?: number) => number;
29
+ }
30
+ export declare function createFakeClock(options?: CreateFakeClockOptions): FakeClock;
31
+ //# sourceMappingURL=deterministic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic.d.ts","sourceRoot":"","sources":["../src/deterministic.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAeD,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,SAAS,CAoCX;AAED,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,4BAAiC,GACzC,SAAS,CAQX;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAED,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,SAAS,CAoBX"}
@@ -0,0 +1,69 @@
1
+ function normalizeCounter(value, label) {
2
+ if (!Number.isFinite(value)) {
3
+ throw new Error(`${label} must be a finite number`);
4
+ }
5
+ return Math.trunc(value);
6
+ }
7
+ function formatCounter(value, padLength) {
8
+ const text = String(value);
9
+ return padLength > text.length ? text.padStart(padLength, '0') : text;
10
+ }
11
+ export function createIdFactory(options = {}) {
12
+ const prefix = options.prefix ?? '';
13
+ const separator = options.separator ?? '-';
14
+ const step = normalizeCounter(options.step ?? 1, 'step');
15
+ const padLength = Math.max(0, normalizeCounter(options.padLength ?? 0, 'padLength'));
16
+ if (step === 0) {
17
+ throw new Error('step must not be 0');
18
+ }
19
+ let counter = normalizeCounter(options.startAt ?? 1, 'startAt');
20
+ const format = (value) => {
21
+ const token = formatCounter(value, padLength);
22
+ if (prefix.length === 0) {
23
+ return token;
24
+ }
25
+ return `${prefix}${separator}${token}`;
26
+ };
27
+ return {
28
+ next: () => {
29
+ const value = format(counter);
30
+ counter += step;
31
+ return value;
32
+ },
33
+ peek: () => format(counter),
34
+ current: () => counter,
35
+ reset: (nextStartAt = options.startAt ?? 1) => {
36
+ counter = normalizeCounter(nextStartAt, 'startAt');
37
+ },
38
+ };
39
+ }
40
+ export function createCommitIdFactory(options = {}) {
41
+ return createIdFactory({
42
+ prefix: options.prefix ?? 'commit',
43
+ separator: options.separator,
44
+ startAt: options.startAt,
45
+ step: options.step,
46
+ padLength: options.padLength,
47
+ });
48
+ }
49
+ export function createFakeClock(options = {}) {
50
+ const defaultTickMs = normalizeCounter(options.tickMs ?? 1, 'tickMs');
51
+ let nowMs = normalizeCounter(options.startMs ?? Date.now(), 'startMs');
52
+ return {
53
+ now: () => nowMs,
54
+ iso: () => new Date(nowMs).toISOString(),
55
+ set: (nextMs) => {
56
+ nowMs = normalizeCounter(nextMs, 'nextMs');
57
+ return nowMs;
58
+ },
59
+ advance: (deltaMs) => {
60
+ nowMs += normalizeCounter(deltaMs, 'deltaMs');
61
+ return nowMs;
62
+ },
63
+ tick: (stepMs = defaultTickMs) => {
64
+ nowMs += normalizeCounter(stepMs, 'stepMs');
65
+ return nowMs;
66
+ },
67
+ };
68
+ }
69
+ //# sourceMappingURL=deterministic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic.js","sourceRoot":"","sources":["../src/deterministic.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  export * from './assertions';
2
+ export * from './deterministic';
2
3
  export * from './faults';
3
4
  export * from './fixtures';
4
5
  export * from './hono-node-server';
5
6
  export * from './http-fixtures';
6
7
  export * from './project-scoped-tasks';
8
+ export * from './realtime-ws';
7
9
  export * from './runtime-process';
10
+ export * from './scenario-flow';
11
+ export * from './sync-builders';
8
12
  export * from './sync-http';
13
+ export * from './sync-parse';
9
14
  export * from './sync-response';
10
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,15 @@
1
1
  export * from './assertions.js';
2
+ export * from './deterministic.js';
2
3
  export * from './faults.js';
3
4
  export * from './fixtures.js';
4
5
  export * from './hono-node-server.js';
5
6
  export * from './http-fixtures.js';
6
7
  export * from './project-scoped-tasks.js';
8
+ export * from './realtime-ws.js';
7
9
  export * from './runtime-process.js';
10
+ export * from './scenario-flow.js';
11
+ export * from './sync-builders.js';
8
12
  export * from './sync-http.js';
13
+ export * from './sync-parse.js';
9
14
  export * from './sync-response.js';
10
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,40 @@
1
+ export type RealtimeWsQueryValue = string | number | boolean | null | undefined;
2
+ export interface CreateRealtimeWsUrlOptions {
3
+ baseUrl: string;
4
+ clientId: string;
5
+ actorId: string;
6
+ actorQueryParam?: string;
7
+ path?: string;
8
+ query?: Record<string, RealtimeWsQueryValue>;
9
+ }
10
+ export interface WebSocketConstructor {
11
+ new (url: string, protocols?: string | string[]): WebSocket;
12
+ }
13
+ export interface OpenRealtimeWsOptions extends CreateRealtimeWsUrlOptions {
14
+ WebSocketCtor?: WebSocketConstructor;
15
+ protocols?: string | string[];
16
+ }
17
+ export declare function createRealtimeWsUrl(options: CreateRealtimeWsUrlOptions): string;
18
+ export declare function openRealtimeWs(options: OpenRealtimeWsOptions): WebSocket;
19
+ export interface WaitForWsOpenOptions {
20
+ timeoutMs?: number;
21
+ }
22
+ export declare function waitForWsOpen(ws: WebSocket, options?: WaitForWsOpenOptions): Promise<void>;
23
+ export interface WaitForWsMessageOptions {
24
+ timeoutMs?: number;
25
+ predicate?: (event: MessageEvent) => boolean;
26
+ }
27
+ export declare function waitForWsMessage(ws: WebSocket, options?: WaitForWsMessageOptions): Promise<MessageEvent>;
28
+ export declare function parseWsJsonMessage(event: MessageEvent): Record<string, unknown> | null;
29
+ export interface WaitForWsJsonMessageOptions {
30
+ timeoutMs?: number;
31
+ predicate?: (message: Record<string, unknown>) => boolean;
32
+ }
33
+ export declare function waitForWsJsonMessage(ws: WebSocket, options?: WaitForWsJsonMessageOptions): Promise<Record<string, unknown>>;
34
+ export interface CloseWsSafeOptions {
35
+ code?: number;
36
+ reason?: string;
37
+ timeoutMs?: number;
38
+ }
39
+ export declare function closeWsSafe(ws: WebSocket, options?: CloseWsSafeOptions): Promise<void>;
40
+ //# sourceMappingURL=realtime-ws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-ws.d.ts","sourceRoot":"","sources":["../src/realtime-ws.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAsB,SAAQ,0BAA0B;IACvE,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B;AA0BD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAgBR;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAOxE;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,SAAS,EACb,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAC9C;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,SAAS,EACb,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CA6CvB;AAoBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAYhC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,SAAS,EACb,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoDlC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAsB,WAAW,CAC/B,EAAE,EAAE,SAAS,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,192 @@
1
+ import { isRecord } from '@syncular/core';
2
+ function appendQueryParam(url, key, value) {
3
+ if (value === null || value === undefined) {
4
+ return;
5
+ }
6
+ url.searchParams.set(key, String(value));
7
+ }
8
+ function toWsProtocol(protocol) {
9
+ if (protocol === 'http:') {
10
+ return 'ws:';
11
+ }
12
+ if (protocol === 'https:') {
13
+ return 'wss:';
14
+ }
15
+ return protocol;
16
+ }
17
+ export function createRealtimeWsUrl(options) {
18
+ const url = new URL(options.baseUrl);
19
+ url.protocol = toWsProtocol(url.protocol);
20
+ const path = options.path ?? '/sync/realtime';
21
+ url.pathname = path.startsWith('/') ? path : `/${path}`;
22
+ url.search = '';
23
+ appendQueryParam(url, 'clientId', options.clientId);
24
+ appendQueryParam(url, options.actorQueryParam ?? 'userId', options.actorId);
25
+ for (const [key, value] of Object.entries(options.query ?? {})) {
26
+ appendQueryParam(url, key, value);
27
+ }
28
+ return url.toString();
29
+ }
30
+ export function openRealtimeWs(options) {
31
+ const WebSocketCtor = options.WebSocketCtor ?? globalThis.WebSocket;
32
+ if (!WebSocketCtor) {
33
+ throw new Error('WebSocket constructor is unavailable in this runtime');
34
+ }
35
+ return new WebSocketCtor(createRealtimeWsUrl(options), options.protocols);
36
+ }
37
+ export function waitForWsOpen(ws, options = {}) {
38
+ const timeoutMs = options.timeoutMs ?? 10_000;
39
+ return new Promise((resolve, reject) => {
40
+ const cleanup = () => {
41
+ clearTimeout(timeout);
42
+ ws.removeEventListener('open', onOpen);
43
+ ws.removeEventListener('error', onError);
44
+ ws.removeEventListener('close', onClose);
45
+ };
46
+ const onOpen = () => {
47
+ cleanup();
48
+ resolve();
49
+ };
50
+ const onError = () => {
51
+ cleanup();
52
+ reject(new Error('WebSocket emitted an error before opening'));
53
+ };
54
+ const onClose = (event) => {
55
+ cleanup();
56
+ reject(new Error(`WebSocket closed before opening (code=${event.code} reason=${event.reason || 'none'})`));
57
+ };
58
+ const timeout = setTimeout(() => {
59
+ cleanup();
60
+ reject(new Error(`Timed out waiting for WebSocket open (${timeoutMs}ms)`));
61
+ }, timeoutMs);
62
+ ws.addEventListener('open', onOpen);
63
+ ws.addEventListener('error', onError);
64
+ ws.addEventListener('close', onClose);
65
+ });
66
+ }
67
+ export function waitForWsMessage(ws, options = {}) {
68
+ const timeoutMs = options.timeoutMs ?? 10_000;
69
+ return new Promise((resolve, reject) => {
70
+ const cleanup = () => {
71
+ clearTimeout(timeout);
72
+ ws.removeEventListener('message', onMessage);
73
+ ws.removeEventListener('error', onError);
74
+ ws.removeEventListener('close', onClose);
75
+ };
76
+ const onMessage = (event) => {
77
+ if (options.predicate && !options.predicate(event)) {
78
+ return;
79
+ }
80
+ cleanup();
81
+ resolve(event);
82
+ };
83
+ const onError = () => {
84
+ cleanup();
85
+ reject(new Error('WebSocket emitted an error before a message arrived'));
86
+ };
87
+ const onClose = (event) => {
88
+ cleanup();
89
+ reject(new Error(`WebSocket closed before receiving a matching message (code=${event.code} reason=${event.reason || 'none'})`));
90
+ };
91
+ const timeout = setTimeout(() => {
92
+ cleanup();
93
+ reject(new Error(`Timed out waiting for WebSocket message (${timeoutMs}ms)`));
94
+ }, timeoutMs);
95
+ ws.addEventListener('message', onMessage);
96
+ ws.addEventListener('error', onError);
97
+ ws.addEventListener('close', onClose);
98
+ });
99
+ }
100
+ function readTextPayload(data) {
101
+ if (typeof data === 'string') {
102
+ return data;
103
+ }
104
+ if (data instanceof ArrayBuffer) {
105
+ return new TextDecoder().decode(new Uint8Array(data));
106
+ }
107
+ if (ArrayBuffer.isView(data)) {
108
+ return new TextDecoder().decode(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
109
+ }
110
+ return null;
111
+ }
112
+ export function parseWsJsonMessage(event) {
113
+ const payload = readTextPayload(event.data);
114
+ if (!payload) {
115
+ return null;
116
+ }
117
+ try {
118
+ const parsed = JSON.parse(payload);
119
+ return isRecord(parsed) ? parsed : null;
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ }
125
+ export function waitForWsJsonMessage(ws, options = {}) {
126
+ const timeoutMs = options.timeoutMs ?? 10_000;
127
+ return new Promise((resolve, reject) => {
128
+ const cleanup = () => {
129
+ clearTimeout(timeout);
130
+ ws.removeEventListener('message', onMessage);
131
+ ws.removeEventListener('error', onError);
132
+ ws.removeEventListener('close', onClose);
133
+ };
134
+ const onMessage = (event) => {
135
+ const parsed = parseWsJsonMessage(event);
136
+ if (!parsed) {
137
+ return;
138
+ }
139
+ if (options.predicate && !options.predicate(parsed)) {
140
+ return;
141
+ }
142
+ cleanup();
143
+ resolve(parsed);
144
+ };
145
+ const onError = () => {
146
+ cleanup();
147
+ reject(new Error('WebSocket emitted an error before JSON message'));
148
+ };
149
+ const onClose = (event) => {
150
+ cleanup();
151
+ reject(new Error(`WebSocket closed before receiving JSON message (code=${event.code} reason=${event.reason || 'none'})`));
152
+ };
153
+ const timeout = setTimeout(() => {
154
+ cleanup();
155
+ reject(new Error(`Timed out waiting for WebSocket JSON message (${timeoutMs}ms)`));
156
+ }, timeoutMs);
157
+ ws.addEventListener('message', onMessage);
158
+ ws.addEventListener('error', onError);
159
+ ws.addEventListener('close', onClose);
160
+ });
161
+ }
162
+ const WS_CLOSING = 2;
163
+ const WS_CLOSED = 3;
164
+ export async function closeWsSafe(ws, options = {}) {
165
+ if (ws.readyState === WS_CLOSED) {
166
+ return;
167
+ }
168
+ const timeoutMs = options.timeoutMs ?? 2_000;
169
+ await new Promise((resolve) => {
170
+ const cleanup = () => {
171
+ clearTimeout(timeout);
172
+ ws.removeEventListener('close', onClose);
173
+ resolve();
174
+ };
175
+ const onClose = () => {
176
+ cleanup();
177
+ };
178
+ const timeout = setTimeout(() => {
179
+ cleanup();
180
+ }, timeoutMs);
181
+ ws.addEventListener('close', onClose);
182
+ if (ws.readyState !== WS_CLOSING) {
183
+ try {
184
+ ws.close(options.code, options.reason);
185
+ }
186
+ catch {
187
+ cleanup();
188
+ }
189
+ }
190
+ });
191
+ }
192
+ //# sourceMappingURL=realtime-ws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-ws.js","sourceRoot":"","sources":["../src/realtime-ws.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAsB1C,SAAS,gBAAgB,CACvB,GAAQ,EACR,GAAW,EACX,KAA2B,EACrB;IACN,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,CAC1C;AAED,SAAS,YAAY,CAAC,QAAgB,EAAU;IAC9C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC;AAAA,CACjB;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAmC,EAC3B;IACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC;IAC9C,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACxD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAEhB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,IAAI,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AAAA,CACvB;AAED,MAAM,UAAU,cAAc,CAAC,OAA8B,EAAa;IACxE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,SAAS,CAAC;IACpE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AAAA,CAC3E;AAMD,MAAM,UAAU,aAAa,CAC3B,EAAa,EACb,OAAO,GAAyB,EAAE,EACnB;IACf,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAE9C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAAA,CAC1C,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QAAA,CACX,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAAA,CAChE,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CACP,yCAAyC,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,CACxF,CACF,CAAC;QAAA,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CAAC,yCAAyC,SAAS,KAAK,CAAC,CACnE,CAAC;QAAA,CACH,EAAE,SAAS,CAAC,CAAC;QAEd,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAAA,CACvC,CAAC,CAAC;AAAA,CACJ;AAOD,MAAM,UAAU,gBAAgB,CAC9B,EAAa,EACb,OAAO,GAA4B,EAAE,EACd;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAE9C,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC7C,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAAA,CAC1C,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,CAAC;QAAA,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAAA,CAC1E,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CACP,8DAA8D,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,CAC7G,CACF,CAAC;QAAA,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CAAC,4CAA4C,SAAS,KAAK,CAAC,CACtE,CAAC;QAAA,CACH,EAAE,SAAS,CAAC,CAAC;QAEd,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAAA,CACvC,CAAC,CAAC;AAAA,CACJ;AAED,SAAS,eAAe,CAAC,IAA0B,EAAiB;IAClE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACb;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACa;IAChC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AAAA,CACF;AAOD,MAAM,UAAU,oBAAoB,CAClC,EAAa,EACb,OAAO,GAAgC,EAAE,EACP;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAE9C,OAAO,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC7C,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAAA,CAC1C,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,CAAC;QAAA,CACjB,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAAA,CACrE,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CACP,wDAAwD,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,CACvG,CACF,CAAC;QAAA,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,IAAI,KAAK,CACP,iDAAiD,SAAS,KAAK,CAChE,CACF,CAAC;QAAA,CACH,EAAE,SAAS,CAAC,CAAC;QAEd,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAAA,CACvC,CAAC,CAAC;AAAA,CACJ;AAQD,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAa,EACb,OAAO,GAAuB,EAAE,EACjB;IACf,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,CAAC;QAAA,CACX,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QAAA,CACX,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QAAA,CACX,EAAE,SAAS,CAAC,CAAC;QAEd,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACJ"}
@@ -0,0 +1,39 @@
1
+ import { type ClientTableRegistry, enqueueOutboxCommit, type SyncClientDb, type SyncOnceOptions, type SyncOnceResult, type SyncPullOnceOptions, type SyncPullResponse, type SyncPushOnceOptions, type SyncPushOnceResult } from '@syncular/client';
2
+ import type { SyncCombinedRequest, SyncCombinedResponse, SyncTransport } from '@syncular/core';
3
+ import type { Kysely } from 'kysely';
4
+ export interface ScenarioFlowClient<DB extends SyncClientDb> {
5
+ db: Kysely<DB>;
6
+ transport: SyncTransport;
7
+ handlers: ClientTableRegistry<DB>;
8
+ clientId: string;
9
+ actorId?: string;
10
+ }
11
+ export interface PushThenPullOptions<DB extends SyncClientDb> {
12
+ enqueue?: Parameters<typeof enqueueOutboxCommit<DB>>[1];
13
+ push?: Omit<SyncPushOnceOptions, 'clientId' | 'actorId'>;
14
+ pull: Omit<SyncPullOnceOptions, 'clientId' | 'actorId'>;
15
+ }
16
+ export interface PushThenPullResult<DB extends SyncClientDb> {
17
+ enqueueResult?: {
18
+ id: string;
19
+ clientCommitId: string;
20
+ };
21
+ pushResult: SyncPushOnceResult;
22
+ pullResult: SyncPullResponse;
23
+ client: ScenarioFlowClient<DB>;
24
+ }
25
+ export interface ScenarioFlow<DB extends SyncClientDb> {
26
+ client: ScenarioFlowClient<DB>;
27
+ enqueue: (args: Parameters<typeof enqueueOutboxCommit<DB>>[1]) => Promise<{
28
+ id: string;
29
+ clientCommitId: string;
30
+ }>;
31
+ push: (options?: Omit<SyncPushOnceOptions, 'clientId' | 'actorId'>) => Promise<SyncPushOnceResult>;
32
+ pull: (options: Omit<SyncPullOnceOptions, 'clientId' | 'actorId'>) => Promise<SyncPullResponse>;
33
+ sync: (options: Omit<SyncOnceOptions, 'clientId' | 'actorId'>) => Promise<SyncOnceResult>;
34
+ transportSync: (request: Omit<SyncCombinedRequest, 'clientId'>) => Promise<SyncCombinedResponse>;
35
+ pushThenPull: (options: PushThenPullOptions<DB>) => Promise<PushThenPullResult<DB>>;
36
+ }
37
+ export declare function createScenarioFlow<DB extends SyncClientDb>(client: ScenarioFlowClient<DB>): ScenarioFlow<DB>;
38
+ export declare function runPushPullCycle<DB extends SyncClientDb>(client: ScenarioFlowClient<DB>, options: PushThenPullOptions<DB>): Promise<PushThenPullResult<DB>>;
39
+ //# sourceMappingURL=scenario-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-flow.d.ts","sourceRoot":"","sources":["../src/scenario-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAIxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,YAAY;IACzD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,YAAY;IAC1D,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;IACzD,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,YAAY;IACzD,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,YAAY;IACnD,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,CACP,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAChD,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,IAAI,EAAE,CACJ,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC,KACxD,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,IAAI,EAAE,CACJ,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC,KACvD,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,IAAI,EAAE,CACJ,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,SAAS,CAAC,KACnD,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,aAAa,EAAE,CACb,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,KAC3C,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,YAAY,EAAE,CACZ,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,KAC7B,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;CACtC;AAgBD,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,YAAY,EACxD,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,GAC7B,YAAY,CAAC,EAAE,CAAC,CAuDlB;AAED,wBAAsB,gBAAgB,CAAC,EAAE,SAAS,YAAY,EAC5D,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAC9B,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAC/B,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAEjC"}
@@ -0,0 +1,41 @@
1
+ import { enqueueOutboxCommit, syncOnce, syncPullOnce, syncPushOnce, } from '@syncular/client';
2
+ function withClientIdentity(values, client) {
3
+ return {
4
+ ...values,
5
+ clientId: client.clientId,
6
+ ...(client.actorId ? { actorId: client.actorId } : {}),
7
+ };
8
+ }
9
+ export function createScenarioFlow(client) {
10
+ const enqueue = (args) => enqueueOutboxCommit(client.db, args);
11
+ const push = (options) => syncPushOnce(client.db, client.transport, withClientIdentity(options ?? {}, client));
12
+ const pull = (options) => syncPullOnce(client.db, client.transport, client.handlers, withClientIdentity(options, client));
13
+ const sync = (options) => syncOnce(client.db, client.transport, client.handlers, withClientIdentity(options, client));
14
+ const transportSync = (request) => client.transport.sync({ clientId: client.clientId, ...request });
15
+ const pushThenPull = async (options) => {
16
+ const enqueueResult = options.enqueue
17
+ ? await enqueueOutboxCommit(client.db, options.enqueue)
18
+ : undefined;
19
+ const pushResult = await push(options.push);
20
+ const pullResult = await pull(options.pull);
21
+ return {
22
+ enqueueResult,
23
+ pushResult,
24
+ pullResult,
25
+ client,
26
+ };
27
+ };
28
+ return {
29
+ client,
30
+ enqueue,
31
+ push,
32
+ pull,
33
+ sync,
34
+ transportSync,
35
+ pushThenPull,
36
+ };
37
+ }
38
+ export async function runPushPullCycle(client, options) {
39
+ return createScenarioFlow(client).pushThenPull(options);
40
+ }
41
+ //# sourceMappingURL=scenario-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-flow.js","sourceRoot":"","sources":["../src/scenario-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EAQnB,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAmD1B,SAAS,kBAAkB,CAIzB,MAAS,EACT,MAA8B,EACc;IAC5C,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AAAA,CACH;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA8B,EACZ;IAClB,MAAM,OAAO,GAAgC,CAAC,IAAI,EAAE,EAAE,CACpD,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEvC,MAAM,IAAI,GAA6B,CAAC,OAAO,EAAE,EAAE,CACjD,YAAY,CACV,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,kBAAkB,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEJ,MAAM,IAAI,GAA6B,CAAC,OAAO,EAAE,EAAE,CACjD,YAAY,CACV,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CACpC,CAAC;IAEJ,MAAM,IAAI,GAA6B,CAAC,OAAO,EAAE,EAAE,CACjD,QAAQ,CACN,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CACpC,CAAC;IAEJ,MAAM,aAAa,GAAsC,CAAC,OAAO,EAAE,EAAE,CACnE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAEnE,MAAM,YAAY,GAAqC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;QACxE,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO;YACnC,CAAC,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO;YACL,aAAa;YACb,UAAU;YACV,UAAU;YACV,MAAM;SACP,CAAC;IAAA,CACH,CAAC;IAEF,OAAO;QACL,MAAM;QACN,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,aAAa;QACb,YAAY;KACb,CAAC;AAAA,CACH;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA8B,EAC9B,OAAgC,EACC;IACjC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAAA,CACzD"}
@@ -0,0 +1,46 @@
1
+ import type { SyncCombinedRequest, SyncOperation, SyncPullRequest, SyncPushRequest, SyncSubscriptionRequest } from '@syncular/core';
2
+ export interface CreateSyncUpsertOperationOptions {
3
+ table: string;
4
+ rowId: string;
5
+ payload: Record<string, unknown>;
6
+ baseVersion?: number | null;
7
+ }
8
+ export declare function createSyncUpsertOperation(options: CreateSyncUpsertOperationOptions): SyncOperation;
9
+ export interface CreateSyncDeleteOperationOptions {
10
+ table: string;
11
+ rowId: string;
12
+ baseVersion?: number | null;
13
+ }
14
+ export declare function createSyncDeleteOperation(options: CreateSyncDeleteOperationOptions): SyncOperation;
15
+ export interface CreateSyncSubscriptionOptions {
16
+ id: string;
17
+ table: string;
18
+ scopes: SyncSubscriptionRequest['scopes'];
19
+ params?: SyncSubscriptionRequest['params'];
20
+ cursor?: number;
21
+ bootstrapState?: SyncSubscriptionRequest['bootstrapState'];
22
+ }
23
+ export declare function createSyncSubscription(options: CreateSyncSubscriptionOptions): SyncSubscriptionRequest;
24
+ export interface CreateSyncPushRequestOptions {
25
+ clientId: string;
26
+ clientCommitId: string;
27
+ operations: SyncOperation[];
28
+ schemaVersion?: number;
29
+ }
30
+ export declare function createSyncPushRequest(options: CreateSyncPushRequestOptions): SyncPushRequest;
31
+ export interface CreateSyncPullRequestOptions {
32
+ clientId: string;
33
+ subscriptions: SyncSubscriptionRequest[];
34
+ limitCommits?: number;
35
+ limitSnapshotRows?: number;
36
+ maxSnapshotPages?: number;
37
+ dedupeRows?: boolean;
38
+ }
39
+ export declare function createSyncPullRequest(options: CreateSyncPullRequestOptions): SyncPullRequest;
40
+ export interface CreateSyncCombinedRequestOptions {
41
+ clientId: string;
42
+ push?: Omit<SyncPushRequest, 'clientId'>;
43
+ pull?: Omit<SyncPullRequest, 'clientId'>;
44
+ }
45
+ export declare function createSyncCombinedRequest(options: CreateSyncCombinedRequestOptions): SyncCombinedRequest;
46
+ //# sourceMappingURL=sync-builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-builders.d.ts","sourceRoot":"","sources":["../src/sync-builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,aAAa,CAQf;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,aAAa,CAQf;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;CAC5D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,6BAA6B,GACrC,uBAAuB,CASzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,eAAe,CAOjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,eAAe,CAejB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;CAC1C;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,mBAAmB,CAMrB"}
@@ -0,0 +1,60 @@
1
+ export function createSyncUpsertOperation(options) {
2
+ return {
3
+ table: options.table,
4
+ row_id: options.rowId,
5
+ op: 'upsert',
6
+ payload: options.payload,
7
+ base_version: options.baseVersion ?? null,
8
+ };
9
+ }
10
+ export function createSyncDeleteOperation(options) {
11
+ return {
12
+ table: options.table,
13
+ row_id: options.rowId,
14
+ op: 'delete',
15
+ payload: null,
16
+ base_version: options.baseVersion ?? null,
17
+ };
18
+ }
19
+ export function createSyncSubscription(options) {
20
+ return {
21
+ id: options.id,
22
+ table: options.table,
23
+ scopes: options.scopes,
24
+ ...(options.params ? { params: options.params } : {}),
25
+ cursor: options.cursor ?? 0,
26
+ bootstrapState: options.bootstrapState ?? null,
27
+ };
28
+ }
29
+ export function createSyncPushRequest(options) {
30
+ return {
31
+ clientId: options.clientId,
32
+ clientCommitId: options.clientCommitId,
33
+ operations: options.operations,
34
+ schemaVersion: options.schemaVersion ?? 1,
35
+ };
36
+ }
37
+ export function createSyncPullRequest(options) {
38
+ return {
39
+ clientId: options.clientId,
40
+ subscriptions: options.subscriptions,
41
+ limitCommits: options.limitCommits ?? 50,
42
+ ...(options.limitSnapshotRows !== undefined
43
+ ? { limitSnapshotRows: options.limitSnapshotRows }
44
+ : {}),
45
+ ...(options.maxSnapshotPages !== undefined
46
+ ? { maxSnapshotPages: options.maxSnapshotPages }
47
+ : {}),
48
+ ...(options.dedupeRows !== undefined
49
+ ? { dedupeRows: options.dedupeRows }
50
+ : {}),
51
+ };
52
+ }
53
+ export function createSyncCombinedRequest(options) {
54
+ return {
55
+ clientId: options.clientId,
56
+ ...(options.push ? { push: options.push } : {}),
57
+ ...(options.pull ? { pull: options.pull } : {}),
58
+ };
59
+ }
60
+ //# sourceMappingURL=sync-builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-builders.js","sourceRoot":"","sources":["../src/sync-builders.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,yBAAyB,CACvC,OAAyC,EAC1B;IACf,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;KAC1C,CAAC;AAAA,CACH;AAQD,MAAM,UAAU,yBAAyB,CACvC,OAAyC,EAC1B;IACf,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;KAC1C,CAAC;AAAA,CACH;AAWD,MAAM,UAAU,sBAAsB,CACpC,OAAsC,EACb;IACzB,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;KAC/C,CAAC;AAAA,CACH;AASD,MAAM,UAAU,qBAAqB,CACnC,OAAqC,EACpB;IACjB,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;KAC1C,CAAC;AAAA,CACH;AAWD,MAAM,UAAU,qBAAqB,CACnC,OAAqC,EACpB;IACjB,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AAAA,CACH;AAQD,MAAM,UAAU,yBAAyB,CACvC,OAAyC,EACpB;IACrB,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AAAA,CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-http.d.ts","sourceRoot":"","sources":["../src/sync-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,MAAM,WAAW,wBAAwB,CAAC,KAAK;IAC7C,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB,CAAC,SAAS;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EACtD,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,GACvC,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAa7C;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,CAExD;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAEpD;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAEpD"}
1
+ {"version":3,"file":"sync-http.d.ts","sourceRoot":"","sources":["../src/sync-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,MAAM,WAAW,wBAAwB,CAAC,KAAK;IAC7C,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB,CAAC,SAAS;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EACtD,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,GACvC,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAa7C;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,CAMxD;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAMpD;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAMpD"}