syncorejs 0.1.0 → 0.2.0

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 (200) hide show
  1. package/dist/{core/src/cli.d.ts → _vendor/cli/app.d.mts} +4 -2
  2. package/dist/_vendor/cli/app.d.mts.map +1 -0
  3. package/dist/_vendor/cli/app.mjs +997 -0
  4. package/dist/_vendor/cli/app.mjs.map +1 -0
  5. package/dist/_vendor/cli/context.mjs +180 -0
  6. package/dist/_vendor/cli/context.mjs.map +1 -0
  7. package/dist/_vendor/cli/dev-session.mjs +49 -0
  8. package/dist/_vendor/cli/dev-session.mjs.map +1 -0
  9. package/dist/_vendor/cli/doctor.mjs +80 -0
  10. package/dist/_vendor/cli/doctor.mjs.map +1 -0
  11. package/dist/_vendor/cli/errors.mjs +22 -0
  12. package/dist/_vendor/cli/errors.mjs.map +1 -0
  13. package/dist/_vendor/cli/help.mjs +26 -0
  14. package/dist/_vendor/cli/help.mjs.map +1 -0
  15. package/dist/_vendor/cli/index.d.mts +2 -0
  16. package/dist/_vendor/cli/index.mjs +23 -0
  17. package/dist/_vendor/cli/index.mjs.map +1 -0
  18. package/dist/_vendor/cli/messages.mjs +32 -0
  19. package/dist/_vendor/cli/messages.mjs.map +1 -0
  20. package/dist/_vendor/cli/preflight.mjs +35 -0
  21. package/dist/_vendor/cli/preflight.mjs.map +1 -0
  22. package/dist/_vendor/cli/project.mjs +583 -0
  23. package/dist/_vendor/cli/project.mjs.map +1 -0
  24. package/dist/_vendor/cli/render.mjs +133 -0
  25. package/dist/_vendor/cli/render.mjs.map +1 -0
  26. package/dist/_vendor/cli/targets.mjs +87 -0
  27. package/dist/_vendor/cli/targets.mjs.map +1 -0
  28. package/dist/_vendor/core/cli.d.mts +59 -1
  29. package/dist/_vendor/core/cli.d.mts.map +1 -1
  30. package/dist/_vendor/core/cli.mjs +528 -75
  31. package/dist/_vendor/core/cli.mjs.map +1 -1
  32. package/dist/_vendor/core/index.d.mts +12 -4
  33. package/dist/_vendor/core/index.d.mts.map +1 -0
  34. package/dist/_vendor/core/index.mjs +4 -3
  35. package/dist/_vendor/core/index.mjs.map +1 -1
  36. package/dist/_vendor/core/runtime/devtools.d.mts +32 -6
  37. package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
  38. package/dist/_vendor/core/runtime/devtools.mjs +397 -182
  39. package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
  40. package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
  41. package/dist/_vendor/core/runtime/runtime.d.mts +89 -7
  42. package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
  43. package/dist/_vendor/core/runtime/runtime.mjs +303 -32
  44. package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
  45. package/dist/_vendor/devtools-protocol/index.d.ts +189 -82
  46. package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
  47. package/dist/_vendor/devtools-protocol/index.js +39 -0
  48. package/dist/_vendor/devtools-protocol/index.js.map +1 -0
  49. package/dist/_vendor/next/config.d.ts.map +1 -1
  50. package/dist/_vendor/next/config.js +2 -5
  51. package/dist/_vendor/next/config.js.map +1 -1
  52. package/dist/_vendor/platform-expo/index.d.ts +15 -5
  53. package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
  54. package/dist/_vendor/platform-expo/index.js +33 -3
  55. package/dist/_vendor/platform-expo/index.js.map +1 -1
  56. package/dist/_vendor/platform-expo/react.js.map +1 -1
  57. package/dist/_vendor/platform-node/index.d.mts +10 -5
  58. package/dist/_vendor/platform-node/index.d.mts.map +1 -1
  59. package/dist/_vendor/platform-node/index.mjs +145 -35
  60. package/dist/_vendor/platform-node/index.mjs.map +1 -1
  61. package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
  62. package/dist/_vendor/platform-web/external-change.d.ts +39 -0
  63. package/dist/_vendor/platform-web/external-change.d.ts.map +1 -0
  64. package/dist/_vendor/platform-web/external-change.js +61 -0
  65. package/dist/_vendor/platform-web/external-change.js.map +1 -0
  66. package/dist/_vendor/platform-web/index.d.ts +27 -5
  67. package/dist/_vendor/platform-web/index.d.ts.map +1 -1
  68. package/dist/_vendor/platform-web/index.js +310 -44
  69. package/dist/_vendor/platform-web/index.js.map +1 -1
  70. package/dist/_vendor/platform-web/indexeddb.js.map +1 -1
  71. package/dist/_vendor/platform-web/opfs.js.map +1 -1
  72. package/dist/_vendor/platform-web/persistence.js.map +1 -1
  73. package/dist/_vendor/platform-web/react.js.map +1 -1
  74. package/dist/_vendor/platform-web/sqljs.js +22 -2
  75. package/dist/_vendor/platform-web/sqljs.js.map +1 -1
  76. package/dist/_vendor/schema/definition.js.map +1 -1
  77. package/dist/_vendor/schema/planner.js.map +1 -1
  78. package/dist/_vendor/schema/validators.js.map +1 -1
  79. package/dist/browser-react.d.ts +1 -1
  80. package/dist/browser-react.js +1 -1
  81. package/dist/browser.d.ts +6 -7
  82. package/dist/browser.d.ts.map +1 -1
  83. package/dist/browser.js +4 -5
  84. package/dist/browser.js.map +1 -1
  85. package/dist/cli.d.ts +1 -1
  86. package/dist/cli.js +12 -3
  87. package/dist/cli.js.map +1 -1
  88. package/dist/expo-react.d.ts +1 -1
  89. package/dist/expo-react.js +1 -1
  90. package/dist/expo.d.ts +1 -2
  91. package/dist/expo.js +1 -2
  92. package/dist/index.d.ts +3 -7
  93. package/dist/index.js +3 -8
  94. package/dist/next-config.d.ts +1 -2
  95. package/dist/next-config.js +1 -2
  96. package/dist/next.d.ts +1 -3
  97. package/dist/next.js +1 -3
  98. package/dist/node-ipc-react.d.ts +1 -1
  99. package/dist/node-ipc-react.js +1 -1
  100. package/dist/node-ipc.d.ts +1 -2
  101. package/dist/node-ipc.js +1 -2
  102. package/dist/node.d.ts +1 -4
  103. package/dist/node.js +1 -3
  104. package/dist/react.d.ts +1 -2
  105. package/dist/react.js +1 -2
  106. package/dist/svelte.d.ts +1 -2
  107. package/dist/svelte.js +1 -2
  108. package/package.json +6 -3
  109. package/dist/core/src/cli.d.ts.map +0 -1
  110. package/dist/core/src/cli.js +0 -1196
  111. package/dist/core/src/cli.js.map +0 -1
  112. package/dist/core/src/index.js +0 -7
  113. package/dist/core/src/runtime/devtools.d.ts +0 -7
  114. package/dist/core/src/runtime/devtools.d.ts.map +0 -1
  115. package/dist/core/src/runtime/devtools.js +0 -300
  116. package/dist/core/src/runtime/devtools.js.map +0 -1
  117. package/dist/core/src/runtime/functions.d.ts +0 -123
  118. package/dist/core/src/runtime/functions.d.ts.map +0 -1
  119. package/dist/core/src/runtime/functions.js +0 -71
  120. package/dist/core/src/runtime/functions.js.map +0 -1
  121. package/dist/core/src/runtime/id.d.ts +0 -13
  122. package/dist/core/src/runtime/id.d.ts.map +0 -1
  123. package/dist/core/src/runtime/id.js +0 -28
  124. package/dist/core/src/runtime/id.js.map +0 -1
  125. package/dist/core/src/runtime/runtime.d.ts +0 -371
  126. package/dist/core/src/runtime/runtime.d.ts.map +0 -1
  127. package/dist/core/src/runtime/runtime.js +0 -1143
  128. package/dist/core/src/runtime/runtime.js.map +0 -1
  129. package/dist/devtools-protocol/src/index.d.ts +0 -201
  130. package/dist/devtools-protocol/src/index.d.ts.map +0 -1
  131. package/dist/next/src/config.d.ts +0 -17
  132. package/dist/next/src/config.d.ts.map +0 -1
  133. package/dist/next/src/config.js +0 -73
  134. package/dist/next/src/config.js.map +0 -1
  135. package/dist/next/src/index.d.ts +0 -80
  136. package/dist/next/src/index.d.ts.map +0 -1
  137. package/dist/next/src/index.js +0 -82
  138. package/dist/next/src/index.js.map +0 -1
  139. package/dist/platform-expo/src/index.d.ts +0 -96
  140. package/dist/platform-expo/src/index.d.ts.map +0 -1
  141. package/dist/platform-expo/src/index.js +0 -198
  142. package/dist/platform-expo/src/index.js.map +0 -1
  143. package/dist/platform-expo/src/react.d.ts +0 -26
  144. package/dist/platform-expo/src/react.d.ts.map +0 -1
  145. package/dist/platform-expo/src/react.js +0 -30
  146. package/dist/platform-expo/src/react.js.map +0 -1
  147. package/dist/platform-node/src/index.d.ts +0 -145
  148. package/dist/platform-node/src/index.d.ts.map +0 -1
  149. package/dist/platform-node/src/index.js +0 -407
  150. package/dist/platform-node/src/index.js.map +0 -1
  151. package/dist/platform-node/src/ipc-react.d.ts +0 -25
  152. package/dist/platform-node/src/ipc-react.d.ts.map +0 -1
  153. package/dist/platform-node/src/ipc-react.js +0 -21
  154. package/dist/platform-node/src/ipc-react.js.map +0 -1
  155. package/dist/platform-node/src/ipc.d.ts +0 -76
  156. package/dist/platform-node/src/ipc.d.ts.map +0 -1
  157. package/dist/platform-node/src/ipc.js +0 -344
  158. package/dist/platform-node/src/ipc.js.map +0 -1
  159. package/dist/platform-web/src/index.d.ts +0 -106
  160. package/dist/platform-web/src/index.d.ts.map +0 -1
  161. package/dist/platform-web/src/index.js +0 -311
  162. package/dist/platform-web/src/index.js.map +0 -1
  163. package/dist/platform-web/src/indexeddb.js +0 -125
  164. package/dist/platform-web/src/indexeddb.js.map +0 -1
  165. package/dist/platform-web/src/opfs.js +0 -146
  166. package/dist/platform-web/src/opfs.js.map +0 -1
  167. package/dist/platform-web/src/persistence.d.ts +0 -20
  168. package/dist/platform-web/src/persistence.d.ts.map +0 -1
  169. package/dist/platform-web/src/persistence.js +0 -23
  170. package/dist/platform-web/src/persistence.js.map +0 -1
  171. package/dist/platform-web/src/react.d.ts +0 -35
  172. package/dist/platform-web/src/react.d.ts.map +0 -1
  173. package/dist/platform-web/src/react.js +0 -42
  174. package/dist/platform-web/src/react.js.map +0 -1
  175. package/dist/platform-web/src/sqljs.js +0 -133
  176. package/dist/platform-web/src/sqljs.js.map +0 -1
  177. package/dist/platform-web/src/worker.d.ts +0 -79
  178. package/dist/platform-web/src/worker.d.ts.map +0 -1
  179. package/dist/platform-web/src/worker.js +0 -308
  180. package/dist/platform-web/src/worker.js.map +0 -1
  181. package/dist/react/src/index.d.ts +0 -59
  182. package/dist/react/src/index.d.ts.map +0 -1
  183. package/dist/react/src/index.js +0 -151
  184. package/dist/react/src/index.js.map +0 -1
  185. package/dist/schema/src/definition.d.ts +0 -98
  186. package/dist/schema/src/definition.d.ts.map +0 -1
  187. package/dist/schema/src/definition.js +0 -84
  188. package/dist/schema/src/definition.js.map +0 -1
  189. package/dist/schema/src/planner.d.ts +0 -42
  190. package/dist/schema/src/planner.d.ts.map +0 -1
  191. package/dist/schema/src/planner.js +0 -131
  192. package/dist/schema/src/planner.js.map +0 -1
  193. package/dist/schema/src/validators.d.ts +0 -194
  194. package/dist/schema/src/validators.d.ts.map +0 -1
  195. package/dist/schema/src/validators.js +0 -158
  196. package/dist/schema/src/validators.js.map +0 -1
  197. package/dist/svelte/src/index.d.ts +0 -44
  198. package/dist/svelte/src/index.d.ts.map +0 -1
  199. package/dist/svelte/src/index.js +0 -75
  200. package/dist/svelte/src/index.js.map +0 -1
