UNPKG

file-box

Version:

Pack a File into Box for easy move/transfer between servers no matter of where it is.(local path, remote url, or cloud storage)

100 lines 2.78 kB
/// <reference types="node" /> import type http from 'http'; import type { Readable, Writable } from 'stream'; import type { FileBox } from './file-box.js'; interface Pipeable { pipe<T extends Writable>(destination: T, options?: { end?: boolean; }): T; } /** * Huan(202002): * We need to keep this enum number to be consistent * because of toJSON & fromJSON need the same type number across versoins. * and gRPC maybe will use those numbers in the future as well. */ declare enum FileBoxType { Unknown = 0, /** * 1. toJSON() Serializable * - Base64 * - Url * - QRCode * - UUID * * 2. toJSON() NOT Serializable: need to convert to FileBoxType.Base64 before call toJSON() * - Buffer * - Stream * - File */ Base64 = 1, Url = 2, QRCode = 3, Buffer = 4, File = 5, Stream = 6, Uuid = 7 } interface Metadata { [key: string]: any; } /** * URI to the file * See: * https://nodejs.org/api/fs.html#fs_url_object_support * https://danielmiessler.com/study/url-uri/ * * FileType: LOCAL, REMOTE, BUFFER, STREAM * */ interface FileBoxOptionsCommon { /** * File base name: name + ext * like: "file.txt" */ name: string; /** * Can be only set once */ metadata?: Metadata; /** * Size */ size?: number; } interface FileBoxOptionsFile { type: FileBoxType.File; path: string; } interface FileBoxOptionsUrl { type: FileBoxType.Url; url: string; headers?: http.OutgoingHttpHeaders; } interface FileBoxOptionsBuffer { type: FileBoxType.Buffer; buffer: Buffer; } interface FileBoxOptionsStream { type: FileBoxType.Stream; stream: Readable; } interface FileBoxOptionsQRCode { type: FileBoxType.QRCode; qrCode: string; } interface FileBoxOptionsBase64 { type: FileBoxType.Base64; base64: string; } interface FileBoxOptionsUuid { type: FileBoxType.Uuid; uuid: string; } declare type FileBoxOptions = FileBoxOptionsCommon & (never | FileBoxOptionsBase64 | FileBoxOptionsBuffer | FileBoxOptionsFile | FileBoxOptionsQRCode | FileBoxOptionsStream | FileBoxOptionsUrl | FileBoxOptionsUuid); declare type FileBoxJsonObject = FileBoxOptionsCommon & (FileBoxOptionsBase64 | FileBoxOptionsUrl | FileBoxOptionsQRCode | FileBoxOptionsUuid); declare type UuidLoader = (this: FileBox, uuid: string) => Promise<Readable>; declare type UuidSaver = (this: FileBox, stream: Readable) => Promise<string>; export type { FileBoxJsonObject, FileBoxOptions, FileBoxOptionsBase64, FileBoxOptionsCommon, FileBoxOptionsQRCode, FileBoxOptionsUrl, FileBoxOptionsUuid, Metadata, Pipeable, UuidSaver, UuidLoader, }; export { FileBoxType, }; //# sourceMappingURL=file-box.type.d.ts.map