@payloadcms/storage-s3 3.28.0-internal.4aa73c6 → 3.28.0-internal.645949d
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/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,iBAAiB,EAElB,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,iBAAiB,EAElB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,KAAK,EAAU,MAAM,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAUzC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IAEH,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;IAC/B;;;;OAIG;IAEH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAE7F;;;;OAIG;IACH,MAAM,EAAE,GAAG,CAAC,cAAc,CAAA;IAE1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,eAAe,GAAG,CAAC,aAAa,EAAE,gBAAgB,KAAK,MAAM,CAAA;AAelE,eAAO,MAAM,SAAS,EAAE,eA4ErB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,12 +7,25 @@ import { getHandleDelete } from './handleDelete.js';
|
|
|
7
7
|
import { getHandleUpload } from './handleUpload.js';
|
|
8
8
|
import { getHandler } from './staticHandler.js';
|
|
9
9
|
let storageClient = null;
|
|
10
|
+
const defaultRequestHandlerOpts = {
|
|
11
|
+
httpAgent: {
|
|
12
|
+
keepAlive: true,
|
|
13
|
+
maxSockets: 100
|
|
14
|
+
},
|
|
15
|
+
httpsAgent: {
|
|
16
|
+
keepAlive: true,
|
|
17
|
+
maxSockets: 100
|
|
18
|
+
}
|
|
19
|
+
};
|
|
10
20
|
export const s3Storage = (s3StorageOptions)=>(incomingConfig)=>{
|
|
11
21
|
const getStorageClient = ()=>{
|
|
12
22
|
if (storageClient) {
|
|
13
23
|
return storageClient;
|
|
14
24
|
}
|
|
15
|
-
storageClient = new AWS.S3(
|
|
25
|
+
storageClient = new AWS.S3({
|
|
26
|
+
requestHandler: defaultRequestHandlerOpts,
|
|
27
|
+
...s3StorageOptions.config ?? {}
|
|
28
|
+
});
|
|
16
29
|
return storageClient;
|
|
17
30
|
};
|
|
18
31
|
const isPluginDisabled = s3StorageOptions.enabled === false;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type {\n Adapter,\n ClientUploadsConfig,\n PluginOptions as CloudStoragePluginOptions,\n CollectionOptions,\n GeneratedAdapter,\n} from '@payloadcms/plugin-cloud-storage/types'\nimport type { Config, Plugin, UploadCollectionSlug } from 'payload'\n\nimport * as AWS from '@aws-sdk/client-s3'\nimport { cloudStoragePlugin } from '@payloadcms/plugin-cloud-storage'\nimport { initClientUploads } from '@payloadcms/plugin-cloud-storage/utilities'\n\nimport { getGenerateSignedURLHandler } from './generateSignedURL.js'\nimport { getGenerateURL } from './generateURL.js'\nimport { getHandleDelete } from './handleDelete.js'\nimport { getHandleUpload } from './handleUpload.js'\nimport { getHandler } from './staticHandler.js'\n\nexport type S3StorageOptions = {\n /**\n * Access control list for uploaded files.\n */\n\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\n bucket: string\n\n /**\n * Do uploads directly on the client to bypass limits on Vercel. You must allow CORS PUT method for the bucket to your website.\n */\n clientUploads?: ClientUploadsConfig\n /**\n * Collection options to apply the S3 adapter to.\n */\n collections: Partial<Record<UploadCollectionSlug, Omit<CollectionOptions, 'adapter'> | true>>\n\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 * Whether or not to disable local storage\n *\n * @default true\n */\n disableLocalStorage?: boolean\n\n /**\n * Whether or not to enable the plugin\n *\n * Default: true\n */\n enabled?: boolean\n}\n\ntype S3StoragePlugin = (storageS3Args: S3StorageOptions) => Plugin\n\nlet storageClient: AWS.S3 | null = null\n\nexport const s3Storage: S3StoragePlugin =\n (s3StorageOptions: S3StorageOptions) =>\n (incomingConfig: Config): Config => {\n const getStorageClient: () => AWS.S3 = () => {\n if (storageClient) {\n return storageClient\n }\n storageClient = new AWS.S3(s3StorageOptions.config ?? {})\n return storageClient\n }\n\n const isPluginDisabled = s3StorageOptions.enabled === false\n\n initClientUploads({\n clientHandler: '@payloadcms/storage-s3/client#S3ClientUploadHandler',\n collections: s3StorageOptions.collections,\n config: incomingConfig,\n enabled: !isPluginDisabled && Boolean(s3StorageOptions.clientUploads),\n serverHandler: getGenerateSignedURLHandler({\n access:\n typeof s3StorageOptions.clientUploads === 'object'\n ? s3StorageOptions.clientUploads.access\n : undefined,\n acl: s3StorageOptions.acl,\n bucket: s3StorageOptions.bucket,\n collections: s3StorageOptions.collections,\n getStorageClient,\n }),\n serverHandlerPath: '/storage-s3-generate-signed-url',\n })\n\n if (isPluginDisabled) {\n return incomingConfig\n }\n\n const adapter = s3StorageInternal(getStorageClient, s3StorageOptions)\n\n // Add adapter to each collection option object\n const collectionsWithAdapter: CloudStoragePluginOptions['collections'] = Object.entries(\n s3StorageOptions.collections,\n ).reduce(\n (acc, [slug, collOptions]) => ({\n ...acc,\n [slug]: {\n ...(collOptions === true ? {} : collOptions),\n adapter,\n },\n }),\n {} as Record<string, CollectionOptions>,\n )\n\n // Set disableLocalStorage: true for collections specified in the plugin options\n const config = {\n ...incomingConfig,\n collections: (incomingConfig.collections || []).map((collection) => {\n if (!collectionsWithAdapter[collection.slug]) {\n return collection\n }\n\n return {\n ...collection,\n upload: {\n ...(typeof collection.upload === 'object' ? collection.upload : {}),\n disableLocalStorage: true,\n },\n }\n }),\n }\n\n return cloudStoragePlugin({\n collections: collectionsWithAdapter,\n })(config)\n }\n\nfunction s3StorageInternal(\n getStorageClient: () => AWS.S3,\n { acl, bucket, clientUploads, config = {} }: S3StorageOptions,\n): Adapter {\n return ({ collection, prefix }): GeneratedAdapter => {\n return {\n name: 's3',\n clientUploads,\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}\n"],"names":["AWS","cloudStoragePlugin","initClientUploads","getGenerateSignedURLHandler","getGenerateURL","getHandleDelete","getHandleUpload","getHandler","storageClient","s3Storage","s3StorageOptions","incomingConfig","getStorageClient","S3","config","isPluginDisabled","enabled","clientHandler","collections","Boolean","clientUploads","serverHandler","access","undefined","acl","bucket","serverHandlerPath","adapter","s3StorageInternal","collectionsWithAdapter","Object","entries","reduce","acc","slug","collOptions","map","collection","upload","disableLocalStorage","prefix","name","generateURL","handleDelete","handleUpload","staticHandler"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type {\n Adapter,\n ClientUploadsConfig,\n PluginOptions as CloudStoragePluginOptions,\n CollectionOptions,\n GeneratedAdapter,\n} from '@payloadcms/plugin-cloud-storage/types'\nimport type { NodeHttpHandlerOptions } from '@smithy/node-http-handler'\nimport type { Config, Plugin, UploadCollectionSlug } from 'payload'\n\nimport * as AWS from '@aws-sdk/client-s3'\nimport { cloudStoragePlugin } from '@payloadcms/plugin-cloud-storage'\nimport { initClientUploads } from '@payloadcms/plugin-cloud-storage/utilities'\n\nimport { getGenerateSignedURLHandler } from './generateSignedURL.js'\nimport { getGenerateURL } from './generateURL.js'\nimport { getHandleDelete } from './handleDelete.js'\nimport { getHandleUpload } from './handleUpload.js'\nimport { getHandler } from './staticHandler.js'\n\nexport type S3StorageOptions = {\n /**\n * Access control list for uploaded files.\n */\n\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\n bucket: string\n\n /**\n * Do uploads directly on the client to bypass limits on Vercel. You must allow CORS PUT method for the bucket to your website.\n */\n clientUploads?: ClientUploadsConfig\n /**\n * Collection options to apply the S3 adapter to.\n */\n collections: Partial<Record<UploadCollectionSlug, Omit<CollectionOptions, 'adapter'> | true>>\n\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 * Whether or not to disable local storage\n *\n * @default true\n */\n disableLocalStorage?: boolean\n\n /**\n * Whether or not to enable the plugin\n *\n * Default: true\n */\n enabled?: boolean\n}\n\ntype S3StoragePlugin = (storageS3Args: S3StorageOptions) => Plugin\n\nlet storageClient: AWS.S3 | null = null\n\nconst defaultRequestHandlerOpts: NodeHttpHandlerOptions = {\n httpAgent: {\n keepAlive: true,\n maxSockets: 100,\n },\n httpsAgent: {\n keepAlive: true,\n maxSockets: 100,\n },\n}\n\nexport const s3Storage: S3StoragePlugin =\n (s3StorageOptions: S3StorageOptions) =>\n (incomingConfig: Config): Config => {\n const getStorageClient: () => AWS.S3 = () => {\n if (storageClient) {\n return storageClient\n }\n\n storageClient = new AWS.S3({\n requestHandler: defaultRequestHandlerOpts,\n ...(s3StorageOptions.config ?? {}),\n })\n return storageClient\n }\n\n const isPluginDisabled = s3StorageOptions.enabled === false\n\n initClientUploads({\n clientHandler: '@payloadcms/storage-s3/client#S3ClientUploadHandler',\n collections: s3StorageOptions.collections,\n config: incomingConfig,\n enabled: !isPluginDisabled && Boolean(s3StorageOptions.clientUploads),\n serverHandler: getGenerateSignedURLHandler({\n access:\n typeof s3StorageOptions.clientUploads === 'object'\n ? s3StorageOptions.clientUploads.access\n : undefined,\n acl: s3StorageOptions.acl,\n bucket: s3StorageOptions.bucket,\n collections: s3StorageOptions.collections,\n getStorageClient,\n }),\n serverHandlerPath: '/storage-s3-generate-signed-url',\n })\n\n if (isPluginDisabled) {\n return incomingConfig\n }\n\n const adapter = s3StorageInternal(getStorageClient, s3StorageOptions)\n\n // Add adapter to each collection option object\n const collectionsWithAdapter: CloudStoragePluginOptions['collections'] = Object.entries(\n s3StorageOptions.collections,\n ).reduce(\n (acc, [slug, collOptions]) => ({\n ...acc,\n [slug]: {\n ...(collOptions === true ? {} : collOptions),\n adapter,\n },\n }),\n {} as Record<string, CollectionOptions>,\n )\n\n // Set disableLocalStorage: true for collections specified in the plugin options\n const config = {\n ...incomingConfig,\n collections: (incomingConfig.collections || []).map((collection) => {\n if (!collectionsWithAdapter[collection.slug]) {\n return collection\n }\n\n return {\n ...collection,\n upload: {\n ...(typeof collection.upload === 'object' ? collection.upload : {}),\n disableLocalStorage: true,\n },\n }\n }),\n }\n\n return cloudStoragePlugin({\n collections: collectionsWithAdapter,\n })(config)\n }\n\nfunction s3StorageInternal(\n getStorageClient: () => AWS.S3,\n { acl, bucket, clientUploads, config = {} }: S3StorageOptions,\n): Adapter {\n return ({ collection, prefix }): GeneratedAdapter => {\n return {\n name: 's3',\n clientUploads,\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}\n"],"names":["AWS","cloudStoragePlugin","initClientUploads","getGenerateSignedURLHandler","getGenerateURL","getHandleDelete","getHandleUpload","getHandler","storageClient","defaultRequestHandlerOpts","httpAgent","keepAlive","maxSockets","httpsAgent","s3Storage","s3StorageOptions","incomingConfig","getStorageClient","S3","requestHandler","config","isPluginDisabled","enabled","clientHandler","collections","Boolean","clientUploads","serverHandler","access","undefined","acl","bucket","serverHandlerPath","adapter","s3StorageInternal","collectionsWithAdapter","Object","entries","reduce","acc","slug","collOptions","map","collection","upload","disableLocalStorage","prefix","name","generateURL","handleDelete","handleUpload","staticHandler"],"mappings":"AAUA,YAAYA,SAAS,qBAAoB;AACzC,SAASC,kBAAkB,QAAQ,mCAAkC;AACrE,SAASC,iBAAiB,QAAQ,6CAA4C;AAE9E,SAASC,2BAA2B,QAAQ,yBAAwB;AACpE,SAASC,cAAc,QAAQ,mBAAkB;AACjD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,eAAe,QAAQ,oBAAmB;AACnD,SAASC,UAAU,QAAQ,qBAAoB;AAiD/C,IAAIC,gBAA+B;AAEnC,MAAMC,4BAAoD;IACxDC,WAAW;QACTC,WAAW;QACXC,YAAY;IACd;IACAC,YAAY;QACVF,WAAW;QACXC,YAAY;IACd;AACF;AAEA,OAAO,MAAME,YACX,CAACC,mBACD,CAACC;QACC,MAAMC,mBAAiC;YACrC,IAAIT,eAAe;gBACjB,OAAOA;YACT;YAEAA,gBAAgB,IAAIR,IAAIkB,EAAE,CAAC;gBACzBC,gBAAgBV;gBAChB,GAAIM,iBAAiBK,MAAM,IAAI,CAAC,CAAC;YACnC;YACA,OAAOZ;QACT;QAEA,MAAMa,mBAAmBN,iBAAiBO,OAAO,KAAK;QAEtDpB,kBAAkB;YAChBqB,eAAe;YACfC,aAAaT,iBAAiBS,WAAW;YACzCJ,QAAQJ;YACRM,SAAS,CAACD,oBAAoBI,QAAQV,iBAAiBW,aAAa;YACpEC,eAAexB,4BAA4B;gBACzCyB,QACE,OAAOb,iBAAiBW,aAAa,KAAK,WACtCX,iBAAiBW,aAAa,CAACE,MAAM,GACrCC;gBACNC,KAAKf,iBAAiBe,GAAG;gBACzBC,QAAQhB,iBAAiBgB,MAAM;gBAC/BP,aAAaT,iBAAiBS,WAAW;gBACzCP;YACF;YACAe,mBAAmB;QACrB;QAEA,IAAIX,kBAAkB;YACpB,OAAOL;QACT;QAEA,MAAMiB,UAAUC,kBAAkBjB,kBAAkBF;QAEpD,+CAA+C;QAC/C,MAAMoB,yBAAmEC,OAAOC,OAAO,CACrFtB,iBAAiBS,WAAW,EAC5Bc,MAAM,CACN,CAACC,KAAK,CAACC,MAAMC,YAAY,GAAM,CAAA;gBAC7B,GAAGF,GAAG;gBACN,CAACC,KAAK,EAAE;oBACN,GAAIC,gBAAgB,OAAO,CAAC,IAAIA,WAAW;oBAC3CR;gBACF;YACF,CAAA,GACA,CAAC;QAGH,gFAAgF;QAChF,MAAMb,SAAS;YACb,GAAGJ,cAAc;YACjBQ,aAAa,AAACR,CAAAA,eAAeQ,WAAW,IAAI,EAAE,AAAD,EAAGkB,GAAG,CAAC,CAACC;gBACnD,IAAI,CAACR,sBAAsB,CAACQ,WAAWH,IAAI,CAAC,EAAE;oBAC5C,OAAOG;gBACT;gBAEA,OAAO;oBACL,GAAGA,UAAU;oBACbC,QAAQ;wBACN,GAAI,OAAOD,WAAWC,MAAM,KAAK,WAAWD,WAAWC,MAAM,GAAG,CAAC,CAAC;wBAClEC,qBAAqB;oBACvB;gBACF;YACF;QACF;QAEA,OAAO5C,mBAAmB;YACxBuB,aAAaW;QACf,GAAGf;IACL,EAAC;AAEH,SAASc,kBACPjB,gBAA8B,EAC9B,EAAEa,GAAG,EAAEC,MAAM,EAAEL,aAAa,EAAEN,SAAS,CAAC,CAAC,EAAoB;IAE7D,OAAO,CAAC,EAAEuB,UAAU,EAAEG,MAAM,EAAE;QAC5B,OAAO;YACLC,MAAM;YACNrB;YACAsB,aAAa5C,eAAe;gBAAE2B;gBAAQX;YAAO;YAC7C6B,cAAc5C,gBAAgB;gBAAE0B;gBAAQd;YAAiB;YACzDiC,cAAc5C,gBAAgB;gBAC5BwB;gBACAC;gBACAY;gBACA1B;gBACA6B;YACF;YACAK,eAAe5C,WAAW;gBAAEwB;gBAAQY;gBAAY1B;YAAiB;QACnE;IACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/storage-s3",
|
|
3
|
-
"version": "3.28.0-internal.
|
|
3
|
+
"version": "3.28.0-internal.645949d",
|
|
4
4
|
"description": "Payload storage adapter for Amazon S3",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -39,13 +39,14 @@
|
|
|
39
39
|
"@aws-sdk/client-s3": "^3.614.0",
|
|
40
40
|
"@aws-sdk/lib-storage": "^3.614.0",
|
|
41
41
|
"@aws-sdk/s3-request-presigner": "^3.614.0",
|
|
42
|
-
"@payloadcms/plugin-cloud-storage": "3.28.0-internal.
|
|
42
|
+
"@payloadcms/plugin-cloud-storage": "3.28.0-internal.645949d"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"
|
|
45
|
+
"@smithy/node-http-handler": "4.0.3",
|
|
46
|
+
"payload": "3.28.0-internal.645949d"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
|
-
"payload": "3.28.0-internal.
|
|
49
|
+
"payload": "3.28.0-internal.645949d"
|
|
49
50
|
},
|
|
50
51
|
"engines": {
|
|
51
52
|
"node": "^18.20.2 || >=20.9.0"
|