import { DocumentData, UpdateData } from '@alipay/faas-db-builder'; export interface CallbackParam { success?: (res: T) => any; fail?: (e: V) => any; complete?: (e: T | V) => any; } export interface FunctionCall { (param: Param): Promise; (param: Param & CallbackParam): void; } export interface CallFunctionFailResponse { errCode: number; errMsg: string; errDetail?: string; } export interface CommonCallResponse { code: number; message: string; data: T; } export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'; export type ResponseDataType = 'text' | 'json' | 'arrayBuffer' | 'blob' | 'formData' | 'readableStream'; export interface HttpRequestOptions { method: HttpMethod; path: string; data?: any; headers?: Record; responseDataType?: ResponseDataType; timeout?: number; } export interface HttpResponse { status: number; requestID: string; headers: Record; data: T; } export interface Httpclient { request(options: HttpRequestOptions): Promise>; } export interface CreateOptions { httpclient: Httpclient; type: 'web' | 'miniprogram' | 'function'; } export interface CreateDatabaseOptions extends CreateOptions { databaseName?: string; throwOnNotFound?: boolean; } export interface CallFunctionResult { requestID: string; result?: T; headers: Record; } export interface CallFunctionParam { name: string; async?: boolean; data?: object | string | number | boolean; resultDataType?: ResponseDataType; headers?: Record; timeout?: number; } export type CallFunction = FunctionCall>; export interface CallContainerResult { data: T; statusCode: number; header: Record; } export interface CallContainerParam { path: string; method?: string; header?: Record; data?: string | object; timeout?: number; dataType?: 'json' | 'text'; } export type CallContainer = FunctionCall>; export interface AddDocumentParam { data: DocumentData; } export interface AddDocumentResult { _id: string; } export type AddDocumentParamWithCallback = AddDocumentParam & CallbackParam; export interface CountDocumentResult { total: number; } export interface DeleteDocumentResult { count: number; } export interface UpdateDocumentResult { count: number; } export interface UpdateAndReturnDocumentResult { updated: 0 | 1; doc: T; } export type UpdateDataParamWithCallback = UpdateData & CallbackParam; export type UpdateAndReturnParamWithCallback = UpdateData & CallbackParam>; export interface FileUploaderUploadParam { uploadURL: string; fileID: string; fileContent: T; } export interface FileUploaderDownloadParam { fileID: string; downloadURL: string; } export interface FileUploaderResult { statusCode: number; } export interface FileUploader { upload(param: FileUploaderUploadParam): Promise; download(param: FileUploaderDownloadParam): Promise; } export interface CreateStorageOptions extends CreateOptions { fileUploader: FileUploader; toEnvId: string; } export interface FileInfo { fileID: string; status: number; errMsg: string; } export interface TempFileInfo extends FileInfo { tempFileURL: string; } export interface GetUploadFileURLParam { cloudPath: string; } export interface GetUploadFileURLResult { fileID: string; uploadURL: string; requestID: string; } export interface UploadFileParam { cloudPath: string; fileContent: T; } export interface UploadFileResult { fileID: string; statusCode: number; } export interface DownloadFileParam { fileID: string; } export interface DownloadFileResult { statusCode: number; } export interface DeleteFileParam { fileList: string[]; } export interface DeleteFileResult { fileList: FileInfo[]; } export interface GetTempFileURLParam { fileList: string[]; } export interface GetTempFileURLResult { fileList: TempFileInfo[]; } export interface GetUploadUrlResult { file_id: string; upload_url: string; } export interface GetDownloadURLResult { download_url: string; }