@bian-womp/spark-remote 0.2.37 → 0.2.38

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 (37) hide show
  1. package/lib/cjs/UnixSocketTransport-Bghy9EOO.js +103 -0
  2. package/lib/cjs/UnixSocketTransport-Bghy9EOO.js.map +1 -0
  3. package/lib/cjs/index-BKs-fgHN.js +1047 -0
  4. package/lib/cjs/index-BKs-fgHN.js.map +1 -0
  5. package/lib/cjs/index.cjs +11 -750
  6. package/lib/cjs/index.cjs.map +1 -1
  7. package/lib/cjs/src/RuntimeApiClient.d.ts +89 -0
  8. package/lib/cjs/src/RuntimeApiClient.d.ts.map +1 -0
  9. package/lib/cjs/src/examples/shared.d.ts +2 -2
  10. package/lib/cjs/src/examples/shared.d.ts.map +1 -1
  11. package/lib/cjs/src/index.d.ts +4 -2
  12. package/lib/cjs/src/index.d.ts.map +1 -1
  13. package/lib/cjs/src/server/RuntimeApiServer.d.ts +49 -0
  14. package/lib/cjs/src/server/RuntimeApiServer.d.ts.map +1 -0
  15. package/lib/esm/UnixSocketTransport-CVUsiFcW.js +101 -0
  16. package/lib/esm/UnixSocketTransport-CVUsiFcW.js.map +1 -0
  17. package/lib/esm/index-Dnchg7CQ.js +1037 -0
  18. package/lib/esm/index-Dnchg7CQ.js.map +1 -0
  19. package/lib/esm/index.js +3 -746
  20. package/lib/esm/index.js.map +1 -1
  21. package/lib/esm/src/RuntimeApiClient.d.ts +89 -0
  22. package/lib/esm/src/RuntimeApiClient.d.ts.map +1 -0
  23. package/lib/esm/src/examples/shared.d.ts +2 -2
  24. package/lib/esm/src/examples/shared.d.ts.map +1 -1
  25. package/lib/esm/src/index.d.ts +4 -2
  26. package/lib/esm/src/index.d.ts.map +1 -1
  27. package/lib/esm/src/server/RuntimeApiServer.d.ts +49 -0
  28. package/lib/esm/src/server/RuntimeApiServer.d.ts.map +1 -0
  29. package/package.json +3 -3
  30. package/lib/cjs/src/RemoteRunner.d.ts +0 -24
  31. package/lib/cjs/src/RemoteRunner.d.ts.map +0 -1
  32. package/lib/cjs/src/server/command.d.ts +0 -4
  33. package/lib/cjs/src/server/command.d.ts.map +0 -1
  34. package/lib/esm/src/RemoteRunner.d.ts +0 -24
  35. package/lib/esm/src/RemoteRunner.d.ts.map +0 -1
  36. package/lib/esm/src/server/command.d.ts +0 -4
  37. package/lib/esm/src/server/command.d.ts.map +0 -1
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BKs-fgHN.js');
4
+ require('ws');
5
+ require('@bian-womp/spark-graph');
6
+
7
+ // Node-only transport using a UNIX domain socket.
8
+ // Import directly from path: "@bian-womp/spark-remote/transport/UnixSocketTransport" in Node/Electron code.
9
+ // Do not re-export from the browser index to avoid bundling in web builds.
10
+ class UnixSocketTransport {
11
+ constructor(socketPath) {
12
+ this.socketPath = socketPath;
13
+ this.listeners = new Set();
14
+ this.buffer = "";
15
+ this.waiters = new Map();
16
+ this.seq = new index.SeqGenerator();
17
+ }
18
+ async connect() {
19
+ if (typeof process === "undefined") {
20
+ throw new Error("UnixSocketTransport requires a Node environment");
21
+ }
22
+ if (this.socket)
23
+ return;
24
+ const { createConnection } = await import('node:net');
25
+ const sock = createConnection(this.socketPath);
26
+ this.socket = sock;
27
+ await new Promise((resolve, reject) => {
28
+ sock.once("connect", () => resolve());
29
+ sock.once("error", (e) => reject(e));
30
+ });
31
+ sock.on("data", (chunk) => this.onData(chunk));
32
+ sock.on("error", () => {
33
+ /* noop, surface via request waiters if needed */
34
+ });
35
+ }
36
+ onData(chunk) {
37
+ this.buffer += chunk.toString("utf8");
38
+ let idx = this.buffer.indexOf("\n");
39
+ while (idx >= 0) {
40
+ const raw = this.buffer.slice(0, idx);
41
+ this.buffer = this.buffer.slice(idx + 1);
42
+ idx = this.buffer.indexOf("\n");
43
+ if (!raw.trim())
44
+ continue;
45
+ try {
46
+ const env = JSON.parse(raw);
47
+ if (env && typeof env.seq === "number" && this.waiters.has(env.seq)) {
48
+ const fn = this.waiters.get(env.seq);
49
+ this.waiters.delete(env.seq);
50
+ fn(env);
51
+ }
52
+ else {
53
+ for (const l of Array.from(this.listeners))
54
+ l(env);
55
+ }
56
+ }
57
+ catch {
58
+ // ignore malformed frames
59
+ }
60
+ }
61
+ }
62
+ async request(msg) {
63
+ const seq = typeof msg.seq === "number" ? msg.seq : this.seq.next();
64
+ const env = { ...msg, seq };
65
+ const p = new Promise((resolve) => {
66
+ this.waiters.set(seq, (incoming) => resolve(incoming));
67
+ });
68
+ this.send(env);
69
+ return p;
70
+ }
71
+ send(msg) {
72
+ const s = this.socket;
73
+ if (!s)
74
+ return;
75
+ try {
76
+ s.write(JSON.stringify(msg) + "\n");
77
+ }
78
+ catch {
79
+ // ignore
80
+ }
81
+ }
82
+ subscribe(cb) {
83
+ this.listeners.add(cb);
84
+ return () => this.listeners.delete(cb);
85
+ }
86
+ async close() {
87
+ const s = this.socket;
88
+ this.socket = undefined;
89
+ if (!s)
90
+ return;
91
+ await new Promise((resolve) => {
92
+ try {
93
+ s.end(() => resolve());
94
+ }
95
+ catch {
96
+ resolve();
97
+ }
98
+ });
99
+ }
100
+ }
101
+
102
+ exports.UnixSocketTransport = UnixSocketTransport;
103
+ //# sourceMappingURL=UnixSocketTransport-Bghy9EOO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnixSocketTransport-Bghy9EOO.js","sources":["../../src/transport/UnixSocketTransport.ts"],"sourcesContent":["// Node-only transport using a UNIX domain socket.\n// Import directly from path: \"@bian-womp/spark-remote/transport/UnixSocketTransport\" in Node/Electron code.\n// Do not re-export from the browser index to avoid bundling in web builds.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\n// Use node:net for ESM compatibility in Node 18+\n// We avoid type imports here to keep this file isolated from browser builds.\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { Socket } from \"node:net\";\n\nexport class UnixSocketTransport implements Transport {\n private socket?: Socket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private buffer = \"\";\n private waiters = new Map<number, (env: Envelope<any>) => void>();\n private seq = new SeqGenerator();\n\n constructor(private socketPath: string) {}\n\n async connect(): Promise<void> {\n if (typeof process === \"undefined\") {\n throw new Error(\"UnixSocketTransport requires a Node environment\");\n }\n if (this.socket) return;\n const { createConnection } = await import(\"node:net\");\n const sock = createConnection(this.socketPath);\n this.socket = sock;\n await new Promise<void>((resolve, reject) => {\n sock.once(\"connect\", () => resolve());\n sock.once(\"error\", (e) => reject(e));\n });\n sock.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n sock.on(\"error\", () => {\n /* noop, surface via request waiters if needed */\n });\n }\n\n private onData(chunk: Buffer): void {\n this.buffer += chunk.toString(\"utf8\");\n let idx = this.buffer.indexOf(\"\\n\");\n while (idx >= 0) {\n const raw = this.buffer.slice(0, idx);\n this.buffer = this.buffer.slice(idx + 1);\n idx = this.buffer.indexOf(\"\\n\");\n if (!raw.trim()) continue;\n try {\n const env = JSON.parse(raw) as Envelope<any>;\n if (env && typeof env.seq === \"number\" && this.waiters.has(env.seq)) {\n const fn = this.waiters.get(env.seq)!;\n this.waiters.delete(env.seq);\n fn(env);\n } else {\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {\n // ignore malformed frames\n }\n }\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = typeof msg.seq === \"number\" ? msg.seq : this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n this.waiters.set(seq, (incoming) => resolve(incoming));\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const s = this.socket;\n if (!s) return;\n try {\n s.write(JSON.stringify(msg) + \"\\n\");\n } catch {\n // ignore\n }\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n const s = this.socket;\n this.socket = undefined;\n if (!s) return;\n await new Promise<void>((resolve) => {\n try {\n s.end(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n}\n"],"names":["SeqGenerator"],"mappings":"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"}