@adviser/cement 0.4.39 → 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.
Files changed (56) hide show
  1. package/cjs/utils/consume.cjs +65 -0
  2. package/cjs/utils/consume.cjs.map +1 -0
  3. package/cjs/utils/consume.d.ts +7 -0
  4. package/cjs/utils/consume.d.ts.map +1 -0
  5. package/cjs/utils/consume.test.cjs +204 -0
  6. package/cjs/utils/consume.test.cjs.map +1 -0
  7. package/cjs/utils/consume.test.d.ts +2 -0
  8. package/cjs/utils/consume.test.d.ts.map +1 -0
  9. package/cjs/utils/index.cjs +1 -0
  10. package/cjs/utils/index.cjs.map +1 -1
  11. package/cjs/utils/index.d.ts +1 -0
  12. package/cjs/utils/index.d.ts.map +1 -1
  13. package/cjs/version.cjs +1 -1
  14. package/deno.json +1 -1
  15. package/esm/utils/consume.d.ts +7 -0
  16. package/esm/utils/consume.d.ts.map +1 -0
  17. package/esm/utils/consume.js +61 -0
  18. package/esm/utils/consume.js.map +1 -0
  19. package/esm/utils/consume.test.d.ts +2 -0
  20. package/esm/utils/consume.test.d.ts.map +1 -0
  21. package/esm/utils/consume.test.js +202 -0
  22. package/esm/utils/consume.test.js.map +1 -0
  23. package/esm/utils/index.d.ts +1 -0
  24. package/esm/utils/index.d.ts.map +1 -1
  25. package/esm/utils/index.js +1 -0
  26. package/esm/utils/index.js.map +1 -1
  27. package/esm/version.js +1 -1
  28. package/package.json +1 -1
  29. package/src/utils/consume.ts +79 -0
  30. package/src/utils/index.ts +1 -0
  31. package/ts/cjs/utils/consume.d.ts +7 -0
  32. package/ts/cjs/utils/consume.d.ts.map +1 -0
  33. package/ts/cjs/utils/consume.js +65 -0
  34. package/ts/cjs/utils/consume.js.map +1 -0
  35. package/ts/cjs/utils/consume.test.d.ts +2 -0
  36. package/ts/cjs/utils/consume.test.d.ts.map +1 -0
  37. package/ts/cjs/utils/consume.test.js +204 -0
  38. package/ts/cjs/utils/consume.test.js.map +1 -0
  39. package/ts/cjs/utils/index.d.ts +1 -0
  40. package/ts/cjs/utils/index.d.ts.map +1 -1
  41. package/ts/cjs/utils/index.js +1 -0
  42. package/ts/cjs/utils/index.js.map +1 -1
  43. package/ts/cjs/version.js +1 -1
  44. package/ts/esm/utils/consume.d.ts +7 -0
  45. package/ts/esm/utils/consume.d.ts.map +1 -0
  46. package/ts/esm/utils/consume.js +61 -0
  47. package/ts/esm/utils/consume.js.map +1 -0
  48. package/ts/esm/utils/consume.test.d.ts +2 -0
  49. package/ts/esm/utils/consume.test.d.ts.map +1 -0
  50. package/ts/esm/utils/consume.test.js +202 -0
  51. package/ts/esm/utils/consume.test.js.map +1 -0
  52. package/ts/esm/utils/index.d.ts +1 -0
  53. package/ts/esm/utils/index.d.ts.map +1 -1
  54. package/ts/esm/utils/index.js +1 -0
  55. package/ts/esm/utils/index.js.map +1 -1
  56. package/ts/esm/version.js +1 -1
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.consumeStream = consumeStream;
4
+ exports.consumeIterator = consumeIterator;
5
+ const is_promise_js_1 = require("../is-promise.cjs");
6
+ function consumeStream(stream, cb) {
7
+ const reader = stream.getReader();
8
+ async function readNext(ret) {
9
+ const { done, value } = await reader.read();
10
+ if (done) {
11
+ return ret;
12
+ }
13
+ return Promise.resolve(cb(value)).then((r) => {
14
+ ret.push(r);
15
+ return readNext(ret);
16
+ });
17
+ }
18
+ return readNext([]);
19
+ }
20
+ function step(args) {
21
+ const item = args.iter.next();
22
+ return Promise.resolve(item).then(({ done, value }) => {
23
+ if (done) {
24
+ args.resolve(args.ret);
25
+ return Promise.resolve();
26
+ }
27
+ try {
28
+ return Promise.resolve(args.cb(value, args.ret.length)).then((r) => {
29
+ args.ret.push(r);
30
+ if ((0, is_promise_js_1.isPromise)(item) && args.chunk >= args.chunkSize) {
31
+ args.setTimeoutFn(() => {
32
+ args.chunk = 0;
33
+ void step(args);
34
+ }, 0);
35
+ return Promise.resolve();
36
+ }
37
+ else {
38
+ args.chunk++;
39
+ return step(args);
40
+ }
41
+ });
42
+ }
43
+ catch (e) {
44
+ args.reject(e);
45
+ return Promise.resolve();
46
+ }
47
+ });
48
+ }
49
+ function consumeIterator(iter, cb, params = {}) {
50
+ return new Promise((resolve, reject) => {
51
+ const ret = [];
52
+ void step({
53
+ setTimeoutFn: setTimeout,
54
+ chunkSize: 16,
55
+ ...params,
56
+ iter,
57
+ cb,
58
+ reject,
59
+ resolve,
60
+ chunk: 0,
61
+ ret,
62
+ });
63
+ });
64
+ }
65
+ //# sourceMappingURL=consume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.js","sourceRoot":"","sources":["../../../../src/utils/consume.ts"],"names":[],"mappings":";;;;AAAA,oDAA6C;AAE7C,uBAAoC,MAAyB,EAAE,EAAiB,EAAgB;IAC9F,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAgB;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAA,CACtB,CAAC,CAAC;IAAA,CACJ;IACD,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,CACrB;AAgBD,SAAS,IAAI,CAAiE,IAAuB,EAAiB;IACpH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAA+B,EAAE,EAAE,CAAC;QAClF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,IAAA,yBAAS,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;wBACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;wBACf,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAA,CACjB,EAAE,CAAC,CAAC,CAAC;oBACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YAAA,CACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,CAAU,CAAC,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACJ;AAED,yBACE,IAAO,EACP,EAAiB,EACjB,MAAM,GAAqB,EAAE,EACf;IACd,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC;YACR,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,EAAE;YACb,GAAG,MAAM;YACT,IAAI;YACJ,EAAE;YACF,MAAM;YACN,OAAO;YACP,KAAK,EAAE,CAAC;YACR,GAAG;SACJ,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;AAAA,CACJ"}
@@ -0,0 +1,7 @@
1
+ export declare function consumeStream<E, R>(stream: ReadableStream<E>, cb: (msg: E) => R): Promise<R[]>;
2
+ export interface StepCfg {
3
+ readonly chunkSize: number;
4
+ readonly setTimeoutFn: (fn: () => void, delay: number) => void;
5
+ }
6
+ export declare function consumeIterator<I extends IterableIterator<E> | AsyncIterableIterator<E>, E, R>(iter: I, cb: (msg: E) => R, params?: Partial<StepCfg>): Promise<R[]>;
7
+ //# sourceMappingURL=consume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../../../src/utils/consume.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAa9F;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAuCD,wBAAgB,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5F,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EACjB,MAAM,GAAE,OAAO,CAAC,OAAO,CAAM,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAed"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const consume_js_1 = require("./consume.cjs");
5
+ (0, vitest_1.describe)("consumeStream", () => {
6
+ (0, vitest_1.it)("should consume an empty stream", async () => {
7
+ const stream = new ReadableStream({
8
+ start(controller) {
9
+ controller.close();
10
+ },
11
+ });
12
+ const result = await (0, consume_js_1.consumeStream)(stream, (x) => x * 2);
13
+ (0, vitest_1.expect)(result).toEqual([]);
14
+ });
15
+ (0, vitest_1.it)("should consume a stream with single element", async () => {
16
+ const stream = new ReadableStream({
17
+ start(controller) {
18
+ controller.enqueue(5);
19
+ controller.close();
20
+ },
21
+ });
22
+ const result = await (0, consume_js_1.consumeStream)(stream, (x) => x * 2);
23
+ (0, vitest_1.expect)(result).toEqual([10]);
24
+ });
25
+ (0, vitest_1.it)("should consume a stream with multiple elements", async () => {
26
+ const stream = new ReadableStream({
27
+ start(controller) {
28
+ controller.enqueue(1);
29
+ controller.enqueue(2);
30
+ controller.enqueue(3);
31
+ controller.close();
32
+ },
33
+ });
34
+ const result = await (0, consume_js_1.consumeStream)(stream, (x) => x * 2);
35
+ (0, vitest_1.expect)(result).toEqual([2, 4, 6]);
36
+ });
37
+ (0, vitest_1.it)("should handle callback that returns promises", async () => {
38
+ const stream = new ReadableStream({
39
+ start(controller) {
40
+ controller.enqueue(1);
41
+ controller.enqueue(2);
42
+ controller.close();
43
+ },
44
+ });
45
+ const result = await (0, consume_js_1.consumeStream)(stream, async (x) => {
46
+ await new Promise((resolve) => setTimeout(resolve, 10));
47
+ return x * 3;
48
+ });
49
+ (0, vitest_1.expect)(result).toEqual([3, 6]);
50
+ });
51
+ (0, vitest_1.it)("should handle callback that transforms types", async () => {
52
+ const stream = new ReadableStream({
53
+ start(controller) {
54
+ controller.enqueue(1);
55
+ controller.enqueue(2);
56
+ controller.enqueue(3);
57
+ controller.close();
58
+ },
59
+ });
60
+ const result = await (0, consume_js_1.consumeStream)(stream, (x) => `value-${x}`);
61
+ (0, vitest_1.expect)(result).toEqual(["value-1", "value-2", "value-3"]);
62
+ });
63
+ (0, vitest_1.it)("should handle string stream", async () => {
64
+ const stream = new ReadableStream({
65
+ start(controller) {
66
+ controller.enqueue("hello");
67
+ controller.enqueue("world");
68
+ controller.close();
69
+ },
70
+ });
71
+ const result = await (0, consume_js_1.consumeStream)(stream, (x) => x.toUpperCase());
72
+ (0, vitest_1.expect)(result).toEqual(["HELLO", "WORLD"]);
73
+ });
74
+ (0, vitest_1.it)("should handle callback errors gracefully", async () => {
75
+ const stream = new ReadableStream({
76
+ start(controller) {
77
+ controller.enqueue(1);
78
+ controller.enqueue(2);
79
+ controller.close();
80
+ },
81
+ });
82
+ await (0, vitest_1.expect)((0, consume_js_1.consumeStream)(stream, (x) => {
83
+ if (x === 2)
84
+ throw new Error("Test error");
85
+ return x * 2;
86
+ })).rejects.toThrow("Test error");
87
+ });
88
+ });
89
+ (0, vitest_1.describe)("consumeIterator", () => {
90
+ (0, vitest_1.it)("should consume an empty sync iterator", async () => {
91
+ function* emptyGen() {
92
+ }
93
+ const result = await (0, consume_js_1.consumeIterator)(emptyGen(), (x) => x * 2);
94
+ (0, vitest_1.expect)(result).toEqual([]);
95
+ });
96
+ (0, vitest_1.it)("should consume a sync iterator with single element", async () => {
97
+ function* singleGen() {
98
+ yield 5;
99
+ }
100
+ const result = await (0, consume_js_1.consumeIterator)(singleGen(), (x) => x * 2);
101
+ (0, vitest_1.expect)(result).toEqual([10]);
102
+ });
103
+ (0, vitest_1.it)("should consume a sync iterator with multiple elements", async () => {
104
+ function* multiGen() {
105
+ yield 1;
106
+ yield 2;
107
+ yield 3;
108
+ }
109
+ const result = await (0, consume_js_1.consumeIterator)(multiGen(), (x) => x * 2);
110
+ (0, vitest_1.expect)(result).toEqual([2, 4, 6]);
111
+ });
112
+ (0, vitest_1.it)("should consume an async iterator", async () => {
113
+ async function* asyncGen() {
114
+ yield 1;
115
+ await new Promise((resolve) => setTimeout(resolve, 10));
116
+ yield 2;
117
+ yield 3;
118
+ }
119
+ const result = await (0, consume_js_1.consumeIterator)(asyncGen(), (x) => x * 2);
120
+ (0, vitest_1.expect)(result).toEqual([2, 4, 6]);
121
+ });
122
+ (0, vitest_1.it)("should handle callback that returns promises with sync iterator", async () => {
123
+ function* gen() {
124
+ yield 1;
125
+ yield 2;
126
+ }
127
+ const result = await (0, consume_js_1.consumeIterator)(gen(), async (x) => {
128
+ await new Promise((resolve) => setTimeout(resolve, 10));
129
+ return x * 3;
130
+ });
131
+ (0, vitest_1.expect)(result).toEqual([3, 6]);
132
+ });
133
+ (0, vitest_1.it)("should handle callback that returns promises with async iterator", async () => {
134
+ async function* asyncGen() {
135
+ await new Promise((resolve) => setTimeout(resolve, 10));
136
+ yield 1;
137
+ await new Promise((resolve) => setTimeout(resolve, 10));
138
+ yield 2;
139
+ }
140
+ const result = await (0, consume_js_1.consumeIterator)(asyncGen(), async (x) => {
141
+ await new Promise((resolve) => setTimeout(resolve, 10));
142
+ return x * 3;
143
+ });
144
+ (0, vitest_1.expect)(result).toEqual([3, 6]);
145
+ });
146
+ (0, vitest_1.it)("should handle type transformation", async () => {
147
+ function* gen() {
148
+ yield 1;
149
+ yield 2;
150
+ yield 3;
151
+ }
152
+ const result = await (0, consume_js_1.consumeIterator)(gen(), (x) => `item-${x}`);
153
+ (0, vitest_1.expect)(result).toEqual(["item-1", "item-2", "item-3"]);
154
+ });
155
+ (0, vitest_1.it)("should handle large iterators with chunking", async () => {
156
+ function* largeGen() {
157
+ for (let i = 0; i < 100; i++) {
158
+ yield i;
159
+ }
160
+ }
161
+ const result = await (0, consume_js_1.consumeIterator)(largeGen(), (x) => x * 2);
162
+ (0, vitest_1.expect)(result).toHaveLength(100);
163
+ (0, vitest_1.expect)(result[0]).toBe(0);
164
+ (0, vitest_1.expect)(result[99]).toBe(198);
165
+ });
166
+ (0, vitest_1.it)("should handle callback errors gracefully", async () => {
167
+ function* gen() {
168
+ yield 1;
169
+ yield 2;
170
+ }
171
+ await (0, vitest_1.expect)((0, consume_js_1.consumeIterator)(gen(), (x) => {
172
+ if (x === 2)
173
+ throw new Error("Test error");
174
+ return x * 2;
175
+ })).rejects.toThrow("Test error");
176
+ });
177
+ (0, vitest_1.it)("should handle array iterator", async () => {
178
+ const arr = [1, 2, 3, 4, 5];
179
+ const result = await (0, consume_js_1.consumeIterator)(arr[Symbol.iterator](), (x) => x * 2);
180
+ (0, vitest_1.expect)(result).toEqual([2, 4, 6, 8, 10]);
181
+ });
182
+ (0, vitest_1.it)("should handle string iterator", async () => {
183
+ const str = "hello";
184
+ const result = await (0, consume_js_1.consumeIterator)(str[Symbol.iterator](), (char) => char.toUpperCase());
185
+ (0, vitest_1.expect)(result).toEqual(["H", "E", "L", "L", "O"]);
186
+ });
187
+ });
188
+ (0, vitest_1.describe)("consumeIterator chunking behavior", () => {
189
+ (0, vitest_1.it)("should handle chunking with async iterator", async () => {
190
+ async function* largeAsyncGen() {
191
+ for (let i = 0; i < 53; i++) {
192
+ yield i;
193
+ if (i % 10 === 0) {
194
+ await new Promise((resolve) => setTimeout(resolve, 10));
195
+ }
196
+ }
197
+ }
198
+ const setTimeoutFn = vitest_1.vi.fn().mockImplementation((fn) => fn());
199
+ const result = await (0, consume_js_1.consumeIterator)(largeAsyncGen(), (x) => x, { setTimeoutFn, chunkSize: 10 });
200
+ (0, vitest_1.expect)(result).toHaveLength(53);
201
+ (0, vitest_1.expect)(setTimeoutFn).toBeCalledTimes(4);
202
+ });
203
+ });
204
+ //# sourceMappingURL=consume.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.test.js","sourceRoot":"","sources":["../../../../src/utils/consume.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=consume.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/consume.test.ts"],"names":[],"mappings":""}
@@ -25,4 +25,5 @@ __exportStar(require("./stripper.cjs"), exports);
25
25
  __exportStar(require("./sorted-object.cjs"), exports);
