UNPKG

2.59 kBJavaScriptView Raw
1import { __awaiter, __generator } from "tslib";
2import { fromBase64 } from "@aws-sdk/util-base64-browser";
3export var streamCollector = function (stream) {
4 if (typeof Blob === "function" && stream instanceof Blob) {
5 return collectBlob(stream);
6 }
7 return collectStream(stream);
8};
9function collectBlob(blob) {
10 return __awaiter(this, void 0, void 0, function () {
11 var base64, arrayBuffer;
12 return __generator(this, function (_a) {
13 switch (_a.label) {
14 case 0: return [4, readToBase64(blob)];
15 case 1:
16 base64 = _a.sent();
17 arrayBuffer = fromBase64(base64);
18 return [2, new Uint8Array(arrayBuffer)];
19 }
20 });
21 });
22}
23function collectStream(stream) {
24 return __awaiter(this, void 0, void 0, function () {
25 var res, reader, isDone, _a, done, value, prior;
26 return __generator(this, function (_b) {
27 switch (_b.label) {
28 case 0:
29 res = new Uint8Array(0);
30 reader = stream.getReader();
31 isDone = false;
32 _b.label = 1;
33 case 1:
34 if (!!isDone) return [3, 3];
35 return [4, reader.read()];
36 case 2:
37 _a = _b.sent(), done = _a.done, value = _a.value;
38 if (value) {
39 prior = res;
40 res = new Uint8Array(prior.length + value.length);
41 res.set(prior);
42 res.set(value, prior.length);
43 }
44 isDone = done;
45 return [3, 1];
46 case 3: return [2, res];
47 }
48 });
49 });
50}
51function readToBase64(blob) {
52 return new Promise(function (resolve, reject) {
53 var reader = new FileReader();
54 reader.onloadend = function () {
55 var _a;
56 if (reader.readyState !== 2) {
57 return reject(new Error("Reader aborted too early"));
58 }
59 var result = ((_a = reader.result) !== null && _a !== void 0 ? _a : "");
60 var commaIndex = result.indexOf(",");
61 var dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;
62 resolve(result.substring(dataOffset));
63 };
64 reader.onabort = function () { return reject(new Error("Read aborted")); };
65 reader.onerror = function () { return reject(reader.error); };
66 reader.readAsDataURL(blob);
67 });
68}