@payloadcms/storage-r2 4.0.0-internal.8867dba → 4.0.0-internal.9496957
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/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EAEpB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAO1C,UAAU,mBAAmB;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,aAAa,EACb,WAAW,EACX,oBAA4B,GAC7B,EAAE,mBAAmB,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EAEpB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAO1C,UAAU,mBAAmB;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,aAAa,EACb,WAAW,EACX,oBAA4B,GAC7B,EAAE,mBAAmB,GAAG,OAAO,CAwE/B"}
|
package/dist/adapter.js
CHANGED
|
@@ -4,10 +4,11 @@ import { defaultR2ClientUploadsAccess, getHandleMultiPartUpload } from './handle
|
|
|
4
4
|
import { uploadFile } from './uploadFile.js';
|
|
5
5
|
export function createR2Adapter({ bucket, clientUploads, collections, useCompositePrefixes = false }) {
|
|
6
6
|
const access = typeof clientUploads === 'object' && clientUploads.access ? clientUploads.access : defaultR2ClientUploadsAccess;
|
|
7
|
-
const uploadInstructions =
|
|
7
|
+
const uploadInstructions = {
|
|
8
8
|
adminHandler: {
|
|
9
9
|
path: '@payloadcms/storage-r2/client#R2ClientUploadHandler'
|
|
10
10
|
},
|
|
11
|
+
enabled: Boolean(clientUploads),
|
|
11
12
|
endpoint: {
|
|
12
13
|
handler: getHandleMultiPartUpload({
|
|
13
14
|
access,
|
|
@@ -28,7 +29,7 @@ export function createR2Adapter({ bucket, clientUploads, collections, useComposi
|
|
|
28
29
|
}
|
|
29
30
|
}),
|
|
30
31
|
useInAdmin: true
|
|
31
|
-
}
|
|
32
|
+
};
|
|
32
33
|
return ({ collection, prefix = '' })=>({
|
|
33
34
|
name: 'r2',
|
|
34
35
|
uploadInstructions,
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapter.ts"],"sourcesContent":["import type {\n Adapter,\n ClientUploadsConfig,\n GeneratedAdapter,\n} from '@payloadcms/plugin-cloud-storage/types'\n\nimport type { R2StorageOptions } from './index.js'\nimport type { R2Bucket } from './types.js'\n\nimport { deleteFile } from './deleteFile.js'\nimport { getFile } from './getFile.js'\nimport { defaultR2ClientUploadsAccess, getHandleMultiPartUpload } from './handleMultiPartUpload.js'\nimport { uploadFile } from './uploadFile.js'\n\ninterface CreateR2AdapterArgs {\n bucket: R2Bucket\n clientUploads?: ClientUploadsConfig\n collections: R2StorageOptions['collections']\n useCompositePrefixes?: boolean\n}\n\nexport function createR2Adapter({\n bucket,\n clientUploads,\n collections,\n useCompositePrefixes = false,\n}: CreateR2AdapterArgs): Adapter {\n const access =\n typeof clientUploads === 'object' && clientUploads.access\n ? clientUploads.access\n : defaultR2ClientUploadsAccess\n const uploadInstructions: GeneratedAdapter['uploadInstructions'] =
|
|
1
|
+
{"version":3,"sources":["../src/adapter.ts"],"sourcesContent":["import type {\n Adapter,\n ClientUploadsConfig,\n GeneratedAdapter,\n} from '@payloadcms/plugin-cloud-storage/types'\n\nimport type { R2StorageOptions } from './index.js'\nimport type { R2Bucket } from './types.js'\n\nimport { deleteFile } from './deleteFile.js'\nimport { getFile } from './getFile.js'\nimport { defaultR2ClientUploadsAccess, getHandleMultiPartUpload } from './handleMultiPartUpload.js'\nimport { uploadFile } from './uploadFile.js'\n\ninterface CreateR2AdapterArgs {\n bucket: R2Bucket\n clientUploads?: ClientUploadsConfig\n collections: R2StorageOptions['collections']\n useCompositePrefixes?: boolean\n}\n\nexport function createR2Adapter({\n bucket,\n clientUploads,\n collections,\n useCompositePrefixes = false,\n}: CreateR2AdapterArgs): Adapter {\n const access =\n typeof clientUploads === 'object' && clientUploads.access\n ? clientUploads.access\n : defaultR2ClientUploadsAccess\n const uploadInstructions: GeneratedAdapter['uploadInstructions'] = {\n adminHandler: {\n path: '@payloadcms/storage-r2/client#R2ClientUploadHandler',\n },\n enabled: Boolean(clientUploads),\n endpoint: {\n handler: getHandleMultiPartUpload({\n access,\n bucket,\n collections,\n useCompositePrefixes,\n }),\n path: '/storage-r2-multi-part-upload',\n },\n generate: ({ filename, filesize, mimeType }) => ({\n name: 'uploadToR2',\n type: 'dispatch',\n file: {\n filename,\n mimeType,\n size: filesize,\n uploadReference: {},\n },\n }),\n useInAdmin: true,\n }\n\n return ({ collection, prefix = '' }): GeneratedAdapter => ({\n name: 'r2',\n uploadInstructions,\n\n handleDelete: ({ doc: { prefix: docPrefix = '' }, filename }) =>\n deleteFile({\n bucket,\n collectionPrefix: prefix,\n docPrefix,\n filename,\n useCompositePrefixes,\n }),\n\n handleUpload: ({ data, file }) =>\n uploadFile({\n bucket,\n buffer: file.buffer,\n collectionPrefix: prefix,\n docPrefix: data.prefix,\n filename: file.filename,\n mimeType: file.mimeType,\n useCompositePrefixes,\n }),\n\n staticHandler: (\n req,\n { headers, params: { filename, prefix: prefixQueryParam, uploadReference } },\n ) =>\n getFile({\n bucket,\n collection,\n filename,\n incomingHeaders: headers,\n prefix,\n prefixQueryParam,\n req,\n uploadReference,\n useCompositePrefixes,\n }),\n })\n}\n"],"names":["deleteFile","getFile","defaultR2ClientUploadsAccess","getHandleMultiPartUpload","uploadFile","createR2Adapter","bucket","clientUploads","collections","useCompositePrefixes","access","uploadInstructions","adminHandler","path","enabled","Boolean","endpoint","handler","generate","filename","filesize","mimeType","name","type","file","size","uploadReference","useInAdmin","collection","prefix","handleDelete","doc","docPrefix","collectionPrefix","handleUpload","data","buffer","staticHandler","req","headers","params","prefixQueryParam","incomingHeaders"],"mappings":"AASA,SAASA,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,4BAA4B,EAAEC,wBAAwB,QAAQ,6BAA4B;AACnG,SAASC,UAAU,QAAQ,kBAAiB;AAS5C,OAAO,SAASC,gBAAgB,EAC9BC,MAAM,EACNC,aAAa,EACbC,WAAW,EACXC,uBAAuB,KAAK,EACR;IACpB,MAAMC,SACJ,OAAOH,kBAAkB,YAAYA,cAAcG,MAAM,GACrDH,cAAcG,MAAM,GACpBR;IACN,MAAMS,qBAA6D;QACjEC,cAAc;YACZC,MAAM;QACR;QACAC,SAASC,QAAQR;QACjBS,UAAU;YACRC,SAASd,yBAAyB;gBAChCO;gBACAJ;gBACAE;gBACAC;YACF;YACAI,MAAM;QACR;QACAK,UAAU,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAM,CAAA;gBAC/CC,MAAM;gBACNC,MAAM;gBACNC,MAAM;oBACJL;oBACAE;oBACAI,MAAML;oBACNM,iBAAiB,CAAC;gBACpB;YACF,CAAA;QACAC,YAAY;IACd;IAEA,OAAO,CAAC,EAAEC,UAAU,EAAEC,SAAS,EAAE,EAAE,GAAwB,CAAA;YACzDP,MAAM;YACNX;YAEAmB,cAAc,CAAC,EAAEC,KAAK,EAAEF,QAAQG,YAAY,EAAE,EAAE,EAAEb,QAAQ,EAAE,GAC1DnB,WAAW;oBACTM;oBACA2B,kBAAkBJ;oBAClBG;oBACAb;oBACAV;gBACF;YAEFyB,cAAc,CAAC,EAAEC,IAAI,EAAEX,IAAI,EAAE,GAC3BpB,WAAW;oBACTE;oBACA8B,QAAQZ,KAAKY,MAAM;oBACnBH,kBAAkBJ;oBAClBG,WAAWG,KAAKN,MAAM;oBACtBV,UAAUK,KAAKL,QAAQ;oBACvBE,UAAUG,KAAKH,QAAQ;oBACvBZ;gBACF;YAEF4B,eAAe,CACbC,KACA,EAAEC,OAAO,EAAEC,QAAQ,EAAErB,QAAQ,EAAEU,QAAQY,gBAAgB,EAAEf,eAAe,EAAE,EAAE,GAE5EzB,QAAQ;oBACNK;oBACAsB;oBACAT;oBACAuB,iBAAiBH;oBACjBV;oBACAY;oBACAH;oBACAZ;oBACAjB;gBACF;QACJ,CAAA;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleMultiPartUpload.d.ts","sourceRoot":"","sources":["../src/handleMultiPartUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,YAAY,CAAA;AAEjF,KAAK,IAAI,GAAG;IACV,MAAM,CAAC,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,
|
|
1
|
+
{"version":3,"file":"handleMultiPartUpload.d.ts","sourceRoot":"","sources":["../src/handleMultiPartUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,YAAY,CAAA;AAEjF,KAAK,IAAI,GAAG;IACV,MAAM,CAAC,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,wBAa1C,CAAA;AAGD,eAAO,MAAM,wBAAwB,2DAMhC,IAAI,KAAG,cA2DT,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/handleMultiPartUpload.ts"],"sourcesContent":["import type { PayloadHandler, UploadInstructionsAccess } from 'payload'\n\nimport { resolveSignedURLKey } from '@payloadcms/plugin-cloud-storage/utilities'\nimport { APIError, Forbidden } from 'payload'\n\nimport type { R2StorageOptions } from './index.js'\nimport type { R2Bucket, R2StorageMultipartUploadHandlerParams } from './types.js'\n\ntype Args = {\n access?: UploadInstructionsAccess\n bucket: R2Bucket\n collections: R2StorageOptions['collections']\n useCompositePrefixes?: boolean\n}\n\nexport const defaultR2ClientUploadsAccess: UploadInstructionsAccess = async ({\n collectionSlug,\n req,\n}) => {\n const collection = req.payload.collections[collectionSlug]\n if (!collection?.config) {\n throw new APIError(`Collection ${collectionSlug} not found`)\n }\n\n const createAccess = collection.config.access?.create\n return createAccess
|
|
1
|
+
{"version":3,"sources":["../src/handleMultiPartUpload.ts"],"sourcesContent":["import type { PayloadHandler, UploadInstructionsAccess } from 'payload'\n\nimport { resolveSignedURLKey } from '@payloadcms/plugin-cloud-storage/utilities'\nimport { APIError, Forbidden } from 'payload'\n\nimport type { R2StorageOptions } from './index.js'\nimport type { R2Bucket, R2StorageMultipartUploadHandlerParams } from './types.js'\n\ntype Args = {\n access?: UploadInstructionsAccess\n bucket: R2Bucket\n collections: R2StorageOptions['collections']\n useCompositePrefixes?: boolean\n}\n\nexport const defaultR2ClientUploadsAccess: UploadInstructionsAccess = async ({\n collectionSlug,\n req,\n}) => {\n const collection = req.payload.collections[collectionSlug]\n if (!collection?.config) {\n throw new APIError(`Collection ${collectionSlug} not found`)\n }\n\n const createAccess = collection.config.access?.create\n return createAccess\n ? Boolean(await createAccess({ slug: collectionSlug, req }))\n : Boolean(req.user)\n}\n\n// Adapted from https://developers.cloudflare.com/r2/api/workers/workers-multipart-usage/\nexport const getHandleMultiPartUpload =\n ({\n access = defaultR2ClientUploadsAccess,\n bucket,\n collections,\n useCompositePrefixes = false,\n }: Args): PayloadHandler =>\n async (req) => {\n const params = Object.fromEntries(req.searchParams) as R2StorageMultipartUploadHandlerParams\n const collectionSlug = params.collection\n const filetype = params.fileType\n\n const collectionConfig = collections[collectionSlug]\n if (!collectionConfig) {\n throw new APIError(`Collection ${collectionSlug} was not found in R2 Storage options`)\n }\n\n if (!(await access({ collectionSlug, req }))) {\n throw new Forbidden(req.t)\n }\n\n const collectionPrefix = (typeof collectionConfig === 'object' && collectionConfig.prefix) || ''\n const { fileKey, sanitizedFilename } = await resolveSignedURLKey({\n collectionPrefix,\n collectionSlug,\n docPrefix: params.docPrefix ?? undefined,\n filename: params.fileName,\n req,\n useCompositePrefixes,\n })\n\n const multipartId = params.multipartId\n const multipartKey = params.multipartKey\n const multipartNumber = parseInt(params.multipartNumber || '')\n\n if (multipartId && multipartKey) {\n const multipartUpload = bucket.resumeMultipartUpload(multipartKey, multipartId)\n const request = req as Request\n\n if (isNaN(multipartNumber)) {\n // Upload complete\n const object = await multipartUpload.complete((await request.json()) as any)\n return new Response(object.key, { status: 200 })\n } else {\n // Upload part\n const uploadedPart = await multipartUpload.uploadPart(\n multipartNumber,\n await request.arrayBuffer(),\n )\n return Response.json(uploadedPart)\n }\n } else {\n // Create multipart upload\n const multipartUpload = await bucket.createMultipartUpload(fileKey, {\n httpMetadata: {\n contentType: filetype,\n },\n })\n\n return Response.json({\n filename: sanitizedFilename,\n key: multipartUpload.key,\n uploadId: multipartUpload.uploadId,\n })\n }\n }\n"],"names":["resolveSignedURLKey","APIError","Forbidden","defaultR2ClientUploadsAccess","collectionSlug","req","collection","payload","collections","config","createAccess","access","create","Boolean","slug","user","getHandleMultiPartUpload","bucket","useCompositePrefixes","params","Object","fromEntries","searchParams","filetype","fileType","collectionConfig","t","collectionPrefix","prefix","fileKey","sanitizedFilename","docPrefix","undefined","filename","fileName","multipartId","multipartKey","multipartNumber","parseInt","multipartUpload","resumeMultipartUpload","request","isNaN","object","complete","json","Response","key","status","uploadedPart","uploadPart","arrayBuffer","createMultipartUpload","httpMetadata","contentType","uploadId"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,6CAA4C;AAChF,SAASC,QAAQ,EAAEC,SAAS,QAAQ,UAAS;AAY7C,OAAO,MAAMC,+BAAyD,OAAO,EAC3EC,cAAc,EACdC,GAAG,EACJ;IACC,MAAMC,aAAaD,IAAIE,OAAO,CAACC,WAAW,CAACJ,eAAe;IAC1D,IAAI,CAACE,YAAYG,QAAQ;QACvB,MAAM,IAAIR,SAAS,CAAC,WAAW,EAAEG,eAAe,UAAU,CAAC;IAC7D;IAEA,MAAMM,eAAeJ,WAAWG,MAAM,CAACE,MAAM,EAAEC;IAC/C,OAAOF,eACHG,QAAQ,MAAMH,aAAa;QAAEI,MAAMV;QAAgBC;IAAI,MACvDQ,QAAQR,IAAIU,IAAI;AACtB,EAAC;AAED,yFAAyF;AACzF,OAAO,MAAMC,2BACX,CAAC,EACCL,SAASR,4BAA4B,EACrCc,MAAM,EACNT,WAAW,EACXU,uBAAuB,KAAK,EACvB,GACP,OAAOb;QACL,MAAMc,SAASC,OAAOC,WAAW,CAAChB,IAAIiB,YAAY;QAClD,MAAMlB,iBAAiBe,OAAOb,UAAU;QACxC,MAAMiB,WAAWJ,OAAOK,QAAQ;QAEhC,MAAMC,mBAAmBjB,WAAW,CAACJ,eAAe;QACpD,IAAI,CAACqB,kBAAkB;YACrB,MAAM,IAAIxB,SAAS,CAAC,WAAW,EAAEG,eAAe,oCAAoC,CAAC;QACvF;QAEA,IAAI,CAAE,MAAMO,OAAO;YAAEP;YAAgBC;QAAI,IAAK;YAC5C,MAAM,IAAIH,UAAUG,IAAIqB,CAAC;QAC3B;QAEA,MAAMC,mBAAmB,AAAC,OAAOF,qBAAqB,YAAYA,iBAAiBG,MAAM,IAAK;QAC9F,MAAM,EAAEC,OAAO,EAAEC,iBAAiB,EAAE,GAAG,MAAM9B,oBAAoB;YAC/D2B;YACAvB;YACA2B,WAAWZ,OAAOY,SAAS,IAAIC;YAC/BC,UAAUd,OAAOe,QAAQ;YACzB7B;YACAa;QACF;QAEA,MAAMiB,cAAchB,OAAOgB,WAAW;QACtC,MAAMC,eAAejB,OAAOiB,YAAY;QACxC,MAAMC,kBAAkBC,SAASnB,OAAOkB,eAAe,IAAI;QAE3D,IAAIF,eAAeC,cAAc;YAC/B,MAAMG,kBAAkBtB,OAAOuB,qBAAqB,CAACJ,cAAcD;YACnE,MAAMM,UAAUpC;YAEhB,IAAIqC,MAAML,kBAAkB;gBAC1B,kBAAkB;gBAClB,MAAMM,SAAS,MAAMJ,gBAAgBK,QAAQ,CAAE,MAAMH,QAAQI,IAAI;gBACjE,OAAO,IAAIC,SAASH,OAAOI,GAAG,EAAE;oBAAEC,QAAQ;gBAAI;YAChD,OAAO;gBACL,cAAc;gBACd,MAAMC,eAAe,MAAMV,gBAAgBW,UAAU,CACnDb,iBACA,MAAMI,QAAQU,WAAW;gBAE3B,OAAOL,SAASD,IAAI,CAACI;YACvB;QACF,OAAO;YACL,0BAA0B;YAC1B,MAAMV,kBAAkB,MAAMtB,OAAOmC,qBAAqB,CAACvB,SAAS;gBAClEwB,cAAc;oBACZC,aAAa/B;gBACf;YACF;YAEA,OAAOuB,SAASD,IAAI,CAAC;gBACnBZ,UAAUH;gBACViB,KAAKR,gBAAgBQ,GAAG;gBACxBQ,UAAUhB,gBAAgBgB,QAAQ;YACpC;QACF;IACF,EAAC"}
|
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.9496957",
|
|
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.9496957"
|
|
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.9496957"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"payload": "4.0.0-internal.
|
|
47
|
+
"payload": "4.0.0-internal.9496957"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
50
|
"node": ">=24.15.0"
|