// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { decode } from 'base-64'; import { ungzip } from 'pako'; export const convert = async (stream: object): Promise => { if (!(stream instanceof Blob)) { return Promise.reject(new Error('Invalid content type')); } return new Promise((resolve, reject) => { try { const fileReaderInstance = new FileReader(); fileReaderInstance.readAsDataURL(stream); fileReaderInstance.onload = async () => { const blobURL = fileReaderInstance.result as string; const base64Blob = blobURL.split(/,(.*)/s)[1]; const decodedArrayBuffer = base64ToArrayBuffer(base64Blob); resolve(decodedArrayBuffer); }; } catch (error) { reject(new Error('unable to convert blob to arrayBuffer: ' + error)); } }); }; export const base64ToArrayBuffer = (base64: string): Uint8Array => { const binaryString: string = decode(base64); return Uint8Array.from(binaryString, c => c.charCodeAt(0)); }; export const gzipDecompressToString = async ( data: Uint8Array, ): Promise => { return new Promise((resolve, reject) => { try { const result: string = ungzip(data, { to: 'string' }); resolve(result); } catch (error) { reject(new Error('unable to decompress' + error)); } }); };