syncorejs 0.2.1 → 0.2.3

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 (169) hide show
  1. package/README.md +2 -1
  2. package/dist/_vendor/cli/app.d.mts.map +1 -1
  3. package/dist/_vendor/cli/app.mjs +330 -46
  4. package/dist/_vendor/cli/app.mjs.map +1 -1
  5. package/dist/_vendor/cli/context.mjs +27 -9
  6. package/dist/_vendor/cli/context.mjs.map +1 -1
  7. package/dist/_vendor/cli/dev-session.mjs.map +1 -1
  8. package/dist/_vendor/cli/doctor.mjs +513 -46
  9. package/dist/_vendor/cli/doctor.mjs.map +1 -1
  10. package/dist/_vendor/cli/errors.mjs.map +1 -1
  11. package/dist/_vendor/cli/help.mjs.map +1 -1
  12. package/dist/_vendor/cli/index.mjs +9 -2
  13. package/dist/_vendor/cli/index.mjs.map +1 -1
  14. package/dist/_vendor/cli/messages.mjs +5 -4
  15. package/dist/_vendor/cli/messages.mjs.map +1 -1
  16. package/dist/_vendor/cli/preflight.mjs.map +1 -1
  17. package/dist/_vendor/cli/project.mjs +125 -27
  18. package/dist/_vendor/cli/project.mjs.map +1 -1
  19. package/dist/_vendor/cli/render.mjs +57 -9
  20. package/dist/_vendor/cli/render.mjs.map +1 -1
  21. package/dist/_vendor/cli/targets.mjs +4 -3
  22. package/dist/_vendor/cli/targets.mjs.map +1 -1
  23. package/dist/_vendor/core/cli.d.mts +20 -4
  24. package/dist/_vendor/core/cli.d.mts.map +1 -1
  25. package/dist/_vendor/core/cli.mjs +458 -133
  26. package/dist/_vendor/core/cli.mjs.map +1 -1
  27. package/dist/_vendor/core/devtools-auth.mjs +60 -0
  28. package/dist/_vendor/core/devtools-auth.mjs.map +1 -0
  29. package/dist/_vendor/core/index.d.mts +5 -3
  30. package/dist/_vendor/core/index.mjs +22 -2
  31. package/dist/_vendor/core/index.mjs.map +1 -1
  32. package/dist/_vendor/core/runtime/components.d.mts +111 -0
  33. package/dist/_vendor/core/runtime/components.d.mts.map +1 -0
  34. package/dist/_vendor/core/runtime/components.mjs +186 -0
  35. package/dist/_vendor/core/runtime/components.mjs.map +1 -0
  36. package/dist/_vendor/core/runtime/devtools.d.mts +4 -4
  37. package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
  38. package/dist/_vendor/core/runtime/devtools.mjs +178 -60
  39. package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
  40. package/dist/_vendor/core/runtime/functions.d.mts +398 -16
  41. package/dist/_vendor/core/runtime/functions.d.mts.map +1 -1
  42. package/dist/_vendor/core/runtime/functions.mjs +74 -3
  43. package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
  44. package/dist/_vendor/core/runtime/id.d.mts.map +1 -1
  45. package/dist/_vendor/core/runtime/id.mjs.map +1 -1
  46. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs +83 -0
  47. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs.map +1 -0
  48. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs +720 -0
  49. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs.map +1 -0
  50. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs +234 -0
  51. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs.map +1 -0
  52. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs +255 -0
  53. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs.map +1 -0
  54. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs +200 -0
  55. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs.map +1 -0
  56. package/dist/_vendor/core/runtime/internal/engines/shared.mjs +252 -0
  57. package/dist/_vendor/core/runtime/internal/engines/shared.mjs.map +1 -0
  58. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs +145 -0
  59. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs.map +1 -0
  60. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs +221 -0
  61. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs.map +1 -0
  62. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs +32 -0
  63. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs.map +1 -0
  64. package/dist/_vendor/core/runtime/internal/systemMeta.mjs +61 -0
  65. package/dist/_vendor/core/runtime/internal/systemMeta.mjs.map +1 -0
  66. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs +41 -0
  67. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs.map +1 -0
  68. package/dist/_vendor/core/runtime/runtime.d.mts +1187 -202
  69. package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
  70. package/dist/_vendor/core/runtime/runtime.mjs +73 -1365
  71. package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
  72. package/dist/_vendor/core/transport.d.mts +113 -0
  73. package/dist/_vendor/core/transport.d.mts.map +1 -0
  74. package/dist/_vendor/core/transport.mjs +428 -0
  75. package/dist/_vendor/core/transport.mjs.map +1 -0
  76. package/dist/_vendor/devtools-protocol/index.d.ts +187 -4
  77. package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
  78. package/dist/_vendor/devtools-protocol/index.js +25 -9
  79. package/dist/_vendor/devtools-protocol/index.js.map +1 -1
  80. package/dist/_vendor/next/config.d.ts +3 -4
  81. package/dist/_vendor/next/config.d.ts.map +1 -1
  82. package/dist/_vendor/next/config.js +37 -19
  83. package/dist/_vendor/next/config.js.map +1 -1
  84. package/dist/_vendor/next/index.d.ts +109 -29
  85. package/dist/_vendor/next/index.d.ts.map +1 -1
  86. package/dist/_vendor/next/index.js +104 -26
  87. package/dist/_vendor/next/index.js.map +1 -1
  88. package/dist/_vendor/platform-expo/index.d.ts +156 -37
  89. package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
  90. package/dist/_vendor/platform-expo/index.js +80 -12
  91. package/dist/_vendor/platform-expo/index.js.map +1 -1
  92. package/dist/_vendor/platform-expo/react.d.ts.map +1 -1
  93. package/dist/_vendor/platform-expo/react.js +11 -10
  94. package/dist/_vendor/platform-expo/react.js.map +1 -1
  95. package/dist/_vendor/platform-expo/web-sqljs-wasm.js +16 -0
  96. package/dist/_vendor/platform-expo/web-sqljs-wasm.js.map +1 -0
  97. package/dist/_vendor/platform-node/index.d.mts +192 -24
  98. package/dist/_vendor/platform-node/index.d.mts.map +1 -1
  99. package/dist/_vendor/platform-node/index.mjs +236 -97
  100. package/dist/_vendor/platform-node/index.mjs.map +1 -1
  101. package/dist/_vendor/platform-node/ipc-react.d.mts.map +1 -1
  102. package/dist/_vendor/platform-node/ipc-react.mjs +15 -2
  103. package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
  104. package/dist/_vendor/platform-node/ipc.d.mts +11 -35
  105. package/dist/_vendor/platform-node/ipc.d.mts.map +1 -1
  106. package/dist/_vendor/platform-node/ipc.mjs +3 -273
  107. package/dist/_vendor/platform-node/ipc.mjs.map +1 -1
  108. package/dist/_vendor/platform-web/external-change.d.ts +43 -1
  109. package/dist/_vendor/platform-web/external-change.d.ts.map +1 -1
  110. package/dist/_vendor/platform-web/external-change.js +32 -1
  111. package/dist/_vendor/platform-web/external-change.js.map +1 -1
  112. package/dist/_vendor/platform-web/index.d.ts +323 -51
  113. package/dist/_vendor/platform-web/index.d.ts.map +1 -1
  114. package/dist/_vendor/platform-web/index.js +233 -30
  115. package/dist/_vendor/platform-web/index.js.map +1 -1
  116. package/dist/_vendor/platform-web/indexeddb.d.ts +12 -0
  117. package/dist/_vendor/platform-web/indexeddb.d.ts.map +1 -1
  118. package/dist/_vendor/platform-web/indexeddb.js +10 -0
  119. package/dist/_vendor/platform-web/indexeddb.js.map +1 -1
  120. package/dist/_vendor/platform-web/opfs.d.ts +13 -0
  121. package/dist/_vendor/platform-web/opfs.d.ts.map +1 -1
  122. package/dist/_vendor/platform-web/opfs.js +12 -0
  123. package/dist/_vendor/platform-web/opfs.js.map +1 -1
  124. package/dist/_vendor/platform-web/persistence.d.ts +54 -0
  125. package/dist/_vendor/platform-web/persistence.d.ts.map +1 -1
  126. package/dist/_vendor/platform-web/persistence.js +15 -0
  127. package/dist/_vendor/platform-web/persistence.js.map +1 -1
  128. package/dist/_vendor/platform-web/react.d.ts +1 -2
  129. package/dist/_vendor/platform-web/react.d.ts.map +1 -1
  130. package/dist/_vendor/platform-web/react.js +27 -13
  131. package/dist/_vendor/platform-web/react.js.map +1 -1
  132. package/dist/_vendor/platform-web/sqljs.js +10 -1
  133. package/dist/_vendor/platform-web/sqljs.js.map +1 -1
  134. package/dist/_vendor/platform-web/web-sqljs-wasm.js +8 -0
  135. package/dist/_vendor/platform-web/web-sqljs-wasm.js.map +1 -0
  136. package/dist/_vendor/platform-web/worker.d.ts +71 -44
  137. package/dist/_vendor/platform-web/worker.d.ts.map +1 -1
  138. package/dist/_vendor/platform-web/worker.js +40 -271
  139. package/dist/_vendor/platform-web/worker.js.map +1 -1
  140. package/dist/_vendor/react/index.d.ts +222 -23
  141. package/dist/_vendor/react/index.d.ts.map +1 -1
  142. package/dist/_vendor/react/index.js +476 -63
  143. package/dist/_vendor/react/index.js.map +1 -1
  144. package/dist/_vendor/schema/definition.d.ts +151 -37
  145. package/dist/_vendor/schema/definition.d.ts.map +1 -1
  146. package/dist/_vendor/schema/definition.js +102 -20
  147. package/dist/_vendor/schema/definition.js.map +1 -1
  148. package/dist/_vendor/schema/index.d.ts +4 -4
  149. package/dist/_vendor/schema/index.js +2 -2
  150. package/dist/_vendor/schema/planner.d.ts +19 -2
  151. package/dist/_vendor/schema/planner.d.ts.map +1 -1
  152. package/dist/_vendor/schema/planner.js +79 -3
  153. package/dist/_vendor/schema/planner.js.map +1 -1
  154. package/dist/_vendor/schema/validators.d.ts +279 -83
  155. package/dist/_vendor/schema/validators.d.ts.map +1 -1
  156. package/dist/_vendor/schema/validators.js +330 -38
  157. package/dist/_vendor/schema/validators.js.map +1 -1
  158. package/dist/_vendor/svelte/index.d.ts +245 -19
  159. package/dist/_vendor/svelte/index.d.ts.map +1 -1
  160. package/dist/_vendor/svelte/index.js +443 -20
  161. package/dist/_vendor/svelte/index.js.map +1 -1
  162. package/dist/browser.d.ts.map +1 -1
  163. package/dist/cli.js +3 -1
  164. package/dist/cli.js.map +1 -1
  165. package/dist/components.d.ts +2 -0
  166. package/dist/components.js +2 -0
  167. package/dist/index.d.ts +3 -2
  168. package/dist/index.js +2 -1
  169. package/package.json +29 -21
@@ -1,10 +1,60 @@
1
1
  //#region src/index.d.ts
2
2
  type SyncoreDevtoolsEventOrigin = "runtime" | "dashboard";
