@ayonli/jsext
Version:
A JavaScript extension package for building strong and modern applications.
172 lines (171 loc) • 5.78 kB
TypeScript
/// <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>;