1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import {getStreamContents} from './contents.js';
- import {
- identity,
- getContentsProperty,
- throwObjectStream,
- getLengthProperty,
- } from './utils.js';
- export async function getStreamAsString(stream, options) {
- return getStreamContents(stream, stringMethods, options);
- }
- const initString = () => ({contents: '', textDecoder: new TextDecoder()});
- const useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});
- const addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;
- const truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);
- const getFinalStringChunk = ({textDecoder}) => {
- const finalChunk = textDecoder.decode();
- return finalChunk === '' ? undefined : finalChunk;
- };
- const stringMethods = {
- init: initString,
- convertChunk: {
- string: identity,
- buffer: useTextDecoder,
- arrayBuffer: useTextDecoder,
- dataView: useTextDecoder,
- typedArray: useTextDecoder,
- others: throwObjectStream,
- },
- getSize: getLengthProperty,
- truncateChunk: truncateStringChunk,
- addChunk: addStringChunk,
- getFinalChunk: getFinalStringChunk,
- finalize: getContentsProperty,
- };
|