26
26
  __exportStar(require("./uint8array-equal.cjs"), exports);
27
27
  __exportStar(require("./coerce-uint8.cjs"), exports);
28
+ __exportStar(require("./consume.cjs"), exports);
28
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,kDAAgC;AAChC,qDAAmC;AACnC,qDAAmC;AACnC,4DAA0C;AAC1C,2DAAyC;AACzC,yDAAuC;AACvC,gDAA8B;AAC9B,qDAAmC;AACnC,wDAAsC;AACtC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,kDAAgC;AAChC,qDAAmC;AACnC,qDAAmC;AACnC,4DAA0C;AAC1C,2DAAyC;AACzC,yDAAuC;AACvC,gDAA8B;AAC9B,qDAAmC;AACnC,wDAAsC;AACtC,oDAAkC;AAClC,+CAA6B"}
@@ -9,4 +9,5 @@ export * from "./stripper.js";
9
9
  export * from "./sorted-object.js";
10
10
  export * from "./uint8array-equal.js";
11
11
  export * from "./coerce-uint8.js";
12
+ export * from "./consume.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
package/cjs/version.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.4.39";
4
+ exports.VERSION = "0.4.40";
5
5
  //# sourceMappingURL=version.js.map
package/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.4.39",
3
+ "version": "0.4.40",
4
4
  "license": "AFL-2.0",
