@interocitor/core 0.0.0-beta.3 → 0.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +445 -91
  2. package/dist/adapters/cloudflare.d.ts +8 -9
  3. package/dist/adapters/cloudflare.d.ts.map +1 -1
  4. package/dist/adapters/cloudflare.js +38 -12
  5. package/dist/adapters/google-drive.d.ts +1 -1
  6. package/dist/adapters/google-drive.js +1 -2
  7. package/dist/adapters/memory.d.ts +4 -1
  8. package/dist/adapters/memory.d.ts.map +1 -1
  9. package/dist/adapters/memory.js +13 -2
  10. package/dist/adapters/webdav.d.ts +5 -0
  11. package/dist/adapters/webdav.d.ts.map +1 -1
  12. package/dist/adapters/webdav.js +18 -1
  13. package/dist/core/codec.d.ts +1 -1
  14. package/dist/core/codec.d.ts.map +1 -1
  15. package/dist/core/codec.js +39 -3
  16. package/dist/core/compaction.d.ts +8 -1
  17. package/dist/core/compaction.d.ts.map +1 -1
  18. package/dist/core/compaction.js +13 -5
  19. package/dist/core/crdt.d.ts +6 -3
  20. package/dist/core/crdt.d.ts.map +1 -1
  21. package/dist/core/crdt.js +38 -60
  22. package/dist/core/errors.d.ts +47 -0
  23. package/dist/core/errors.d.ts.map +1 -0
  24. package/dist/core/errors.js +61 -0
  25. package/dist/core/flush.d.ts +3 -3
  26. package/dist/core/flush.d.ts.map +1 -1
  27. package/dist/core/flush.js +64 -7
  28. package/dist/core/hlc.js +0 -1
  29. package/dist/core/ids.d.ts +49 -0
  30. package/dist/core/ids.d.ts.map +1 -0
  31. package/dist/core/ids.js +132 -0
  32. package/dist/core/internals.d.ts +10 -2
  33. package/dist/core/internals.d.ts.map +1 -1
  34. package/dist/core/internals.js +27 -9
  35. package/dist/core/manifest.d.ts +20 -5
  36. package/dist/core/manifest.d.ts.map +1 -1
  37. package/dist/core/manifest.js +65 -11
  38. package/dist/core/pull.d.ts +1 -1
  39. package/dist/core/pull.d.ts.map +1 -1
  40. package/dist/core/pull.js +21 -6
  41. package/dist/core/row-id.js +0 -1
  42. package/dist/core/schema-types.d.ts +22 -11
  43. package/dist/core/schema-types.d.ts.map +1 -1
  44. package/dist/core/schema-types.js +18 -9
  45. package/dist/core/schema-types.type-test.js +59 -5
  46. package/dist/core/sync-engine.d.ts +163 -12
  47. package/dist/core/sync-engine.d.ts.map +1 -1
  48. package/dist/core/sync-engine.js +1521 -219
  49. package/dist/core/table.d.ts +217 -17
  50. package/dist/core/table.d.ts.map +1 -1
  51. package/dist/core/table.js +376 -24
  52. package/dist/core/types.d.ts +382 -17
  53. package/dist/core/types.d.ts.map +1 -1
  54. package/dist/core/types.js +0 -1
  55. package/dist/crypto/encryption.d.ts.map +1 -1
  56. package/dist/crypto/encryption.js +6 -1
  57. package/dist/crypto/keys.js +0 -1
  58. package/dist/handshake/channel.js +0 -1
  59. package/dist/handshake/index.d.ts +5 -2
  60. package/dist/handshake/index.d.ts.map +1 -1
  61. package/dist/handshake/index.js +19 -2
  62. package/dist/handshake/qr.js +0 -1
  63. package/dist/index.d.ts +9 -7
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +8 -6
  66. package/dist/storage/credential-store.d.ts +25 -2
  67. package/dist/storage/credential-store.d.ts.map +1 -1
  68. package/dist/storage/credential-store.js +55 -8
  69. package/dist/storage/local-store.d.ts +4 -1
  70. package/dist/storage/local-store.d.ts.map +1 -1
  71. package/dist/storage/local-store.js +37 -21
  72. package/package.json +3 -3
  73. package/dist/adapters/cloudflare.js.map +0 -1
  74. package/dist/adapters/google-drive.js.map +0 -1
  75. package/dist/adapters/memory.js.map +0 -1
  76. package/dist/adapters/webdav.js.map +0 -1
  77. package/dist/core/codec.js.map +0 -1
  78. package/dist/core/compaction.js.map +0 -1
  79. package/dist/core/crdt.js.map +0 -1
  80. package/dist/core/flush.js.map +0 -1
  81. package/dist/core/hlc.js.map +0 -1
  82. package/dist/core/internals.js.map +0 -1
  83. package/dist/core/manifest.js.map +0 -1
  84. package/dist/core/pull.js.map +0 -1
  85. package/dist/core/row-id.js.map +0 -1
  86. package/dist/core/schema-types.js.map +0 -1
  87. package/dist/core/schema-types.type-test.js.map +0 -1
  88. package/dist/core/sync-engine.js.map +0 -1
  89. package/dist/core/table.js.map +0 -1
  90. package/dist/core/types.js.map +0 -1
  91. package/dist/crypto/encryption.js.map +0 -1
  92. package/dist/crypto/keys.js.map +0 -1
  93. package/dist/handshake/channel.js.map +0 -1
  94. package/dist/handshake/index.js.map +0 -1
  95. package/dist/handshake/qr.js.map +0 -1
  96. package/dist/index.js.map +0 -1
  97. package/dist/storage/credential-store.js.map +0 -1
  98. package/dist/storage/local-store.js.map +0 -1