@@ -1,82 +1,73 @@
1
1
  //#region src/index.d.ts
2
- type SyncoreDevtoolsEvent = {
3
- type: "runtime.connected";
2
+ type SyncoreDevtoolsEventOrigin = "runtime" | "dashboard";
3
+ type SyncoreDevtoolsEventBase = {
4
4
  runtimeId: string;
5
- platform: string;
6
5
  timestamp: number;
7
- } | {
6
+ origin?: SyncoreDevtoolsEventOrigin;
7
+ };
8
+ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
9
+ type: "runtime.connected";
10
+ platform: string;
11
+ }) | (SyncoreDevtoolsEventBase & {
8
12
  type: "runtime.disconnected";
9
- runtimeId: string;
10
- timestamp: number;
11
- } | {
13
+ }) | (SyncoreDevtoolsEventBase & {
12
14
  type: "query.executed";
13
- runtimeId: string;
14
15
  queryId: string;
15
16
  functionName: string;
16
17
  dependencies: string[];
17
18
  durationMs: number;
18
- timestamp: number;
19
- } | {
19
+ }) | (SyncoreDevtoolsEventBase & {
20
20
  type: "query.invalidated";
21
- runtimeId: string;
22
21
  queryId: string;
23
22
  reason: string;
24
- timestamp: number;
25
- } | {
23
+ }) | (SyncoreDevtoolsEventBase & {
26
24
  type: "mutation.committed";
27
- runtimeId: string;
28
25
  mutationId: string;
29
26
  functionName: string;
30
27
  changedTables: string[];
31
28
  durationMs: number;
32
- timestamp: number;
33
- } | {
29
+ }) | (SyncoreDevtoolsEventBase & {
34
30
  type: "action.completed";
35
- runtimeId: string;
36
31
  actionId: string;
37
32
  functionName: string;
38
33
  durationMs: number;
39
- timestamp: number;
40
34
  error?: string;
41
- } | {
35
+ }) | (SyncoreDevtoolsEventBase & {
42
36
  type: "scheduler.tick";
43
- runtimeId: string;
44
37
  executedJobIds: string[];
45
- timestamp: number;
46
- } | {
38
+ }) | (SyncoreDevtoolsEventBase & {
47
39
  type: "storage.updated";
48
- runtimeId: string;
49
40
  storageId: string;
50
41
  operation: "put" | "delete";
51
- timestamp: number;
52
- } | {
42
+ }) | (SyncoreDevtoolsEventBase & {
53
43
  type: "log";
54
- runtimeId: string;
55
44
  level: "info" | "warn" | "error";
56
45
  message: string;
57
- timestamp: number;
58
- };
59
- interface SyncoreDevtoolsSnapshot {
46
+ });
47
+ interface SyncoreActiveQueryInfo {
48
+ id: string;
49
+ functionName: string;
50
+ dependencyKeys: string[];
51
+ lastRunAt: number;
52
+ }
53
+ interface SyncoreRuntimeSummary {
60
54
  runtimeId: string;
61
55
  platform: string;
62
56
  appName?: string;
63
57
  origin?: string;
64
58
  sessionLabel?: string;
59
+ targetKind?: "client" | "project";
60
+ storageProtocol?: string;
61
+ databaseLabel?: string;
62
+ storageIdentity?: string;
65
63
  connectedAt: number;
66
- activeQueries: Array<{
67
- id: string;
68
- functionName: string;
69
- dependencyKeys: string[];
70
- lastRunAt: number;
71
- }>;
72
- pendingJobs: Array<{
73
- id: string;
74
- functionName: string;
75
- runAt: number;
76
- status: string;
77
- }>;
78
- recentEvents: SyncoreDevtoolsEvent[];
64
+ activeQueryCount: number;
65
+ recentEventCount: number;
79
66
  }
