1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.streamCollector = void 0;
|
4 | const util_base64_browser_1 = require("@aws-sdk/util-base64-browser");
|
5 | const streamCollector = (stream) => {
|
6 | if (typeof Blob === "function" && stream instanceof Blob) {
|
7 | return collectBlob(stream);
|
8 | }
|
9 | return collectStream(stream);
|
10 | };
|
11 | exports.streamCollector = streamCollector;
|
12 | async function collectBlob(blob) {
|
13 | const base64 = await readToBase64(blob);
|
14 | const arrayBuffer = (0, util_base64_browser_1.fromBase64)(base64);
|
15 | return new Uint8Array(arrayBuffer);
|
16 | }
|
17 | async function collectStream(stream) {
|
18 | let res = new Uint8Array(0);
|
19 | const reader = stream.getReader();
|
20 | let isDone = false;
|
21 | while (!isDone) {
|
22 | const { done, value } = await reader.read();
|
23 | if (value) {
|
24 | const prior = res;
|
25 | res = new Uint8Array(prior.length + value.length);
|
26 | res.set(prior);
|
27 | res.set(value, prior.length);
|
28 | }
|
29 | isDone = done;
|
30 | }
|
31 | return res;
|
32 | }
|
33 | function readToBase64(blob) {
|
34 | return new Promise((resolve, reject) => {
|
35 | const reader = new FileReader();
|
36 | reader.onloadend = () => {
|
37 | var _a;
|
38 | if (reader.readyState !== 2) {
|
39 | return reject(new Error("Reader aborted too early"));
|
40 | }
|
41 | const result = ((_a = reader.result) !== null && _a !== void 0 ? _a : "");
|
42 | const commaIndex = result.indexOf(",");
|
43 | const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;
|
44 | resolve(result.substring(dataOffset));
|
45 | };
|
46 | reader.onabort = () => reject(new Error("Read aborted"));
|
47 | reader.onerror = () => reject(reader.error);
|
48 | reader.readAsDataURL(blob);
|
49 | });
|
50 | }
|