5
5
  "exports": {
6
6
  ".": "./src/index.ts",
@@ -0,0 +1,7 @@
1
+ export declare function consumeStream<E, R>(stream: ReadableStream<E>, cb: (msg: E) => R): Promise<R[]>;
2
+ export interface StepCfg {
3
+ readonly chunkSize: number;
4
+ readonly setTimeoutFn: (fn: () => void, delay: number) => void;
5
+ }
6
+ export declare function consumeIterator<I extends IterableIterator<E> | AsyncIterableIterator<E>, E, R>(iter: I, cb: (msg: E) => R, params?: Partial<StepCfg>): Promise<R[]>;
7
+ //# sourceMappingURL=consume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../../../src/utils/consume.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAa9F;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAuCD,wBAAgB,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5F,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EACjB,MAAM,GAAE,OAAO,CAAC,OAAO,CAAM,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAed"}
@@ -0,0 +1,61 @@
1
+ import { isPromise } from "../is-promise.js";
2
+ export function consumeStream(stream, cb) {
3
+ const reader = stream.getReader();
4
+ async function readNext(ret) {
5
+ const { done, value } = await reader.read();
6
+ if (done) {
7
+ return ret;
8
+ }
9
+ return Promise.resolve(cb(value)).then((r) => {
10
+ ret.push(r);
11
+ return readNext(ret);
12
+ });
13
+ }
14
+ return readNext([]);
15
+ }
16
+ function step(args) {
17
+ const item = args.iter.next();
18
+ return Promise.resolve(item).then(({ done, value }) => {
19
+ if (done) {
20
+ args.resolve(args.ret);
21
+ return Promise.resolve();
22
+ }
23
+ try {
24
+ return Promise.resolve(args.cb(value, args.ret.length)).then((r) => {
25
+ args.ret.push(r);
26
+ if (isPromise(item) && args.chunk >= args.chunkSize) {
27
+ args.setTimeoutFn(() => {
28
+ args.chunk = 0;
29
+ void step(args);
30
+ }, 0);
31
+ return Promise.resolve();
32
+ }
33
+ else {
34
+ args.chunk++;
35
+ return step(args);
36
+ }
37
+ });
38
+ }
39
+ catch (e) {
40
+ args.reject(e);
41
+ return Promise.resolve();
42
+ }
43
+ });
44
+ }
45
+ export function consumeIterator(iter, cb, params = {}) {
46
+ return new Promise((resolve, reject) => {
47
+ const ret = [];
48
+ void step({
49
+ setTimeoutFn: setTimeout,
50
+ chunkSize: 16,
51
+ ...params,
52
+ iter,
53
+ cb,
54
+ reject,
55
+ resolve,
56
+ chunk: 0,
57
+ ret,
58
+ });
59
+ });
60
+ }
61
+ //# sourceMappingURL=consume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.js","sourceRoot":"","sources":["../../../../src/utils/consume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,aAAa,CAAO,MAAyB,EAAE,EAAiB,EAAgB;IAC9F,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAgB;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAA,CACtB,CAAC,CAAC;IAAA,CACJ;IACD,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,CACrB;AAgBD,SAAS,IAAI,CAAiE,IAAuB,EAAiB;IACpH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAA+B,EAAE,EAAE,CAAC;QAClF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;wBACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;wBACf,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;oBAAA,CACjB,EAAE,CAAC,CAAC,CAAC;oBACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YAAA,CACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,CAAU,CAAC,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACJ;AAED,MAAM,UAAU,eAAe,CAC7B,IAAO,EACP,EAAiB,EACjB,MAAM,GAAqB,EAAE,EACf;IACd,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC;YACR,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,EAAE;YACb,GAAG,MAAM;YACT,IAAI;YACJ,EAAE;YACF,MAAM;YACN,OAAO;YACP,KAAK,EAAE,CAAC;YACR,GAAG;SACJ,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;AAAA,CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=consume.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consume.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/consume.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,202 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ import { consumeStream, consumeIterator } from "./consume.js";
3
+ describe("consumeStream", () => {
4
+ it("should consume an empty stream", async () => {
5
+ const stream = new ReadableStream({
6
+ start(controller) {
7
+ controller.close();
8
+ },
9
+ });
10
+ const result = await consumeStream(stream, (x) => x * 2);
11
+ expect(result).toEqual([]);
12
+ });
13
+ it("should consume a stream with single element", async () => {
14
+ const stream = new ReadableStream({
15
+ start(controller) {
16
+ controller.enqueue(5);
17
+ controller.close();
18
+ },
19
+ });
20
+ const result = await consumeStream(stream, (x) => x * 2);
21
+ expect(result).toEqual([10]);
22
+ });
23
+ it("should consume a stream with multiple elements", async () => {
24
+ const stream = new ReadableStream({
25
+ start(controller) {
26
+ controller.enqueue(1);
27
+ controller.enqueue(2);
28
+ controller.enqueue(3);
29
+ controller.close();
30
+ },
31
+ });
32
+ const result = await consumeStream(stream, (x) => x * 2);
33
+ expect(result).toEqual([2, 4, 6]);
34
+ });
35
+ it("should handle callback that returns promises", async () => {
36
+ const stream = new ReadableStream({
37
+ start(controller) {
38
+ controller.enqueue(1);
39
+ controller.enqueue(2);
40
+ controller.close();
41
+ },
42
+ });
43
+ const result = await consumeStream(stream, async (x) => {
44
+ await new Promise((resolve) => setTimeout(resolve, 10));
45
+ return x * 3;
46
+ });
47
+ expect(result).toEqual([3, 6]);
48
+ });
49
+ it("should handle callback that transforms types", async () => {
50
+ const stream = new ReadableStream({
51
+ start(controller) {
52
+ controller.enqueue(1);
53
+ controller.enqueue(2);
54
+ controller.enqueue(3);
55
+ controller.close();
56
+ },
57
+ });
58
+ const result = await consumeStream(stream, (x) => `value-${x}`);
59
+ expect(result).toEqual(["value-1", "value-2", "value-3"]);
60
+ });
61
+ it("should handle string stream", async () => {
62
+ const stream = new ReadableStream({
63
+ start(controller) {
64
+ controller.enqueue("hello");
65
+ controller.enqueue("world");
66
+ controller.close();
67
+ },
68
+ });
69
+ const result = await consumeStream(stream, (x) => x.toUpperCase());
70
+ expect(result).toEqual(["HELLO", "WORLD"]);
71
+ });
72
+ it("should handle callback errors gracefully", async () => {
73
+ const stream = new ReadableStream({
74
+ start(controller) {
75
+ controller.enqueue(1);
76
+ controller.enqueue(2);
77
+ controller.close();
78
+ },
79
+ });
80
+ await expect(consumeStream(stream, (x) => {
81
+ if (x === 2)
82
+ throw new Error("Test error");
83
+ return x * 2;
84
+ })).rejects.toThrow("Test error");
85
+ });
86
+ });
87
+ describe("consumeIterator", () => {
88
+ it("should consume an empty sync iterator", async () => {
89
+ function* emptyGen() {
90
+ }
91
+ const result = await consumeIterator(emptyGen(), (x) => x * 2);
92
+ expect(result).toEqual([]);
93
+ });
94
+ it("should consume a sync iterator with single element", async () => {
95
+ function* singleGen() {
96
+ yield 5;
97
+ }
98
+ const result = await consumeIterator(singleGen(), (x) => x * 2);
99
+ expect(result).toEqual([10]);
100
+ });
101
+ it("should consume a sync iterator with multiple elements", async () => {
102
+ function* multiGen() {
103
+ yield 1;
104
+ yield 2;
105
+ yield 3;
106
+ }
107
+ const result = await consumeIterator(multiGen(), (x) => x * 2);
108
+ expect(result).toEqual([2, 4, 6]);
109
+ });
110
+ it("should consume an async iterator", async () => {
111
+ async function* asyncGen() {
112
+ yield 1;
113
+ await new Promise((resolve) => setTimeout(resolve, 10));
114
+ yield 2;
115
+ yield 3;
116
+ }
117
+ const result = await consumeIterator(asyncGen(), (x) => x * 2);
118
+ expect(result).toEqual([2, 4, 6]);
119
+ });
120
+ it("should handle callback that returns promises with sync iterator", async () => {
121
+ function* gen() {
122
+ yield 1;
123
+ yield 2;
124
+ }
125
+ const result = await consumeIterator(gen(), async (x) => {
126
+ await new Promise((resolve) => setTimeout(resolve, 10));
127
+ return x * 3;
128
+ });
129
+ expect(result).toEqual([3, 6]);
130
+ });
131
+ it("should handle callback that returns promises with async iterator", async () => {
132
+ async function* asyncGen() {
133
+ await new Promise((resolve) => setTimeout(resolve, 10));
134
+ yield 1;
135
+ await new Promise((resolve) => setTimeout(resolve, 10));
136
+ yield 2;
137
+ }
138
+ const result = await consumeIterator(asyncGen(), async (x) => {
139
+ await new Promise((resolve) => setTimeout(resolve, 10));
140
+ return x * 3;
141
+ });
142
+ expect(result).toEqual([3, 6]);
143
+ });
144
+ it("should handle type transformation", async () => {
145
+ function* gen() {
146
+ yield 1;
147
+ yield 2;
148
+ yield 3;
149
+ }
150
+ const result = await consumeIterator(gen(), (x) => `item-${x}`);
151
+ expect(result).toEqual(["item-1", "item-2", "item-3"]);
152
+ });
153
+ it("should handle large iterators with chunking", async () => {
154
+ function* largeGen() {
155
+ for (let i = 0; i < 100; i++) {
156
+ yield i;
157
+ }
158
+ }
159
+ const result = await consumeIterator(largeGen(), (x) => x * 2);
160
+ expect(result).toHaveLength(100);
161
+ expect(result[0]).toBe(0);
162
+ expect(result[99]).toBe(198);
163
+ });
164
+ it("should handle callback errors gracefully", async () => {
165
+ function* gen() {
166
+ yield 1;
167
+ yield 2;
168
+ }
169
+ await expect(consumeIterator(gen(), (x) => {
170
+ if (x === 2)
171
+ throw new Error("Test error");
172
+ return x * 2;
173
+ })).rejects.toThrow("Test error");
174
+ });
175
+ it("should handle array iterator", async () => {
176
+ const arr = [1, 2, 3, 4, 5];
177
+ const result = await consumeIterator(arr[Symbol.iterator](), (x) => x * 2);
178
+ expect(result).toEqual([2, 4, 6, 8, 10]);
179
+ });
180
+ it("should handle string iterator", async () => {
181
+ const str = "hello";
182
+ const result = await consumeIterator(str[Symbol.iterator](), (char) => char.toUpperCase());
183
+ expect(result).toEqual(["H", "E", "L", "L", "O"]);
184
+ });
185
+ });
186
+ describe("consumeIterator chunking behavior", () => {
187
+ it("should handle chunking with async iterator", async () => {
188
+ async function* largeAsyncGen() {
189
+ for (let i = 0; i < 53; i++) {
190
+ yield i;
191
+ if (i % 10 === 0) {
192
+ await new Promise((resolve) => setTimeout(resolve, 10));
193
+ }
194
+ }
195
+ }
196
+ const setTimeoutFn = vi.fn().mockImplementation((fn) => fn());
197
+ const result = await consumeIterator(largeAsyncGen(), (x) => x, { setTimeoutFn, chunkSize: 10 });
198
+ expect(result).toHaveLength(53);
199
+ expect(setTimeoutFn).toBeCalledTimes(4);
200
+ });
201
+ });
202
+ //# sourceMappingURL=consume.test.js.map