UNPKG

@ayonli/jsext

Version:

A JavaScript extension package for building strong and modern applications.

172 lines (171 loc) 5.78 kB
/// <reference types="mocha" /> /// <reference types="node" /> import { toAsyncIterable, resolveByteStream } from "./reader/util.ts"; export { toAsyncIterable, resolveByteStream }; /** * Wraps a source as a `ReadableStream` object that can be used to process streaming data. * This function is similar to {@link toAsyncIterable}, except it returns a `ReadableStream` * object. */ export declare function toReadableStream<T>(iterable: AsyncIterable<T> | Iterable<T>): ReadableStream<T>; export declare function toReadableStream<T>(iterable: ReadableStream<T> | Promise<ReadableStream<T>>): ReadableStream<T>; export declare function toReadableStream(es: EventSource, options?: { event?: string; }): ReadableStream<string>; export declare function toReadableStream<T extends Uint8Array | string>(ws: WebSocket): ReadableStream<T>; export declare function toReadableStream<T>(target: EventTarget, eventMap?: { message?: string; error?: string; close?: string; }): ReadableStream<T>; export declare function toReadableStream<T>(target: NodeJS.EventEmitter, eventMap?: { data?: string; error?: string; close?: string; }): ReadableStream<T>; /** * Reads all data from the iterable object or readable stream to an array. * * @example * ```ts * import { readAsArray } from "@ayonli/jsext/reader"; * import * as fs from "node:fs"; * * const file = fs.createReadStream("./package.json"); * const chunks = await readAsArray(file); * * console.log(chunks); * ``` */ export declare function readAsArray<T>(source: AsyncIterable<T> | ReadableStream<T>): Promise<T[]>; /** * Reads all data from the given source to an `ArrayBuffer`. * * @example * ```ts * import { readAsArrayBuffer } from "@ayonli/jsext/reader"; * import { createReadableStream } from "@ayonli/jsext/fs"; * * const stream = createReadableStream("./package.json"); * const buffer = await readAsArrayBuffer(stream); * ``` */ export declare function readAsArrayBuffer(source: Blob | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>): Promise<ArrayBuffer>; /** * Reads all data from the given source to a `Blob`. * * @example * ```ts * import { readAsBlob } from "@ayonli/jsext/reader"; * import { createReadableStream } from "@ayonli/jsext/fs"; * * const stream = createReadableStream("./package.json"); * const blob = await readAsBlob(stream, "application/json"); * ``` */ export declare function readAsBlob(source: ArrayBuffer | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, type: string): Promise<Blob>; /** * Reads all data from the given source to a data URL. * * @example * ```ts * import { readAsDataURL } from "@ayonli/jsext/reader"; * * const file = new File(["Hello, World!"], "hello.txt", { type: "text/plain" }); * const dataURL = await readAsDataURL(file, file.type); * * console.log(dataURL); // data:text/plain;base64,SGVsbG8sIFdvcmxkIQ== * ``` */ export declare function readAsDataURL(source: Blob | ArrayBuffer | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, type: string): Promise<string>; /** * Reads all data from the given source to an object URL. * * @example * ```ts * import { readAsObjectURL } from "@ayonli/jsext/reader"; * * const file = new File(["Hello, World!"], "hello.txt", { type: "text/plain" }); * const objectURL = await readAsObjectURL(file, file.type); * * console.log(objectURL); // e.g. blob:http://localhost:8080/7b8e7b7d-7b7d-7b7d-7b7d-7b7d7b7d7b7d * ``` */ export declare function readAsObjectURL(source: Blob | ArrayBuffer | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, type: string): Promise<string>; /** * Reads all data from the given source to a string. * * @example * ```ts * import { readAsText } from "@ayonli/jsext/reader"; * import { createReadableStream } from "@ayonli/jsext/fs"; * * const stream = createReadableStream("./package.json"); * const text = await readAsText(stream); * ``` */ export declare function readAsText(source: Blob | ArrayBuffer | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>, encoding?: string | undefined): Promise<string>; /** * Reads all data from the given source to a JSON object. * * @example * ```ts * import { readAsJSON } from "@ayonli/jsext/reader"; * import { createReadableStream } from "@ayonli/jsext/fs"; * * const stream = createReadableStream("./package.json"); * const pkg = await readAsJSON(stream); * ``` */ export declare function readAsJSON<T>(source: Blob | ArrayBuffer | ArrayBufferView | AsyncIterable<Uint8Array> | ReadableStream<Uint8Array>): Promise<T>; /** * Concatenates multiple readable streams into a single one. * * @example * ```ts * import { concat } from "@ayonli/jsext/read"; * * const res1 = await fetch("https://example.com/data1"); * const res2 = await fetch("https://example.com/data2"); * * const mergedStream = concat(res1.body!, res2.body!); * ``` */ export declare function concat<T>(...sources: ReadableStream<T>[]): ReadableStream<T>; /** * Concatenates multiple async iterable objects into a single one. * * @example * ```ts * import { concat } from "@ayonli/jsext/read"; * import { sleep } from "@ayonli/jsext/async"; * * async function* gen1() { * yield 1; * await sleep(100); * yield 2; * await sleep(100); * yield 3; * } * * async function* gen2() { * yield 4; * await sleep(100); * yield 5; * } * * const iter1 = gen1(); * const iter2 = gen2(); * * for await (const value of concat(iter1, iter2)) { * console.log(value); * } * // output: * // 1 * // 2 * // 3 * // 4 * // 5 * ``` */ export declare function concat<T>(...sources: AsyncIterable<T>[]): AsyncIterable<T>;