syncorejs 0.2.0 → 0.2.2

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 (135) 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 +323 -42
  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/doctor.mjs +513 -46
  8. package/dist/_vendor/cli/doctor.mjs.map +1 -1
  9. package/dist/_vendor/cli/messages.mjs +5 -4
  10. package/dist/_vendor/cli/messages.mjs.map +1 -1
  11. package/dist/_vendor/cli/project.mjs +110 -12
  12. package/dist/_vendor/cli/project.mjs.map +1 -1
  13. package/dist/_vendor/cli/render.mjs +57 -9
  14. package/dist/_vendor/cli/render.mjs.map +1 -1
  15. package/dist/_vendor/cli/targets.mjs +4 -3
  16. package/dist/_vendor/cli/targets.mjs.map +1 -1
  17. package/dist/_vendor/core/cli.d.mts +13 -3
  18. package/dist/_vendor/core/cli.d.mts.map +1 -1
  19. package/dist/_vendor/core/cli.mjs +242 -91
  20. package/dist/_vendor/core/cli.mjs.map +1 -1
  21. package/dist/_vendor/core/devtools-auth.mjs +60 -0
  22. package/dist/_vendor/core/devtools-auth.mjs.map +1 -0
  23. package/dist/_vendor/core/index.d.mts +5 -3
  24. package/dist/_vendor/core/index.mjs +22 -2
  25. package/dist/_vendor/core/index.mjs.map +1 -1
  26. package/dist/_vendor/core/runtime/components.d.mts +111 -0
  27. package/dist/_vendor/core/runtime/components.d.mts.map +1 -0
  28. package/dist/_vendor/core/runtime/components.mjs +186 -0
  29. package/dist/_vendor/core/runtime/components.mjs.map +1 -0
  30. package/dist/_vendor/core/runtime/devtools.d.mts +4 -4
  31. package/dist/_vendor/core/runtime/devtools.d.mts.map +1 -1
  32. package/dist/_vendor/core/runtime/devtools.mjs +52 -41
  33. package/dist/_vendor/core/runtime/devtools.mjs.map +1 -1
  34. package/dist/_vendor/core/runtime/functions.d.mts +10 -10
  35. package/dist/_vendor/core/runtime/functions.d.mts.map +1 -1
  36. package/dist/_vendor/core/runtime/functions.mjs +2 -2
  37. package/dist/_vendor/core/runtime/functions.mjs.map +1 -1
  38. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs +77 -0
  39. package/dist/_vendor/core/runtime/internal/engines/devtoolsEngine.mjs.map +1 -0
  40. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs +617 -0
  41. package/dist/_vendor/core/runtime/internal/engines/executionEngine.mjs.map +1 -0
  42. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs +186 -0
  43. package/dist/_vendor/core/runtime/internal/engines/reactivityEngine.mjs.map +1 -0
  44. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs +220 -0
  45. package/dist/_vendor/core/runtime/internal/engines/schedulerEngine.mjs.map +1 -0
  46. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs +203 -0
  47. package/dist/_vendor/core/runtime/internal/engines/schemaEngine.mjs.map +1 -0
  48. package/dist/_vendor/core/runtime/internal/engines/shared.mjs +177 -0
  49. package/dist/_vendor/core/runtime/internal/engines/shared.mjs.map +1 -0
  50. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs +144 -0
  51. package/dist/_vendor/core/runtime/internal/engines/storageEngine.mjs.map +1 -0
  52. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs +220 -0
  53. package/dist/_vendor/core/runtime/internal/runtimeKernel.mjs.map +1 -0
  54. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs +32 -0
  55. package/dist/_vendor/core/runtime/internal/runtimeStatus.mjs.map +1 -0
  56. package/dist/_vendor/core/runtime/internal/systemMeta.mjs +61 -0
  57. package/dist/_vendor/core/runtime/internal/systemMeta.mjs.map +1 -0
  58. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs +37 -0
  59. package/dist/_vendor/core/runtime/internal/transactionCoordinator.mjs.map +1 -0
  60. package/dist/_vendor/core/runtime/runtime.d.mts +159 -205
  61. package/dist/_vendor/core/runtime/runtime.d.mts.map +1 -1
  62. package/dist/_vendor/core/runtime/runtime.mjs +16 -1371
  63. package/dist/_vendor/core/runtime/runtime.mjs.map +1 -1
  64. package/dist/_vendor/core/transport.d.mts +111 -0
  65. package/dist/_vendor/core/transport.d.mts.map +1 -0
  66. package/dist/_vendor/core/transport.mjs +419 -0
  67. package/dist/_vendor/core/transport.mjs.map +1 -0
  68. package/dist/_vendor/devtools-protocol/index.d.ts +39 -1
  69. package/dist/_vendor/devtools-protocol/index.d.ts.map +1 -1
  70. package/dist/_vendor/devtools-protocol/index.js +25 -9
  71. package/dist/_vendor/devtools-protocol/index.js.map +1 -1
  72. package/dist/_vendor/next/index.d.ts +1 -1
  73. package/dist/_vendor/next/index.d.ts.map +1 -1
  74. package/dist/_vendor/next/index.js +31 -13
  75. package/dist/_vendor/next/index.js.map +1 -1
  76. package/dist/_vendor/platform-expo/index.d.ts +12 -12
  77. package/dist/_vendor/platform-expo/index.d.ts.map +1 -1
  78. package/dist/_vendor/platform-expo/index.js +4 -2
  79. package/dist/_vendor/platform-expo/index.js.map +1 -1
  80. package/dist/_vendor/platform-expo/react.d.ts.map +1 -1
  81. package/dist/_vendor/platform-expo/react.js +11 -10
  82. package/dist/_vendor/platform-expo/react.js.map +1 -1
  83. package/dist/_vendor/platform-node/index.d.mts +23 -19
  84. package/dist/_vendor/platform-node/index.d.mts.map +1 -1
  85. package/dist/_vendor/platform-node/index.mjs +13 -5
  86. package/dist/_vendor/platform-node/index.mjs.map +1 -1
  87. package/dist/_vendor/platform-node/ipc-react.d.mts.map +1 -1
  88. package/dist/_vendor/platform-node/ipc-react.mjs +15 -2
  89. package/dist/_vendor/platform-node/ipc-react.mjs.map +1 -1
  90. package/dist/_vendor/platform-node/ipc.d.mts +11 -35
  91. package/dist/_vendor/platform-node/ipc.d.mts.map +1 -1
  92. package/dist/_vendor/platform-node/ipc.mjs +3 -273
  93. package/dist/_vendor/platform-node/ipc.mjs.map +1 -1
  94. package/dist/_vendor/platform-web/external-change.d.ts +2 -1
  95. package/dist/_vendor/platform-web/external-change.d.ts.map +1 -1
  96. package/dist/_vendor/platform-web/external-change.js +2 -1
  97. package/dist/_vendor/platform-web/external-change.js.map +1 -1
  98. package/dist/_vendor/platform-web/index.d.ts +21 -21
  99. package/dist/_vendor/platform-web/index.d.ts.map +1 -1
  100. package/dist/_vendor/platform-web/index.js +44 -7
  101. package/dist/_vendor/platform-web/index.js.map +1 -1
  102. package/dist/_vendor/platform-web/react.d.ts.map +1 -1
  103. package/dist/_vendor/platform-web/react.js +29 -13
  104. package/dist/_vendor/platform-web/react.js.map +1 -1
  105. package/dist/_vendor/platform-web/worker.d.ts +11 -35
  106. package/dist/_vendor/platform-web/worker.d.ts.map +1 -1
  107. package/dist/_vendor/platform-web/worker.js +3 -267
  108. package/dist/_vendor/platform-web/worker.js.map +1 -1
  109. package/dist/_vendor/react/index.d.ts +36 -20
  110. package/dist/_vendor/react/index.d.ts.map +1 -1
  111. package/dist/_vendor/react/index.js +279 -57
  112. package/dist/_vendor/react/index.js.map +1 -1
  113. package/dist/_vendor/schema/definition.d.ts +48 -63
  114. package/dist/_vendor/schema/definition.d.ts.map +1 -1
  115. package/dist/_vendor/schema/definition.js +22 -39
  116. package/dist/_vendor/schema/definition.js.map +1 -1
  117. package/dist/_vendor/schema/index.d.ts +4 -4
  118. package/dist/_vendor/schema/index.js +2 -2
  119. package/dist/_vendor/schema/planner.d.ts +19 -2
  120. package/dist/_vendor/schema/planner.d.ts.map +1 -1
  121. package/dist/_vendor/schema/planner.js +79 -3
  122. package/dist/_vendor/schema/planner.js.map +1 -1
  123. package/dist/_vendor/schema/validators.d.ts +141 -121
  124. package/dist/_vendor/schema/validators.d.ts.map +1 -1
  125. package/dist/_vendor/schema/validators.js +300 -42
  126. package/dist/_vendor/schema/validators.js.map +1 -1
  127. package/dist/_vendor/svelte/index.d.ts +47 -19
  128. package/dist/_vendor/svelte/index.d.ts.map +1 -1
  129. package/dist/_vendor/svelte/index.js +250 -20
  130. package/dist/_vendor/svelte/index.js.map +1 -1
  131. package/dist/components.d.ts +2 -0
  132. package/dist/components.js +2 -0
  133. package/dist/index.d.ts +3 -2
  134. package/dist/index.js +2 -1
  135. package/package.json +8 -3
