@payloadcms/storage-r2 4.0.0-internal.688c4d0 → 4.0.0-internal.811e0a4
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/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2018-
|
|
3
|
+
Copyright (c) 2018-2026 Payload CMS, LLC <info@payloadcms.com>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
6
|
a copy of this software and associated documentation files (the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"R2ClientUploadHandler.d.ts","sourceRoot":"","sources":["../../src/client/R2ClientUploadHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"R2ClientUploadHandler.d.ts","sourceRoot":"","sources":["../../src/client/R2ClientUploadHandler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,kCAAkC,EAGnC,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,qBAAqB;;;;;;;iCAyFhC,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { createClientUploadHandler } from '@payloadcms/plugin-cloud-storage/client';
|
|
3
|
-
import { getFileKey } from '@payloadcms/plugin-cloud-storage/utilities';
|
|
2
|
+
import { createClientUploadHandler, getFileKey } from '@payloadcms/plugin-cloud-storage/client';
|
|
4
3
|
import { formatAdminURL } from 'payload/shared';
|
|
5
4
|
export const R2ClientUploadHandler = createClientUploadHandler({
|
|
6
5
|
handler: async ({ apiRoute, collectionSlug, docPrefix, extra: { chunkSize = 5 * 1024 * 1024 }, file, prefix, serverHandlerPath, serverURL, updateFilename })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/R2ClientUploadHandler.ts"],"sourcesContent":["'use client'\n\nimport { createClientUploadHandler
|
|
1
|
+
{"version":3,"sources":["../../src/client/R2ClientUploadHandler.ts"],"sourcesContent":["'use client'\n\nimport { createClientUploadHandler, getFileKey } from '@payloadcms/plugin-cloud-storage/client'\nimport { formatAdminURL } from 'payload/shared'\n\nimport type {\n R2MultipartUpload,\n R2StorageClientUploadContext,\n R2StorageClientUploadHandlerParams,\n R2StorageMultipartUploadHandlerParams,\n R2UploadedPart,\n} from '../types.js'\n\nexport const R2ClientUploadHandler = createClientUploadHandler<R2StorageClientUploadHandlerParams>({\n handler: async ({\n apiRoute,\n collectionSlug,\n docPrefix,\n extra: { chunkSize = 5 * 1024 * 1024 },\n file,\n prefix,\n serverHandlerPath,\n serverURL,\n updateFilename,\n }): Promise<R2StorageClientUploadContext | undefined> => {\n const { sanitizedDocPrefix } = getFileKey({\n collectionPrefix: prefix,\n docPrefix,\n filename: file.name,\n })\n\n const params: R2StorageMultipartUploadHandlerParams = {\n collection: collectionSlug,\n docPrefix: sanitizedDocPrefix,\n fileName: file.name,\n fileType: file.type,\n }\n const baseURL = formatAdminURL({\n apiRoute,\n path: serverHandlerPath,\n serverURL,\n })\n\n const endpoint = `${baseURL}?${String(new URLSearchParams(params))}`\n\n // upload the file directly to R2 using the signed URL\n const multipart = await fetch(endpoint, { method: 'POST' })\n if (!multipart.ok) {\n throw new Error('Failed to initialize multipart upload')\n }\n\n const { filename: sanitizedFilename, ...multipartUpload } = (await multipart.json()) as {\n filename?: string\n } & Pick<R2MultipartUpload, 'key' | 'uploadId'>\n\n if (sanitizedFilename && sanitizedFilename !== file.name) {\n updateFilename(sanitizedFilename)\n }\n\n const multipartUploadedParts: R2UploadedPart[] = []\n\n params.multipartId = multipartUpload.uploadId\n params.multipartKey = multipartUpload.key\n\n const partTotal = Math.ceil(file.size / chunkSize)\n\n for (let part = 1; part <= partTotal; part++) {\n const bytesEnd = Math.min(part * chunkSize, file.size)\n const bytesStart = (part - 1) * chunkSize\n\n params.multipartNumber = String(part)\n\n const body = file.slice(bytesStart, bytesEnd)\n const headers = {\n 'Content-Length': String(body.size),\n 'Content-Type': 'application/octet-stream',\n }\n const uploaded = await fetch(endpoint, { body, headers, method: 'POST' })\n if (!uploaded.ok) {\n throw new Error(`Failed to upload part ${part} / ${partTotal}`)\n }\n\n multipartUploadedParts.push((await uploaded.json()) as R2UploadedPart)\n\n if (part === partTotal) {\n delete params.multipartNumber\n\n const body = JSON.stringify(multipartUploadedParts)\n const headers = { 'Content-Type': 'application/json' }\n const complete = await fetch(endpoint, { body, headers, method: 'POST' })\n if (!complete.ok) {\n throw new Error(`Failed to complete multipart upload`)\n }\n\n const key = await complete.text()\n return {\n key,\n prefix: sanitizedDocPrefix,\n }\n }\n }\n },\n})\n"],"names":["createClientUploadHandler","getFileKey","formatAdminURL","R2ClientUploadHandler","handler","apiRoute","collectionSlug","docPrefix","extra","chunkSize","file","prefix","serverHandlerPath","serverURL","updateFilename","sanitizedDocPrefix","collectionPrefix","filename","name","params","collection","fileName","fileType","type","baseURL","path","endpoint","String","URLSearchParams","multipart","fetch","method","ok","Error","sanitizedFilename","multipartUpload","json","multipartUploadedParts","multipartId","uploadId","multipartKey","key","partTotal","Math","ceil","size","part","bytesEnd","min","bytesStart","multipartNumber","body","slice","headers","uploaded","push","JSON","stringify","complete","text"],"mappings":"AAAA;AAEA,SAASA,yBAAyB,EAAEC,UAAU,QAAQ,0CAAyC;AAC/F,SAASC,cAAc,QAAQ,iBAAgB;AAU/C,OAAO,MAAMC,wBAAwBH,0BAA8D;IACjGI,SAAS,OAAO,EACdC,QAAQ,EACRC,cAAc,EACdC,SAAS,EACTC,OAAO,EAAEC,YAAY,IAAI,OAAO,IAAI,EAAE,EACtCC,IAAI,EACJC,MAAM,EACNC,iBAAiB,EACjBC,SAAS,EACTC,cAAc,EACf;QACC,MAAM,EAAEC,kBAAkB,EAAE,GAAGd,WAAW;YACxCe,kBAAkBL;YAClBJ;YACAU,UAAUP,KAAKQ,IAAI;QACrB;QAEA,MAAMC,SAAgD;YACpDC,YAAYd;YACZC,WAAWQ;YACXM,UAAUX,KAAKQ,IAAI;YACnBI,UAAUZ,KAAKa,IAAI;QACrB;QACA,MAAMC,UAAUtB,eAAe;YAC7BG;YACAoB,MAAMb;YACNC;QACF;QAEA,MAAMa,WAAW,GAAGF,QAAQ,CAAC,EAAEG,OAAO,IAAIC,gBAAgBT,UAAU;QAEpE,sDAAsD;QACtD,MAAMU,YAAY,MAAMC,MAAMJ,UAAU;YAAEK,QAAQ;QAAO;QACzD,IAAI,CAACF,UAAUG,EAAE,EAAE;YACjB,MAAM,IAAIC,MAAM;QAClB;QAEA,MAAM,EAAEhB,UAAUiB,iBAAiB,EAAE,GAAGC,iBAAiB,GAAI,MAAMN,UAAUO,IAAI;QAIjF,IAAIF,qBAAqBA,sBAAsBxB,KAAKQ,IAAI,EAAE;YACxDJ,eAAeoB;QACjB;QAEA,MAAMG,yBAA2C,EAAE;QAEnDlB,OAAOmB,WAAW,GAAGH,gBAAgBI,QAAQ;QAC7CpB,OAAOqB,YAAY,GAAGL,gBAAgBM,GAAG;QAEzC,MAAMC,YAAYC,KAAKC,IAAI,CAAClC,KAAKmC,IAAI,GAAGpC;QAExC,IAAK,IAAIqC,OAAO,GAAGA,QAAQJ,WAAWI,OAAQ;YAC5C,MAAMC,WAAWJ,KAAKK,GAAG,CAACF,OAAOrC,WAAWC,KAAKmC,IAAI;YACrD,MAAMI,aAAa,AAACH,CAAAA,OAAO,CAAA,IAAKrC;YAEhCU,OAAO+B,eAAe,GAAGvB,OAAOmB;YAEhC,MAAMK,OAAOzC,KAAK0C,KAAK,CAACH,YAAYF;YACpC,MAAMM,UAAU;gBACd,kBAAkB1B,OAAOwB,KAAKN,IAAI;gBAClC,gBAAgB;YAClB;YACA,MAAMS,WAAW,MAAMxB,MAAMJ,UAAU;gBAAEyB;gBAAME;gBAAStB,QAAQ;YAAO;YACvE,IAAI,CAACuB,SAAStB,EAAE,EAAE;gBAChB,MAAM,IAAIC,MAAM,CAAC,sBAAsB,EAAEa,KAAK,GAAG,EAAEJ,WAAW;YAChE;YAEAL,uBAAuBkB,IAAI,CAAE,MAAMD,SAASlB,IAAI;YAEhD,IAAIU,SAASJ,WAAW;gBACtB,OAAOvB,OAAO+B,eAAe;gBAE7B,MAAMC,OAAOK,KAAKC,SAAS,CAACpB;gBAC5B,MAAMgB,UAAU;oBAAE,gBAAgB;gBAAmB;gBACrD,MAAMK,WAAW,MAAM5B,MAAMJ,UAAU;oBAAEyB;oBAAME;oBAAStB,QAAQ;gBAAO;gBACvE,IAAI,CAAC2B,SAAS1B,EAAE,EAAE;oBAChB,MAAM,IAAIC,MAAM,CAAC,mCAAmC,CAAC;gBACvD;gBAEA,MAAMQ,MAAM,MAAMiB,SAASC,IAAI;gBAC/B,OAAO;oBACLlB;oBACA9B,QAAQI;gBACV;YACF;QACF;IACF;AACF,GAAE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/storage-r2",
|
|
3
|
-
"version": "4.0.0-internal.
|
|
3
|
+
"version": "4.0.0-internal.811e0a4",
|
|
4
4
|
"description": "Payload storage adapter for Cloudflare R2",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"dist"
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@payloadcms/plugin-cloud-storage": "4.0.0-internal.
|
|
40
|
+
"@payloadcms/plugin-cloud-storage": "4.0.0-internal.811e0a4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@cloudflare/workers-types": "4.20260218.0",
|
|
44
|
-
"payload": "4.0.0-internal.
|
|
44
|
+
"payload": "4.0.0-internal.811e0a4"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"payload": "4.0.0-internal.
|
|
47
|
+
"payload": "4.0.0-internal.811e0a4"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=24.15.0"
|