@bian-womp/spark-remote 0.3.88 → 0.3.89

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 (79) hide show
  1. package/lib/cjs/index.cjs +13 -3
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/cjs/src/server/ServerRuntimeAdapter.d.ts.map +1 -1
  4. package/lib/esm/index.js +13 -3
  5. package/lib/esm/index.js.map +1 -1
  6. package/lib/esm/src/server/ServerRuntimeAdapter.d.ts.map +1 -1
  7. package/lib/src/RemoteEngine.d.ts +35 -0
  8. package/lib/src/RemoteEngine.d.ts.map +1 -0
  9. package/lib/src/RemoteEngine.js +115 -0
  10. package/lib/src/RemoteEngine.js.map +1 -0
  11. package/lib/src/RemoteGraphLifecycleApi.d.ts +47 -0
  12. package/lib/src/RemoteGraphLifecycleApi.d.ts.map +1 -0
  13. package/lib/src/RemoteGraphLifecycleApi.js +190 -0
  14. package/lib/src/RemoteGraphLifecycleApi.js.map +1 -0
  15. package/lib/src/RemoteRuntimeClient.d.ts +85 -0
  16. package/lib/src/RemoteRuntimeClient.d.ts.map +1 -0
  17. package/lib/src/RemoteRuntimeClient.js +212 -0
  18. package/lib/src/RemoteRuntimeClient.js.map +1 -0
  19. package/lib/src/examples/http-polling.d.ts +2 -0
  20. package/lib/src/examples/http-polling.d.ts.map +1 -0
  21. package/lib/src/examples/http-polling.js +67 -0
  22. package/lib/src/examples/http-polling.js.map +1 -0
  23. package/lib/src/examples/shared.d.ts +6 -0
  24. package/lib/src/examples/shared.d.ts.map +1 -0
  25. package/lib/src/examples/shared.js +71 -0
  26. package/lib/src/examples/shared.js.map +1 -0
  27. package/lib/src/examples/unix-socket.d.ts +2 -0
  28. package/lib/src/examples/unix-socket.d.ts.map +1 -0
  29. package/lib/src/examples/unix-socket.js +67 -0
  30. package/lib/src/examples/unix-socket.js.map +1 -0
  31. package/lib/src/examples/websocket.d.ts +2 -0
  32. package/lib/src/examples/websocket.d.ts.map +1 -0
  33. package/lib/src/examples/websocket.js +67 -0
  34. package/lib/src/examples/websocket.js.map +1 -0
  35. package/lib/src/index.d.ts +13 -0
  36. package/lib/src/index.d.ts.map +1 -0
  37. package/lib/src/index.js +12 -0
  38. package/lib/src/index.js.map +1 -0
  39. package/lib/src/server/ServerCommandHandler.d.ts +51 -0
  40. package/lib/src/server/ServerCommandHandler.d.ts.map +1 -0
  41. package/lib/src/server/ServerCommandHandler.js +325 -0
  42. package/lib/src/server/ServerCommandHandler.js.map +1 -0
  43. package/lib/src/server/ServerRuntimeAdapter.d.ts +27 -0
  44. package/lib/src/server/ServerRuntimeAdapter.d.ts.map +1 -0
  45. package/lib/src/server/ServerRuntimeAdapter.js +446 -0
  46. package/lib/src/server/ServerRuntimeAdapter.js.map +1 -0
  47. package/lib/src/server/errors.d.ts +3 -0
  48. package/lib/src/server/errors.d.ts.map +1 -0
  49. package/lib/src/server/errors.js +44 -0
  50. package/lib/src/server/errors.js.map +1 -0
  51. package/lib/src/transport/HttpPollingTransport.d.ts +16 -0
  52. package/lib/src/transport/HttpPollingTransport.d.ts.map +1 -0
  53. package/lib/src/transport/HttpPollingTransport.js +83 -0
  54. package/lib/src/transport/HttpPollingTransport.js.map +1 -0
  55. package/lib/src/transport/Seq.d.ts +6 -0
  56. package/lib/src/transport/Seq.d.ts.map +1 -0
  57. package/lib/src/transport/Seq.js +18 -0
  58. package/lib/src/transport/Seq.js.map +1 -0
  59. package/lib/src/transport/Transport.d.ts +26 -0
  60. package/lib/src/transport/Transport.d.ts.map +1 -0
  61. package/lib/src/transport/Transport.js +2 -0
  62. package/lib/src/transport/Transport.js.map +1 -0
  63. package/lib/src/transport/UnixSocketTransport.d.ts +18 -0
  64. package/lib/src/transport/UnixSocketTransport.d.ts.map +1 -0
  65. package/lib/src/transport/UnixSocketTransport.js +96 -0
  66. package/lib/src/transport/UnixSocketTransport.js.map +1 -0
  67. package/lib/src/transport/WebSocketConnector.d.ts +63 -0
  68. package/lib/src/transport/WebSocketConnector.d.ts.map +1 -0
  69. package/lib/src/transport/WebSocketConnector.js +2 -0
  70. package/lib/src/transport/WebSocketConnector.js.map +1 -0
  71. package/lib/src/transport/WebSocketTransport.d.ts +44 -0
  72. package/lib/src/transport/WebSocketTransport.d.ts.map +1 -0
  73. package/lib/src/transport/WebSocketTransport.js +226 -0
  74. package/lib/src/transport/WebSocketTransport.js.map +1 -0
  75. package/lib/src/utils/inputEncoding.d.ts +7 -0
  76. package/lib/src/utils/inputEncoding.d.ts.map +1 -0
  77. package/lib/src/utils/inputEncoding.js +19 -0
  78. package/lib/src/utils/inputEncoding.js.map +1 -0
  79. package/package.json +3 -3