3
+ declare const SYNCORE_DEVTOOLS_PROTOCOL_VERSION = 1;
4
+ declare const SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION = 1;
5
+ declare const SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION = 1;
6
+ interface VersionHandshake {
7
+ protocolVersion: number;
8
+ minSupportedProtocolVersion: number;
9
+ maxSupportedProtocolVersion: number;
10
+ runtimeVersion?: string;
11
+ }
12
+ declare function isCompatibleVersionHandshake(handshake: Pick<VersionHandshake, "protocolVersion" | "minSupportedProtocolVersion" | "maxSupportedProtocolVersion">): boolean;
3
13
  type SyncoreDevtoolsEventBase = {
4
14
  runtimeId: string;
5
15
  timestamp: number;
16
+ sequence?: number;
6
17
  origin?: SyncoreDevtoolsEventOrigin;
7
18
  };
19
+ type DevtoolsPreview = {
20
+ kind: "value";
21
+ value: unknown;
22
+ truncated?: boolean;
23
+ note?: string;
24
+ } | {
25
+ kind: "error";
26
+ message: string;
27
+ truncated?: boolean;
28
+ };
29
+ interface DocumentChangePreview {
30
+ table: string;
31
+ id: string;
32
+ operation: "insert" | "patch" | "replace" | "delete";
33
+ fields?: string[];
34
+ beforePreview?: DevtoolsPreview;
35
+ afterPreview?: DevtoolsPreview;
36
+ }
37
+ interface InvalidationCause {
38
+ executionId?: string;
39
+ reason: string;
40
+ changedScopes: string[];
41
+ matchedScopes: string[];
42
+ }
43
+ interface ExecutionTrace {
44
+ executionId: string;
45
+ parentExecutionId?: string;
46
+ kind: "query" | "mutation" | "action" | "scheduler" | "dashboard";
47
+ functionName?: string;
48
+ argsPreview?: DevtoolsPreview;
49
+ resultPreview?: DevtoolsPreview;
50
+ error?: string;
51
+ readScopes?: string[];
52
+ writeScopes?: string[];
53
+ changedScopes?: string[];
54
+ changedDocumentsPreview?: DocumentChangePreview[];
55
+ invalidatedQueryIds?: string[];
56
+ schedulerJobId?: string;
57
+ }
8
58
  type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
9
59
  type: "runtime.connected";
10
60
  platform: string;
@@ -14,30 +64,75 @@ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
14
64
  type: "query.executed";
15
65
  queryId: string;
16
66
  functionName: string;
67
+ componentPath?: string;
68
+ componentName?: string;
17
69
  dependencies: string[];
18
70
  durationMs: number;
