lemon-model 1.1.0 → 1.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 (58) hide show
  1. package/dist/cores/transformer.d.ts +9 -1
  2. package/dist/cores/transformer.js +22 -7
  3. package/dist/cores/transformer.js.map +1 -1
  4. package/dist/genai/dump-test.d.ts +82 -0
  5. package/dist/genai/dump-test.js +200 -0
  6. package/dist/genai/dump-test.js.map +1 -0
  7. package/dist/genai/index.d.ts +11 -0
  8. package/dist/genai/index.js +31 -0
  9. package/dist/genai/index.js.map +1 -0
  10. package/dist/genai/mocks.d.ts +44 -0
  11. package/dist/genai/mocks.js +127 -0
  12. package/dist/genai/mocks.js.map +1 -0
  13. package/dist/genai/proxy.d.ts +65 -0
  14. package/dist/genai/proxy.js +165 -0
  15. package/dist/genai/proxy.js.map +1 -0
  16. package/dist/genai/testing.d.ts +11 -0
  17. package/dist/genai/testing.js +28 -0
  18. package/dist/genai/testing.js.map +1 -0
  19. package/dist/genai/transport.d.ts +37 -0
  20. package/dist/genai/transport.js +136 -0
  21. package/dist/genai/transport.js.map +1 -0
  22. package/dist/genai/types.d.ts +71 -0
  23. package/dist/genai/types.js +10 -0
  24. package/dist/genai/types.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/proxy/index.d.ts +12 -0
  29. package/dist/proxy/index.js +29 -0
  30. package/dist/proxy/index.js.map +1 -0
  31. package/dist/proxy/proxy.d.ts +75 -0
  32. package/dist/proxy/proxy.js +198 -0
  33. package/dist/proxy/proxy.js.map +1 -0
  34. package/dist/proxy/transport.d.ts +123 -0
  35. package/dist/proxy/transport.js +401 -0
  36. package/dist/proxy/transport.js.map +1 -0
  37. package/dist/proxy/types.d.ts +89 -0
  38. package/dist/proxy/types.js +12 -0
  39. package/dist/proxy/types.js.map +1 -0
  40. package/dist/socket/index.d.ts +9 -0
  41. package/dist/socket/index.js +29 -0
  42. package/dist/socket/index.js.map +1 -0
  43. package/dist/socket/socket.d.ts +191 -0
  44. package/dist/socket/socket.js +844 -0
  45. package/dist/socket/socket.js.map +1 -0
  46. package/dist/socket/testing.d.ts +11 -0
  47. package/dist/socket/testing.js +28 -0
  48. package/dist/socket/testing.js.map +1 -0
  49. package/dist/socket/transport.d.ts +200 -0
  50. package/dist/socket/transport.js +612 -0
  51. package/dist/socket/transport.js.map +1 -0
  52. package/dist/socket/types.d.ts +177 -0
  53. package/dist/socket/types.js +9 -0
  54. package/dist/socket/types.js.map +1 -0
  55. package/dist/socket/websocket.d.ts +89 -0
  56. package/dist/socket/websocket.js +273 -0
  57. package/dist/socket/websocket.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,177 @@