@@ -9,26 +9,43 @@
9
9
  * Network is never required for reads or local writes.
10
10
  * All data operations hit IndexedDB first; cloud sync is async.
11
11
  */
12
- import type { StorageAdapter, SyncConfig, LocalStoreAdapter, Manifest, SyncEventListener, WhereClause } from './types.ts';
12
+ import type { StorageAdapter, SyncConfig, LocalStoreAdapter, Manifest, Row, SyncEventListener, WhereClause, SyncInitialState, QueryDescriptor, QueryExecutionOptions, QueryCacheSnapshot, ReadinessAwareQueryExecutor, RowDescriptor, RowCacheSnapshot } from './types.ts';
13
13
  import { Table } from './table.ts';
14
14
  /**
15
15
  * Typed sync engine. `S` is your database shape — inferred automatically
16
16
  * from `InferSchemaType<typeof schema>`. No default: either typed or `any`.
17
17
  *
18
+ * Initialization is automatic — just construct and use. No `await engine.init()` needed.
19
+ *
18
20
  * @example
19
21
  * const schema = { version: 1, tables: { tasks: { fields: { title: types.string } } } }
20
22
  * satisfies DatabaseSchemaDefinition;
21
23
  *
22
24
  * type DB = InferSchemaType<typeof schema>;
23
- * const engine = new SyncEngine<DB>(adapter, { schema, remotePath: '/App', appName: 'App' });
24
25
  *
25
- * // Or declare a typed getter:
26
- * const getDb = async (): Promise<SyncEngine<DB>> => { ... }
26
+ * // Local-only (no adapter):
27
+ * const db = new Interocitor<DB>({ schema, dbName: 'myapp', appName: 'My App' });
28
+ * const tasks = await db.table('tasks').query(); // ready immediately
29
+ *
30
+ * // With remote sync:
31
+ * const db = new Interocitor<DB>(adapter, { schema, remotePath: '/App', appName: 'App' });
32
+ * await db.connect(); // authenticate + sync
27
33
  *
28
- * engine.table('tasks'); // Table<{ title: string }>
29
- * engine.table('other'); // TS error — 'other' is not keyof DB
34
+ * db.table('other'); // TS error 'other' is not keyof DB
30
35
  */
