@solarisdk/core 0.1.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 (47) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +21 -0
  3. package/dist/desktop.d.ts +106 -0
  4. package/dist/desktop.d.ts.map +1 -0
  5. package/dist/desktop.js +170 -0
  6. package/dist/desktop.js.map +1 -0
  7. package/dist/errors.d.ts +50 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +91 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/handle.d.ts +169 -0
  12. package/dist/handle.d.ts.map +1 -0
  13. package/dist/handle.js +386 -0
  14. package/dist/handle.js.map +1 -0
  15. package/dist/http.d.ts +35 -0
  16. package/dist/http.d.ts.map +1 -0
  17. package/dist/http.js +106 -0
  18. package/dist/http.js.map +1 -0
  19. package/dist/image.d.ts +85 -0
  20. package/dist/image.d.ts.map +1 -0
  21. package/dist/image.js +126 -0
  22. package/dist/image.js.map +1 -0
  23. package/dist/index.d.ts +13 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +9 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/sandbox.d.ts +8 -0
  28. package/dist/sandbox.d.ts.map +1 -0
  29. package/dist/sandbox.js +15 -0
  30. package/dist/sandbox.js.map +1 -0
  31. package/dist/template-client.d.ts +35 -0
  32. package/dist/template-client.d.ts.map +1 -0
  33. package/dist/template-client.js +95 -0
  34. package/dist/template-client.js.map +1 -0
  35. package/dist/transport.d.ts +108 -0
  36. package/dist/transport.d.ts.map +1 -0
  37. package/dist/transport.js +337 -0
  38. package/dist/transport.js.map +1 -0
  39. package/dist/types.d.ts +591 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +8 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/ws.d.ts +18 -0
  44. package/dist/ws.d.ts.map +1 -0
  45. package/dist/ws.js +63 -0
  46. package/dist/ws.js.map +1 -0
  47. package/package.json +44 -0
package/dist/ws.js ADDED
@@ -0,0 +1,63 @@
1
+ // A tiny WebSocket abstraction so `desktop.ts` works identically in Node (via
2
+ // the `ws` package) and in the browser (native `WebSocket`). We deliberately
3
+ // keep the surface minimal: open/close, send text, and three callbacks.
4
+ import { ConnectionError } from "./errors.js";
5
+ /** True when running somewhere with a usable native `WebSocket` (browsers). */
6
+ function hasNativeWebSocket() {
7
+ return typeof globalThis !== "undefined" &&
8
+ typeof globalThis.WebSocket === "function";
9
+ }
10
+ /**
11
+ * Open a WebSocket using the best available implementation. In Node this
12
+ * dynamically imports `ws`; in the browser it uses the global `WebSocket`.
13
+ * `headers` are only honored by the Node path (browsers can't set them).
14
+ */
15
+ export async function openWebSocket(url, headers, cb) {
16
+ if (hasNativeWebSocket()) {
17
+ return openNative(url, cb);
18
+ }
19
+ return openNodeWs(url, headers, cb);
20
+ }
21
+ function openNative(url, cb) {
22
+ const NativeWebSocket = globalThis.WebSocket;
23
+ const sock = new NativeWebSocket(url);
24
+ const OPEN = 1;
25
+ sock.onopen = () => cb.onOpen();
26
+ sock.onmessage = (ev) => {
27
+ cb.onMessage(typeof ev.data === "string" ? ev.data : String(ev.data));
28
+ };
29
+ sock.onclose = (ev) => cb.onClose(ev.code, ev.reason);
30
+ sock.onerror = () => cb.onError(new ConnectionError("WebSocket error"));
31
+ return {
32
+ send(data) {
33
+ sock.send(data);
34
+ },
35
+ close() {
36
+ sock.close();
37
+ },
38
+ get isOpen() {
39
+ return sock.readyState === OPEN;
40
+ },
41
+ };
42
+ }
43
+ async function openNodeWs(url, headers, cb) {
44
+ const mod = await import("ws");
45
+ const WebSocketImpl = (mod.default ?? mod);
46
+ const sock = new WebSocketImpl(url, { headers });
47
+ sock.on("open", () => cb.onOpen());
48
+ sock.on("message", (data) => cb.onMessage(String(data)));
49
+ sock.on("close", (code, reason) => cb.onClose(code, reason.toString()));
50
+ sock.on("error", (err) => cb.onError(err));
51
+ return {
52
+ send(data) {
53
+ sock.send(data);
54
+ },
55
+ close() {
56
+ sock.close();
57
+ },
58
+ get isOpen() {
59
+ return sock.readyState === WebSocketImpl.OPEN;
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=ws.js.map
package/dist/ws.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@solarisdk/core",
3
+ "version": "0.1.0",
4
+ "description": "Shared runtime for the Solari SDK — transport, session handles, images, templates, and types used by @solarisdk/desktop and @solarisdk/sandbox.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "engines": {
25
+ "node": ">=18"
26
+ },
27
+ "keywords": [
28
+ "solari",
29
+ "sdk",
30
+ "core"
31
+ ],
32
+ "license": "Apache-2.0",
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "dependencies": {
37
+ "ws": "^8.18.0"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^22.0.0",
41
+ "@types/ws": "^8.5.12",
42
+ "typescript": "^5.6.0"
43
+ }
44
+ }