@soulcraft/sdk 2.0.2 → 2.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.
- package/dist/modules/hall/admin.d.ts +39 -0
- package/dist/modules/hall/admin.d.ts.map +1 -0
- package/dist/modules/hall/admin.js +115 -0
- package/dist/modules/hall/admin.js.map +1 -0
- package/dist/modules/hall/server.d.ts +37 -1
- package/dist/modules/hall/server.d.ts.map +1 -1
- package/dist/modules/hall/server.js +93 -0
- package/dist/modules/hall/server.js.map +1 -1
- package/dist/modules/hall/types.d.ts +157 -0
- package/dist/modules/hall/types.d.ts.map +1 -1
- package/dist/server/hall-handlers.d.ts +20 -2
- package/dist/server/hall-handlers.d.ts.map +1 -1
- package/dist/server/hall-handlers.js +21 -0
- package/dist/server/hall-handlers.js.map +1 -1
- package/dist/server/index.d.ts +3 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/namespace-router.d.ts +21 -2
- package/dist/server/namespace-router.d.ts.map +1 -1
- package/dist/server/namespace-router.js +26 -13
- package/dist/server/namespace-router.js.map +1 -1
- package/dist/server/ws-handler.d.ts +167 -0
- package/dist/server/ws-handler.d.ts.map +1 -0
- package/dist/server/ws-handler.js +243 -0
- package/dist/server/ws-handler.js.map +1 -0
- package/dist/transports/ws.d.ts +29 -1
- package/dist/transports/ws.d.ts.map +1 -1
- package/dist/transports/ws.js +129 -3
- package/dist/transports/ws.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module server/ws-handler
|
|
3
|
+
* @description Namespace-aware WebSocket handler for the Soulcraft SDK.
|
|
4
|
+
*
|
|
5
|
+
* Provides `createNamespaceWsHandler()` — a server-side handler that processes
|
|
6
|
+
* WebSocket messages through the same namespace router used by HTTP RPC, plus
|
|
7
|
+
* Y.js collaborative editing and real-time change push.
|
|
8
|
+
*
|
|
9
|
+
* ## Wire protocol
|
|
10
|
+
*
|
|
11
|
+
* All frames are binary MessagePack. The protocol supports four message categories:
|
|
12
|
+
*
|
|
13
|
+
* 1. **Namespace RPC** — `{ id, ns, method, args }` dispatched to the namespace router
|
|
14
|
+
* 2. **Streaming RPC** — `{ id, ns, method, args, stream: true }` returns chunked responses
|
|
15
|
+
* 3. **Y.js collab** — `{ type: 'y-sync'|'y-update'|'y-awareness', ... }` for CRDT editing
|
|
16
|
+
* 4. **Change push** — `{ type: 'change', ... }` broadcast from server on data mutations
|
|
17
|
+
*
|
|
18
|
+
* ## Auth
|
|
19
|
+
*
|
|
20
|
+
* Authentication happens once during `handleUpgrade()`. The resulting `WsSession`
|
|
21
|
+
* carries the authenticated user context. Subsequent messages are dispatched with
|
|
22
|
+
* pre-authenticated context — no per-message auth overhead.
|
|
23
|
+
*
|
|
24
|
+
* ## Relationship to namespace router
|
|
25
|
+
*
|
|
26
|
+
* The WS handler is a thin transport adapter. All RPC dispatch logic lives in
|
|
27
|
+
* `namespace-router.ts`. This handler adds: token extraction, Y.js routing,
|
|
28
|
+
* peer tracking, streaming frame serialization, and change broadcasting.
|
|
29
|
+
*
|
|
30
|
+
* @example Bun server wiring
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { createNamespaceWsHandler, YDocManager } from '@soulcraft/sdk/server'
|
|
33
|
+
*
|
|
34
|
+
* const handler = createNamespaceWsHandler({
|
|
35
|
+
* router: routerConfig,
|
|
36
|
+
* ydocManager: new YDocManager(),
|
|
37
|
+
* })
|
|
38
|
+
*
|
|
39
|
+
* Bun.serve({
|
|
40
|
+
* async fetch(req, server) {
|
|
41
|
+
* if (new URL(req.url).pathname === '/api/brainy/ws') {
|
|
42
|
+
* const session = await handler.handleUpgrade(req)
|
|
43
|
+
* if (!session) return new Response('Unauthorized', { status: 401 })
|
|
44
|
+
* server.upgrade(req, { data: session })
|
|
45
|
+
* return undefined
|
|
46
|
+
* }
|
|
47
|
+
* },
|
|
48
|
+
* websocket: {
|
|
49
|
+
* open(ws) { ws.send(encode({ type: 'ready', scope: ws.data.scope })) },
|
|
50
|
+
* async message(ws, data) {
|
|
51
|
+
* await handler.handleMessage(ws.data, data, (msg) => ws.send(msg))
|
|
52
|
+
* },
|
|
53
|
+
* async close(ws) { await handler.handleClose(ws.data) },
|
|
54
|
+
* },
|
|
55
|
+
* })
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
import { encode, decode } from '@msgpack/msgpack';
|
|
59
|
+
import { createNamespaceRouter } from './namespace-router.js';
|
|
60
|
+
import { YDocManager } from '../modules/brainy/ydoc-manager.js';
|
|
61
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
62
|
+
// Factory
|
|
63
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Creates a namespace-aware WebSocket handler that dispatches RPC through the
|
|
66
|
+
* same namespace router used by HTTP, plus Y.js collaborative editing.
|
|
67
|
+
*
|
|
68
|
+
* @param config - Handler configuration.
|
|
69
|
+
* @returns A {@link NamespaceWsHandler} instance.
|
|
70
|
+
*/
|
|
71
|
+
export function createNamespaceWsHandler(config) {
|
|
72
|
+
const { router: routerConfig, ydocManager } = config;
|
|
73
|
+
const router = createNamespaceRouter(routerConfig);
|
|
74
|
+
return {
|
|
75
|
+
async handleUpgrade(request) {
|
|
76
|
+
const url = new URL(request.url);
|
|
77
|
+
const scope = url.searchParams.get('scope') ?? '';
|
|
78
|
+
// Extract auth token — Bun/Node uses Authorization header; browsers use ?token= query.
|
|
79
|
+
const authHeader = request.headers.get('authorization') ?? '';
|
|
80
|
+
const token = authHeader.startsWith('Bearer ')
|
|
81
|
+
? authHeader.slice(7)
|
|
82
|
+
: (url.searchParams.get('token') ?? '');
|
|
83
|
+
// Extract workspace ID from scope or header.
|
|
84
|
+
const workspaceId = request.headers.get('x-workspace-id') ??
|
|
85
|
+
url.searchParams.get('workspaceId') ??
|
|
86
|
+
scope;
|
|
87
|
+
// Build a synthetic RequestContext for the router's authenticate callback.
|
|
88
|
+
const ctx = {
|
|
89
|
+
request,
|
|
90
|
+
user: null,
|
|
91
|
+
workspaceId,
|
|
92
|
+
};
|
|
93
|
+
// Authenticate using the router's callback.
|
|
94
|
+
let user;
|
|
95
|
+
try {
|
|
96
|
+
user = await routerConfig.authenticate(ctx);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
console.error('[SDK/ws] authenticate threw during upgrade:', err);
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (!user)
|
|
103
|
+
return null;
|
|
104
|
+
// Resolve brain with the authenticated context.
|
|
105
|
+
ctx.user = user;
|
|
106
|
+
let brain;
|
|
107
|
+
try {
|
|
108
|
+
brain = await routerConfig.resolveBrain(ctx);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
console.error('[SDK/ws] resolveBrain threw during upgrade:', err);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const peerId = crypto.randomUUID();
|
|
115
|
+
return {
|
|
116
|
+
user,
|
|
117
|
+
workspaceId,
|
|
118
|
+
brain,
|
|
119
|
+
scope,
|
|
120
|
+
peerId,
|
|
121
|
+
broadcast: () => { }, // No-op until product server sets it in websocket.open()
|
|
122
|
+
};
|
|
123
|
+
},
|
|
124
|
+
async handleMessage(session, data, send) {
|
|
125
|
+
let decoded;
|
|
126
|
+
try {
|
|
127
|
+
decoded = decode(data instanceof ArrayBuffer ? new Uint8Array(data) : data);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return; // Malformed frame — silently ignore
|
|
131
|
+
}
|
|
132
|
+
if (!decoded || typeof decoded !== 'object')
|
|
133
|
+
return;
|
|
134
|
+
const msg = decoded;
|
|
135
|
+
// ── Y.js messages ──────────────────────────────────────────────────
|
|
136
|
+
if (typeof msg['type'] === 'string' && msg['type'].startsWith('y-')) {
|
|
137
|
+
await _handleYjsMessage(msg, session, send, ydocManager);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// ── Namespace RPC ──────────────────────────────────────────────────
|
|
141
|
+
const id = msg['id'];
|
|
142
|
+
const ns = msg['ns'];
|
|
143
|
+
const method = msg['method'];
|
|
144
|
+
const args = msg['args'];
|
|
145
|
+
if (typeof id !== 'string' || typeof method !== 'string' || !Array.isArray(args)) {
|
|
146
|
+
return; // Not a valid RPC frame
|
|
147
|
+
}
|
|
148
|
+
// Default namespace to 'brainy' for backward compat with SDK 1.x clients
|
|
149
|
+
// that send { id, method, args } without an ns field.
|
|
150
|
+
const resolvedNs = typeof ns === 'string' ? ns : 'brainy';
|
|
151
|
+
const stream = msg['stream'] === true;
|
|
152
|
+
const rpc = { id, ns: resolvedNs, method, args, stream };
|
|
153
|
+
// Dispatch with pre-authenticated context — skips re-authentication.
|
|
154
|
+
// The user was already verified in handleUpgrade().
|
|
155
|
+
const preAuthCtx = {
|
|
156
|
+
user: session.user,
|
|
157
|
+
workspaceId: session.workspaceId,
|
|
158
|
+
request: new Request('http://localhost/api/rpc'),
|
|
159
|
+
};
|
|
160
|
+
const result = await router.dispatch(rpc, preAuthCtx);
|
|
161
|
+
if (result.type === 'response') {
|
|
162
|
+
send(encode(result.response));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Streaming response — iterate the async iterable and send frames.
|
|
166
|
+
if (result.type === 'stream') {
|
|
167
|
+
try {
|
|
168
|
+
for await (const chunk of result.iterable) {
|
|
169
|
+
const frame = { id, chunk };
|
|
170
|
+
send(encode(frame));
|
|
171
|
+
}
|
|
172
|
+
send(encode({ id, done: true }));
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
176
|
+
send(encode({ id, error: message }));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
async handleClose(session) {
|
|
181
|
+
if (!ydocManager)
|
|
182
|
+
return;
|
|
183
|
+
await ydocManager.onPeerDisconnectAll(session.scope, session.peerId);
|
|
184
|
+
},
|
|
185
|
+
broadcastChange(event, send) {
|
|
186
|
+
send(encode(event));
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
191
|
+
// Y.js message handler
|
|
192
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
193
|
+
/**
|
|
194
|
+
* Routes a Y.js protocol message to the appropriate `YDocManager` method.
|
|
195
|
+
*
|
|
196
|
+
* ## Sync protocol (standard two-phase handshake):
|
|
197
|
+
* 1. Client sends `y-sync` with its state vector.
|
|
198
|
+
* 2. Server replies with `y-sync` diff (updates client is missing).
|
|
199
|
+
* 3. Client applies diff → sends `y-update` for pending local ops.
|
|
200
|
+
* 4. Steady state: all ops are `y-update` frames, broadcast to all other peers.
|
|
201
|
+
*
|
|
202
|
+
* ## Awareness:
|
|
203
|
+
* `y-awareness` frames carry cursor positions, user name/color. NOT persisted —
|
|
204
|
+
* forwarded to all other peers then discarded.
|
|
205
|
+
*
|
|
206
|
+
* @param msg - Decoded Y.js message frame.
|
|
207
|
+
* @param session - The WebSocket session for the sending peer.
|
|
208
|
+
* @param send - Sends a response to THIS peer only.
|
|
209
|
+
* @param ydocManager - The server-side Y.Doc pool (may be undefined if collab disabled).
|
|
210
|
+
*/
|
|
211
|
+
async function _handleYjsMessage(msg, session, send, ydocManager) {
|
|
212
|
+
if (!ydocManager)
|
|
213
|
+
return;
|
|
214
|
+
switch (msg.type) {
|
|
215
|
+
case 'y-sync': {
|
|
216
|
+
const clientSv = msg.stateVector instanceof Uint8Array
|
|
217
|
+
? msg.stateVector
|
|
218
|
+
: new Uint8Array(Object.values(msg.stateVector));
|
|
219
|
+
const diff = await ydocManager.getDiff(session.scope, msg.filePath, session.brain, clientSv);
|
|
220
|
+
send(encode({ type: 'y-sync', filePath: msg.filePath, diff }));
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case 'y-update': {
|
|
224
|
+
const update = msg.update instanceof Uint8Array
|
|
225
|
+
? msg.update
|
|
226
|
+
: new Uint8Array(Object.values(msg.update));
|
|
227
|
+
await ydocManager.getOrCreate(session.scope, msg.filePath, session.brain, session.peerId);
|
|
228
|
+
await ydocManager.applyUpdate(session.scope, msg.filePath, update);
|
|
229
|
+
const frame = encode({ type: 'y-update', filePath: msg.filePath, update });
|
|
230
|
+
session.broadcast(frame, session.peerId);
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case 'y-awareness': {
|
|
234
|
+
const update = msg.update instanceof Uint8Array
|
|
235
|
+
? msg.update
|
|
236
|
+
: new Uint8Array(Object.values(msg.update));
|
|
237
|
+
const frame = encode({ type: 'y-awareness', update });
|
|
238
|
+
session.broadcast(frame, session.peerId);
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=ws-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-handler.js","sourceRoot":"","sources":["../../src/server/ws-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/transports/ws.d.ts
CHANGED
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
54
|
import type { SDKTransport } from './transport.js';
|
|
55
|
+
import type { NamespaceTransport } from '../client/namespace-proxy.js';
|
|
55
56
|
import type { BrainyChangeEvent } from '../modules/brainy/events.js';
|
|
56
57
|
/**
|
|
57
58
|
* Transport that communicates via MessagePack-encoded WebSocket RPC.
|
|
@@ -63,7 +64,7 @@ import type { BrainyChangeEvent } from '../modules/brainy/events.js';
|
|
|
63
64
|
* `createSDK` client factory calls this automatically when `sdk.connect()` is
|
|
64
65
|
* invoked.
|
|
65
66
|
*/
|
|
66
|
-
export declare class WsTransport implements SDKTransport {
|
|
67
|
+
export declare class WsTransport implements SDKTransport, NamespaceTransport {
|
|
67
68
|
private ws;
|
|
68
69
|
private readonly wsUrl;
|
|
69
70
|
private readonly authToken;
|
|
@@ -71,6 +72,7 @@ export declare class WsTransport implements SDKTransport {
|
|
|
71
72
|
private readonly timeoutMs;
|
|
72
73
|
private readonly maxReconnectAttempts;
|
|
73
74
|
private readonly pending;
|
|
75
|
+
private readonly pendingStreams;
|
|
74
76
|
private nextId;
|
|
75
77
|
private connectionState;
|
|
76
78
|
private readonly changeListeners;
|
|
@@ -99,6 +101,9 @@ export declare class WsTransport implements SDKTransport {
|
|
|
99
101
|
/**
|
|
100
102
|
* Sends a MessagePack-encoded RPC request and awaits the response.
|
|
101
103
|
*
|
|
104
|
+
* Delegates to `callNs('brainy', method, args)` for backward compatibility
|
|
105
|
+
* with SDK 1.x callers that use the flat Brainy method namespace.
|
|
106
|
+
*
|
|
102
107
|
* @param method - Dot-separated Brainy method name (e.g. `'vfs.readdir'`).
|
|
103
108
|
* @param args - Positional arguments to forward.
|
|
104
109
|
* @returns Whatever the server's Brainy method returns.
|
|
@@ -107,6 +112,29 @@ export declare class WsTransport implements SDKTransport {
|
|
|
107
112
|
* @throws {@link SDKRpcError} if the server reports an error.
|
|
108
113
|
*/
|
|
109
114
|
call(method: string, args: unknown[]): Promise<unknown>;
|
|
115
|
+
/**
|
|
116
|
+
* Sends a namespace-aware RPC request and awaits the response.
|
|
117
|
+
*
|
|
118
|
+
* @param ns - Target namespace (e.g. `'chat'`, `'graph'`, `'brainy.vfs'`).
|
|
119
|
+
* @param method - Method within the namespace (e.g. `'send'`, `'getData'`).
|
|
120
|
+
* @param args - Positional arguments.
|
|
121
|
+
* @returns The handler's return value.
|
|
122
|
+
* @throws {@link SDKDisconnectedError} if not connected.
|
|
123
|
+
* @throws {@link SDKTimeoutError} after `timeoutMs` ms.
|
|
124
|
+
* @throws {@link SDKRpcError} if the server reports an error.
|
|
125
|
+
*/
|
|
126
|
+
callNs(ns: string, method: string, args: unknown[]): Promise<unknown>;
|
|
127
|
+
/**
|
|
128
|
+
* Sends a streaming namespace-aware RPC request and returns an async iterable
|
|
129
|
+
* that yields chunks as they arrive from the server.
|
|
130
|
+
*
|
|
131
|
+
* @param ns - Target namespace.
|
|
132
|
+
* @param method - Method within the namespace.
|
|
133
|
+
* @param args - Positional arguments.
|
|
134
|
+
* @returns An async iterable of response chunks.
|
|
135
|
+
* @throws {@link SDKDisconnectedError} if not connected.
|
|
136
|
+
*/
|
|
137
|
+
callNsStream(ns: string, method: string, args: unknown[]): AsyncIterable<unknown>;
|
|
110
138
|
/**
|
|
111
139
|
* Registers a listener for real-time change push events from the server.
|
|
112
140
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/transports/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/transports/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AA2EpE;;;;;;;;;GASG;AACH,qBAAa,WAAY,YAAW,YAAY,EAAE,kBAAkB;IAClE,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,MAAM,CAAI;IAElB,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAEhF,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,cAAc,CAA6C;IAEnE;;;;;;OAMG;gBAED,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,SAAS,EAClB,oBAAoB,SAAK;IAW3B;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAO/B;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7D;;;;;;;;;;OAUG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB3E;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;IA+EjF;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAI1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAK3D;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B,OAAO,CAAC,WAAW;IAuCnB,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,YAAY;IA2DpB,OAAO,CAAC,iBAAiB;CAa1B"}
|
package/dist/transports/ws.js
CHANGED
|
@@ -74,6 +74,7 @@ export class WsTransport {
|
|
|
74
74
|
timeoutMs;
|
|
75
75
|
maxReconnectAttempts;
|
|
76
76
|
pending = new Map();
|
|
77
|
+
pendingStreams = new Map();
|
|
77
78
|
nextId = 0;
|
|
78
79
|
connectionState = 'disconnected';
|
|
79
80
|
changeListeners = [];
|
|
@@ -114,6 +115,9 @@ export class WsTransport {
|
|
|
114
115
|
/**
|
|
115
116
|
* Sends a MessagePack-encoded RPC request and awaits the response.
|
|
116
117
|
*
|
|
118
|
+
* Delegates to `callNs('brainy', method, args)` for backward compatibility
|
|
119
|
+
* with SDK 1.x callers that use the flat Brainy method namespace.
|
|
120
|
+
*
|
|
117
121
|
* @param method - Dot-separated Brainy method name (e.g. `'vfs.readdir'`).
|
|
118
122
|
* @param args - Positional arguments to forward.
|
|
119
123
|
* @returns Whatever the server's Brainy method returns.
|
|
@@ -122,6 +126,21 @@ export class WsTransport {
|
|
|
122
126
|
* @throws {@link SDKRpcError} if the server reports an error.
|
|
123
127
|
*/
|
|
124
128
|
async call(method, args) {
|
|
129
|
+
return this.callNs('brainy', method, args);
|
|
130
|
+
}
|
|
131
|
+
// ── NamespaceTransport interface ────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Sends a namespace-aware RPC request and awaits the response.
|
|
134
|
+
*
|
|
135
|
+
* @param ns - Target namespace (e.g. `'chat'`, `'graph'`, `'brainy.vfs'`).
|
|
136
|
+
* @param method - Method within the namespace (e.g. `'send'`, `'getData'`).
|
|
137
|
+
* @param args - Positional arguments.
|
|
138
|
+
* @returns The handler's return value.
|
|
139
|
+
* @throws {@link SDKDisconnectedError} if not connected.
|
|
140
|
+
* @throws {@link SDKTimeoutError} after `timeoutMs` ms.
|
|
141
|
+
* @throws {@link SDKRpcError} if the server reports an error.
|
|
142
|
+
*/
|
|
143
|
+
async callNs(ns, method, args) {
|
|
125
144
|
if (this.connectionState !== 'connected') {
|
|
126
145
|
throw new SDKDisconnectedError();
|
|
127
146
|
}
|
|
@@ -129,13 +148,96 @@ export class WsTransport {
|
|
|
129
148
|
const id = String(this.nextId++);
|
|
130
149
|
const timeoutId = setTimeout(() => {
|
|
131
150
|
this.pending.delete(id);
|
|
132
|
-
reject(new SDKTimeoutError(method));
|
|
151
|
+
reject(new SDKTimeoutError(`${ns}.${method}`));
|
|
133
152
|
}, this.timeoutMs);
|
|
134
153
|
this.pending.set(id, { resolve, reject, timeoutId });
|
|
135
|
-
const request = { id, method, args };
|
|
154
|
+
const request = { id, ns, method, args };
|
|
136
155
|
this.ws.send(encode(request));
|
|
137
156
|
});
|
|
138
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Sends a streaming namespace-aware RPC request and returns an async iterable
|
|
160
|
+
* that yields chunks as they arrive from the server.
|
|
161
|
+
*
|
|
162
|
+
* @param ns - Target namespace.
|
|
163
|
+
* @param method - Method within the namespace.
|
|
164
|
+
* @param args - Positional arguments.
|
|
165
|
+
* @returns An async iterable of response chunks.
|
|
166
|
+
* @throws {@link SDKDisconnectedError} if not connected.
|
|
167
|
+
*/
|
|
168
|
+
callNsStream(ns, method, args) {
|
|
169
|
+
if (this.connectionState !== 'connected') {
|
|
170
|
+
throw new SDKDisconnectedError();
|
|
171
|
+
}
|
|
172
|
+
const id = String(this.nextId++);
|
|
173
|
+
// Create a pull-based async iterable backed by a push buffer.
|
|
174
|
+
const buffer = [];
|
|
175
|
+
let done = false;
|
|
176
|
+
let streamError = null;
|
|
177
|
+
let waiting = null;
|
|
178
|
+
const timeoutId = setTimeout(() => {
|
|
179
|
+
this.pendingStreams.delete(id);
|
|
180
|
+
streamError = `Timeout waiting for stream ${ns}.${method}`;
|
|
181
|
+
if (waiting) {
|
|
182
|
+
waiting.resolve({ value: undefined, done: true });
|
|
183
|
+
waiting = null;
|
|
184
|
+
}
|
|
185
|
+
}, this.timeoutMs);
|
|
186
|
+
this.pendingStreams.set(id, {
|
|
187
|
+
push(chunk) {
|
|
188
|
+
if (waiting) {
|
|
189
|
+
const w = waiting;
|
|
190
|
+
waiting = null;
|
|
191
|
+
w.resolve({ value: chunk, done: false });
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
buffer.push(chunk);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
end() {
|
|
198
|
+
clearTimeout(timeoutId);
|
|
199
|
+
done = true;
|
|
200
|
+
if (waiting) {
|
|
201
|
+
const w = waiting;
|
|
202
|
+
waiting = null;
|
|
203
|
+
w.resolve({ value: undefined, done: true });
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
error(msg) {
|
|
207
|
+
clearTimeout(timeoutId);
|
|
208
|
+
streamError = msg;
|
|
209
|
+
done = true;
|
|
210
|
+
if (waiting) {
|
|
211
|
+
const w = waiting;
|
|
212
|
+
waiting = null;
|
|
213
|
+
w.resolve({ value: undefined, done: true });
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
timeoutId,
|
|
217
|
+
});
|
|
218
|
+
const request = { id, ns, method, args, stream: true };
|
|
219
|
+
this.ws.send(encode(request));
|
|
220
|
+
return {
|
|
221
|
+
[Symbol.asyncIterator]() {
|
|
222
|
+
return {
|
|
223
|
+
next() {
|
|
224
|
+
if (streamError) {
|
|
225
|
+
return Promise.reject(new SDKRpcError('STREAM_ERROR', streamError));
|
|
226
|
+
}
|
|
227
|
+
if (buffer.length > 0) {
|
|
228
|
+
return Promise.resolve({ value: buffer.shift(), done: false });
|
|
229
|
+
}
|
|
230
|
+
if (done) {
|
|
231
|
+
return Promise.resolve({ value: undefined, done: true });
|
|
232
|
+
}
|
|
233
|
+
return new Promise((resolve) => {
|
|
234
|
+
waiting = { resolve };
|
|
235
|
+
});
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
139
241
|
/**
|
|
140
242
|
* Registers a listener for real-time change push events from the server.
|
|
141
243
|
*
|
|
@@ -273,8 +375,27 @@ export class WsTransport {
|
|
|
273
375
|
this.connectReject = null;
|
|
274
376
|
return;
|
|
275
377
|
}
|
|
276
|
-
// RPC response (has an 'id' field)
|
|
378
|
+
// RPC response or stream frame (has an 'id' field)
|
|
277
379
|
if (typeof m['id'] === 'string') {
|
|
380
|
+
const msgId = m['id'];
|
|
381
|
+
// Check if this is a streaming frame routed to pendingStreams.
|
|
382
|
+
const stream = this.pendingStreams.get(msgId);
|
|
383
|
+
if (stream) {
|
|
384
|
+
const frame = m;
|
|
385
|
+
if (frame.error) {
|
|
386
|
+
this.pendingStreams.delete(msgId);
|
|
387
|
+
stream.error(frame.error);
|
|
388
|
+
}
|
|
389
|
+
else if (frame.done) {
|
|
390
|
+
this.pendingStreams.delete(msgId);
|
|
391
|
+
stream.end();
|
|
392
|
+
}
|
|
393
|
+
else if ('chunk' in frame) {
|
|
394
|
+
stream.push(frame.chunk);
|
|
395
|
+
}
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
// Non-streaming RPC response.
|
|
278
399
|
const response = m;
|
|
279
400
|
const pending = this.pending.get(response.id);
|
|
280
401
|
if (!pending)
|
|
@@ -360,6 +481,11 @@ export class WsTransport {
|
|
|
360
481
|
pending.reject(error);
|
|
361
482
|
}
|
|
362
483
|
this.pending.clear();
|
|
484
|
+
for (const [, stream] of this.pendingStreams) {
|
|
485
|
+
clearTimeout(stream.timeoutId);
|
|
486
|
+
stream.error(error.message);
|
|
487
|
+
}
|
|
488
|
+
this.pendingStreams.clear();
|
|
363
489
|
}
|
|
364
490
|
}
|
|
365
491
|
//# sourceMappingURL=ws.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/transports/ws.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/transports/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAIjD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,WAAW,GACZ,MAAM,6BAA6B,CAAA;AAgEpC,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAW;IACd,EAAE,GAAqB,IAAI,CAAA;IAClB,KAAK,CAAQ;IACb,SAAS,CAAQ;IACjB,KAAK,CAAoB;IACzB,SAAS,CAAQ;IACjB,oBAAoB,CAAQ;IAE5B,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAA;IACvC,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC1D,MAAM,GAAG,CAAC,CAAA;IAEV,eAAe,GAAoB,cAAc,CAAA;IACxC,eAAe,GAA8C,EAAE,CAAA;IAExE,cAAc,GAAwB,IAAI,CAAA;IAC1C,aAAa,GAAgC,IAAI,CAAA;IAEjD,iBAAiB,GAAG,CAAC,CAAA;IACrB,cAAc,GAAyC,IAAI,CAAA;IAEnE;;;;;;OAMG;IACH,YACE,KAAa,EACb,SAAiB,EACjB,KAAc,EACd,SAAS,GAAG,MAAM,EAClB,oBAAoB,GAAG,EAAE;QAEzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;IAClD,CAAC;IAED,4EAA4E;IAE5E;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAgB;QACtB,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,IAAI,oBAAoB,EAAE,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAAe;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,2EAA2E;IAE3E;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAc,EAAE,IAAe;QACtD,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,oBAAoB,EAAE,CAAA;QAClC,CAAC;QAED,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAEhC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACvB,MAAM,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC,CAAA;YAChD,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAElB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;YAEpD,MAAM,OAAO,GAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACtD,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAU,EAAE,MAAc,EAAE,IAAe;QACtD,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,oBAAoB,EAAE,CAAA;QAClC,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAEhC,8DAA8D;QAC9D,MAAM,MAAM,GAAc,EAAE,CAAA;QAC5B,IAAI,IAAI,GAAG,KAAK,CAAA;QAChB,IAAI,WAAW,GAAkB,IAAI,CAAA;QACrC,IAAI,OAAO,GAA6D,IAAI,CAAA;QAE5E,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC9B,WAAW,GAAG,8BAA8B,EAAE,IAAI,MAAM,EAAE,CAAA;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACjD,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAElB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAc;gBACjB,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,GAAG,OAAO,CAAA;oBACjB,OAAO,GAAG,IAAI,CAAA;oBACd,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC1C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;YACD,GAAG;gBACD,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,IAAI,GAAG,IAAI,CAAA;gBACX,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,GAAG,OAAO,CAAA;oBACjB,OAAO,GAAG,IAAI,CAAA;oBACd,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;YACD,KAAK,CAAC,GAAW;gBACf,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,WAAW,GAAG,GAAG,CAAA;gBACjB,IAAI,GAAG,IAAI,CAAA;gBACX,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,GAAG,OAAO,CAAA;oBACjB,OAAO,GAAG,IAAI,CAAA;oBACd,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC;YACD,SAAS;SACV,CAAC,CAAA;QAEF,MAAM,OAAO,GAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACpE,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAE9B,OAAO;YACL,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO;oBACL,IAAI;wBACF,IAAI,WAAW,EAAE,CAAC;4BAChB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAA;wBACrE,CAAC;wBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACtB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;wBACjE,CAAC;wBACD,IAAI,IAAI,EAAE,CAAC;4BACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;wBAC1D,CAAC;wBACD,OAAO,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,EAAE;4BACtD,OAAO,GAAG,EAAE,OAAO,EAAE,CAAA;wBACvB,CAAC,CAAC,CAAA;oBACJ,CAAC;iBACF,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAA2C;QACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,OAA2C;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW,CAAA;IAC7C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;YACxC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;QAChB,CAAC;IACH,CAAC;IAED,4EAA4E;IAE5E;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW;YAAE,OAAM;QAChD,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,YAAY,CAAA;QAEnC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBACnC,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACpF,CAAC;YACH,CAAC,EAAE,MAAM,CAAC,CAAA;YAEV,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE;gBACzB,YAAY,CAAC,YAAY,CAAC,CAAA;gBAC1B,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YACD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAQ,EAAE,EAAE;gBAChC,YAAY,CAAC,YAAY,CAAC,CAAA;gBAC1B,MAAM,CAAC,CAAC,CAAC,CAAA;YACX,CAAC,CAAA;YAED,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,4EAA4E;IAEpE,WAAW;QACjB,2EAA2E;QAC3E,+EAA+E;QAC/E,+EAA+E;QAC/E,iDAAiD;QACjD,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAA;QACvE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QAEnD,IAAI,KAAK,EAAE,CAAC;YACV,6EAA6E;YAC7E,gEAAgE;YAChE,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAC1F,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAA;QAElC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YACpB,8DAA8D;QAChE,CAAC,CAAA;QAED,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAmB,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YACjC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC,CAAA;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,CAAC,CAAA;IACH,CAAC;IAEO,cAAc,CAAC,IAAiB;QACtC,IAAI,GAAY,CAAA;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAA;YACnE,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAM;QAC3C,MAAM,CAAC,GAAG,GAA8B,CAAA;QAExC,kBAAkB;QAClB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAA8B,CAAA;YAC5C,IAAI,CAAC,eAAe,GAAG,WAAW,CAAA;YAClC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,cAAc,EAAE,EAAE,CAAA;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YACzB,OAAM;QACR,CAAC;QAED,mDAAmD;QACnD,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAW,CAAA;YAE/B,+DAA+D;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,CAA6B,CAAA;gBAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACjC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC3B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACjC,MAAM,CAAC,GAAG,EAAE,CAAA;gBACd,CAAC;qBAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;gBACD,OAAM;YACR,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,CAA6B,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC7C,IAAI,CAAC,OAAO;gBAAE,OAAM,CAAC,2CAA2C;YAEhE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAEhC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAClC,CAAC;YACD,OAAM;QACR,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAiC,CAAA;YAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACjB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,MAAc;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,YAAY,CAAA;QAE3D,6BAA6B;QAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAA;YACpD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YAC/C,OAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;YACzD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YAC/C,OAAM;QACR,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;YAClD,OAAM;QACR,CAAC;QAED,yCAAyC;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;YACrC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,4CAA4C,IAAI,YAAY,MAAM,GAAG,CAAC,CAAA;YAC5F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YAC/C,OAAM;QACR,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;QACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA;QAElD,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAA;YAC9E,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,OAAO,CAAC,GAAG,CACT,4BAA4B,SAAS,KAAK;gBAC1C,YAAY,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,GAAG,CACnE,CAAA;YACD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;gBAC1B,IAAI,CAAC,eAAe,GAAG,YAAY,CAAA;gBACnC,IAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC,EAAE,SAAS,CAAC,CAAA;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YAC1E,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;QACjC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAEpB,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF"}
|