lemon-model 1.2.2 → 1.2.4

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 (141) hide show
  1. package/dist/esm/index.js +3 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/logtrace/index.js +11 -0
  4. package/dist/esm/logtrace/index.js.map +1 -0
  5. package/dist/esm/logtrace/logtrace.js +251 -0
  6. package/dist/esm/logtrace/logtrace.js.map +1 -0
  7. package/dist/esm/logtrace/testing.js +77 -0
  8. package/dist/esm/logtrace/testing.js.map +1 -0
  9. package/dist/esm/progress/index.js +9 -0
  10. package/dist/esm/progress/index.js.map +1 -0
  11. package/dist/esm/progress/progress.js +256 -0
  12. package/dist/esm/progress/progress.js.map +1 -0
  13. package/dist/esm/progress/testing.js +98 -0
  14. package/dist/esm/progress/testing.js.map +1 -0
  15. package/dist/esm/socket/decorators.js +266 -0
  16. package/dist/esm/socket/decorators.js.map +1 -0
  17. package/dist/esm/socket/index.js +2 -0
  18. package/dist/esm/socket/index.js.map +1 -1
  19. package/dist/esm/socket/multi.js +94 -0
  20. package/dist/esm/socket/multi.js.map +1 -0
  21. package/dist/esm/socket/socket.js +82 -22
  22. package/dist/esm/socket/socket.js.map +1 -1
  23. package/dist/esm/socket/transport.js +385 -3
  24. package/dist/esm/socket/transport.js.map +1 -1
  25. package/dist/esm/socket/websocket.js +18 -4
  26. package/dist/esm/socket/websocket.js.map +1 -1
  27. package/dist/esm/sync/client.js +166 -0
  28. package/dist/esm/sync/client.js.map +1 -0
  29. package/dist/esm/sync/index.js +14 -0
  30. package/dist/esm/sync/index.js.map +1 -0
  31. package/dist/esm/sync/machine.js +181 -0
  32. package/dist/esm/sync/machine.js.map +1 -0
  33. package/dist/esm/sync/network.js +273 -0
  34. package/dist/esm/sync/network.js.map +1 -0
  35. package/dist/esm/sync/testing.js +44 -0
  36. package/dist/esm/sync/testing.js.map +1 -0
  37. package/dist/esm/sync/ticker.js +53 -0
  38. package/dist/esm/sync/ticker.js.map +1 -0
  39. package/dist/esm/sync/types.js +2 -0
  40. package/dist/{proxy → esm/sync}/types.js.map +1 -1
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.js +3 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/logtrace/index.d.ts +7 -0
  45. package/dist/logtrace/index.js +27 -0
  46. package/dist/logtrace/index.js.map +1 -0
  47. package/dist/logtrace/logtrace.d.ts +99 -0
  48. package/dist/logtrace/logtrace.js +256 -0
  49. package/dist/logtrace/logtrace.js.map +1 -0
  50. package/dist/logtrace/testing.d.ts +40 -0
  51. package/dist/logtrace/testing.js +81 -0
  52. package/dist/logtrace/testing.js.map +1 -0
  53. package/dist/progress/index.d.ts +8 -0
  54. package/dist/{proxy → progress}/index.js +5 -9
  55. package/dist/progress/index.js.map +1 -0
  56. package/dist/progress/progress.d.ts +112 -0
  57. package/dist/progress/progress.js +263 -0
  58. package/dist/progress/progress.js.map +1 -0
  59. package/dist/progress/testing.d.ts +33 -0
  60. package/dist/progress/testing.js +102 -0
  61. package/dist/progress/testing.js.map +1 -0
  62. package/dist/socket/client/index.d.ts +9 -0
  63. package/dist/socket/client/index.js +26 -0
  64. package/dist/socket/client/index.js.map +1 -0
  65. package/dist/socket/client/keep-alive-controller.d.ts +35 -0
  66. package/dist/socket/client/keep-alive-controller.js +101 -0
  67. package/dist/socket/client/keep-alive-controller.js.map +1 -0
  68. package/dist/socket/client/message-router.d.ts +15 -0
  69. package/dist/socket/client/message-router.js +52 -0
  70. package/dist/socket/client/message-router.js.map +1 -0
  71. package/dist/socket/client/pending-request-store.d.ts +24 -0
  72. package/dist/socket/client/pending-request-store.js +78 -0
  73. package/dist/socket/client/pending-request-store.js.map +1 -0
  74. package/dist/socket/client/reconnect-controller.d.ts +56 -0
  75. package/dist/socket/client/reconnect-controller.js +177 -0
  76. package/dist/socket/client/reconnect-controller.js.map +1 -0
  77. package/dist/socket/client/rotation-controller.d.ts +32 -0
  78. package/dist/socket/client/rotation-controller.js +76 -0
  79. package/dist/socket/client/rotation-controller.js.map +1 -0
  80. package/dist/socket/client/shared-timer-scheduler.d.ts +17 -0
  81. package/dist/socket/client/shared-timer-scheduler.js +77 -0
  82. package/dist/socket/client/shared-timer-scheduler.js.map +1 -0
  83. package/dist/socket/client/socket-client.d.ts +2 -0
  84. package/dist/socket/client/socket-client.js +219 -0
  85. package/dist/socket/client/socket-client.js.map +1 -0
  86. package/dist/socket/client/types.d.ts +101 -0
  87. package/dist/socket/client/types.js +3 -0
  88. package/dist/socket/client/types.js.map +1 -0
  89. package/dist/socket/client/websocket-client-transport.d.ts +23 -0
  90. package/dist/socket/client/websocket-client-transport.js +152 -0
  91. package/dist/socket/client/websocket-client-transport.js.map +1 -0
  92. package/dist/socket/decorators.d.ts +38 -0
  93. package/dist/socket/decorators.js +271 -0
  94. package/dist/socket/decorators.js.map +1 -0
  95. package/dist/socket/index.d.ts +2 -0
  96. package/dist/socket/index.js +2 -0
  97. package/dist/socket/index.js.map +1 -1
  98. package/dist/socket/multi.d.ts +33 -0
  99. package/dist/socket/multi.js +98 -0
  100. package/dist/socket/multi.js.map +1 -0
  101. package/dist/socket/socket.d.ts +22 -4
  102. package/dist/socket/socket.js +82 -22
  103. package/dist/socket/socket.js.map +1 -1
  104. package/dist/socket/transport.d.ts +124 -6
  105. package/dist/socket/transport.js +389 -4
  106. package/dist/socket/transport.js.map +1 -1
  107. package/dist/socket/websocket.d.ts +14 -0
  108. package/dist/socket/websocket.js +19 -5
  109. package/dist/socket/websocket.js.map +1 -1
  110. package/dist/sync/client.d.ts +16 -0
  111. package/dist/sync/client.js +171 -0
  112. package/dist/sync/client.js.map +1 -0
  113. package/dist/sync/index.d.ts +10 -0
  114. package/dist/sync/index.js +30 -0
  115. package/dist/sync/index.js.map +1 -0
  116. package/dist/sync/machine.d.ts +3 -0
  117. package/dist/sync/machine.js +185 -0
  118. package/dist/sync/machine.js.map +1 -0
  119. package/dist/sync/network.d.ts +38 -0
  120. package/dist/sync/network.js +278 -0
  121. package/dist/sync/network.js.map +1 -0
  122. package/dist/sync/testing.d.ts +38 -0
  123. package/dist/sync/testing.js +48 -0
  124. package/dist/sync/testing.js.map +1 -0
  125. package/dist/sync/ticker.d.ts +21 -0
  126. package/dist/sync/ticker.js +57 -0
  127. package/dist/sync/ticker.js.map +1 -0
  128. package/dist/sync/types.d.ts +115 -0
  129. package/dist/sync/types.js +3 -0
  130. package/dist/sync/types.js.map +1 -0
  131. package/package.json +13 -1
  132. package/dist/proxy/index.d.ts +0 -12
  133. package/dist/proxy/index.js.map +0 -1
  134. package/dist/proxy/proxy.d.ts +0 -75
  135. package/dist/proxy/proxy.js +0 -198
  136. package/dist/proxy/proxy.js.map +0 -1
  137. package/dist/proxy/transport.d.ts +0 -123
  138. package/dist/proxy/transport.js +0 -401
  139. package/dist/proxy/transport.js.map +0 -1
  140. package/dist/proxy/types.d.ts +0 -89
  141. package/dist/proxy/types.js +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/progress/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ /**
22
+ * `progress/testing.ts`
23
+ * - isolated entry for the progress end-to-end loop harness.
24
+ * - kept OUT of the package root barrel so production bundles do not include the in-memory socket simulator.
25
+ *
26
+ * Usage (tests / dev only):
27
+ * import { runProgressLoop } from 'lemon-model/progress/testing';
28
+ *
29
+ * @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
30
+ */
31
+ import { createNetwork } from '../socket/socket.js';
32
+ import { createProgressConsumer, createProgressReporter, } from './progress.js';
33
+ /**
34
+ * Run an end-to-end loop: script -> ProgressReporter -> NetworkSupportable -> ProgressConsumer,
35
+ * and return numeric metrics for assertion (same pattern as `buffer/testing.runGenAIStreamNetworkLoop`).
36
+ */
37
+ export const runProgressLoop = (options) => __awaiter(void 0, void 0, void 0, function* () {
38
+ var _a, _b;
39
+ const startedAt = Date.now();
40
+ const network = createNetwork(Object.assign({}, options.networkOptions));
41
+ const typePrefix = (_b = (_a = options.consumerOptions) === null || _a === void 0 ? void 0 : _a.typePrefix) !== null && _b !== void 0 ? _b : 'progress:';
42
+ // Keep wire packets so specs can compare emitted, applied, and stale counts.
43
+ const rawPackets = [];
44
+ const unsubscribeRaw = network.onMessage(raw => rawPackets.push(raw));
45
+ const consumer = createProgressConsumer(network, options.consumerOptions);
46
+ let applied = 0;
47
+ const unsubscribeChange = consumer.onChange(() => (applied += 1));
48
+ let emitted = 0;
49
+ const reporter = createProgressReporter(message => {
50
+ emitted += 1;
51
+ network.send(JSON.stringify(message));
52
+ }, options.reporterOptions);
53
+ try {
54
+ const tasks = new Map();
55
+ // Reuse task handles by id so each script patch models a real task update.
56
+ const taskOf = (id) => {
57
+ const existing = tasks.get(id);
58
+ if (existing)
59
+ return existing;
60
+ const started = reporter.start(id);
61
+ tasks.set(id, started);
62
+ return started;
63
+ };
64
+ for (const patch of options.script) {
65
+ const { id, ts: _ts, seq: _seq, status, error } = patch, rest = __rest(patch, ["id", "ts", "seq", "status", "error"]);
66
+ const task = taskOf(id !== null && id !== void 0 ? id : 'task');
67
+ if (status === 'done')
68
+ task.done(rest);
69
+ else if (status === 'error')
70
+ task.error(error !== null && error !== void 0 ? error : 'error', rest);
71
+ else
72
+ task.update(Object.assign(Object.assign({}, rest), { error, status }));
73
+ }
74
+ reporter.close();
75
+ yield new Promise(resolve => { var _a; return setTimeout(resolve, (_a = options.settleMs) !== null && _a !== void 0 ? _a : 50); });
76
+ // Only matching progress envelopes can become stale drops on a shared network.
77
+ const arrived = rawPackets.filter(raw => raw.includes(`"type":"${typePrefix}`)).length;
78
+ return {
79
+ elapsedMs: Date.now() - startedAt,
80
+ packets: rawPackets.length,
81
+ packetBytes: rawPackets.reduce((sum, raw) => sum + byteLength(raw), 0),
82
+ maxPacketBytes: rawPackets.reduce((max, raw) => Math.max(max, byteLength(raw)), 0),
83
+ emitted,
84
+ applied,
85
+ staleDropped: arrived - applied,
86
+ finalStates: consumer.list(),
87
+ };
88
+ }
89
+ finally {
90
+ unsubscribeRaw();
91
+ unsubscribeChange();
92
+ consumer.close();
93
+ network.close();
94
+ }
95
+ });
96
+ const textEncoder = new TextEncoder();
97
+ const byteLength = (value) => textEncoder.encode(value).length;
98
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/progress/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { WEBSOCKET_NETWORK_SCOPE } from './websocket.js';
2
+ /**
3
+ * default watchdog cadence for readyState-based death detection.
4
+ * needed because an in-memory `Network.close()` notifies no one (see `socket/socket.ts`); only a
5
+ * real `OwnedWebSocketNetwork`/`BrowserWebSocketNetwork` close notifies via `onError` (see below),
6
+ * so the watchdog is a fallback and can stay slow — 1s keeps idle browser cost negligible.
7
+ */
8
+ const DEFAULT_WATCHDOG_MS = 1000;
9
+ /** create the L1 reconnect decorator: swaps the internal network on death, keeping instance identity for L3 */
10
+ export const createReconnectingNetwork = (factory, options) => new ReconnectingNetwork(factory, options);
11
+ /** `NetworkSupportable` decorator that transparently swaps its internal network on death */
12
+ class ReconnectingNetwork {
13
+ constructor(factory, options) {
14
+ var _a, _b, _c, _d;
15
+ this.factory = factory;
16
+ this._generation = 0;
17
+ /** connected: 정상 감시 | connecting: 후보 open 대기 | backoff: 재시도 대기 | closed: 영구 종료 */
18
+ this.phase = 'connected';
19
+ this.retryCount = 0;
20
+ this.lastMessageAt = Date.now();
21
+ this.messageHandlers = new Set();
22
+ this.errorHandlers = new Set();
23
+ this.reconnectHandlers = new Set();
24
+ this.baseMs = (_a = options === null || options === void 0 ? void 0 : options.baseMs) !== null && _a !== void 0 ? _a : 1000;
25
+ this.factor = (_b = options === null || options === void 0 ? void 0 : options.factor) !== null && _b !== void 0 ? _b : 2;
26
+ this.maxMs = (_c = options === null || options === void 0 ? void 0 : options.maxMs) !== null && _c !== void 0 ? _c : 30000;
27
+ this.maxRetries = options === null || options === void 0 ? void 0 : options.maxRetries;
28
+ this.idleTimeoutMs = options === null || options === void 0 ? void 0 : options.idleTimeoutMs;
29
+ this.delayMs = this.baseMs;
30
+ this.current = factory();
31
+ this.attach(this.current);
32
+ this.watchdogTimer = setInterval(() => this.watch(), (_d = options === null || options === void 0 ? void 0 : options.watchdogMs) !== null && _d !== void 0 ? _d : DEFAULT_WATCHDOG_MS);
33
+ }
34
+ /** internal network generation (0 initially, +1 per reconnect) */
35
+ get generation() {
36
+ return this._generation;
37
+ }
38
+ get readyState() {
39
+ return this.phase === 'closed' ? 'closed' : this.current.readyState;
40
+ }
41
+ ready() {
42
+ var _a, _b, _c;
43
+ return (_c = (_b = (_a = this.current).ready) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : Promise.resolve();
44
+ }
45
+ onOpen(handler) {
46
+ var _a, _b, _c;
47
+ return (_c = (_b = (_a = this.current).onOpen) === null || _b === void 0 ? void 0 : _b.call(_a, handler)) !== null && _c !== void 0 ? _c : (() => undefined);
48
+ }
49
+ /** while disconnected (mid-reconnect or permanently closed) this throws synchronously; no send queuing */
50
+ send(data) {
51
+ if (this.phase === 'closed')
52
+ throw new Error(`@network is closed - reconnectingNetwork.send`);
53
+ if (this.current.readyState !== 'open') {
54
+ throw new Error(`@network is not connected - reconnectingNetwork.send`);
55
+ }
56
+ this.current.send(data);
57
+ }
58
+ onMessage(handler) {
59
+ this.messageHandlers.add(handler);
60
+ return () => this.messageHandlers.delete(handler);
61
+ }
62
+ onError(handler) {
63
+ this.errorHandlers.add(handler);
64
+ return () => this.errorHandlers.delete(handler);
65
+ }
66
+ onReconnect(handler) {
67
+ this.reconnectHandlers.add(handler);
68
+ return () => this.reconnectHandlers.delete(handler);
69
+ }
70
+ /** options are remembered and re-applied to every reconnected generation */
71
+ configure(options) {
72
+ var _a, _b;
73
+ this.configured = Object.assign(Object.assign({}, this.configured), options);
74
+ (_b = (_a = this.current).configure) === null || _b === void 0 ? void 0 : _b.call(_a, this.configured);
75
+ }
76
+ /** stop reconnecting and close the internal network for good */
77
+ close(code, reason) {
78
+ if (this.phase === 'closed')
79
+ return;
80
+ this.phase = 'closed';
81
+ clearInterval(this.watchdogTimer);
82
+ if (this.reconnectTimer)
83
+ clearTimeout(this.reconnectTimer);
84
+ this.detach();
85
+ this.current.close(code, reason);
86
+ this.messageHandlers.clear();
87
+ this.errorHandlers.clear();
88
+ this.reconnectHandlers.clear();
89
+ }
90
+ attach(network) {
91
+ this.unsubscribeMessage = network.onMessage(raw => {
92
+ this.lastMessageAt = Date.now();
93
+ for (const handler of [...this.messageHandlers])
94
+ handler(raw);
95
+ });
96
+ this.unsubscribeError = network.onError((error, context) => {
97
+ for (const handler of [...this.errorHandlers])
98
+ handler(error, Object.assign(Object.assign({}, context), { network: this }));
99
+ //! `OwnedWebSocketNetwork`/`BrowserWebSocketNetwork` notify a close via onError with this scope
100
+ //! (see `WEBSOCKET_NETWORK_SCOPE` in `socket/websocket.ts`). other onError calls (e.g. delivery
101
+ //! errors) are forwarded above but do not by themselves mean the network died.
102
+ if (context.scope === WEBSOCKET_NETWORK_SCOPE.ownedClose ||
103
+ context.scope === WEBSOCKET_NETWORK_SCOPE.browserClose) {
104
+ this.onInnerDeath();
105
+ }
106
+ });
107
+ }
108
+ detach() {
109
+ var _a, _b, _c;
110
+ (_a = this.unsubscribeMessage) === null || _a === void 0 ? void 0 : _a.call(this);
111
+ (_b = this.unsubscribeError) === null || _b === void 0 ? void 0 : _b.call(this);
112
+ (_c = this.unsubscribeCandidateOpen) === null || _c === void 0 ? void 0 : _c.call(this);
113
+ }
114
+ onInnerDeath() {
115
+ if (this.phase === 'connected')
116
+ this.beginBackoff();
117
+ else if (this.phase === 'connecting')
118
+ this.failAttempt(new Error(`@candidate network died before open - reconnectingNetwork`), 'reconnectingNetwork.connect');
119
+ }
120
+ /** watchdog fallback for networks that close without notifying (e.g. in-memory `Network.close()`) */
121
+ watch() {
122
+ const state = this.current.readyState;
123
+ if (this.phase === 'connected') {
124
+ if (state === 'closing' || state === 'closed')
125
+ return this.beginBackoff();
126
+ if (this.idleTimeoutMs && Date.now() - this.lastMessageAt > this.idleTimeoutMs)
127
+ this.beginBackoff();
128
+ return;
129
+ }
130
+ if (this.phase === 'connecting') {
131
+ if (state === 'open')
132
+ return this.settleReconnected(); // onOpen 없는 network용 fallback
133
+ if (state === 'closing' || state === 'closed')
134
+ this.onInnerDeath();
135
+ }
136
+ }
137
+ beginBackoff() {
138
+ this.detach();
139
+ this.phase = 'backoff';
140
+ this.reconnectTimer = setTimeout(() => this.attemptReconnect(), this.delayMs);
141
+ }
142
+ attemptReconnect() {
143
+ var _a, _b;
144
+ if (this.phase === 'closed')
145
+ return;
146
+ if (this.maxRetries != null && this.retryCount >= this.maxRetries) {
147
+ this.phase = 'closed';
148
+ clearInterval(this.watchdogTimer);
149
+ const error = new Error(`@network exceeded maxRetries[${this.maxRetries}] - reconnectingNetwork`);
150
+ for (const handler of [...this.errorHandlers])
151
+ handler(error, { scope: 'reconnectingNetwork.maxRetries', network: this });
152
+ this.messageHandlers.clear();
153
+ this.errorHandlers.clear();
154
+ this.reconnectHandlers.clear();
155
+ return;
156
+ }
157
+ let next;
158
+ try {
159
+ next = this.factory();
160
+ }
161
+ catch (e) {
162
+ this.failAttempt(e, 'reconnectingNetwork.factory');
163
+ return;
164
+ }
165
+ this.current = next;
166
+ this.attach(next);
167
+ if (this.configured)
168
+ (_a = next.configure) === null || _a === void 0 ? void 0 : _a.call(next, this.configured);
169
+ this.phase = 'connecting';
170
+ //! success is declared only once the candidate actually OPENS. a factory return alone is not a
171
+ //! connection (a real WebSocket constructs fine while the server is down), so resetting backoff
172
+ //! here would degrade to a constant-rate reconnect storm with an onReconnect/tick per attempt.
173
+ const state = next.readyState;
174
+ if (state === 'open')
175
+ return this.settleReconnected();
176
+ if (state === 'closing' || state === 'closed')
177
+ return this.onInnerDeath();
178
+ this.unsubscribeCandidateOpen = (_b = next.onOpen) === null || _b === void 0 ? void 0 : _b.call(next, () => {
179
+ if (this.phase === 'connecting' && this.current === next)
180
+ this.settleReconnected();
181
+ });
182
+ //! a candidate stuck in 'connecting' is bounded by the inner network's own connect timeout
183
+ //! (e.g. `OwnedWebSocketNetwork.connectTimeoutMs`), which actual-closes and lands in onInnerDeath.
184
+ }
185
+ /** a reconnect attempt failed (factory throw, or candidate died before open): keep growing the backoff */
186
+ failAttempt(error, scope) {
187
+ this.detach();
188
+ this.retryCount++;
189
+ this.delayMs = Math.min(this.delayMs * this.factor, this.maxMs);
190
+ for (const handler of [...this.errorHandlers])
191
+ handler(error, { scope, network: this });
192
+ this.phase = 'backoff';
193
+ this.reconnectTimer = setTimeout(() => this.attemptReconnect(), this.delayMs);
194
+ }
195
+ /** the candidate opened: only now reset the backoff/retry budget and notify onReconnect */
196
+ settleReconnected() {
197
+ var _a;
198
+ (_a = this.unsubscribeCandidateOpen) === null || _a === void 0 ? void 0 : _a.call(this);
199
+ this.unsubscribeCandidateOpen = undefined;
200
+ this.phase = 'connected';
201
+ this._generation++;
202
+ this.retryCount = 0;
203
+ this.delayMs = this.baseMs;
204
+ this.lastMessageAt = Date.now();
205
+ for (const handler of [...this.reconnectHandlers])
206
+ handler();
207
+ }
208
+ }
209
+ /** create the L1 wire translator decorator over a raw string, same slot as `createFilteredNetwork` */
210
+ export const createTranslatedNetwork = (source, translator) => new TranslatedNetwork(source, translator);
211
+ /** `NetworkSupportable` decorator that translates raw strings at the wire boundary */
212
+ class TranslatedNetwork {
213
+ constructor(source, translator) {
214
+ this.source = source;
215
+ this.translator = translator;
216
+ this.errorHandlers = new Set();
217
+ this.unsubscribeSourceError = source.onError((error, context) => this.emitError(error, context));
218
+ }
219
+ get readyState() {
220
+ return this.source.readyState;
221
+ }
222
+ ready() {
223
+ var _a, _b, _c;
224
+ return (_c = (_b = (_a = this.source).ready) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : Promise.resolve();
225
+ }
226
+ onOpen(handler) {
227
+ var _a, _b, _c;
228
+ return (_c = (_b = (_a = this.source).onOpen) === null || _b === void 0 ? void 0 : _b.call(_a, handler)) !== null && _c !== void 0 ? _c : (() => undefined);
229
+ }
230
+ send(data) {
231
+ this.source.send(this.translator.outbound ? this.translator.outbound(data) : data);
232
+ }
233
+ onMessage(handler) {
234
+ return this.source.onMessage(raw => {
235
+ let translated;
236
+ try {
237
+ translated = this.translator.inbound ? this.translator.inbound(raw) : raw;
238
+ }
239
+ catch (e) {
240
+ this.emitError(e, { scope: 'translatedNetwork.inbound' });
241
+ return;
242
+ }
243
+ if (translated === undefined)
244
+ return; // dropped by translator
245
+ handler(translated);
246
+ });
247
+ }
248
+ configure(options) {
249
+ var _a, _b;
250
+ (_b = (_a = this.source).configure) === null || _b === void 0 ? void 0 : _b.call(_a, options);
251
+ }
252
+ onError(handler) {
253
+ this.errorHandlers.add(handler);
254
+ return () => this.errorHandlers.delete(handler);
255
+ }
256
+ close(code, reason) {
257
+ this.unsubscribeSourceError();
258
+ this.errorHandlers.clear();
259
+ this.source.close(code, reason);
260
+ }
261
+ emitError(error, context) {
262
+ for (const handler of [...this.errorHandlers])
263
+ handler(error, Object.assign(Object.assign({}, context), { network: this }));
264
+ }
265
+ }
266
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/socket/decorators.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  export * from './types.js';
8
8
  export * from './transport.js';
9
9
  export * from './websocket.js';
10
+ export * from './decorators.js';
11
+ export * from './multi.js';
10
12
  //! NOTE: the in-memory peer simulator (`./socket`) is intentionally NOT re-exported here.
11
13
  //! It is a test/dev utility — import it via the isolated `lemon-model/socket/testing` entry
12
14
  //! so production (esp. frontend) bundles do not pull in the simulator runtime.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/socket/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,0FAA0F;AAC1F,4FAA4F;AAC5F,+EAA+E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/socket/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,0FAA0F;AAC1F,4FAA4F;AAC5F,+EAA+E"}
@@ -0,0 +1,94 @@
1
+ /** `scope` values `MultiSocketNetwork` puts on `SocketErrorContext` */
2
+ export const MULTI_NETWORK_SCOPE = {
3
+ send: 'network.multi.send',
4
+ };
5
+ /**
6
+ * `NetworkSupportable` composite over N (>=2) sockets.
7
+ *
8
+ * `send`/`readyState`/`ready`/`onOpen` delegate to the main socket (index 0) only (01 no-breakage).
9
+ * `sendAll` is the only member that touches every socket; failures never throw and are only
10
+ * observable via `onError`.
11
+ */
12
+ class MultiSocketNetwork {
13
+ constructor(networks) {
14
+ this.networks = networks;
15
+ /** array (not Set) so a handler subscribed twice fires twice, matching the underlying delegation path */
16
+ this.errorHandlers = [];
17
+ }
18
+ get readyState() {
19
+ return this.networks[0].readyState;
20
+ }
21
+ ready() {
22
+ var _a, _b, _c;
23
+ return (_c = (_b = (_a = this.networks[0]).ready) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : Promise.resolve();
24
+ }
25
+ onOpen(handler) {
26
+ var _a, _b, _c;
27
+ return (_c = (_b = (_a = this.networks[0]).onOpen) === null || _b === void 0 ? void 0 : _b.call(_a, handler)) !== null && _c !== void 0 ? _c : (() => undefined);
28
+ }
29
+ send(data) {
30
+ this.networks[0].send(data);
31
+ }
32
+ /** send to every socket independently; each failure is caught and re-emitted with index, never thrown */
33
+ sendAll(data) {
34
+ this.networks.forEach((network, index) => this.trySend(network, data, index));
35
+ }
36
+ onMessage(handler) {
37
+ const unsubscribes = this.networks.map(network => network.onMessage(handler));
38
+ return () => unsubscribes.forEach(unsubscribe => unsubscribe());
39
+ }
40
+ onError(handler) {
41
+ const unsubscribes = this.networks.map((network, index) => network.onError((error, context) => {
42
+ const tagged = Object.assign(Object.assign({}, context), { network: this, index });
43
+ handler(error, tagged);
44
+ }));
45
+ this.errorHandlers.push(handler);
46
+ return () => {
47
+ unsubscribes.forEach(unsubscribe => unsubscribe());
48
+ const index = this.errorHandlers.indexOf(handler);
49
+ if (index >= 0)
50
+ this.errorHandlers.splice(index, 1);
51
+ };
52
+ }
53
+ configure(options) {
54
+ this.networks.forEach(network => { var _a; return (_a = network.configure) === null || _a === void 0 ? void 0 : _a.call(network, options); });
55
+ }
56
+ /** close every socket independently (idempotent); onError subscriptions stay alive so post-close sendAll failures are still observable */
57
+ close(code, reason) {
58
+ this.networks.forEach(network => {
59
+ try {
60
+ network.close(code, reason);
61
+ }
62
+ catch (_a) {
63
+ // ignore; the other sockets must still be closed
64
+ }
65
+ });
66
+ }
67
+ trySend(network, data, index) {
68
+ try {
69
+ network.send(data);
70
+ }
71
+ catch (e) {
72
+ const context = { scope: MULTI_NETWORK_SCOPE.send, network: this, index };
73
+ for (const handler of [...this.errorHandlers]) {
74
+ try {
75
+ handler(e, context);
76
+ }
77
+ catch (_a) {
78
+ // sendAll() must never throw; a throwing consumer handler cannot break the other sockets' send
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
84
+ export function createMultiSocketNetwork(input) {
85
+ const count = Array.isArray(input) ? input.length : input.count;
86
+ if (count < 2) {
87
+ throw new Error(`@networks (2+) is required - createMultiSocketNetwork(${count})`);
88
+ }
89
+ const networks = Array.isArray(input)
90
+ ? input
91
+ : Array.from({ length: count }, (_, index) => input.networkFactory(index));
92
+ return new MultiSocketNetwork(networks);
93
+ }
94
+ //# sourceMappingURL=multi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi.js","sourceRoot":"","sources":["../../../src/socket/multi.ts"],"names":[],"mappings":"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"}