MCPcopy Create free account
hub / github.com/WinterTC55/iter-streams / applyStatelessAsyncTransform

Function applyStatelessAsyncTransform

src/pull.js:637–786  ·  view source on GitHub ↗

* Apply a single stateless async transform to a source.

(source, transform, options)

Source from the content-addressed store, hash-verified

635 * Apply a single stateless async transform to a source.
636 */
637function applyStatelessAsyncTransform(source, transform, options) {
638 return __asyncGenerator(this, arguments, function applyStatelessAsyncTransform_1() {
639 var _a, source_3, source_3_1, chunks, result, resolved, batch, _i, _b, item, _c, _d, _e, chunk, e_5_1, e_6_1;
640 var _f, e_6, _g, _h, _j, e_5, _k, _l;
641 return __generator(this, function (_m) {
642 switch (_m.label) {
643 case 0:
644 _m.trys.push([0, 39, 40, 45]);
645 _a = true, source_3 = __asyncValues(source);
646 _m.label = 1;
647 case 1: return [4 /*yield*/, __await(source_3.next())];
648 case 2:
649 if (!(source_3_1 = _m.sent(), _f = source_3_1.done, !_f)) return [3 /*break*/, 38];
650 _h = source_3_1.value;
651 _a = false;
652 chunks = _h;
653 result = transform(chunks, options);
654 // Fast path: result is already Uint8Array[] (common case)
655 if (result === null)
656 return [3 /*break*/, 37];
657 if (!isUint8ArrayBatch(result)) return [3 /*break*/, 6];
658 if (!(result.length > 0)) return [3 /*break*/, 5];
659 return [4 /*yield*/, __await(result)];
660 case 3: return [4 /*yield*/, _m.sent()];
661 case 4:
662 _m.sent();
663 _m.label = 5;
664 case 5: return [3 /*break*/, 37];
665 case 6:
666 if (!(result instanceof Promise)) return [3 /*break*/, 14];
667 return [4 /*yield*/, __await(result)];
668 case 7:
669 resolved = _m.sent();
670 if (resolved === null)
671 return [3 /*break*/, 37];
672 if (!isUint8ArrayBatch(resolved)) return [3 /*break*/, 11];
673 if (!(resolved.length > 0)) return [3 /*break*/, 10];
674 return [4 /*yield*/, __await(resolved)];
675 case 8: return [4 /*yield*/, _m.sent()];
676 case 9:
677 _m.sent();
678 _m.label = 10;
679 case 10: return [3 /*break*/, 37];
680 case 11:
681 // Fall through to slow path
682 return [5 /*yield**/, __values(__asyncDelegator(__asyncValues(processTransformResultAsync(resolved))))];
683 case 12:
684 // Fall through to slow path
685 return [4 /*yield*/, __await.apply(void 0, [_m.sent()])];
686 case 13:
687 // Fall through to slow path
688 _m.sent();
689 return [3 /*break*/, 37];
690 case 14:
691 if (!((0, from_js_1.isSyncIterable)(result) && !(0, from_js_1.isAsyncIterable)(result))) return [3 /*break*/, 34];
692 batch = [];
693 _i = 0, _b = result;
694 _m.label = 15;

Callers 1

createAsyncPipelineFunction · 0.70

Calls 6

transformFunction · 0.70
isUint8ArrayBatchFunction · 0.70
pushMethod · 0.65
nextMethod · 0.45

Tested by

no test coverage detected