@@ -0,0 +1,419 @@
1
+ import { generateId } from "./runtime/id.mjs";
2
+ import { RuntimeStatusController } from "./runtime/internal/runtimeStatus.mjs";
3
+ //#region src/transport.ts
4
+ var SyncoreBridgeClient = class {
5
+ pendingRequests = /* @__PURE__ */ new Map();
6
+ watchRecordsByKey = /* @__PURE__ */ new Map();
7
+ watchKeyBySubscriptionId = /* @__PURE__ */ new Map();
8
+ runtimeStatus = new RuntimeStatusController({
9
+ kind: "starting",
10
+ reason: "booting"
11
+ });
12
+ disposed = false;
13
+ handleMessage = (event) => {
14
+ const message = event.data;
15
+ if (!message || typeof message !== "object" || !("type" in message)) return;
16
+ switch (message.type) {
17
+ case "runtime.ready":
18
+ this.runtimeStatus.setStatus({ kind: "ready" });
19
+ return;
20
+ case "runtime.error":
21
+ this.runtimeStatus.setStatus({
22
+ kind: "error",
23
+ reason: "runtime-unavailable",
24
+ error: new Error(message.error)
25
+ });
26
+ for (const watchRecord of this.watchRecordsByKey.values()) for (const listener of watchRecord.listeners) listener();
27
+ this.rejectAllPending(new Error(message.error));
28
+ return;
29
+ case "runtime.status":
30
+ this.runtimeStatus.setStatus(message.status);
31
+ for (const watchRecord of this.watchRecordsByKey.values()) for (const listener of watchRecord.listeners) listener();
32
+ if (message.status.error) this.rejectAllPending(message.status.error);
33
+ return;
34
+ case "invoke.result": {
35
+ const pending = this.pendingRequests.get(message.requestId);
36
+ if (!pending) return;
37
+ this.pendingRequests.delete(message.requestId);
38
+ if (message.success) pending.resolve(message.value);
39
+ else pending.reject(new Error(message.error));
40
+ return;
41
+ }
42
+ case "watch.update": {
43
+ const watchKey = this.watchKeyBySubscriptionId.get(message.subscriptionId);
44
+ if (!watchKey) return;
45
+ const watchRecord = this.watchRecordsByKey.get(watchKey);
46
+ if (!watchRecord) return;
47
+ if (message.success) {
48
+ watchRecord.result = message.value;
49
+ watchRecord.error = void 0;
50
+ } else watchRecord.error = new Error(message.error);
51
+ for (const listener of watchRecord.listeners) listener();
52
+ }
53
+ }
54
+ };
55
+ constructor(endpoint) {
56
+ this.endpoint = endpoint;
57
+ this.endpoint.addEventListener("message", this.handleMessage);
58
+ }
59
+ query(reference, ...args) {
60
+ return this.invoke("query", reference, normalizeOptionalArgs(args));
61
+ }
62
+ mutation(reference, ...args) {
63
+ return this.invoke("mutation", reference, normalizeOptionalArgs(args));
64
+ }
65
+ action(reference, ...args) {
66
+ return this.invoke("action", reference, normalizeOptionalArgs(args));
67
+ }
68
+ watchQuery(reference, ...args) {
69
+ this.ensureNotDisposed();
70
+ const normalizedArgs = normalizeOptionalArgs(args);
71
+ const watchKey = createWatchKey(reference, normalizedArgs);
72
+ let watchRecord = this.watchRecordsByKey.get(watchKey);
73
+ if (!watchRecord) {
74
+ watchRecord = {
75
+ subscriptionId: generateId(),
76
+ listeners: /* @__PURE__ */ new Set(),
77
+ consumers: 0,
78
+ result: void 0,
79
+ error: void 0
80
+ };
81
+ this.watchRecordsByKey.set(watchKey, watchRecord);
82
+ this.watchKeyBySubscriptionId.set(watchRecord.subscriptionId, watchKey);
83
+ this.endpoint.postMessage({
84
+ type: "watch.subscribe",
85
+ subscriptionId: watchRecord.subscriptionId,
86
+ reference,
87
+ args: normalizedArgs
88
+ });
89
+ }
90
+ watchRecord.consumers += 1;
91
+ let disposed = false;
92
+ const ownedListeners = /* @__PURE__ */ new Set();
93
+ return {
94
+ onUpdate: (callback) => {
95
+ watchRecord.listeners.add(callback);
96
+ ownedListeners.add(callback);
97
+ queueMicrotask(callback);
98
+ return () => {
99
+ watchRecord.listeners.delete(callback);
100
+ ownedListeners.delete(callback);
101
+ };
102
+ },
103
+ localQueryResult: () => watchRecord.result,
104
+ localQueryError: () => watchRecord.error,
105
+ dispose: () => {
106
+ if (disposed) return;
107
+ disposed = true;
108
+ for (const callback of ownedListeners) watchRecord.listeners.delete(callback);
109
+ ownedListeners.clear();
110
+ watchRecord.consumers = Math.max(0, watchRecord.consumers - 1);
111
+ if (watchRecord.consumers > 0) return;
112
+ this.endpoint.postMessage({
113
+ type: "watch.unsubscribe",
114
+ subscriptionId: watchRecord.subscriptionId
115
+ });
116
+ this.watchKeyBySubscriptionId.delete(watchRecord.subscriptionId);
117
+ this.watchRecordsByKey.delete(watchKey);
118
+ }
119
+ };
120
+ }
121
+ watchRuntimeStatus() {
122
+ return this.runtimeStatus.watch();
123
+ }
124
+ dispose(errorMessage = "Syncore bridge client was disposed.") {
125
+ if (this.disposed) return;
126
+ this.disposed = true;
127
+ this.runtimeStatus.setStatus({
128
+ kind: "unavailable",
129
+ reason: "disposed",
130
+ error: new Error(errorMessage)
131
+ });
132
+ this.endpoint.removeEventListener("message", this.handleMessage);
133
+ for (const watchRecord of this.watchRecordsByKey.values()) this.endpoint.postMessage({
134
+ type: "watch.unsubscribe",
135
+ subscriptionId: watchRecord.subscriptionId
136
+ });
137
+ this.watchKeyBySubscriptionId.clear();
138
+ this.watchRecordsByKey.clear();
139
+ this.rejectAllPending(new Error(errorMessage));
140
+ }
141
+ invoke(kind, reference, args) {
142
+ this.ensureNotDisposed();
143
+ const requestId = generateId();
144
+ const promise = new Promise((resolve, reject) => {
145
+ this.pendingRequests.set(requestId, {
146
+ resolve,
147
+ reject
148
+ });
149
+ });
150
+ this.endpoint.postMessage(createInvokeRequest(requestId, kind, reference, args));
151
+ return promise;
152
+ }
153
+ rejectAllPending(error) {
154
+ for (const pending of this.pendingRequests.values()) pending.reject(error);
155
+ this.pendingRequests.clear();
156
+ }
157
+ ensureNotDisposed() {
158
+ if (this.disposed) throw new Error("Syncore bridge client was disposed.");
159
+ }
160
+ };
161
+ function createUnavailableSyncoreClient(status) {
162
+ const runtimeStatus = new RuntimeStatusController(status);
163
+ const error = status.error ?? /* @__PURE__ */ new Error(status.reason ? `Syncore client is unavailable (${status.reason}).` : "Syncore client is unavailable.");
164
+ return {
165
+ query: async () => Promise.reject(error),
166
+ mutation: async () => Promise.reject(error),
167
+ action: async () => Promise.reject(error),
168
+ watchQuery: () => ({
169
+ onUpdate: (callback) => {
170
+ queueMicrotask(callback);
171
+ return () => void 0;
172
+ },
173
+ localQueryResult: () => void 0,
174
+ localQueryError: () => void 0
175
+ }),
176
+ watchRuntimeStatus: () => runtimeStatus.watch()
177
+ };
178
+ }
179
+ function createDeferredSyncoreClient(options) {
180
+ const runtimeStatus = new RuntimeStatusController(options.initialStatus ?? {
181
+ kind: "starting",
182
+ reason: "booting"
183
+ });
184
+ const resolvedFailureReason = options.failureReason ?? "runtime-unavailable";
185
+ const clientPromise = Promise.resolve().then(() => options.loadClient()).then((client) => {
186
+ const statusWatch = client.watchRuntimeStatus();
187
+ const syncStatus = () => {
188
+ const nextStatus = statusWatch.localQueryResult();
189
+ if (nextStatus) runtimeStatus.setStatus(nextStatus);
190
+ };
191
+ syncStatus();
192
+ statusWatch.onUpdate(syncStatus);
193
+ return client;
194
+ }).catch((error) => {
195
+ const resolvedError = error instanceof Error ? error : new Error(String(error));
196
+ runtimeStatus.setStatus({
197
+ kind: "error",
198
+ reason: resolvedFailureReason,
199
+ error: resolvedError
200
+ });
201
+ throw resolvedError;
202
+ });
203
+ const waitForClient = () => clientPromise;
204
+ return {
205
+ query: async (reference, ...args) => waitForClient().then((client) => client.query(reference, ...args)),
206
+ mutation: async (reference, ...args) => waitForClient().then((client) => client.mutation(reference, ...args)),
207
+ action: async (reference, ...args) => waitForClient().then((client) => client.action(reference, ...args)),
208
+ watchQuery(reference, ...args) {
209
+ let innerWatch;
210
+ let detachInner;
211
+ let result;
212
+ let error;
213
+ const listeners = /* @__PURE__ */ new Set();
214
+ let disposed = false;
215
+ const notify = () => {
216
+ for (const listener of listeners) listener();
217
+ };
218
+ waitForClient().then((client) => {
219
+ if (disposed) return;
220
+ innerWatch = client.watchQuery(reference, ...args);
221
+ const sync = () => {
222
+ result = innerWatch?.localQueryResult();
223
+ error = innerWatch?.localQueryError();
224
+ notify();
225
+ };
226
+ sync();
227
+ detachInner = innerWatch.onUpdate(sync);
228
+ }).catch((nextError) => {
229
+ error = void 0;
230
+ notify();
231
+ });
232
+ return {
233
+ onUpdate(callback) {
234
+ listeners.add(callback);
235
+ queueMicrotask(callback);
236
+ return () => {
237
+ listeners.delete(callback);
238
+ };
239
+ },
240
+ localQueryResult: () => result,
241
+ localQueryError: () => error,
242
+ dispose() {
243
+ if (disposed) return;
244
+ disposed = true;
245
+ detachInner?.();
246
+ innerWatch?.dispose?.();
247
+ listeners.clear();
248
+ }
249
+ };
250
+ },
251
+ watchRuntimeStatus: () => runtimeStatus.watch()
252
+ };
253
+ }
254
+ function attachRuntimeBridge(options) {
255
+ const subscriptions = /* @__PURE__ */ new Map();
256
+ const runtimePromise = Promise.resolve(options.createRuntime()).then(async (runtime) => {
257
+ await runtime.start();
258
+ return runtime;
259
+ });
260
+ const clientPromise = runtimePromise.then((runtime) => runtime.createClient());
261
+ const ready = clientPromise.then(() => {
262
+ options.endpoint.postMessage({
263
+ type: "runtime.status",
264
+ status: { kind: "ready" }
265
+ });
266
+ options.endpoint.postMessage({ type: "runtime.ready" });
267
+ }).catch((error) => {
268
+ options.endpoint.postMessage({
269
+ type: "runtime.status",
270
+ status: {
271
+ kind: "error",
272
+ reason: "runtime-unavailable",
273
+ ...error instanceof Error ? { error } : {}
274
+ }
275
+ });
276
+ options.endpoint.postMessage({
277
+ type: "runtime.error",
278
+ error: error instanceof Error ? error.message : String(error)
279
+ });
280
+ throw error;
281
+ });
282
+ const handleMessage = (event) => {
283
+ (async () => {
284
+ const message = event.data;
285
+ if (!message || typeof message !== "object" || !("type" in message)) return;
286
+ try {
287
+ const client = await clientPromise;
288
+ switch (message.type) {
289
+ case "invoke": {
290
+ const value = message.kind === "query" ? await client.query(message.reference, message.args) : message.kind === "mutation" ? await client.mutation(message.reference, message.args) : await client.action(message.reference, message.args);
291
+ options.endpoint.postMessage({
292
+ type: "invoke.result",
293
+ requestId: message.requestId,
294
+ success: true,
295
+ value
296
+ });
297
+ return;
298
+ }
299
+ case "watch.subscribe": {
300
+ if (subscriptions.has(message.subscriptionId)) return;
301
+ const watch = client.watchQuery(message.reference, message.args);
302
+ const sendCurrentState = () => {
303
+ const error = watch.localQueryError();
304
+ if (error) {
305
+ options.endpoint.postMessage({
306
+ type: "watch.update",
307
+ subscriptionId: message.subscriptionId,
308
+ success: false,
309
+ error: error.message
310
+ });
311
+ return;
312
+ }
313
+ options.endpoint.postMessage({
314
+ type: "watch.update",
315
+ subscriptionId: message.subscriptionId,
316
+ success: true,
317
+ value: watch.localQueryResult()
318
+ });
319
+ };
320
+ const unsubscribe = watch.onUpdate(sendCurrentState);
321
+ subscriptions.set(message.subscriptionId, {
322
+ watch,
323
+ unsubscribe
324
+ });
325
+ sendCurrentState();
326
+ return;
327
+ }
328
+ case "watch.unsubscribe": {
329
+ const subscription = subscriptions.get(message.subscriptionId);
330
+ if (!subscription) return;
331
+ subscription.unsubscribe();
332
+ subscriptions.delete(message.subscriptionId);
333
+ }
334
+ }
335
+ } catch (error) {
336
+ const errorMessage = error instanceof Error ? error.message : String(error);
337
+ if (message.type === "invoke") options.endpoint.postMessage({
338
+ type: "invoke.result",
339
+ requestId: message.requestId,
340
+ success: false,
341
+ error: errorMessage
342
+ });
343
+ if (message.type === "watch.subscribe") options.endpoint.postMessage({
344
+ type: "watch.update",
345
+ subscriptionId: message.subscriptionId,
346
+ success: false,
347
+ error: errorMessage
348
+ });
349
+ }
350
+ })();
351
+ };
352
+ options.endpoint.addEventListener("message", handleMessage);
353
+ options.endpoint.postMessage({
354
+ type: "runtime.status",
355
+ status: {
356
+ kind: "starting",
357
+ reason: "booting"
358
+ }
359
+ });
360
+ return {
361
+ ready,
362
+ async dispose() {
363
+ options.endpoint.postMessage({
364
+ type: "runtime.status",
365
+ status: {
366
+ kind: "unavailable",
367
+ reason: "disposed"
368
+ }
369
+ });
370
+ options.endpoint.removeEventListener("message", handleMessage);
371
+ for (const subscription of subscriptions.values()) subscription.unsubscribe();
372
+ subscriptions.clear();
373
+ await (await runtimePromise).stop();
374
+ }
375
+ };
376
+ }
377
+ function createInvokeRequest(requestId, kind, reference, args) {
378
+ switch (kind) {
379
+ case "query": return {
380
+ type: "invoke",
381
+ requestId,
382
+ kind,
383
+ reference,
384
+ args
385
+ };
386
+ case "mutation": return {
387
+ type: "invoke",
388
+ requestId,
389
+ kind,
390
+ reference,
391
+ args
392
+ };
393
+ case "action": return {
394
+ type: "invoke",
395
+ requestId,
396
+ kind,
397
+ reference,
398
+ args
399
+ };
400
+ }
401
+ }
402
+ function createWatchKey(reference, args) {
403
+ return `${reference.name}:${stableStringify(args)}`;
404
+ }
405
+ function normalizeOptionalArgs(args) {
406
+ return args[0] ?? {};
407
+ }
408
+ function stableStringify(value) {
409
+ return JSON.stringify(sortValue(value));
410
+ }
411
+ function sortValue(value) {
412
+ if (Array.isArray(value)) return value.map(sortValue);
413
+ if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, nested]) => [key, sortValue(nested)]));
414
+ return value;
415
+ }
416
+ //#endregion
417
+ export { SyncoreBridgeClient, attachRuntimeBridge, createDeferredSyncoreClient, createInvokeRequest, createUnavailableSyncoreClient, createWatchKey, normalizeOptionalArgs, stableStringify };
418
+
419
+ //# sourceMappingURL=transport.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.mjs","names":[],"sources":["../src/transport.ts"],"sourcesContent":["import {\n type SyncoreClient,\n type SyncoreRuntime,\n type JsonObject,\n type SyncoreRuntimeStatus,\n type SyncoreWatch\n} from \"./runtime/runtime.js\";\nimport type { SyncoreSchema } from \"@syncore/schema\";\nimport { generateId } from \"./runtime/id.js\";\nimport type { FunctionReference } from \"./runtime/functions.js\";\nimport { RuntimeStatusController } from \"./runtime/internal/runtimeStatus.js\";\n\nexport interface SyncoreBridgeMessageEndpoint {\n postMessage(message: unknown): void;\n addEventListener(\n type: \"message\",\n listener: (event: MessageEvent<unknown>) => void\n ): void;\n removeEventListener(\n type: \"message\",\n listener: (event: MessageEvent<unknown>) => void\n ): void;\n}\n\nexport type SyncoreBridgeRequest =\n | {\n type: \"invoke\";\n requestId: string;\n kind: \"query\";\n reference: FunctionReference<\"query\", unknown, unknown>;\n args: JsonObject;\n }\n | {\n type: \"invoke\";\n requestId: string;\n kind: \"mutation\";\n reference: FunctionReference<\"mutation\", unknown, unknown>;\n args: JsonObject;\n }\n | {\n type: \"invoke\";\n requestId: string;\n kind: \"action\";\n reference: FunctionReference<\"action\", unknown, unknown>;\n args: JsonObject;\n }\n | {\n type: \"watch.subscribe\";\n subscriptionId: string;\n reference: FunctionReference<\"query\", unknown, unknown>;\n args: JsonObject;\n }\n | {\n type: \"watch.unsubscribe\";\n subscriptionId: string;\n };\n\nexport type SyncoreBridgeResponse =\n | { type: \"runtime.ready\" }\n | { type: \"runtime.error\"; error: string }\n | { type: \"runtime.status\"; status: SyncoreRuntimeStatus }\n | {\n type: \"invoke.result\";\n requestId: string;\n success: true;\n value: unknown;\n }\n | {\n type: \"invoke.result\";\n requestId: string;\n success: false;\n error: string;\n }\n | {\n type: \"watch.update\";\n subscriptionId: string;\n success: true;\n value: unknown;\n }\n | {\n type: \"watch.update\";\n subscriptionId: string;\n success: false;\n error: string;\n };\n\ntype PendingRequest = {\n resolve(value: unknown): void;\n reject(error: Error): void;\n};\n\ntype WatchRecord = {\n subscriptionId: string;\n listeners: Set<() => void>;\n consumers: number;\n result: unknown;\n error: Error | undefined;\n};\n\ntype OptionalArgsTuple<TArgs> =\n Record<never, never> extends TArgs ? [args?: TArgs] : [args: TArgs];\n\nexport type BridgeQueryWatch<TValue> = SyncoreWatch<TValue> & {\n dispose(): void;\n};\n\nexport class SyncoreBridgeClient implements SyncoreClient {\n private readonly pendingRequests = new Map<string, PendingRequest>();\n private readonly watchRecordsByKey = new Map<string, WatchRecord>();\n private readonly watchKeyBySubscriptionId = new Map<string, string>();\n private readonly runtimeStatus = new RuntimeStatusController({\n kind: \"starting\",\n reason: \"booting\"\n });\n private disposed = false;\n\n private readonly handleMessage = (event: MessageEvent<unknown>) => {\n const message = event.data as SyncoreBridgeResponse;\n if (!message || typeof message !== \"object\" || !(\"type\" in message)) {\n return;\n }\n\n switch (message.type) {\n case \"runtime.ready\":\n this.runtimeStatus.setStatus({\n kind: \"ready\"\n });\n return;\n case \"runtime.error\":\n this.runtimeStatus.setStatus({\n kind: \"error\",\n reason: \"runtime-unavailable\",\n error: new Error(message.error)\n });\n for (const watchRecord of this.watchRecordsByKey.values()) {\n for (const listener of watchRecord.listeners) {\n listener();\n }\n }\n this.rejectAllPending(new Error(message.error));\n return;\n case \"runtime.status\":\n this.runtimeStatus.setStatus(message.status);\n for (const watchRecord of this.watchRecordsByKey.values()) {\n for (const listener of watchRecord.listeners) {\n listener();\n }\n }\n if (message.status.error) {\n this.rejectAllPending(message.status.error);\n }\n return;\n case \"invoke.result\": {\n const pending = this.pendingRequests.get(message.requestId);\n if (!pending) {\n return;\n }\n this.pendingRequests.delete(message.requestId);\n if (message.success) {\n pending.resolve(message.value);\n } else {\n pending.reject(new Error(message.error));\n }\n return;\n }\n case \"watch.update\": {\n const watchKey = this.watchKeyBySubscriptionId.get(\n message.subscriptionId\n );\n if (!watchKey) {\n return;\n }\n const watchRecord = this.watchRecordsByKey.get(watchKey);\n if (!watchRecord) {\n return;\n }\n if (message.success) {\n watchRecord.result = message.value;\n watchRecord.error = undefined;\n } else {\n watchRecord.error = new Error(message.error);\n }\n for (const listener of watchRecord.listeners) {\n listener();\n }\n }\n }\n };\n\n constructor(private readonly endpoint: SyncoreBridgeMessageEndpoint) {\n this.endpoint.addEventListener(\"message\", this.handleMessage);\n }\n\n query<TArgs, TResult>(\n reference: FunctionReference<\"query\", TArgs, TResult>,\n ...args: OptionalArgsTuple<TArgs>\n ): Promise<TResult> {\n return this.invoke(\"query\", reference, normalizeOptionalArgs(args) as JsonObject);\n }\n\n mutation<TArgs, TResult>(\n reference: FunctionReference<\"mutation\", TArgs, TResult>,\n ...args: OptionalArgsTuple<TArgs>\n ): Promise<TResult> {\n return this.invoke(\n \"mutation\",\n reference,\n normalizeOptionalArgs(args) as JsonObject\n );\n }\n\n action<TArgs, TResult>(\n reference: FunctionReference<\"action\", TArgs, TResult>,\n ...args: OptionalArgsTuple<TArgs>\n ): Promise<TResult> {\n return this.invoke(\n \"action\",\n reference,\n normalizeOptionalArgs(args) as JsonObject\n );\n }\n\n watchQuery<TArgs, TResult>(\n reference: FunctionReference<\"query\", TArgs, TResult>,\n ...args: OptionalArgsTuple<TArgs>\n ): BridgeQueryWatch<TResult> {\n this.ensureNotDisposed();\n const normalizedArgs = normalizeOptionalArgs(args) as JsonObject;\n const watchKey = createWatchKey(reference, normalizedArgs);\n let watchRecord = this.watchRecordsByKey.get(watchKey);\n if (!watchRecord) {\n watchRecord = {\n subscriptionId: generateId(),\n listeners: new Set<() => void>(),\n consumers: 0,\n result: undefined,\n error: undefined\n };\n this.watchRecordsByKey.set(watchKey, watchRecord);\n this.watchKeyBySubscriptionId.set(watchRecord.subscriptionId, watchKey);\n this.endpoint.postMessage({\n type: \"watch.subscribe\",\n subscriptionId: watchRecord.subscriptionId,\n reference,\n args: normalizedArgs\n } satisfies SyncoreBridgeRequest);\n }\n\n watchRecord.consumers += 1;\n let disposed = false;\n const ownedListeners = new Set<() => void>();\n\n return {\n onUpdate: (callback: () => void) => {\n watchRecord.listeners.add(callback);\n ownedListeners.add(callback);\n queueMicrotask(callback);\n return () => {\n watchRecord.listeners.delete(callback);\n ownedListeners.delete(callback);\n };\n },\n localQueryResult: () => watchRecord.result as TResult | undefined,\n localQueryError: () => watchRecord.error,\n dispose: () => {\n if (disposed) {\n return;\n }\n disposed = true;\n for (const callback of ownedListeners) {\n watchRecord.listeners.delete(callback);\n }\n ownedListeners.clear();\n watchRecord.consumers = Math.max(0, watchRecord.consumers - 1);\n if (watchRecord.consumers > 0) {\n return;\n }\n this.endpoint.postMessage({\n type: \"watch.unsubscribe\",\n subscriptionId: watchRecord.subscriptionId\n } satisfies SyncoreBridgeRequest);\n this.watchKeyBySubscriptionId.delete(watchRecord.subscriptionId);\n this.watchRecordsByKey.delete(watchKey);\n }\n };\n }\n\n watchRuntimeStatus(): SyncoreWatch<SyncoreRuntimeStatus> {\n return this.runtimeStatus.watch();\n }\n\n dispose(errorMessage = \"Syncore bridge client was disposed.\"): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.runtimeStatus.setStatus({\n kind: \"unavailable\",\n reason: \"disposed\",\n error: new Error(errorMessage)\n });\n this.endpoint.removeEventListener(\"message\", this.handleMessage);\n for (const watchRecord of this.watchRecordsByKey.values()) {\n this.endpoint.postMessage({\n type: \"watch.unsubscribe\",\n subscriptionId: watchRecord.subscriptionId\n } satisfies SyncoreBridgeRequest);\n }\n this.watchKeyBySubscriptionId.clear();\n this.watchRecordsByKey.clear();\n this.rejectAllPending(new Error(errorMessage));\n }\n\n private invoke<TArgs, TResult>(\n kind: \"query\" | \"mutation\" | \"action\",\n reference: FunctionReference<\n \"query\" | \"mutation\" | \"action\",\n TArgs,\n TResult\n >,\n args: JsonObject\n ): Promise<TResult> {\n this.ensureNotDisposed();\n const requestId = generateId();\n const promise = new Promise<TResult>((resolve, reject) => {\n this.pendingRequests.set(requestId, { resolve, reject });\n });\n\n this.endpoint.postMessage(\n createInvokeRequest(requestId, kind, reference, args)\n );\n\n return promise;\n }\n\n private rejectAllPending(error: Error): void {\n for (const pending of this.pendingRequests.values()) {\n pending.reject(error);\n }\n this.pendingRequests.clear();\n }\n\n private ensureNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"Syncore bridge client was disposed.\");\n }\n }\n}\n\nexport function createUnavailableSyncoreClient(\n status: SyncoreRuntimeStatus\n): SyncoreClient {\n const runtimeStatus = new RuntimeStatusController(status);\n const error =\n status.error ??\n new Error(\n status.reason\n ? `Syncore client is unavailable (${status.reason}).`\n : \"Syncore client is unavailable.\"\n );\n\n return {\n query: async () => Promise.reject(error),\n mutation: async () => Promise.reject(error),\n action: async () => Promise.reject(error),\n watchQuery: () => ({\n onUpdate: (callback) => {\n queueMicrotask(callback);\n return () => undefined;\n },\n localQueryResult: () => undefined,\n localQueryError: () => undefined\n }),\n watchRuntimeStatus: () => runtimeStatus.watch()\n };\n}\n\nexport function createDeferredSyncoreClient(options: {\n loadClient: () => Promise<SyncoreClient>;\n initialStatus?: SyncoreRuntimeStatus;\n failureReason?: SyncoreRuntimeStatus[\"reason\"];\n}): SyncoreClient {\n const runtimeStatus = new RuntimeStatusController(\n options.initialStatus ?? {\n kind: \"starting\",\n reason: \"booting\"\n }\n );\n const resolvedFailureReason = options.failureReason ?? \"runtime-unavailable\";\n let currentClient: SyncoreClient | undefined;\n let detachStatusListener: (() => void) | undefined;\n\n const clientPromise = Promise.resolve()\n .then(() => options.loadClient())\n .then((client) => {\n currentClient = client;\n const statusWatch = client.watchRuntimeStatus();\n const syncStatus = () => {\n const nextStatus = statusWatch.localQueryResult();\n if (nextStatus) {\n runtimeStatus.setStatus(nextStatus);\n }\n };\n syncStatus();\n detachStatusListener = statusWatch.onUpdate(syncStatus);\n return client;\n })\n .catch((error) => {\n const resolvedError =\n error instanceof Error ? error : new Error(String(error));\n runtimeStatus.setStatus({\n kind: \"error\",\n reason: resolvedFailureReason,\n error: resolvedError\n });\n throw resolvedError;\n });\n\n const waitForClient = () => clientPromise;\n\n return {\n query: async (reference, ...args) =>\n waitForClient().then((client) => client.query(reference, ...args)),\n mutation: async (reference, ...args) =>\n waitForClient().then((client) => client.mutation(reference, ...args)),\n action: async (reference, ...args) =>\n waitForClient().then((client) => client.action(reference, ...args)),\n watchQuery(reference, ...args) {\n let innerWatch: SyncoreWatch<unknown> | undefined;\n let detachInner: (() => void) | undefined;\n let result: unknown;\n let error: Error | undefined;\n const listeners = new Set<() => void>();\n let disposed = false;\n\n const notify = () => {\n for (const listener of listeners) {\n listener();\n }\n };\n\n void waitForClient()\n .then((client) => {\n if (disposed) {\n return;\n }\n innerWatch = client.watchQuery(reference, ...args);\n const sync = () => {\n result = innerWatch?.localQueryResult();\n error = innerWatch?.localQueryError();\n notify();\n };\n sync();\n detachInner = innerWatch.onUpdate(sync);\n })\n .catch((nextError) => {\n error = undefined;\n notify();\n });\n\n return {\n onUpdate(callback) {\n listeners.add(callback);\n queueMicrotask(callback);\n return () => {\n listeners.delete(callback);\n };\n },\n localQueryResult: () => result as typeof reference.__result | undefined,\n localQueryError: () => error,\n dispose() {\n if (disposed) {\n return;\n }\n disposed = true;\n detachInner?.();\n innerWatch?.dispose?.();\n listeners.clear();\n }\n };\n },\n watchRuntimeStatus: () => runtimeStatus.watch()\n };\n}\n\nexport interface AttachRuntimeBridgeOptions<\n TSchema extends SyncoreSchema<any>\n> {\n endpoint: SyncoreBridgeMessageEndpoint;\n createRuntime:\n | (() => Promise<SyncoreRuntime<TSchema>>)\n | (() => SyncoreRuntime<TSchema>);\n}\n\nexport interface AttachedRuntimeBridge {\n ready: Promise<void>;\n dispose(): Promise<void>;\n}\n\nexport function attachRuntimeBridge<\n TSchema extends SyncoreSchema<any>\n>(\n options: AttachRuntimeBridgeOptions<TSchema>\n): AttachedRuntimeBridge {\n const subscriptions = new Map<\n string,\n {\n watch: SyncoreWatch<unknown>;\n unsubscribe: () => void;\n }\n >();\n\n const runtimePromise = Promise.resolve(options.createRuntime()).then(\n async (runtime) => {\n await runtime.start();\n return runtime;\n }\n );\n\n const clientPromise = runtimePromise.then((runtime) => runtime.createClient());\n\n const ready = clientPromise\n .then(() => {\n options.endpoint.postMessage({\n type: \"runtime.status\",\n status: {\n kind: \"ready\"\n }\n } satisfies SyncoreBridgeResponse);\n options.endpoint.postMessage({\n type: \"runtime.ready\"\n } satisfies SyncoreBridgeResponse);\n })\n .catch((error) => {\n options.endpoint.postMessage({\n type: \"runtime.status\",\n status: {\n kind: \"error\",\n reason: \"runtime-unavailable\",\n ...(error instanceof Error ? { error } : {})\n }\n } satisfies SyncoreBridgeResponse);\n options.endpoint.postMessage({\n type: \"runtime.error\",\n error: error instanceof Error ? error.message : String(error)\n } satisfies SyncoreBridgeResponse);\n throw error;\n });\n\n const handleMessage = (event: MessageEvent<unknown>) => {\n void (async () => {\n const message = event.data as SyncoreBridgeRequest;\n if (!message || typeof message !== \"object\" || !(\"type\" in message)) {\n return;\n }\n\n try {\n const client = await clientPromise;\n switch (message.type) {\n case \"invoke\": {\n const value =\n message.kind === \"query\"\n ? await client.query(message.reference, message.args)\n : message.kind === \"mutation\"\n ? await client.mutation(message.reference, message.args)\n : await client.action(message.reference, message.args);\n options.endpoint.postMessage({\n type: \"invoke.result\",\n requestId: message.requestId,\n success: true,\n value\n } satisfies SyncoreBridgeResponse);\n return;\n }\n case \"watch.subscribe\": {\n if (subscriptions.has(message.subscriptionId)) {\n return;\n }\n const watch = client.watchQuery(message.reference, message.args);\n const sendCurrentState = () => {\n const error = watch.localQueryError();\n if (error) {\n options.endpoint.postMessage({\n type: \"watch.update\",\n subscriptionId: message.subscriptionId,\n success: false,\n error: error.message\n } satisfies SyncoreBridgeResponse);\n return;\n }\n options.endpoint.postMessage({\n type: \"watch.update\",\n subscriptionId: message.subscriptionId,\n success: true,\n value: watch.localQueryResult()\n } satisfies SyncoreBridgeResponse);\n };\n const unsubscribe = watch.onUpdate(sendCurrentState);\n subscriptions.set(message.subscriptionId, { watch, unsubscribe });\n sendCurrentState();\n return;\n }\n case \"watch.unsubscribe\": {\n const subscription = subscriptions.get(message.subscriptionId);\n if (!subscription) {\n return;\n }\n subscription.unsubscribe();\n subscriptions.delete(message.subscriptionId);\n }\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (message.type === \"invoke\") {\n options.endpoint.postMessage({\n type: \"invoke.result\",\n requestId: message.requestId,\n success: false,\n error: errorMessage\n } satisfies SyncoreBridgeResponse);\n }\n if (message.type === \"watch.subscribe\") {\n options.endpoint.postMessage({\n type: \"watch.update\",\n subscriptionId: message.subscriptionId,\n success: false,\n error: errorMessage\n } satisfies SyncoreBridgeResponse);\n }\n }\n })();\n };\n\n options.endpoint.addEventListener(\"message\", handleMessage);\n options.endpoint.postMessage({\n type: \"runtime.status\",\n status: {\n kind: \"starting\",\n reason: \"booting\"\n }\n } satisfies SyncoreBridgeResponse);\n\n return {\n ready,\n async dispose() {\n options.endpoint.postMessage({\n type: \"runtime.status\",\n status: {\n kind: \"unavailable\",\n reason: \"disposed\"\n }\n } satisfies SyncoreBridgeResponse);\n options.endpoint.removeEventListener(\"message\", handleMessage);\n for (const subscription of subscriptions.values()) {\n subscription.unsubscribe();\n }\n subscriptions.clear();\n const runtime = await runtimePromise;\n await runtime.stop();\n }\n };\n}\n\nexport function createInvokeRequest(\n requestId: string,\n kind: \"query\" | \"mutation\" | \"action\",\n reference:\n | FunctionReference<\"query\", unknown, unknown>\n | FunctionReference<\"mutation\", unknown, unknown>\n | FunctionReference<\"action\", unknown, unknown>,\n args: JsonObject\n): SyncoreBridgeRequest {\n switch (kind) {\n case \"query\":\n return {\n type: \"invoke\",\n requestId,\n kind,\n reference: reference as FunctionReference<\"query\">,\n args\n };\n case \"mutation\":\n return {\n type: \"invoke\",\n requestId,\n kind,\n reference: reference as FunctionReference<\"mutation\">,\n args\n };\n case \"action\":\n return {\n type: \"invoke\",\n requestId,\n kind,\n reference: reference as FunctionReference<\"action\">,\n args\n };\n }\n}\n\nexport function createWatchKey(\n reference: FunctionReference<\"query\", unknown, unknown>,\n args: JsonObject\n): string {\n return `${reference.name}:${stableStringify(args)}`;\n}\n\nexport function normalizeOptionalArgs<TArgs>(\n args: [] | [TArgs] | readonly unknown[]\n): TArgs {\n return (args[0] ?? {}) as TArgs;\n}\n\nexport function stableStringify(value: unknown): string {\n return JSON.stringify(sortValue(value));\n}\n\nfunction sortValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortValue);\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, nested]) => [key, sortValue(nested)])\n );\n }\n return value;\n}\n"],"mappings":"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"}
@@ -1,5 +1,15 @@
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;
@@ -14,22 +24,30 @@ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
14
24
  type: "query.executed";
