UNPKG

1.8 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.streamCollector = void 0;
4const util_base64_browser_1 = require("@aws-sdk/util-base64-browser");
5const streamCollector = (stream) => {
6 if (typeof Blob === "function" && stream instanceof Blob) {
7 return collectBlob(stream);
8 }
9 return collectStream(stream);
10};
11exports.streamCollector = streamCollector;
12async 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}
17async 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}
33function 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}