1
+ /**
2
+ * `socket/types.ts`
3
+ * - peer socket contracts for in-memory WebSocket simulation.
4
+ *
5
+ * @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
6
+ */
7
+ /** socket state for simulated peer endpoints */
8
+ export declare type SocketReadyState = 'connecting' | 'open' | 'closing' | 'closed';
9
+ /** unsubscribe function returned by event registration */
10
+ export declare type SocketUnsubscribe = () => void;
11
+ /** socket log severity. */
12
+ export declare type SocketLogLevel = 'debug' | 'info' | 'warn' | 'error';
13
+ /** structured socket log entry. */
14
+ export interface SocketLogEntry {
15
+ /** epoch timestamp in milliseconds */
16
+ time: number;
17
+ /** log severity */
18
+ level: SocketLogLevel;
19
+ /** human-readable message */
20
+ message: string;
21
+ /** stable source location */
22
+ location: string;
23
+ /** peer that emitted the log */
24
+ peerId?: string;
25
+ /** related peer id */
26
+ remotePeerId?: string;
27
+ /** related client id */
28
+ clientId?: string;
29
+ /** related message id */
30
+ mid?: string;
31
+ /** related message type */
32
+ type?: string;
33
+ /** related network id when available */
34
+ networkId?: string;
35
+ /** normalized error message when available */
36
+ error?: string;
37
+ /** extra structured metadata */
38
+ data?: Record<string, any>;
39
+ }
40
+ /** logger interface used by peer/socket diagnostics. */
41
+ export interface SocketLogger {
42
+ log(entry: SocketLogEntry): void;
43
+ }
44
+ /** callback used by network onMessage(). */
45
+ export interface NetworkMessageHandler {
46
+ (data: string): void;
47
+ }
48
+ /**
49
+ * minimal network transport contract.
50
+ * - only string writes are supported.
51
+ */
52
+ export interface NetworkSupportable {
53
+ /** network state */
54
+ readonly readyState: SocketReadyState;
55
+ /** wait until this network is ready for send/onMessage usage */
56
+ ready?(): Promise<void>;
57
+ /** send raw string data over the network */
58
+ send(data: string): void;
59
+ /** subscribe to raw string data delivered from the network */
60
+ onMessage(handler: NetworkMessageHandler): SocketUnsubscribe;
61
+ /** optionally update network conditions */
62
+ configure?(options: SocketNetworkOptions): void;
63
+ /** observe asynchronous network delivery errors */
64
+ onError(handler: SocketErrorHandler): SocketUnsubscribe;
65
+ /** close the network permanently */
66
+ close(): void;
67
+ }
68
+ /**
69
+ * configurable network conditions for simulated sockets.
70
+ */
71
+ export interface SocketNetworkOptions {
72
+ /** base artificial delivery latency */
73
+ latencyMs?: number;
74
+ /** additional delivery jitter used to avoid strict time/order guarantees */
75
+ jitterMs?: number;
76
+ /** allow back-to-back messages to be delivered out of order */
77
+ unordered?: boolean;
78
+ /** maximum raw packet size in bytes */
79
+ maxPacketBytes?: number;
80
+ }
81
+ /**
82
+ * context provided to network/peer error handlers.
83
+ */
84
+ export interface SocketErrorContext {
85
+ /** error scope */
86
+ scope: string;
87
+ /** related message id if available */
88
+ mid?: string;
89
+ /** related peer if available */
90
+ peer?: PeerSupportable<any, any>;
91
+ /** related network if available */
92
+ network?: NetworkSupportable;
93
+ /** related socket message if available */
94
+ message?: SocketMessage<any>;
95
+ }
96
+ /** callback used by onError(). */
97
+ export interface SocketErrorHandler {
98
+ (error: any, context: SocketErrorContext): void;
99
+ }
100
+ /** socket message type */
101
+ export declare type SocketMessageType = 'message' | 'result' | 'error' | 'ping' | 'pong' | string;
102
+ /**
103
+ * unified wire-level message for every peer.
104
+ */
105
+ export interface SocketMessage<Data = any> {
106
+ /** message type */
107
+ type: SocketMessageType;
108
+ /** message payload */
109
+ data: Data;
110
+ /** message id */
111
+ mid: string;
112
+ }
113
+ /** target options for peer delivery */
114
+ export interface PeerTargetOptions {
115
+ /** target client id when sending from a server peer to one of its clients */
116
+ clientId?: string;
117
+ }
118
+ /**
119
+ * context provided to an onMessage handler.
120
+ */
121
+ export interface PeerMessageContext {
122
+ /** message id */
123
+ mid: string;
124
+ /** message type */
125
+ type: SocketMessageType;
126
+ /** endpoint that received the message */
127
+ peer: PeerSupportable<any, any>;
128
+ /** endpoint that sent the message */
129
+ sender?: PeerSupportable<any, any>;
130
+ /** sender's client id when it is connected as a client to this peer */
131
+ clientId?: string;
132
+ /** epoch timestamp in milliseconds */
133
+ receivedAt: number;
134
+ /** send a result for the current message id */
135
+ reply<R = any>(data: R): void;
136
+ }
137
+ /**
138
+ * callback used by onMessage().
139
+ */
140
+ export interface PeerMessageHandler<Data = any, Result = any> {
141
+ (message: SocketMessage<Data>, context: PeerMessageContext): Result | Promise<Result>;
142
+ }
143
+ /**
144
+ * minimal peer contract used by tests and mock flows.
145
+ */
146
+ export interface PeerSupportable<SendData = any, MessageData = any> {
147
+ /** peer id */
148
+ readonly id: string;
149
+ /** assigned client id when this peer is connected to another peer */
150
+ readonly clientId?: string;
151
+ /** endpoint state */
152
+ readonly readyState: SocketReadyState;
153
+ /** upstream network when this peer is connected as a client */
154
+ readonly network?: NetworkSupportable;
155
+ /** update network conditions for this peer and connected networks */
156
+ configureNetwork(options: SocketNetworkOptions): void;
157
+ /** wait until this peer's upstream network is ready */
158
+ ready(): Promise<void>;
159
+ /** observe fire-and-forget transport errors */
160
+ onError(handler: SocketErrorHandler): SocketUnsubscribe;
161
+ /** connect this peer as a client to a server peer */
162
+ connect(peer: PeerSupportable<MessageData, SendData>): string;
163
+ /** replace connected network instances while keeping the peer relationship */
164
+ reconnect(options?: PeerTargetOptions): string;
165
+ /** find a client peer connected to this peer by client id */
166
+ findPeer<T extends PeerSupportable<any, any> = PeerSupportable<any, any>>(clientId: string): T | undefined;
167
+ /** post a typed message without waiting for a result */
168
+ post(message: SocketMessage<SendData>, options?: PeerTargetOptions): void;
169
+ /** send a typed message and wait for a result message with the same mid */
170
+ send<R = any>(message: Omit<SocketMessage<SendData>, 'mid'> & {
171
+ mid?: string;
172
+ }, options?: PeerTargetOptions): Promise<R>;
173
+ /** subscribe to messages delivered to this peer */
174
+ onMessage<T = MessageData, R = any>(handler: PeerMessageHandler<T, R>): SocketUnsubscribe;
175
+ /** close this peer and its connected networks */
176
+ close(): void;
177
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * `socket/types.ts`
4
+ * - peer socket contracts for in-memory WebSocket simulation.
5
+ *
6
+ * @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/socket/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * `socket/websocket.ts`
3
+ * - Real WebSocket adapter for `NetworkSupportable` plus connection-id handshake helpers.
4
+ * - Runtime-neutral (browser / Node 18+ / custom UI runtimes) via the `WebSocketCompartible` contract.
5
+ *
6
+ * @origin eureka-agents-api / src/lib/proxy/transport.ts (generic WebSocket bridge extracted into the shared socket core)
7
+ * @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
8
+ */
9
+ import { NetworkMessageHandler, NetworkSupportable, SocketErrorHandler, SocketNetworkOptions, SocketReadyState, SocketUnsubscribe } from './types';
10
+ /** event map required from a browser-like WebSocket object */
11
+ export interface WebSocketCompartibleEventMap {
12
+ open: unknown;
13
+ close: unknown;
14
+ error: unknown;
15
+ message: {
16
+ data: unknown;
17
+ };
18
+ }
19
+ /** preferred spelling for WebSocket-compatible event maps */
20
+ export declare type WebSocketCompatibleEventMap = WebSocketCompartibleEventMap;
21
+ /**
22
+ * Minimal WebSocket-compatible contract.
23
+ *
24
+ * This keeps the socket package usable in browsers, tests, and custom UI runtimes
25
+ * without depending directly on the DOM `WebSocket` type.
26
+ */
27
+ export interface WebSocketCompartible {
28
+ readonly CONNECTING?: number;
29
+ readonly OPEN?: number;
30
+ readonly CLOSING?: number;
31
+ readonly CLOSED?: number;
32
+ readonly readyState: number;
33
+ send(data: string): void;
34
+ addEventListener<K extends keyof WebSocketCompartibleEventMap>(type: K, handler: (event: WebSocketCompartibleEventMap[K]) => void, options?: {
35
+ once?: boolean;
36
+ }): void;
37
+ removeEventListener<K extends keyof WebSocketCompartibleEventMap>(type: K, handler: (event: WebSocketCompartibleEventMap[K]) => void): void;
38
+ }
39
+ /** preferred spelling; `WebSocketCompartible` remains for backward compatibility */
40
+ export declare type WebSocketCompatible = WebSocketCompartible;
41
+ /** options for the standard WebSocket connection-id handshake */
42
+ export interface WebSocketConnectionIdOptions {
43
+ /** message sent after socket open, usually `device.save` */
44
+ connectMessage?: string;
45
+ /** timeout for open and connection-id response */
46
+ timeoutMs?: number;
47
+ /** custom extractor when a service returns a different connection-id shape */
48
+ extract?: (message: unknown) => string | undefined;
49
+ }
50
+ /** extract a connection id from known API Gateway/WebSocket handshake response shapes */
51
+ export declare const extractWebSocketConnectionId: (message: unknown) => string | undefined;
52
+ /**
53
+ * Wait until a WebSocket is open, send the handshake message, and resolve the
54
+ * first connection id found in inbound messages.
55
+ */
56
+ export declare const waitWebSocketConnectionId: (ws: WebSocketCompartible, options?: WebSocketConnectionIdOptions) => Promise<string>;
57
+ /**
58
+ * Adapter from browser-like WebSocket objects to `NetworkSupportable`.
59
+ *
60
+ * The adapter does not own externally supplied WebSocket instances. `close()` is
61
+ * intentionally equivalent to `detach()`; callers that created the WebSocket should
62
+ * close it themselves when they want the underlying connection closed.
63
+ */
64
+ export declare class BrowserWebSocketNetwork implements NetworkSupportable {
65
+ private readonly ws;
66
+ private readonly messageHandlers;
67
+ private readonly errorHandlers;
68
+ private readonly opened;
69
+ private readyOpenHandler?;
70
+ private readyErrorHandler?;
71
+ private detached;
72
+ private readonly handleOpen;
73
+ private readonly handleMessage;
74
+ private readonly handleError;
75
+ private readonly handleClose;
76
+ constructor(ws: WebSocketCompartible);
77
+ get readyState(): SocketReadyState;
78
+ ready(): Promise<void>;
79
+ send(data: string): void;
80
+ onMessage(handler: NetworkMessageHandler): SocketUnsubscribe;
81
+ configure(_options: SocketNetworkOptions): void;
82
+ onError(handler: SocketErrorHandler): SocketUnsubscribe;
83
+ close(): void;
84
+ /** remove all listeners without closing the externally owned WebSocket */
85
+ detach(): void;
86
+ private isOpen;
87
+ private stateValue;
88
+ private detachReadyListeners;
89
+ }
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BrowserWebSocketNetwork = exports.waitWebSocketConnectionId = exports.extractWebSocketConnectionId = void 0;
13
+ /** extract a connection id from known API Gateway/WebSocket handshake response shapes */
14
+ const extractWebSocketConnectionId = (message) => {
15
+ var _a, _b, _c, _d, _e, _f, _g, _h;
16
+ if (!message || typeof message !== 'object')
17
+ return undefined;
18
+ const data = message;
19
+ const candidates = [
20
+ data.connectionId,
21
+ data.connId,
22
+ (_a = data.data) === null || _a === void 0 ? void 0 : _a.connectionId,
23
+ (_b = data.data) === null || _b === void 0 ? void 0 : _b.connId,
24
+ (_d = (_c = data.data) === null || _c === void 0 ? void 0 : _c.connId) === null || _d === void 0 ? void 0 : _d.id,
25
+ (_e = data.data) === null || _e === void 0 ? void 0 : _e.id,
26
+ (_f = data.body) === null || _f === void 0 ? void 0 : _f.connectionId,
27
+ (_g = data.body) === null || _g === void 0 ? void 0 : _g.connId,
28
+ (_h = data.body) === null || _h === void 0 ? void 0 : _h.id,
29
+ data.id,
30
+ ];
31
+ return candidates.find(value => typeof value === 'string' && value.length > 0);
32
+ };
33
+ exports.extractWebSocketConnectionId = extractWebSocketConnectionId;
34
+ /**
35
+ * Wait until a WebSocket is open, send the handshake message, and resolve the
36
+ * first connection id found in inbound messages.
37
+ */
38
+ const waitWebSocketConnectionId = (ws, options = {}) => __awaiter(void 0, void 0, void 0, function* () {
39
+ var _a, _b;
40
+ const timeoutMs = (_a = options.timeoutMs) !== null && _a !== void 0 ? _a : 15000;
41
+ const extract = (_b = options.extract) !== null && _b !== void 0 ? _b : exports.extractWebSocketConnectionId;
42
+ yield waitWebSocketOpen(ws, timeoutMs);
43
+ return new Promise((resolve, reject) => {
44
+ let settled = false;
45
+ const timer = timeoutMs > 0
46
+ ? setTimeout(() => {
47
+ rejectOnce(new Error(`timeout waiting for connectionId from WebSocket: ${timeoutMs}ms`));
48
+ }, timeoutMs)
49
+ : undefined;
50
+ const cleanup = () => {
51
+ if (timer)
52
+ clearTimeout(timer);
53
+ ws.removeEventListener('message', onMessage);
54
+ ws.removeEventListener('error', onError);
55
+ ws.removeEventListener('close', onClose);
56
+ };
57
+ const resolveOnce = (connectionId) => {
58
+ if (settled)
59
+ return;
60
+ settled = true;
61
+ cleanup();
62
+ resolve(connectionId);
63
+ };
64
+ const rejectOnce = (error) => {
65
+ if (settled)
66
+ return;
67
+ settled = true;
68
+ cleanup();
69
+ reject(error);
70
+ };
71
+ const onMessage = (event) => __awaiter(void 0, void 0, void 0, function* () {
72
+ try {
73
+ const raw = yield asWebSocketText(event.data);
74
+ const json = tryParseWebSocketJSON(raw);
75
+ const connectionId = extract(json !== null && json !== void 0 ? json : raw);
76
+ if (connectionId)
77
+ resolveOnce(connectionId);
78
+ }
79
+ catch (e) {
80
+ rejectOnce(e);
81
+ }
82
+ });
83
+ const onError = (event) => rejectOnce(event);
84
+ const onClose = () => rejectOnce(new Error(`WebSocket closed before connectionId was received`));
85
+ ws.addEventListener('message', onMessage);
86
+ ws.addEventListener('error', onError, { once: true });
87
+ ws.addEventListener('close', onClose, { once: true });
88
+ if (options.connectMessage)
89
+ ws.send(options.connectMessage);
90
+ });
91
+ });
92
+ exports.waitWebSocketConnectionId = waitWebSocketConnectionId;
93
+ /**
94
+ * Adapter from browser-like WebSocket objects to `NetworkSupportable`.
95
+ *
96
+ * The adapter does not own externally supplied WebSocket instances. `close()` is
97
+ * intentionally equivalent to `detach()`; callers that created the WebSocket should
98
+ * close it themselves when they want the underlying connection closed.
99
+ */
100
+ class BrowserWebSocketNetwork {
101
+ constructor(ws) {
102
+ this.ws = ws;
103
+ this.messageHandlers = new Set();
104
+ this.errorHandlers = new Set();
105
+ this.detached = false;
106
+ this.handleOpen = () => undefined;
107
+ this.handleMessage = (event) => {
108
+ if (this.detached || typeof event.data !== 'string')
109
+ return;
110
+ for (const handler of [...this.messageHandlers])
111
+ handler(event.data);
112
+ };
113
+ this.handleError = (event) => {
114
+ if (this.detached)
115
+ return;
116
+ for (const handler of [...this.errorHandlers])
117
+ handler(event, { scope: 'browserWebSocket', network: this });
118
+ };
119
+ this.handleClose = (event) => {
120
+ if (this.detached)
121
+ return;
122
+ for (const handler of [...this.errorHandlers])
123
+ handler(event, { scope: 'browserWebSocket.close', network: this });
124
+ };
125
+ this.opened = this.isOpen()
126
+ ? Promise.resolve()
127
+ : new Promise((resolve, reject) => {
128
+ const onOpen = () => {
129
+ this.detachReadyListeners();
130
+ resolve();
131
+ };
132
+ const onError = (event) => {
133
+ this.detachReadyListeners();
134
+ reject(event);
135
+ };
136
+ this.readyOpenHandler = onOpen;
137
+ this.readyErrorHandler = onError;
138
+ ws.addEventListener('open', onOpen, { once: true });
139
+ ws.addEventListener('error', onError, { once: true });
140
+ });
141
+ ws.addEventListener('open', this.handleOpen);
142
+ ws.addEventListener('message', this.handleMessage);
143
+ ws.addEventListener('error', this.handleError);
144
+ ws.addEventListener('close', this.handleClose);
145
+ }
146
+ get readyState() {
147
+ if (this.detached)
148
+ return 'closed';
149
+ if (this.isOpen())
150
+ return 'open';
151
+ if (this.ws.readyState === this.stateValue('CLOSING', 2))
152
+ return 'closing';
153
+ if (this.ws.readyState === this.stateValue('CLOSED', 3))
154
+ return 'closed';
155
+ return 'connecting';
156
+ }
157
+ ready() {
158
+ if (this.detached)
159
+ return Promise.reject(new Error(`@network connection error: closed - browserWebSocket.ready`));
160
+ return this.opened;
161
+ }
162
+ send(data) {
163
+ if (this.detached || !this.isOpen()) {
164
+ throw new Error(`@network connection error: ${this.readyState} - browserWebSocket.send`);
165
+ }
166
+ this.ws.send(data);
167
+ }
168
+ onMessage(handler) {
169
+ if (this.detached)
170
+ throw new Error(`@network connection error: closed - browserWebSocket.onMessage`);
171
+ this.messageHandlers.add(handler);
172
+ return () => this.messageHandlers.delete(handler);
173
+ }
174
+ configure(_options) {
175
+ // Browser WebSocket transport options are controlled by the browser/runtime.
176
+ }
177
+ onError(handler) {
178
+ this.errorHandlers.add(handler);
179
+ return () => this.errorHandlers.delete(handler);
180
+ }
181
+ close() {
182
+ this.detach();
183
+ }
184
+ /** remove all listeners without closing the externally owned WebSocket */
185
+ detach() {
186
+ if (this.detached)
187
+ return;
188
+ this.detached = true;
189
+ this.messageHandlers.clear();
190
+ this.errorHandlers.clear();
191
+ this.ws.removeEventListener('open', this.handleOpen);
192
+ this.ws.removeEventListener('message', this.handleMessage);
193
+ this.ws.removeEventListener('error', this.handleError);
194
+ this.ws.removeEventListener('close', this.handleClose);
195
+ this.detachReadyListeners();
196
+ }
197
+ isOpen() {
198
+ return this.ws.readyState === this.stateValue('OPEN', 1);
199
+ }
200
+ stateValue(key, fallback) {
201
+ return typeof this.ws[key] === 'number' ? this.ws[key] : fallback;
202
+ }
203
+ detachReadyListeners() {
204
+ if (this.readyOpenHandler)
205
+ this.ws.removeEventListener('open', this.readyOpenHandler);
206
+ if (this.readyErrorHandler)
207
+ this.ws.removeEventListener('error', this.readyErrorHandler);
208
+ this.readyOpenHandler = undefined;
209
+ this.readyErrorHandler = undefined;
210
+ }
211
+ }
212
+ exports.BrowserWebSocketNetwork = BrowserWebSocketNetwork;
213
+ const waitWebSocketOpen = (ws, timeoutMs) => {
214
+ if (ws.readyState === stateValue(ws, 'OPEN', 1))
215
+ return Promise.resolve();
216
+ return new Promise((resolve, reject) => {
217
+ let settled = false;
218
+ const timer = timeoutMs > 0
219
+ ? setTimeout(() => rejectOnce(new Error(`timeout waiting for WebSocket open: ${timeoutMs}ms`)), timeoutMs)
220
+ : undefined;
221
+ const cleanup = () => {
222
+ if (timer)
223
+ clearTimeout(timer);
224
+ ws.removeEventListener('open', onOpen);
225
+ ws.removeEventListener('error', onError);
226
+ ws.removeEventListener('close', onClose);
227
+ };
228
+ const resolveOnce = () => {
229
+ if (settled)
230
+ return;
231
+ settled = true;
232
+ cleanup();
233
+ resolve();
234
+ };
235
+ const rejectOnce = (error) => {
236
+ if (settled)
237
+ return;
238
+ settled = true;
239
+ cleanup();
240
+ reject(error);
241
+ };
242
+ const onOpen = () => resolveOnce();
243
+ const onError = (event) => rejectOnce(event);
244
+ const onClose = () => rejectOnce(new Error(`WebSocket closed before open`));
245
+ ws.addEventListener('open', onOpen, { once: true });
246
+ ws.addEventListener('error', onError, { once: true });
247
+ ws.addEventListener('close', onClose, { once: true });
248
+ });
249
+ };
250
+ const stateValue = (ws, key, fallback) => (typeof ws[key] === 'number' ? ws[key] : fallback);
251
+ const asWebSocketText = (data) => __awaiter(void 0, void 0, void 0, function* () {
252
+ if (typeof data === 'string')
253
+ return data;
254
+ if (data instanceof ArrayBuffer)
255
+ return new TextDecoder().decode(data);
256
+ if (ArrayBuffer.isView(data))
257
+ return new TextDecoder().decode(data);
258
+ const readable = data;
259
+ if (typeof (readable === null || readable === void 0 ? void 0 : readable.text) === 'function')
260
+ return readable.text();
261
+ if (typeof (readable === null || readable === void 0 ? void 0 : readable.arrayBuffer) === 'function')
262
+ return new TextDecoder().decode(yield readable.arrayBuffer());
263
+ return String(data);
264
+ });
265
+ const tryParseWebSocketJSON = (text) => {
266
+ try {
267
+ return JSON.parse(text);
268
+ }
269
+ catch (_a) {
270
+ return undefined;
271
+ }
272
+ };
273
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/socket/websocket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lemon-model",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Common shared model definitions for Lemon Micro-Service Platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",