cccc-sdk 0.4.4 → 0.4.40
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/README.md +252 -16
- package/dist/client.d.ts +87 -163
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +663 -536
- package/dist/client.js.map +1 -1
- package/dist/client_0430_admin_ops.d.ts +56 -0
- package/dist/client_0430_admin_ops.d.ts.map +1 -0
- package/dist/client_0430_admin_ops.js +143 -0
- package/dist/client_0430_admin_ops.js.map +1 -0
- package/dist/client_0430_assistant_ops.d.ts +106 -0
- package/dist/client_0430_assistant_ops.d.ts.map +1 -0
- package/dist/client_0430_assistant_ops.js +122 -0
- package/dist/client_0430_assistant_ops.js.map +1 -0
- package/dist/client_0430_memory_ops.d.ts +14 -0
- package/dist/client_0430_memory_ops.d.ts.map +1 -0
- package/dist/client_0430_memory_ops.js +84 -0
- package/dist/client_0430_memory_ops.js.map +1 -0
- package/dist/client_0430_ops.d.ts +8 -0
- package/dist/client_0430_ops.d.ts.map +1 -0
- package/dist/client_0430_ops.js +9 -0
- package/dist/client_0430_ops.js.map +1 -0
- package/dist/client_0430_shared.d.ts +15 -0
- package/dist/client_0430_shared.d.ts.map +1 -0
- package/dist/client_0430_shared.js +4 -0
- package/dist/client_0430_shared.js.map +1 -0
- package/dist/client_0434_ops.d.ts +10 -0
- package/dist/client_0434_ops.d.ts.map +1 -0
- package/dist/client_0434_ops.js +43 -0
- package/dist/client_0434_ops.js.map +1 -0
- package/dist/client_chat_ops.d.ts +28 -0
- package/dist/client_chat_ops.d.ts.map +1 -0
- package/dist/client_chat_ops.js +213 -0
- package/dist/client_chat_ops.js.map +1 -0
- package/dist/client_connect_ops.d.ts +9 -0
- package/dist/client_connect_ops.d.ts.map +1 -0
- package/dist/client_connect_ops.js +44 -0
- package/dist/client_connect_ops.js.map +1 -0
- package/dist/client_group_space_ops.d.ts +24 -0
- package/dist/client_group_space_ops.d.ts.map +1 -0
- package/dist/client_group_space_ops.js +167 -0
- package/dist/client_group_space_ops.js.map +1 -0
- package/dist/errors.d.ts +17 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +26 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/transport.d.ts +4 -3
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +236 -120
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +752 -89
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/transport.js
CHANGED
|
@@ -5,22 +5,24 @@ import * as net from 'node:net';
|
|
|
5
5
|
import * as fs from 'node:fs/promises';
|
|
6
6
|
import * as path from 'node:path';
|
|
7
7
|
import * as os from 'node:os';
|
|
8
|
-
import { DaemonUnavailableError } from './errors.js';
|
|
8
|
+
import { DaemonConnectionError, DaemonUnavailableError, IncompatibleDaemonError, OutcomeUnknownError, RequestTooLargeError, } from './errors.js';
|
|
9
9
|
// ============================================================
|
|
10
10
|
// Constants
|
|
11
11
|
// ============================================================
|
|
12
12
|
export const MAX_LINE_SIZE = 4000000; // 4MB
|
|
13
|
+
export const MAX_REQUEST_SIZE = 2000000;
|
|
13
14
|
export const DEFAULT_TIMEOUT_MS = 30000;
|
|
14
15
|
const MAX_PORT = 65535;
|
|
15
16
|
function normalizeTcpConnectHost(rawHost) {
|
|
16
|
-
|
|
17
|
+
let host = String(rawHost ?? '').trim();
|
|
18
|
+
if (host.startsWith('[') && host.endsWith(']')) {
|
|
19
|
+
host = host.slice(1, -1).trim();
|
|
20
|
+
}
|
|
17
21
|
if (!host || host === 'localhost' || host === '0.0.0.0') {
|
|
18
22
|
return '127.0.0.1';
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (host.includes(':') || host === '::1') {
|
|
23
|
-
return '127.0.0.1';
|
|
24
|
+
if (host === '::') {
|
|
25
|
+
return '::1';
|
|
24
26
|
}
|
|
25
27
|
return host;
|
|
26
28
|
}
|
|
@@ -88,40 +90,84 @@ export async function discoverEndpoint(home) {
|
|
|
88
90
|
/**
|
|
89
91
|
* Create socket connection
|
|
90
92
|
*/
|
|
91
|
-
function connect(endpoint, timeoutMs) {
|
|
93
|
+
function connect(endpoint, timeoutMs, signal) {
|
|
92
94
|
return new Promise((resolve, reject) => {
|
|
93
95
|
const socket = new net.Socket();
|
|
94
|
-
|
|
96
|
+
let settled = false;
|
|
97
|
+
let timer;
|
|
95
98
|
const cleanup = () => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
reject(new DaemonUnavailableError(err.message));
|
|
99
|
+
if (timer !== undefined)
|
|
100
|
+
clearTimeout(timer);
|
|
101
|
+
socket.removeListener('connect', onConnect);
|
|
102
|
+
socket.removeListener('error', onError);
|
|
103
|
+
signal?.removeEventListener('abort', onAbort);
|
|
102
104
|
};
|
|
103
|
-
const
|
|
105
|
+
const rejectAndDestroy = (error) => {
|
|
106
|
+
if (settled)
|
|
107
|
+
return;
|
|
108
|
+
settled = true;
|
|
104
109
|
cleanup();
|
|
105
110
|
socket.destroy();
|
|
106
|
-
reject(
|
|
111
|
+
reject(error);
|
|
107
112
|
};
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
const onError = (err) => rejectAndDestroy(new DaemonConnectionError(err.message));
|
|
114
|
+
const onTimeout = () => rejectAndDestroy(new DaemonConnectionError('Connection timeout'));
|
|
115
|
+
const onAbort = () => rejectAndDestroy(new DaemonUnavailableError('Event stream aborted'));
|
|
110
116
|
const onConnect = () => {
|
|
117
|
+
if (settled) {
|
|
118
|
+
socket.destroy();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
settled = true;
|
|
111
122
|
cleanup();
|
|
112
123
|
resolve(socket);
|
|
113
124
|
};
|
|
114
|
-
if (
|
|
115
|
-
|
|
125
|
+
if (signal?.aborted) {
|
|
126
|
+
onAbort();
|
|
127
|
+
return;
|
|
116
128
|
}
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
130
|
+
timer = setTimeout(onTimeout, timeoutMs);
|
|
131
|
+
socket.once('connect', onConnect);
|
|
132
|
+
socket.once('error', onError);
|
|
133
|
+
try {
|
|
134
|
+
if (endpoint.transport === 'tcp') {
|
|
135
|
+
socket.connect(endpoint.port, endpoint.host);
|
|
136
|
+
}
|
|
137
|
+
else if (endpoint.transport === 'unix') {
|
|
138
|
+
socket.connect(endpoint.path);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
rejectAndDestroy(new DaemonConnectionError(`Invalid endpoint transport: ${endpoint.transport}`));
|
|
142
|
+
}
|
|
119
143
|
}
|
|
120
|
-
|
|
121
|
-
|
|
144
|
+
catch (error) {
|
|
145
|
+
rejectAndDestroy(new DaemonConnectionError(error instanceof Error ? error.message : String(error)));
|
|
122
146
|
}
|
|
123
147
|
});
|
|
124
148
|
}
|
|
149
|
+
function remainingTimeout(deadline) {
|
|
150
|
+
return Math.max(1, deadline - Date.now());
|
|
151
|
+
}
|
|
152
|
+
function appendChunk(buffer, chunk) {
|
|
153
|
+
return buffer.length === 0 ? chunk : Buffer.concat([buffer, chunk]);
|
|
154
|
+
}
|
|
155
|
+
function assertBufferedLineLimit(buffer) {
|
|
156
|
+
let start = 0;
|
|
157
|
+
let newlineIndex;
|
|
158
|
+
while ((newlineIndex = buffer.indexOf(0x0a, start)) !== -1) {
|
|
159
|
+
if (newlineIndex - start > MAX_LINE_SIZE) {
|
|
160
|
+
throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
|
|
161
|
+
}
|
|
162
|
+
start = newlineIndex + 1;
|
|
163
|
+
}
|
|
164
|
+
if (buffer.length - start > MAX_LINE_SIZE) {
|
|
165
|
+
throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function decodeLine(bytes) {
|
|
169
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
170
|
+
}
|
|
125
171
|
// ============================================================
|
|
126
172
|
// IPC calls
|
|
127
173
|
// ============================================================
|
|
@@ -136,59 +182,82 @@ function connect(endpoint, timeoutMs) {
|
|
|
136
182
|
* @throws {DaemonUnavailableError} On connection, write, or parse failure.
|
|
137
183
|
*/
|
|
138
184
|
export async function callDaemon(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
185
|
+
const deadline = Date.now() + timeoutMs;
|
|
186
|
+
const line = JSON.stringify(request) + '\n';
|
|
187
|
+
if (Buffer.byteLength(line, 'utf8') > MAX_REQUEST_SIZE) {
|
|
188
|
+
throw new RequestTooLargeError(`Daemon request exceeds ${MAX_REQUEST_SIZE} bytes`);
|
|
189
|
+
}
|
|
139
190
|
const socket = await connect(endpoint, timeoutMs);
|
|
140
191
|
return new Promise((resolve, reject) => {
|
|
141
|
-
let buffer =
|
|
142
|
-
let
|
|
192
|
+
let buffer = Buffer.alloc(0);
|
|
193
|
+
let settled = false;
|
|
194
|
+
let timer;
|
|
143
195
|
const cleanup = () => {
|
|
144
|
-
|
|
196
|
+
if (timer !== undefined)
|
|
197
|
+
clearTimeout(timer);
|
|
198
|
+
socket.removeListener('data', onData);
|
|
199
|
+
socket.removeListener('error', onError);
|
|
200
|
+
socket.removeListener('close', onClose);
|
|
145
201
|
};
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
202
|
+
const fail = (error) => {
|
|
203
|
+
if (settled)
|
|
204
|
+
return;
|
|
205
|
+
settled = true;
|
|
206
|
+
cleanup();
|
|
207
|
+
socket.destroy();
|
|
208
|
+
reject(error);
|
|
209
|
+
};
|
|
210
|
+
const onData = (chunk) => {
|
|
211
|
+
if (settled)
|
|
212
|
+
return;
|
|
213
|
+
buffer = appendChunk(buffer, chunk);
|
|
214
|
+
const newlineIndex = buffer.indexOf(0x0a);
|
|
215
|
+
if (newlineIndex !== -1) {
|
|
216
|
+
settled = true;
|
|
217
|
+
const responseBytes = buffer.subarray(0, newlineIndex);
|
|
152
218
|
cleanup();
|
|
153
219
|
socket.destroy();
|
|
154
|
-
if (
|
|
155
|
-
reject(new
|
|
220
|
+
if (responseBytes.length > MAX_LINE_SIZE) {
|
|
221
|
+
reject(new OutcomeUnknownError(request.op, 'Response too large'));
|
|
156
222
|
return;
|
|
157
223
|
}
|
|
158
224
|
try {
|
|
159
|
-
|
|
225
|
+
const parsed = JSON.parse(decodeLine(responseBytes));
|
|
226
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
227
|
+
reject(new OutcomeUnknownError(request.op, 'Response must be a JSON object'));
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const response = parsed;
|
|
231
|
+
if (response.v !== 1) {
|
|
232
|
+
reject(new IncompatibleDaemonError(`Daemon response uses unsupported IPC version: ${String(response.v)}`));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
resolve(response);
|
|
160
236
|
}
|
|
161
237
|
catch {
|
|
162
|
-
reject(new
|
|
238
|
+
reject(new OutcomeUnknownError(request.op, 'Invalid JSON response'));
|
|
163
239
|
}
|
|
164
240
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (!resolved) {
|
|
168
|
-
resolved = true;
|
|
169
|
-
cleanup();
|
|
170
|
-
socket.destroy();
|
|
171
|
-
reject(new DaemonUnavailableError(err.message));
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
socket.on('close', () => {
|
|
175
|
-
if (!resolved) {
|
|
176
|
-
resolved = true;
|
|
177
|
-
cleanup();
|
|
178
|
-
socket.destroy();
|
|
179
|
-
reject(new DaemonUnavailableError('Connection closed unexpectedly'));
|
|
241
|
+
if (newlineIndex === -1 && buffer.length > MAX_LINE_SIZE) {
|
|
242
|
+
fail(new OutcomeUnknownError(request.op, 'Response too large'));
|
|
180
243
|
}
|
|
181
|
-
}
|
|
244
|
+
};
|
|
245
|
+
const onError = (err) => fail(new OutcomeUnknownError(request.op, err.message));
|
|
246
|
+
const onClose = () => fail(new OutcomeUnknownError(request.op, 'Connection closed unexpectedly'));
|
|
247
|
+
socket.on('data', onData);
|
|
248
|
+
socket.once('error', onError);
|
|
249
|
+
socket.once('close', onClose);
|
|
250
|
+
timer = setTimeout(() => fail(new OutcomeUnknownError(request.op, 'Response timeout')), remainingTimeout(deadline));
|
|
182
251
|
// Send request.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
252
|
+
try {
|
|
253
|
+
socket.write(line, (err) => {
|
|
254
|
+
if (err)
|
|
255
|
+
fail(new OutcomeUnknownError(request.op, `Write failed: ${err.message}`));
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
fail(new OutcomeUnknownError(request.op, error instanceof Error ? error.message : String(error)));
|
|
260
|
+
}
|
|
192
261
|
});
|
|
193
262
|
}
|
|
194
263
|
/**
|
|
@@ -201,68 +270,101 @@ export async function callDaemon(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_
|
|
|
201
270
|
* @returns The socket, handshake response, and any buffered data after the handshake.
|
|
202
271
|
* @throws {DaemonUnavailableError} On connection or handshake failure.
|
|
203
272
|
*/
|
|
204
|
-
export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
205
|
-
const
|
|
206
|
-
|
|
273
|
+
export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS, signal) {
|
|
274
|
+
const deadline = Date.now() + timeoutMs;
|
|
275
|
+
if (signal?.aborted) {
|
|
276
|
+
throw new DaemonUnavailableError('Event stream aborted');
|
|
277
|
+
}
|
|
207
278
|
const line = JSON.stringify(request) + '\n';
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
});
|
|
219
|
-
// Read handshake response.
|
|
279
|
+
if (Buffer.byteLength(line, 'utf8') > MAX_REQUEST_SIZE) {
|
|
280
|
+
throw new RequestTooLargeError(`Daemon request exceeds ${MAX_REQUEST_SIZE} bytes`);
|
|
281
|
+
}
|
|
282
|
+
const socket = await connect(endpoint, timeoutMs, signal);
|
|
283
|
+
if (signal?.aborted) {
|
|
284
|
+
socket.destroy();
|
|
285
|
+
throw new DaemonUnavailableError('Event stream aborted');
|
|
286
|
+
}
|
|
287
|
+
// Send the request and read the handshake under one listener set so an
|
|
288
|
+
// immediate socket error or response cannot race the handshake setup.
|
|
220
289
|
const { handshake, remainingBuffer } = await new Promise((resolve, reject) => {
|
|
221
|
-
let buffer =
|
|
222
|
-
let
|
|
290
|
+
let buffer = Buffer.alloc(0);
|
|
291
|
+
let settled = false;
|
|
292
|
+
let timer;
|
|
223
293
|
const cleanup = () => {
|
|
224
|
-
|
|
294
|
+
if (timer !== undefined)
|
|
295
|
+
clearTimeout(timer);
|
|
296
|
+
socket.removeListener('data', onData);
|
|
297
|
+
socket.removeListener('error', onError);
|
|
298
|
+
socket.removeListener('close', onClose);
|
|
299
|
+
signal?.removeEventListener('abort', onAbort);
|
|
225
300
|
};
|
|
301
|
+
const fail = (error) => {
|
|
302
|
+
if (settled)
|
|
303
|
+
return;
|
|
304
|
+
settled = true;
|
|
305
|
+
cleanup();
|
|
306
|
+
socket.destroy();
|
|
307
|
+
reject(error);
|
|
308
|
+
};
|
|
309
|
+
const onAbort = () => fail(new DaemonUnavailableError('Event stream aborted'));
|
|
226
310
|
const onData = (chunk) => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const
|
|
233
|
-
const remaining = buffer.
|
|
311
|
+
if (settled)
|
|
312
|
+
return;
|
|
313
|
+
buffer = appendChunk(buffer, chunk);
|
|
314
|
+
const newlineIndex = buffer.indexOf(0x0a);
|
|
315
|
+
if (newlineIndex !== -1) {
|
|
316
|
+
const responseBytes = buffer.subarray(0, newlineIndex);
|
|
317
|
+
const remaining = buffer.subarray(newlineIndex + 1);
|
|
318
|
+
if (responseBytes.length > MAX_LINE_SIZE) {
|
|
319
|
+
fail(new OutcomeUnknownError(request.op, 'Handshake response too large'));
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
234
322
|
try {
|
|
323
|
+
const parsed = JSON.parse(decodeLine(responseBytes));
|
|
324
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
325
|
+
fail(new OutcomeUnknownError(request.op, 'Handshake must be a JSON object'));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
const handshake = parsed;
|
|
329
|
+
if (handshake.v !== 1) {
|
|
330
|
+
fail(new IncompatibleDaemonError(`Daemon stream handshake uses unsupported IPC version: ${String(handshake.v)}`));
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
assertBufferedLineLimit(remaining);
|
|
334
|
+
settled = true;
|
|
335
|
+
cleanup();
|
|
235
336
|
resolve({
|
|
236
|
-
handshake
|
|
337
|
+
handshake,
|
|
237
338
|
remainingBuffer: remaining,
|
|
238
339
|
});
|
|
239
340
|
}
|
|
240
|
-
catch {
|
|
241
|
-
|
|
242
|
-
|
|
341
|
+
catch (error) {
|
|
342
|
+
fail(error instanceof DaemonUnavailableError
|
|
343
|
+
? error
|
|
344
|
+
: new OutcomeUnknownError(request.op, 'Invalid handshake JSON'));
|
|
243
345
|
}
|
|
244
346
|
}
|
|
347
|
+
if (newlineIndex === -1 && buffer.length > MAX_LINE_SIZE) {
|
|
348
|
+
fail(new OutcomeUnknownError(request.op, 'Handshake response too large'));
|
|
349
|
+
}
|
|
245
350
|
};
|
|
351
|
+
const onError = (err) => fail(new OutcomeUnknownError(request.op, err.message));
|
|
352
|
+
const onClose = () => fail(new OutcomeUnknownError(request.op, 'Connection closed during handshake'));
|
|
246
353
|
socket.on('data', onData);
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
reject(new DaemonUnavailableError('Connection closed during handshake'));
|
|
261
|
-
}
|
|
262
|
-
});
|
|
354
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
355
|
+
socket.once('error', onError);
|
|
356
|
+
socket.once('close', onClose);
|
|
357
|
+
timer = setTimeout(() => fail(new OutcomeUnknownError(request.op, 'Handshake timeout')), remainingTimeout(deadline));
|
|
358
|
+
try {
|
|
359
|
+
socket.write(line, (error) => {
|
|
360
|
+
if (error)
|
|
361
|
+
fail(new OutcomeUnknownError(request.op, `Write failed: ${error.message}`));
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
fail(new OutcomeUnknownError(request.op, error instanceof Error ? error.message : String(error)));
|
|
366
|
+
}
|
|
263
367
|
});
|
|
264
|
-
// Remove timeout after handshake.
|
|
265
|
-
socket.setTimeout(0);
|
|
266
368
|
return { socket, handshake, initialBuffer: remainingBuffer };
|
|
267
369
|
}
|
|
268
370
|
/**
|
|
@@ -273,29 +375,43 @@ export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TI
|
|
|
273
375
|
* @yields Each non-empty line as a string (without the trailing newline).
|
|
274
376
|
*/
|
|
275
377
|
export async function* readLines(socket, initialBuffer = '') {
|
|
276
|
-
let buffer = initialBuffer
|
|
378
|
+
let buffer = typeof initialBuffer === 'string'
|
|
379
|
+
? Buffer.from(initialBuffer, 'utf8')
|
|
380
|
+
: initialBuffer;
|
|
277
381
|
// Handle lines from initial buffer.
|
|
278
382
|
let newlineIndex;
|
|
279
|
-
while ((newlineIndex = buffer.indexOf(
|
|
280
|
-
|
|
281
|
-
|
|
383
|
+
while ((newlineIndex = buffer.indexOf(0x0a)) !== -1) {
|
|
384
|
+
if (newlineIndex > MAX_LINE_SIZE) {
|
|
385
|
+
throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
|
|
386
|
+
}
|
|
387
|
+
const line = decodeLine(buffer.subarray(0, newlineIndex));
|
|
388
|
+
buffer = buffer.subarray(newlineIndex + 1);
|
|
282
389
|
if (line.trim()) {
|
|
283
390
|
yield line;
|
|
284
391
|
}
|
|
285
392
|
}
|
|
393
|
+
assertBufferedLineLimit(buffer);
|
|
286
394
|
// Continue reading from socket.
|
|
287
395
|
for await (const chunk of socket) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
396
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
397
|
+
buffer = appendChunk(buffer, bytes);
|
|
398
|
+
while ((newlineIndex = buffer.indexOf(0x0a)) !== -1) {
|
|
399
|
+
if (newlineIndex > MAX_LINE_SIZE) {
|
|
400
|
+
throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
|
|
401
|
+
}
|
|
402
|
+
const line = decodeLine(buffer.subarray(0, newlineIndex));
|
|
403
|
+
buffer = buffer.subarray(newlineIndex + 1);
|
|
295
404
|
if (line.trim()) {
|
|
296
405
|
yield line;
|
|
297
406
|
}
|
|
298
407
|
}
|
|
408
|
+
assertBufferedLineLimit(buffer);
|
|
409
|
+
}
|
|
410
|
+
if (buffer.length > 0) {
|
|
411
|
+
assertBufferedLineLimit(buffer);
|
|
412
|
+
const line = decodeLine(buffer);
|
|
413
|
+
if (line.trim())
|
|
414
|
+
yield line;
|
|
299
415
|
}
|
|
300
416
|
}
|
|
301
417
|
//# sourceMappingURL=transport.js.map
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|