@@ -0,0 +1,446 @@
1
+ import { GraphBuilder, LocalEngine, parseJsonPath, setValueAtPathWithCreation, buildValueConverter, convertSnapshot, } from "@bian-womp/spark-graph";
2
+ export async function createServerRuntimeAdapter(id, createRegistry, send, extensions) {
3
+ const registry = await createRegistry(id);
4
+ const builder = new GraphBuilder(registry);
5
+ let graphRuntime;
6
+ let engine;
7
+ let extData = {};
8
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
9
+ const getCustomNodeDataFromExtData = (data) => {
10
+ if (!data)
11
+ return undefined;
12
+ const custom = isRecord(data.custom) ? data.custom : undefined;
13
+ if (!custom)
14
+ return undefined;
15
+ const nodes = isRecord(custom.nodes) ? custom.nodes : undefined;
16
+ if (!nodes)
17
+ return undefined;
18
+ const sanitized = {};
19
+ for (const [nodeId, nodeData] of Object.entries(nodes)) {
20
+ if (isRecord(nodeData))
21
+ sanitized[nodeId] = nodeData;
22
+ }
23
+ return Object.keys(sanitized).length > 0 ? sanitized : undefined;
24
+ };
25
+ const areCustomNodeDataEqual = (left, right) => {
26
+ if (!left && !right)
27
+ return true;
28
+ if (!left || !right)
29
+ return false;
30
+ return JSON.stringify(left) === JSON.stringify(right);
31
+ };
32
+ const syncCustomNodeDataToRuntime = () => {
33
+ if (!graphRuntime)
34
+ return;
35
+ const customNodeData = getCustomNodeDataFromExtData(extData);
36
+ const existingCustomNodeData = graphRuntime.getCustomNodeData();
37
+ const sanitizedExisting = Object.keys(existingCustomNodeData).length ? existingCustomNodeData : undefined;
38
+ if (areCustomNodeDataEqual(sanitizedExisting, customNodeData)) {
39
+ return;
40
+ }
41
+ graphRuntime.setCustomNodeData(customNodeData ?? {});
42
+ };
43
+ // Helper to get current context
44
+ const getContext = () => ({
45
+ registry,
46
+ builder,
47
+ graphRuntime,
48
+ engine,
49
+ extData,
50
+ });
51
+ // Original implementations - define as separate functions first to allow cross-references
52
+ const originalAdapter = {
53
+ coerce: async (from, to, value) => {
54
+ const resolved = registry.resolveCoercion(from, to);
55
+ if (!resolved)
56
+ return value;
57
+ if (resolved.kind === "sync")
58
+ return resolved.convert(value);
59
+ const ac = new AbortController();
60
+ return await resolved.convertAsync(value, ac.signal);
61
+ },
62
+ getEnvironment: async () => {
63
+ if (!graphRuntime)
64
+ return {};
65
+ return graphRuntime.getEnvironment();
66
+ },
67
+ applyRegistry: async (deltas) => {
68
+ // Pause runtime if exists
69
+ // Apply each delta to the live registry
70
+ for (const d of deltas || []) {
71
+ if (!d || typeof d !== "object")
72
+ continue;
73
+ if (d.kind === "register-enum") {
74
+ registry.registerEnum({
75
+ id: d.id,
76
+ displayName: d.displayName,
77
+ options: d.options || [],
78
+ bakeTarget: d.bakeTarget,
79
+ opts: d.opts,
80
+ });
81
+ }
82
+ else if (d.kind === "register-type") {
83
+ registry.registerType({
84
+ id: d.id,
85
+ displayName: d.displayName,
86
+ bakeTarget: d.bakeTarget,
87
+ validate: (_v) => true,
88
+ });
89
+ }
90
+ else if (d.kind === "register-node") {
91
+ const desc = d.desc || {};
92
+ registry.registerNode({
93
+ id: String(desc.id || ""),
94
+ categoryId: String(desc.categoryId || "compute"),
95
+ displayName: desc.displayName,
96
+ inputs: desc.inputs || {},
97
+ outputs: desc.outputs || {},
98
+ // impl must be empty per frontend registration contract
99
+ impl: () => { },
100
+ });
101
+ }
102
+ }
103
+ // Notify clients (include deltas in invalidate payload)
104
+ send({
105
+ message: {
106
+ type: "invalidate",
107
+ payload: { reason: "registry-changed", deltas },
108
+ },
109
+ });
110
+ },
111
+ build: async (def, opts) => {
112
+ // If we rebuild the graph, we must not keep the previous runtime/engine alive.
113
+ // This can happen for a single "flow" when:
114
+ // - server bootstraps an empty graph (no snapshot) then client sends Build with real def
115
+ // - snapshot load / applySnapshotFull triggers a build
116
+ // - client intentionally rebuilds the graph
117
+ //
118
+ // Without disposing, we can end up with multiple GraphRuntime instances in memory
119
+ // for the same flow/connection, each holding listeners/resources.
120
+ if (engine) {
121
+ console.info(`[ServerRuntimeAdapter:${id}] Disposing previous engine before building new one`);
122
+ engine.dispose();
123
+ engine = undefined;
124
+ }
125
+ if (graphRuntime) {
126
+ console.info(`[ServerRuntimeAdapter:${id}] Disposing previous graph runtime before building new one`);
127
+ graphRuntime.dispose("runtime-rebuild");
128
+ graphRuntime = undefined;
129
+ }
130
+ const environment = opts?.environment || {};
131
+ graphRuntime = builder.build(def, {
132
+ environment,
133
+ startPaused: opts?.startPaused,
134
+ });
135
+ syncCustomNodeDataToRuntime();
136
+ graphRuntime.on("value", (p) => send({ message: { type: "value", payload: p } }));
137
+ graphRuntime.on("invalidate", (p) => send({ message: { type: "invalidate", payload: p } }));
138
+ graphRuntime.on("error", (p) => send({ message: { type: "error", payload: p } }));
139
+ graphRuntime.on("stats", (p) => send({ message: { type: "stats", payload: p } }));
140
+ },
141
+ setExtData: async (data) => {
142
+ if (!data || typeof data !== "object") {
143
+ // Clear all extData when called with non-object (backward-compatible)
144
+ extData = {};
145
+ syncCustomNodeDataToRuntime();
146
+ return;
147
+ }
148
+ // Merge with existing extData so that callers can update a subset of fields
149
+ // (e.g., { ui } or { runtime }) without dropping the other ones.
150
+ extData = { ...extData, ...data };
151
+ syncCustomNodeDataToRuntime();
152
+ },
153
+ updateExtData: async (updates) => {
154
+ if (!extData || typeof extData !== "object" || Array.isArray(extData)) {
155
+ extData = {};
156
+ }
157
+ let hasCustomUpdate = false;
158
+ for (const { path, value } of updates) {
159
+ const pathSegments = parseJsonPath(path);
160
+ const updated = setValueAtPathWithCreation(extData, pathSegments, value);
161
+ if (updated && pathSegments.length > 0 && pathSegments[0] === "custom") {
162
+ hasCustomUpdate = true;
163
+ }
164
+ }
165
+ if (hasCustomUpdate) {
166
+ syncCustomNodeDataToRuntime();
167
+ }
168
+ return hasCustomUpdate;
169
+ },
170
+ snapshot: async () => {
171
+ const inputs = {};
172
+ const outputs = {};
173
+ if (!graphRuntime)
174
+ return { inputs, outputs };
175
+ const nodes = graphRuntime.getNodeIds();
176
+ for (const nodeId of nodes) {
177
+ const effectiveInputs = graphRuntime.getEffectiveInputs(nodeId);
178
+ if (Object.keys(effectiveInputs).length > 0) {
179
+ inputs[nodeId] = { ...effectiveInputs };
180
+ }
181
+ const data = graphRuntime.getNodeData(nodeId);
182
+ if (data?.outputs && Object.keys(data.outputs).length > 0) {
183
+ outputs[nodeId] = { ...data.outputs };
184
+ }
185
+ }
186
+ return { inputs, outputs };
187
+ },
188
+ snapshotFull: async () => {
189
+ if (!graphRuntime)
190
+ return { inputs: {}, outputs: {} };
191
+ const snap = await originalAdapter.snapshot();
192
+ const environment = graphRuntime.getEnvironment();
193
+ const def = graphRuntime.getGraphDef();
194
+ return { ...snap, def, environment, extData };
195
+ },
196
+ applySnapshotFull: async (payload, options) => {
197
+ const def = payload.def;
198
+ if (!def)
199
+ return;
200
+ // Only rebuild when needed. If runtime already exists, update in place so
201
+ // the current engine stays attached (important for undo/redo flows).
202
+ if (!options?.skipBuild) {
203
+ if (!graphRuntime) {
204
+ await originalAdapter.build(def, { environment: payload.environment });
205
+ }
206
+ else {
207
+ // Reuse adapter methods so applySnapshot follows normal update semantics.
208
+ await originalAdapter.setEnvironment(payload.environment || {}, { merge: false, dry: true });
209
+ await originalAdapter.update(def);
210
+ }
211
+ }
212
+ else if (!graphRuntime) {
213
+ // If skipping build but no runtime exists, we still need to build
214
+ console.info("Skipping build is set but no runtime exists, building anyway");
215
+ await originalAdapter.build(def, { environment: payload.environment });
216
+ }
217
+ // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs
218
+ if (!graphRuntime)
219
+ return;
220
+ graphRuntime.hydrate({
221
+ inputs: payload.inputs,
222
+ outputs: payload.outputs,
223
+ });
224
+ await originalAdapter.setExtData(payload.extData || {});
225
+ },
226
+ convertSnapshot: async (converterConfig, options) => {
227
+ const snapshot = await originalAdapter.snapshotFull();
228
+ const converter = buildValueConverter(converterConfig);
229
+ const converted = convertSnapshot(snapshot, converter);
230
+ await originalAdapter.applySnapshotFull(converted, { skipBuild: true });
231
+ return converted;
232
+ },
233
+ pause: async () => {
234
+ if (!graphRuntime)
235
+ return;
236
+ graphRuntime.pause();
237
+ },
238
+ resume: async () => {
239
+ if (!graphRuntime)
240
+ return;
241
+ graphRuntime.resume();
242
+ },
243
+ cancelNodeRuns: (nodeIds) => {
244
+ if (!graphRuntime)
245
+ return;
246
+ graphRuntime.cancelNodeRuns(nodeIds);
247
+ },
248
+ commit: async (reason) => {
249
+ return undefined;
250
+ },
251
+ undo: async () => false,
252
+ redo: async () => false,
253
+ describeRegistry: async () => {
254
+ // types (include enum options when available)
255
+ const types = Array.from(registry.types.entries()).map(([id, d]) => {
256
+ const en = registry.enums.get(id);
257
+ return {
258
+ id,
259
+ displayName: d.displayName,
260
+ bakeTarget: d.bakeTarget,
261
+ ...(en ? { options: en.options } : {}),
262
+ };
263
+ });
264
+ // categories: not directly enumerable; derive from node descriptors
265
+ const nodeDescs = Array.from(registry.nodes.values());
266
+ const catIds = new Set(nodeDescs.map((n) => n.categoryId));
267
+ const categories = Array.from(catIds).map((id) => {
268
+ const cat = registry.categories.get?.(id);
269
+ return { id, displayName: cat?.displayName };
270
+ });
271
+ const nodes = nodeDescs.map((n) => ({
272
+ id: n.id,
273
+ categoryId: n.categoryId,
274
+ displayName: n.displayName,
275
+ inputs: n.inputs || {},
276
+ outputs: n.outputs || {},
277
+ inputDefaults: n.inputDefaults || {},
278
+ policy: n.policy || {},
279
+ }));
280
+ const coercions = registry.listCoercions();
281
+ return { types, categories, nodes, coercions, schemaVersion: 4 };
282
+ },
283
+ update: async (def, options) => {
284
+ if (!graphRuntime)
285
+ return;
286
+ // Use requestPause for dry mode to temporarily pause without affecting base run mode
287
+ const releasePause = options?.dry ? graphRuntime.requestPause() : null;
288
+ try {
289
+ graphRuntime.update(def, registry);
290
+ send({
291
+ message: {
292
+ type: "invalidate",
293
+ payload: { reason: "graph-updated" },
294
+ },
295
+ });
296
+ }
297
+ finally {
298
+ releasePause?.();
299
+ }
300
+ },
301
+ setEnvironment: async (env, opts) => {
302
+ if (!graphRuntime)
303
+ return;
304
+ // Use requestPause for dry mode to temporarily pause without affecting base run mode
305
+ const releasePause = opts?.dry ? graphRuntime.requestPause() : null;
306
+ try {
307
+ if (opts?.merge) {
308
+ const current = graphRuntime.getEnvironment();
309
+ const next = { ...(current || {}), ...(env || {}) };
310
+ graphRuntime.setEnvironment(next);
311
+ }
312
+ else {
313
+ graphRuntime.setEnvironment(env);
314
+ }
315
+ }
316
+ finally {
317
+ releasePause?.();
318
+ }
319
+ },
320
+ setInputs: (nodeId, inputs, options) => {
321
+ if (!engine)
322
+ return;
323
+ engine.setInputs(nodeId, inputs, options);
324
+ },
325
+ copyOutputs: (fromNodeId, toNodeId, options) => {
326
+ if (!engine)
327
+ return;
328
+ engine.copyOutputs(fromNodeId, toNodeId, options);
329
+ },
330
+ triggerExternal: (nodeId, event, options) => {
331
+ if (!engine)
332
+ return;
333
+ engine.triggerExternal(nodeId, event, options);
334
+ },
335
+ launch: async (opts) => {
336
+ if (!graphRuntime) {
337
+ throw new Error("Cannot launch: graph runtime not built");
338
+ }
339
+ // Dispose existing engine if any
340
+ if (engine) {
341
+ engine.dispose();
342
+ engine = undefined;
343
+ }
344
+ // Create new engine using shared factory
345
+ engine = new LocalEngine(graphRuntime, opts?.runMode);
346
+ engine.launch(opts?.invalidate, opts?.runMode, opts?.startPaused);
347
+ },
348
+ setRunMode: (runMode) => {
349
+ if (!engine)
350
+ return;
351
+ engine.setRunMode(runMode);
352
+ },
353
+ computeNode: async (nodeId) => {
354
+ if (!engine)
355
+ return;
356
+ await engine.computeNode(nodeId);
357
+ },
358
+ runFromHere: async (nodeId) => {
359
+ if (!engine)
360
+ return;
361
+ await engine.runFromHere(nodeId);
362
+ },
363
+ whenIdle: async () => {
364
+ if (!engine)
365
+ return;
366
+ await engine.whenIdle();
367
+ },
368
+ dispose: () => {
369
+ if (engine) {
370
+ engine.dispose();
371
+ engine = undefined;
372
+ }
373
+ if (graphRuntime) {
374
+ graphRuntime.dispose("adapter-dispose");
375
+ graphRuntime = undefined;
376
+ }
377
+ },
378
+ // Engine methods
379
+ getOutput: (nodeId, output) => {
380
+ return engine?.getOutput(nodeId, output);
381
+ },
382
+ on: (event, handler) => {
383
+ if (!engine)
384
+ return () => { };
385
+ return engine.on(event, handler);
386
+ },
387
+ // GraphLifecycleApi methods
388
+ setViewport: async (viewport) => {
389
+ // Viewport is UI-specific, server doesn't need to handle it
390
+ // But we implement it to satisfy the interface
391
+ },
392
+ };
393
+ // Helper to wrap a method with extension support
394
+ const wrapMethod = (key, original) => {
395
+ const extension = extensions?.[key];
396
+ if (!extension) {
397
+ return original;
398
+ }
399
+ // Handle optional methods that might be undefined
400
+ if (!original) {
401
+ return original;
402
+ }
403
+ return ((...args) => {
404
+ return extension(original, getContext(), ...args);
405
+ });
406
+ };
407
+ // Create API with extensions applied
408
+ const extendedAdapter = {
409
+ // GraphLifecycleApi methods
410
+ coerce: wrapMethod("coerce", originalAdapter.coerce),
411
+ getEnvironment: wrapMethod("getEnvironment", originalAdapter.getEnvironment),
412
+ applyRegistry: wrapMethod("applyRegistry", originalAdapter.applyRegistry),
413
+ build: wrapMethod("build", originalAdapter.build),
414
+ setExtData: wrapMethod("setExtData", originalAdapter.setExtData),
415
+ updateExtData: wrapMethod("updateExtData", originalAdapter.updateExtData),
416
+ snapshot: wrapMethod("snapshot", originalAdapter.snapshot),
417
+ snapshotFull: wrapMethod("snapshotFull", originalAdapter.snapshotFull),
418
+ applySnapshotFull: wrapMethod("applySnapshotFull", originalAdapter.applySnapshotFull),
419
+ convertSnapshot: wrapMethod("convertSnapshot", originalAdapter.convertSnapshot),
420
+ describeRegistry: wrapMethod("describeRegistry", originalAdapter.describeRegistry),
421
+ update: wrapMethod("update", originalAdapter.update),
422
+ setEnvironment: wrapMethod("setEnvironment", originalAdapter.setEnvironment),
423
+ setViewport: wrapMethod("setViewport", originalAdapter.setViewport),
424
+ commit: wrapMethod("commit", originalAdapter.commit),
425
+ undo: wrapMethod("undo", originalAdapter.undo),
426
+ redo: wrapMethod("redo", originalAdapter.redo),
427
+ pause: wrapMethod("pause", originalAdapter.pause),
428
+ resume: wrapMethod("resume", originalAdapter.resume),
429
+ launch: wrapMethod("launch", originalAdapter.launch),
430
+ // Engine methods
431
+ setInputs: wrapMethod("setInputs", originalAdapter.setInputs),
432
+ copyOutputs: wrapMethod("copyOutputs", originalAdapter.copyOutputs),
433
+ triggerExternal: wrapMethod("triggerExternal", originalAdapter.triggerExternal),
434
+ computeNode: wrapMethod("computeNode", originalAdapter.computeNode),
435
+ runFromHere: wrapMethod("runFromHere", originalAdapter.runFromHere),
436
+ setRunMode: wrapMethod("setRunMode", originalAdapter.setRunMode),
437
+ whenIdle: wrapMethod("whenIdle", originalAdapter.whenIdle),
438
+ dispose: wrapMethod("dispose", originalAdapter.dispose),
439
+ cancelNodeRuns: wrapMethod("cancelNodeRuns", originalAdapter.cancelNodeRuns),
440
+ getOutput: wrapMethod("getOutput", originalAdapter.getOutput),
441
+ on: wrapMethod("on", originalAdapter.on),
442
+ orignalDispose: originalAdapter.dispose,
443
+ };
444
+ return extendedAdapter;
445
+ }
446
+ //# sourceMappingURL=ServerRuntimeAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerRuntimeAdapter.js","sourceRoot":"","sources":["../../../src/server/ServerRuntimeAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function summarize(value: unknown, maxLen?: number): string;
2
+ export declare function serializeError(err: unknown): any;
3
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/server/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CA2BhD"}
@@ -0,0 +1,44 @@
1
+ export function summarize(value, maxLen = 120) {
2
+ try {
3
+ const s = typeof value === "string" ? value : JSON.stringify(value);
4
+ return s.length > maxLen ? s.slice(0, maxLen) + "…" : s;
5
+ }
6
+ catch {
7
+ return String(value);
8
+ }
9
+ }
10
+ export function serializeError(err) {
11
+ try {
12
+ if (!err)
13
+ return { message: String(err) };
14
+ const errAny = err;
15
+ if (err instanceof Error) {
16
+ const base = {
17
+ name: err.name,
18
+ message: err.message,
19
+ stack: err.stack,
20
+ };
21
+ for (const k of Object.keys(errAny))
22
+ base[k] = errAny[k];
23
+ return base;
24
+ }
25
+ if (typeof err === "object") {
26
+ const maybeMsg = errAny?.message;
27
+ const maybeName = errAny?.name;
28
+ const maybeStack = errAny?.stack;
29
+ const out = { ...errAny };
30
+ if (maybeMsg && !out.message)
31
+ out.message = String(maybeMsg);
32
+ if (maybeName && !out.name)
33
+ out.name = String(maybeName);
34
+ if (maybeStack && !out.stack)
35
+ out.stack = String(maybeStack);
36
+ return out;
37
+ }
38
+ return { message: String(err) };
39
+ }
40
+ catch {
41
+ return { message: String(err) };
42
+ }
43
+ }
44
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/server/errors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,MAAM,GAAG,GAAG;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,CAAC;QACH,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAU,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAQ;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,EAAE,KAAK,CAAC;YACjC,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC1B,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,UAAU,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Envelope } from "@bian-womp/spark-protocol";
2
+ import type { Transport, TransportConnectOptions } from "./Transport";
3
+ export declare class HttpPollingTransport implements Transport {
4
+ private baseUrl;
5
+ private listeners;
6
+ private polling?;
7
+ private cursor?;
8
+ private connectParams?;
9
+ constructor(baseUrl: string);
10
+ connect(options?: TransportConnectOptions): Promise<void>;
11
+ request<TReq = unknown, TRes = unknown>(msg: Envelope<TReq>): Promise<Envelope<TRes>>;
12
+ send<TReq = unknown>(msg: Envelope<TReq>): void;
13
+ subscribe(cb: (event: Envelope<any>) => void): () => void;
14
+ close(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=HttpPollingTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpPollingTransport.d.ts","sourceRoot":"","sources":["../../../src/transport/HttpPollingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAA0B,MAAM,aAAa,CAAC;AAE9F,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,OAAO,EAAE,MAAM;IAIrB,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzD,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAmB3F,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;IAiB/C,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAKnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
@@ -0,0 +1,83 @@
1
+ export class HttpPollingTransport {
2
+ constructor(baseUrl) {
3
+ this.listeners = new Set();
4
+ this.baseUrl = baseUrl.replace(/\/$/, "");
5
+ }
6
+ async connect(options) {
7
+ // Store connection params for use in requests
8
+ this.connectParams = options?.params;
9
+ // Start polling loop
10
+ if (this.polling)
11
+ return;
12
+ const tick = async () => {
13
+ try {
14
+ const url = new URL(this.baseUrl + "/events");
15
+ if (this.cursor)
16
+ url.searchParams.set("cursor", this.cursor);
17
+ // Add connection params to all requests
18
+ if (this.connectParams) {
19
+ for (const [key, value] of Object.entries(this.connectParams)) {
20
+ if (value !== undefined && value !== null) {
21
+ url.searchParams.set(key, String(value));
22
+ }
23
+ }
24
+ }
25
+ const res = await fetch(url.toString());
26
+ if (!res.ok)
27
+ return;
28
+ const batch = (await res.json());
29
+ for (const env of batch) {
30
+ this.cursor = String(env.seq ?? Date.now());
31
+ for (const l of Array.from(this.listeners))
32
+ l(env);
33
+ }
34
+ }
35
+ catch { }
36
+ };
37
+ this.polling = setInterval(tick, 200);
38
+ }
39
+ async request(msg) {
40
+ const url = new URL(this.baseUrl + "/command");
41
+ // Add connection params to command requests
42
+ if (this.connectParams) {
43
+ for (const [key, value] of Object.entries(this.connectParams)) {
44
+ if (value !== undefined && value !== null) {
45
+ url.searchParams.set(key, String(value));
46
+ }
47
+ }
48
+ }
49
+ const res = await fetch(url.toString(), {
50
+ method: "POST",
51
+ headers: { "content-type": "application/json" },
52
+ body: JSON.stringify(msg),
53
+ });
54
+ const data = (await res.json());
55
+ return data;
56
+ }
57
+ send(msg) {
58
+ const url = new URL(this.baseUrl + "/command");
59
+ // Add connection params to send requests
60
+ if (this.connectParams) {
61
+ for (const [key, value] of Object.entries(this.connectParams)) {
62
+ if (value !== undefined && value !== null) {
63
+ url.searchParams.set(key, String(value));
64
+ }
65
+ }
66
+ }
67
+ fetch(url.toString(), {
68
+ method: "POST",
69
+ headers: { "content-type": "application/json" },
70
+ body: JSON.stringify(msg),
71
+ });
72
+ }
73
+ subscribe(cb) {
74
+ this.listeners.add(cb);
75
+ return () => this.listeners.delete(cb);
76
+ }
77
+ async close() {
78
+ if (this.polling)
79
+ clearInterval(this.polling);
80
+ this.polling = undefined;
81
+ }
82
+ }
83
+ //# sourceMappingURL=HttpPollingTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpPollingTransport.js","sourceRoot":"","sources":["../../../src/transport/HttpPollingTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class SeqGenerator {
2
+ private lastMs;
3
+ private seqInMs;
4
+ next(): number;
5
+ }
6
+ //# sourceMappingURL=Seq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Seq.d.ts","sourceRoot":"","sources":["../../../src/transport/Seq.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IAEpB,IAAI,IAAI,MAAM;CAUf"}