31
- export declare class SyncEngine<S extends Record<string, Record<string, unknown>>> {
36
+ export interface InterocitorInitContext<S extends Record<string, Record<string, unknown>>> extends ReadinessAwareQueryExecutor {
37
+ put<K extends keyof S & string>(table: K, rowId: string, columns: Partial<S[K]>, userId?: string): Promise<S[K]>;
38
+ delete<K extends keyof S & string>(table: K, rowId: string, userId?: string): Promise<void>;
39
+ query<K extends keyof S & string>(table: K): Promise<S[K][]>;
40
+ queryWhere<K extends keyof S & string>(table: K, clause: WhereClause): Promise<S[K][]>;
41
+ table<K extends keyof S & string>(name: K): Table<S[K]>;
42
+ on(listener: SyncEventListener): () => void;
43
+ getDeviceId(): string;
44
+ getMeshId(): string | undefined;
45
+ isEncrypted(): boolean;
46
+ }
47
+ export declare class Interocitor<S extends Record<string, Record<string, unknown>>> implements ReadinessAwareQueryExecutor {
48
+ readonly InitContext: InterocitorInitContext<S>;
32
49
  private adapter;
33
50
  private config;
34
51
  private serverId;
@@ -44,12 +61,28 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
44
61
  private knownTables;
45
62
  private flushTimer;
46
63
  private pendingCount;
64
+ private compactWarningEmitted;
65
+ private compactInFlight;
66
+ private compactScheduleVersion;
67
+ private compactCheckTimer;
68
+ private compactRunTimer;
69
+ private batchTimer;
70
+ private pendingBatch;
47
71
  private pollTimer;
72
+ private unsubscribeRemoteInvalidations;
48
73
  private initialized;
49
74
  private connected;
75
+ private initPromise;
76
+ private connectPromise;
77
+ private readonly logLevel;
50
78
  private listeners;
51
79
  private readonly schema?;
52
80
  private readonly credentialStore;
81
+ private readonly dbName;
82
+ private queryCache;
83
+ private queryCacheByTable;
84
+ private rowCache;
85
+ private rowCacheByTable;
53
86
  /**
54
87
  * Create a sync engine.
55
88
  *
@@ -61,31 +94,107 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
61
94
  * config — no manual type parameter needed:
62
95
  *
63
96
  * @example
64
- * const engine = new SyncEngine(adapter, { schema, remotePath: '/App', appName: 'App' });
97
+ * const engine = new Interocitor(adapter, { schema, remotePath: '/App', appName: 'App' });
65
98
  * const tasks = engine.table('tasks'); // Table<{ title: string; status: 'open' | 'done' }>
66
99
  */
67
100
  constructor(config: SyncConfig<S>);
68
101
  constructor(adapter: StorageAdapter | null, config: SyncConfig<S>);
102
+ private log;
103
+ private supportsRemoteInvalidations;
104
+ /** Await this before any storage operation. Returns the shared init promise. */
105
+ private ensureReady;
106
+ private putNow;
107
+ private deleteNow;
108
+ /**
109
+ * Append the op to the in-flight batch. If we are inside a `batch()` block,
110
+ * the op stays buffered until the block ends. Otherwise it joins an
111
+ * implicit window of `batchWindowMs`. Either way the result is one
112
+ * ChangeEntry per batch instead of one per write.
113
+ */
114
+ private queueOpForBatchedFlush;
115
+ private queryNow;
116
+ private queryWhereNow;
117
+ /** Public readiness signal. Used by render-time consumers to decide
118
+ * between sync cache reads and awaiting a load. */
119
+ isReady(): boolean;
120
+ /** Stable cache key for a descriptor. Owned by core. */
121
+ getQueryCacheKey(descriptor: QueryDescriptor): string;
122
+ /** Sync cache snapshot. Never starts a load. Empty/pending/ready/error. */
123
+ readQueryCache(descriptor: QueryDescriptor): QueryCacheSnapshot;
124
+ /**
125
+ * Load rows through the cache.
126
+ *
127
+ * - If a snapshot exists and `bypassCache` is not set, dedupes to the
128
+ * in-flight promise (when pending) or starts a refresh that keeps the
129
+ * stale rows visible until it resolves.
130
+ * - When the engine is not yet ready, falls through `ensureReady()`; if
131
+ * `bypassCache` is set, never returns the cached rows.
132
+ */
133
+ loadQueryRows(descriptor: QueryDescriptor, options?: QueryExecutionOptions): Promise<Row[]>;
134
+ private runQuery;
135
+ private indexCacheByTable;
136
+ /**
137
+ * Mark all cached queries against `table` as stale and refresh them in the
138
+ * background. Stale rows stay visible. Called from local mutations.
139
+ */
140
+ private invalidateQueryCacheForTable;
141
+ /** Stable cache key for a row descriptor. Owned by core. */
142
+ getRowCacheKey(descriptor: RowDescriptor): string;
143
+ /** Sync row cache snapshot. Never starts a load. */
144
+ readRowCache(descriptor: RowDescriptor): RowCacheSnapshot;
145
+ /**
146
+ * Load a row through the cache. Same dedupe + stale-while-revalidate
147
+ * semantics as `loadQueryRows`.
148
+ */
149
+ loadRow(descriptor: RowDescriptor, options?: QueryExecutionOptions): Promise<Row | undefined>;
150
+ private runRow;
151
+ private indexRowCacheByTable;
152
+ /**
153
+ * Refresh all cached rows for a table. Called from emit() alongside the
154
+ * query cache invalidation. Keeps prior row visible while in-flight.
155
+ *
156
+ * Table-wide invalidation is intentional: Interocitor targets rare-update
157
+ * workloads, not realtime state streams. The over-fetch on a write is a
158
+ * fixed-cost reload of cached rows for that one table — cheap, simple,
159
+ * and matches the query cache strategy. Finer-grained per-rowId
160
+ * invalidation can be added later without changing this contract.
161
+ */
162
+ private invalidateRowCacheForTable;
163
+ private get initContext();
69
164
  private requireAdapter;
165
+ private requireRemotePath;
70
166
  private get codecState();
71
167
  private get manifestContext();
72
168
  private clearScheduledFlush;
169
+ private clearCompactTimers;
170
+ private jitterDelay;
73
171
  private stopPolling;
74
172
  private startPolling;
75
- private resetRemoteSyncState;
173
+ private stopRemoteInvalidations;
174
+ private startRemoteInvalidations;
76
175
  private getRowHlc;
77
176
  private rowToSyncOp;
78
- private buildChangeEntry;
79
- private rebuildOutboxFromLocalState;
80
177
  private loadLocalState;
81
178
  private ensureRowsCached;
82
179
  private poisonRemote;
83
180
  on(listener: SyncEventListener): () => void;
84
181
  private emit;
85
182
  private persistCredentials;
183
+ /**
184
+ * Compare the persisted credential record against the live meshId.
185
+ *
186
+ * Throws `MeshCredentialMismatchError` (and emits `credentials:meshMismatch`)
187
+ * when the credential store has a record under this `dbName` whose meshId
188
+ * disagrees with `manifest.meshId`. The remote is NOT poisoned — the local
189
+ * credential store has stale data from a previous mesh that shared the
190
+ * same dbName.
191
+ */
192
+ private assertCredentialMeshParity;
86
193
  private loadPersistedCredentials;
87
194
  private clearPersistedCredentials;
88
195
  private resolveEncryption;
196
+ private applyInitialState;
197
+ configureMesh(state: SyncInitialState): void;
89
198
  /**
90
199
  * Set the mesh encryption passphrase.
91
200
  * Call before init() or between disconnect() and init().
@@ -126,25 +235,67 @@ export declare class SyncEngine<S extends Record<string, Record<string, unknown>
126
235
  */
127
236
  setEncryptionKey(key: CryptoKey): void;
128
237
  init(): Promise<void>;
238
+ private doInit;
129
239
  /**
130
240
  * Silent credential restore from the primary store only.
131
241
  * Used during normal init(). No biometric prompt.
132
242
  */
133
243
  private restoreCredentials;
134
244
  connect(): Promise<void>;
245
+ private tryConnectFastPath;
246
+ private doConnect;
135
247
  disconnect(): Promise<void>;
136
248
  setRemoteStorage(adapter: StorageAdapter | null): Promise<void>;
137
249
  setLocalStorage(local: LocalStoreAdapter): Promise<void>;
250
+ /**
251
+ * Load the mesh manifest, optionally short-circuiting via the in-memory
252
+ * cache.
253
+ *
254
+ * `reason` is a free-form caller tag used by `trace:manifest` events so
255
+ * developers can answer "why is my manifest being re-read every flush?".
256
+ *
257
+ * `force=true` bypasses the cache. Required after poison, after compaction
258
+ * advances generation, or whenever the caller explicitly needs disk state.
259
+ * Cached path emits `trace:manifest { op: 'cache-hit' }` so test/devtools
260
+ * can assert that the steady-state pipeline does ZERO GETs on flush/pull.
261
+ */
262
+ /**
263
+ * Returns whether the manifest was bootstrapped (freshly minted) on this
264
+ * call. Callers (connect()) use this to skip the device-metadata GET when
265
+ * we know no prior device record can exist.
266
+ */
138
267
  private doLoadOrCreateManifest;
139
268
  put<K extends keyof S & string>(table: K, rowId: string, columns: Partial<S[K]>, userId?: string): Promise<S[K]>;
140
269
  delete<K extends keyof S & string>(table: K, rowId: string, userId?: string): Promise<void>;
141
- get<K extends keyof S & string>(table: K, rowId: string): Promise<S[K] | undefined>;
142
270
  query<K extends keyof S & string>(table: K): Promise<S[K][]>;
143
271
  queryWhere<K extends keyof S & string>(table: K, clause: WhereClause): Promise<S[K][]>;
144
272
  tableNames(): Promise<string[]>;
145
273
  table<K extends keyof S & string>(name: K): Table<S[K]>;
274
+ private batchDepth;
275
+ /**
276
+ * Group a sequence of writes into a single ChangeEntry. The entry
277
+ * carries every op as one atomic unit, producing one remote file
278
+ * instead of one per write.
279
+ *
280
+ * Nested batch() calls join the outer batch.
281
+ */
282
+ batch<R>(fn: () => Promise<R> | R): Promise<R>;
283
+ private isBatching;
284
+ private clearBatchTimer;
285
+ private appendOpToPendingBatch;
286
+ private armImplicitBatchTimer;
287
+ private flushPendingBatch;
146
288
  private scheduleFlush;
289
+ private maybeEmitCompactWarning;
290
+ private resetCompactWarning;
291
+ private maybeAutoCompact;
292
+ private armDelayedCompactAfterChange;
293
+ private runDelayedCompactCheck;
294
+ private runDelayedCompact;
295
+ /** Public flush — waits for init. Safe to call from user code. */
147
296
  flush(): Promise<void>;
297
+ /** Internal flush — no ensureReady guard (called from connect, pull, doInit). */
298
+ private doFlush;
148
299
  pull(): Promise<void>;
149
300
  rehydrate(): Promise<void>;
150
301
  compact(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/core/sync-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,iBAAiB,EAEjB,QAAQ,EACR,GAAG,EAIH,iBAAiB,EAEjB,WAAW,EAGX,gBAAgB,EAEhB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,aAAa,EACb,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAC;AA2DpD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACvF,SAAQ,2BAA2B;IACnC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IAC5C,WAAW,IAAI,MAAM,CAAC;IACtB,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,IAAI,OAAO,CAAC;CACxB;AAmCD,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACxE,YAAW,2BAA2B;IACtC,SAAiB,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,iBAAiB,CAAsB;IAG/C,OAAO,CAAC,WAAW,CAA0B;IAG7C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,YAAY,CAA4B;IAGhD,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,8BAA8B,CAA6B;IAGnE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;IAMjD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAGpC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,OAAO,CAAC,UAAU,CAA2C;IAE7D,OAAO,CAAC,iBAAiB,CAAuC;IAIhE,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,eAAe,CAAuC;IAE9D;;;;;;;;;;;;;OAaG;gBACS,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrB,OAAO,EAAE,cAAc,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAuDjE,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,2BAA2B;IAInC,gFAAgF;IAChF,OAAO,CAAC,WAAW;YAML,MAAM;YAwCN,SAAS;IAiBvB;;;;;OAKG;YACW,sBAAsB;YAUtB,QAAQ;YAIR,aAAa;IAM3B;wDACoD;IACpD,OAAO,IAAI,OAAO;IAIlB,wDAAwD;IACxD,gBAAgB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM;IAIrD,2EAA2E;IAC3E,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,kBAAkB;IAY/D;;;;;;;;OAQG;IACH,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgB3F,OAAO,CAAC,QAAQ;IAiDhB,OAAO,CAAC,iBAAiB;IASzB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAcpC,4DAA4D;IAC5D,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM;IAIjD,oDAAoD;IACpD,YAAY,CAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB;IAYzD;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAc7F,OAAO,CAAC,MAAM;IAoCd,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,KAAK,WAAW,GAwBtB;IAID,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,KAAK,UAAU,GAMrB;IAED,OAAO,KAAK,eAAe,GAW1B;IAID,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,wBAAwB;IAyChC,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,WAAW;YAeL,cAAc;YAad,gBAAgB;YAWhB,YAAY;IAsC1B,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAK3C,OAAO,CAAC,IAAI;YAgBE,kBAAkB;IAuChC;;;;;;;;OAQG;YACW,0BAA0B;YAsB1B,wBAAwB;YAKxB,yBAAyB;YAKzB,iBAAiB;IA8C/B,OAAO,CAAC,iBAAiB;IAuBzB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAc5C;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvC;;;;OAIG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9C;;;;;;;;;;;OAWG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IA4B/C;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAOhC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAIb,MAAM;IAgCpB;;;OAGG;YACW,kBAAkB;IAgI1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA+DhB,kBAAkB;YAiDlB,SAAS;IA6IjB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmF/D,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9D;;;;;;;;;;;OAWG;IACH;;;;OAIG;YACW,sBAAsB;IA4B9B,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAClC,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAKV,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3F,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAK5D,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAKtF,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IASvD,OAAO,CAAC,UAAU,CAAK;IAEvB;;;;;;OAMG;IACG,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAYpD,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,qBAAqB;YASf,iBAAiB;IAW/B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,mBAAmB;YAKb,gBAAgB;IAwE9B,OAAO,CAAC,4BAA4B;YAuBtB,sBAAsB;YAoDtB,iBAAiB;IAqF/B,kEAAkE;IAC5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,iFAAiF;YACnE,OAAO;IA2Ef,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBrB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAItD"}