67
+ declare function createBasePublicId(input: string): string;
68
+ declare function createPublicId(key: string, keys: Iterable<string>): string;
69
+ declare function createPublicRuntimeId(runtimeId: string, runtimeIds?: Iterable<string>): string;
70
+ declare function createPublicTargetId(targetKey: string, targetKeys: Iterable<string>): string;
80
71
  type SyncoreDevtoolsMessage = {
81
72
  type: "hello";
82
73
  runtimeId: string;
@@ -84,41 +75,62 @@ type SyncoreDevtoolsMessage = {
84
75
  appName?: string;
85
76
  origin?: string;
86
77
  sessionLabel?: string;
78
+ targetKind?: "client" | "project";
79
+ storageProtocol?: string;
80
+ databaseLabel?: string;
81
+ storageIdentity?: string;
87
82
  } | {
88
83
  type: "event";
89
84
  event: SyncoreDevtoolsEvent;
90
85
  } | {
91
- type: "snapshot";
92
- snapshot: SyncoreDevtoolsSnapshot;
86
+ type: "event.batch";
87
+ runtimeId: string;
88
+ events: SyncoreDevtoolsEvent[];
93
89
  } | {
94
90
  type: "ping";
95
91
  } | {
96
92
  type: "pong";
97
93
  } | {
98
- type: "response";
99
- requestId: string;
94
+ type: "command.result";
95
+ commandId: string;
96
+ runtimeId: string;
97
+ payload: SyncoreDevtoolsCommandResultPayload;
98
+ } | {
99
+ type: "subscription.data";
100
+ subscriptionId: string;
101
+ runtimeId: string;
102
+ payload: SyncoreDevtoolsSubscriptionResultPayload;
103
+ } | {
104
+ type: "subscription.error";
105
+ subscriptionId: string;
100
106
  runtimeId: string;
101
- payload: SyncoreResponsePayload;
107
+ error: string;
102
108
  };
103
- interface SyncoreDevtoolsRequest {
104
- type: "request";
105
- requestId: string;
109
+ interface SyncoreDevtoolsCommand {
110
+ type: "command";
111
+ commandId: string;
106
112
  targetRuntimeId: string;
107
- payload: SyncoreRequestPayload;
113
+ payload: SyncoreDevtoolsCommandPayload;
108
114
  }
109
- type SyncoreRequestPayload = {
110
- kind: "fn.list";
111
- } | {
115
+ interface SyncoreDevtoolsSubscribe {
116
+ type: "subscribe";
117
+ subscriptionId: string;
118
+ targetRuntimeId: string;
119
+ payload: SyncoreDevtoolsSubscriptionPayload;
120
+ }
121
+ interface SyncoreDevtoolsUnsubscribe {
122
+ type: "unsubscribe";
123
+ subscriptionId: string;
124
+ targetRuntimeId: string;
125
+ }
126
+ type SyncoreDevtoolsClientMessage = {
127
+ type: "ping";
128
+ } | SyncoreDevtoolsCommand | SyncoreDevtoolsSubscribe | SyncoreDevtoolsUnsubscribe;
129
+ type SyncoreDevtoolsCommandPayload = {
112
130
  kind: "fn.run";
113
131
  functionName: string;
114
132
  functionType: "query" | "mutation" | "action";
115
133
  args: Record<string, unknown>;
116
- } | {
117
- kind: "data.query";
118
- table: string;
119
- filters?: DataFilter[];
120
- limit?: number;
121
- cursor?: string;
122
134
  } | {
123
135
  kind: "data.insert";
124
136
  table: string;
@@ -133,59 +145,117 @@ type SyncoreRequestPayload = {
133
145
  table: string;
134
146
  id: string;
135
147
  } | {
136
- kind: "schema.get";
137
- } | {
138
- kind: "sql.execute";
148
+ kind: "sql.read";
139
149
  query: string;
140
150
  } | {
141
- kind: "scheduler.list";
151
+ kind: "sql.write";
152
+ query: string;
142
153
  } | {
143
154
  kind: "scheduler.cancel";
144
155
  jobId: string;
156
+ } | {
157
+ kind: "scheduler.update";
158
+ jobId: string;
159
+ schedule: SchedulerRecurringSchedule;
160
+ args: Record<string, unknown>;
161
+ misfirePolicy: SchedulerMisfirePolicy;
162
+ runAt?: number;
163
+ };
164
+ type SyncoreDevtoolsSubscriptionPayload = {
165
+ kind: "runtime.summary";
166
+ } | {
167
+ kind: "runtime.activeQueries";
168
+ } | {
169
+ kind: "schema.tables";
170
+ } | {
171
+ kind: "fn.watch";
172
+ functionName: string;
173
+ functionType: "query";
174
+ args: Record<string, unknown>;
175
+ } | {
176
+ kind: "data.table";
177
+ table: string;
178
+ filters?: DataFilter[];
179
+ limit?: number;
180
+ cursor?: string;
181
+ } | {
182
+ kind: "scheduler.jobs";
183
+ } | {
184
+ kind: "functions.catalog";
185
+ } | {
186
+ kind: "sql.watch";
187
+ query: string;
145
188
  };
146
189
  interface DataFilter {
147
190
  field: string;
148
191
  operator: "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith";
149
192
  value: unknown;
150
193
  }
151
- type SyncoreResponsePayload = {
152
- kind: "fn.list.result";
153
- functions: FunctionDefinition[];
154
- } | {
194
+ type SyncoreDevtoolsCommandResultPayload = {
155
195
  kind: "fn.run.result";
156
196
  result?: unknown;
157
197
  error?: string;
158
198
  durationMs: number;
159
- } | {
160
- kind: "data.result";
161
- rows: Record<string, unknown>[];
162
- totalCount: number;
163
- cursor?: string;
164
199
  } | {
165
200
  kind: "data.mutate.result";
166
201
  success: boolean;
167
202
  id?: string;
168
203
  error?: string;
169
204
  } | {
170
- kind: "schema.result";
171
- tables: TableSchema[];
172
- } | {
173
- kind: "sql.result";
205
+ kind: "sql.read.result";
174
206
  columns: string[];
175
207
  rows: unknown[][];
176
- rowsAffected: number;
177
208
  error?: string;
178
209
  } | {
179
- kind: "scheduler.list.result";
180
- jobs: SchedulerJob[];
210
+ kind: "sql.write.result";
211
+ rowsAffected: number;
212
+ error?: string;
213
+ invalidationScopes: string[];
181
214
  } | {
182
215
  kind: "scheduler.cancel.result";
183
216
  success: boolean;
217
+ cancelled: boolean;
218
+ error?: string;
219
+ } | {
220
+ kind: "scheduler.update.result";
221
+ success: boolean;
222
+ updated: boolean;
184
223
  error?: string;
224
+ job?: SchedulerJob;
185
225
  } | {
186
226
  kind: "error";
187
227
  message: string;
188
228
  };
229
+ type SyncoreDevtoolsSubscriptionResultPayload = {
230
+ kind: "runtime.summary.result";
231
+ summary: SyncoreRuntimeSummary;
232
+ } | {
233
+ kind: "runtime.activeQueries.result";
234
+ activeQueries: SyncoreActiveQueryInfo[];
235
+ } | {
236
+ kind: "fn.watch.result";
237
+ result?: unknown;
238
+ error?: string;
239
+ } | {
240
+ kind: "schema.tables.result";
241
+ tables: TableSchema[];
242
+ } | {
243
+ kind: "data.table.result";
244
+ rows: Record<string, unknown>[];
245
+ totalCount: number;
246
+ cursor?: string;
247
+ } | {
248
+ kind: "scheduler.jobs.result";
249
+ jobs: SchedulerJob[];
250
+ } | {
251
+ kind: "functions.catalog.result";
252
+ functions: FunctionDefinition[];
253
+ } | {
254
+ kind: "sql.watch.result";
255
+ columns: string[];
256
+ rows: unknown[][];
257
+ observedTables: string[];
258
+ };
189
259
  interface FunctionDefinition {
190
260
  name: string;
191
261
  type: "query" | "mutation" | "action";
@@ -222,9 +292,46 @@ interface SchedulerJob {
222
292
  result?: unknown;
223
293
  error?: string;
224
294
  durationMs?: number;
225
- /** If set, this is a recurring cron job */
295
+ recurringName?: string;
296
+ schedule?: SchedulerRecurringSchedule;
297
+ scheduleLabel?: string;
298
+ misfirePolicy?: SchedulerMisfirePolicy;
299
+ timezone?: string;
300
+ lastRunAt?: number;
301
+ updatedAt?: number;
302
+ /** Compatibility label for older UI code. */
226
303
  cronSchedule?: string;
227
304
  }
305
+ interface SchedulerRecurringIntervalSchedule {
306
+ type: "interval";
307
+ seconds?: number;
308
+ minutes?: number;
309
+ hours?: number;
310
+ }
311
+ interface SchedulerRecurringDailySchedule {
312
+ type: "daily";
313
+ hour: number;
314
+ minute: number;
315
+ timezone?: string;
316
+ }
317
+ interface SchedulerRecurringWeeklySchedule {
318
+ type: "weekly";
319
+ dayOfWeek: "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";
320
+ hour: number;
321
+ minute: number;
322
+ timezone?: string;
323
+ }
324
+ type SchedulerRecurringSchedule = SchedulerRecurringIntervalSchedule | SchedulerRecurringDailySchedule | SchedulerRecurringWeeklySchedule;
325
+ type SchedulerMisfirePolicy = {
326
+ type: "catch_up";
327
+ } | {
328
+ type: "skip";
329
+ } | {
330
+ type: "run_once_if_missed";
331
+ } | {
332
+ type: "windowed";
333
+ windowMs: number;
334
+ };
228
335
  //#endregion
229
- export { DataFilter, FunctionDefinition, SchedulerJob, SyncoreDevtoolsEvent, SyncoreDevtoolsMessage, SyncoreDevtoolsRequest, SyncoreDevtoolsSnapshot, SyncoreRequestPayload, SyncoreResponsePayload, TableField, TableIndex, TableSchema };
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 };
230
337
  //# 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":"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"}
@@ -0,0 +1,39 @@
1
+ //#region src/index.ts
2
+ function createBasePublicId(input) {
3
+ return stablePublicId(input, 0);
4
+ }
5
+ function createPublicId(key, keys) {
6
+ const used = /* @__PURE__ */ new Set();
7
+ for (const existingKey of [...keys].sort()) {
8
+ let attempt = 0;
9
+ while (true) {
10
+ const candidate = stablePublicId(existingKey, attempt);
11
+ if (existingKey === key && !used.has(candidate)) return candidate;
12
+ if (!used.has(candidate)) {
13
+ used.add(candidate);
14
+ break;
15
+ }
16
+ attempt += 1;
17
+ }
18
+ }
19
+ return createBasePublicId(key);
20
+ }
21
+ function createPublicRuntimeId(runtimeId, runtimeIds) {
22
+ return runtimeIds ? createPublicId(runtimeId, runtimeIds) : createBasePublicId(runtimeId);
23
+ }
24
+ function createPublicTargetId(targetKey, targetKeys) {
25
+ return createPublicId(targetKey, targetKeys);
26
+ }
27
+ function stablePublicId(input, salt) {
28
+ const hashInput = salt === 0 ? input : `${input}#${salt}`;
29
+ let hash = 2166136261;
30
+ for (let index = 0; index < hashInput.length; index += 1) {
31
+ hash ^= hashInput.charCodeAt(index);
32
+ hash = Math.imul(hash, 16777619);
33
+ }
34
+ return ((hash >>> 0) % 1e5).toString().padStart(5, "0");
35
+ }
36
+ //#endregion
37
+ export { createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId };
38
+
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 +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,iBA4Fa,mBAAA,CAAA;;;;iBAOA,0BAAA,CACd,YAAA,YAAoC,GAAA"}
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,7 +1,7 @@
1
1
  //#region src/config.ts
2
2
  const WORKER_NAME = "syncore-worker";
3
3
  function joinAppWorkerPath(dir) {
4
- return `${dir.replace(/[\\/]$/, "")}/app/syncore.worker.js`;
4
+ return `${dir.replace(/[\\/]$/, "")}/app/syncore.worker`;
5
5
  }
6
6
  /**
7
7
  * Wrap a Next config with the settings Syncore needs for SQL.js and worker assets.
@@ -36,11 +36,8 @@ function withSyncoreNext(config) {
36
36
  const entry = nextConfig.entry ?? (async () => ({}));
37
37
  const workerPath = joinAppWorkerPath(ctx.dir);
38
38
  nextConfig.entry = async () => {
39
- const entries = await entry();
40
- const mainAppEntry = entries["main-app"];
41
39
  return {
42
- ...entries,
43
- ...mainAppEntry && !entries.main ? { main: mainAppEntry } : {},
40
+ ...await entry(),
44
41
  [WORKER_NAME]: {
45
42
  import: workerPath,
46
43
  filename: "static/chunks/[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.js`;\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 const mainAppEntry = entries[\"main-app\"];\n return {\n ...entries,\n ...(mainAppEntry && !entries.main ? { main: mainAppEntry } : {}),\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;KAC7B,MAAM,UAAU,MAAM,OAAO;KAC7B,MAAM,eAAe,QAAQ;AAC7B,YAAO;MACL,GAAG;MACH,GAAI,gBAAgB,CAAC,QAAQ,OAAO,EAAE,MAAM,cAAc,GAAG,EAAE;OAC9D,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 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,6 +1,6 @@
1
1
  import { SQLiteDatabase } from "expo-sqlite";
2
2
  import * as _syncore_core0 from "../core/index.d.mts";
3
- import { AnySyncoreSchema, DevtoolsSink, SchedulerOptions, StorageObject, StorageWriteInput, SyncoreCapabilities, SyncoreExperimentalPlugin, SyncoreRuntime, SyncoreRuntimeOptions, SyncoreSqlDriver, SyncoreStorageAdapter } from "../core/index.d.mts";
3
+ import { AnySyncoreSchema, DevtoolsSink, SchedulerOptions, StorageObject, StorageWriteInput, SyncoreCapabilities, SyncoreExperimentalPlugin, SyncoreExternalChangeApplier, SyncoreExternalChangeSignal, SyncoreRuntime, SyncoreRuntimeOptions, SyncoreSqlDriver, SyncoreStorageAdapter } from "../core/index.d.mts";
4
4
 
5
5
  //#region src/index.d.ts
6
6
  type ExpoSyncoreSchema = AnySyncoreSchema;
@@ -35,13 +35,17 @@ interface CreateExpoRuntimeOptions {
35
35
  devtools?: DevtoolsSink;
36
36
  /** Optional scheduler configuration for jobs and recurring work. */
37
37
  scheduler?: SchedulerOptions;
38
+ /** Optional shared signal used to synchronize browser instances. */
39
+ externalChangeSignal?: SyncoreExternalChangeSignal;
40
+ /** Optional applier used to reconcile browser-side external changes. */
41
+ externalChangeApplier?: SyncoreExternalChangeApplier;
38
42
  }
39
43
  /**
40
44
  * A reusable bootstrap that lazily creates, starts, and stops an Expo Syncore runtime.
41
45
  */
42
46
  interface ExpoSyncoreBootstrap {
43
- /** Return the local runtime instance, creating it if needed. */
44
- getRuntime(): SyncoreRuntime<ExpoSyncoreSchema>;
47
+ /** Synchronous access is unavailable; use `getClient()` instead. */
48
+ getRuntime(): never;
45
49
  /** Start the runtime if needed and return a ready client. */
46
50
  getClient(): Promise<ReturnType<SyncoreRuntime<ExpoSyncoreSchema>["createClient"]>>;
47
51
  /** Stop the current runtime instance if one exists. */
@@ -65,10 +69,15 @@ declare function createExpoSyncoreBootstrap(options: CreateExpoRuntimeOptions):
65
69
  * Syncore SQL driver implementation backed by `expo-sqlite`.
66
70
  */
67
71
  declare class ExpoSqliteDriver implements SyncoreSqlDriver {
68
- private readonly database;
72
+ private database;
69
73
  private transactionDepth;
70
74
  private closed;
71
- constructor(database: SQLiteDatabase);
75
+ private readonly databaseName;
76
+ private readonly databaseDirectory;
77
+ constructor(database: SQLiteDatabase, options?: {
78
+ databaseName?: string;
79
+ databaseDirectory?: string;
80
+ });
72
81
  exec(sql: string): Promise<void>;
73
82
  run(sql: string, params?: unknown[]): Promise<{
74
83
  changes: number;
@@ -80,6 +89,7 @@ declare class ExpoSqliteDriver implements SyncoreSqlDriver {
80
89
  withSavepoint<T>(name: string, callback: () => Promise<T>): Promise<T>;
81
90
  close(): Promise<void>;
82
91
  private ensureOpen;
92
+ reopen(): Promise<void>;
83
93
  }
84
94
  /**
85
95
  * Syncore file/blob storage backed by the Expo file system.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;KAoBY,iBAAA,GAAoB,gBAAA;;;AAAhC;;;;UAQiB,wBAAA;EAAA;EAEf,MAAA,EAAQ,iBAAA;;EAGR,SAAA,EAAW,qBAAA,CAAsB,iBAAA;EAAA;EAGjC,YAAA,GAAe,mBAAA;EAAA;EAGf,MAAA,GAAS,gBAAA;EAG6C;EAAtD,mBAAA,GAAsB,KAAA,CAAM,yBAAA,CAA0B,iBAAA;EAAhC;EAGtB,OAAA,GAAU,qBAAA;EAeC;EAZX,YAAA;EAe4B;EAZ5B,iBAAA;EArBA;EAwBA,oBAAA;EArBA;EAwBA,QAAA;EAxBiC;EA2BjC,QAAA,GAAW,YAAA;EAxBI;EA2Bf,SAAA,GAAY,gBAAA;AAAA;;;;UAMG,oBAAA;EAxBf;EA0BA,UAAA,IAAc,cAAA,CAAe,iBAAA;EAvB7B;EA0BA,SAAA,IAAa,OAAA,CACX,UAAA,CAAW,cAAA,CAAe,iBAAA;EArB5B;EAyBA,IAAA,IAAQ,OAAA;EAnBR;EAsBA,KAAA,IAAS,OAAA;AAAA;;;;iBAMK,wBAAA,CACd,OAAA,EAAS,wBAAA,GACR,cAAA,CAAe,iBAAA;;;;iBAuCF,uBAAA,CACd,OAAA,EAAS,cAAA,CAAe,iBAAA,IAAD,cAAA,CAAmB,aAAA;;;;iBAQ5B,0BAAA,CACd,OAAA,EAAS,wBAAA,GACR,oBAAA;;;;cA4CU,gBAAA,YAA4B,gBAAA;EAAA,iBAIV,QAAA;EAAA,QAHrB,gBAAA;EAAA,QACA,MAAA;cAEqB,QAAA,EAAU,cAAA;EAEjC,IAAA,CAAK,GAAA,WAAc,OAAA;EAKnB,GAAA,CACJ,GAAA,UACA,MAAA,eACC,OAAA;IAAU,OAAA;IAAiB,eAAA;EAAA;EASxB,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EASrD,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EAKrD,eAAA,GAAA,CAAmB,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAoBxD,aAAA,GAAA,CAAiB,IAAA,UAAc,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAkBpE,KAAA,CAAA,GAAS,OAAA;EAAA,QAQP,UAAA;AAAA;;;;cAUG,sBAAA,YAAkC,qBAAA;EAAA,iBAC5B,aAAA;cAEL,oBAAA;EAON,GAAA,CAAI,EAAA,UAAY,KAAA,EAAO,iBAAA,GAAoB,OAAA,CAAQ,aAAA;EAenD,GAAA,CAAI,EAAA,WAAa,OAAA,CAAQ,aAAA;EAazB,IAAA,CAAK,EAAA,WAAa,OAAA,CAAQ,UAAA;EAQ1B,MAAA,CAAO,EAAA,WAAa,OAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;KA0BY,iBAAA,GAAoB,gBAAA;;;AAAhC;;;;UAQiB,wBAAA;EAAA;EAEf,MAAA,EAAQ,iBAAA;;EAGR,SAAA,EAAW,qBAAA,CAAsB,iBAAA;EAAA;EAGjC,YAAA,GAAe,mBAAA;EAAA;EAGf,MAAA,GAAS,gBAAA;EAG6C;EAAtD,mBAAA,GAAsB,KAAA,CAAM,yBAAA,CAA0B,iBAAA;EAAhC;EAGtB,OAAA,GAAU,qBAAA;EAeC;EAZX,YAAA;EAkBuB;EAfvB,iBAAA;EAkBoD;EAfpD,oBAAA;EAxBA;EA2BA,QAAA;EAxBA;EA2BA,QAAA,GAAW,YAAA;EA3BsB;EA8BjC,SAAA,GAAY,gBAAA;EA3BG;EA8Bf,oBAAA,GAAuB,2BAAA;EA3Bd;EA8BT,qBAAA,GAAwB,4BAAA;AAAA;;;;UAMT,oBAAA;EA3Bf;EA6BA,UAAA;EAvBA;EA0BA,SAAA,IAAa,OAAA,CACX,UAAA,CAAW,cAAA,CAAe,iBAAA;EArB5B;EAyBA,IAAA,IAAQ,OAAA;EAtBR;EAyBA,KAAA,IAAS,OAAA;AAAA;;;;iBAMK,wBAAA,CACd,OAAA,EAAS,wBAAA,GACR,cAAA,CAAe,iBAAA;;AArBlB;;iBA0FgB,uBAAA,CACd,OAAA,EAAS,cAAA,CAAe,iBAAA,IAAD,cAAA,CAAmB,aAAA;;;;iBAQ5B,0BAAA,CACd,OAAA,EAAS,wBAAA,GACR,oBAAA;;;;cA8CU,gBAAA,YAA4B,gBAAA;EAAA,QAO7B,QAAA;EAAA,QANF,gBAAA;EAAA,QACA,MAAA;EAAA,iBACS,YAAA;EAAA,iBACA,iBAAA;cAGP,QAAA,EAAU,cAAA,EAClB,OAAA;IACE,YAAA;IACA,iBAAA;EAAA;EAOE,IAAA,CAAK,GAAA,WAAc,OAAA;EAKnB,GAAA,CACJ,GAAA,UACA,MAAA,eACC,OAAA;IAAU,OAAA;IAAiB,eAAA;EAAA;EASxB,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EASrD,GAAA,GAAA,CAAO,GAAA,UAAa,MAAA,eAAyB,OAAA,CAAQ,CAAA;EAKrD,eAAA,GAAA,CAAmB,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAoBxD,aAAA,GAAA,CAAiB,IAAA,UAAc,QAAA,QAAgB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAkBpE,KAAA,CAAA,GAAS,OAAA;EAAA,QAQP,UAAA;EAMF,MAAA,CAAA,GAAU,OAAA;AAAA;;;;cA4BL,sBAAA,YAAkC,qBAAA;EAAA,iBAC5B,aAAA;cAEL,oBAAA;EAON,GAAA,CAAI,EAAA,UAAY,KAAA,EAAO,iBAAA,GAAoB,OAAA,CAAQ,aAAA;EAenD,GAAA,CAAI,EAAA,WAAa,OAAA,CAAQ,aAAA;EAazB,IAAA,CAAK,EAAA,WAAa,OAAA,CAAQ,UAAA;EAQ1B,MAAA,CAAO,EAAA,WAAa,OAAA;AAAA"}