71
+ executionId?: string;
72
+ parentExecutionId?: string;
73
+ argsPreview?: DevtoolsPreview;
74
+ resultPreview?: DevtoolsPreview;
75
+ readScopes?: string[];
19
76
  }) | (SyncoreDevtoolsEventBase & {
20
77
  type: "query.invalidated";
21
78
  queryId: string;
79
+ componentPath?: string;
80
+ componentName?: string;
22
81
  reason: string;
82
+ causedByExecutionId?: string;
83
+ changedScopes?: string[];
84
+ matchedScopes?: string[];
85
+ rerunExecutionId?: string;
23
86
  }) | (SyncoreDevtoolsEventBase & {
24
87
  type: "mutation.committed";
25
88
  mutationId: string;
26
89
  functionName: string;
90
+ componentPath?: string;
91
+ componentName?: string;
27
92
  changedTables: string[];
28
93
  durationMs: number;
94
+ executionId?: string;
95
+ parentExecutionId?: string;
96
+ argsPreview?: DevtoolsPreview;
97
+ resultPreview?: DevtoolsPreview;
98
+ writeScopes?: string[];
99
+ changedScopes?: string[];
100
+ changedDocumentsPreview?: DocumentChangePreview[];
101
+ invalidatedQueryIds?: string[];
29
102
  }) | (SyncoreDevtoolsEventBase & {
30
103
  type: "action.completed";
31
104
  actionId: string;
32
105
  functionName: string;
106
+ componentPath?: string;
107
+ componentName?: string;
33
108
  durationMs: number;
34
109
  error?: string;
110
+ executionId?: string;
111
+ parentExecutionId?: string;
112
+ argsPreview?: DevtoolsPreview;
113
+ resultPreview?: DevtoolsPreview;
114
+ writeScopes?: string[];
115
+ changedScopes?: string[];
116
+ changedDocumentsPreview?: DocumentChangePreview[];
117
+ invalidatedQueryIds?: string[];
35
118
  }) | (SyncoreDevtoolsEventBase & {
36
119
  type: "scheduler.tick";
37
120
  executedJobIds: string[];
121
+ executionId?: string;
122
+ jobExecutions?: Array<{
123
+ jobId: string;
124
+ executionId?: string;
125
+ functionName: string;
126
+ functionType: "mutation" | "action";
127
+ argsPreview?: DevtoolsPreview;
128
+ resultPreview?: DevtoolsPreview;
129
+ error?: string;
130
+ durationMs?: number;
131
+ }>;
38
132
  }) | (SyncoreDevtoolsEventBase & {
39
133
  type: "storage.updated";
40
134
  storageId: string;
135
+ componentPath?: string;
41
136
  operation: "put" | "delete";
42
137
  }) | (SyncoreDevtoolsEventBase & {
43
138
  type: "log";
@@ -47,6 +142,11 @@ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
47
142
  interface SyncoreActiveQueryInfo {
48
143
  id: string;
49
144
  functionName: string;
145
+ args?: Record<string, unknown>;
146
+ consumers?: number;
147
+ owner?: "root" | "component";
148
+ componentPath?: string;
149
+ componentName?: string;
50
150
  dependencyKeys: string[];
51
151
  lastRunAt: number;
52
152
  }
@@ -57,28 +157,65 @@ interface SyncoreRuntimeSummary {
57
157
  origin?: string;
58
158
  sessionLabel?: string;
59
159
  targetKind?: "client" | "project";
160
+ runtimeRole?: "app" | "project-target";
60
161
  storageProtocol?: string;
61
162
  databaseLabel?: string;
163
+ dataSourceAlias?: string;
62
164
  storageIdentity?: string;
165
+ capabilities?: SyncoreDevtoolsCapabilities;
63
166
  connectedAt: number;
64
167
  activeQueryCount: number;
65
168
  recentEventCount: number;
66
169
  }
170
+ interface SyncoreDevtoolsCapabilities {
171
+ sql?: {
172
+ read: boolean;
173
+ write: boolean;
174
+ live: boolean;
175
+ reason?: string;
176
+ };
177
+ data?: {
178
+ browse: boolean;
179
+ mutate: boolean;
180
+ importExport: boolean;
181
+ };
182
+ scheduler?: {
183
+ read: boolean;
184
+ edit: boolean;
185
+ };
186
+ }
187
+ interface SyncoreDevtoolsExternalChangeEvent {
188
+ sourceId: string;
189
+ scope: "database" | "storage" | "all";
190
+ reason: "commit" | "storage-put" | "storage-delete" | "reconcile";
191
+ timestamp: number;
192
+ revision?: string;
193
+ changedScopes?: string[];
194
+ changedTables?: string[];
195
+ storageIds?: string[];
196
+ }
67
197
  declare function createBasePublicId(input: string): string;
68
198
  declare function createPublicId(key: string, keys: Iterable<string>): string;
69
199
  declare function createPublicRuntimeId(runtimeId: string, runtimeIds?: Iterable<string>): string;
70
200
  declare function createPublicTargetId(targetKey: string, targetKeys: Iterable<string>): string;
71
201
  type SyncoreDevtoolsMessage = {
72
202
  type: "hello";
203
+ protocolVersion?: number;
204
+ minSupportedProtocolVersion?: number;
205
+ maxSupportedProtocolVersion?: number;
206
+ runtimeVersion?: string;
73
207
  runtimeId: string;
74
208
  platform: string;
75
209
  appName?: string;
76
210
  origin?: string;
77
211
  sessionLabel?: string;
78
212
  targetKind?: "client" | "project";
213
+ runtimeRole?: "app" | "project-target";
79
214
  storageProtocol?: string;
80
215
  databaseLabel?: string;
216
+ dataSourceAlias?: string;
81
217
  storageIdentity?: string;
218
+ capabilities?: SyncoreDevtoolsCapabilities;
82
219
  } | {
83
220
  type: "event";
84
221
  event: SyncoreDevtoolsEvent;
@@ -105,6 +242,11 @@ type SyncoreDevtoolsMessage = {
105
242
  subscriptionId: string;
106
243
  runtimeId: string;
107
244
  error: string;
245
+ } | {
246
+ type: "external.change";
247
+ runtimeId: string;
248
+ storageIdentity: string;
249
+ event: SyncoreDevtoolsExternalChangeEvent;
108
250
  };
109
251
  interface SyncoreDevtoolsCommand {
110
252
  type: "command";
@@ -144,6 +286,15 @@ type SyncoreDevtoolsCommandPayload = {
144
286
  kind: "data.delete";
145
287
  table: string;
146
288
  id: string;
289
+ } | {
290
+ kind: "data.export";
291
+ tables?: string[];
292
+ } | {
293
+ kind: "data.referenceOptions";
294
+ table: string;
295
+ search?: string;
296
+ limit?: number;
297
+ offset?: number;
147
298
  } | {
148
299
  kind: "sql.read";
149
300
  query: string;
@@ -156,9 +307,9 @@ type SyncoreDevtoolsCommandPayload = {
156
307
  } | {
157
308
  kind: "scheduler.update";
158
309
  jobId: string;
159
- schedule: SchedulerRecurringSchedule;
310
+ schedule?: SchedulerRecurringSchedule;
160
311
  args: Record<string, unknown>;
161
- misfirePolicy: SchedulerMisfirePolicy;
312
+ misfirePolicy?: SchedulerMisfirePolicy;
162
313
  runAt?: number;
163
314
  };
164
315
  type SyncoreDevtoolsSubscriptionPayload = {
@@ -201,6 +352,22 @@ type SyncoreDevtoolsCommandResultPayload = {
201
352
  success: boolean;
202
353
  id?: string;
203
354
  error?: string;
355
+ } | {
356
+ kind: "data.export.result";
357
+ tables: Array<{
358
+ name: string;
359
+ rows: Record<string, unknown>[];
360
+ totalCount: number;
361
+ }>;
362
+ error?: string;
363
+ } | {
364
+ kind: "data.referenceOptions.result";
365
+ table: string;
366
+ rows: Record<string, unknown>[];
367
+ totalCount: number;
368
+ offset: number;
369
+ hasMore: boolean;
370
+ error?: string;
204
371
  } | {
205
372
  kind: "sql.read.result";
206
373
  columns: string[];
@@ -259,7 +426,15 @@ type SyncoreDevtoolsSubscriptionResultPayload = {
259
426
  interface FunctionDefinition {
260
427
  name: string;
261
428
  type: "query" | "mutation" | "action";
262
- file: string;
429
+ file?: string;
430
+ modulePath?: string;
431
+ namespace?: string;
432
+ metadataAvailable?: boolean;
433
+ owner?: "root" | "component";
434
+ componentPath?: string;
435
+ componentName?: string;
436
+ visibility?: "public" | "internal";
437
+ localName?: string;
263
438
  /** Argument validator schema (JSON Schema-like), if available */
264
439
  args?: Record<string, unknown>;
265
440
  /** Return validator schema, if available */
@@ -267,6 +442,10 @@ interface FunctionDefinition {
267
442
  }
268
443
  interface TableSchema {
269
444
  name: string;
445
+ displayName?: string;
446
+ owner?: "root" | "component";
447
+ componentPath?: string;
448
+ componentName?: string;
270
449
  fields: TableField[];
271
450
  indexes: TableIndex[];
272
451
  documentCount: number;
@@ -275,6 +454,7 @@ interface TableField {
275
454
  name: string;
276
455
  type: string;
277
456
  optional: boolean;
457
+ referenceTable?: string;
278
458
  }
279
459
  interface TableIndex {
280
460
  name: string;
@@ -284,6 +464,9 @@ interface TableIndex {
284
464
  interface SchedulerJob {
285
465
  id: string;
286
466
  functionName: string;
467
+ owner?: "root" | "component";
468
+ componentPath?: string;
469
+ componentName?: string;
287
470
  args: Record<string, unknown>;
288
471
  scheduledAt: number;
289
472
  runAt: number;
@@ -333,5 +516,5 @@ type SchedulerMisfirePolicy = {
333
516
  windowMs: number;
334
517
  };
335
518
  //#endregion
336
- export { DataFilter, FunctionDefinition, SchedulerJob, SchedulerMisfirePolicy, SchedulerRecurringDailySchedule, SchedulerRecurringIntervalSchedule, SchedulerRecurringSchedule, SchedulerRecurringWeeklySchedule, SyncoreActiveQueryInfo, SyncoreDevtoolsClientMessage, SyncoreDevtoolsCommand, SyncoreDevtoolsCommandPayload, SyncoreDevtoolsCommandResultPayload, SyncoreDevtoolsEvent, SyncoreDevtoolsEventOrigin, SyncoreDevtoolsMessage, SyncoreDevtoolsSubscribe, SyncoreDevtoolsSubscriptionPayload, SyncoreDevtoolsSubscriptionResultPayload, SyncoreDevtoolsUnsubscribe, SyncoreRuntimeSummary, TableField, TableIndex, TableSchema, createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId };
519
+ export { DataFilter, DevtoolsPreview, DocumentChangePreview, ExecutionTrace, FunctionDefinition, InvalidationCause, SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_PROTOCOL_VERSION, SchedulerJob, SchedulerMisfirePolicy, SchedulerRecurringDailySchedule, SchedulerRecurringIntervalSchedule, SchedulerRecurringSchedule, SchedulerRecurringWeeklySchedule, SyncoreActiveQueryInfo, SyncoreDevtoolsCapabilities, SyncoreDevtoolsClientMessage, SyncoreDevtoolsCommand, SyncoreDevtoolsCommandPayload, SyncoreDevtoolsCommandResultPayload, SyncoreDevtoolsEvent, SyncoreDevtoolsEventOrigin, SyncoreDevtoolsExternalChangeEvent, SyncoreDevtoolsMessage, SyncoreDevtoolsSubscribe, SyncoreDevtoolsSubscriptionPayload, SyncoreDevtoolsSubscriptionResultPayload, SyncoreDevtoolsUnsubscribe, SyncoreRuntimeSummary, TableField, TableIndex, TableSchema, VersionHandshake, createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId, isCompatibleVersionHandshake };
337
520
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";KAAY,0BAAA;AAAA,cAEC,iCAAA;AAAA,cACA,+CAAA;AAAA,cACA,+CAAA;AAAA,UAEI,gBAAA;EACf,eAAA;EACA,2BAAA;EACA,2BAAA;EACA,cAAA;AAAA;AAAA,iBAGc,4BAAA,CACd,SAAA,EAAW,IAAI,CACb,gBAAA;AAAA,KAcC,wBAAA;EACH,SAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA,GAAS,0BAA0B;AAAA;AAAA,KAGzB,eAAA;EAEN,IAAA;EACA,KAAA;EACA,SAAA;EACA,IAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGW,qBAAA;EACf,KAAA;EACA,EAAA;EACA,SAAA;EACA,MAAA;EACA,aAAA,GAAgB,eAAA;EAChB,YAAA,GAAe,eAAe;AAAA;AAAA,UAGf,iBAAA;EACf,WAAA;EACA,MAAA;EACA,aAAA;EACA,aAAA;AAAA;AAAA,UAGe,cAAA;EACf,WAAA;EACA,iBAAA;EACA,IAAA;EACA,YAAA;EACA,WAAA,GAAc,eAAA;EACd,aAAA,GAAgB,eAAA;EAChB,KAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,uBAAA,GAA0B,qBAAA;EAC1B,mBAAA;EACA,cAAA;AAAA;AAAA,KAGU,oBAAA,IACP,wBAAA;EACC,IAAA;EACA,QAAA;AAAA,MAED,wBAAA;EACC,IAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;EACA,WAAA,GAAc,eAAA;EACd,aAAA,GAAgB,eAAA;EAChB,UAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,MAAA;EACA,mBAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,UAAA;EACA,YAAA;EACA,aAAA;EACA,aAAA;EACA,aAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;EACA,WAAA,GAAc,eAAA;EACd,aAAA,GAAgB,eAAA;EAChB,WAAA;EACA,aAAA;EACA,uBAAA,GAA0B,qBAAA;EAC1B,mBAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,QAAA;EACA,YAAA;EACA,aAAA;EACA,aAAA;EACA,UAAA;EACA,KAAA;EACA,WAAA;EACA,iBAAA;EACA,WAAA,GAAc,eAAA;EACd,aAAA,GAAgB,eAAA;EAChB,WAAA;EACA,aAAA;EACA,uBAAA,GAA0B,qBAAA;EAC1B,mBAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA,GAAgB,KAAA;IACd,KAAA;IACA,WAAA;IACA,YAAA;IACA,YAAA;IACA,WAAA,GAAc,eAAA;IACd,aAAA,GAAgB,eAAA;IAChB,KAAA;IACA,UAAA;EAAA;AAAA,MAGH,wBAAA;EACC,IAAA;EACA,SAAA;EACA,aAAA;EACA,SAAA;AAAA,MAED,wBAAA;EACC,IAAA;EACA,KAAA;EACA,OAAA;AAAA;AAAA,UAGW,sBAAA;EACf,EAAA;EACA,YAAA;EACA,IAAA,GAAO,MAAM;EACb,SAAA;EACA,KAAA;EACA,aAAA;EACA,aAAA;EACA,cAAA;EACA,SAAA;AAAA;AAAA,UAGe,qBAAA;EACf,SAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;EACA,YAAA;EACA,UAAA;EACA,WAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA,GAAe,2BAA2B;EAC1C,WAAA;EACA,gBAAA;EACA,gBAAA;AAAA;AAAA,UAGe,2BAAA;EACf,GAAA;IACE,IAAA;IACA,KAAA;IACA,IAAA;IACA,MAAA;EAAA;EAEF,IAAA;IACE,MAAA;IACA,MAAA;IACA,YAAA;EAAA;EAEF,SAAA;IACE,IAAA;IACA,IAAA;EAAA;AAAA;AAAA,UAIa,kCAAA;EACf,QAAA;EACA,KAAA;EACA,MAAA;EACA,SAAA;EACA,QAAA;EACA,aAAA;EACA,aAAA;EACA,UAAA;AAAA;AAAA,iBAGc,kBAAA,CAAmB,KAAa;AAAA,iBAIhC,cAAA,CACd,GAAA,UACA,IAAA,EAAM,QAAQ;AAAA,iBAKA,qBAAA,CACd,SAAA,UACA,UAAA,GAAa,QAAQ;AAAA,iBAOP,oBAAA,CACd,SAAA,UACA,UAAA,EAAY,QAAQ;AAAA,KAsDV,sBAAA;EAEN,IAAA;EACA,eAAA;EACA,2BAAA;EACA,2BAAA;EACA,cAAA;EACA,SAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;EACA,YAAA;EACA,UAAA;EACA,WAAA;EACA,eAAA;EACA,aAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA,GAAe,2BAAA;AAAA;EAEf,IAAA;EAAe,KAAA,EAAO,oBAAA;AAAA;EAEtB,IAAA;EACA,SAAA;EACA,MAAA,EAAQ,oBAAA;AAAA;EAER,IAAA;AAAA;EACA,IAAA;AAAA;EAEA,IAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA,EAAS,mCAAA;AAAA;EAGT,IAAA;EACA,cAAA;EACA,SAAA;EACA,OAAA,EAAS,wCAAA;AAAA;EAGT,IAAA;EACA,cAAA;EACA,SAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,SAAA;EACA,eAAA;EACA,KAAA,EAAO,kCAAA;AAAA;AAAA,UAOI,sBAAA;EACf,IAAA;EACA,SAAA;EACA,eAAA;EACA,OAAA,EAAS,6BAA6B;AAAA;AAAA,UAGvB,wBAAA;EACf,IAAA;EACA,cAAA;EACA,eAAA;EACA,OAAA,EAAS,kCAAkC;AAAA;AAAA,UAG5B,0BAAA;EACf,IAAA;EACA,cAAA;EACA,eAAA;AAAA;AAAA,KAGU,4BAAA;EACN,IAAA;AAAA,IACF,sBAAA,GACA,wBAAA,GACA,0BAAA;AAAA,KAEQ,6BAAA;EAGN,IAAA;EACA,YAAA;EACA,YAAA;EACA,IAAA,EAAM,MAAA;AAAA;EAEN,IAAA;EAAqB,KAAA;EAAe,QAAA,EAAU,MAAA;AAAA;EAE9C,IAAA;EACA,KAAA;EACA,EAAA;EACA,MAAA,EAAQ,MAAA;AAAA;EAER,IAAA;EAAqB,KAAA;EAAe,EAAA;AAAA;EACpC,IAAA;EAAqB,MAAA;AAAA;EAErB,IAAA;EACA,KAAA;EACA,MAAA;EACA,KAAA;EACA,MAAA;AAAA;EAGA,IAAA;EAAkB,KAAA;AAAA;EAClB,IAAA;EAAmB,KAAA;AAAA;EAEnB,IAAA;EAA0B,KAAA;AAAA;EAE1B,IAAA;EACA,KAAA;EACA,QAAA,GAAW,0BAAA;EACX,IAAA,EAAM,MAAA;EACN,aAAA,GAAgB,sBAAA;EAChB,KAAA;AAAA;AAAA,KAGM,kCAAA;EACN,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EAEA,IAAA;EACA,YAAA;EACA,YAAA;EACA,IAAA,EAAM,MAAA;AAAA;EAGN,IAAA;EACA,KAAA;EACA,OAAA,GAAU,UAAU;EACpB,KAAA;EACA,MAAA;AAAA;EAEA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAAmB,KAAA;AAAA;AAAA,UAER,UAAA;EACf,KAAA;EACA,QAAA;EASA,KAAA;AAAA;AAAA,KAOU,mCAAA;EAEN,IAAA;EACA,MAAA;EACA,KAAA;EACA,UAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,EAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,MAAA,EAAQ,KAAA;IACN,IAAA;IACA,IAAA,EAAM,MAAA;IACN,UAAA;EAAA;EAEF,KAAA;AAAA;EAGA,IAAA;EACA,KAAA;EACA,IAAA,EAAM,MAAA;EACN,UAAA;EACA,MAAA;EACA,OAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,IAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,YAAA;EACA,KAAA;EACA,kBAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,OAAA;EACA,KAAA;EACA,GAAA,GAAM,YAAA;AAAA;EAEN,IAAA;EAAe,OAAA;AAAA;AAAA,KAET,wCAAA;EACN,IAAA;EAAgC,OAAA,EAAS,qBAAA;AAAA;EAEzC,IAAA;EACA,aAAA,EAAe,sBAAA;AAAA;EAGf,IAAA;EACA,MAAA;EACA,KAAA;AAAA;EAEA,IAAA;EAA8B,MAAA,EAAQ,WAAA;AAAA;EAEtC,IAAA;EACA,IAAA,EAAM,MAAA;EACN,UAAA;EACA,MAAA;AAAA;EAEA,IAAA;EAA+B,IAAA,EAAM,YAAA;AAAA;EACrC,IAAA;EAAkC,SAAA,EAAW,kBAAA;AAAA;EAE7C,IAAA;EACA,OAAA;EACA,IAAA;EACA,cAAA;AAAA;AAAA,UAOW,kBAAA;EACf,IAAA;EACA,IAAA;EACA,IAAA;EACA,UAAA;EACA,SAAA;EACA,iBAAA;EACA,KAAA;EACA,aAAA;EACA,aAAA;EACA,UAAA;EACA,SAAA;EApLE;EAsLF,IAAA,GAAO,MAAA;EArLqB;EAuL5B,OAAA,GAAU,MAAM;AAAA;AAAA,UAGD,WAAA;EACf,IAAA;EACA,WAAA;EACA,KAAA;EACA,aAAA;EACA,aAAA;EACA,MAAA,EAAQ,UAAA;EACR,OAAA,EAAS,UAAU;EACnB,aAAA;AAAA;AAAA,UAGe,UAAA;EACf,IAAA;EACA,IAAA;EACA,QAAA;EACA,cAAA;AAAA;AAAA,UAGe,UAAA;EACf,IAAA;EACA,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,YAAA;EACf,EAAA;EACA,YAAA;EACA,KAAA;EACA,aAAA;EACA,aAAA;EACA,IAAA,EAAM,MAAA;EACN,WAAA;EACA,KAAA;EACA,MAAA;EACA,WAAA;EACA,MAAA;EACA,KAAA;EACA,UAAA;EACA,aAAA;EACA,QAAA,GAAW,0BAAA;EACX,aAAA;EACA,aAAA,GAAgB,sBAAA;EAChB,QAAA;EACA,SAAA;EACA,SAAA;EApMI;EAsMJ,YAAA;AAAA;AAAA,UAGe,kCAAA;EACf,IAAA;EACA,OAAA;EACA,OAAA;EACA,KAAA;AAAA;AAAA,UAGe,+BAAA;EACf,IAAA;EACA,IAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,UAGe,gCAAA;EACf,IAAA;EACA,SAAA;EAQA,IAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,KAGU,0BAAA,GACR,kCAAA,GACA,+BAAA,GACA,gCAAA;AAAA,KAEQ,sBAAA;EACN,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAAkB,QAAA;AAAA"}
@@ -1,13 +1,28 @@
1
1
  //#region src/index.ts
2
+ const SYNCORE_DEVTOOLS_PROTOCOL_VERSION = 1;
3
+ const SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION = 1;
4
+ const SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION = 1;
5
+ function isCompatibleVersionHandshake(handshake) {
6
+ return handshake.maxSupportedProtocolVersion >= 1 && handshake.minSupportedProtocolVersion <= 1 && handshake.protocolVersion >= handshake.minSupportedProtocolVersion && handshake.protocolVersion <= handshake.maxSupportedProtocolVersion;
7
+ }
2
8
  function createBasePublicId(input) {
3
9
  return stablePublicId(input, 0);
4
10
  }
5
11
  function createPublicId(key, keys) {
12
+ return createPublicIdWithFormatter(key, keys, stablePublicId);
13
+ }
14
+ function createPublicRuntimeId(runtimeId, runtimeIds) {
15
+ return runtimeIds ? createPublicIdWithFormatter(runtimeId, runtimeIds, stableRuntimePublicId) : stableRuntimePublicId(runtimeId, 0);
16
+ }
17
+ function createPublicTargetId(targetKey, targetKeys) {
18
+ return createPublicId(targetKey, targetKeys);
19
+ }
20
+ function createPublicIdWithFormatter(key, keys, formatPublicId) {
6
21
  const used = /* @__PURE__ */ new Set();
7
22
  for (const existingKey of [...keys].sort()) {
8
23
  let attempt = 0;
9
24
  while (true) {
10
- const candidate = stablePublicId(existingKey, attempt);
25
+ const candidate = formatPublicId(existingKey, attempt);
11
26
  if (existingKey === key && !used.has(candidate)) return candidate;
12
27
  if (!used.has(candidate)) {
13
28
  used.add(candidate);
@@ -16,24 +31,25 @@ function createPublicId(key, keys) {
16
31
  attempt += 1;
17
32
  }
18
33
  }
19
- return createBasePublicId(key);
34
+ return formatPublicId(key, 0);
20
35
  }
21
- function createPublicRuntimeId(runtimeId, runtimeIds) {
22
- return runtimeIds ? createPublicId(runtimeId, runtimeIds) : createBasePublicId(runtimeId);
36
+ function stablePublicId(input, salt) {
37
+ return (stableHash(input, salt) % 1e5).toString().padStart(5, "0");
23
38
  }
24
- function createPublicTargetId(targetKey, targetKeys) {
25
- return createPublicId(targetKey, targetKeys);
39
+ function stableRuntimePublicId(input, salt) {
40
+ const value = stableHash(input, salt);
41
+ return `${String.fromCharCode(65 + value % 26)}${(Math.floor(value / 26) % 1e3).toString().padStart(3, "0")}`;
26
42
  }
27
- function stablePublicId(input, salt) {
43
+ function stableHash(input, salt) {
28
44
  const hashInput = salt === 0 ? input : `${input}#${salt}`;
29
45
  let hash = 2166136261;
30
46
  for (let index = 0; index < hashInput.length; index += 1) {
31
47
  hash ^= hashInput.charCodeAt(index);
32
48
  hash = Math.imul(hash, 16777619);
33
49
  }
34
- return ((hash >>> 0) % 1e5).toString().padStart(5, "0");
50
+ return hash >>> 0;
35
51
  }
36
52
  //#endregion
37
- export { createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId };
53
+ export { SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_PROTOCOL_VERSION, createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId, isCompatibleVersionHandshake };
38
54
 
39
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export type SyncoreDevtoolsEventOrigin = \"runtime\" | \"dashboard\";\n\ntype SyncoreDevtoolsEventBase = {\n runtimeId: string;\n timestamp: number;\n origin?: SyncoreDevtoolsEventOrigin;\n};\n\nexport type SyncoreDevtoolsEvent =\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.connected\";\n platform: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.disconnected\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.executed\";\n queryId: string;\n functionName: string;\n dependencies: string[];\n durationMs: number;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.invalidated\";\n queryId: string;\n reason: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"mutation.committed\";\n mutationId: string;\n functionName: string;\n changedTables: string[];\n durationMs: number;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"action.completed\";\n actionId: string;\n functionName: string;\n durationMs: number;\n error?: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"scheduler.tick\";\n executedJobIds: string[];\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"storage.updated\";\n storageId: string;\n operation: \"put\" | \"delete\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"log\";\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n });\n\nexport interface SyncoreActiveQueryInfo {\n id: string;\n functionName: string;\n dependencyKeys: string[];\n lastRunAt: number;\n}\n\nexport interface SyncoreRuntimeSummary {\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n storageProtocol?: string;\n databaseLabel?: string;\n storageIdentity?: string;\n connectedAt: number;\n activeQueryCount: number;\n recentEventCount: number;\n}\n\nexport function createBasePublicId(input: string): string {\n return stablePublicId(input, 0);\n}\n\nexport function createPublicId(\n key: string,\n keys: Iterable<string>\n): string {\n const used = new Set<string>();\n for (const existingKey of [...keys].sort()) {\n let attempt = 0;\n while (true) {\n const candidate = stablePublicId(existingKey, attempt);\n if (existingKey === key && !used.has(candidate)) {\n return candidate;\n }\n if (!used.has(candidate)) {\n used.add(candidate);\n break;\n }\n attempt += 1;\n }\n }\n return createBasePublicId(key);\n}\n\nexport function createPublicRuntimeId(\n runtimeId: string,\n runtimeIds?: Iterable<string>\n): string {\n return runtimeIds ? createPublicId(runtimeId, runtimeIds) : createBasePublicId(runtimeId);\n}\n\nexport function createPublicTargetId(\n targetKey: string,\n targetKeys: Iterable<string>\n): string {\n return createPublicId(targetKey, targetKeys);\n}\n\nfunction stablePublicId(input: string, salt: number): string {\n const hashInput = salt === 0 ? input : `${input}#${salt}`;\n let hash = 2166136261;\n for (let index = 0; index < hashInput.length; index += 1) {\n hash ^= hashInput.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n const value = (hash >>> 0) % 100000;\n return value.toString().padStart(5, \"0\");\n}\n\n/* ------------------------------------------------------------------ */\n/* Runtime → Dashboard messages */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsMessage =\n | {\n type: \"hello\";\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n storageProtocol?: string;\n databaseLabel?: string;\n storageIdentity?: string;\n }\n | { type: \"event\"; event: SyncoreDevtoolsEvent }\n | {\n type: \"event.batch\";\n runtimeId: string;\n events: SyncoreDevtoolsEvent[];\n }\n | { type: \"ping\" }\n | { type: \"pong\" }\n | {\n type: \"command.result\";\n commandId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsCommandResultPayload;\n }\n | {\n type: \"subscription.data\";\n subscriptionId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsSubscriptionResultPayload;\n }\n | {\n type: \"subscription.error\";\n subscriptionId: string;\n runtimeId: string;\n error: string;\n };\n\n/* ------------------------------------------------------------------ */\n/* Dashboard → Runtime requests */\n/* ------------------------------------------------------------------ */\n\nexport interface SyncoreDevtoolsCommand {\n type: \"command\";\n commandId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsCommandPayload;\n}\n\nexport interface SyncoreDevtoolsSubscribe {\n type: \"subscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsSubscriptionPayload;\n}\n\nexport interface SyncoreDevtoolsUnsubscribe {\n type: \"unsubscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n}\n\nexport type SyncoreDevtoolsClientMessage =\n | { type: \"ping\" }\n | SyncoreDevtoolsCommand\n | SyncoreDevtoolsSubscribe\n | SyncoreDevtoolsUnsubscribe;\n\nexport type SyncoreDevtoolsCommandPayload =\n /* Functions */\n | {\n kind: \"fn.run\";\n functionName: string;\n functionType: \"query\" | \"mutation\" | \"action\";\n args: Record<string, unknown>;\n }\n | { kind: \"data.insert\"; table: string; document: Record<string, unknown> }\n | {\n kind: \"data.patch\";\n table: string;\n id: string;\n fields: Record<string, unknown>;\n }\n | { kind: \"data.delete\"; table: string; id: string }\n /* SQL */\n | { kind: \"sql.read\"; query: string }\n | { kind: \"sql.write\"; query: string }\n /* Scheduler */\n | { kind: \"scheduler.cancel\"; jobId: string }\n | {\n kind: \"scheduler.update\";\n jobId: string;\n schedule: SchedulerRecurringSchedule;\n args: Record<string, unknown>;\n misfirePolicy: SchedulerMisfirePolicy;\n runAt?: number;\n };\n\nexport type SyncoreDevtoolsSubscriptionPayload =\n | { kind: \"runtime.summary\" }\n | { kind: \"runtime.activeQueries\" }\n | { kind: \"schema.tables\" }\n | {\n kind: \"fn.watch\";\n functionName: string;\n functionType: \"query\";\n args: Record<string, unknown>;\n }\n | {\n kind: \"data.table\";\n table: string;\n filters?: DataFilter[];\n limit?: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs\" }\n | { kind: \"functions.catalog\" }\n | { kind: \"sql.watch\"; query: string };\n\nexport interface DataFilter {\n field: string;\n operator:\n | \"eq\"\n | \"neq\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"contains\"\n | \"startsWith\";\n value: unknown;\n}\n\n/* ------------------------------------------------------------------ */\n/* Response payloads */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsCommandResultPayload =\n | {\n kind: \"fn.run.result\";\n result?: unknown;\n error?: string;\n durationMs: number;\n }\n | {\n kind: \"data.mutate.result\";\n success: boolean;\n id?: string;\n error?: string;\n }\n | {\n kind: \"sql.read.result\";\n columns: string[];\n rows: unknown[][];\n error?: string;\n }\n | {\n kind: \"sql.write.result\";\n rowsAffected: number;\n error?: string;\n invalidationScopes: string[];\n }\n | {\n kind: \"scheduler.cancel.result\";\n success: boolean;\n cancelled: boolean;\n error?: string;\n }\n | {\n kind: \"scheduler.update.result\";\n success: boolean;\n updated: boolean;\n error?: string;\n job?: SchedulerJob;\n }\n | { kind: \"error\"; message: string };\n\nexport type SyncoreDevtoolsSubscriptionResultPayload =\n | { kind: \"runtime.summary.result\"; summary: SyncoreRuntimeSummary }\n | {\n kind: \"runtime.activeQueries.result\";\n activeQueries: SyncoreActiveQueryInfo[];\n }\n | {\n kind: \"fn.watch.result\";\n result?: unknown;\n error?: string;\n }\n | { kind: \"schema.tables.result\"; tables: TableSchema[] }\n | {\n kind: \"data.table.result\";\n rows: Record<string, unknown>[];\n totalCount: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs.result\"; jobs: SchedulerJob[] }\n | { kind: \"functions.catalog.result\"; functions: FunctionDefinition[] }\n | {\n kind: \"sql.watch.result\";\n columns: string[];\n rows: unknown[][];\n observedTables: string[];\n };\n\n/* ------------------------------------------------------------------ */\n/* Shared data shapes */\n/* ------------------------------------------------------------------ */\n\nexport interface FunctionDefinition {\n name: string;\n type: \"query\" | \"mutation\" | \"action\";\n file: string;\n /** Argument validator schema (JSON Schema-like), if available */\n args?: Record<string, unknown>;\n /** Return validator schema, if available */\n returns?: Record<string, unknown>;\n}\n\nexport interface TableSchema {\n name: string;\n fields: TableField[];\n indexes: TableIndex[];\n documentCount: number;\n}\n\nexport interface TableField {\n name: string;\n type: string;\n optional: boolean;\n}\n\nexport interface TableIndex {\n name: string;\n fields: string[];\n unique: boolean;\n}\n\nexport interface SchedulerJob {\n id: string;\n functionName: string;\n args: Record<string, unknown>;\n scheduledAt: number;\n runAt: number;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n completedAt?: number;\n result?: unknown;\n error?: string;\n durationMs?: number;\n recurringName?: string;\n schedule?: SchedulerRecurringSchedule;\n scheduleLabel?: string;\n misfirePolicy?: SchedulerMisfirePolicy;\n timezone?: string;\n lastRunAt?: number;\n updatedAt?: number;\n /** Compatibility label for older UI code. */\n cronSchedule?: string;\n}\n\nexport interface SchedulerRecurringIntervalSchedule {\n type: \"interval\";\n seconds?: number;\n minutes?: number;\n hours?: number;\n}\n\nexport interface SchedulerRecurringDailySchedule {\n type: \"daily\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport interface SchedulerRecurringWeeklySchedule {\n type: \"weekly\";\n dayOfWeek:\n | \"sunday\"\n | \"monday\"\n | \"tuesday\"\n | \"wednesday\"\n | \"thursday\"\n | \"friday\"\n | \"saturday\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport type SchedulerRecurringSchedule =\n | SchedulerRecurringIntervalSchedule\n | SchedulerRecurringDailySchedule\n | SchedulerRecurringWeeklySchedule;\n\nexport type SchedulerMisfirePolicy =\n | { type: \"catch_up\" }\n | { type: \"skip\" }\n | { type: \"run_once_if_missed\" }\n | { type: \"windowed\"; windowMs: number };\n"],"mappings":";AA+EA,SAAgB,mBAAmB,OAAuB;AACxD,QAAO,eAAe,OAAO,EAAE;;AAGjC,SAAgB,eACd,KACA,MACQ;CACR,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAK,MAAM,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;EAC1C,IAAI,UAAU;AACd,SAAO,MAAM;GACX,MAAM,YAAY,eAAe,aAAa,QAAQ;AACtD,OAAI,gBAAgB,OAAO,CAAC,KAAK,IAAI,UAAU,CAC7C,QAAO;AAET,OAAI,CAAC,KAAK,IAAI,UAAU,EAAE;AACxB,SAAK,IAAI,UAAU;AACnB;;AAEF,cAAW;;;AAGf,QAAO,mBAAmB,IAAI;;AAGhC,SAAgB,sBACd,WACA,YACQ;AACR,QAAO,aAAa,eAAe,WAAW,WAAW,GAAG,mBAAmB,UAAU;;AAG3F,SAAgB,qBACd,WACA,YACQ;AACR,QAAO,eAAe,WAAW,WAAW;;AAG9C,SAAS,eAAe,OAAe,MAAsB;CAC3D,MAAM,YAAY,SAAS,IAAI,QAAQ,GAAG,MAAM,GAAG;CACnD,IAAI,OAAO;AACX,MAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS,GAAG;AACxD,UAAQ,UAAU,WAAW,MAAM;AACnC,SAAO,KAAK,KAAK,MAAM,SAAS;;AAGlC,UADe,SAAS,KAAK,KAChB,UAAU,CAAC,SAAS,GAAG,IAAI"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export type SyncoreDevtoolsEventOrigin = \"runtime\" | \"dashboard\";\n\nexport const SYNCORE_DEVTOOLS_PROTOCOL_VERSION = 1;\nexport const SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION = 1;\nexport const SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION = 1;\n\nexport interface VersionHandshake {\n protocolVersion: number;\n minSupportedProtocolVersion: number;\n maxSupportedProtocolVersion: number;\n runtimeVersion?: string;\n}\n\nexport function isCompatibleVersionHandshake(\n handshake: Pick<\n VersionHandshake,\n \"protocolVersion\" | \"minSupportedProtocolVersion\" | \"maxSupportedProtocolVersion\"\n >\n): boolean {\n return (\n handshake.maxSupportedProtocolVersion >=\n SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION &&\n handshake.minSupportedProtocolVersion <=\n SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION &&\n handshake.protocolVersion >= handshake.minSupportedProtocolVersion &&\n handshake.protocolVersion <= handshake.maxSupportedProtocolVersion\n );\n}\n\ntype SyncoreDevtoolsEventBase = {\n runtimeId: string;\n timestamp: number;\n sequence?: number;\n origin?: SyncoreDevtoolsEventOrigin;\n};\n\nexport type DevtoolsPreview =\n | {\n kind: \"value\";\n value: unknown;\n truncated?: boolean;\n note?: string;\n }\n | {\n kind: \"error\";\n message: string;\n truncated?: boolean;\n };\n\nexport interface DocumentChangePreview {\n table: string;\n id: string;\n operation: \"insert\" | \"patch\" | \"replace\" | \"delete\";\n fields?: string[];\n beforePreview?: DevtoolsPreview;\n afterPreview?: DevtoolsPreview;\n}\n\nexport interface InvalidationCause {\n executionId?: string;\n reason: string;\n changedScopes: string[];\n matchedScopes: string[];\n}\n\nexport interface ExecutionTrace {\n executionId: string;\n parentExecutionId?: string;\n kind: \"query\" | \"mutation\" | \"action\" | \"scheduler\" | \"dashboard\";\n functionName?: string;\n argsPreview?: DevtoolsPreview;\n resultPreview?: DevtoolsPreview;\n error?: string;\n readScopes?: string[];\n writeScopes?: string[];\n changedScopes?: string[];\n changedDocumentsPreview?: DocumentChangePreview[];\n invalidatedQueryIds?: string[];\n schedulerJobId?: string;\n}\n\nexport type SyncoreDevtoolsEvent =\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.connected\";\n platform: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"runtime.disconnected\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.executed\";\n queryId: string;\n functionName: string;\n componentPath?: string;\n componentName?: string;\n dependencies: string[];\n durationMs: number;\n executionId?: string;\n parentExecutionId?: string;\n argsPreview?: DevtoolsPreview;\n resultPreview?: DevtoolsPreview;\n readScopes?: string[];\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"query.invalidated\";\n queryId: string;\n componentPath?: string;\n componentName?: string;\n reason: string;\n causedByExecutionId?: string;\n changedScopes?: string[];\n matchedScopes?: string[];\n rerunExecutionId?: string;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"mutation.committed\";\n mutationId: string;\n functionName: string;\n componentPath?: string;\n componentName?: string;\n changedTables: string[];\n durationMs: number;\n executionId?: string;\n parentExecutionId?: string;\n argsPreview?: DevtoolsPreview;\n resultPreview?: DevtoolsPreview;\n writeScopes?: string[];\n changedScopes?: string[];\n changedDocumentsPreview?: DocumentChangePreview[];\n invalidatedQueryIds?: string[];\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"action.completed\";\n actionId: string;\n functionName: string;\n componentPath?: string;\n componentName?: string;\n durationMs: number;\n error?: string;\n executionId?: string;\n parentExecutionId?: string;\n argsPreview?: DevtoolsPreview;\n resultPreview?: DevtoolsPreview;\n writeScopes?: string[];\n changedScopes?: string[];\n changedDocumentsPreview?: DocumentChangePreview[];\n invalidatedQueryIds?: string[];\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"scheduler.tick\";\n executedJobIds: string[];\n executionId?: string;\n jobExecutions?: Array<{\n jobId: string;\n executionId?: string;\n functionName: string;\n functionType: \"mutation\" | \"action\";\n argsPreview?: DevtoolsPreview;\n resultPreview?: DevtoolsPreview;\n error?: string;\n durationMs?: number;\n }>;\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"storage.updated\";\n storageId: string;\n componentPath?: string;\n operation: \"put\" | \"delete\";\n })\n | (SyncoreDevtoolsEventBase & {\n type: \"log\";\n level: \"info\" | \"warn\" | \"error\";\n message: string;\n });\n\nexport interface SyncoreActiveQueryInfo {\n id: string;\n functionName: string;\n args?: Record<string, unknown>;\n consumers?: number;\n owner?: \"root\" | \"component\";\n componentPath?: string;\n componentName?: string;\n dependencyKeys: string[];\n lastRunAt: number;\n}\n\nexport interface SyncoreRuntimeSummary {\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n runtimeRole?: \"app\" | \"project-target\";\n storageProtocol?: string;\n databaseLabel?: string;\n dataSourceAlias?: string;\n storageIdentity?: string;\n capabilities?: SyncoreDevtoolsCapabilities;\n connectedAt: number;\n activeQueryCount: number;\n recentEventCount: number;\n}\n\nexport interface SyncoreDevtoolsCapabilities {\n sql?: {\n read: boolean;\n write: boolean;\n live: boolean;\n reason?: string;\n };\n data?: {\n browse: boolean;\n mutate: boolean;\n importExport: boolean;\n };\n scheduler?: {\n read: boolean;\n edit: boolean;\n };\n}\n\nexport interface SyncoreDevtoolsExternalChangeEvent {\n sourceId: string;\n scope: \"database\" | \"storage\" | \"all\";\n reason: \"commit\" | \"storage-put\" | \"storage-delete\" | \"reconcile\";\n timestamp: number;\n revision?: string;\n changedScopes?: string[];\n changedTables?: string[];\n storageIds?: string[];\n}\n\nexport function createBasePublicId(input: string): string {\n return stablePublicId(input, 0);\n}\n\nexport function createPublicId(\n key: string,\n keys: Iterable<string>\n): string {\n return createPublicIdWithFormatter(key, keys, stablePublicId);\n}\n\nexport function createPublicRuntimeId(\n runtimeId: string,\n runtimeIds?: Iterable<string>\n): string {\n return runtimeIds\n ? createPublicIdWithFormatter(runtimeId, runtimeIds, stableRuntimePublicId)\n : stableRuntimePublicId(runtimeId, 0);\n}\n\nexport function createPublicTargetId(\n targetKey: string,\n targetKeys: Iterable<string>\n): string {\n return createPublicId(targetKey, targetKeys);\n}\n\nfunction createPublicIdWithFormatter(\n key: string,\n keys: Iterable<string>,\n formatPublicId: (input: string, salt: number) => string\n): string {\n const used = new Set<string>();\n for (const existingKey of [...keys].sort()) {\n let attempt = 0;\n while (true) {\n const candidate = formatPublicId(existingKey, attempt);\n if (existingKey === key && !used.has(candidate)) {\n return candidate;\n }\n if (!used.has(candidate)) {\n used.add(candidate);\n break;\n }\n attempt += 1;\n }\n }\n return formatPublicId(key, 0);\n}\n\nfunction stablePublicId(input: string, salt: number): string {\n const value = stableHash(input, salt) % 100000;\n return value.toString().padStart(5, \"0\");\n}\n\nfunction stableRuntimePublicId(input: string, salt: number): string {\n const value = stableHash(input, salt);\n const letter = String.fromCharCode(65 + (value % 26));\n const digits = Math.floor(value / 26) % 1000;\n return `${letter}${digits.toString().padStart(3, \"0\")}`;\n}\n\nfunction stableHash(input: string, salt: number): number {\n const hashInput = salt === 0 ? input : `${input}#${salt}`;\n let hash = 2166136261;\n for (let index = 0; index < hashInput.length; index += 1) {\n hash ^= hashInput.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0;\n}\n\n/* ------------------------------------------------------------------ */\n/* Runtime → Dashboard messages */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsMessage =\n | {\n type: \"hello\";\n protocolVersion?: number;\n minSupportedProtocolVersion?: number;\n maxSupportedProtocolVersion?: number;\n runtimeVersion?: string;\n runtimeId: string;\n platform: string;\n appName?: string;\n origin?: string;\n sessionLabel?: string;\n targetKind?: \"client\" | \"project\";\n runtimeRole?: \"app\" | \"project-target\";\n storageProtocol?: string;\n databaseLabel?: string;\n dataSourceAlias?: string;\n storageIdentity?: string;\n capabilities?: SyncoreDevtoolsCapabilities;\n }\n | { type: \"event\"; event: SyncoreDevtoolsEvent }\n | {\n type: \"event.batch\";\n runtimeId: string;\n events: SyncoreDevtoolsEvent[];\n }\n | { type: \"ping\" }\n | { type: \"pong\" }\n | {\n type: \"command.result\";\n commandId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsCommandResultPayload;\n }\n | {\n type: \"subscription.data\";\n subscriptionId: string;\n runtimeId: string;\n payload: SyncoreDevtoolsSubscriptionResultPayload;\n }\n | {\n type: \"subscription.error\";\n subscriptionId: string;\n runtimeId: string;\n error: string;\n }\n | {\n type: \"external.change\";\n runtimeId: string;\n storageIdentity: string;\n event: SyncoreDevtoolsExternalChangeEvent;\n };\n\n/* ------------------------------------------------------------------ */\n/* Dashboard → Runtime requests */\n/* ------------------------------------------------------------------ */\n\nexport interface SyncoreDevtoolsCommand {\n type: \"command\";\n commandId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsCommandPayload;\n}\n\nexport interface SyncoreDevtoolsSubscribe {\n type: \"subscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n payload: SyncoreDevtoolsSubscriptionPayload;\n}\n\nexport interface SyncoreDevtoolsUnsubscribe {\n type: \"unsubscribe\";\n subscriptionId: string;\n targetRuntimeId: string;\n}\n\nexport type SyncoreDevtoolsClientMessage =\n | { type: \"ping\" }\n | SyncoreDevtoolsCommand\n | SyncoreDevtoolsSubscribe\n | SyncoreDevtoolsUnsubscribe;\n\nexport type SyncoreDevtoolsCommandPayload =\n /* Functions */\n | {\n kind: \"fn.run\";\n functionName: string;\n functionType: \"query\" | \"mutation\" | \"action\";\n args: Record<string, unknown>;\n }\n | { kind: \"data.insert\"; table: string; document: Record<string, unknown> }\n | {\n kind: \"data.patch\";\n table: string;\n id: string;\n fields: Record<string, unknown>;\n }\n | { kind: \"data.delete\"; table: string; id: string }\n | { kind: \"data.export\"; tables?: string[] }\n | {\n kind: \"data.referenceOptions\";\n table: string;\n search?: string;\n limit?: number;\n offset?: number;\n }\n /* SQL */\n | { kind: \"sql.read\"; query: string }\n | { kind: \"sql.write\"; query: string }\n /* Scheduler */\n | { kind: \"scheduler.cancel\"; jobId: string }\n | {\n kind: \"scheduler.update\";\n jobId: string;\n schedule?: SchedulerRecurringSchedule;\n args: Record<string, unknown>;\n misfirePolicy?: SchedulerMisfirePolicy;\n runAt?: number;\n };\n\nexport type SyncoreDevtoolsSubscriptionPayload =\n | { kind: \"runtime.summary\" }\n | { kind: \"runtime.activeQueries\" }\n | { kind: \"schema.tables\" }\n | {\n kind: \"fn.watch\";\n functionName: string;\n functionType: \"query\";\n args: Record<string, unknown>;\n }\n | {\n kind: \"data.table\";\n table: string;\n filters?: DataFilter[];\n limit?: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs\" }\n | { kind: \"functions.catalog\" }\n | { kind: \"sql.watch\"; query: string };\n\nexport interface DataFilter {\n field: string;\n operator:\n | \"eq\"\n | \"neq\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"contains\"\n | \"startsWith\";\n value: unknown;\n}\n\n/* ------------------------------------------------------------------ */\n/* Response payloads */\n/* ------------------------------------------------------------------ */\n\nexport type SyncoreDevtoolsCommandResultPayload =\n | {\n kind: \"fn.run.result\";\n result?: unknown;\n error?: string;\n durationMs: number;\n }\n | {\n kind: \"data.mutate.result\";\n success: boolean;\n id?: string;\n error?: string;\n }\n | {\n kind: \"data.export.result\";\n tables: Array<{\n name: string;\n rows: Record<string, unknown>[];\n totalCount: number;\n }>;\n error?: string;\n }\n | {\n kind: \"data.referenceOptions.result\";\n table: string;\n rows: Record<string, unknown>[];\n totalCount: number;\n offset: number;\n hasMore: boolean;\n error?: string;\n }\n | {\n kind: \"sql.read.result\";\n columns: string[];\n rows: unknown[][];\n error?: string;\n }\n | {\n kind: \"sql.write.result\";\n rowsAffected: number;\n error?: string;\n invalidationScopes: string[];\n }\n | {\n kind: \"scheduler.cancel.result\";\n success: boolean;\n cancelled: boolean;\n error?: string;\n }\n | {\n kind: \"scheduler.update.result\";\n success: boolean;\n updated: boolean;\n error?: string;\n job?: SchedulerJob;\n }\n | { kind: \"error\"; message: string };\n\nexport type SyncoreDevtoolsSubscriptionResultPayload =\n | { kind: \"runtime.summary.result\"; summary: SyncoreRuntimeSummary }\n | {\n kind: \"runtime.activeQueries.result\";\n activeQueries: SyncoreActiveQueryInfo[];\n }\n | {\n kind: \"fn.watch.result\";\n result?: unknown;\n error?: string;\n }\n | { kind: \"schema.tables.result\"; tables: TableSchema[] }\n | {\n kind: \"data.table.result\";\n rows: Record<string, unknown>[];\n totalCount: number;\n cursor?: string;\n }\n | { kind: \"scheduler.jobs.result\"; jobs: SchedulerJob[] }\n | { kind: \"functions.catalog.result\"; functions: FunctionDefinition[] }\n | {\n kind: \"sql.watch.result\";\n columns: string[];\n rows: unknown[][];\n observedTables: string[];\n };\n\n/* ------------------------------------------------------------------ */\n/* Shared data shapes */\n/* ------------------------------------------------------------------ */\n\nexport interface FunctionDefinition {\n name: string;\n type: \"query\" | \"mutation\" | \"action\";\n file?: string;\n modulePath?: string;\n namespace?: string;\n metadataAvailable?: boolean;\n owner?: \"root\" | \"component\";\n componentPath?: string;\n componentName?: string;\n visibility?: \"public\" | \"internal\";\n localName?: string;\n /** Argument validator schema (JSON Schema-like), if available */\n args?: Record<string, unknown>;\n /** Return validator schema, if available */\n returns?: Record<string, unknown>;\n}\n\nexport interface TableSchema {\n name: string;\n displayName?: string;\n owner?: \"root\" | \"component\";\n componentPath?: string;\n componentName?: string;\n fields: TableField[];\n indexes: TableIndex[];\n documentCount: number;\n}\n\nexport interface TableField {\n name: string;\n type: string;\n optional: boolean;\n referenceTable?: string;\n}\n\nexport interface TableIndex {\n name: string;\n fields: string[];\n unique: boolean;\n}\n\nexport interface SchedulerJob {\n id: string;\n functionName: string;\n owner?: \"root\" | \"component\";\n componentPath?: string;\n componentName?: string;\n args: Record<string, unknown>;\n scheduledAt: number;\n runAt: number;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n completedAt?: number;\n result?: unknown;\n error?: string;\n durationMs?: number;\n recurringName?: string;\n schedule?: SchedulerRecurringSchedule;\n scheduleLabel?: string;\n misfirePolicy?: SchedulerMisfirePolicy;\n timezone?: string;\n lastRunAt?: number;\n updatedAt?: number;\n /** Compatibility label for older UI code. */\n cronSchedule?: string;\n}\n\nexport interface SchedulerRecurringIntervalSchedule {\n type: \"interval\";\n seconds?: number;\n minutes?: number;\n hours?: number;\n}\n\nexport interface SchedulerRecurringDailySchedule {\n type: \"daily\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport interface SchedulerRecurringWeeklySchedule {\n type: \"weekly\";\n dayOfWeek:\n | \"sunday\"\n | \"monday\"\n | \"tuesday\"\n | \"wednesday\"\n | \"thursday\"\n | \"friday\"\n | \"saturday\";\n hour: number;\n minute: number;\n timezone?: string;\n}\n\nexport type SchedulerRecurringSchedule =\n | SchedulerRecurringIntervalSchedule\n | SchedulerRecurringDailySchedule\n | SchedulerRecurringWeeklySchedule;\n\nexport type SchedulerMisfirePolicy =\n | { type: \"catch_up\" }\n | { type: \"skip\" }\n | { type: \"run_once_if_missed\" }\n | { type: \"windowed\"; windowMs: number };\n"],"mappings":";AAEA,MAAa,oCAAoC;AACjD,MAAa,kDAAkD;AAC/D,MAAa,kDAAkD;AAS/D,SAAgB,6BACd,WAIS;CACT,OACE,UAAU,+BAAA,KAEV,UAAU,+BAAA,KAEV,UAAU,mBAAmB,UAAU,+BACvC,UAAU,mBAAmB,UAAU;AAE3C;AA+MA,SAAgB,mBAAmB,OAAuB;CACxD,OAAO,eAAe,OAAO,CAAC;AAChC;AAEA,SAAgB,eACd,KACA,MACQ;CACR,OAAO,4BAA4B,KAAK,MAAM,cAAc;AAC9D;AAEA,SAAgB,sBACd,WACA,YACQ;CACR,OAAO,aACH,4BAA4B,WAAW,YAAY,qBAAqB,IACxE,sBAAsB,WAAW,CAAC;AACxC;AAEA,SAAgB,qBACd,WACA,YACQ;CACR,OAAO,eAAe,WAAW,UAAU;AAC7C;AAEA,SAAS,4BACP,KACA,MACA,gBACQ;CACR,MAAM,uBAAO,IAAI,IAAY;CAC7B,KAAK,MAAM,eAAe,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG;EAC1C,IAAI,UAAU;EACd,OAAO,MAAM;GACX,MAAM,YAAY,eAAe,aAAa,OAAO;GACrD,IAAI,gBAAgB,OAAO,CAAC,KAAK,IAAI,SAAS,GAC5C,OAAO;GAET,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG;IACxB,KAAK,IAAI,SAAS;IAClB;GACF;GACA,WAAW;EACb;CACF;CACA,OAAO,eAAe,KAAK,CAAC;AAC9B;AAEA,SAAS,eAAe,OAAe,MAAsB;CAE3D,QADc,WAAW,OAAO,IAAI,IAAI,KAC3B,SAAS,EAAE,SAAS,GAAG,GAAG;AACzC;AAEA,SAAS,sBAAsB,OAAe,MAAsB;CAClE,MAAM,QAAQ,WAAW,OAAO,IAAI;CAGpC,OAAO,GAFQ,OAAO,aAAa,KAAM,QAAQ,EAElC,KADA,KAAK,MAAM,QAAQ,EAAE,IAAI,KACd,SAAS,EAAE,SAAS,GAAG,GAAG;AACtD;AAEA,SAAS,WAAW,OAAe,MAAsB;CACvD,MAAM,YAAY,SAAS,IAAI,QAAQ,GAAG,MAAM,GAAG;CACnD,IAAI,OAAO;CACX,KAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS,GAAG;EACxD,QAAQ,UAAU,WAAW,KAAK;EAClC,OAAO,KAAK,KAAK,MAAM,QAAQ;CACjC;CACA,OAAO,SAAS;AAClB"}
@@ -1,10 +1,9 @@
1
1
  //#region src/config.d.ts
2
2
  /**
3
- * Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.
3
+ * Wrap a Next config with the settings Syncore needs for worker assets.
4
4
  *
5
- * This enables async WebAssembly support and, for non-exported apps, adds a
6
- * long-lived cache header for `sql-wasm.wasm`. It also configures webpack to
7
- * bundle the syncore worker as a separate entry point.
5
+ * This enables async WebAssembly support and configures webpack to bundle the
6
+ * syncore worker as a separate entry point.
8
7
  */
9
8
  declare function withSyncoreNext<TConfig extends Record<string, unknown>>(config: TConfig): TConfig;
10
9
  declare function getSyncoreWorkerUrl(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;AAaA;;;;;;iBAAgB,eAAA,iBAAgC,MAAA,kBAAA,CAC9C,MAAA,EAAQ,OAAA,GACP,OAAA;AAAA,iBA0Fa,mBAAA,CAAA;;;;iBAOA,0BAAA,CACd,YAAA,YAAoC,GAAA"}
1
+ {"version":3,"file":"config.d.ts","names":[],"sources":["../src/config.ts"],"mappings":";;AAYA;;;;;iBAAgB,eAAA,iBAAgC,MAAA,kBAAA,CAC9C,MAAA,EAAQ,OAAA,GACP,OAAA;AAAA,iBAqGa,mBAAA,CAAA;;;;iBAOA,0BAAA,CACd,YAAA,YAAoC,GAAA"}
@@ -4,33 +4,56 @@ function joinAppWorkerPath(dir) {
4
4
  return `${dir.replace(/[\\/]$/, "")}/app/syncore.worker`;
5
5
  }
6
6
  /**
7
- * Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.
7
+ * Wrap a Next config with the settings Syncore needs for worker assets.
8
8
  *
9
- * This enables async WebAssembly support and, for non-exported apps, adds a
10
- * long-lived cache header for `sql-wasm.wasm`. It also configures webpack to
11
- * bundle the syncore worker as a separate entry point.
9
+ * This enables async WebAssembly support and configures webpack to bundle the
10
+ * syncore worker as a separate entry point.
12
11
  */
13
12
  function withSyncoreNext(config) {
14
13
  const baseConfig = config;
15
14
  const isStaticExport = baseConfig.output === "export";
16
- const headers = baseConfig.headers ?? [];
17
15
  const userWebpack = typeof baseConfig.webpack === "function" ? baseConfig.webpack : void 0;
18
- const userHeaders = typeof baseConfig.headers === "function" ? baseConfig.headers : void 0;
19
- const syncoreHeaders = {
20
- source: "/sql-wasm.wasm",
21
- headers: [{
22
- key: "Cache-Control",
23
- value: "public, max-age=31536000, immutable"
24
- }]
25
- };
26
- const nextConfig = {
16
+ const userTranspilePackages = Array.isArray(baseConfig.transpilePackages) ? baseConfig.transpilePackages : [];
17
+ const internalScope = `${String.fromCharCode(64)}syncore/`;
18
+ const syncoreTranspilePackages = [
19
+ "syncorejs",
20
+ `${internalScope}core`,
21
+ `${internalScope}schema`,
22
+ `${internalScope}react`,
23
+ `${internalScope}platform-web`,
24
+ `${internalScope}next`
25
+ ];
26
+ return {
27
27
  ...config,
28
+ transpilePackages: Array.from(new Set([...userTranspilePackages, ...syncoreTranspilePackages])),
28
29
  webpack(currentConfig, context) {
29
30
  const nextConfig = { ...currentConfig };
30
31
  nextConfig.experiments = {
31
32
  ...nextConfig.experiments ?? {},
32
33
  asyncWebAssembly: true
33
34
  };
35
+ const resolve = nextConfig.resolve ?? {};
36
+ nextConfig.resolve = {
37
+ ...resolve,
38
+ extensionAlias: {
39
+ ...resolve.extensionAlias ?? {},
40
+ ".js": [
41
+ ".ts",
42
+ ".tsx",
43
+ ".js"
44
+ ],
45
+ ".mjs": [".mts", ".mjs"]
46
+ }
47
+ };
48
+ const moduleConfig = nextConfig.module ?? {};
49
+ const rules = Array.isArray(moduleConfig.rules) ? moduleConfig.rules : [];
50
+ nextConfig.module = {
51
+ ...moduleConfig,
52
+ rules: [{
53
+ test: /\.wasm$/,
54
+ type: "asset/resource"
55
+ }, ...rules]
56
+ };
34
57
  const ctx = context;
35
58
  if (isStaticExport && ctx && !ctx.dev && !ctx.isServer && ctx.nextRuntime !== "edge") {
36
59
  const entry = nextConfig.entry ?? (async () => ({}));
@@ -49,11 +72,6 @@ function withSyncoreNext(config) {
49
72
  return nextConfig;
50
73
  }
51
74
  };
52
- if (!isStaticExport || userHeaders) nextConfig.headers = async () => {
53
- const resolvedHeaders = userHeaders ? await userHeaders() : headers;
54
- return isStaticExport ? resolvedHeaders : [...resolvedHeaders, syncoreHeaders];
55
- };
56
- return nextConfig;
57
75
  }
58
76
  function getSyncoreWorkerUrl() {
59
77
  return `/_next/static/chunks/${WORKER_NAME}.js`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["const WORKER_NAME = \"syncore-worker\";\n\nfunction joinAppWorkerPath(dir: string) {\n return `${dir.replace(/[\\\\/]$/, \"\")}/app/syncore.worker`;\n}\n\n/**\n * Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.\n *\n * This enables async WebAssembly support and, for non-exported apps, adds a\n * long-lived cache header for `sql-wasm.wasm`. It also configures webpack to\n * bundle the syncore worker as a separate entry point.\n */\nexport function withSyncoreNext<TConfig extends Record<string, unknown>>(\n config: TConfig\n): TConfig {\n const baseConfig = config as Record<string, unknown>;\n const isStaticExport = baseConfig.output === \"export\";\n const headers = (baseConfig.headers ?? []) as Array<Record<string, unknown>>;\n const userWebpack =\n typeof baseConfig.webpack === \"function\"\n ? (baseConfig.webpack as (\n config: Record<string, unknown>,\n context: unknown\n ) => Record<string, unknown>)\n : undefined;\n const userHeaders =\n typeof baseConfig.headers === \"function\"\n ? (baseConfig.headers as () =>\n | Array<Record<string, unknown>>\n | Promise<Array<Record<string, unknown>>>)\n : undefined;\n const syncoreHeaders = {\n source: \"/sql-wasm.wasm\",\n headers: [\n {\n key: \"Cache-Control\",\n value: \"public, max-age=31536000, immutable\"\n }\n ]\n };\n\n const nextConfig: Record<string, unknown> = {\n ...config,\n webpack(currentConfig: Record<string, unknown>, context: unknown) {\n const nextConfig = { ...currentConfig };\n const experiments = (nextConfig.experiments ?? {}) as Record<\n string,\n unknown\n >;\n nextConfig.experiments = {\n ...experiments,\n asyncWebAssembly: true\n };\n\n type WebpackContext = {\n dev?: boolean;\n isServer: boolean;\n nextRuntime?: string;\n dir: string;\n };\n const ctx = context as WebpackContext | undefined;\n if (\n isStaticExport &&\n ctx &&\n !ctx.dev &&\n !ctx.isServer &&\n ctx.nextRuntime !== \"edge\"\n ) {\n const entry =\n (nextConfig.entry as () => Promise<Record<string, unknown>>) ??\n (async () => ({}));\n const workerPath = joinAppWorkerPath(ctx.dir);\n nextConfig.entry = async () => {\n const entries = await entry();\n return {\n ...entries,\n [WORKER_NAME]: {\n import: workerPath,\n filename: \"static/chunks/[name].js\"\n }\n };\n };\n }\n\n if (userWebpack) {\n return userWebpack(nextConfig, context);\n }\n\n return nextConfig;\n }\n };\n\n if (!isStaticExport || userHeaders) {\n nextConfig.headers = async () => {\n const resolvedHeaders = userHeaders ? await userHeaders() : headers;\n return isStaticExport\n ? resolvedHeaders\n : [...resolvedHeaders, syncoreHeaders];\n };\n }\n\n return nextConfig as TConfig;\n}\n\nexport function getSyncoreWorkerUrl(): string {\n return `/_next/static/chunks/${WORKER_NAME}.js`;\n}\n\n/**\n * Create the default worker URL used by the Next integration.\n */\nexport function createSyncoreNextWorkerUrl(\n relativePath = \"./syncore.worker.js\"\n) {\n return new URL(relativePath, import.meta.url);\n}\n"],"mappings":";AAAA,MAAM,cAAc;AAEpB,SAAS,kBAAkB,KAAa;AACtC,QAAO,GAAG,IAAI,QAAQ,UAAU,GAAG,CAAC;;;;;;;;;AAUtC,SAAgB,gBACd,QACS;CACT,MAAM,aAAa;CACnB,MAAM,iBAAiB,WAAW,WAAW;CAC7C,MAAM,UAAW,WAAW,WAAW,EAAE;CACzC,MAAM,cACJ,OAAO,WAAW,YAAY,aACzB,WAAW,UAIZ,KAAA;CACN,MAAM,cACJ,OAAO,WAAW,YAAY,aACzB,WAAW,UAGZ,KAAA;CACN,MAAM,iBAAiB;EACrB,QAAQ;EACR,SAAS,CACP;GACE,KAAK;GACL,OAAO;GACR,CACF;EACF;CAED,MAAM,aAAsC;EAC1C,GAAG;EACH,QAAQ,eAAwC,SAAkB;GAChE,MAAM,aAAa,EAAE,GAAG,eAAe;AAKvC,cAAW,cAAc;IACvB,GALmB,WAAW,eAAe,EAAE;IAM/C,kBAAkB;IACnB;GAQD,MAAM,MAAM;AACZ,OACE,kBACA,OACA,CAAC,IAAI,OACL,CAAC,IAAI,YACL,IAAI,gBAAgB,QACpB;IACA,MAAM,QACH,WAAW,UACX,aAAa,EAAE;IAClB,MAAM,aAAa,kBAAkB,IAAI,IAAI;AAC7C,eAAW,QAAQ,YAAY;AAE7B,YAAO;MACL,GAFc,MAAM,OAAO;OAG1B,cAAc;OACb,QAAQ;OACR,UAAU;OACX;MACF;;;AAIL,OAAI,YACF,QAAO,YAAY,YAAY,QAAQ;AAGzC,UAAO;;EAEV;AAED,KAAI,CAAC,kBAAkB,YACrB,YAAW,UAAU,YAAY;EAC/B,MAAM,kBAAkB,cAAc,MAAM,aAAa,GAAG;AAC5D,SAAO,iBACH,kBACA,CAAC,GAAG,iBAAiB,eAAe;;AAI5C,QAAO;;AAGT,SAAgB,sBAA8B;AAC5C,QAAO,wBAAwB,YAAY;;;;;AAM7C,SAAgB,2BACd,eAAe,uBACf;AACA,QAAO,IAAI,IAAI,cAAc,OAAO,KAAK,IAAI"}
1
+ {"version":3,"file":"config.js","names":[],"sources":["../src/config.ts"],"sourcesContent":["const WORKER_NAME = \"syncore-worker\";\n\nfunction joinAppWorkerPath(dir: string) {\n return `${dir.replace(/[\\\\/]$/, \"\")}/app/syncore.worker`;\n}\n\n/**\n * Wrap a Next config with the settings Syncore needs for worker assets.\n *\n * This enables async WebAssembly support and configures webpack to bundle the\n * syncore worker as a separate entry point.\n */\nexport function withSyncoreNext<TConfig extends Record<string, unknown>>(\n config: TConfig\n): TConfig {\n const baseConfig = config as Record<string, unknown>;\n const isStaticExport = baseConfig.output === \"export\";\n const userWebpack =\n typeof baseConfig.webpack === \"function\"\n ? (baseConfig.webpack as (\n config: Record<string, unknown>,\n context: unknown\n ) => Record<string, unknown>)\n : undefined;\n const userTranspilePackages = Array.isArray(baseConfig.transpilePackages)\n ? baseConfig.transpilePackages\n : [];\n const internalScope = `${String.fromCharCode(64)}syncore/`;\n const syncoreTranspilePackages = [\n \"syncorejs\",\n `${internalScope}core`,\n `${internalScope}schema`,\n `${internalScope}react`,\n `${internalScope}platform-web`,\n `${internalScope}next`\n ];\n\n const nextConfig: Record<string, unknown> = {\n ...config,\n transpilePackages: Array.from(\n new Set([...userTranspilePackages, ...syncoreTranspilePackages])\n ),\n webpack(currentConfig: Record<string, unknown>, context: unknown) {\n const nextConfig = { ...currentConfig };\n const experiments = (nextConfig.experiments ?? {}) as Record<\n string,\n unknown\n >;\n nextConfig.experiments = {\n ...experiments,\n asyncWebAssembly: true\n };\n const resolve = (nextConfig.resolve ?? {}) as Record<string, unknown>;\n nextConfig.resolve = {\n ...resolve,\n extensionAlias: {\n ...((resolve.extensionAlias ?? {}) as Record<string, unknown>),\n \".js\": [\".ts\", \".tsx\", \".js\"],\n \".mjs\": [\".mts\", \".mjs\"]\n }\n };\n const moduleConfig = (nextConfig.module ?? {}) as Record<string, unknown>;\n const rules = Array.isArray(moduleConfig.rules) ? moduleConfig.rules : [];\n nextConfig.module = {\n ...moduleConfig,\n rules: [\n {\n test: /\\.wasm$/,\n type: \"asset/resource\"\n },\n ...rules\n ]\n };\n\n type WebpackContext = {\n dev?: boolean;\n isServer: boolean;\n nextRuntime?: string;\n dir: string;\n };\n const ctx = context as WebpackContext | undefined;\n if (\n isStaticExport &&\n ctx &&\n !ctx.dev &&\n !ctx.isServer &&\n ctx.nextRuntime !== \"edge\"\n ) {\n const entry =\n (nextConfig.entry as () => Promise<Record<string, unknown>>) ??\n (async () => ({}));\n const workerPath = joinAppWorkerPath(ctx.dir);\n nextConfig.entry = async () => {\n const entries = await entry();\n return {\n ...entries,\n [WORKER_NAME]: {\n import: workerPath,\n filename: \"static/chunks/[name].js\"\n }\n };\n };\n }\n\n if (userWebpack) {\n return userWebpack(nextConfig, context);\n }\n\n return nextConfig;\n }\n };\n\n return nextConfig as TConfig;\n}\n\nexport function getSyncoreWorkerUrl(): string {\n return `/_next/static/chunks/${WORKER_NAME}.js`;\n}\n\n/**\n * Create the default worker URL used by the Next integration.\n */\nexport function createSyncoreNextWorkerUrl(\n relativePath = \"./syncore.worker.js\"\n) {\n return new URL(relativePath, import.meta.url);\n}\n"],"mappings":";AAAA,MAAM,cAAc;AAEpB,SAAS,kBAAkB,KAAa;CACtC,OAAO,GAAG,IAAI,QAAQ,UAAU,EAAE,EAAE;AACtC;;;;;;;AAQA,SAAgB,gBACd,QACS;CACT,MAAM,aAAa;CACnB,MAAM,iBAAiB,WAAW,WAAW;CAC7C,MAAM,cACJ,OAAO,WAAW,YAAY,aACzB,WAAW,UAIZ,KAAA;CACN,MAAM,wBAAwB,MAAM,QAAQ,WAAW,iBAAiB,IACpE,WAAW,oBACX,CAAC;CACL,MAAM,gBAAgB,GAAG,OAAO,aAAa,EAAE,EAAE;CACjD,MAAM,2BAA2B;EAC/B;EACA,GAAG,cAAc;EACjB,GAAG,cAAc;EACjB,GAAG,cAAc;EACjB,GAAG,cAAc;EACjB,GAAG,cAAc;CACnB;CA6EA,OAAO;EA1EL,GAAG;EACH,mBAAmB,MAAM,KACvB,IAAI,IAAI,CAAC,GAAG,uBAAuB,GAAG,wBAAwB,CAAC,CACjE;EACA,QAAQ,eAAwC,SAAkB;GAChE,MAAM,aAAa,EAAE,GAAG,cAAc;GAKtC,WAAW,cAAc;IACvB,GALmB,WAAW,eAAe,CAAC;IAM9C,kBAAkB;GACpB;GACA,MAAM,UAAW,WAAW,WAAW,CAAC;GACxC,WAAW,UAAU;IACnB,GAAG;IACH,gBAAgB;KACd,GAAK,QAAQ,kBAAkB,CAAC;KAChC,OAAO;MAAC;MAAO;MAAQ;KAAK;KAC5B,QAAQ,CAAC,QAAQ,MAAM;IACzB;GACF;GACA,MAAM,eAAgB,WAAW,UAAU,CAAC;GAC5C,MAAM,QAAQ,MAAM,QAAQ,aAAa,KAAK,IAAI,aAAa,QAAQ,CAAC;GACxE,WAAW,SAAS;IAClB,GAAG;IACH,OAAO,CACL;KACE,MAAM;KACN,MAAM;IACR,GACA,GAAG,KACL;GACF;GAQA,MAAM,MAAM;GACZ,IACE,kBACA,OACA,CAAC,IAAI,OACL,CAAC,IAAI,YACL,IAAI,gBAAgB,QACpB;IACA,MAAM,QACH,WAAW,UACX,aAAa,CAAC;IACjB,MAAM,aAAa,kBAAkB,IAAI,GAAG;IAC5C,WAAW,QAAQ,YAAY;KAE7B,OAAO;MACL,GAAG,MAFiB,MAAM;OAGzB,cAAc;OACb,QAAQ;OACR,UAAU;MACZ;KACF;IACF;GACF;GAEA,IAAI,aACF,OAAO,YAAY,YAAY,OAAO;GAGxC,OAAO;EACT;CAGc;AAClB;AAEA,SAAgB,sBAA8B;CAC5C,OAAO,wBAAwB,YAAY;AAC7C;;;;AAKA,SAAgB,2BACd,eAAe,uBACf;CACA,OAAO,IAAI,IAAI,cAAc,OAAO,KAAK,GAAG;AAC9C"}