@agentica/core 0.18.0 → 0.19.1
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/lib/index.mjs +32 -14
- package/lib/index.mjs.map +1 -1
- package/lib/utils/AsyncQueue.d.ts +10 -0
- package/lib/utils/AsyncQueue.js +33 -9
- package/lib/utils/AsyncQueue.js.map +1 -1
- package/lib/utils/AsyncQueue.spec.d.ts +1 -0
- package/lib/utils/AsyncQueue.spec.js +280 -0
- package/lib/utils/AsyncQueue.spec.js.map +1 -0
- package/lib/utils/MPSC.spec.d.ts +1 -0
- package/lib/utils/MPSC.spec.js +222 -0
- package/lib/utils/MPSC.spec.js.map +1 -0
- package/lib/utils/StreamUtil.spec.d.ts +1 -0
- package/lib/utils/StreamUtil.spec.js +471 -0
- package/lib/utils/StreamUtil.spec.js.map +1 -0
- package/package.json +1 -1
- package/src/utils/AsyncQueue.spec.ts +355 -0
- package/src/utils/AsyncQueue.ts +36 -8
- package/src/utils/MPSC.spec.ts +276 -0
- package/src/utils/StreamUtil.spec.ts +520 -0
|
@@ -0,0 +1,471 @@
|
|
|
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
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
const StreamUtil_1 = require("./StreamUtil");
|
|
20
|
+
// Helper function to create a stream with numbers from start to end
|
|
21
|
+
function createNumberStream(start, end) {
|
|
22
|
+
return new ReadableStream({
|
|
23
|
+
start(controller) {
|
|
24
|
+
for (let i = start; i <= end; i++) {
|
|
25
|
+
controller.enqueue(i);
|
|
26
|
+
}
|
|
27
|
+
controller.close();
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Helper function to create an empty stream
|
|
32
|
+
function createEmptyStream() {
|
|
33
|
+
return new ReadableStream({
|
|
34
|
+
start(controller) {
|
|
35
|
+
controller.close();
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// Helper function to convert ReadableStream to array
|
|
40
|
+
function streamToArray(stream) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const reader = stream.getReader();
|
|
43
|
+
const result = [];
|
|
44
|
+
while (true) {
|
|
45
|
+
const { done, value } = yield reader.read();
|
|
46
|
+
if (done) {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
result.push(value);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// Helper function to create test stream
|
|
55
|
+
function createTestStream(items) {
|
|
56
|
+
return new ReadableStream({
|
|
57
|
+
start(controller) {
|
|
58
|
+
for (const item of items) {
|
|
59
|
+
controller.enqueue(item);
|
|
60
|
+
}
|
|
61
|
+
controller.close();
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// Delay function (for simulating async operations)
|
|
66
|
+
function delay(ms) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// Helper function to create a stream with numbers from start to end asynchronously
|
|
72
|
+
function createDelayedNumberStream(start, end, delayMs) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
// Simulate async work
|
|
75
|
+
yield delay(delayMs);
|
|
76
|
+
return new ReadableStream({
|
|
77
|
+
start(controller) {
|
|
78
|
+
for (let i = start; i <= end; i++) {
|
|
79
|
+
controller.enqueue(i);
|
|
80
|
+
}
|
|
81
|
+
controller.close();
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Helper function to create an empty stream asynchronously
|
|
87
|
+
function createEmptyDelayedStream(delayMs) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
// Simulate async work
|
|
90
|
+
yield delay(delayMs);
|
|
91
|
+
return new ReadableStream({
|
|
92
|
+
start(controller) {
|
|
93
|
+
controller.close();
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Helper function to create a stream with items having various delay times
|
|
99
|
+
function createVariableDelayedNumberStream(items) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
// Wait for all items to be ready based on their delays
|
|
102
|
+
yield Promise.all(items.map((item) => __awaiter(this, void 0, void 0, function* () { return delay(item.delay); })));
|
|
103
|
+
return new ReadableStream({
|
|
104
|
+
start(controller) {
|
|
105
|
+
for (const item of items) {
|
|
106
|
+
controller.enqueue(item.value);
|
|
107
|
+
}
|
|
108
|
+
controller.close();
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
describe("streamUtil", () => {
|
|
114
|
+
describe("readAll", () => {
|
|
115
|
+
it("should read all values from a stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
const stream = createNumberStream(1, 5);
|
|
117
|
+
const result = yield StreamUtil_1.StreamUtil.readAll(stream);
|
|
118
|
+
expect(result).toEqual([1, 2, 3, 4, 5]);
|
|
119
|
+
}));
|
|
120
|
+
it("should return empty array for empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
|
+
const stream = createEmptyStream();
|
|
122
|
+
const result = yield StreamUtil_1.StreamUtil.readAll(stream);
|
|
123
|
+
expect(result).toEqual([]);
|
|
124
|
+
}));
|
|
125
|
+
it("should handle error in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
126
|
+
const stream = new ReadableStream({
|
|
127
|
+
start(controller) {
|
|
128
|
+
controller.enqueue(1);
|
|
129
|
+
controller.enqueue(2);
|
|
130
|
+
controller.error(new Error("Stream error"));
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
yield expect(StreamUtil_1.StreamUtil.readAll(stream)).rejects.toThrow("Stream error");
|
|
134
|
+
}));
|
|
135
|
+
it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
136
|
+
const stream = createTestStream([1, null, 3, undefined, 5]);
|
|
137
|
+
const result = yield StreamUtil_1.StreamUtil.readAll(stream);
|
|
138
|
+
expect(result).toEqual([1, null, 3, undefined, 5]);
|
|
139
|
+
}));
|
|
140
|
+
});
|
|
141
|
+
describe("reduce", () => {
|
|
142
|
+
it("should concatenate strings from number stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
143
|
+
const stringStream = createNumberStream(1, 3);
|
|
144
|
+
const stringResult = yield StreamUtil_1.StreamUtil.reduce(stringStream, (acc, cur) => acc + cur.toString(), "");
|
|
145
|
+
expect(stringResult).toBe("123");
|
|
146
|
+
}));
|
|
147
|
+
it("should sum numbers from stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
148
|
+
const sumStream = createNumberStream(1, 5);
|
|
149
|
+
const sumResult = yield StreamUtil_1.StreamUtil.reduce(sumStream, (acc, cur) => acc + cur, 0);
|
|
150
|
+
expect(sumResult).toBe(15);
|
|
151
|
+
}));
|
|
152
|
+
it("should work without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
153
|
+
const noInitialStream = createNumberStream(1, 4);
|
|
154
|
+
const noInitialResult = yield StreamUtil_1.StreamUtil.reduce(noInitialStream, (acc, cur) => acc + cur);
|
|
155
|
+
expect(noInitialResult).toBe(10);
|
|
156
|
+
}));
|
|
157
|
+
it("should return initial value for empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
158
|
+
const emptyStream = createEmptyStream();
|
|
159
|
+
const emptyResult = yield StreamUtil_1.StreamUtil.reduce(emptyStream, (acc, cur) => acc + cur.toString(), "initial value");
|
|
160
|
+
expect(emptyResult).toBe("initial value");
|
|
161
|
+
}));
|
|
162
|
+
it("should return null for empty stream without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
163
|
+
const emptyNoInitialStream = createEmptyStream();
|
|
164
|
+
const emptyNoInitialResult = yield StreamUtil_1.StreamUtil.reduce(emptyNoInitialStream, (acc, cur) => acc + cur);
|
|
165
|
+
expect(emptyNoInitialResult).toBeNull();
|
|
166
|
+
}));
|
|
167
|
+
it("should work with async generated stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
|
+
const stringStream = yield createDelayedNumberStream(1, 3, 10);
|
|
169
|
+
const stringResult = yield StreamUtil_1.StreamUtil.reduce(stringStream, (acc, cur) => acc + cur.toString(), "");
|
|
170
|
+
expect(stringResult).toBe("123");
|
|
171
|
+
}));
|
|
172
|
+
it("should work with async stream without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
173
|
+
const noInitialStream = yield createDelayedNumberStream(1, 4, 15);
|
|
174
|
+
const noInitialResult = yield StreamUtil_1.StreamUtil.reduce(noInitialStream, (acc, cur) => acc + cur);
|
|
175
|
+
expect(noInitialResult).toBe(10);
|
|
176
|
+
}));
|
|
177
|
+
it("should work with async stream transformation and aggregation into array", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
178
|
+
const transformStream = yield createDelayedNumberStream(1, 3, 10);
|
|
179
|
+
const transformResult = yield StreamUtil_1.StreamUtil.reduce(transformStream, (acc, cur) => {
|
|
180
|
+
if (typeof acc === "number") {
|
|
181
|
+
// Handle case when no initial value is provided
|
|
182
|
+
return [`item${acc}`, `item${cur}`];
|
|
183
|
+
}
|
|
184
|
+
return [...acc, `item${cur}`];
|
|
185
|
+
}, []);
|
|
186
|
+
expect(transformResult).toEqual(["item1", "item2", "item3"]);
|
|
187
|
+
}));
|
|
188
|
+
it("should return initial value for async generated empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
189
|
+
const emptyStream = yield createEmptyDelayedStream(30);
|
|
190
|
+
const emptyResult = yield StreamUtil_1.StreamUtil.reduce(emptyStream, (acc, cur) => acc + cur.toString(), "initial");
|
|
191
|
+
expect(emptyResult).toBe("initial");
|
|
192
|
+
}));
|
|
193
|
+
it("should work with stream with values created with various async delays", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
194
|
+
const delayStream = yield createVariableDelayedNumberStream([
|
|
195
|
+
{ value: 1, delay: 20 },
|
|
196
|
+
{ value: 2, delay: 40 },
|
|
197
|
+
{ value: 3, delay: 10 },
|
|
198
|
+
]);
|
|
199
|
+
const delayResult = yield StreamUtil_1.StreamUtil.reduce(delayStream, (acc, cur) => acc + cur, 0);
|
|
200
|
+
expect(delayResult).toBe(6);
|
|
201
|
+
}));
|
|
202
|
+
it("should handle error in reducer function", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
203
|
+
const stream = createNumberStream(1, 3);
|
|
204
|
+
yield expect(StreamUtil_1.StreamUtil.reduce(stream, (acc, cur) => {
|
|
205
|
+
if (cur === 2) {
|
|
206
|
+
throw new Error("Test error");
|
|
207
|
+
}
|
|
208
|
+
return acc + cur;
|
|
209
|
+
}, 0)).rejects.toThrow("Test error");
|
|
210
|
+
}));
|
|
211
|
+
it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
212
|
+
const stream = createTestStream([1, null, 3, undefined, 5]);
|
|
213
|
+
const result = yield StreamUtil_1.StreamUtil.reduce(stream, (acc, cur) => (acc !== null && acc !== void 0 ? acc : 0) + (cur !== null && cur !== void 0 ? cur : 0), 0);
|
|
214
|
+
expect(result).toBe(9); // 1 + 0 + 3 + 0 + 5 = 9
|
|
215
|
+
}));
|
|
216
|
+
});
|
|
217
|
+
describe("from", () => {
|
|
218
|
+
it("should create a stream with a single value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
219
|
+
const stream = StreamUtil_1.StreamUtil.from("Hello, world!");
|
|
220
|
+
const reader = stream.getReader();
|
|
221
|
+
const { done, value } = yield reader.read();
|
|
222
|
+
expect(done).toBe(false);
|
|
223
|
+
expect(value).toBe("Hello, world!");
|
|
224
|
+
const next = yield reader.read();
|
|
225
|
+
expect(next.done).toBe(true);
|
|
226
|
+
}));
|
|
227
|
+
it("should handle null or undefined values", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
228
|
+
const stream = StreamUtil_1.StreamUtil.from(null);
|
|
229
|
+
const reader = stream.getReader();
|
|
230
|
+
const { done, value } = yield reader.read();
|
|
231
|
+
expect(done).toBe(false);
|
|
232
|
+
expect(value).toBeNull();
|
|
233
|
+
const next = yield reader.read();
|
|
234
|
+
expect(next.done).toBe(true);
|
|
235
|
+
}));
|
|
236
|
+
});
|
|
237
|
+
describe("transform", () => {
|
|
238
|
+
it("should transform number stream by doubling", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
239
|
+
const numbersInput = [1, 2, 3, 4, 5];
|
|
240
|
+
const numberStream = createTestStream(numbersInput);
|
|
241
|
+
const doubledStream = StreamUtil_1.StreamUtil.transform(numberStream, (num) => num * 2);
|
|
242
|
+
const doubledResult = yield streamToArray(doubledStream);
|
|
243
|
+
const expectedDoubled = numbersInput.map(n => n * 2);
|
|
244
|
+
expect(doubledResult).toEqual(expectedDoubled);
|
|
245
|
+
}));
|
|
246
|
+
it("should transform object stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
247
|
+
const objectsInput = [
|
|
248
|
+
{ name: "item1", value: 10 },
|
|
249
|
+
{ name: "item2", value: 20 },
|
|
250
|
+
{ name: "item3", value: 30 },
|
|
251
|
+
];
|
|
252
|
+
const objectStream = createTestStream(objectsInput);
|
|
253
|
+
const transformedObjectStream = StreamUtil_1.StreamUtil.transform(objectStream, obj => ({
|
|
254
|
+
id: obj.name.toUpperCase(),
|
|
255
|
+
doubledValue: obj.value * 2,
|
|
256
|
+
}));
|
|
257
|
+
const transformedObjects = yield streamToArray(transformedObjectStream);
|
|
258
|
+
const expectedObjects = objectsInput.map(obj => ({
|
|
259
|
+
id: obj.name.toUpperCase(),
|
|
260
|
+
doubledValue: obj.value * 2,
|
|
261
|
+
}));
|
|
262
|
+
expect(transformedObjects).toEqual(expectedObjects);
|
|
263
|
+
}));
|
|
264
|
+
it("should handle empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
265
|
+
const emptyStream = createEmptyStream();
|
|
266
|
+
const transformedEmptyStream = StreamUtil_1.StreamUtil.transform(emptyStream, n => n * 2);
|
|
267
|
+
const emptyResult = yield streamToArray(transformedEmptyStream);
|
|
268
|
+
expect(emptyResult).toEqual([]);
|
|
269
|
+
}));
|
|
270
|
+
it("should transform type (number -> string)", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
271
|
+
const numbersInput = [1, 2, 3, 4, 5];
|
|
272
|
+
const numberStream = createTestStream(numbersInput);
|
|
273
|
+
const stringStream = StreamUtil_1.StreamUtil.transform(numberStream, num => `Number: ${num}`);
|
|
274
|
+
const stringResult = yield streamToArray(stringStream);
|
|
275
|
+
const expectedStrings = numbersInput.map(n => `Number: ${n}`);
|
|
276
|
+
expect(stringResult).toEqual(expectedStrings);
|
|
277
|
+
}));
|
|
278
|
+
it("should handle error in transformer function", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
279
|
+
const stream = createNumberStream(1, 3);
|
|
280
|
+
const transformedStream = StreamUtil_1.StreamUtil.transform(stream, (num) => {
|
|
281
|
+
if (num === 2) {
|
|
282
|
+
throw new Error("Transform error");
|
|
283
|
+
}
|
|
284
|
+
return num * 2;
|
|
285
|
+
});
|
|
286
|
+
yield expect(streamToArray(transformedStream)).rejects.toThrow("Transform error");
|
|
287
|
+
}));
|
|
288
|
+
it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
289
|
+
const stream = createTestStream([1, null, 3, undefined, 5]);
|
|
290
|
+
const transformedStream = StreamUtil_1.StreamUtil.transform(stream, num => (num !== null && num !== void 0 ? num : 0) * 2);
|
|
291
|
+
const result = yield streamToArray(transformedStream);
|
|
292
|
+
expect(result).toEqual([2, 0, 6, 0, 10]);
|
|
293
|
+
}));
|
|
294
|
+
});
|
|
295
|
+
describe("toAsyncGenerator", () => {
|
|
296
|
+
it("should yield a single value", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
297
|
+
var _a, e_1, _b, _c;
|
|
298
|
+
const generator = (0, StreamUtil_1.toAsyncGenerator)("test value");
|
|
299
|
+
const result = [];
|
|
300
|
+
try {
|
|
301
|
+
for (var _d = true, generator_1 = __asyncValues(generator), generator_1_1; generator_1_1 = yield generator_1.next(), _a = generator_1_1.done, !_a; _d = true) {
|
|
302
|
+
_c = generator_1_1.value;
|
|
303
|
+
_d = false;
|
|
304
|
+
const value = _c;
|
|
305
|
+
result.push(value);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
309
|
+
finally {
|
|
310
|
+
try {
|
|
311
|
+
if (!_d && !_a && (_b = generator_1.return)) yield _b.call(generator_1);
|
|
312
|
+
}
|
|
313
|
+
finally { if (e_1) throw e_1.error; }
|
|
314
|
+
}
|
|
315
|
+
expect(result).toEqual(["test value"]);
|
|
316
|
+
}));
|
|
317
|
+
it("should handle null or undefined values", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
318
|
+
var _a, e_2, _b, _c;
|
|
319
|
+
const generator = (0, StreamUtil_1.toAsyncGenerator)(null);
|
|
320
|
+
const result = [];
|
|
321
|
+
try {
|
|
322
|
+
for (var _d = true, generator_2 = __asyncValues(generator), generator_2_1; generator_2_1 = yield generator_2.next(), _a = generator_2_1.done, !_a; _d = true) {
|
|
323
|
+
_c = generator_2_1.value;
|
|
324
|
+
_d = false;
|
|
325
|
+
const value = _c;
|
|
326
|
+
result.push(value);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
330
|
+
finally {
|
|
331
|
+
try {
|
|
332
|
+
if (!_d && !_a && (_b = generator_2.return)) yield _b.call(generator_2);
|
|
333
|
+
}
|
|
334
|
+
finally { if (e_2) throw e_2.error; }
|
|
335
|
+
}
|
|
336
|
+
expect(result).toEqual([null]);
|
|
337
|
+
}));
|
|
338
|
+
it("should handle object values", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
339
|
+
var _a, e_3, _b, _c;
|
|
340
|
+
const testObj = { id: 1, name: "test" };
|
|
341
|
+
const generator = (0, StreamUtil_1.toAsyncGenerator)(testObj);
|
|
342
|
+
const result = [];
|
|
343
|
+
try {
|
|
344
|
+
for (var _d = true, generator_3 = __asyncValues(generator), generator_3_1; generator_3_1 = yield generator_3.next(), _a = generator_3_1.done, !_a; _d = true) {
|
|
345
|
+
_c = generator_3_1.value;
|
|
346
|
+
_d = false;
|
|
347
|
+
const value = _c;
|
|
348
|
+
result.push(value);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
352
|
+
finally {
|
|
353
|
+
try {
|
|
354
|
+
if (!_d && !_a && (_b = generator_3.return)) yield _b.call(generator_3);
|
|
355
|
+
}
|
|
356
|
+
finally { if (e_3) throw e_3.error; }
|
|
357
|
+
}
|
|
358
|
+
expect(result).toEqual([testObj]);
|
|
359
|
+
}));
|
|
360
|
+
});
|
|
361
|
+
describe("streamDefaultReaderToAsyncGenerator", () => {
|
|
362
|
+
it("should convert stream reader to async generator", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
363
|
+
var _a, e_4, _b, _c;
|
|
364
|
+
const stream = createNumberStream(1, 5);
|
|
365
|
+
const reader = stream.getReader();
|
|
366
|
+
const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
|
|
367
|
+
const result = [];
|
|
368
|
+
try {
|
|
369
|
+
for (var _d = true, generator_4 = __asyncValues(generator), generator_4_1; generator_4_1 = yield generator_4.next(), _a = generator_4_1.done, !_a; _d = true) {
|
|
370
|
+
_c = generator_4_1.value;
|
|
371
|
+
_d = false;
|
|
372
|
+
const value = _c;
|
|
373
|
+
result.push(value);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
377
|
+
finally {
|
|
378
|
+
try {
|
|
379
|
+
if (!_d && !_a && (_b = generator_4.return)) yield _b.call(generator_4);
|
|
380
|
+
}
|
|
381
|
+
finally { if (e_4) throw e_4.error; }
|
|
382
|
+
}
|
|
383
|
+
expect(result).toEqual([1, 2, 3, 4, 5]);
|
|
384
|
+
}));
|
|
385
|
+
it("should handle empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
386
|
+
var _a, e_5, _b, _c;
|
|
387
|
+
const stream = createEmptyStream();
|
|
388
|
+
const reader = stream.getReader();
|
|
389
|
+
const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
|
|
390
|
+
const result = [];
|
|
391
|
+
try {
|
|
392
|
+
for (var _d = true, generator_5 = __asyncValues(generator), generator_5_1; generator_5_1 = yield generator_5.next(), _a = generator_5_1.done, !_a; _d = true) {
|
|
393
|
+
_c = generator_5_1.value;
|
|
394
|
+
_d = false;
|
|
395
|
+
const value = _c;
|
|
396
|
+
result.push(value);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
400
|
+
finally {
|
|
401
|
+
try {
|
|
402
|
+
if (!_d && !_a && (_b = generator_5.return)) yield _b.call(generator_5);
|
|
403
|
+
}
|
|
404
|
+
finally { if (e_5) throw e_5.error; }
|
|
405
|
+
}
|
|
406
|
+
expect(result).toEqual([]);
|
|
407
|
+
}));
|
|
408
|
+
it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
409
|
+
var _a, e_6, _b, _c;
|
|
410
|
+
const stream = createTestStream([1, null, 3, undefined, 5]);
|
|
411
|
+
const reader = stream.getReader();
|
|
412
|
+
const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
|
|
413
|
+
const result = [];
|
|
414
|
+
try {
|
|
415
|
+
for (var _d = true, generator_6 = __asyncValues(generator), generator_6_1; generator_6_1 = yield generator_6.next(), _a = generator_6_1.done, !_a; _d = true) {
|
|
416
|
+
_c = generator_6_1.value;
|
|
417
|
+
_d = false;
|
|
418
|
+
const value = _c;
|
|
419
|
+
result.push(value);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
423
|
+
finally {
|
|
424
|
+
try {
|
|
425
|
+
if (!_d && !_a && (_b = generator_6.return)) yield _b.call(generator_6);
|
|
426
|
+
}
|
|
427
|
+
finally { if (e_6) throw e_6.error; }
|
|
428
|
+
}
|
|
429
|
+
expect(result).toEqual([1, null, 3, undefined, 5]);
|
|
430
|
+
}));
|
|
431
|
+
it("should handle error in stream", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
432
|
+
var _a, e_7, _b, _c;
|
|
433
|
+
const stream = new ReadableStream({
|
|
434
|
+
start(controller) {
|
|
435
|
+
controller.enqueue(1);
|
|
436
|
+
controller.enqueue(2);
|
|
437
|
+
delay(1000).then(() => controller.error(new Error("Stream error"))).catch(() => { });
|
|
438
|
+
},
|
|
439
|
+
});
|
|
440
|
+
const reader = stream.getReader();
|
|
441
|
+
const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
|
|
442
|
+
const result = [];
|
|
443
|
+
try {
|
|
444
|
+
try {
|
|
445
|
+
for (var _d = true, generator_7 = __asyncValues(generator), generator_7_1; generator_7_1 = yield generator_7.next(), _a = generator_7_1.done, !_a; _d = true) {
|
|
446
|
+
_c = generator_7_1.value;
|
|
447
|
+
_d = false;
|
|
448
|
+
const value = _c;
|
|
449
|
+
result.push(value);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
453
|
+
finally {
|
|
454
|
+
try {
|
|
455
|
+
if (!_d && !_a && (_b = generator_7.return)) yield _b.call(generator_7);
|
|
456
|
+
}
|
|
457
|
+
finally { if (e_7) throw e_7.error; }
|
|
458
|
+
}
|
|
459
|
+
// Should not reach here
|
|
460
|
+
expect(true).toBe(false);
|
|
461
|
+
}
|
|
462
|
+
catch (error) {
|
|
463
|
+
console.error(error);
|
|
464
|
+
expect(error).toBeInstanceOf(Error);
|
|
465
|
+
expect(error.message).toBe("Stream error");
|
|
466
|
+
expect(result).toEqual([1, 2]);
|
|
467
|
+
}
|
|
468
|
+
}));
|
|
469
|
+
});
|
|
470
|
+
});
|
|
471
|
+
//# sourceMappingURL=StreamUtil.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamUtil.spec.js","sourceRoot":"","sources":["../../src/utils/StreamUtil.spec.ts"],"names":[],"mappings":"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"}
|