@cloudbase/js-sdk 3.4.7-beta.0 → 3.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/ai/dist/index.esm.js +1 -1
- package/ai/dist/index.esm.js.map +1 -1
- package/apis/dist/index.esm.js +1 -1
- package/apis/dist/index.esm.js.map +1 -1
- package/app/dist/index.esm.js +1 -1
- package/app/dist/index.esm.js.map +1 -1
- package/auth/dist/index.esm.js +1 -1
- package/auth/dist/index.esm.js.map +1 -1
- package/auth/dist/index.js +1 -1
- package/auth/dist/index.js.map +1 -1
- package/cloudrun/dist/index.esm.js +1 -1
- package/cloudrun/dist/index.esm.js.map +1 -1
- package/container/dist/index.esm.js +1 -1
- package/container/dist/index.esm.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/functions/dist/index.esm.js +1 -1
- package/functions/dist/index.esm.js.map +1 -1
- package/miniprogram_dist/auth.js +1 -1
- package/miniprogram_dist/index.js +1 -1
- package/model/dist/index.esm.js +1 -1
- package/model/dist/index.esm.js.map +1 -1
- package/mysql/dist/index.esm.js +1 -1
- package/mysql/dist/index.esm.js.map +1 -1
- package/oauth/dist/index.esm.js +1 -1
- package/oauth/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/realtime/dist/index.esm.js +1 -1
- package/realtime/dist/index.esm.js.map +1 -1
- package/storage/dist/index.esm.js +1 -1
- package/storage/dist/index.esm.js.map +1 -1
- package/types/package.json +1 -1
- package/utilities/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","mappings":"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","sources":["webpack://@cloudbase/js-sdk/index.ts","webpack://@cloudbase/js-sdk/errors.ts","webpack://@cloudbase/js-sdk/web.ts","webpack://@cloudbase/js-sdk/common.ts","webpack://@cloudbase/js-sdk/decorators.ts","webpack://@cloudbase/js-sdk/abortController.ts","webpack://@cloudbase/js-sdk/cache.ts","webpack://@cloudbase/js-sdk/events.ts","webpack://@cloudbase/js-sdk/langEvent.ts","webpack://@cloudbase/js-sdk/util.ts","webpack://@cloudbase/js-sdk/./empty-module.js","webpack://@cloudbase/js-sdk/external module \"@cloudbase/adapter-interface\"","webpack://@cloudbase/js-sdk/external module \"jwt-decode\"","webpack://@cloudbase/js-sdk/webpack/bootstrap"],"sourcesContent":["import { ICloudbase } from '@cloudbase/types'\nimport { ICloudbaseComponent } from '@cloudbase/types/component'\nimport { Camelize, FileBody, FileObject, FileObjectV2, FileOptions, TransformOptions } from './supabase/types'\nimport { isStorageError, StorageError } from './supabase/errors'\nimport { constants, utils, helpers } from '@cloudbase/utilities'\nimport {\n ICloudbaseFileMetaDataRes,\n ICloudbaseFileInfo,\n ICloudbaseUploadFileParams,\n ICloudbaseUploadFileResult,\n ICloudbaseGetUploadMetadataParams,\n ICloudbaseDeleteFileParams,\n ICloudbaseDeleteFileResult,\n ICloudbaseGetTempFileURLResult,\n ICloudbaseGetTempFileURLParams,\n ICloudbaseDownloadFileResult,\n ICloudbaseDownloadFileParams,\n ICloudbaseCopyFileParams,\n ICloudbaseCopyFileResult,\n} from '@cloudbase/types/storage'\n\nenum EUploadMethod {\n put = 'put',\n post = 'post',\n}\n\ninterface IUploadMetadata {\n url: string\n token: string\n authorization: string\n fileId: string\n cosFileId: string\n download_url?: string\n}\n\nconst { getSdkName, ERRORS, COMMUNITY_SITE_URL } = constants\nconst { isArray, isString, isPalinObject, execCallback } = utils\n/** catchErrorsDecorator 装饰器要放在index入口文件,意面有的编译找不到其sourcemap,例如HBuilderX */\nconst { catchErrorsDecorator } = helpers\n\nexport const COMPONENT_NAME = 'storage'\n\nconst storageGateWay = {\n getUploadInfo: async (\n request,\n params: { path: string; headers?: Record<string, string> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'get-objects-upload-info',\n data: [\n {\n objectId: params.path,\n ...(params.headers ? { signedHeader: Object.keys(params.headers).reduce((res, v) => ({ ...res, [v]: [params.headers[v]] }), {}) } : {}),\n },\n ],\n },\n customReqOpts,\n )\n const data = res.data?.[0] || {}\n\n res = {\n ...res,\n data: {\n ...(data.code ? { ...data } : {}),\n authorization: data.authorization,\n token: data.token,\n url: data.uploadUrl,\n fileId: data.cloudObjectId,\n cosFileId: data.cloudObjectMeta,\n download_url: data.downloadUrl,\n },\n }\n\n return res\n },\n getDownLoadInfo: async (\n request,\n params: { convertedFileList: Array<{ fileid: string }> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'get-objects-download-info',\n data: params.convertedFileList.map((v: any) => ({ cloudObjectId: v.fileid })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n download_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n message: v.message,\n fileid: v.cloudObjectId,\n download_url: v.downloadUrl,\n fileID: v.cloudObjectId,\n tempFileURL: v.downloadUrl,\n })),\n },\n }\n\n return res\n },\n delete: async (\n request,\n params: { fileList: Array<string> },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'delete-objects',\n data: params.fileList.map(v => ({ cloudObjectId: v })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n delete_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n fileID: v.cloudObjectId,\n message: v.message,\n })),\n },\n }\n\n return res\n },\n copyFile: async (\n request,\n params: {\n convertedFileList: Array<{ src_path: string; dst_path: string; overwrite: boolean; remove_original: boolean }>\n },\n customReqOpts: ICloudbaseUploadFileParams['customReqOpts'],\n ) => {\n let res = await request.gateWay(\n {\n path: 'storages',\n name: 'copy-objects',\n data: params.convertedFileList.map((v: any) => ({\n srcPath: v.src_path,\n dstPath: v.dst_path,\n overwrite: v.overwrite,\n removeOriginal: v.remove_original,\n })),\n },\n customReqOpts,\n )\n res = {\n ...res,\n data: {\n copy_list: res.data?.map(v => ({\n code: v.code || 'SUCCESS',\n fileID: v.cloudObjectId,\n message: v.message,\n })),\n },\n }\n\n return res\n },\n}\n\nexport interface ICloudbaseContext {\n config: any\n request: any\n}\n\nexport class CloudbaseStorage {\n public isGateWay() {\n // @ts-ignore\n const { config } = this\n const endPointMode = config.endPointMode || 'CLOUD_API'\n\n return endPointMode === 'GATEWAY'\n }\n\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'uploadFile',\n },\n title: '上传文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 uploadFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async uploadFile(\n params: Omit<ICloudbaseUploadFileParams, 'filePath'> & { filePath?: string },\n callback?: Function,\n ): Promise<ICloudbaseUploadFileResult> {\n const { cloudPath, filePath, onUploadProgress, method = 'put', headers = {}, fileContent } = params\n if (!isString(cloudPath) || (!filePath && !fileContent)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.uploadFile] invalid params`,\n }),)\n }\n const uploadMethod = { put: EUploadMethod.put, post: EUploadMethod.post }[method.toLocaleLowerCase()] || EUploadMethod.put\n\n // 调用 getUploadMetadata 获取上传元数据\n const metadataResult = await this.getUploadMetadata({\n cloudPath,\n method: uploadMethod,\n headers: uploadMethod === EUploadMethod.put ? headers : undefined,\n customReqOpts: params.customReqOpts,\n })\n\n const { data: metadata, requestId } = metadataResult\n const { url, authorization, token, fileId, cosFileId, download_url: downloadUrl } = metadata\n\n const commonParams = {\n url,\n file: filePath,\n name: cloudPath,\n onUploadProgress,\n fileContent,\n fileId,\n requestId,\n }\n\n const putParams = {\n ...commonParams,\n method: EUploadMethod.put,\n headers: {\n ...headers,\n authorization,\n 'x-cos-meta-fileid': cosFileId,\n 'x-cos-security-token': token,\n },\n }\n\n const postParams = {\n ...commonParams,\n method: EUploadMethod.post,\n data: {\n key: cloudPath,\n signature: authorization,\n 'x-cos-meta-fileid': cosFileId,\n success_action_status: '201',\n 'x-cos-security-token': token,\n },\n }\n\n const uploadConfig = {\n [EUploadMethod.put]: {\n params: putParams,\n isSuccess: (code: number) => code >= 200 && code < 300,\n },\n [EUploadMethod.post]: {\n params: postParams,\n isSuccess: (code: number) => code === 201,\n },\n }\n\n // @ts-ignore\n const res = await this.request.upload(uploadConfig[uploadMethod].params)\n\n if (uploadConfig[uploadMethod].isSuccess(res.statusCode)) {\n return execCallback(callback, null, {\n fileID: fileId,\n download_url: downloadUrl,\n requestId,\n })\n }\n return execCallback(\n callback,\n new Error(`[${getSdkName()}][${ERRORS.OPERATION_FAIL}][${COMPONENT_NAME}]:${res.data}`),\n )\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'getUploadMetadata',\n },\n title: '获取上传元信息失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 getUploadMetadata() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getUploadMetadata(\n params: ICloudbaseGetUploadMetadataParams & {\n method?: EUploadMethod\n headers?: Record<string, string>\n },\n callback?: Function,\n ): Promise<{ data: IUploadMetadata; requestId: string }> {\n const { cloudPath, method, headers } = params\n if (!isString(cloudPath)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getUploadMetadata] invalid cloudPath`,\n }),)\n }\n // @ts-ignore\n const { request } = this\n const action = 'storage.getUploadMetadata'\n\n try {\n let metaData: ICloudbaseFileMetaDataRes\n\n const metaDataParam: {\n path: string\n method?: EUploadMethod\n headers?: Record<string, string>\n } = { path: cloudPath }\n\n if (method) {\n metaDataParam.method = method\n }\n if (method === EUploadMethod.put && headers) {\n metaDataParam.headers = headers\n }\n\n if (this.isGateWay()) {\n metaData = await storageGateWay.getUploadInfo(request, metaDataParam, params.customReqOpts)\n } else {\n metaData = await request.send(action, metaDataParam, params.customReqOpts)\n }\n return execCallback(callback, null, metaData)\n } catch (err) {\n return execCallback(callback, err)\n }\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'deleteFile',\n },\n title: '删除文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 deleteFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async deleteFile(\n params: ICloudbaseDeleteFileParams,\n callback?: Function,\n ): Promise<ICloudbaseDeleteFileResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.deleteFile] fileList must not be empty`,\n }),)\n }\n\n for (const fileId of fileList) {\n if (!fileId || !isString(fileId)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.deleteFile] fileID must be string`,\n }),)\n }\n }\n\n const action = 'storage.batchDeleteFile'\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.delete(request, { fileList }, params.customReqOpts)\n } else {\n res = await request.send(\n action,\n {\n fileid_list: fileList,\n },\n params.customReqOpts,\n )\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n const data = {\n fileList: res.data.delete_list,\n requestId: res.requestId,\n }\n return execCallback(callback, null, data)\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'getTempFileURL',\n },\n title: '获取文件下载链接',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 getTempFileURL() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async getTempFileURL(\n params: ICloudbaseGetTempFileURLParams,\n callback?: Function,\n ): Promise<ICloudbaseGetTempFileURLResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] fileList must not be empty`,\n }),)\n }\n\n const convertedFileList = []\n for (const file of fileList) {\n if (isPalinObject(file)) {\n if (!Object.prototype.hasOwnProperty.call(file, 'fileID')) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] file info must include fileID`,\n }),)\n }\n\n convertedFileList.push({\n fileid: (file as ICloudbaseFileInfo).fileID,\n max_age: (file as ICloudbaseFileInfo).maxAge || 7200,\n })\n } else if (isString(file)) {\n convertedFileList.push({\n fileid: file,\n })\n } else {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] invalid fileList`,\n }),)\n }\n }\n\n const action = 'storage.batchGetDownloadUrl'\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.getDownLoadInfo(request, { convertedFileList }, params.customReqOpts)\n } else {\n res = await request.send(action, { file_list: convertedFileList }, params.customReqOpts)\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n\n return execCallback(callback, null, {\n fileList: res.data.download_list,\n requestId: res.requestId,\n })\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'downloadFile',\n },\n title: '下载文件失败',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 downloadFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async downloadFile(\n params: ICloudbaseDownloadFileParams,\n callback?: Function,\n ): Promise<ICloudbaseDownloadFileResult> {\n const { fileID } = params\n if (!isString(fileID)) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.getTempFileURL] fileID must be string`,\n }),)\n }\n\n const tmpUrlRes = await this.getTempFileURL.call(this, {\n fileList: [\n {\n fileID,\n maxAge: 600,\n },\n ],\n customReqOpts: params.customReqOpts,\n })\n\n const res = tmpUrlRes.fileList[0]\n\n if (res.code !== 'SUCCESS') {\n return execCallback(callback, res)\n }\n // @ts-ignore\n const { request } = this\n\n const tmpUrl = encodeURI(res.download_url)\n\n const result = await request.download({ url: tmpUrl, tempFilePath: params.tempFilePath })\n return execCallback(callback, null, result)\n }\n @catchErrorsDecorator({\n customInfo: {\n className: 'Cloudbase',\n methodName: 'copyFile',\n },\n title: '批量复制文件',\n messages: [\n '请确认以下各项:',\n ' 1 - 调用 copyFile() 的语法或参数是否正确',\n ' 2 - 当前域名是否在安全域名列表中:https://console.cloud.tencent.com/tcb/env/safety',\n ' 3 - 云存储安全规则是否限制了当前登录状态访问',\n `如果问题依然存在,建议到官方问答社区提问或寻找帮助:${COMMUNITY_SITE_URL}`,\n ],\n })\n public async copyFile(params: ICloudbaseCopyFileParams, callback?: Function): Promise<ICloudbaseCopyFileResult> {\n const { fileList } = params\n\n if (!fileList || !isArray(fileList) || fileList.length === 0) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] fileList must not be empty`,\n }),)\n }\n\n const convertedFileList = []\n\n for (const file of fileList) {\n const { srcPath, dstPath } = file\n if (!srcPath || !dstPath || typeof srcPath !== 'string' || typeof dstPath !== 'string') {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath may not be empty`,\n }),)\n }\n if (srcPath === dstPath) {\n throw new Error(JSON.stringify({\n code: ERRORS.INVALID_PARAMS,\n msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath can not be the same`,\n }),)\n }\n // if (basename(srcPath) !== basename(dstPath)) {\n // throw new Error(JSON.stringify({\n // code: ERRORS.INVALID_PARAMS,\n // msg: `[${COMPONENT_NAME}.copyFile] srcPath and dstPath file name must be the same`,\n // }),)\n // }\n convertedFileList.push({\n src_path: srcPath,\n dst_path: dstPath,\n overwrite: file.overwrite,\n remove_original: file.removeOriginal,\n })\n }\n\n // @ts-ignore\n const { request } = this\n let res: any = {}\n\n if (this.isGateWay()) {\n res = await storageGateWay.copyFile(request, { convertedFileList }, params.customReqOpts)\n } else {\n const action = 'storage.batchCopyFile'\n res = await request.send(action, { file_list: convertedFileList }, params.customReqOpts)\n }\n\n if (res.code) {\n return execCallback(callback, null, res)\n }\n\n return execCallback(callback, null, {\n fileList: res.data.copy_list,\n requestId: res.requestId,\n })\n }\n\n public async getFileInfo(params: ICloudbaseGetTempFileURLParams): Promise<{\n fileList: (Pick<ICloudbaseGetTempFileURLResult['fileList'][0], 'code' | 'fileID' | 'tempFileURL' | 'message'> & {\n fileName?: string\n cloudId?: ICloudbaseGetTempFileURLResult['fileList'][0]['fileID']\n contentType?: string\n mime?: string\n size?: number\n cacheControl?: string\n lastModified?: string\n etag?: string\n })[]\n requestId: string\n }> {\n const fileInfo = await this.getTempFileURL(params)\n\n if (fileInfo?.fileList && fileInfo?.fileList?.length > 0) {\n const fileList = await Promise.all(fileInfo.fileList.map(async (item: ICloudbaseGetTempFileURLResult['fileList'][0]) => {\n if (item.code !== 'SUCCESS') {\n return {\n code: item.code,\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: item.message,\n }\n }\n\n try {\n // @ts-ignore\n const { request } = this\n const res = await request.fetch({ url: item.tempFileURL, method: 'HEAD' })\n let { header } = res\n\n if (Headers && header instanceof Headers) {\n header = Object.fromEntries(res.header.entries())\n }\n // eslint-disable-next-line radix\n const fileSize = parseInt(header['content-length']) || 0\n const contentType = header['content-type'] || ''\n\n if ([400, 404].includes(Number(res.statusCode))) {\n return {\n code: 'FILE_NOT_FOUND',\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: 'file not found',\n }\n }\n\n const fileInfo = {\n code: item.code,\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n cloudId: item.fileID,\n fileName: item.fileID.split('/').pop(),\n contentType,\n mime: contentType.split(';')[0].trim(),\n size: fileSize,\n etag: header.etag || '',\n lastModified: header['last-modified'] || '',\n cacheControl: header['cache-control'] || '',\n }\n\n return fileInfo\n } catch (e) {\n return {\n code: 'FETCH_FILE_INFO_ERROR',\n fileID: item.fileID,\n tempFileURL: item.tempFileURL,\n message: e.message,\n }\n }\n }),)\n\n return {\n fileList,\n requestId: fileInfo.requestId,\n }\n }\n\n return {\n fileList: [],\n requestId: fileInfo.requestId,\n }\n }\n}\n\n\ndeclare const cloudbase: ICloudbase\n\nconst storage = new CloudbaseStorage()\nconst component: ICloudbaseComponent = {\n name: COMPONENT_NAME,\n entity: {\n uploadFile: storage.uploadFile,\n deleteFile: storage.deleteFile,\n getTempFileURL: storage.getTempFileURL,\n downloadFile: storage.downloadFile,\n getUploadMetadata: storage.getUploadMetadata,\n copyFile: storage.copyFile,\n getFileInfo: storage.getFileInfo,\n isGateWay: storage.isGateWay,\n },\n}\n\nexport class SupabaseFileAPILikeStorage extends CloudbaseStorage {\n private shouldThrowOnError = false\n private bucketId = ''\n private context: ICloudbaseContext\n\n constructor(context?: ICloudbaseContext) {\n super()\n this.context = context\n }\n\n get config() {\n // @ts-ignore\n return this.context?.config\n }\n\n get request() {\n // @ts-ignore\n return this.context?.request\n }\n\n throwOnError(): this {\n this.shouldThrowOnError = true\n return this\n }\n\n from(bucket?: string) {\n this.bucketId = bucket || ''\n return this\n }\n\n async upload(\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n const options = { upsert: true, ...fileOptions }\n const { cacheControl, contentType, metadata } = options\n try {\n const cloudPath = this._getCloudPath(path)\n const uploadFileParams: Parameters<CloudbaseStorage['uploadFile']>[0] = {\n cloudPath,\n filePath: fileBody as any,\n }\n\n if (cacheControl || contentType || metadata) {\n const headers = {}\n if (cacheControl) {\n headers['cache-control'] = cacheControl\n }\n if (contentType) {\n headers['content-type'] = contentType\n }\n\n if (metadata) {\n headers['x-cos-metadata-metadata'] = this.toBase64(JSON.stringify(metadata))\n }\n\n uploadFileParams.headers = headers\n }\n\n const result = await this.uploadFile(uploadFileParams)\n\n // IUploadFileRes 没有 code 字段,如果没有 fileID 则表示失败\n if (!result.fileID) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${COMPONENT_NAME}.update] no fileID returned`,\n }),)\n }\n\n return {\n data: {\n id: result.fileID,\n path,\n fullPath: path,\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async uploadToSignedUrl(\n path: string,\n _token: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n return this.upload(path, fileBody, fileOptions)\n }\n\n async createSignedUploadUrl(path: string): Promise<\n | {\n data: {\n signedUrl: string\n token: string\n path: string\n // CloudBase 额外的元数据字段\n authorization?: string\n id?: string\n cosFileId?: string\n downloadUrl?: string\n }\n error: null\n }\n | { data: null; error: StorageError }\n > {\n try {\n const cloudPath = this._getCloudPath(path)\n\n const { data: metadata } = await this.getUploadMetadata({ cloudPath })\n\n return {\n data: {\n signedUrl: metadata.url,\n token: metadata.token,\n path,\n // 返回 CloudBase 的额外元数据,供 uploadToSignedUrl 使用\n authorization: metadata.authorization,\n id: metadata.fileId,\n cosFileId: metadata.cosFileId,\n downloadUrl: metadata.download_url,\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n return {\n data: null,\n error: error instanceof StorageError ? error : new StorageError(error.message),\n }\n }\n }\n\n async update(\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions,\n ): Promise<\n { data: { id: string; path: string; fullPath: string }; error: null } | { data: null; error: StorageError }\n > {\n return this.upload(path, fileBody, { ...fileOptions, upsert: true })\n }\n\n async move(\n fromPath: string,\n toPath: string,\n // options?: DestinationOptions,\n ): Promise<{ data: { message: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const result = await this.copyFile({\n fileList: [\n {\n srcPath: this._getCloudPath(fromPath),\n dstPath: this._getCloudPath(toPath),\n overwrite: true,\n removeOriginal: true,\n },\n ],\n })\n\n if (result.fileList[0].code && result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(result.fileList[0].message || 'Move failed')\n }\n\n return {\n data: { message: `File moved from ${fromPath} to ${toPath}` },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async copy(\n fromPath: string,\n toPath: string,\n // options?: DestinationOptions,\n ): Promise<{ data: { path: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const result = await this.copyFile({\n fileList: [\n {\n srcPath: this._getCloudPath(fromPath),\n dstPath: this._getCloudPath(toPath),\n overwrite: true,\n removeOriginal: false,\n },\n ],\n })\n\n if (result.fileList[0].code && result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(result.fileList[0].message || 'Copy failed')\n }\n\n return {\n data: { path: this._getCloudPath(toPath) },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n async createSignedUrl(\n path: string,\n expiresIn: number,\n options?: {\n download?: string | boolean\n transform?: TransformOptions\n },\n ): Promise<{ data: { signedUrl: string }; error: null } | { data: null; error: StorageError }> {\n try {\n const cloudPath = this._normalizeCloudId(path)\n const result = await this.getTempFileURL({\n fileList: [\n {\n fileID: cloudPath,\n maxAge: expiresIn,\n },\n ],\n })\n\n // IGetFileUrlItem 有 code 字段但没有 message 字段\n if (result.fileList[0].code !== 'SUCCESS') {\n throw new StorageError(`Failed to create signed URL: [${result.fileList[0].code}] ${result.fileList[0].fileID}`)\n }\n\n let signedUrl = result.fileList[0].download_url\n\n // 构建查询参数\n const queryParams: string[] = []\n\n // 如果有 download 参数,添加到 URL 中\n if (options?.download !== undefined) {\n if (typeof options.download === 'string') {\n // download 是文件名\n queryParams.push(`download=${encodeURIComponent(options.download)}`)\n } else if (options.download === true) {\n // download 是 true,使用原文件名或默认值\n queryParams.push('download=true')\n }\n }\n\n // 如果有图片转换参数,添加到 URL 中\n if (options?.transform) {\n const transformQuery = this._transformOptsToQueryString(options.transform)\n if (transformQuery) {\n queryParams.push(transformQuery)\n }\n }\n\n // 拼接所有查询参数\n if (queryParams.length > 0) {\n const separator = signedUrl.includes('?') ? '&' : '?'\n signedUrl = `${signedUrl}${separator}${queryParams.join('&')}`\n }\n\n return {\n data: { signedUrl },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async createSignedUrls(\n paths: string[],\n expiresIn: number,\n // options?: {\n // download?: string | boolean\n // },\n ): Promise<\n | { data: Array<{ path: string; signedUrl: string; error: string | null }>; error: null }\n | { data: null; error: StorageError }\n > {\n try {\n const fileList = paths.map(p => ({\n fileID: this._normalizeCloudId(p),\n maxAge: expiresIn,\n }))\n\n const result = await this.getTempFileURL({ fileList })\n\n return {\n data: result.fileList.map((item: any, index: number) => ({\n path: paths[index],\n signedUrl: item.tempFileURL || '',\n error: item.code === 'SUCCESS' ? null : item.message,\n })),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async download(\n path: string,\n options?: TransformOptions,\n ): Promise<{\n data: Blob\n error: StorageError | null\n }> {\n try {\n return {\n data: await (async () => {\n const signedUrlResult = await this.createSignedUrl(path, 600, { transform: options })\n if (signedUrlResult.error) {\n throw signedUrlResult.error\n }\n const tmpUrl = encodeURI(signedUrlResult.data?.signedUrl)\n\n const { data } = await (this as any).request.reqClass.get({\n url: tmpUrl,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n\n if (!data) {\n throw new StorageError('Download failed: no file content')\n }\n\n // 将 Buffer 转换为 Uint8Array 以兼容 Blob\n return new Blob([data])\n })(),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n /**\n * 获取文件信息\n *\n * @param pathOrFileId - 相对路径(如 'images/photo.jpg')或 CloudBase fileID(以 'cloud://' 开头)\n * @returns 文件信息对象\n *\n * @example\n * ```typescript\n * // 使用相对路径\n * const { data } = await bucket.info('images/photo.jpg')\n *\n * // 使用 CloudBase fileID\n * const { data } = await bucket.info('cloud://env-id.xxxx-xxxx/images/photo.jpg')\n * ```\n */\n async info(pathOrFileId: string,): Promise<{ data: Camelize<FileObjectV2>; error: null } | { data: null; error: StorageError }> {\n try {\n // 判断是 fileID 还是相对路径\n const isFileId = pathOrFileId.startsWith('cloud://')\n const displayName = isFileId ? this._extractPathFromFileId(pathOrFileId) : pathOrFileId\n const bucketId = isFileId ? this._extractBucketFromFileId(pathOrFileId) : this.bucketId\n\n const fileInfo = await this.getFileInfo({\n fileList: [this._normalizeCloudId(pathOrFileId)],\n })\n\n const item = fileInfo.fileList[0]\n\n if (item.code !== 'SUCCESS') {\n throw new StorageError(item.message)\n }\n\n const now = new Date().toISOString()\n const lastModified = (item.lastModified ? new Date(item.lastModified) : new Date()).toISOString()\n return {\n data: {\n id: item.fileID,\n version: '1',\n name: displayName,\n bucketId,\n updatedAt: lastModified,\n createdAt: lastModified,\n lastAccessedAt: now,\n size: item.size,\n cacheControl: item.cacheControl,\n contentType: item.contentType,\n etag: item.etag,\n lastModified,\n metadata: {},\n },\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n return {\n data: null,\n error: error instanceof StorageError ? error : new StorageError(error.message),\n }\n }\n }\n\n async exists(pathOrFileId: string): Promise<{ data: boolean; error: null } | { data: null; error: StorageError }> {\n try {\n // 判断是 fileID 还是相对路径\n const fileInfo = await this.getFileInfo({\n fileList: [this._normalizeCloudId(pathOrFileId)],\n })\n\n const item = fileInfo.fileList[0]\n\n if (item.code === 'FILE_NOT_FOUND') {\n return {\n data: false,\n error: null,\n }\n }\n\n if (item.code !== 'SUCCESS') {\n throw new StorageError(item.message)\n }\n\n return { data: true, error: null }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async getPublicUrl(\n path: string,\n options?: {\n download?: string | boolean\n transform?: TransformOptions\n },\n ): Promise<\n | {\n data: { publicUrl: string }\n }\n | { data: null; error: StorageError }\n > {\n const res = await this.createSignedUrl(path, 600, options)\n\n if (res.data) {\n return {\n data: { publicUrl: res.data.signedUrl },\n }\n }\n\n return { data: null, error: res.error as StorageError }\n }\n\n async remove(paths: string[]): Promise<{ data: FileObject[]; error: null } | { data: null; error: StorageError }> {\n try {\n // 分组获取文件信息,每组最多10个\n const chunkSize = 10\n const pathChunks: string[][] = []\n for (let i = 0; i < paths.length; i += chunkSize) {\n pathChunks.push(paths.slice(i, i + chunkSize))\n }\n\n // 并行获取所有分组的文件信息\n const fileInfoResults = await Promise.all(pathChunks.map(chunk => Promise.all(chunk.map(path => this.info(path)))),)\n\n // 合并所有文件信息并构建映射表(path -> fileInfo)\n const fileInfoMap = new Map<string, Camelize<FileObjectV2>>()\n fileInfoResults.flat().forEach((result, index) => {\n if (result.data) {\n fileInfoMap.set(paths[Math.floor(index / chunkSize) * chunkSize + (index % chunkSize)], result.data)\n }\n })\n\n // 执行删除操作\n const fileList = paths.map(p => this._normalizeCloudId(p))\n const result = await this.deleteFile({ fileList })\n\n // IDeleteFileRes 的 fileList 数组中每个项有 code 字段\n const failedFiles = result.fileList.filter(item => item.code !== 'SUCCESS')\n if (failedFiles.length > 0) {\n throw new StorageError(`Delete failed for ${failedFiles.length} file(s)`)\n }\n\n const now = new Date().toISOString()\n\n // 使用获取到的文件信息构建返回数据\n return {\n data: paths.map((p) => {\n const info = fileInfoMap.get(p)\n\n return {\n name: info?.name,\n id: info?.id,\n bucket_id: info?.bucketId,\n owner: undefined, // 无法计算owner\n updated_at: info?.updatedAt || now,\n created_at: info?.createdAt,\n last_accessed_at: info?.lastAccessedAt || now,\n metadata: info?.metadata || {},\n /**\n * TODO: 获取补全 Bucket 信息\n */\n buckets: {\n id: info?.bucketId,\n name: info?.bucketId,\n owner: undefined, // 无法计算owner\n public: false, // 未知\n created_at: '', // 未知\n updated_at: now, // 未知\n },\n }\n }),\n error: null,\n }\n } catch (error: any) {\n if (this.shouldThrowOnError) throw error\n if (isStorageError(error)) {\n return {\n data: null,\n error,\n }\n }\n throw error\n }\n }\n\n async list() {\n throw new StorageError('Not implemented')\n }\n\n private _getCloudPath(path: string): string {\n // 清理路径:移除首尾斜杠,合并多个斜杠\n const cleanPath = path.replace(/^\\/|\\/$/g, '').replace(/\\/+/g, '/')\n\n // 否则返回清理后的相对路径\n return cleanPath\n }\n\n private _normalizeCloudId(path: string) {\n // 如果已经是 cloud:// 格式,直接返回\n if (/^cloud:\\/\\//.test(path)) {\n return path\n }\n const cleanPath = this._getCloudPath(path)\n\n // 如果设置了 bucketId,构建完整的 cloud:// 路径\n if (this.bucketId) {\n // 获取环境 ID\n const envId = this.config?.env || ''\n if (envId) {\n return `cloud://${envId}.${this.bucketId}/${cleanPath}`\n }\n } else {\n throw new StorageError('bucketId is not set')\n }\n }\n\n private toBase64(data: string) {\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64')\n }\n return btoa(data)\n }\n\n /**\n * 将 TransformOptions 转换为腾讯云数据万象的 imageMogr2 查询字符串\n *\n * 腾讯云数据万象使用 imageMogr2 接口进行图片处理,支持以下参数:\n * - /thumbnail/<Width>x<Height> - 缩放\n * - /format/<Format> - 格式转换\n * - /quality/<Quality> - 质量调整\n * - /rquality/<Quality> - 相对质量\n *\n * @param transform - Supabase TransformOptions\n * @returns 腾讯云数据万象的查询字符串\n *\n * @example\n * ```typescript\n * _transformOptsToQueryString({ width: 300, height: 200, quality: 80, format: 'origin' })\n * // 返回: 'imageMogr2/thumbnail/300x200/quality/80'\n * ```\n */\n private _transformOptsToQueryString(transform: TransformOptions): string {\n const params: string[] = ['imageMogr2']\n\n // 处理缩放参数\n if (transform.width || transform.height) {\n const width = transform.width || ''\n const height = transform.height || ''\n\n // 根据 resize 模式选择不同的缩放方式\n if (transform.resize === 'fill') {\n // fill: 强制缩放到指定尺寸,可能变形\n params.push(`thumbnail/${width}x${height}!`)\n } else if (transform.resize === 'contain') {\n // contain: 等比缩放,完整显示在指定尺寸内\n params.push(`thumbnail/${width}x${height}`)\n } else {\n // cover (默认): 等比缩放,填充指定尺寸,可能裁剪\n // 使用 /thumbnail/<Width>x<Height>^ 表示填充模式\n params.push(`thumbnail/${width}x${height}^`)\n }\n }\n\n // 处理格式转换\n // format: 'origin' 表示保持原格式,不传此参数\n if (transform.format && transform.format !== 'origin') {\n params.push(`format/${transform.format}`)\n }\n\n // 处理质量参数\n if (transform.quality !== undefined) {\n // 腾讯云数据万象的 quality 参数范围是 1-100\n const quality = Math.max(1, Math.min(100, transform.quality))\n params.push(`quality/${quality}`)\n }\n\n return params.join('/')\n }\n\n /**\n * 从 CloudBase fileID 中提取文件路径\n *\n * @param fileId - CloudBase fileID (格式: cloud://env-id.bucket/path/to/file.jpg)\n * @returns 提取的文件路径\n *\n * @example\n * ```typescript\n * _extractPathFromFileId('cloud://test-env.test-bucket/images/photo.jpg')\n * // 返回: 'images/photo.jpg'\n *\n * _extractPathFromFileId('cloud://test-env.test-bucket/file.txt')\n * // 返回: 'file.txt'\n * ```\n */\n private _extractPathFromFileId(fileId: string): string {\n // fileID 格式: cloud://env-id.bucket/path/to/file.jpg\n // 需要提取第一个 / 后面的所有内容(包括 bucket 和路径)\n // 然后再提取 bucket 后面的路径部分\n\n // 移除 cloud:// 前缀\n const withoutProtocol = fileId.replace(/^cloud:\\/\\//, '')\n\n // 分割为 [env-id.bucket, path, to, file.jpg]\n const parts = withoutProtocol.split('/')\n\n if (parts.length < 2) {\n // 如果无法解析,返回完整的 fileID\n return fileId\n }\n\n // 移除第一部分(env-id.bucket),返回剩余路径\n return parts.slice(1).join('/')\n }\n\n /**\n * 从 CloudBase fileID 中提取 bucket 名称\n *\n * @param fileId - CloudBase fileID (格式: cloud://env-id.bucket/path/to/file.jpg)\n * @returns 提取的 bucket 名称\n *\n * @example\n * ```typescript\n * _extractBucketFromFileId('cloud://test-env.test-bucket/images/photo.jpg')\n * // 返回: 'test-bucket'\n *\n * _extractBucketFromFileId('cloud://prod-env.my-bucket/file.txt')\n * // 返回: 'my-bucket'\n * ```\n */\n private _extractBucketFromFileId(fileId: string): string {\n // fileID 格式: cloud://env-id.bucket/path/to/file.jpg\n // 需要提取 env-id.bucket 中的 bucket 部分\n\n // 移除 cloud:// 前缀\n const withoutProtocol = fileId.replace(/^cloud:\\/\\//, '')\n\n // 分割为 [env-id.bucket, path, to, file.jpg]\n const parts = withoutProtocol.split('/')\n\n if (parts.length < 1) {\n // 如果无法解析,返回默认 bucket\n return ''\n }\n\n // 第一部分是 env-id.bucket,提取 bucket 部分\n // 格式: env-id.bucket 或 env-id.bucket-name\n const envAndBucket = parts[0]\n\n // 查找第一个点的位置\n const dotIndex = envAndBucket.indexOf('.')\n\n if (dotIndex === -1) {\n // 如果没有点,返回整个字符串\n return envAndBucket\n }\n\n // 返回点后面的部分(bucket 名称)\n return envAndBucket.substring(dotIndex + 1)\n }\n}\n\nconst supabaseComponent: ICloudbaseComponent = {\n name: `${COMPONENT_NAME}/supabase`,\n IIFE: true,\n entity() {\n // 在 IIFE 中,this 是 Cloudbase 类(构造函数),不是实例\n // 所以我们需要使用 getter 来延迟获取实例的 config 和 request\n\n // 使用 WeakMap 缓存每个实例的 storage 对象\n const storageCache = new WeakMap<any, SupabaseFileAPILikeStorage>()\n\n // 定义 storage 属性的 getter,每个实例只创建一次\n Object.defineProperty(this.prototype, 'storage', {\n get() {\n // 这里的 this 是 cloudbase 实例\n\n // 如果已经创建过,直接返回缓存的实例\n if (storageCache.has(this)) {\n return storageCache.get(this)\n }\n\n // 创建动态 context,从当前实例获取 config 和 request\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instance = this\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const context = new Proxy<ICloudbaseContext>({} as ICloudbaseContext, {\n get: (_target, prop) => {\n if (prop === 'config') {\n return instance.config\n }\n if (prop === 'request') {\n return instance.request\n }\n return undefined\n },\n })\n\n // 创建新的 storage 实例并缓存\n const storage = new SupabaseFileAPILikeStorage(context)\n storageCache.set(this, storage)\n return storage\n },\n configurable: true,\n enumerable: true,\n })\n },\n}\n\ntry {\n cloudbase.registerComponent(component)\n cloudbase.registerComponent(supabaseComponent)\n} catch (e) {}\n\nexport function registerStorage(app: Pick<ICloudbase, 'registerComponent'>) {\n try {\n app.registerComponent(component)\n app.registerComponent(supabaseComponent)\n } catch (e) {\n console.warn(e)\n }\n}\n\ntry {\n (window as any).registerStorage = registerStorage\n} catch (e) {}\n","export class StorageError extends Error {\n protected __isStorageError = true\n\n constructor(message: string) {\n super(message)\n this.name = 'StorageError'\n }\n}\n\nexport function isStorageError(error: unknown): error is StorageError {\n return typeof error === 'object' && error !== null && '__isStorageError' in error\n}\n\nexport class StorageApiError extends StorageError {\n status: number\n statusCode: string\n\n constructor(message: string, status: number, statusCode: string) {\n super(message)\n this.name = 'StorageApiError'\n this.status = status\n this.statusCode = statusCode\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n }\n }\n}\n\nexport class StorageUnknownError extends StorageError {\n originalError: unknown\n\n constructor(message: string, originalError: unknown) {\n super(message)\n this.name = 'StorageUnknownError'\n this.originalError = originalError\n }\n}\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n return Promise.reject(x)\n }\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","export default class AbortController {\n listeners: Array<CallableFunction> = []\n signal = {\n aborted: false,\n addEventListener: (e: string, f: CallableFunction) => {\n if (e === 'abort') {\n this.listeners.push(f)\n }\n },\n }\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor() {}\n\n abort() {\n if (this.signal.aborted) return\n\n this.signal.aborted = true\n this.listeners.forEach(f => f())\n }\n}\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { CloudbaseEventEmitter } from './events'\n\nexport const bus = new CloudbaseEventEmitter()\n\nexport const LANG_CHANGE_EVENT = 'lang_change'\n","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n throw new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","// 空模块占位文件,用于 webpack 解析纯类型包(@cloudbase/types)的子路径引用\n// 这些引用只有 TypeScript 类型,编译后会被擦除,运行时不需要任何内容\nmodule.exports = {}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__cloudbase_adapter_interface_74717cc6__;","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_jwt_decode_b659f100__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["EUploadMethod","errors_1","require","utilities_1","storage_1","getSdkName","constants","ERRORS","COMMUNITY_SITE_URL","isArray","utils","isString","isPalinObject","execCallback","catchErrorsDecorator","helpers","exports","storageGateWay","request","params","customReqOpts","__awaiter","gateWay","path","name","data","objectId","headers","signedHeader","Object","keys","reduce","res","v","__assign","_a","_b","sent","code","authorization","token","url","uploadUrl","fileId","cloudObjectId","cosFileId","cloudObjectMeta","download_url","downloadUrl","convertedFileList","map","fileid","download_list","message","fileID","tempFileURL","fileList","delete_list","srcPath","src_path","dstPath","dst_path","overwrite","removeOriginal","remove_original","copy_list","CloudbaseStorage","prototype","isGateWay","this","config","endPointMode","uploadFile","callback","Promise","cloudPath","filePath","onUploadProgress","method","fileContent","Error","JSON","stringify","INVALID_PARAMS","msg","concat","COMPONENT_NAME","uploadMethod","put","post","toLocaleLowerCase","getUploadMetadata","undefined","metadataResult","_d","metadata","requestId","putParams","commonParams","file","postParams","key","signature","success_action_status","_c","isSuccess","uploadConfig","upload","statusCode","OPERATION_FAIL","action","metaData","metaDataParam","send","err_1","deleteFile","length","_i","fileList_1","fileid_list","getTempFileURL","fileList_2","hasOwnProperty","call","push","max_age","maxAge","file_list","downloadFile","tmpUrlRes","tmpUrl","encodeURI","download","tempFilePath","result","copyFile","fileList_3","getFileInfo","fileInfo","all","item","_this","fetch","header","Headers","fromEntries","entries","fileSize","parseInt","contentType","includes","Number","cloudId","fileName","split","pop","mime","trim","size","etag","lastModified","cacheControl","e_1","__decorate","customInfo","className","methodName","title","messages","Function","_e","_f","ICloudbaseDeleteFileParams","_g","_h","_j","ICloudbaseGetTempFileURLParams","_k","_l","_m","ICloudbaseDownloadFileParams","_o","_p","_q","ICloudbaseCopyFileParams","_r","_s","_t","storage","component","entity","SupabaseFileAPILikeStorage","_super","context","shouldThrowOnError","bucketId","__extends","defineProperty","throwOnError","from","bucket","fileBody","fileOptions","options","upsert","_getCloudPath","uploadFileParams","toBase64","id","fullPath","error","error_1","isStorageError","uploadToSignedUrl","_token","createSignedUploadUrl","signedUrl","error_2","StorageError","update","move","fromPath","toPath","error_3","copy","error_4","createSignedUrl","expiresIn","_normalizeCloudId","queryParams","encodeURIComponent","transform","transformQuery","_transformOptsToQueryString","separator","join","error_5","createSignedUrls","paths","p","index","error_6","signedUrlResult","reqClass","get","responseType","Blob","error_7","info","pathOrFileId","isFileId","startsWith","displayName","_extractPathFromFileId","_extractBucketFromFileId","now","Date","toISOString","version","updatedAt","createdAt","lastAccessedAt","error_8","exists","error_9","getPublicUrl","publicUrl","remove","chunkSize_1","pathChunks","i","slice","chunk","fileInfoResults","fileInfoMap_1","Map","flat","forEach","set","Math","floor","failedFiles","filter","now_1","bucket_id","owner","updated_at","created_at","last_accessed_at","buckets","public","error_10","list","replace","test","cleanPath","envId","env","Buffer","toString","btoa","width","height","resize","format","quality","max","min","parts","envAndBucket","dotIndex","indexOf","substring","supabaseComponent","IIFE","storageCache","WeakMap","has","instance","Proxy","_target","prop","configurable","enumerable","cloudbase","registerComponent","e","registerStorage","app","console","warn","window","__isStorageError","StorageApiError","status","toJSON","StorageUnknownError","originalError","RUNTIME","Web","__importStar","util_1","adapters","adapterList_1","adapter","isMatch","genAdapter","runtime","WEB","adapter_interface_1","common_1","WebRequest","timeout","timeoutMsg","restrictedMethods","reqMethod","toLowerCase","formData","FormData","append","body","URL","createObjectURL","decodeURIComponent","pathname","link","document","createElement","href","setAttribute","style","display","appendChild","click","revokeObjectURL","removeChild","resolve","abortController","AbortController","enableAbort","stream","signal","_timeout","aborted","abort","addEventListener","timer","setTimeout","then","response","clearTimeout","ok","reject","json","apply","catch","x","text","String","payload","withCredentials","realUrl","formatUrl","getProtocol","ajax","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","arr","getAllResponseHeaders","headerMap_1","line","shift","value","parse","responseText","isFormData","toQueryString","AbstractSDKRequest","type","root","wsClass","WebSocket","localStorage","sdkName","PROTOCOL","protocol","INVALID_SYNTAX","INVALID_OPERATION","NETWORK_ERROR","UNKOWN_ERROR","__exportStar","constants_1","isFirefox","navigator","userAgent","REG_STACK_DECORATE","REG_STACK_LINK","getRewritedError","err","sourceLink","innerErr","innerErrStack","stack","REG_STACK_INNER_METHOD","RegExp","REG_STACK_INNER_METHOD_WITHOUT_LINK","indexOfSource","findIndex","str","realErrStack","unshift","mode","target","descriptor","IS_DEBUG_MODE","constructor","fnName","fn","outterErrStacks","indexOfDecorator","match","exec","getSourceLink","args","arguments","failErr","errMsg","errorDescription","error_description","logs","content","subtitle","printGroupLog","cache","events","langEvent","abortController_1","__importDefault","default","jwt","decode","listeners","f","TcbCacheObject","tcbCacheObject","setItem","getItem","removeItem","clear","AbstractStorage","CloudbaseCache","persistence","platformInfo","persistenceTag","primaryStorage","printWarn","createStorage","setStore","val","setStoreAsync","getStore","process","tcb_token","getStoreAsync","removeStore","removeStoreAsync","CloudbaseEvent","IErrorEvent","CloudbaseEventEmitter","on","listener","customeAddEventListener","off","splice","customRemoveEventListener","fire","event","isInstanceOf","ev","listens","handlers_1","__spreadArray","eventEmitter","events_1","construct","random","d","getTime","d2","c","r","query","urlHasQuery","queryString","u","location","search","reg","substr","matches","hash","sourceURL","rtn","cb","promise","throwPromiseNotDefined","log","printTrace","collapsed","groupCollapsed","group","content_1","tip","trace","groupEnd","ms","phoneNumber","Array","queryObj","matched","parseQueryString","restQueryObj","__rest","state","captchaData","module","__WEBPACK_EXTERNAL_MODULE__cloudbase_adapter_interface_74717cc6__","__WEBPACK_EXTERNAL_MODULE_jwt_decode_b659f100__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.esm.js","mappings":"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","sources":["webpack://@cloudbase/js-sdk/./empty-module.js","webpack://@cloudbase/js-sdk/webpack/bootstrap","webpack://@cloudbase/js-sdk/webpack/runtime/define property getters","webpack://@cloudbase/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@cloudbase/js-sdk/errors.ts","webpack://@cloudbase/js-sdk/common.ts","webpack://@cloudbase/js-sdk/external module \"@cloudbase/adapter-interface\"","webpack://@cloudbase/js-sdk/util.ts","webpack://@cloudbase/js-sdk/index.ts","webpack://@cloudbase/js-sdk/web.ts","webpack://@cloudbase/js-sdk/cache.ts","webpack://@cloudbase/js-sdk/events.ts","webpack://@cloudbase/js-sdk/langEvent.ts","webpack://@cloudbase/js-sdk/decorators.ts","webpack://@cloudbase/js-sdk/external module \"jwt-decode\""],"sourcesContent":["// 空模块占位文件,用于 webpack 解析纯类型包(@cloudbase/types)的子路径引用\n// 这些引用只有 TypeScript 类型,编译后会被擦除,运行时不需要任何内容\nmodule.exports = {}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export class StorageError extends Error {\n protected __isStorageError = true\n\n constructor(message: string) {\n super(message)\n this.name = 'StorageError'\n }\n}\n\nexport function isStorageError(error: unknown): error is StorageError {\n return typeof error === 'object' && error !== null && '__isStorageError' in error\n}\n\nexport class StorageApiError extends StorageError {\n status: number\n statusCode: string\n\n constructor(message: string, status: number, statusCode: string) {\n super(message)\n this.name = 'StorageApiError'\n this.status = status\n this.statusCode = statusCode\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n }\n }\n}\n\nexport class StorageUnknownError extends StorageError {\n originalError: unknown\n\n constructor(message: string, originalError: unknown) {\n super(message)\n this.name = 'StorageUnknownError'\n this.originalError = originalError\n }\n}\n","let sdkName = '@cloudbase/js-sdk'\nexport function setSdkName(name: string) {\n sdkName = name\n}\nexport function getSdkName() {\n return sdkName\n}\n\nlet PROTOCOL = 'https:'\n\nexport function setProtocol(protocol: 'http:' | 'https:') {\n PROTOCOL = protocol\n}\n\nexport function getProtocol() {\n return PROTOCOL\n}\n// 是否为开发模式\nexport const IS_DEBUG_MODE = typeof process === 'undefined' || typeof process.env === 'undefined' ? false : process.env.NODE_ENV === 'development'\n// 问答社区链接\nexport const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"AbstractSDKRequest\"]: () => __WEBPACK_EXTERNAL_MODULE__cloudbase_adapter_interface_74717cc6__.AbstractSDKRequest, [\"AbstractStorage\"]: () => __WEBPACK_EXTERNAL_MODULE__cloudbase_adapter_interface_74717cc6__.AbstractStorage });","import { KV } from '@cloudbase/types'\nimport { getSdkName } from '../constants'\n\nexport function isArray(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Array]'\n}\nexport function isString(val: any): boolean {\n return typeof val === 'string'\n}\nexport function isUndefined(val: any): boolean {\n return typeof val === 'undefined'\n}\nexport function isPalinObject(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\nexport function isNull(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object Null]'\n}\nexport function isInstanceOf(instance: any, construct: any): boolean {\n return instance instanceof construct\n}\nexport function isFormData(val: any): boolean {\n return Object.prototype.toString.call(val) === '[object FormData]'\n}\nexport function genSeqId(): string {\n return Math.random().toString(16)\n .slice(2)\n}\nexport function generateRequestId() {\n let d = new Date().getTime()\n let d2 = (Date?.now && Date.now() * 1000) || 0\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n let r = Math.random() * 16\n if (d > 0) {\n r = (d + r) % 16 | 0\n d = Math.floor(d / 16)\n } else {\n r = (d2 + r) % 16 | 0\n d2 = Math.floor(d2 / 16)\n }\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)\n })\n}\nexport function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {\n const urlHasQuery = /\\?/.test(url)\n let queryString = ''\n Object.keys(query).forEach((key) => {\n if (queryString === '') {\n !urlHasQuery && (url += '?')\n } else {\n queryString += '&'\n }\n queryString += `${key}=${encodeURIComponent(query[key])}`\n })\n url += queryString\n if (/^http(s)?:\\/\\//.test(url)) {\n return url\n }\n return `${PROTOCOL}${url}`\n}\n\nexport function toQueryString(query: KV<any> = {}) {\n const queryString = []\n Object.keys(query).forEach((key) => {\n queryString.push(`${key}=${encodeURIComponent(query[key])}`)\n })\n return queryString.join('&')\n}\n\nexport function getQuery(name: string, url?: string) {\n if (typeof window === 'undefined') {\n return false\n }\n // 参数:变量名,url为空则表从当前页面的url中取\n const u = url || decodeURIComponent(window.location.search)\n const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)\n const r = u.substr(u.indexOf('?') + 1).match(reg)\n return r !== null && r !== undefined ? r[2] : ''\n}\n\nexport const getHash = function (name: string) {\n if (typeof window === 'undefined') {\n return ''\n }\n const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))\n return matches ? matches[1] : ''\n}\n\nexport function removeParam(key: string, sourceURL: string) {\n let rtn = sourceURL.split('?')[0]\n let param\n let params = []\n const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''\n if (queryString !== '') {\n params = queryString.split('&')\n for (let i = params.length - 1; i >= 0; i -= 1) {\n /* eslint-disable-next-line */\n param = params[i].split('=')[0]\n if (param === key) {\n params.splice(i, 1)\n }\n }\n rtn = `${rtn}?${params.join('&')}`\n }\n return rtn\n}\n\nexport function createPromiseCallback() {\n let cb: any = {}\n if (!Promise) {\n cb = () => {}\n cb.promise = {}\n\n const throwPromiseNotDefined = () => {\n throw new Error('Your Node runtime does support ES6 Promises. '\n + 'Set \"global.Promise\" to your preferred implementation of promises.',)\n }\n\n Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })\n Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })\n return cb\n }\n\n const promise = new Promise((resolve, reject) => {\n cb = (err, data) => {\n if (err) return reject(err)\n return resolve(data)\n }\n })\n cb.promise = promise\n return cb\n}\n\nexport function execCallback(fn: Function | null | undefined, err: any, data = null) {\n if (fn && typeof fn === 'function') {\n return fn(err, data)\n }\n if (err) {\n throw err\n }\n return data\n}\n\nexport function printWarn(error: string, msg: string) {\n console.warn(`[${getSdkName()}][${error}]:${msg}`)\n}\n\nexport function printError(error: string, msg: string) {\n console.error({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n })\n}\nexport function printInfo(error: string, msg: string) {\n console.log(`[${getSdkName()}][${error}]:${msg}`)\n}\nexport function throwError(error: string, msg: string) {\n throw new Error(JSON.stringify({\n code: error,\n msg: `[${getSdkName()}][${error}]:${msg}`,\n }),)\n}\n\ninterface IPrintGroupLogOptions {\n title: string\n subtitle: string | object\n content: {\n type: 'info' | 'warn' | 'error'\n body: string | Error\n }[]\n printTrace?: boolean\n collapsed?: boolean\n}\nexport function printGroupLog(options: IPrintGroupLogOptions) {\n const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options\n if (collapsed) {\n (console.groupCollapsed || console.error)(title, subtitle)\n } else {\n (console.group || console.error)(title, subtitle)\n }\n for (const tip of content) {\n const { type, body } = tip\n switch (type) {\n case 'info':\n console.log(body)\n break\n case 'warn':\n console.warn(body)\n break\n case 'error':\n console.error(body)\n break\n }\n }\n if (printTrace) {\n (console.trace || console.log)('stack trace:')\n }\n console.groupEnd?.()\n}\n\nexport const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))\n\nexport function transformPhone(phoneNumber: string) {\n return `+86${phoneNumber}`\n}\n\nexport const parseQueryString = (queryString) => {\n queryString = queryString.replace(/^\\?/, '')\n const params = {}\n const pairs = queryString.split('&')\n\n pairs.forEach((item) => {\n let [key, value] = item.split('=')\n key = decodeURIComponent(key)\n value = decodeURIComponent(value)\n if (key) {\n if (params[key]) {\n if (Array.isArray(params[key])) {\n params[key].push(value)\n } else {\n params[key] = [params[key], value]\n }\n } else {\n params[key] = value\n }\n }\n })\n\n return params\n}\n\n// 解析URL参数\nexport function parseCaptcha(url) {\n let queryObj: any = {}\n const matched = url.match(/^(data:.*?)(\\?[^#\\s]*)?$/)\n if (matched) {\n // eslint-disable-next-line prefer-destructuring\n url = matched[1]\n const search = matched[2]\n if (search) {\n queryObj = parseQueryString(search)\n }\n }\n const { token, ...restQueryObj } = queryObj\n if (/^data:/.test(url) && !token) {\n return {\n error: 'invalid_argument',\n error_description: `invalid captcha data: ${url}`,\n }\n }\n if (!token) {\n return {\n error: 'unimplemented',\n error_description: 'need to impl captcha data',\n }\n }\n // 解析url得到的参数\n return {\n state: restQueryObj.state,\n token, // 验证码token\n captchaData: url, // 验证码base64图片\n }\n}\n","export * from './common'\nexport * from './errors'\n\nexport const OATUH_LOGINTYPE = 'constants'\n","import {\n SDKAdapterInterface,\n AbstractSDKRequest,\n IRequestOptions,\n ResponseObject,\n IUploadRequestOptions,\n IRequestConfig,\n IRequestMethod,\n IFetchOptions,\n} from '@cloudbase/adapter-interface'\nimport { isFormData, formatUrl, toQueryString } from '../../libs/util'\nimport { getProtocol } from '../../constants/common'\n\n/**\n * @class WebRequest\n */\nclass WebRequest extends AbstractSDKRequest {\n // 默认不限超时\n private readonly timeout: number\n // 超时提示文案\n private readonly timeoutMsg: string\n // 超时受限请求类型,默认所有请求均受限\n private readonly restrictedMethods: Array<IRequestMethod>\n constructor(config: IRequestConfig) {\n super()\n const { timeout, timeoutMsg, restrictedMethods } = config\n this.timeout = timeout || 0\n this.timeoutMsg = timeoutMsg || '请求超时'\n this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']\n }\n public get(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'get',\n },\n this.restrictedMethods.includes('get'),\n )\n }\n public post(options: IRequestOptions): Promise<ResponseObject> {\n return this.request(\n {\n ...options,\n method: 'post',\n },\n this.restrictedMethods.includes('post'),\n )\n }\n public put(options: IRequestOptions): Promise<ResponseObject> {\n return this.request({\n ...options,\n method: 'put',\n })\n }\n public upload(options: IUploadRequestOptions): Promise<ResponseObject> {\n const { data, file, name, method, headers = {} } = options\n const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'\n // 上传方式为post时,需转换为FormData\n const formData = new FormData()\n if (reqMethod === 'post') {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key])\n })\n formData.append('key', name)\n formData.append('file', file)\n return this.request(\n {\n ...options,\n data: formData,\n method: reqMethod,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n return this.request(\n {\n ...options,\n method: 'put',\n headers,\n body: file,\n },\n this.restrictedMethods.includes('upload'),\n )\n }\n public async download(options: IRequestOptions): Promise<any> {\n try {\n const { data } = await this.get({\n ...options,\n headers: {}, // 下载资源请求不经过service,header清空\n responseType: 'blob',\n })\n const url = window.URL.createObjectURL(new Blob([data]))\n const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')\n const link = document.createElement('a')\n\n link.href = url\n link.setAttribute('download', fileName)\n link.style.display = 'none'\n\n document.body.appendChild(link)\n link.click()\n // 回收内存\n window.URL.revokeObjectURL(url)\n document.body.removeChild(link)\n } catch (e) {}\n return new Promise((resolve) => {\n resolve({\n statusCode: 200,\n tempFilePath: options.url,\n })\n })\n }\n async fetch(options: IFetchOptions & { shouldThrowOnError?: boolean }): Promise<ResponseObject> {\n const abortController = new AbortController()\n const { url, enableAbort = false, stream = false, signal, timeout: _timeout, shouldThrowOnError = true } = options\n\n const timeout = _timeout ?? this.timeout\n\n if (signal) {\n if (signal.aborted) abortController.abort()\n signal.addEventListener('abort', () => abortController.abort())\n }\n\n let timer = null\n if (enableAbort && timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n abortController.abort(new Error(this.timeoutMsg))\n }, timeout)\n }\n\n const res = await fetch(url, {\n ...options,\n signal: abortController.signal,\n })\n .then(async (response) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n // 404 等等也会进 resolve,所以要再通过 ok 判断\n return response.ok ? response : Promise.reject(await response.json())\n }\n return response\n })\n .catch((x) => {\n clearTimeout(timer)\n if (shouldThrowOnError) {\n return Promise.reject(x)\n }\n })\n\n return {\n // eslint-disable-next-line no-nested-ternary\n data: stream ? res.body : res.headers.get('content-type')?.includes('application/json') ? res.json() : res.text(),\n statusCode: res.status,\n header: res.headers,\n }\n }\n /**\n * @param {IRequestOptions} options\n * @param {boolean} enableAbort 是否超时中断请求\n */\n protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {\n const method = String(options.method).toLowerCase() || 'get'\n return new Promise((resolve) => {\n const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options\n const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})\n const ajax = new XMLHttpRequest()\n ajax.open(method, realUrl)\n responseType && (ajax.responseType = responseType)\n Object.keys(headers).forEach((key) => {\n ajax.setRequestHeader(key, headers[key])\n })\n let timer\n if (onUploadProgress) {\n ajax.upload.addEventListener('progress', onUploadProgress)\n }\n ajax.onreadystatechange = () => {\n const result: ResponseObject = {}\n if (ajax.readyState === 4) {\n const headers = ajax.getAllResponseHeaders()\n const arr = headers.trim().split(/[\\r\\n]+/)\n // Create a map of header names to values\n const headerMap = {}\n arr.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift().toLowerCase()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n result.header = headerMap\n result.statusCode = ajax.status\n try {\n // 上传post请求返回数据格式为xml,此处容错\n result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)\n } catch (e) {\n result.data = responseType === 'blob' ? ajax.response : ajax.responseText\n }\n clearTimeout(timer)\n resolve(result)\n }\n }\n if (enableAbort && this.timeout) {\n timer = setTimeout(() => {\n console.warn(this.timeoutMsg)\n ajax.abort()\n }, this.timeout)\n }\n // 处理 payload\n let payload\n if (isFormData(data)) {\n // FormData,不处理\n payload = data\n } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {\n payload = toQueryString(data)\n } else if (body) {\n payload = body\n } else {\n // 其它情况\n payload = data ? JSON.stringify(data) : undefined\n }\n\n if (withCredentials) {\n ajax.withCredentials = true\n }\n ajax.send(payload)\n })\n }\n}\n\nfunction genAdapter() {\n const adapter: SDKAdapterInterface & { type?: 'default' | '' } = {\n type: 'default',\n root: window,\n reqClass: WebRequest,\n wsClass: WebSocket,\n localStorage,\n }\n return adapter\n}\n\nexport { genAdapter, WebRequest }\n","import { StorageInterface, AbstractStorage, SDKAdapterInterface } from '@cloudbase/adapter-interface'\nimport { ICloudbaseCache, ICacheConfig } from '@cloudbase/types/cache'\nimport { KV, Persistence, ICloudbasePlatformInfo } from '@cloudbase/types'\nimport { printWarn } from './util'\nimport { ERRORS, getSdkName } from '../constants'\n\n/**\n * persitence=none时登录态保存在内存中\n */\nclass TcbCacheObject extends AbstractStorage {\n private readonly root: any\n constructor(root: any) {\n super()\n this.root = root\n if (!root.tcbCacheObject) {\n root.tcbCacheObject = {}\n }\n }\n public setItem(key: string, value: any) {\n this.root.tcbCacheObject[key] = value\n }\n public getItem(key: string) {\n return this.root.tcbCacheObject[key]\n }\n public removeItem(key: string) {\n delete this.root.tcbCacheObject[key]\n }\n public clear() {\n delete this.root.tcbCacheObject\n }\n}\n/**\n * 工厂函数\n */\nfunction createStorage(persistence: Persistence, adapter: SDKAdapterInterface): StorageInterface {\n switch (persistence) {\n case 'local':\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n case 'none':\n return new TcbCacheObject(adapter.root)\n default:\n if (!adapter.localStorage) {\n printWarn(ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform')\n // 不支持localstorage的平台降级为none\n return new TcbCacheObject(adapter.root)\n }\n return adapter.localStorage\n }\n}\n\nexport class CloudbaseCache implements ICloudbaseCache {\n public keys: KV<string> = {}\n\n private persistenceTag: Persistence\n private platformInfo: ICloudbasePlatformInfo\n private storage: StorageInterface\n\n constructor(config: ICacheConfig) {\n const { persistence, platformInfo = {}, keys = {} } = config\n this.platformInfo = platformInfo\n if (!this.storage) {\n this.persistenceTag = this.platformInfo.adapter.primaryStorage || persistence\n this.storage = createStorage(this.persistenceTag, this.platformInfo.adapter)\n this.keys = keys\n }\n }\n /**\n * @getter storage模式-同步/异步\n */\n get mode() {\n return this.storage.mode || 'sync'\n }\n get persistence(): Persistence {\n return this.persistenceTag\n }\n\n public setStore(key: string, value: any, version?: any) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use setStoreAsync insteed')\n return\n }\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n throw new Error(JSON.stringify({\n code: ERRORS.OPERATION_FAIL,\n msg: `[${getSdkName()}][${ERRORS.OPERATION_FAIL}]setStore failed`,\n info: e,\n }))\n }\n\n return\n }\n public async setStoreAsync(key: string, value: any, version?: any) {\n if (!this.storage) {\n return\n }\n\n try {\n const val = {\n version: version || 'localCachev1',\n content: value,\n }\n await this.storage.setItem(key, JSON.stringify(val))\n } catch (e) {\n return\n }\n\n return\n }\n public getStore(key: string, version?: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use getStoreAsync insteed')\n return\n }\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public async getStoreAsync(key: string, version?: string) {\n try {\n // 测试用例使用\n if (typeof process !== 'undefined' && process.env?.tcb_token) {\n return process.env.tcb_token\n }\n\n if (!this.storage) {\n return ''\n }\n } catch (e) {\n return ''\n }\n\n version = version || 'localCachev1'\n\n const content = await this.storage.getItem(key)\n if (!content) {\n return ''\n }\n\n if (content.indexOf(version) >= 0) {\n const d = JSON.parse(content)\n return d.content\n }\n return ''\n }\n public removeStore(key: string) {\n if (this.mode === 'async') {\n printWarn(ERRORS.INVALID_OPERATION, 'current platform\\'s storage is asynchronous, please use removeStoreAsync insteed')\n return\n }\n this.storage.removeItem(key)\n }\n public async removeStoreAsync(key: string) {\n await this.storage.removeItem(key)\n }\n}\n","import { isString, isInstanceOf } from './util'\nimport { Listeners, ICloudbaseEventEmitter } from '@cloudbase/types/events'\n\n\n/**\n * @private\n * @function _addEventListener - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customeAddEventListener(name: string, listener: Function, listeners: Listeners) {\n listeners[name] = listeners[name] || []\n listeners[name].push(listener)\n}\n/**\n * @private\n * @function _removeEventListener - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @param {Listeners} listeners - 已存响应函数集合\n */\nfunction customRemoveEventListener(name: string, listener: Function, listeners: Listeners) {\n if (listeners?.[name]) {\n const index = listeners[name].indexOf(listener)\n if (index !== -1) {\n listeners[name].splice(index, 1)\n }\n }\n}\ninterface IEvent {\n name: string;\n target: any;\n data: any;\n}\n/**\n * 自定义事件\n * @class CloudbaseEvent\n * @param {string} name - 类型\n * @param {any} data - 数据\n */\nexport class CloudbaseEvent implements IEvent {\n public readonly name: string\n public target: any\n public data: any\n\n constructor(name: string, data: any) {\n this.data = data || null\n this.name = name\n }\n}\n/**\n * 自定义错误事件\n * @class IErrorEvent\n * @extends CloudbaseEvent\n * @param {Error} error - 错误信息对象\n * @param {any} data - 数据\n */\nexport class IErrorEvent extends CloudbaseEvent {\n public readonly error: Error\n constructor(error: Error, data?: any) {\n super('error', { error, data })\n this.error = error\n }\n}\n\n/**\n * @class CloudbaseEventEmitter\n */\nexport class CloudbaseEventEmitter implements ICloudbaseEventEmitter {\n /**\n * @private\n * @readonly\n * @property {Listeners} listeners - 响应函数集合\n * @default `{}`\n */\n private readonly listeners: Listeners = {}\n\n /**\n * @public\n * @method on - 添加监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public on(name: string, listener: Function): this {\n customeAddEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method off - 移除监听\n * @param {string} name - event名称\n * @param {Function} listener - 响应函数\n * @return `this`\n */\n public off(name: string, listener: Function): this {\n customRemoveEventListener(name, listener, this.listeners)\n return this\n }\n /**\n * @public\n * @method fire - 触发事件\n * @param {string|CloudbaseEvent} event - event\n * @return `this`\n */\n public fire(event: string | CloudbaseEvent, data?: any): this {\n // 打印错误信息\n if (isInstanceOf(event, IErrorEvent)) {\n console.error((event as IErrorEvent).error)\n return this\n }\n\n const ev: CloudbaseEvent = isString(event) ? new CloudbaseEvent(event as string, data || {}) : event as CloudbaseEvent\n\n const { name } = ev\n\n if (this.listens(name)) {\n ev.target = this\n\n const handlers = this.listeners[name] ? [...this.listeners[name]] : []\n for (const fn of handlers) {\n fn.call(this, ev)\n }\n }\n\n return this\n }\n\n /**\n * @private\n * @method listens - 判断是否监听了name事件\n * @param {string} name - event名称\n * @return `boolean`\n */\n private listens(name: string): boolean {\n return this.listeners[name] && this.listeners[name].length > 0\n }\n}\n\n\nconst eventEmitter = new CloudbaseEventEmitter()\n\nexport function addEventListener(event: string, callback: Function) {\n eventEmitter.on(event, callback)\n}\n\nexport function activateEvent(event: string, data: any = {}) {\n eventEmitter.fire(event, data)\n}\n\nexport function removeEventListener(event: string, callback: Function) {\n eventEmitter.off(event, callback)\n}\n","import { CloudbaseEventEmitter } from './events'\n\nexport const bus = new CloudbaseEventEmitter()\n\nexport const LANG_CHANGE_EVENT = 'lang_change'\n","import { printGroupLog } from '../libs/util'\nimport { IS_DEBUG_MODE } from '../constants'\n\ninterface ICatchErrorsDecoratorOptions {\n mode?: 'sync' | 'async';\n customInfo?: {\n className?: string;\n methodName?: string;\n };\n title?: string;\n messages?: string[];\n}\n// firefox的stack格式与chrome不同\nlet isFirefox = false\nif (typeof navigator !== 'undefined' && navigator.userAgent) {\n isFirefox = navigator.userAgent.indexOf('Firefox') !== -1\n}\n/**\n * decorate在stack中一般都特定的规范\n */\nconst REG_STACK_DECORATE = isFirefox\n ? /(\\.js\\/)?__decorate(\\$\\d+)?<@.*\\d$/\n : /(\\/\\w+\\.js\\.)?__decorate(\\$\\d+)?\\s*\\(.*\\)$/\nconst REG_STACK_LINK = /https?:\\/\\/.+:\\d*\\/.*\\.js:\\d+:\\d+/\n/**\n * debug模式强化日志信息\n * @param options\n */\nexport function catchErrorsDecorator(options: ICatchErrorsDecoratorOptions) {\n const { mode = 'async', customInfo = {}, title, messages = [] } = options\n\n return function (\n target: any,\n methodName: string,\n descriptor: TypedPropertyDescriptor<Function>\n ) {\n // 生产环境禁用\n if (!IS_DEBUG_MODE) {\n return\n }\n const className = customInfo.className || target.constructor.name\n const fnName = customInfo.methodName || methodName\n const fn = descriptor.value\n\n // 被decorator装饰的源码link\n // 在descriptor.value外部此处创建的stack层次可触达源码\n // 而descriptor.value内部有可能由于stack太深无法触达\n const sourceLink = getSourceLink(new Error())\n\n if (mode === 'sync') {\n descriptor.value = function (...args: any[]) {\n // 此处的stack作用主要是为了获取被decorator装饰的源码class和method名称\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n try {\n return fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = errMsg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.msg = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n } else {\n descriptor.value = async function (...args: any[]) {\n const innerErr: any = getRewritedError({\n err: new Error(),\n className,\n methodName: fnName,\n sourceLink,\n })\n\n try {\n return await fn.apply(this, args)\n } catch (err) {\n let failErr = err\n const { message: errMsg, error, error_description: errorDescription } = err\n const logs: any = {\n title: title || `${className}.${fnName} failed`,\n content: [{\n type: 'error',\n body: err,\n }],\n }\n // 只特殊处理SDK业务逻辑抛出的错误-JSON string\n if (errMsg && /^\\{.*\\}$/.test(errMsg)) {\n const msg = JSON.parse(errMsg)\n logs.subtitle = msg\n if (msg.code) {\n if (innerErr) {\n innerErr.code = msg.code\n innerErr.message = msg.msg\n } else {\n err.code = msg.code\n err.message = msg.msg\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n }\n\n // oauth 错误特殊处理\n if (error && errorDescription) {\n logs.subtitle = errorDescription\n if (innerErr) {\n innerErr.code = error\n innerErr.msg = errorDescription\n } else {\n err.code = error\n err.message = errorDescription\n }\n failErr = innerErr || err\n logs.content = messages.map(msg => ({\n type: 'info',\n body: msg,\n }))\n }\n printGroupLog(logs)\n throw failErr\n }\n }\n }\n }\n}\n\n/**\n * 在原始堆栈中查找装饰器条目并返回源码链接link\n * @param err\n */\nfunction getSourceLink(err: Error) {\n let sourceLink = ''\n const outterErrStacks = err.stack.split('\\n')\n const indexOfDecorator = outterErrStacks.findIndex(str => REG_STACK_DECORATE.test(str))\n\n if (indexOfDecorator !== -1) {\n const match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '')\n\n sourceLink = match ? match[0] : ''\n }\n return sourceLink\n}\n\n/**\n * 在原始堆栈中查找装饰器条目,剔除其后的无用堆栈,并将链接替换为源码link\n * @param options\n */\nfunction getRewritedError(options: {\n err: Error;\n className: string;\n methodName: string;\n sourceLink: string;\n}) {\n const { err, className, methodName, sourceLink } = options\n // 找不到源码link返回null,后续逻辑将打印原堆栈信息\n if (!sourceLink) {\n return null\n }\n\n const innerErrStack = err.stack.split('\\n')\n const REG_STACK_INNER_METHOD = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value@.*\\d$/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]\\\\s*\\\\(.*\\\\)$`)\n const REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox\n ? /^catchErrorsDecorator\\/<\\/descriptor.value/\n : new RegExp(`${className}\\\\.descriptor.value\\\\s*\\\\[as\\\\s${methodName}\\\\]`)\n const indexOfSource = innerErrStack.findIndex(str => REG_STACK_INNER_METHOD.test(str))\n let innerErr: Error\n if (indexOfSource !== -1) {\n // @ts-ignore\n const realErrStack = innerErrStack.filter((v, i) => i > indexOfSource)\n realErrStack.unshift(innerErrStack[indexOfSource]\n .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, `${className}.${methodName}`)\n .replace(REG_STACK_LINK, sourceLink))\n innerErr = new Error()\n innerErr.stack = `${isFirefox ? '@debugger' : 'Error'}\\n${realErrStack.join('\\n')}`\n }\n return innerErr\n}\n","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => __WEBPACK_EXTERNAL_MODULE_jwt_decode_b659f100__[\"default\"] });"],"names":["module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_super","StorageError","message","_this","__isStorageError","name","__extends","Error","isStorageError","error","StorageApiError","status","statusCode","toJSON","this","originalError","sdkName","getSdkName","ERRORS","INVALID_PARAMS","INVALID_SYNTAX","INVALID_OPERATION","OPERATION_FAIL","NETWORK_ERROR","UNKOWN_ERROR","y","__WEBPACK_EXTERNAL_MODULE__cloudbase_adapter_interface_74717cc6__","AbstractSDKRequest","AbstractStorage","x","isString","val","printWarn","msg","console","warn","concat","RUNTIME","WebRequest","config","timeout","timeoutMsg","restrictedMethods","options","request","__assign","method","includes","post","put","upload","data","file","_a","headers","reqMethod","toLowerCase","formData","FormData","keys","forEach","append","body","download","Promise","responseType","sent","url","window","URL","createObjectURL","Blob","fileName","decodeURIComponent","pathname","split","pop","link","document","createElement","href","setAttribute","style","display","appendChild","click","revokeObjectURL","removeChild","resolve","tempFilePath","fetch","abortController","AbortController","_b","enableAbort","_c","stream","signal","_timeout","_d","shouldThrowOnError","aborted","abort","addEventListener","timer","setTimeout","then","response","__awaiter","clearTimeout","ok","reject","json","apply","catch","res","_e","text","header","String","payload","withCredentials","onUploadProgress","realUrl","PROTOCOL","query","urlHasQuery","test","queryString","encodeURIComponent","formatUrl","ajax","XMLHttpRequest","open","setRequestHeader","onreadystatechange","result","readyState","arr","getAllResponseHeaders","trim","headerMap_1","line","parts","shift","value","join","JSON","parse","responseText","e","toString","push","toQueryString","stringify","send","TcbCacheObject","root","tcbCacheObject","setItem","getItem","removeItem","clear","CloudbaseCache","persistence","platformInfo","storage","persistenceTag","adapter","primaryStorage","localStorage","createStorage","mode","setStore","version","content","code","info","setStoreAsync","getStore","process","tcb_token","indexOf","getStoreAsync","removeStore","removeStoreAsync","CloudbaseEvent","IErrorEvent","CloudbaseEventEmitter","listeners","on","listener","customeAddEventListener","off","index","splice","customRemoveEventListener","fire","event","ev","listens","target","_i","handlers_1","__spreadArray","length","navigator","userAgent","__WEBPACK_EXTERNAL_MODULE_jwt_decode_b659f100__","jwtDecode","EUploadMethod","constants","COMMUNITY_SITE_URL","isArray","utils","execCallback","fn","err","catchErrorsDecorator","customInfo","title","messages","methodName","descriptor","COMPONENT_NAME","storageGateWay","params","customReqOpts","gateWay","path","objectId","signedHeader","reduce","v","authorization","token","uploadUrl","fileId","cloudObjectId","cosFileId","cloudObjectMeta","download_url","downloadUrl","convertedFileList","map","fileid","download_list","fileID","tempFileURL","fileList","delete_list","srcPath","src_path","dstPath","dst_path","overwrite","removeOriginal","remove_original","copy_list","CloudbaseStorage","isGateWay","endPointMode","uploadFile","callback","cloudPath","filePath","fileContent","uploadMethod","toLocaleLowerCase","getUploadMetadata","metadataResult","metadata","requestId","putParams","commonParams","postParams","signature","success_action_status","isSuccess","uploadConfig","action","metaData","metaDataParam","err_1","deleteFile","fileList_1","fileid_list","getTempFileURL","fileList_2","max_age","maxAge","file_list","downloadFile","tmpUrlRes","tmpUrl","encodeURI","copyFile","fileList_3","getFileInfo","fileInfo","all","item","Headers","fromEntries","entries","fileSize","parseInt","contentType","Number","cloudId","mime","size","etag","lastModified","cacheControl","e_1","__decorate","className","Function","_f","ICloudbaseDeleteFileParams","_g","_h","_j","ICloudbaseGetTempFileURLParams","_k","_l","_m","ICloudbaseDownloadFileParams","_o","_p","_q","ICloudbaseCopyFileParams","_r","_s","_t","component","entity","SupabaseFileAPILikeStorage","context","bucketId","throwOnError","from","bucket","fileBody","fileOptions","upsert","_getCloudPath","uploadFileParams","toBase64","id","fullPath","error_1","uploadToSignedUrl","_token","createSignedUploadUrl","signedUrl","error_2","update","move","fromPath","toPath","error_3","copy","error_4","createSignedUrl","expiresIn","_normalizeCloudId","queryParams","transform","transformQuery","_transformOptsToQueryString","separator","error_5","createSignedUrls","paths","p","error_6","signedUrlResult","reqClass","error_7","pathOrFileId","isFileId","startsWith","displayName","_extractPathFromFileId","_extractBucketFromFileId","now","Date","toISOString","updatedAt","createdAt","lastAccessedAt","error_8","exists","error_9","getPublicUrl","publicUrl","remove","chunkSize_1","pathChunks","i","slice","chunk","fileInfoResults","fileInfoMap_1","Map","flat","set","Math","floor","failedFiles","filter","now_1","bucket_id","owner","updated_at","created_at","last_accessed_at","buckets","public","error_10","list","replace","cleanPath","envId","env","Buffer","btoa","width","height","resize","format","quality","max","min","envAndBucket","dotIndex","substring","supabaseComponent","IIFE","storageCache","WeakMap","has","instance","Proxy","_target","configurable","cloudbase","registerComponent","registerStorage","app","registerStorageOrigin"],"sourceRoot":""}
|
package/types/package.json
CHANGED
package/utilities/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/utilities",
|
|
3
|
-
"version": "3.4.7
|
|
3
|
+
"version": "3.4.7",
|
|
4
4
|
"description": "cloudbase javascript sdk utilities",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"license": "Apache-2.0",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@cloudbase/adapter-interface": "^0.7.1",
|
|
22
|
-
"@cloudbase/types": "3.4.7
|
|
22
|
+
"@cloudbase/types": "3.4.7",
|
|
23
23
|
"jwt-decode": "^3.1.2"
|
|
24
24
|
},
|
|
25
25
|
"gitHead": "859557576897d4778857c12fb8d7fe8ca1f3a052"
|