python-archieve-projects/WechatBot/node_modules/file-box/dist/cjs/src/file-box.d.ts

206 lines
5.8 KiB
TypeScript

/**
* File Box
* https://github.com/huan/file-box
*
* 2018 Huan LI <zixia@zixia.net>
*/
/// <reference types="node" />
import type * as HTTP from 'http';
import { Readable, Writable } from 'stream';
import { FileBoxJsonObject, FileBoxOptions, FileBoxType, Metadata, Pipeable, UuidLoader, UuidSaver } from './file-box.type.js';
import type { FileBoxInterface } from './interface.js';
declare class FileBox implements Pipeable, FileBoxInterface {
/**
*
* Static Properties
*
*/
static readonly version: string;
/**
* Symbol.hasInstance: instanceof
*
* @link https://www.keithcirkel.co.uk/metaprogramming-in-es6-symbols/
*/
static [Symbol.hasInstance](lho: any): lho is FileBoxInterface;
/**
* Check if obj satisfy FileBox interface
*/
static valid(target: any): target is FileBoxInterface;
/**
* Check if obj satisfy FileBox interface
*/
static validInterface(target: any): target is FileBoxInterface;
/**
* loose check instance of FileBox
*/
static validInstance(target: any): target is FileBox;
static fromUrl(url: string, options?: {
headers?: HTTP.OutgoingHttpHeaders;
name?: string;
size?: number;
}): FileBox;
/**
* @deprecated use `fromUrl(url, options)` instead
*/
static fromUrl(url: string, name?: string, headers?: HTTP.OutgoingHttpHeaders): FileBox;
/**
* Alias for `FileBox.fromFile()`
*
* @alias fromFile
*/
static fromFile(path: string, name?: string): FileBox;
/**
* TODO: add `FileBoxStreamOptions` with `size` support (@huan, 202111)
*/
static fromStream(stream: Readable, name?: string): FileBox;
static fromBuffer(buffer: Buffer, name?: string): FileBox;
/**
* @param base64
* @param name the file name of the base64 data
*/
static fromBase64(base64: string, name?: string): FileBox;
/**
* dataURL: `data:image/png;base64,${base64Text}`,
*/
static fromDataURL(dataUrl: string, name?: string): FileBox;
/**
*
* @param qrCode the value of the QR Code. For example: `https://github.com`
*/
static fromQRCode(qrCode: string): FileBox;
protected static uuidToStream?: UuidLoader;
protected static uuidFromStream?: UuidSaver;
static fromUuid(uuid: string, options?: {
name?: string;
size?: number;
}): FileBox;
/**
* @deprecated use `fromUuid(name, options)` instead
*/
static fromUuid(uuid: string, name?: string): FileBox;
/**
* @deprecated use `setUuidLoader()` instead
*/
static setUuidResolver(loader: any): void;
static setUuidLoader(loader: UuidLoader): void;
/**
* @deprecated use `setUuidSaver()` instead
*/
static setUuidRegister(): void;
static setUuidSaver(saver: UuidSaver): void;
/**
*
* @static
* @param {(FileBoxJsonObject | string)} obj
* @returns {FileBox}
*/
static fromJSON(obj: FileBoxJsonObject | string): FileBox;
/**
*
* Instance Properties
*
*/
readonly version: string;
/**
* We are using a getter for `type` is because
* getter name can be enumurated by the `Object.hasOwnProperties()`*
* but property name can not.
*
* * required by `validInterface()`
*/
readonly _type: FileBoxType;
get type(): FileBoxType;
/**
* the Content-Length of the file
* `SIZE_UNKNOWN(-1)` means unknown
*
* @example
* ```ts
* const fileBox = FileBox.fromUrl('http://example.com/image.png')
* await fileBox.ready()
* console.log(fileBox.size)
* // > 102400 <- this is the size of the remote image.png
* ```
*/
_size?: number;
get size(): number;
/**
*
/**
* @deprecated: use `mediaType` instead. will be removed after Dec 31, 2022
*/
mimeType: string;
/**
* (Internet) Media Type is the proper technical term of `MIME Type`
* @see https://stackoverflow.com/a/9277778/1123955
*
* @example 'text/plain'
*/
protected _mediaType?: string;
get mediaType(): string;
protected _name: string;
get name(): string;
protected _metadata?: Metadata;
get metadata(): Metadata;
set metadata(data: Metadata);
/**
* Lazy load data: (can be serialized to JSON)
* Do not read file to Buffer until there's a consumer.
*/
private readonly base64?;
private readonly remoteUrl?;
private readonly qrCode?;
private readonly uuid?;
/**
* Can not be serialized to JSON
*/
private readonly buffer?;
private readonly localPath?;
private readonly stream?;
private readonly headers?;
constructor(options: FileBoxOptions);
ready(): Promise<void>;
/**
* @todo use http.get/gets instead of Request
*/
protected _syncUrlMetadata(): Promise<void>;
/**
*
* toXXX methods
*
*/
toString(): string;
toJSON(): FileBoxJsonObject;
toStream(): Promise<Readable>;
/**
* https://stackoverflow.com/a/16044400/1123955
*/
private _transformBufferToStream;
private _transformBase64ToStream;
private _transformFileToStream;
private _transformUrlToStream;
private _transformQRCodeToStream;
/**
* save file
*
* @param filePath save file
*/
toFile(filePath?: string, overwrite?: boolean): Promise<void>;
toBase64(): Promise<string>;
/**
* dataUrl: `data:image/png;base64,${base64Text}',
*/
toDataURL(): Promise<string>;
toBuffer(): Promise<Buffer>;
toQRCode(): Promise<string>;
toUuid(): Promise<string>;
/**
*
* toXXX methods END
*
*/
pipe<T extends Writable>(destination: T): T;
}
export { FileBox, };
//# sourceMappingURL=file-box.d.ts.map