@payloadcms/plugin-cloud-storage 3.12.1-canary.b1b1cbf → 3.13.0
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/package.json +3 -54
- package/dist/adapters/azure/generateURL.d.ts +0 -8
- package/dist/adapters/azure/generateURL.d.ts.map +0 -1
- package/dist/adapters/azure/generateURL.js +0 -6
- package/dist/adapters/azure/generateURL.js.map +0 -1
- package/dist/adapters/azure/handleDelete.d.ts +0 -10
- package/dist/adapters/azure/handleDelete.d.ts.map +0 -1
- package/dist/adapters/azure/handleDelete.js +0 -9
- package/dist/adapters/azure/handleDelete.js.map +0 -1
- package/dist/adapters/azure/handleUpload.d.ts +0 -11
- package/dist/adapters/azure/handleUpload.d.ts.map +0 -1
- package/dist/adapters/azure/handleUpload.js +0 -28
- package/dist/adapters/azure/handleUpload.js.map +0 -1
- package/dist/adapters/azure/index.d.ts +0 -14
- package/dist/adapters/azure/index.d.ts.map +0 -1
- package/dist/adapters/azure/index.js +0 -63
- package/dist/adapters/azure/index.js.map +0 -1
- package/dist/adapters/azure/staticHandler.d.ts +0 -10
- package/dist/adapters/azure/staticHandler.d.ts.map +0 -1
- package/dist/adapters/azure/staticHandler.js +0 -44
- package/dist/adapters/azure/staticHandler.js.map +0 -1
- package/dist/adapters/gcs/generateURL.d.ts +0 -9
- package/dist/adapters/gcs/generateURL.d.ts.map +0 -1
- package/dist/adapters/gcs/generateURL.js +0 -6
- package/dist/adapters/gcs/generateURL.js.map +0 -1
- package/dist/adapters/gcs/handleDelete.d.ts +0 -9
- package/dist/adapters/gcs/handleDelete.d.ts.map +0 -1
- package/dist/adapters/gcs/handleDelete.js +0 -10
- package/dist/adapters/gcs/handleDelete.js.map +0 -1
- package/dist/adapters/gcs/handleUpload.d.ts +0 -13
- package/dist/adapters/gcs/handleUpload.d.ts.map +0 -1
- package/dist/adapters/gcs/handleUpload.js +0 -18
- package/dist/adapters/gcs/handleUpload.js.map +0 -1
- package/dist/adapters/gcs/index.d.ts +0 -14
- package/dist/adapters/gcs/index.d.ts.map +0 -1
- package/dist/adapters/gcs/index.js +0 -55
- package/dist/adapters/gcs/index.js.map +0 -1
- package/dist/adapters/gcs/staticHandler.d.ts +0 -11
- package/dist/adapters/gcs/staticHandler.d.ts.map +0 -1
- package/dist/adapters/gcs/staticHandler.js +0 -45
- package/dist/adapters/gcs/staticHandler.js.map +0 -1
- package/dist/adapters/s3/generateURL.d.ts +0 -9
- package/dist/adapters/s3/generateURL.d.ts.map +0 -1
- package/dist/adapters/s3/generateURL.js +0 -6
- package/dist/adapters/s3/generateURL.js.map +0 -1
- package/dist/adapters/s3/handleDelete.d.ts +0 -9
- package/dist/adapters/s3/handleDelete.d.ts.map +0 -1
- package/dist/adapters/s3/handleDelete.js +0 -11
- package/dist/adapters/s3/handleDelete.js.map +0 -1
- package/dist/adapters/s3/handleUpload.d.ts +0 -13
- package/dist/adapters/s3/handleUpload.d.ts.map +0 -1
- package/dist/adapters/s3/handleUpload.js +0 -37
- package/dist/adapters/s3/handleUpload.js.map +0 -1
- package/dist/adapters/s3/index.d.ts +0 -24
- package/dist/adapters/s3/index.d.ts.map +0 -1
- package/dist/adapters/s3/index.js +0 -55
- package/dist/adapters/s3/index.js.map +0 -1
- package/dist/adapters/s3/staticHandler.d.ts +0 -11
- package/dist/adapters/s3/staticHandler.d.ts.map +0 -1
- package/dist/adapters/s3/staticHandler.js +0 -48
- package/dist/adapters/s3/staticHandler.js.map +0 -1
- package/dist/adapters/vercelBlob/generateURL.d.ts +0 -8
- package/dist/adapters/vercelBlob/generateURL.d.ts.map +0 -1
- package/dist/adapters/vercelBlob/generateURL.js +0 -8
- package/dist/adapters/vercelBlob/generateURL.js.map +0 -1
- package/dist/adapters/vercelBlob/handleDelete.d.ts +0 -9
- package/dist/adapters/vercelBlob/handleDelete.d.ts.map +0 -1
- package/dist/adapters/vercelBlob/handleDelete.js +0 -13
- package/dist/adapters/vercelBlob/handleDelete.js.map +0 -1
- package/dist/adapters/vercelBlob/handleUpload.d.ts +0 -10
- package/dist/adapters/vercelBlob/handleUpload.d.ts.map +0 -1
- package/dist/adapters/vercelBlob/handleUpload.js +0 -21
- package/dist/adapters/vercelBlob/handleUpload.js.map +0 -1
- package/dist/adapters/vercelBlob/index.d.ts +0 -37
- package/dist/adapters/vercelBlob/index.d.ts.map +0 -1
- package/dist/adapters/vercelBlob/index.js +0 -54
- package/dist/adapters/vercelBlob/index.js.map +0 -1
- package/dist/adapters/vercelBlob/staticHandler.d.ts +0 -9
- package/dist/adapters/vercelBlob/staticHandler.d.ts.map +0 -1
- package/dist/adapters/vercelBlob/staticHandler.js +0 -52
- package/dist/adapters/vercelBlob/staticHandler.js.map +0 -1
- package/dist/exports/azure.d.ts +0 -2
- package/dist/exports/azure.d.ts.map +0 -1
- package/dist/exports/azure.js +0 -3
- package/dist/exports/azure.js.map +0 -1
- package/dist/exports/gcs.d.ts +0 -2
- package/dist/exports/gcs.d.ts.map +0 -1
- package/dist/exports/gcs.js +0 -3
- package/dist/exports/gcs.js.map +0 -1
- package/dist/exports/s3.d.ts +0 -2
- package/dist/exports/s3.d.ts.map +0 -1
- package/dist/exports/s3.js +0 -3
- package/dist/exports/s3.js.map +0 -1
- package/dist/exports/vercelBlob.d.ts +0 -2
- package/dist/exports/vercelBlob.d.ts.map +0 -1
- package/dist/exports/vercelBlob.js +0 -3
- package/dist/exports/vercelBlob.js.map +0 -1
- package/dist/utilities/getRangeFromHeader.d.ts +0 -7
- package/dist/utilities/getRangeFromHeader.d.ts.map +0 -1
- package/dist/utilities/getRangeFromHeader.js +0 -22
- package/dist/utilities/getRangeFromHeader.js.map +0 -1
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import type { GenerateURL } from '../../types.js';
|
|
3
|
-
interface Args {
|
|
4
|
-
bucket: string;
|
|
5
|
-
config: AWS.S3ClientConfig;
|
|
6
|
-
}
|
|
7
|
-
export declare const getGenerateURL: ({ bucket, config: { endpoint } }: Args) => GenerateURL;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=generateURL.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateURL.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3/generateURL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAI9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,UAAU,IAAI;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,GAAG,CAAC,cAAc,CAAA;CAC3B;AAED,eAAO,MAAM,cAAc,qCACU,IAAI,KAAG,WAGzC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/s3/generateURL.ts"],"sourcesContent":["import type * as AWS from '@aws-sdk/client-s3'\n\nimport path from 'path'\n\nimport type { GenerateURL } from '../../types.js'\n\ninterface Args {\n bucket: string\n config: AWS.S3ClientConfig\n}\n\nexport const getGenerateURL =\n ({ bucket, config: { endpoint } }: Args): GenerateURL =>\n ({ filename, prefix = '' }) => {\n return `${endpoint}/${bucket}/${path.posix.join(prefix, filename)}`\n }\n"],"names":["path","getGenerateURL","bucket","config","endpoint","filename","prefix","posix","join"],"mappings":"AAEA,OAAOA,UAAU,OAAM;AASvB,OAAO,MAAMC,iBACX,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAQ,GACvC,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAE,EAAE;QACxB,OAAO,GAAGF,SAAS,CAAC,EAAEF,OAAO,CAAC,EAAEF,KAAKO,KAAK,CAACC,IAAI,CAACF,QAAQD,WAAW;IACrE,EAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import type { HandleDelete } from '../../types.js';
|
|
3
|
-
interface Args {
|
|
4
|
-
bucket: string;
|
|
5
|
-
getStorageClient: () => AWS.S3;
|
|
6
|
-
}
|
|
7
|
-
export declare const getHandleDelete: ({ bucket, getStorageClient }: Args) => HandleDelete;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=handleDelete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleDelete.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3/handleDelete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAI9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,UAAU,IAAI;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,GAAG,CAAC,EAAE,CAAA;CAC/B;AAED,eAAO,MAAM,eAAe,iCAAkC,IAAI,KAAG,YAOpE,CAAA"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
export const getHandleDelete = ({ bucket, getStorageClient })=>{
|
|
3
|
-
return async ({ doc: { prefix = '' }, filename })=>{
|
|
4
|
-
await getStorageClient().deleteObject({
|
|
5
|
-
Bucket: bucket,
|
|
6
|
-
Key: path.posix.join(prefix, filename)
|
|
7
|
-
});
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=handleDelete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/s3/handleDelete.ts"],"sourcesContent":["import type * as AWS from '@aws-sdk/client-s3'\n\nimport path from 'path'\n\nimport type { HandleDelete } from '../../types.js'\n\ninterface Args {\n bucket: string\n getStorageClient: () => AWS.S3\n}\n\nexport const getHandleDelete = ({ bucket, getStorageClient }: Args): HandleDelete => {\n return async ({ doc: { prefix = '' }, filename }) => {\n await getStorageClient().deleteObject({\n Bucket: bucket,\n Key: path.posix.join(prefix, filename),\n })\n }\n}\n"],"names":["path","getHandleDelete","bucket","getStorageClient","doc","prefix","filename","deleteObject","Bucket","Key","posix","join"],"mappings":"AAEA,OAAOA,UAAU,OAAM;AASvB,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,gBAAgB,EAAQ;IAChE,OAAO,OAAO,EAAEC,KAAK,EAAEC,SAAS,EAAE,EAAE,EAAEC,QAAQ,EAAE;QAC9C,MAAMH,mBAAmBI,YAAY,CAAC;YACpCC,QAAQN;YACRO,KAAKT,KAAKU,KAAK,CAACC,IAAI,CAACN,QAAQC;QAC/B;IACF;AACF,EAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import type { CollectionConfig } from 'payload';
|
|
3
|
-
import type { HandleUpload } from '../../types.js';
|
|
4
|
-
interface Args {
|
|
5
|
-
acl?: 'private' | 'public-read';
|
|
6
|
-
bucket: string;
|
|
7
|
-
collection: CollectionConfig;
|
|
8
|
-
getStorageClient: () => AWS.S3;
|
|
9
|
-
prefix?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const getHandleUpload: ({ acl, bucket, getStorageClient, prefix, }: Args) => HandleUpload;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=handleUpload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleUpload.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3/handleUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAO/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,UAAU,IAAI;IACZ,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,gBAAgB,CAAA;IAC5B,gBAAgB,EAAE,MAAM,GAAG,CAAC,EAAE,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,eAAe,+CAKzB,IAAI,KAAG,YAqCT,CAAA"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Upload } from '@aws-sdk/lib-storage';
|
|
2
|
-
import fs from 'fs';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
const multipartThreshold = 1024 * 1024 * 50 // 50MB
|
|
5
|
-
;
|
|
6
|
-
export const getHandleUpload = ({ acl, bucket, getStorageClient, prefix = '' })=>{
|
|
7
|
-
return async ({ data, file })=>{
|
|
8
|
-
const fileKey = path.posix.join(data.prefix || prefix, file.filename);
|
|
9
|
-
const fileBufferOrStream = file.tempFilePath ? fs.createReadStream(file.tempFilePath) : file.buffer;
|
|
10
|
-
if (file.buffer.length > 0 && file.buffer.length < multipartThreshold) {
|
|
11
|
-
await getStorageClient().putObject({
|
|
12
|
-
ACL: acl,
|
|
13
|
-
Body: fileBufferOrStream,
|
|
14
|
-
Bucket: bucket,
|
|
15
|
-
ContentType: file.mimeType,
|
|
16
|
-
Key: fileKey
|
|
17
|
-
});
|
|
18
|
-
return data;
|
|
19
|
-
}
|
|
20
|
-
const parallelUploadS3 = new Upload({
|
|
21
|
-
client: getStorageClient(),
|
|
22
|
-
params: {
|
|
23
|
-
ACL: acl,
|
|
24
|
-
Body: fileBufferOrStream,
|
|
25
|
-
Bucket: bucket,
|
|
26
|
-
ContentType: file.mimeType,
|
|
27
|
-
Key: fileKey
|
|
28
|
-
},
|
|
29
|
-
partSize: multipartThreshold,
|
|
30
|
-
queueSize: 4
|
|
31
|
-
});
|
|
32
|
-
await parallelUploadS3.done();
|
|
33
|
-
return data;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=handleUpload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/s3/handleUpload.ts"],"sourcesContent":["import type * as AWS from '@aws-sdk/client-s3'\nimport type { CollectionConfig } from 'payload'\nimport type stream from 'stream'\n\nimport { Upload } from '@aws-sdk/lib-storage'\nimport fs from 'fs'\nimport path from 'path'\n\nimport type { HandleUpload } from '../../types.js'\n\ninterface Args {\n acl?: 'private' | 'public-read'\n bucket: string\n collection: CollectionConfig\n getStorageClient: () => AWS.S3\n prefix?: string\n}\n\nconst multipartThreshold = 1024 * 1024 * 50 // 50MB\n\nexport const getHandleUpload = ({\n acl,\n bucket,\n getStorageClient,\n prefix = '',\n}: Args): HandleUpload => {\n return async ({ data, file }) => {\n const fileKey = path.posix.join(data.prefix || prefix, file.filename)\n\n const fileBufferOrStream: Buffer | stream.Readable = file.tempFilePath\n ? fs.createReadStream(file.tempFilePath)\n : file.buffer\n\n if (file.buffer.length > 0 && file.buffer.length < multipartThreshold) {\n await getStorageClient().putObject({\n ACL: acl,\n Body: fileBufferOrStream,\n Bucket: bucket,\n ContentType: file.mimeType,\n Key: fileKey,\n })\n\n return data\n }\n\n const parallelUploadS3 = new Upload({\n client: getStorageClient(),\n params: {\n ACL: acl,\n Body: fileBufferOrStream,\n Bucket: bucket,\n ContentType: file.mimeType,\n Key: fileKey,\n },\n partSize: multipartThreshold,\n queueSize: 4,\n })\n\n await parallelUploadS3.done()\n\n return data\n }\n}\n"],"names":["Upload","fs","path","multipartThreshold","getHandleUpload","acl","bucket","getStorageClient","prefix","data","file","fileKey","posix","join","filename","fileBufferOrStream","tempFilePath","createReadStream","buffer","length","putObject","ACL","Body","Bucket","ContentType","mimeType","Key","parallelUploadS3","client","params","partSize","queueSize","done"],"mappings":"AAIA,SAASA,MAAM,QAAQ,uBAAsB;AAC7C,OAAOC,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAYvB,MAAMC,qBAAqB,OAAO,OAAO,GAAG,OAAO;;AAEnD,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,GAAG,EACHC,MAAM,EACNC,gBAAgB,EAChBC,SAAS,EAAE,EACN;IACL,OAAO,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAE;QAC1B,MAAMC,UAAUT,KAAKU,KAAK,CAACC,IAAI,CAACJ,KAAKD,MAAM,IAAIA,QAAQE,KAAKI,QAAQ;QAEpE,MAAMC,qBAA+CL,KAAKM,YAAY,GAClEf,GAAGgB,gBAAgB,CAACP,KAAKM,YAAY,IACrCN,KAAKQ,MAAM;QAEf,IAAIR,KAAKQ,MAAM,CAACC,MAAM,GAAG,KAAKT,KAAKQ,MAAM,CAACC,MAAM,GAAGhB,oBAAoB;YACrE,MAAMI,mBAAmBa,SAAS,CAAC;gBACjCC,KAAKhB;gBACLiB,MAAMP;gBACNQ,QAAQjB;gBACRkB,aAAad,KAAKe,QAAQ;gBAC1BC,KAAKf;YACP;YAEA,OAAOF;QACT;QAEA,MAAMkB,mBAAmB,IAAI3B,OAAO;YAClC4B,QAAQrB;YACRsB,QAAQ;gBACNR,KAAKhB;gBACLiB,MAAMP;gBACNQ,QAAQjB;gBACRkB,aAAad,KAAKe,QAAQ;gBAC1BC,KAAKf;YACP;YACAmB,UAAU3B;YACV4B,WAAW;QACb;QAEA,MAAMJ,iBAAiBK,IAAI;QAE3B,OAAOvB;IACT;AACF,EAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import type { Adapter } from '../../types.js';
|
|
3
|
-
export interface Args {
|
|
4
|
-
acl?: 'private' | 'public-read';
|
|
5
|
-
/**
|
|
6
|
-
* Bucket name to upload files to.
|
|
7
|
-
*
|
|
8
|
-
* Must follow [AWS S3 bucket naming conventions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
|
|
9
|
-
*/
|
|
10
|
-
bucket: string;
|
|
11
|
-
/**
|
|
12
|
-
* AWS S3 client configuration. Highly dependent on your AWS setup.
|
|
13
|
-
*
|
|
14
|
-
* [AWS.S3ClientConfig Docs](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/s3clientconfig.html)
|
|
15
|
-
*/
|
|
16
|
-
config: AWS.S3ClientConfig;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @deprecated Use [`@payloadcms/storage-s3`](https://www.npmjs.com/package/@payloadcms/storage-s3) instead.
|
|
20
|
-
*
|
|
21
|
-
* This adapter has been superceded by `@payloadcms/storage-s3` and will be removed in Payload 3.0.
|
|
22
|
-
*/
|
|
23
|
-
export declare const s3Adapter: ({ acl, bucket, config }: Args) => Adapter;
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,gBAAgB,CAAA;AAO/D,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;IAC/B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,EAAE,GAAG,CAAC,cAAc,CAAA;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,4BACW,IAAI,KAAG,OAuCrC,CAAA"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import { getGenerateURL } from './generateURL.js';
|
|
3
|
-
import { getHandleDelete } from './handleDelete.js';
|
|
4
|
-
import { getHandleUpload } from './handleUpload.js';
|
|
5
|
-
import { getHandler } from './staticHandler.js';
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated Use [`@payloadcms/storage-s3`](https://www.npmjs.com/package/@payloadcms/storage-s3) instead.
|
|
8
|
-
*
|
|
9
|
-
* This adapter has been superceded by `@payloadcms/storage-s3` and will be removed in Payload 3.0.
|
|
10
|
-
*/ export const s3Adapter = ({ acl, bucket, config = {} })=>({ collection, prefix })=>{
|
|
11
|
-
if (!AWS) {
|
|
12
|
-
throw new Error('The packages @aws-sdk/client-s3, @aws-sdk/lib-storage and aws-crt are not installed, but are required for the plugin-cloud-storage S3 adapter. Please install them.');
|
|
13
|
-
}
|
|
14
|
-
let storageClient = null;
|
|
15
|
-
const getStorageClient = ()=>{
|
|
16
|
-
if (storageClient) {
|
|
17
|
-
return storageClient;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
storageClient = new AWS.S3(config);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
if (/is not a constructor$/.test(error.message)) {
|
|
23
|
-
throw new Error('The packages @aws-sdk/client-s3, @aws-sdk/lib-storage and aws-crt are not installed, but are required for the plugin-cloud-storage S3 adapter. Please install them.');
|
|
24
|
-
}
|
|
25
|
-
// Re-throw other unexpected errors.
|
|
26
|
-
throw error;
|
|
27
|
-
}
|
|
28
|
-
return storageClient;
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
name: 's3',
|
|
32
|
-
generateURL: getGenerateURL({
|
|
33
|
-
bucket,
|
|
34
|
-
config
|
|
35
|
-
}),
|
|
36
|
-
handleDelete: getHandleDelete({
|
|
37
|
-
bucket,
|
|
38
|
-
getStorageClient
|
|
39
|
-
}),
|
|
40
|
-
handleUpload: getHandleUpload({
|
|
41
|
-
acl,
|
|
42
|
-
bucket,
|
|
43
|
-
collection,
|
|
44
|
-
getStorageClient,
|
|
45
|
-
prefix
|
|
46
|
-
}),
|
|
47
|
-
staticHandler: getHandler({
|
|
48
|
-
bucket,
|
|
49
|
-
collection,
|
|
50
|
-
getStorageClient
|
|
51
|
-
})
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/s3/index.ts"],"sourcesContent":["import * as AWS from '@aws-sdk/client-s3'\n\nimport type { Adapter, GeneratedAdapter } from '../../types.js'\n\nimport { getGenerateURL } from './generateURL.js'\nimport { getHandleDelete } from './handleDelete.js'\nimport { getHandleUpload } from './handleUpload.js'\nimport { getHandler } from './staticHandler.js'\n\nexport interface Args {\n acl?: 'private' | 'public-read'\n /**\n * Bucket name to upload files to.\n *\n * Must follow [AWS S3 bucket naming conventions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).\n */\n bucket: string\n /**\n * AWS S3 client configuration. Highly dependent on your AWS setup.\n *\n * [AWS.S3ClientConfig Docs](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/s3clientconfig.html)\n */\n config: AWS.S3ClientConfig\n}\n\n/**\n * @deprecated Use [`@payloadcms/storage-s3`](https://www.npmjs.com/package/@payloadcms/storage-s3) instead.\n *\n * This adapter has been superceded by `@payloadcms/storage-s3` and will be removed in Payload 3.0.\n */\nexport const s3Adapter =\n ({ acl, bucket, config = {} }: Args): Adapter =>\n ({ collection, prefix }): GeneratedAdapter => {\n if (!AWS) {\n throw new Error(\n 'The packages @aws-sdk/client-s3, @aws-sdk/lib-storage and aws-crt are not installed, but are required for the plugin-cloud-storage S3 adapter. Please install them.',\n )\n }\n let storageClient: AWS.S3 | null = null\n const getStorageClient: () => AWS.S3 = () => {\n if (storageClient) {\n return storageClient\n }\n try {\n storageClient = new AWS.S3(config)\n } catch (error) {\n if (/is not a constructor$/.test(error.message)) {\n throw new Error(\n 'The packages @aws-sdk/client-s3, @aws-sdk/lib-storage and aws-crt are not installed, but are required for the plugin-cloud-storage S3 adapter. Please install them.',\n )\n }\n // Re-throw other unexpected errors.\n throw error\n }\n return storageClient\n }\n\n return {\n name: 's3',\n generateURL: getGenerateURL({ bucket, config }),\n handleDelete: getHandleDelete({ bucket, getStorageClient }),\n handleUpload: getHandleUpload({\n acl,\n bucket,\n collection,\n getStorageClient,\n prefix,\n }),\n staticHandler: getHandler({ bucket, collection, getStorageClient }),\n }\n }\n"],"names":["AWS","getGenerateURL","getHandleDelete","getHandleUpload","getHandler","s3Adapter","acl","bucket","config","collection","prefix","Error","storageClient","getStorageClient","S3","error","test","message","name","generateURL","handleDelete","handleUpload","staticHandler"],"mappings":"AAAA,YAAYA,SAAS,qBAAoB;AAIzC,SAASC,cAAc,QAAQ,mBAAkB;AACjD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,UAAU,QAAQ,qBAAoB;AAkB/C;;;;CAIC,GACD,OAAO,MAAMC,YACX,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAC,EAAQ,GACnC,CAAC,EAAEC,UAAU,EAAEC,MAAM,EAAE;QACrB,IAAI,CAACV,KAAK;YACR,MAAM,IAAIW,MACR;QAEJ;QACA,IAAIC,gBAA+B;QACnC,MAAMC,mBAAiC;YACrC,IAAID,eAAe;gBACjB,OAAOA;YACT;YACA,IAAI;gBACFA,gBAAgB,IAAIZ,IAAIc,EAAE,CAACN;YAC7B,EAAE,OAAOO,OAAO;gBACd,IAAI,wBAAwBC,IAAI,CAACD,MAAME,OAAO,GAAG;oBAC/C,MAAM,IAAIN,MACR;gBAEJ;gBACA,oCAAoC;gBACpC,MAAMI;YACR;YACA,OAAOH;QACT;QAEA,OAAO;YACLM,MAAM;YACNC,aAAalB,eAAe;gBAAEM;gBAAQC;YAAO;YAC7CY,cAAclB,gBAAgB;gBAAEK;gBAAQM;YAAiB;YACzDQ,cAAclB,gBAAgB;gBAC5BG;gBACAC;gBACAE;gBACAI;gBACAH;YACF;YACAY,eAAelB,WAAW;gBAAEG;gBAAQE;gBAAYI;YAAiB;QACnE;IACF,EAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
-
import type { CollectionConfig } from 'payload';
|
|
3
|
-
import type { StaticHandler } from '../../types.js';
|
|
4
|
-
interface Args {
|
|
5
|
-
bucket: string;
|
|
6
|
-
collection: CollectionConfig;
|
|
7
|
-
getStorageClient: () => AWS.S3;
|
|
8
|
-
}
|
|
9
|
-
export declare const getHandler: ({ bucket, collection, getStorageClient }: Args) => StaticHandler;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=staticHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"staticHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/s3/staticHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAInD,UAAU,IAAI;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,gBAAgB,CAAA;IAC5B,gBAAgB,EAAE,MAAM,GAAG,CAAC,EAAE,CAAA;CAC/B;AAWD,eAAO,MAAM,UAAU,6CAA8C,IAAI,KAAG,aA8B3E,CAAA"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { getFilePrefix } from '../../utilities/getFilePrefix.js';
|
|
3
|
-
// Convert a stream into a promise that resolves with a Buffer
|
|
4
|
-
const streamToBuffer = async (readableStream)=>{
|
|
5
|
-
const chunks = [];
|
|
6
|
-
for await (const chunk of readableStream){
|
|
7
|
-
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
|
8
|
-
}
|
|
9
|
-
return Buffer.concat(chunks);
|
|
10
|
-
};
|
|
11
|
-
export const getHandler = ({ bucket, collection, getStorageClient })=>{
|
|
12
|
-
return async (req, { params: { filename } })=>{
|
|
13
|
-
try {
|
|
14
|
-
const prefix = await getFilePrefix({
|
|
15
|
-
collection,
|
|
16
|
-
filename,
|
|
17
|
-
req
|
|
18
|
-
});
|
|
19
|
-
const object = await getStorageClient().getObject({
|
|
20
|
-
Bucket: bucket,
|
|
21
|
-
Key: path.posix.join(prefix, filename)
|
|
22
|
-
});
|
|
23
|
-
if (!object.Body) {
|
|
24
|
-
return new Response(null, {
|
|
25
|
-
status: 404,
|
|
26
|
-
statusText: 'Not Found'
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
const bodyBuffer = await streamToBuffer(object.Body);
|
|
30
|
-
return new Response(bodyBuffer, {
|
|
31
|
-
headers: new Headers({
|
|
32
|
-
'Accept-Ranges': object.AcceptRanges,
|
|
33
|
-
'Content-Length': String(object.ContentLength),
|
|
34
|
-
'Content-Type': object.ContentType,
|
|
35
|
-
ETag: object.ETag
|
|
36
|
-
}),
|
|
37
|
-
status: 200
|
|
38
|
-
});
|
|
39
|
-
} catch (err) {
|
|
40
|
-
req.payload.logger.error(err);
|
|
41
|
-
return new Response('Internal Server Error', {
|
|
42
|
-
status: 500
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=staticHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/s3/staticHandler.ts"],"sourcesContent":["import type * as AWS from '@aws-sdk/client-s3'\nimport type { CollectionConfig } from 'payload'\n\nimport path from 'path'\n\nimport type { StaticHandler } from '../../types.js'\n\nimport { getFilePrefix } from '../../utilities/getFilePrefix.js'\n\ninterface Args {\n bucket: string\n collection: CollectionConfig\n getStorageClient: () => AWS.S3\n}\n\n// Convert a stream into a promise that resolves with a Buffer\nconst streamToBuffer = async (readableStream) => {\n const chunks = []\n for await (const chunk of readableStream) {\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk)\n }\n return Buffer.concat(chunks)\n}\n\nexport const getHandler = ({ bucket, collection, getStorageClient }: Args): StaticHandler => {\n return async (req, { params: { filename } }) => {\n try {\n const prefix = await getFilePrefix({ collection, filename, req })\n\n const object = await getStorageClient().getObject({\n Bucket: bucket,\n Key: path.posix.join(prefix, filename),\n })\n\n if (!object.Body) {\n return new Response(null, { status: 404, statusText: 'Not Found' })\n }\n\n const bodyBuffer = await streamToBuffer(object.Body)\n\n return new Response(bodyBuffer, {\n headers: new Headers({\n 'Accept-Ranges': object.AcceptRanges,\n 'Content-Length': String(object.ContentLength),\n 'Content-Type': object.ContentType,\n ETag: object.ETag,\n }),\n status: 200,\n })\n } catch (err) {\n req.payload.logger.error(err)\n return new Response('Internal Server Error', { status: 500 })\n }\n }\n}\n"],"names":["path","getFilePrefix","streamToBuffer","readableStream","chunks","chunk","push","Buffer","from","concat","getHandler","bucket","collection","getStorageClient","req","params","filename","prefix","object","getObject","Bucket","Key","posix","join","Body","Response","status","statusText","bodyBuffer","headers","Headers","AcceptRanges","String","ContentLength","ContentType","ETag","err","payload","logger","error"],"mappings":"AAGA,OAAOA,UAAU,OAAM;AAIvB,SAASC,aAAa,QAAQ,mCAAkC;AAQhE,8DAA8D;AAC9D,MAAMC,iBAAiB,OAAOC;IAC5B,MAAMC,SAAS,EAAE;IACjB,WAAW,MAAMC,SAASF,eAAgB;QACxCC,OAAOE,IAAI,CAAC,OAAOD,UAAU,WAAWE,OAAOC,IAAI,CAACH,SAASA;IAC/D;IACA,OAAOE,OAAOE,MAAM,CAACL;AACvB;AAEA,OAAO,MAAMM,aAAa,CAAC,EAAEC,MAAM,EAAEC,UAAU,EAAEC,gBAAgB,EAAQ;IACvE,OAAO,OAAOC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAE;QACzC,IAAI;YACF,MAAMC,SAAS,MAAMhB,cAAc;gBAAEW;gBAAYI;gBAAUF;YAAI;YAE/D,MAAMI,SAAS,MAAML,mBAAmBM,SAAS,CAAC;gBAChDC,QAAQT;gBACRU,KAAKrB,KAAKsB,KAAK,CAACC,IAAI,CAACN,QAAQD;YAC/B;YAEA,IAAI,CAACE,OAAOM,IAAI,EAAE;gBAChB,OAAO,IAAIC,SAAS,MAAM;oBAAEC,QAAQ;oBAAKC,YAAY;gBAAY;YACnE;YAEA,MAAMC,aAAa,MAAM1B,eAAegB,OAAOM,IAAI;YAEnD,OAAO,IAAIC,SAASG,YAAY;gBAC9BC,SAAS,IAAIC,QAAQ;oBACnB,iBAAiBZ,OAAOa,YAAY;oBACpC,kBAAkBC,OAAOd,OAAOe,aAAa;oBAC7C,gBAAgBf,OAAOgB,WAAW;oBAClCC,MAAMjB,OAAOiB,IAAI;gBACnB;gBACAT,QAAQ;YACV;QACF,EAAE,OAAOU,KAAK;YACZtB,IAAIuB,OAAO,CAACC,MAAM,CAACC,KAAK,CAACH;YACzB,OAAO,IAAIX,SAAS,yBAAyB;gBAAEC,QAAQ;YAAI;QAC7D;IACF;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateURL.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercelBlob/generateURL.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,cAAc,gBAAiB,eAAe,KAAG,WAI7D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/vercelBlob/generateURL.ts"],"sourcesContent":["import path from 'path'\n\nimport type { GenerateURL } from '../../types.js'\n\ntype GenerateUrlArgs = {\n baseUrl: string\n prefix?: string\n}\n\nexport const getGenerateUrl = ({ baseUrl }: GenerateUrlArgs): GenerateURL => {\n return ({ filename, prefix = '' }) => {\n return `${baseUrl}/${path.posix.join(prefix, filename)}`\n }\n}\n"],"names":["path","getGenerateUrl","baseUrl","filename","prefix","posix","join"],"mappings":"AAAA,OAAOA,UAAU,OAAM;AASvB,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,OAAO,EAAmB;IACzD,OAAO,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAE,EAAE;QAC/B,OAAO,GAAGF,QAAQ,CAAC,EAAEF,KAAKK,KAAK,CAACC,IAAI,CAACF,QAAQD,WAAW;IAC1D;AACF,EAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { HandleDelete } from '../../types.js';
|
|
2
|
-
type HandleDeleteArgs = {
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
prefix?: string;
|
|
5
|
-
token: string;
|
|
6
|
-
};
|
|
7
|
-
export declare const getHandleDelete: ({ baseUrl, token }: HandleDeleteArgs) => HandleDelete;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=handleDelete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleDelete.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercelBlob/handleDelete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,uBAAwB,gBAAgB,KAAG,YAOtE,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { del } from '@vercel/blob';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
export const getHandleDelete = ({ baseUrl, token })=>{
|
|
4
|
-
return async ({ doc: { prefix = '' }, filename })=>{
|
|
5
|
-
const fileUrl = `${baseUrl}/${path.posix.join(prefix, filename)}`;
|
|
6
|
-
const deletedBlob = await del(fileUrl, {
|
|
7
|
-
token
|
|
8
|
-
});
|
|
9
|
-
return deletedBlob;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=handleDelete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/vercelBlob/handleDelete.ts"],"sourcesContent":["import { del } from '@vercel/blob'\nimport path from 'path'\n\nimport type { HandleDelete } from '../../types.js'\n\ntype HandleDeleteArgs = {\n baseUrl: string\n prefix?: string\n token: string\n}\n\nexport const getHandleDelete = ({ baseUrl, token }: HandleDeleteArgs): HandleDelete => {\n return async ({ doc: { prefix = '' }, filename }) => {\n const fileUrl = `${baseUrl}/${path.posix.join(prefix, filename)}`\n const deletedBlob = await del(fileUrl, { token })\n\n return deletedBlob\n }\n}\n"],"names":["del","path","getHandleDelete","baseUrl","token","doc","prefix","filename","fileUrl","posix","join","deletedBlob"],"mappings":"AAAA,SAASA,GAAG,QAAQ,eAAc;AAClC,OAAOC,UAAU,OAAM;AAUvB,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,OAAO,EAAEC,KAAK,EAAoB;IAClE,OAAO,OAAO,EAAEC,KAAK,EAAEC,SAAS,EAAE,EAAE,EAAEC,QAAQ,EAAE;QAC9C,MAAMC,UAAU,GAAGL,QAAQ,CAAC,EAAEF,KAAKQ,KAAK,CAACC,IAAI,CAACJ,QAAQC,WAAW;QACjE,MAAMI,cAAc,MAAMX,IAAIQ,SAAS;YAAEJ;QAAM;QAE/C,OAAOO;IACT;AACF,EAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { HandleUpload } from '../../types.js';
|
|
2
|
-
import type { VercelBlobAdapterUploadOptions } from './index.js';
|
|
3
|
-
type HandleUploadArgs = {
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
prefix?: string;
|
|
6
|
-
token: string;
|
|
7
|
-
} & VercelBlobAdapterUploadOptions;
|
|
8
|
-
export declare const getHandleUpload: ({ access, addRandomSuffix, baseUrl, cacheControlMaxAge, prefix, token, }: HandleUploadArgs) => HandleUpload;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=handleUpload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleUpload.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercelBlob/handleUpload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAEhE,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,8BAA8B,CAAA;AAElC,eAAO,MAAM,eAAe,6EAOzB,gBAAgB,KAAG,YAmBrB,CAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { put } from '@vercel/blob';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
export const getHandleUpload = ({ access = 'public', addRandomSuffix, baseUrl, cacheControlMaxAge, prefix = '', token })=>{
|
|
4
|
-
return async ({ data, file: { buffer, filename, mimeType } })=>{
|
|
5
|
-
const fileKey = path.posix.join(data.prefix || prefix, filename);
|
|
6
|
-
const result = await put(fileKey, buffer, {
|
|
7
|
-
access,
|
|
8
|
-
addRandomSuffix,
|
|
9
|
-
cacheControlMaxAge,
|
|
10
|
-
contentType: mimeType,
|
|
11
|
-
token
|
|
12
|
-
});
|
|
13
|
-
// Get filename with suffix from returned url
|
|
14
|
-
if (addRandomSuffix) {
|
|
15
|
-
data.filename = result.url.replace(`${baseUrl}/`, '');
|
|
16
|
-
}
|
|
17
|
-
return data;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=handleUpload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/vercelBlob/handleUpload.ts"],"sourcesContent":["import { put } from '@vercel/blob'\nimport path from 'path'\n\nimport type { HandleUpload } from '../../types.js'\nimport type { VercelBlobAdapterUploadOptions } from './index.js'\n\ntype HandleUploadArgs = {\n baseUrl: string\n prefix?: string\n token: string\n} & VercelBlobAdapterUploadOptions\n\nexport const getHandleUpload = ({\n access = 'public',\n addRandomSuffix,\n baseUrl,\n cacheControlMaxAge,\n prefix = '',\n token,\n}: HandleUploadArgs): HandleUpload => {\n return async ({ data, file: { buffer, filename, mimeType } }) => {\n const fileKey = path.posix.join(data.prefix || prefix, filename)\n\n const result = await put(fileKey, buffer, {\n access,\n addRandomSuffix,\n cacheControlMaxAge,\n contentType: mimeType,\n token,\n })\n\n // Get filename with suffix from returned url\n if (addRandomSuffix) {\n data.filename = result.url.replace(`${baseUrl}/`, '')\n }\n\n return data\n }\n}\n"],"names":["put","path","getHandleUpload","access","addRandomSuffix","baseUrl","cacheControlMaxAge","prefix","token","data","file","buffer","filename","mimeType","fileKey","posix","join","result","contentType","url","replace"],"mappings":"AAAA,SAASA,GAAG,QAAQ,eAAc;AAClC,OAAOC,UAAU,OAAM;AAWvB,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,SAAS,QAAQ,EACjBC,eAAe,EACfC,OAAO,EACPC,kBAAkB,EAClBC,SAAS,EAAE,EACXC,KAAK,EACY;IACjB,OAAO,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAE;QAC1D,MAAMC,UAAUb,KAAKc,KAAK,CAACC,IAAI,CAACP,KAAKF,MAAM,IAAIA,QAAQK;QAEvD,MAAMK,SAAS,MAAMjB,IAAIc,SAASH,QAAQ;YACxCR;YACAC;YACAE;YACAY,aAAaL;YACbL;QACF;QAEA,6CAA6C;QAC7C,IAAIJ,iBAAiB;YACnBK,KAAKG,QAAQ,GAAGK,OAAOE,GAAG,CAACC,OAAO,CAAC,GAAGf,QAAQ,CAAC,CAAC,EAAE;QACpD;QAEA,OAAOI;IACT;AACF,EAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { Adapter } from '../../types.js';
|
|
2
|
-
export interface VercelBlobAdapterArgs {
|
|
3
|
-
options?: VercelBlobAdapterUploadOptions;
|
|
4
|
-
/**
|
|
5
|
-
* Vercel Blob storage read/write token
|
|
6
|
-
*
|
|
7
|
-
* Usually process.env.BLOB_READ_WRITE_TOKEN set by Vercel
|
|
8
|
-
*/
|
|
9
|
-
token: string;
|
|
10
|
-
}
|
|
11
|
-
export interface VercelBlobAdapterUploadOptions {
|
|
12
|
-
/**
|
|
13
|
-
* Access control level
|
|
14
|
-
*
|
|
15
|
-
* @default 'public'
|
|
16
|
-
*/
|
|
17
|
-
access?: 'public';
|
|
18
|
-
/**
|
|
19
|
-
* Add a random suffix to the uploaded file name
|
|
20
|
-
*
|
|
21
|
-
* @default false
|
|
22
|
-
*/
|
|
23
|
-
addRandomSuffix?: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Cache-Control max-age in seconds
|
|
26
|
-
*
|
|
27
|
-
* @default 31536000 (1 year)
|
|
28
|
-
*/
|
|
29
|
-
cacheControlMaxAge?: number;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* @deprecated Use [`@payloadcms/storage-vercel-blob`](https://www.npmjs.com/package/@payloadcms/storage-vercel-blob) instead.
|
|
33
|
-
*
|
|
34
|
-
* This adapter has been superceded by `@payloadcms/storage-vercel-blob` and will be removed in Payload 3.0.
|
|
35
|
-
*/
|
|
36
|
-
export declare const vercelBlobAdapter: ({ options, token }: VercelBlobAdapterArgs) => Adapter;
|
|
37
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercelBlob/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,gBAAgB,CAAA;AAO/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,8BAA8B,CAAA;IAExC;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAQD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,uBACF,qBAAqB,KAAG,OAoCjD,CAAA"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { getGenerateUrl } from './generateURL.js';
|
|
2
|
-
import { getHandleDelete } from './handleDelete.js';
|
|
3
|
-
import { getHandleUpload } from './handleUpload.js';
|
|
4
|
-
import { getStaticHandler } from './staticHandler.js';
|
|
5
|
-
const defaultUploadOptions = {
|
|
6
|
-
access: 'public',
|
|
7
|
-
addRandomSuffix: false,
|
|
8
|
-
cacheControlMaxAge: 60 * 60 * 24 * 365
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* @deprecated Use [`@payloadcms/storage-vercel-blob`](https://www.npmjs.com/package/@payloadcms/storage-vercel-blob) instead.
|
|
12
|
-
*
|
|
13
|
-
* This adapter has been superceded by `@payloadcms/storage-vercel-blob` and will be removed in Payload 3.0.
|
|
14
|
-
*/ export const vercelBlobAdapter = ({ options = {}, token })=>({ collection, prefix })=>{
|
|
15
|
-
if (!token) {
|
|
16
|
-
throw new Error('The token argument is required for the Vercel Blob adapter.');
|
|
17
|
-
}
|
|
18
|
-
// Parse storeId from token
|
|
19
|
-
const storeId = token.match(/^vercel_blob_rw_([a-z\d]+)_[a-z\d]+$/i)?.[1].toLowerCase();
|
|
20
|
-
if (!storeId) {
|
|
21
|
-
throw new Error('Invalid token format for Vercel Blob adapter. Should be vercel_blob_rw_<store_id>_<random_string>.');
|
|
22
|
-
}
|
|
23
|
-
const { access, addRandomSuffix, cacheControlMaxAge } = {
|
|
24
|
-
...defaultUploadOptions,
|
|
25
|
-
...options
|
|
26
|
-
};
|
|
27
|
-
const baseUrl = `https://${storeId}.${access}.blob.vercel-storage.com`;
|
|
28
|
-
return {
|
|
29
|
-
name: 'vercel-blob',
|
|
30
|
-
generateURL: getGenerateUrl({
|
|
31
|
-
baseUrl,
|
|
32
|
-
prefix
|
|
33
|
-
}),
|
|
34
|
-
handleDelete: getHandleDelete({
|
|
35
|
-
baseUrl,
|
|
36
|
-
prefix,
|
|
37
|
-
token
|
|
38
|
-
}),
|
|
39
|
-
handleUpload: getHandleUpload({
|
|
40
|
-
access,
|
|
41
|
-
addRandomSuffix,
|
|
42
|
-
baseUrl,
|
|
43
|
-
cacheControlMaxAge,
|
|
44
|
-
prefix,
|
|
45
|
-
token
|
|
46
|
-
}),
|
|
47
|
-
staticHandler: getStaticHandler({
|
|
48
|
-
baseUrl,
|
|
49
|
-
token
|
|
50
|
-
}, collection)
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/vercelBlob/index.ts"],"sourcesContent":["import type { Adapter, GeneratedAdapter } from '../../types.js'\n\nimport { getGenerateUrl } from './generateURL.js'\nimport { getHandleDelete } from './handleDelete.js'\nimport { getHandleUpload } from './handleUpload.js'\nimport { getStaticHandler } from './staticHandler.js'\n\nexport interface VercelBlobAdapterArgs {\n options?: VercelBlobAdapterUploadOptions\n\n /**\n * Vercel Blob storage read/write token\n *\n * Usually process.env.BLOB_READ_WRITE_TOKEN set by Vercel\n */\n token: string\n}\n\nexport interface VercelBlobAdapterUploadOptions {\n /**\n * Access control level\n *\n * @default 'public'\n */\n access?: 'public'\n /**\n * Add a random suffix to the uploaded file name\n *\n * @default false\n */\n addRandomSuffix?: boolean\n /**\n * Cache-Control max-age in seconds\n *\n * @default 31536000 (1 year)\n */\n cacheControlMaxAge?: number\n}\n\nconst defaultUploadOptions: VercelBlobAdapterUploadOptions = {\n access: 'public',\n addRandomSuffix: false,\n cacheControlMaxAge: 60 * 60 * 24 * 365, // 1 year\n}\n\n/**\n * @deprecated Use [`@payloadcms/storage-vercel-blob`](https://www.npmjs.com/package/@payloadcms/storage-vercel-blob) instead.\n *\n * This adapter has been superceded by `@payloadcms/storage-vercel-blob` and will be removed in Payload 3.0.\n */\nexport const vercelBlobAdapter =\n ({ options = {}, token }: VercelBlobAdapterArgs): Adapter =>\n ({ collection, prefix }): GeneratedAdapter => {\n if (!token) {\n throw new Error('The token argument is required for the Vercel Blob adapter.')\n }\n\n // Parse storeId from token\n const storeId = token.match(/^vercel_blob_rw_([a-z\\d]+)_[a-z\\d]+$/i)?.[1].toLowerCase()\n\n if (!storeId) {\n throw new Error(\n 'Invalid token format for Vercel Blob adapter. Should be vercel_blob_rw_<store_id>_<random_string>.',\n )\n }\n\n const { access, addRandomSuffix, cacheControlMaxAge } = {\n ...defaultUploadOptions,\n ...options,\n }\n\n const baseUrl = `https://${storeId}.${access}.blob.vercel-storage.com`\n\n return {\n name: 'vercel-blob',\n generateURL: getGenerateUrl({ baseUrl, prefix }),\n handleDelete: getHandleDelete({ baseUrl, prefix, token }),\n handleUpload: getHandleUpload({\n access,\n addRandomSuffix,\n baseUrl,\n cacheControlMaxAge,\n prefix,\n token,\n }),\n staticHandler: getStaticHandler({ baseUrl, token }, collection),\n }\n }\n"],"names":["getGenerateUrl","getHandleDelete","getHandleUpload","getStaticHandler","defaultUploadOptions","access","addRandomSuffix","cacheControlMaxAge","vercelBlobAdapter","options","token","collection","prefix","Error","storeId","match","toLowerCase","baseUrl","name","generateURL","handleDelete","handleUpload","staticHandler"],"mappings":"AAEA,SAASA,cAAc,QAAQ,mBAAkB;AACjD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,gBAAgB,QAAQ,qBAAoB;AAkCrD,MAAMC,uBAAuD;IAC3DC,QAAQ;IACRC,iBAAiB;IACjBC,oBAAoB,KAAK,KAAK,KAAK;AACrC;AAEA;;;;CAIC,GACD,OAAO,MAAMC,oBACX,CAAC,EAAEC,UAAU,CAAC,CAAC,EAAEC,KAAK,EAAyB,GAC/C,CAAC,EAAEC,UAAU,EAAEC,MAAM,EAAE;QACrB,IAAI,CAACF,OAAO;YACV,MAAM,IAAIG,MAAM;QAClB;QAEA,2BAA2B;QAC3B,MAAMC,UAAUJ,MAAMK,KAAK,CAAC,0CAA0C,CAAC,EAAE,CAACC;QAE1E,IAAI,CAACF,SAAS;YACZ,MAAM,IAAID,MACR;QAEJ;QAEA,MAAM,EAAER,MAAM,EAAEC,eAAe,EAAEC,kBAAkB,EAAE,GAAG;YACtD,GAAGH,oBAAoB;YACvB,GAAGK,OAAO;QACZ;QAEA,MAAMQ,UAAU,CAAC,QAAQ,EAAEH,QAAQ,CAAC,EAAET,OAAO,wBAAwB,CAAC;QAEtE,OAAO;YACLa,MAAM;YACNC,aAAanB,eAAe;gBAAEiB;gBAASL;YAAO;YAC9CQ,cAAcnB,gBAAgB;gBAAEgB;gBAASL;gBAAQF;YAAM;YACvDW,cAAcnB,gBAAgB;gBAC5BG;gBACAC;gBACAW;gBACAV;gBACAK;gBACAF;YACF;YACAY,eAAenB,iBAAiB;gBAAEc;gBAASP;YAAM,GAAGC;QACtD;IACF,EAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CollectionConfig } from 'payload';
|
|
2
|
-
import type { StaticHandler } from '../../types.js';
|
|
3
|
-
type StaticHandlerArgs = {
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
token: string;
|
|
6
|
-
};
|
|
7
|
-
export declare const getStaticHandler: ({ baseUrl, token }: StaticHandlerArgs, collection: CollectionConfig) => StaticHandler;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=staticHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"staticHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/vercelBlob/staticHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAInD,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,gBAAgB,uBACP,iBAAiB,cACzB,gBAAgB,KAC3B,aAmCF,CAAA"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { head } from '@vercel/blob';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { getFilePrefix } from '../../utilities/getFilePrefix.js';
|
|
4
|
-
export const getStaticHandler = ({ baseUrl, token }, collection)=>{
|
|
5
|
-
return async (req, { params: { filename } })=>{
|
|
6
|
-
try {
|
|
7
|
-
const prefix = await getFilePrefix({
|
|
8
|
-
collection,
|
|
9
|
-
filename,
|
|
10
|
-
req
|
|
11
|
-
});
|
|
12
|
-
const fileUrl = `${baseUrl}/${path.posix.join(prefix, filename)}`;
|
|
13
|
-
const blobMetadata = await head(fileUrl, {
|
|
14
|
-
token
|
|
15
|
-
});
|
|
16
|
-
if (!blobMetadata) {
|
|
17
|
-
return new Response(null, {
|
|
18
|
-
status: 404,
|
|
19
|
-
statusText: 'Not Found'
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
const { contentDisposition, contentType, size } = blobMetadata;
|
|
23
|
-
const response = await fetch(fileUrl);
|
|
24
|
-
const blob = await response.blob();
|
|
25
|
-
if (!blob) {
|
|
26
|
-
return new Response(null, {
|
|
27
|
-
status: 204,
|
|
28
|
-
statusText: 'No Content'
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
const bodyBuffer = await blob.arrayBuffer();
|
|
32
|
-
return new Response(bodyBuffer, {
|
|
33
|
-
headers: new Headers({
|
|
34
|
-
'Content-Disposition': contentDisposition,
|
|
35
|
-
'Content-Length': String(size),
|
|
36
|
-
'Content-Type': contentType
|
|
37
|
-
}),
|
|
38
|
-
status: 200
|
|
39
|
-
});
|
|
40
|
-
} catch (err) {
|
|
41
|
-
req.payload.logger.error({
|
|
42
|
-
err,
|
|
43
|
-
msg: 'Unexpected error in staticHandler'
|
|
44
|
-
});
|
|
45
|
-
return new Response('Internal Server Error', {
|
|
46
|
-
status: 500
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
//# sourceMappingURL=staticHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/vercelBlob/staticHandler.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\nimport { head } from '@vercel/blob'\nimport path from 'path'\n\nimport type { StaticHandler } from '../../types.js'\n\nimport { getFilePrefix } from '../../utilities/getFilePrefix.js'\n\ntype StaticHandlerArgs = {\n baseUrl: string\n token: string\n}\n\nexport const getStaticHandler = (\n { baseUrl, token }: StaticHandlerArgs,\n collection: CollectionConfig,\n): StaticHandler => {\n return async (req, { params: { filename } }) => {\n try {\n const prefix = await getFilePrefix({ collection, filename, req })\n\n const fileUrl = `${baseUrl}/${path.posix.join(prefix, filename)}`\n\n const blobMetadata = await head(fileUrl, { token })\n if (!blobMetadata) {\n return new Response(null, { status: 404, statusText: 'Not Found' })\n }\n\n const { contentDisposition, contentType, size } = blobMetadata\n const response = await fetch(fileUrl)\n const blob = await response.blob()\n\n if (!blob) {\n return new Response(null, { status: 204, statusText: 'No Content' })\n }\n\n const bodyBuffer = await blob.arrayBuffer()\n\n return new Response(bodyBuffer, {\n headers: new Headers({\n 'Content-Disposition': contentDisposition,\n 'Content-Length': String(size),\n 'Content-Type': contentType,\n }),\n status: 200,\n })\n } catch (err: unknown) {\n req.payload.logger.error({ err, msg: 'Unexpected error in staticHandler' })\n return new Response('Internal Server Error', { status: 500 })\n }\n }\n}\n"],"names":["head","path","getFilePrefix","getStaticHandler","baseUrl","token","collection","req","params","filename","prefix","fileUrl","posix","join","blobMetadata","Response","status","statusText","contentDisposition","contentType","size","response","fetch","blob","bodyBuffer","arrayBuffer","headers","Headers","String","err","payload","logger","error","msg"],"mappings":"AAEA,SAASA,IAAI,QAAQ,eAAc;AACnC,OAAOC,UAAU,OAAM;AAIvB,SAASC,aAAa,QAAQ,mCAAkC;AAOhE,OAAO,MAAMC,mBAAmB,CAC9B,EAAEC,OAAO,EAAEC,KAAK,EAAqB,EACrCC;IAEA,OAAO,OAAOC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAE;QACzC,IAAI;YACF,MAAMC,SAAS,MAAMR,cAAc;gBAAEI;gBAAYG;gBAAUF;YAAI;YAE/D,MAAMI,UAAU,GAAGP,QAAQ,CAAC,EAAEH,KAAKW,KAAK,CAACC,IAAI,CAACH,QAAQD,WAAW;YAEjE,MAAMK,eAAe,MAAMd,KAAKW,SAAS;gBAAEN;YAAM;YACjD,IAAI,CAACS,cAAc;gBACjB,OAAO,IAAIC,SAAS,MAAM;oBAAEC,QAAQ;oBAAKC,YAAY;gBAAY;YACnE;YAEA,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGN;YAClD,MAAMO,WAAW,MAAMC,MAAMX;YAC7B,MAAMY,OAAO,MAAMF,SAASE,IAAI;YAEhC,IAAI,CAACA,MAAM;gBACT,OAAO,IAAIR,SAAS,MAAM;oBAAEC,QAAQ;oBAAKC,YAAY;gBAAa;YACpE;YAEA,MAAMO,aAAa,MAAMD,KAAKE,WAAW;YAEzC,OAAO,IAAIV,SAASS,YAAY;gBAC9BE,SAAS,IAAIC,QAAQ;oBACnB,uBAAuBT;oBACvB,kBAAkBU,OAAOR;oBACzB,gBAAgBD;gBAClB;gBACAH,QAAQ;YACV;QACF,EAAE,OAAOa,KAAc;YACrBtB,IAAIuB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;gBAAEH;gBAAKI,KAAK;YAAoC;YACzE,OAAO,IAAIlB,SAAS,yBAAyB;gBAAEC,QAAQ;YAAI;QAC7D;IACF;AACF,EAAC"}
|
package/dist/exports/azure.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["../../src/exports/azure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA"}
|
package/dist/exports/azure.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/azure.ts"],"sourcesContent":["export { azureBlobStorageAdapter } from '../adapters/azure/index.js'\n"],"names":["azureBlobStorageAdapter"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,6BAA4B"}
|
package/dist/exports/gcs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gcs.d.ts","sourceRoot":"","sources":["../../src/exports/gcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/exports/gcs.js
DELETED