15
25
  queryId: string;
16
26
  functionName: string;
27
+ componentPath?: string;
28
+ componentName?: string;
17
29
  dependencies: string[];
18
30
  durationMs: number;
19
31
  }) | (SyncoreDevtoolsEventBase & {
20
32
  type: "query.invalidated";
21
33
  queryId: string;
34
+ componentPath?: string;
35
+ componentName?: string;
22
36
  reason: string;
23
37
  }) | (SyncoreDevtoolsEventBase & {
24
38
  type: "mutation.committed";
25
39
  mutationId: string;
26
40
  functionName: string;
41
+ componentPath?: string;
42
+ componentName?: string;
27
43
  changedTables: string[];
28
44
  durationMs: number;
29
45
  }) | (SyncoreDevtoolsEventBase & {
30
46
  type: "action.completed";
31
47
  actionId: string;
32
48
  functionName: string;
49
+ componentPath?: string;
50
+ componentName?: string;
33
51
  durationMs: number;
34
52
  error?: string;
35
53
  }) | (SyncoreDevtoolsEventBase & {
@@ -38,6 +56,7 @@ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
38
56
  }) | (SyncoreDevtoolsEventBase & {
39
57
  type: "storage.updated";
40
58
  storageId: string;
59
+ componentPath?: string;
41
60
  operation: "put" | "delete";
42
61
  }) | (SyncoreDevtoolsEventBase & {
43
62
  type: "log";
@@ -47,6 +66,9 @@ type SyncoreDevtoolsEvent = (SyncoreDevtoolsEventBase & {
47
66
  interface SyncoreActiveQueryInfo {
48
67
  id: string;
49
68
  functionName: string;
69
+ owner?: "root" | "component";
70
+ componentPath?: string;
71
+ componentName?: string;
50
72
  dependencyKeys: string[];
51
73
  lastRunAt: number;
52
74
  }
@@ -70,6 +92,10 @@ declare function createPublicRuntimeId(runtimeId: string, runtimeIds?: Iterable<
70
92
  declare function createPublicTargetId(targetKey: string, targetKeys: Iterable<string>): string;
71
93
  type SyncoreDevtoolsMessage = {
72
94
  type: "hello";
95
+ protocolVersion?: number;
96
+ minSupportedProtocolVersion?: number;
97
+ maxSupportedProtocolVersion?: number;
98
+ runtimeVersion?: string;
73
99
  runtimeId: string;
74
100
  platform: string;
75
101
  appName?: string;
@@ -260,6 +286,11 @@ interface FunctionDefinition {
260
286
  name: string;
261
287
  type: "query" | "mutation" | "action";
262
288
  file: string;
289
+ owner?: "root" | "component";
290
+ componentPath?: string;
291
+ componentName?: string;
292
+ visibility?: "public" | "internal";
293
+ localName?: string;
263
294
  /** Argument validator schema (JSON Schema-like), if available */
264
295
  args?: Record<string, unknown>;
265
296
  /** Return validator schema, if available */
@@ -267,6 +298,10 @@ interface FunctionDefinition {
267
298
  }
268
299
  interface TableSchema {
269
300
  name: string;
301
+ displayName?: string;
302
+ owner?: "root" | "component";
303
+ componentPath?: string;
304
+ componentName?: string;
270
305
  fields: TableField[];
271
306
  indexes: TableIndex[];
272
307
  documentCount: number;
@@ -284,6 +319,9 @@ interface TableIndex {
284
319
  interface SchedulerJob {
285
320
  id: string;
286
321
  functionName: string;
322
+ owner?: "root" | "component";
323
+ componentPath?: string;
324
+ componentName?: string;
287
325
  args: Record<string, unknown>;
288
326
  scheduledAt: number;
289
327
  runAt: number;
@@ -333,5 +371,5 @@ type SchedulerMisfirePolicy = {
333
371
  windowMs: number;
334
372
  };
335
373
  //#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 };
374
+ export { DataFilter, FunctionDefinition, SYNCORE_DEVTOOLS_MAX_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_MIN_SUPPORTED_PROTOCOL_VERSION, SYNCORE_DEVTOOLS_PROTOCOL_VERSION, SchedulerJob, SchedulerMisfirePolicy, SchedulerRecurringDailySchedule, SchedulerRecurringIntervalSchedule, SchedulerRecurringSchedule, SchedulerRecurringWeeklySchedule, SyncoreActiveQueryInfo, SyncoreDevtoolsClientMessage, SyncoreDevtoolsCommand, SyncoreDevtoolsCommandPayload, SyncoreDevtoolsCommandResultPayload, SyncoreDevtoolsEvent, SyncoreDevtoolsEventOrigin, SyncoreDevtoolsMessage, SyncoreDevtoolsSubscribe, SyncoreDevtoolsSubscriptionPayload, SyncoreDevtoolsSubscriptionResultPayload, SyncoreDevtoolsUnsubscribe, SyncoreRuntimeSummary, TableField, TableIndex, TableSchema, VersionHandshake, createBasePublicId, createPublicId, createPublicRuntimeId, createPublicTargetId, isCompatibleVersionHandshake };
337
375
  //# 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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"}