@adgytec/adgytec-web-utils 0.0.5 → 0.0.6
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/dist/chunks/create +24 -0
- package/dist/chunks/create.map +1 -0
- package/dist/chunks/decode +15 -15
- package/dist/chunks/parse +29 -12
- package/dist/chunks/parse.map +1 -1
- package/dist/chunks/schema +212 -187
- package/dist/chunks/schema.map +1 -1
- package/dist/chunks/server +148 -0
- package/dist/chunks/server.map +1 -0
- package/dist/chunks/uploadDetails +92 -91
- package/dist/chunks/uploadDetails.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +5 -3
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/media_limits.d.ts +2 -0
- package/dist/errorCodes/auth.d.ts +3 -0
- package/dist/errorCodes/common.d.ts +2 -0
- package/dist/errorCodes/iam.d.ts +2 -0
- package/dist/errorCodes/index.d.ts +1 -0
- package/dist/errorCodes/index.js +31 -85
- package/dist/errorCodes/index.js.map +1 -1
- package/dist/errorCodes/media.d.ts +2 -0
- package/dist/errorCodes/overrides.d.ts +2 -0
- package/dist/errorCodes/pagination.d.ts +2 -0
- package/dist/errorCodes/reqBody.d.ts +2 -0
- package/dist/errorCodes/server.d.ts +2 -0
- package/dist/errorSchema/create.d.ts +2 -0
- package/dist/errorSchema/index.d.ts +1 -0
- package/dist/errorSchema/index.js +31 -28
- package/dist/errorSchema/index.js.map +1 -1
- package/dist/errorSchema/media.d.ts +1 -1
- package/dist/errorSchema/schema.d.ts +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +4 -3
- package/dist/errors/normalization.d.ts +12 -0
- package/dist/errors/parse.d.ts +1 -2
- package/dist/index.js +114 -99
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/applicationError +0 -28
- package/dist/chunks/applicationError.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadDetails","sources":["../../src/media/mediaInfo.ts","../../src/media/toUploadPayload.ts","../../src/media/types/apiResponse.ts","../../src/media/multipartUtil.ts","../../src/media/singlepartUtil.ts","../../src/media/uploadUtil.ts","../../src/media/upload.ts","../../src/media/uploadDetails.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"uuid\";\nimport type { NewMediaInfo, NewMediaInfos } from \"./types\";\n\nexport const newMediaInfo: NewMediaInfo = (item) => {\n return {\n id: uuidv7(),\n name: item.name,\n size: item.size,\n file: item,\n };\n};\n\nexport const newMediaInfos: NewMediaInfos = (items) => {\n return items.map(newMediaInfo);\n};\n","import type { ToUploadPayload, ToUploadPayloads } from \"./types\";\n\nexport const toUploadPayload: ToUploadPayload = (item) => {\n return {\n id: item.id,\n size: item.size,\n name: item.name,\n };\n};\n\nexport const toUploadPayloads: ToUploadPayloads = (items) => {\n return items.map(toUploadPayload);\n};\n","import z from \"zod\";\n\nconst MultipartPartUploadSchema = z.object({\n presignPut: z.url(),\n partNumber: z.int().positive().lte(10000),\n partSize: z.int().positive().gt(0),\n});\n\nconst MultipartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"multipart\"),\n multipartPresignPart: z.array(MultipartPartUploadSchema).nonempty(),\n multipartSuccessCallback: z.url(),\n});\n\nconst SinglepartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"singlepart\"),\n presignPut: z.url(),\n singlepartSuccessCallback: z.url(),\n});\n\nexport const UploadDetailsAPIResSchema = z.discriminatedUnion(\"uploadType\", [\n MultipartSchema,\n SinglepartSchema,\n]);\n\nexport type UploadDetailsAPIRes = z.infer<typeof UploadDetailsAPIResSchema>;\n","import type { MultipartUploadedPartDetails } from \"./types\";\n\nexport class MultipartUtil {\n #id: string;\n #blob: Blob;\n #response: MultipartUploadedPartDetails[];\n #parts: Set<number>;\n #totalParts: number;\n #completeURL: string;\n #failed: boolean;\n #complete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n completeURL: string,\n totalParts: number\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#response = [];\n this.#parts = new Set();\n this.#totalParts = totalParts;\n this.#completeURL = completeURL;\n this.#failed = false;\n this.#complete = false;\n }\n\n get failed(): boolean {\n return this.#failed;\n }\n\n fail() {\n this.#failed = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n add(itemRes: MultipartUploadedPartDetails) {\n if (this.contains(itemRes.partNumber)) {\n return;\n }\n\n this.#response.push(itemRes);\n this.#parts.add(itemRes.partNumber);\n }\n\n contains(partNumber: number): boolean {\n return this.#parts.has(partNumber);\n }\n\n get list(): MultipartUploadedPartDetails[] {\n return this.#response\n .slice()\n .sort((a, b) => a.partNumber - b.partNumber);\n }\n\n get canComplete(): boolean {\n return !this.failed && this.#parts.size === this.#totalParts;\n }\n\n tryStartComplete(): boolean {\n if (this.#complete || !this.canComplete) return false;\n\n this.#complete = true;\n return true;\n }\n\n resetComplete() {\n this.#complete = false;\n }\n\n get totalPartsCount(): number {\n return this.#totalParts;\n }\n\n get uploadedPartsCount(): number {\n return this.#parts.size;\n }\n}\n","export class SinglepartUtil {\n #id: string;\n #blob: Blob;\n #uploadURL: string;\n #completeURL: string;\n #canComplete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n uploadURL: string,\n completeURL: string\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#completeURL = completeURL;\n this.#uploadURL = uploadURL;\n this.#canComplete = false;\n }\n\n get canComplete(): boolean {\n return this.#canComplete;\n }\n\n allowComplete() {\n this.#canComplete = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get uploadURL(): string {\n return this.#uploadURL;\n }\n}\n","import { Queue } from \"@datastructures-js/queue\";\nimport {\n httpMethods,\n httpReqHeaders,\n httpRequestCredentials,\n} from \"../constants\";\nimport { mediaCodes } from \"../errorCodes\";\nimport { ApplicationError, BaseError } from \"../errors\";\nimport { decodeAPIResponse } from \"../response\";\nimport { MultipartUtil } from \"./multipartUtil\";\nimport { SinglepartUtil } from \"./singlepartUtil\";\nimport type {\n LifecycleHandler,\n MultipartPartInfo,\n MultipartUploadedPartDetails,\n Retry,\n UploadDetails,\n UploadLimits,\n} from \"./types\";\n\nconst defaultUploadLimit: UploadLimits = {\n concurrentUploads: 4,\n retryLimit: 3,\n};\n\nexport class Upload {\n #items: UploadDetails[];\n #lifecycleHandler: LifecycleHandler;\n #concurrentUploads: number;\n #retryLimit: number;\n #retryQueue: Queue<Retry>;\n #languageTag?: string;\n\n constructor(\n uploadItems: UploadDetails[],\n handler: LifecycleHandler,\n limits: UploadLimits = defaultUploadLimit,\n languageTag?: string\n ) {\n this.#items = uploadItems;\n this.#lifecycleHandler = handler;\n this.#concurrentUploads = limits.concurrentUploads;\n this.#retryLimit = limits.retryLimit;\n this.#retryQueue = new Queue();\n this.#languageTag = languageTag;\n }\n\n #canRetry(currentCount: number): boolean {\n return currentCount < this.#retryLimit;\n }\n\n #addRetry(task: Retry) {\n this.#retryQueue.enqueue(task);\n }\n\n async init() {\n this.#lifecycleHandler.init(this.#items);\n\n const running = new Set<Promise<void>>();\n for await (const task of this.#generateTasks()) {\n const p = task().finally(() => running.delete(p));\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n // wait for all initial task to complete\n await Promise.all(running);\n\n // complete retry action\n await this.#handleRetries();\n\n this.#lifecycleHandler.completed();\n }\n\n async #blobUpload(uploadURL: string, blob: Blob): Promise<Response> {\n return await fetch(uploadURL, {\n method: httpMethods.put,\n body: blob,\n });\n }\n\n async #singlepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (singlepartObj.canComplete) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n singlepartObj.uploadURL,\n singlepartObj.blob\n );\n if (!res.ok) {\n throw new ApplicationError(mediaCodes.singlepartUploadFailed, {\n mediaID: singlepartObj.id,\n });\n }\n\n singlepartObj.allowComplete();\n await this.#completeSinglepartUpload(singlepartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-upload\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #multipartUpload(\n multipartObj: MultipartUtil,\n partInfo: MultipartPartInfo,\n retryCount: number = 0\n ) {\n if (multipartObj.failed || multipartObj.contains(partInfo.partNumber)) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n partInfo.uploadURL,\n multipartObj.blob.slice(partInfo.startByte, partInfo.endByte)\n );\n if (!res.ok) {\n throw new ApplicationError(\n mediaCodes.multipartPartUploadFailed,\n {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n }\n );\n }\n\n const etag = res.headers.get(\"ETag\");\n if (!etag) {\n throw new ApplicationError(mediaCodes.missingETagValue, {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n });\n }\n\n multipartObj.add({\n partNumber: partInfo.partNumber,\n etag: etag,\n });\n\n this.#lifecycleHandler.multipartPartUploaded(\n multipartObj.id,\n multipartObj.uploadedPartsCount,\n multipartObj.totalPartsCount\n );\n\n if (!multipartObj.canComplete) return;\n await this.#completeMultipartUpload(multipartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.multipartPartUploadRetrying(\n multipartObj.id,\n partInfo.partNumber\n );\n\n this.#addRetry({\n type: \"multipart-part-upload\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n partInfo: partInfo,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async #completeUpload(\n completeURL: string,\n body?: MultipartUploadedPartDetails[]\n ) {\n let reqBody: BodyInit | undefined;\n let headers: Record<string, string> | undefined;\n if (body) {\n reqBody = JSON.stringify({\n partsInfo: body,\n });\n\n headers = {\n [httpReqHeaders.contentType.key]:\n httpReqHeaders.contentType.valueApplicationJSON,\n };\n }\n\n if (this.#languageTag) {\n headers = headers || {};\n headers[httpReqHeaders.userLocale.key] = this.#languageTag;\n }\n\n const apiRes = await fetch(completeURL, {\n method: httpMethods.post,\n body: reqBody,\n headers: headers,\n credentials: httpRequestCredentials.include,\n });\n await decodeAPIResponse(apiRes);\n }\n\n async #completeSinglepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (!singlepartObj.canComplete) {\n return;\n }\n\n try {\n await this.#completeUpload(singlepartObj.completeURL);\n\n this.#lifecycleHandler.itemUploaded(singlepartObj.id);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-complete\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #completeMultipartUpload(\n multipartObj: MultipartUtil,\n retryCount: number = 0\n ) {\n if (!multipartObj.tryStartComplete()) {\n return;\n }\n\n try {\n await this.#completeUpload(\n multipartObj.completeURL,\n multipartObj.list\n );\n\n this.#lifecycleHandler.itemUploaded(multipartObj.id);\n } catch (err) {\n multipartObj.resetComplete();\n\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(multipartObj.id);\n this.#addRetry({\n type: \"multipart-complete\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async *#generateTasks(): AsyncGenerator<() => Promise<void>> {\n for (const item of this.#items) {\n if (item.uploadType === \"singlepart\") {\n const singlepartObj = new SinglepartUtil(\n item.mediaID,\n item.file,\n item.presignPut,\n item.singlepartSuccessCallback\n );\n\n yield async () => {\n await this.#singlepartUpload(singlepartObj);\n };\n continue;\n }\n\n // multipart\n const multipartObj = new MultipartUtil(\n item.mediaID,\n item.file,\n item.multipartSuccessCallback,\n item.multipartPresignPart.length\n );\n\n // file slice byte range\n let startByte = 0;\n let endByte = 0;\n\n for (const partDetails of item.multipartPresignPart) {\n endByte += partDetails.partSize;\n\n const partInfo: MultipartPartInfo = {\n partNumber: partDetails.partNumber,\n uploadURL: partDetails.presignPut,\n startByte: startByte,\n endByte: endByte,\n };\n\n yield async () => {\n await this.#multipartUpload(multipartObj, partInfo);\n };\n\n startByte = endByte;\n }\n }\n }\n\n #retryTask(task: Retry): Promise<void> {\n // promise assignment\n switch (task.type) {\n case \"singlepart-upload\":\n return this.#singlepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"singlepart-complete\":\n return this.#completeSinglepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"multipart-part-upload\":\n return this.#multipartUpload(\n task.multipartObj,\n task.partInfo,\n task.retryCount\n );\n case \"multipart-complete\":\n return this.#completeMultipartUpload(\n task.multipartObj,\n task.retryCount\n );\n default: {\n const _exhaustiveCheck: never = task;\n void _exhaustiveCheck;\n\n throw new BaseError(\n `Unhandled retry task type: ${(task as { type: string }).type}`\n );\n }\n }\n }\n\n async #handleRetries() {\n const running = new Set<Promise<void>>();\n\n while (true) {\n if (this.#retryQueue.isEmpty()) break;\n\n while (!this.#retryQueue.isEmpty()) {\n const task = this.#retryQueue.dequeue();\n if (!task) break;\n\n const p: Promise<void> = this.#retryTask(task).finally(() =>\n running.delete(p)\n );\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n await Promise.all(running);\n }\n }\n}\n","import type { UploadItem, UploadItems } from \"./types\";\nimport { Upload } from \"./uploadUtil\";\n\nexport const uploadItem: UploadItem = async (\n item,\n handler,\n limits,\n languageTag\n) => {\n await uploadItems([item], handler, limits, languageTag);\n};\n\nexport const uploadItems: UploadItems = async (\n items,\n handler,\n limits,\n languageTag\n) => {\n const uploadObj = new Upload(items, handler, limits, languageTag);\n await uploadObj.init();\n};\n","import { BaseError } from \"../errors\";\nimport type { NewUploadDetails, NewUploadsDetails } from \"./types\";\n\nexport const newUploadDetails: NewUploadDetails = (mediaInfo, apiResponse) => {\n if (mediaInfo.id !== apiResponse.mediaID) {\n throw new BaseError(\"media item and response id mismatch\");\n }\n\n return {\n ...apiResponse,\n file: mediaInfo.file,\n size: mediaInfo.size,\n };\n};\n\nexport const newUploadsDetails: NewUploadsDetails = (\n mediaInfos,\n apiResponses\n) => {\n if (mediaInfos.length !== apiResponses.length) {\n throw new BaseError(\n `items mismatch: mediaInfos=${mediaInfos.length}, apiResponses=${apiResponses.length}`\n );\n }\n\n const apiResponseMap = new Map(\n apiResponses.map((response) => [response.mediaID, response])\n );\n\n return mediaInfos.map((mediaInfo) => {\n const apiResponse = apiResponseMap.get(mediaInfo.id);\n if (!apiResponse) {\n // This case should not happen if lengths are equal and IDs are unique,\n // but it's good practice to handle it defensively.\n throw new BaseError(\n `Could not find a matching API response for media info with id: ${mediaInfo.id}`\n );\n }\n return newUploadDetails(mediaInfo, apiResponse);\n });\n};\n"],"names":["newMediaInfo","item","uuidv7","newMediaInfos","items","toUploadPayload","toUploadPayloads","MultipartPartUploadSchema","z","MultipartSchema","SinglepartSchema","UploadDetailsAPIResSchema","MultipartUtil","#id","#blob","#response","#parts","#totalParts","#completeURL","#failed","#complete","id","blob","completeURL","totalParts","itemRes","partNumber","a","b","SinglepartUtil","#uploadURL","#canComplete","uploadURL","defaultUploadLimit","Upload","#items","#lifecycleHandler","#concurrentUploads","#retryLimit","#retryQueue","#languageTag","uploadItems","handler","limits","languageTag","Queue","#canRetry","currentCount","#addRetry","task","running","#generateTasks","p","#handleRetries","#blobUpload","httpMethods","#singlepartUpload","singlepartObj","retryCount","ApplicationError","mediaCodes","#completeSinglepartUpload","err","#multipartUpload","multipartObj","partInfo","res","etag","#completeMultipartUpload","#completeUpload","body","reqBody","headers","httpReqHeaders","apiRes","httpRequestCredentials","decodeAPIResponse","startByte","endByte","partDetails","#retryTask","BaseError","uploadItem","newUploadDetails","mediaInfo","apiResponse","newUploadsDetails","mediaInfos","apiResponses","apiResponseMap","response"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uploadDetails","sources":["../../src/media/mediaInfo.ts","../../src/media/toUploadPayload.ts","../../src/media/types/apiResponse.ts","../../src/media/multipartUtil.ts","../../src/media/singlepartUtil.ts","../../src/media/uploadUtil.ts","../../src/media/upload.ts","../../src/media/uploadDetails.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"uuid\";\nimport { MediaItemsLimit, MediaUploadLimit } from \"../constants\";\nimport {\n newMediaItemsLimitExceedError,\n newMediaTooLargeError,\n} from \"../errorSchema\";\nimport type { NewMediaInfo, NewMediaInfos } from \"./types\";\n\nexport const newMediaInfo: NewMediaInfo = (item) => {\n if (item.size > MediaUploadLimit) {\n newMediaTooLargeError(item.name, item.size, MediaUploadLimit);\n }\n\n return {\n id: uuidv7(),\n name: item.name,\n size: item.size,\n file: item,\n };\n};\n\nexport const newMediaInfos: NewMediaInfos = (items) => {\n if (items.length > MediaItemsLimit) {\n newMediaItemsLimitExceedError(items.length, MediaItemsLimit);\n }\n\n return items.map(newMediaInfo);\n};\n","import type { ToUploadPayload, ToUploadPayloads } from \"./types\";\n\nexport const toUploadPayload: ToUploadPayload = (item) => {\n return {\n id: item.id,\n size: item.size,\n name: item.name,\n };\n};\n\nexport const toUploadPayloads: ToUploadPayloads = (items) => {\n return items.map(toUploadPayload);\n};\n","import z from \"zod\";\n\nconst MultipartPartUploadSchema = z.object({\n presignPut: z.url(),\n partNumber: z.int().positive().lte(10000),\n partSize: z.int().positive().gt(0),\n});\n\nconst MultipartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"multipart\"),\n multipartPresignPart: z.array(MultipartPartUploadSchema).nonempty(),\n multipartSuccessCallback: z.url(),\n});\n\nconst SinglepartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"singlepart\"),\n presignPut: z.url(),\n singlepartSuccessCallback: z.url(),\n});\n\nexport const UploadDetailsAPIResSchema = z.discriminatedUnion(\"uploadType\", [\n MultipartSchema,\n SinglepartSchema,\n]);\n\nexport type UploadDetailsAPIRes = z.infer<typeof UploadDetailsAPIResSchema>;\n","import type { MultipartUploadedPartDetails } from \"./types\";\n\nexport class MultipartUtil {\n #id: string;\n #blob: Blob;\n #response: MultipartUploadedPartDetails[];\n #parts: Set<number>;\n #totalParts: number;\n #completeURL: string;\n #failed: boolean;\n #complete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n completeURL: string,\n totalParts: number\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#response = [];\n this.#parts = new Set();\n this.#totalParts = totalParts;\n this.#completeURL = completeURL;\n this.#failed = false;\n this.#complete = false;\n }\n\n get failed(): boolean {\n return this.#failed;\n }\n\n fail() {\n this.#failed = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n add(itemRes: MultipartUploadedPartDetails) {\n if (this.contains(itemRes.partNumber)) {\n return;\n }\n\n this.#response.push(itemRes);\n this.#parts.add(itemRes.partNumber);\n }\n\n contains(partNumber: number): boolean {\n return this.#parts.has(partNumber);\n }\n\n get list(): MultipartUploadedPartDetails[] {\n return this.#response\n .slice()\n .sort((a, b) => a.partNumber - b.partNumber);\n }\n\n get canComplete(): boolean {\n return !this.failed && this.#parts.size === this.#totalParts;\n }\n\n tryStartComplete(): boolean {\n if (this.#complete || !this.canComplete) return false;\n\n this.#complete = true;\n return true;\n }\n\n resetComplete() {\n this.#complete = false;\n }\n\n get totalPartsCount(): number {\n return this.#totalParts;\n }\n\n get uploadedPartsCount(): number {\n return this.#parts.size;\n }\n}\n","export class SinglepartUtil {\n #id: string;\n #blob: Blob;\n #uploadURL: string;\n #completeURL: string;\n #canComplete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n uploadURL: string,\n completeURL: string\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#completeURL = completeURL;\n this.#uploadURL = uploadURL;\n this.#canComplete = false;\n }\n\n get canComplete(): boolean {\n return this.#canComplete;\n }\n\n allowComplete() {\n this.#canComplete = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get uploadURL(): string {\n return this.#uploadURL;\n }\n}\n","import { Queue } from \"@datastructures-js/queue\";\nimport {\n httpMethods,\n httpReqHeaders,\n httpRequestCredentials,\n} from \"../constants\";\nimport { mediaCodes } from \"../errorCodes\";\nimport { ApplicationError, BaseError } from \"../errors\";\nimport { decodeAPIResponse } from \"../response\";\nimport { MultipartUtil } from \"./multipartUtil\";\nimport { SinglepartUtil } from \"./singlepartUtil\";\nimport type {\n LifecycleHandler,\n MultipartPartInfo,\n MultipartUploadedPartDetails,\n Retry,\n UploadDetails,\n UploadLimits,\n} from \"./types\";\n\nconst defaultUploadLimit: UploadLimits = {\n concurrentUploads: 4,\n retryLimit: 3,\n};\n\nexport class Upload {\n #items: UploadDetails[];\n #lifecycleHandler: LifecycleHandler;\n #concurrentUploads: number;\n #retryLimit: number;\n #retryQueue: Queue<Retry>;\n #languageTag?: string;\n\n constructor(\n uploadItems: UploadDetails[],\n handler: LifecycleHandler,\n limits: UploadLimits = defaultUploadLimit,\n languageTag?: string\n ) {\n this.#items = uploadItems;\n this.#lifecycleHandler = handler;\n this.#concurrentUploads = limits.concurrentUploads;\n this.#retryLimit = limits.retryLimit;\n this.#retryQueue = new Queue();\n this.#languageTag = languageTag;\n }\n\n #canRetry(currentCount: number): boolean {\n return currentCount < this.#retryLimit;\n }\n\n #addRetry(task: Retry) {\n this.#retryQueue.enqueue(task);\n }\n\n async init() {\n this.#lifecycleHandler.init(this.#items);\n\n const running = new Set<Promise<void>>();\n for await (const task of this.#generateTasks()) {\n const p = task().finally(() => running.delete(p));\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n // wait for all initial task to complete\n await Promise.all(running);\n\n // complete retry action\n await this.#handleRetries();\n\n this.#lifecycleHandler.completed();\n }\n\n async #blobUpload(uploadURL: string, blob: Blob): Promise<Response> {\n return await fetch(uploadURL, {\n method: httpMethods.put,\n body: blob,\n });\n }\n\n async #singlepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (singlepartObj.canComplete) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n singlepartObj.uploadURL,\n singlepartObj.blob\n );\n if (!res.ok) {\n throw new ApplicationError(mediaCodes.singlepartUploadFailed, {\n mediaID: singlepartObj.id,\n });\n }\n\n singlepartObj.allowComplete();\n await this.#completeSinglepartUpload(singlepartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-upload\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #multipartUpload(\n multipartObj: MultipartUtil,\n partInfo: MultipartPartInfo,\n retryCount: number = 0\n ) {\n if (multipartObj.failed || multipartObj.contains(partInfo.partNumber)) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n partInfo.uploadURL,\n multipartObj.blob.slice(partInfo.startByte, partInfo.endByte)\n );\n if (!res.ok) {\n throw new ApplicationError(\n mediaCodes.multipartPartUploadFailed,\n {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n }\n );\n }\n\n const etag = res.headers.get(\"ETag\");\n if (!etag) {\n throw new ApplicationError(mediaCodes.missingETagValue, {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n });\n }\n\n multipartObj.add({\n partNumber: partInfo.partNumber,\n etag: etag,\n });\n\n this.#lifecycleHandler.multipartPartUploaded(\n multipartObj.id,\n multipartObj.uploadedPartsCount,\n multipartObj.totalPartsCount\n );\n\n if (!multipartObj.canComplete) return;\n await this.#completeMultipartUpload(multipartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.multipartPartUploadRetrying(\n multipartObj.id,\n partInfo.partNumber\n );\n\n this.#addRetry({\n type: \"multipart-part-upload\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n partInfo: partInfo,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async #completeUpload(\n completeURL: string,\n body?: MultipartUploadedPartDetails[]\n ) {\n let reqBody: BodyInit | undefined;\n let headers: Record<string, string> | undefined;\n if (body) {\n reqBody = JSON.stringify({\n partsInfo: body,\n });\n\n headers = {\n [httpReqHeaders.contentType.key]:\n httpReqHeaders.contentType.valueApplicationJSON,\n };\n }\n\n if (this.#languageTag) {\n headers = headers || {};\n headers[httpReqHeaders.userLocale.key] = this.#languageTag;\n }\n\n const apiRes = await fetch(completeURL, {\n method: httpMethods.post,\n body: reqBody,\n headers: headers,\n credentials: httpRequestCredentials.include,\n });\n await decodeAPIResponse(apiRes);\n }\n\n async #completeSinglepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (!singlepartObj.canComplete) {\n return;\n }\n\n try {\n await this.#completeUpload(singlepartObj.completeURL);\n\n this.#lifecycleHandler.itemUploaded(singlepartObj.id);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-complete\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #completeMultipartUpload(\n multipartObj: MultipartUtil,\n retryCount: number = 0\n ) {\n if (!multipartObj.tryStartComplete()) {\n return;\n }\n\n try {\n await this.#completeUpload(\n multipartObj.completeURL,\n multipartObj.list\n );\n\n this.#lifecycleHandler.itemUploaded(multipartObj.id);\n } catch (err) {\n multipartObj.resetComplete();\n\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(multipartObj.id);\n this.#addRetry({\n type: \"multipart-complete\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async *#generateTasks(): AsyncGenerator<() => Promise<void>> {\n for (const item of this.#items) {\n if (item.uploadType === \"singlepart\") {\n const singlepartObj = new SinglepartUtil(\n item.mediaID,\n item.file,\n item.presignPut,\n item.singlepartSuccessCallback\n );\n\n yield async () => {\n await this.#singlepartUpload(singlepartObj);\n };\n continue;\n }\n\n // multipart\n const multipartObj = new MultipartUtil(\n item.mediaID,\n item.file,\n item.multipartSuccessCallback,\n item.multipartPresignPart.length\n );\n\n // file slice byte range\n let startByte = 0;\n let endByte = 0;\n\n for (const partDetails of item.multipartPresignPart) {\n endByte += partDetails.partSize;\n\n const partInfo: MultipartPartInfo = {\n partNumber: partDetails.partNumber,\n uploadURL: partDetails.presignPut,\n startByte: startByte,\n endByte: endByte,\n };\n\n yield async () => {\n await this.#multipartUpload(multipartObj, partInfo);\n };\n\n startByte = endByte;\n }\n }\n }\n\n #retryTask(task: Retry): Promise<void> {\n // promise assignment\n switch (task.type) {\n case \"singlepart-upload\":\n return this.#singlepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"singlepart-complete\":\n return this.#completeSinglepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"multipart-part-upload\":\n return this.#multipartUpload(\n task.multipartObj,\n task.partInfo,\n task.retryCount\n );\n case \"multipart-complete\":\n return this.#completeMultipartUpload(\n task.multipartObj,\n task.retryCount\n );\n default: {\n const _exhaustiveCheck: never = task;\n void _exhaustiveCheck;\n\n throw new BaseError(\n `Unhandled retry task type: ${(task as { type: string }).type}`\n );\n }\n }\n }\n\n async #handleRetries() {\n const running = new Set<Promise<void>>();\n\n while (true) {\n if (this.#retryQueue.isEmpty()) break;\n\n while (!this.#retryQueue.isEmpty()) {\n const task = this.#retryQueue.dequeue();\n if (!task) break;\n\n const p: Promise<void> = this.#retryTask(task).finally(() =>\n running.delete(p)\n );\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n await Promise.all(running);\n }\n }\n}\n","import type { UploadItem, UploadItems } from \"./types\";\nimport { Upload } from \"./uploadUtil\";\n\nexport const uploadItem: UploadItem = async (\n item,\n handler,\n limits,\n languageTag\n) => {\n await uploadItems([item], handler, limits, languageTag);\n};\n\nexport const uploadItems: UploadItems = async (\n items,\n handler,\n limits,\n languageTag\n) => {\n const uploadObj = new Upload(items, handler, limits, languageTag);\n await uploadObj.init();\n};\n","import { BaseError } from \"../errors\";\nimport type { NewUploadDetails, NewUploadsDetails } from \"./types\";\n\nexport const newUploadDetails: NewUploadDetails = (mediaInfo, apiResponse) => {\n if (mediaInfo.id !== apiResponse.mediaID) {\n throw new BaseError(\"media item and response id mismatch\");\n }\n\n return {\n ...apiResponse,\n file: mediaInfo.file,\n size: mediaInfo.size,\n };\n};\n\nexport const newUploadsDetails: NewUploadsDetails = (\n mediaInfos,\n apiResponses\n) => {\n if (mediaInfos.length !== apiResponses.length) {\n throw new BaseError(\n `items mismatch: mediaInfos=${mediaInfos.length}, apiResponses=${apiResponses.length}`\n );\n }\n\n const apiResponseMap = new Map(\n apiResponses.map((response) => [response.mediaID, response])\n );\n\n return mediaInfos.map((mediaInfo) => {\n const apiResponse = apiResponseMap.get(mediaInfo.id);\n if (!apiResponse) {\n // This case should not happen if lengths are equal and IDs are unique,\n // but it's good practice to handle it defensively.\n throw new BaseError(\n `Could not find a matching API response for media info with id: ${mediaInfo.id}`\n );\n }\n return newUploadDetails(mediaInfo, apiResponse);\n });\n};\n"],"names":["newMediaInfo","item","MediaUploadLimit","newMediaTooLargeError","uuidv7","newMediaInfos","items","MediaItemsLimit","newMediaItemsLimitExceedError","toUploadPayload","toUploadPayloads","MultipartPartUploadSchema","z","MultipartSchema","SinglepartSchema","UploadDetailsAPIResSchema","MultipartUtil","#id","#blob","#response","#parts","#totalParts","#completeURL","#failed","#complete","id","blob","completeURL","totalParts","itemRes","partNumber","a","b","SinglepartUtil","#uploadURL","#canComplete","uploadURL","defaultUploadLimit","Upload","#items","#lifecycleHandler","#concurrentUploads","#retryLimit","#retryQueue","#languageTag","uploadItems","handler","limits","languageTag","Queue","#canRetry","currentCount","#addRetry","task","running","#generateTasks","p","#handleRetries","#blobUpload","httpMethods","#singlepartUpload","singlepartObj","retryCount","ApplicationError","mediaCodes","#completeSinglepartUpload","err","#multipartUpload","multipartObj","partInfo","res","etag","#completeMultipartUpload","#completeUpload","body","reqBody","headers","httpReqHeaders","apiRes","httpRequestCredentials","decodeAPIResponse","startByte","endByte","partDetails","#retryTask","BaseError","uploadItem","newUploadDetails","mediaInfo","apiResponse","newUploadsDetails","mediaInfos","apiResponses","apiResponseMap","response"],"mappings":"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"}
|
package/dist/constants/index.js
CHANGED
|
@@ -8,7 +8,7 @@ const e = {
|
|
|
8
8
|
include: "include",
|
|
9
9
|
sameOrigin: "same-origin",
|
|
10
10
|
omit: "omit"
|
|
11
|
-
},
|
|
11
|
+
}, i = {
|
|
12
12
|
contentType: {
|
|
13
13
|
key: "Content-Type",
|
|
14
14
|
valueApplicationJSON: "application/json"
|
|
@@ -21,10 +21,12 @@ const e = {
|
|
|
21
21
|
userLocale: {
|
|
22
22
|
key: "x-user-locale"
|
|
23
23
|
}
|
|
24
|
-
};
|
|
24
|
+
}, o = 100, a = 1e4 * (10 << 20);
|
|
25
25
|
export {
|
|
26
|
+
o as MediaItemsLimit,
|
|
27
|
+
a as MediaUploadLimit,
|
|
26
28
|
e as httpMethods,
|
|
27
|
-
|
|
29
|
+
i as httpReqHeaders,
|
|
28
30
|
t as httpRequestCredentials
|
|
29
31
|
};
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constants/http_methods.ts","../../src/constants/httpRequestCredentials.ts","../../src/constants/httpRequestHeaders.ts"],"sourcesContent":["export const httpMethods = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\",\n} as const;\n","export const httpRequestCredentials: Record<string, RequestCredentials> = {\n include: \"include\",\n sameOrigin: \"same-origin\",\n omit: \"omit\",\n} as const;\n","export const httpReqHeaders = {\n contentType: {\n key: \"Content-Type\",\n valueApplicationJSON: \"application/json\",\n },\n authorization: {\n key: \"Authorization\",\n schemeBearer: \"Bearer\",\n schemeBasic: \"Basic\",\n },\n userLocale: {\n key: \"x-user-locale\",\n },\n} as const;\n"],"names":["httpMethods","httpRequestCredentials","httpReqHeaders"],"mappings":"AAAO,MAAMA,IAAc;AAAA,EACvB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACZ,GCNaC,IAA6D;AAAA,EACtE,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AACV,GCJaC,IAAiB;AAAA,EAC1B,aAAa;AAAA,IACT,KAAK;AAAA,IACL,sBAAsB;AAAA,EAAA;AAAA,EAE1B,eAAe;AAAA,IACX,KAAK;AAAA,IACL,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAAA,EAEjB,YAAY;AAAA,IACR,KAAK;AAAA,EAAA;AAEb;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/constants/http_methods.ts","../../src/constants/httpRequestCredentials.ts","../../src/constants/httpRequestHeaders.ts","../../src/constants/media_limits.ts"],"sourcesContent":["export const httpMethods = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\",\n} as const;\n","export const httpRequestCredentials: Record<string, RequestCredentials> = {\n include: \"include\",\n sameOrigin: \"same-origin\",\n omit: \"omit\",\n} as const;\n","export const httpReqHeaders = {\n contentType: {\n key: \"Content-Type\",\n valueApplicationJSON: \"application/json\",\n },\n authorization: {\n key: \"Authorization\",\n schemeBearer: \"Bearer\",\n schemeBasic: \"Basic\",\n },\n userLocale: {\n key: \"x-user-locale\",\n },\n} as const;\n","export const MediaItemsLimit = 100;\n\n// 10k parts each part 10 mega byte\nexport const MediaUploadLimit = 10000 * (10 << 20);\n"],"names":["httpMethods","httpRequestCredentials","httpReqHeaders","MediaItemsLimit","MediaUploadLimit"],"mappings":"AAAO,MAAMA,IAAc;AAAA,EACvB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACZ,GCNaC,IAA6D;AAAA,EACtE,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AACV,GCJaC,IAAiB;AAAA,EAC1B,aAAa;AAAA,IACT,KAAK;AAAA,IACL,sBAAsB;AAAA,EAAA;AAAA,EAE1B,eAAe;AAAA,IACX,KAAK;AAAA,IACL,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAAA,EAEjB,YAAY;AAAA,IACR,KAAK;AAAA,EAAA;AAEb,GCbaC,IAAkB,KAGlBC,IAAmB,OAAS,MAAM;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const authCodes: {
|
|
2
3
|
readonly invalidApiKey: "invalid-api-key";
|
|
3
4
|
readonly userNotFound: "user-not-found";
|
|
@@ -12,3 +13,5 @@ export declare const authCodes: {
|
|
|
12
13
|
readonly userDisabled: "user-disabled";
|
|
13
14
|
readonly tokenNotFound: "token-not-found";
|
|
14
15
|
};
|
|
16
|
+
export declare const authOverrides: ErrorNormalization;
|
|
17
|
+
export declare const signedURLOverrides: ErrorNormalization;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const commonCodes: {
|
|
2
3
|
readonly invalidId: "invalid-id";
|
|
3
4
|
readonly routeNotFound: "route-not-found";
|
|
@@ -6,3 +7,4 @@ export declare const commonCodes: {
|
|
|
6
7
|
readonly unexpectedError: "unexpected-error";
|
|
7
8
|
readonly zodError: "zod-error";
|
|
8
9
|
};
|
|
10
|
+
export declare const commonOverrides: ErrorNormalization;
|
package/dist/errorCodes/iam.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const iamCodes: {
|
|
2
3
|
readonly selfPermissionMismatch: "self-permission-mismatch";
|
|
3
4
|
readonly invalidActor: "invalid-actor";
|
|
4
5
|
readonly permissionExplicitlyDenied: "permission-explicitly-denied";
|
|
5
6
|
readonly missingPermission: "missing-permission";
|
|
6
7
|
};
|
|
8
|
+
export declare const iamOverrides: ErrorNormalization;
|
package/dist/errorCodes/index.js
CHANGED
|
@@ -1,88 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
tokenNotFound: "token-not-found"
|
|
14
|
-
}, o = {
|
|
15
|
-
invalidId: "invalid-id",
|
|
16
|
-
routeNotFound: "route-not-found",
|
|
17
|
-
methodNotAllowed: "method-not-allowed",
|
|
18
|
-
networkError: "network-error",
|
|
19
|
-
unexpectedError: "unexpected-error",
|
|
20
|
-
zodError: "zod-error"
|
|
21
|
-
}, i = {
|
|
22
|
-
formValidationFailed: "validation-failed"
|
|
23
|
-
}, n = {
|
|
24
|
-
missing: "missing",
|
|
25
|
-
overflow: "overflow",
|
|
26
|
-
underflow: "underflow",
|
|
27
|
-
length: "length",
|
|
28
|
-
invalid: "invalid",
|
|
29
|
-
unknown: "unknown"
|
|
30
|
-
}, a = {
|
|
31
|
-
invalidValue: "invalid-value",
|
|
32
|
-
invalidEnumValue: "invalid-enum-value",
|
|
33
|
-
requireHttps: "require-https",
|
|
34
|
-
missingHost: "missing-host",
|
|
35
|
-
containsPath: "contains-path",
|
|
36
|
-
containsQuery: "contains-query",
|
|
37
|
-
containsFragment: "contains-fragment",
|
|
38
|
-
absoluteUrl: "absolute-url",
|
|
39
|
-
nilID: "nil-id",
|
|
40
|
-
invalidEmail: "invalid-email",
|
|
41
|
-
missingMxRecords: "missing-mx-records",
|
|
42
|
-
notDigit: "not-digit",
|
|
43
|
-
notBase64UrlEncoded: "not-base64-url-encoded",
|
|
44
|
-
invalidUrl: "invalid-url",
|
|
45
|
-
nullValue: "null-value"
|
|
46
|
-
}, t = {
|
|
47
|
-
selfPermissionMismatch: "self-permission-mismatch",
|
|
48
|
-
invalidActor: "invalid-actor",
|
|
49
|
-
permissionExplicitlyDenied: "permission-explicitly-denied",
|
|
50
|
-
missingPermission: "missing-permission"
|
|
51
|
-
}, r = {
|
|
52
|
-
invalidMultipartNumber: "invalid-multipart-upload-part-number",
|
|
53
|
-
mediaObjectNotFound: "object-not-found",
|
|
54
|
-
mediaTooLarge: "media-too-large",
|
|
55
|
-
mediaItemsLimitExceeded: "media-items-limit-exceeded",
|
|
56
|
-
uploadAlreadyCompleted: "upload-already-completed",
|
|
57
|
-
unsupportedObjectUploaded: "unsupported-object-uploaded",
|
|
58
|
-
completeMultipartUploadCalledTooSoon: "complete-multipart-upload-called-too-soon",
|
|
59
|
-
singlepartUploadFailed: "singlepart-upload-failed",
|
|
60
|
-
multipartPartUploadFailed: "multipart-part-upload-failed",
|
|
61
|
-
missingETagValue: "missing-etag-value"
|
|
62
|
-
}, d = {
|
|
63
|
-
invalidCursorValue: "invalid-cursor-value"
|
|
64
|
-
}, s = {
|
|
65
|
-
invalidRequestBody: "invalid-request-body",
|
|
66
|
-
unknownFieldInRequestBody: "unknown-field-in-request-body",
|
|
67
|
-
emptyRequestBody: "empty-request-body",
|
|
68
|
-
requestBodyTooLarge: "request-body-too-large"
|
|
69
|
-
}, l = {
|
|
70
|
-
malformedResponseBody: "malformed-response-body",
|
|
71
|
-
malformedJsonFromServer: "malformed-json-from-server",
|
|
72
|
-
invalidResponseShape: "invalid-response-shape",
|
|
73
|
-
unknownServerError: "unknown-server-error",
|
|
74
|
-
internalServerError: "internal-server-error"
|
|
75
|
-
};
|
|
1
|
+
import { b as e, o as s, d as r, h as a, j as d, k as o, r as i, n as m } from "../chunks/server";
|
|
2
|
+
import { a as O, c as p, f, e as l, g as u, i as c, m as g, p as y, l as h, s as q } from "../chunks/server";
|
|
3
|
+
const n = [
|
|
4
|
+
e,
|
|
5
|
+
s,
|
|
6
|
+
r,
|
|
7
|
+
a,
|
|
8
|
+
d,
|
|
9
|
+
o,
|
|
10
|
+
i,
|
|
11
|
+
m
|
|
12
|
+
];
|
|
76
13
|
export {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
n as
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
14
|
+
O as authCodes,
|
|
15
|
+
e as authOverrides,
|
|
16
|
+
p as commonCodes,
|
|
17
|
+
r as commonOverrides,
|
|
18
|
+
n as defaultOverrides,
|
|
19
|
+
f as formCodes,
|
|
20
|
+
l as formFieldInvalidTypeCauses,
|
|
21
|
+
u as formFieldTypes,
|
|
22
|
+
c as iamCodes,
|
|
23
|
+
a as iamOverrides,
|
|
24
|
+
g as mediaCodes,
|
|
25
|
+
d as mediaOverrides,
|
|
26
|
+
y as paginationCodes,
|
|
27
|
+
o as paginationOverrides,
|
|
28
|
+
i as reqBodyOverrides,
|
|
29
|
+
h as requestBodyCodes,
|
|
30
|
+
q as serverCodes,
|
|
31
|
+
m as serverOverrides,
|
|
32
|
+
s as signedURLOverrides
|
|
87
33
|
};
|
|
88
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/errorCodes/
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/errorCodes/overrides.ts"],"sourcesContent":["import type { ErrorNormalization } from \"../errors\";\nimport { authOverrides, signedURLOverrides } from \"./auth\";\nimport { commonOverrides } from \"./common\";\nimport { iamOverrides } from \"./iam\";\nimport { mediaOverrides } from \"./media\";\nimport { paginationOverrides } from \"./pagination\";\nimport { reqBodyOverrides } from \"./reqBody\";\nimport { serverOverrides } from \"./server\";\n\nexport const defaultOverrides: readonly ErrorNormalization[] = [\n authOverrides,\n signedURLOverrides,\n commonOverrides,\n iamOverrides,\n mediaOverrides,\n paginationOverrides,\n reqBodyOverrides,\n serverOverrides,\n] as const;\n"],"names":["defaultOverrides","authOverrides","signedURLOverrides","commonOverrides","iamOverrides","mediaOverrides","paginationOverrides","reqBodyOverrides","serverOverrides"],"mappings":";;AASO,MAAMA,IAAkD;AAAA,EAC3DC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AACJ;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const mediaCodes: {
|
|
2
3
|
readonly invalidMultipartNumber: "invalid-multipart-upload-part-number";
|
|
3
4
|
readonly mediaObjectNotFound: "object-not-found";
|
|
@@ -10,3 +11,4 @@ export declare const mediaCodes: {
|
|
|
10
11
|
readonly multipartPartUploadFailed: "multipart-part-upload-failed";
|
|
11
12
|
readonly missingETagValue: "missing-etag-value";
|
|
12
13
|
};
|
|
14
|
+
export declare const mediaOverrides: ErrorNormalization;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const requestBodyCodes: {
|
|
2
3
|
readonly invalidRequestBody: "invalid-request-body";
|
|
3
4
|
readonly unknownFieldInRequestBody: "unknown-field-in-request-body";
|
|
4
5
|
readonly emptyRequestBody: "empty-request-body";
|
|
5
6
|
readonly requestBodyTooLarge: "request-body-too-large";
|
|
6
7
|
};
|
|
8
|
+
export declare const reqBodyOverrides: ErrorNormalization;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ErrorNormalization } from '../errors';
|
|
1
2
|
export declare const serverCodes: {
|
|
2
3
|
readonly malformedResponseBody: "malformed-response-body";
|
|
3
4
|
readonly malformedJsonFromServer: "malformed-json-from-server";
|
|
@@ -5,3 +6,4 @@ export declare const serverCodes: {
|
|
|
5
6
|
readonly unknownServerError: "unknown-server-error";
|
|
6
7
|
readonly internalServerError: "internal-server-error";
|
|
7
8
|
};
|
|
9
|
+
export declare const serverOverrides: ErrorNormalization;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { a as r, c as s, b as i, d as o, e as m, f as n, g as c, h, i as
|
|
2
|
-
import {
|
|
1
|
+
import { a as r, c as s, b as i, d as o, e as m, f as n, g as c, h as d, i as h, j as t, k as l, l as S, m as u, n as E, o as p, p as f, q as v, r as g, s as F, t as U, u as N, v as y, w, x, y as I, z as M, C as V, D as b, E as D, F as A, G as B, H as L, I as O, J as R, K as q, L as T, M as k, N as P, O as j, P as z, Q as C, R as H, S as J, T as K, U as Q, V as G, W, X, Y, Z, _, $, a0 as aa, a1 as ea, a2 as ra, a3 as sa, a4 as ia, a5 as oa, a6 as ma, a7 as na, a8 as ca, a9 as da, aa as ha, ab as ta } from "../chunks/schema";
|
|
2
|
+
import { n as Sa, a as ua } from "../chunks/create";
|
|
3
|
+
import { f as pa } from "../chunks/formParse";
|
|
3
4
|
export {
|
|
4
5
|
r as absoluteUrlErrorSchema,
|
|
5
6
|
s as completeMultipartUploadCalledTooSoonSchema,
|
|
@@ -8,43 +9,45 @@ export {
|
|
|
8
9
|
m as containsQueryErrorSchema,
|
|
9
10
|
n as emptyRequestBodySchema,
|
|
10
11
|
c as errorSchema,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
d as fieldInvalidSchema,
|
|
13
|
+
h as fieldLengthErrorSchema,
|
|
14
|
+
t as fieldMissingErrorSchema,
|
|
15
|
+
l as fieldOverflowErrorSchema,
|
|
16
|
+
S as fieldUnderflowErrorSchema,
|
|
16
17
|
u as fieldUnknownValidationErrorSchema,
|
|
17
|
-
|
|
18
|
+
pa as flattenFieldNodes,
|
|
18
19
|
E as formFieldDiscriminatedUnionSchema,
|
|
19
20
|
p as formFieldInvalidDiscriminatedUnion,
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
f as formValidationFailedSchema,
|
|
22
|
+
v as hashMismatchSchema,
|
|
22
23
|
g as internalServerErrorSchema,
|
|
23
24
|
F as invalidActorSchema,
|
|
24
25
|
U as invalidApiKeySchema,
|
|
25
26
|
N as invalidAuthHeaderValueSchema,
|
|
26
27
|
y as invalidCursorValueSchema,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
w as invalidEmailErrorSchema,
|
|
29
|
+
x as invalidEnumValueErrorSchema,
|
|
30
|
+
I as invalidIDSchema,
|
|
31
|
+
M as invalidMultipartNumberSchema,
|
|
32
|
+
V as invalidRequestBodySchema,
|
|
33
|
+
b as invalidResponseShapeSchema,
|
|
33
34
|
D as invalidSignedUrlSchema,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
A as invalidUrlErrorSchema,
|
|
36
|
+
B as invalidValueErrorSchema,
|
|
37
|
+
L as jwtNotAcceptableSchema,
|
|
38
|
+
O as malformedJSONFromServerSchema,
|
|
39
|
+
R as malformedResponseBodySchema,
|
|
40
|
+
q as mediaItemsLimitExceededSchema,
|
|
41
|
+
T as mediaObjectNotFoundSchema,
|
|
42
|
+
k as mediaTooLargeSchema,
|
|
43
|
+
P as methodNotAllowedSchema,
|
|
43
44
|
j as missingETagValueSchema,
|
|
44
45
|
z as missingHostErrorSchema,
|
|
45
46
|
C as missingMxRecordsErrorSchema,
|
|
46
47
|
H as missingPermissionSchema,
|
|
47
48
|
J as multipartPartUploadFailedSchema,
|
|
49
|
+
Sa as newMediaItemsLimitExceedError,
|
|
50
|
+
ua as newMediaTooLargeError,
|
|
48
51
|
K as nilIDErrorSchema,
|
|
49
52
|
Q as notBase64UrlEncodedErrorSchema,
|
|
50
53
|
G as notDigitErrorSchema,
|
|
@@ -63,8 +66,8 @@ export {
|
|
|
63
66
|
ma as unsupportedObjectUploadedSchema,
|
|
64
67
|
na as uploadAlreadyCompletedSchema,
|
|
65
68
|
ca as userDisabledSchema,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
da as userNotExistInOrganizationSchema,
|
|
70
|
+
ha as userNotExistsInOrganizationManagementSchema,
|
|
71
|
+
ta as userNotFoundSchema
|
|
69
72
|
};
|
|
70
73
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -7,7 +7,7 @@ export declare const mediaObjectNotFoundSchema: z.ZodObject<{
|
|
|
7
7
|
}, z.core.$strip>;
|
|
8
8
|
export declare const mediaTooLargeSchema: z.ZodObject<{
|
|
9
9
|
code: z.ZodLiteral<"media-too-large">;
|
|
10
|
-
mediaID: z.
|
|
10
|
+
mediaID: z.ZodString;
|
|
11
11
|
currentSize: z.ZodInt;
|
|
12
12
|
maxSupportedSize: z.ZodInt;
|
|
13
13
|
}, z.core.$strip>;
|
|
@@ -54,7 +54,7 @@ export declare const errorSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
54
54
|
code: z.ZodLiteral<"object-not-found">;
|
|
55
55
|
}, z.core.$strip>, z.ZodObject<{
|
|
56
56
|
code: z.ZodLiteral<"media-too-large">;
|
|
57
|
-
mediaID: z.
|
|
57
|
+
mediaID: z.ZodString;
|
|
58
58
|
currentSize: z.ZodInt;
|
|
59
59
|
maxSupportedSize: z.ZodInt;
|
|
60
60
|
}, z.core.$strip>, z.ZodObject<{
|
package/dist/errors/index.d.ts
CHANGED
package/dist/errors/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { A as a, B as p } from "../chunks/
|
|
2
|
-
import {
|
|
1
|
+
import { A as a, B as p } from "../chunks/schema";
|
|
2
|
+
import { n as e, p as E } from "../chunks/parse";
|
|
3
3
|
export {
|
|
4
4
|
a as ApplicationError,
|
|
5
5
|
p as BaseError,
|
|
6
|
-
e as
|
|
6
|
+
e as normalizeError,
|
|
7
|
+
E as parseError
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ParseErrorResponse } from './parse';
|
|
2
|
+
export type ErrorNormalization = {
|
|
3
|
+
code: string;
|
|
4
|
+
items: readonly string[];
|
|
5
|
+
};
|
|
6
|
+
export declare const normalizeError: (parsedResponse: ParseErrorResponse | {
|
|
7
|
+
code: string;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}, customOverrides?: readonly ErrorNormalization[]) => ParseErrorResponse | {
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
code: string;
|
|
12
|
+
};
|
package/dist/errors/parse.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as z } from 'zod';
|
|
2
2
|
import { commonCodes } from '../errorCodes';
|
|
3
3
|
import { ErrorDetails } from '../errorSchema';
|
|
4
|
-
type ParseErrorResponse = {
|
|
4
|
+
export type ParseErrorResponse = {
|
|
5
5
|
code: typeof commonCodes.networkError;
|
|
6
6
|
debugMessage: string;
|
|
7
7
|
} | {
|
|
@@ -12,4 +12,3 @@ type ParseErrorResponse = {
|
|
|
12
12
|
error: z.ZodError;
|
|
13
13
|
} | ErrorDetails;
|
|
14
14
|
export declare function parseError(err: unknown): ParseErrorResponse;
|
|
15
|
-
export {};
|