UNPKG

filesrocket

Version:

Filesrocket is a Node.js package that takes care of the file management of any cloud storage service (Local, Cloudinary, Amazon S3)

144 lines (143 loc) 3.62 kB
/// <reference types="node" /> export declare type Query = Record<string, any>; export interface Pagination { /** * Represents the number of entities that can be obtained * by default in a request. */ default: number; /** * Represents the maximum number of entities that can be * listed in a request. */ max: number; } export interface Params extends Query { /** * Specifies the directory where you want to get the entities. */ path: string; /** * Specifies the number of entities to get. */ size: number; /** * This property is useful when paginating the results, it * specifies the next page of results. */ page: string | number; } export interface Paginated<T> { /** * Represents a list of entities. */ items: T[]; /** * Represents the total of the entities */ total: number; /** * Represents the number of entities obtained in the request. */ size: number; /** * Represents the current page. */ page: string | number | undefined; /** * Represents if there are more pages to display, keep in mind * that this property will only be present when there are more * entities to return. */ nextPageToken?: string | number; /** * Represents the previous page. */ prevPageToken?: string | number; } export interface InputEntity { name: string; /** * Represent a Readable of Node.js. For more information visit: * https://nodejs.org/api/stream.html#readable-streams */ stream: NodeJS.ReadableStream; fieldname: string; encoding: string; mimetype: string; } export interface OutputEntity extends Query { /** * Identifier entity. */ id: string; /** * Name of the entity. */ name: string; /** * Entity size in bytes. */ size: number; /** * Entity extension. */ ext: string; /** * Url of the entity. */ url: string; /** * Parent directory of the entity. */ dir: string; /** * Date of creation of the entity. */ createdAt: Date; /** * Date of last update of the entity. */ updatedAt: Date; } export interface UploadOptions { highWaterMark: number | undefined; fileHwm: number | undefined; defCharset: string | undefined; preservePath: boolean | undefined; limits: { fieldNameSize?: number | undefined; fieldSize?: number | undefined; fields?: number | undefined; fileSize?: number | undefined; files?: number | undefined; parts?: number | undefined; headerPairs?: number | undefined; } | undefined; extnames: string[]; } export interface ServiceMethods<T = Partial<InputEntity>> { /** * Create a new entity. * @param data Data. * @param query Query. */ create(data: T, query?: Query): Promise<OutputEntity>; /** * Get a list of entities. * @param query Query. */ list(query?: Query): Promise<Paginated<OutputEntity> | OutputEntity[]>; /** * Get an entity. * @param id Identifier. * @param query Query. */ get(id: string, query?: Query): Promise<OutputEntity>; /** * Remove a entity. * @param id Identifier. * @param query Query. */ remove(id: string, query?: Query): Promise<OutputEntity>; }