@payloadcms/plugin-cloud-storage 3.25.0 → 3.26.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.
@@ -5,6 +5,7 @@ type ClientUploadHandlerProps<T extends Record<string, unknown>> = {
5
5
  collectionSlug: UploadCollectionSlug;
6
6
  enabled?: boolean;
7
7
  extra: T;
8
+ prefix?: string;
8
9
  serverHandlerPath: string;
9
10
  };
10
11
  export declare const createClientUploadHandler: <T extends Record<string, unknown>>({ handler, }: {
@@ -13,10 +14,11 @@ export declare const createClientUploadHandler: <T extends Record<string, unknow
13
14
  collectionSlug: UploadCollectionSlug;
14
15
  extra: T;
15
16
  file: File;
17
+ prefix?: string;
16
18
  serverHandlerPath: string;
17
19
  serverURL: string;
18
20
  updateFilename: (value: string) => void;
19
21
  }) => Promise<unknown>;
20
- }) => ({ children, collectionSlug, enabled, extra, serverHandlerPath, }: ClientUploadHandlerProps<T>) => import("react").JSX.Element;
22
+ }) => ({ children, collectionSlug, enabled, extra, prefix, serverHandlerPath, }: ClientUploadHandlerProps<T>) => import("react").JSX.Element;
21
23
  export {};
22
24
  //# sourceMappingURL=createClientUploadHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createClientUploadHandler.d.ts","sourceRoot":"","sources":["../../src/client/createClientUploadHandler.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGnD,OAAO,EAAY,KAAK,SAAS,EAAa,MAAM,OAAO,CAAA;AAE3D,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACjE,QAAQ,EAAE,SAAS,CAAA;IACnB,cAAc,EAAE,oBAAoB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,CAAC,CAAA;IACR,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBAExE;IACD,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,oBAAoB,CAAA;QACpC,KAAK,EAAE,CAAC,CAAA;QACR,IAAI,EAAE,IAAI,CAAA;QACV,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvB,wEAOI,wBAAwB,CAAC,CAAC,CAAC,gCAkC/B,CAAA"}
1
+ {"version":3,"file":"createClientUploadHandler.d.ts","sourceRoot":"","sources":["../../src/client/createClientUploadHandler.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAGnD,OAAO,EAAY,KAAK,SAAS,EAAa,MAAM,OAAO,CAAA;AAE3D,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACjE,QAAQ,EAAE,SAAS,CAAA;IACnB,cAAc,EAAE,oBAAoB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,CAAC,CAAA;IACR,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBAExE;IACD,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,oBAAoB,CAAA;QACpC,KAAK,EAAE,CAAC,CAAA;QACR,IAAI,EAAE,IAAI,CAAA;QACV,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvB,gFAQI,wBAAwB,CAAC,CAAC,CAAC,gCAmC/B,CAAA"}
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useConfig, useEffectEvent, useUploadHandlers } from '@payloadcms/ui';
4
4
  import { Fragment, useEffect } from 'react';
5
5
  export const createClientUploadHandler = ({ handler })=>{
6
- return function ClientUploadHandler({ children, collectionSlug, enabled, extra, serverHandlerPath }) {
6
+ return function ClientUploadHandler({ children, collectionSlug, enabled, extra, prefix, serverHandlerPath }) {
7
7
  const { setUploadHandler } = useUploadHandlers();
8
8
  const { config: { routes: { api: apiRoute }, serverURL } } = useConfig();
9
9
  const initializeHandler = useEffectEvent(()=>{
@@ -16,6 +16,7 @@ export const createClientUploadHandler = ({ handler })=>{
16
16
  collectionSlug,
17
17
  extra,
18
18
  file,
19
+ prefix,
19
20
  serverHandlerPath,
20
21
  serverURL,
21
22
  updateFilename
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/createClientUploadHandler.tsx"],"sourcesContent":["'use client'\n\nimport type { UploadCollectionSlug } from 'payload'\n\nimport { useConfig, useEffectEvent, useUploadHandlers } from '@payloadcms/ui'\nimport { Fragment, type ReactNode, useEffect } from 'react'\n\ntype ClientUploadHandlerProps<T extends Record<string, unknown>> = {\n children: ReactNode\n collectionSlug: UploadCollectionSlug\n enabled?: boolean\n extra: T\n serverHandlerPath: string\n}\n\nexport const createClientUploadHandler = <T extends Record<string, unknown>>({\n handler,\n}: {\n handler: (args: {\n apiRoute: string\n collectionSlug: UploadCollectionSlug\n extra: T\n file: File\n serverHandlerPath: string\n serverURL: string\n updateFilename: (value: string) => void\n }) => Promise<unknown>\n}) => {\n return function ClientUploadHandler({\n children,\n collectionSlug,\n enabled,\n extra,\n serverHandlerPath,\n }: ClientUploadHandlerProps<T>) {\n const { setUploadHandler } = useUploadHandlers()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const initializeHandler = useEffectEvent(() => {\n if (enabled) {\n setUploadHandler({\n collectionSlug,\n handler: ({ file, updateFilename }) => {\n return handler({\n apiRoute,\n collectionSlug,\n extra,\n file,\n serverHandlerPath,\n serverURL,\n updateFilename,\n })\n },\n })\n }\n })\n\n useEffect(() => {\n initializeHandler()\n }, [])\n\n return <Fragment>{children}</Fragment>\n }\n}\n"],"names":["useConfig","useEffectEvent","useUploadHandlers","Fragment","useEffect","createClientUploadHandler","handler","ClientUploadHandler","children","collectionSlug","enabled","extra","serverHandlerPath","setUploadHandler","config","routes","api","apiRoute","serverURL","initializeHandler","file","updateFilename"],"mappings":"AAAA;;AAIA,SAASA,SAAS,EAAEC,cAAc,EAAEC,iBAAiB,QAAQ,iBAAgB;AAC7E,SAASC,QAAQ,EAAkBC,SAAS,QAAQ,QAAO;AAU3D,OAAO,MAAMC,4BAA4B,CAAoC,EAC3EC,OAAO,EAWR;IACC,OAAO,SAASC,oBAAoB,EAClCC,QAAQ,EACRC,cAAc,EACdC,OAAO,EACPC,KAAK,EACLC,iBAAiB,EACW;QAC5B,MAAM,EAAEC,gBAAgB,EAAE,GAAGX;QAC7B,MAAM,EACJY,QAAQ,EACNC,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,EACF,GAAGlB;QAEJ,MAAMmB,oBAAoBlB,eAAe;YACvC,IAAIS,SAAS;gBACXG,iBAAiB;oBACfJ;oBACAH,SAAS,CAAC,EAAEc,IAAI,EAAEC,cAAc,EAAE;wBAChC,OAAOf,QAAQ;4BACbW;4BACAR;4BACAE;4BACAS;4BACAR;4BACAM;4BACAG;wBACF;oBACF;gBACF;YACF;QACF;QAEAjB,UAAU;YACRe;QACF,GAAG,EAAE;QAEL,qBAAO,KAAChB;sBAAUK;;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/client/createClientUploadHandler.tsx"],"sourcesContent":["'use client'\n\nimport type { UploadCollectionSlug } from 'payload'\n\nimport { useConfig, useEffectEvent, useUploadHandlers } from '@payloadcms/ui'\nimport { Fragment, type ReactNode, useEffect } from 'react'\n\ntype ClientUploadHandlerProps<T extends Record<string, unknown>> = {\n children: ReactNode\n collectionSlug: UploadCollectionSlug\n enabled?: boolean\n extra: T\n prefix?: string\n serverHandlerPath: string\n}\n\nexport const createClientUploadHandler = <T extends Record<string, unknown>>({\n handler,\n}: {\n handler: (args: {\n apiRoute: string\n collectionSlug: UploadCollectionSlug\n extra: T\n file: File\n prefix?: string\n serverHandlerPath: string\n serverURL: string\n updateFilename: (value: string) => void\n }) => Promise<unknown>\n}) => {\n return function ClientUploadHandler({\n children,\n collectionSlug,\n enabled,\n extra,\n prefix,\n serverHandlerPath,\n }: ClientUploadHandlerProps<T>) {\n const { setUploadHandler } = useUploadHandlers()\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const initializeHandler = useEffectEvent(() => {\n if (enabled) {\n setUploadHandler({\n collectionSlug,\n handler: ({ file, updateFilename }) => {\n return handler({\n apiRoute,\n collectionSlug,\n extra,\n file,\n prefix,\n serverHandlerPath,\n serverURL,\n updateFilename,\n })\n },\n })\n }\n })\n\n useEffect(() => {\n initializeHandler()\n }, [])\n\n return <Fragment>{children}</Fragment>\n }\n}\n"],"names":["useConfig","useEffectEvent","useUploadHandlers","Fragment","useEffect","createClientUploadHandler","handler","ClientUploadHandler","children","collectionSlug","enabled","extra","prefix","serverHandlerPath","setUploadHandler","config","routes","api","apiRoute","serverURL","initializeHandler","file","updateFilename"],"mappings":"AAAA;;AAIA,SAASA,SAAS,EAAEC,cAAc,EAAEC,iBAAiB,QAAQ,iBAAgB;AAC7E,SAASC,QAAQ,EAAkBC,SAAS,QAAQ,QAAO;AAW3D,OAAO,MAAMC,4BAA4B,CAAoC,EAC3EC,OAAO,EAYR;IACC,OAAO,SAASC,oBAAoB,EAClCC,QAAQ,EACRC,cAAc,EACdC,OAAO,EACPC,KAAK,EACLC,MAAM,EACNC,iBAAiB,EACW;QAC5B,MAAM,EAAEC,gBAAgB,EAAE,GAAGZ;QAC7B,MAAM,EACJa,QAAQ,EACNC,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,EACF,GAAGnB;QAEJ,MAAMoB,oBAAoBnB,eAAe;YACvC,IAAIS,SAAS;gBACXI,iBAAiB;oBACfL;oBACAH,SAAS,CAAC,EAAEe,IAAI,EAAEC,cAAc,EAAE;wBAChC,OAAOhB,QAAQ;4BACbY;4BACAT;4BACAE;4BACAU;4BACAT;4BACAC;4BACAM;4BACAG;wBACF;oBACF;gBACF;YACF;QACF;QAEAlB,UAAU;YACRgB;QACF,GAAG,EAAE;QAEL,qBAAO,KAACjB;sBAAUK;;IACpB;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"beforeChange.d.ts","sourceRoot":"","sources":["../../src/hooks/beforeChange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,UAAU,IAAI;IACZ,OAAO,EAAE,gBAAgB,CAAA;IACzB,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED,eAAO,MAAM,mBAAmB,4BACJ,IAAI,KAAG,0BAA0B,CAAC,QAAQ,GAAG,UAAU,CA+ChF,CAAA"}
1
+ {"version":3,"file":"beforeChange.d.ts","sourceRoot":"","sources":["../../src/hooks/beforeChange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,UAAU,IAAI;IACZ,OAAO,EAAE,gBAAgB,CAAA;IACzB,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED,eAAO,MAAM,mBAAmB,4BACJ,IAAI,KAAG,0BAA0B,CAAC,QAAQ,GAAG,UAAU,CAqDhF,CAAA"}
@@ -31,6 +31,7 @@ export const getBeforeChangeHook = ({ adapter, collection })=>async ({ data, ori
31
31
  }
32
32
  const promises = files.map(async (file)=>{
33
33
  await adapter.handleUpload({
34
+ clientUploadContext: file.clientUploadContext,
34
35
  collection,
35
36
  data,
36
37
  file,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/beforeChange.ts"],"sourcesContent":["import type { CollectionBeforeChangeHook, CollectionConfig, FileData, TypeWithID } from 'payload'\n\nimport type { GeneratedAdapter } from '../types.js'\n\nimport { getIncomingFiles } from '../utilities/getIncomingFiles.js'\n\ninterface Args {\n adapter: GeneratedAdapter\n collection: CollectionConfig\n}\n\nexport const getBeforeChangeHook =\n ({ adapter, collection }: Args): CollectionBeforeChangeHook<FileData & TypeWithID> =>\n async ({ data, originalDoc, req }) => {\n try {\n const files = getIncomingFiles({ data, req })\n\n if (files.length > 0) {\n // If there is an original doc,\n // And we have new files,\n // We need to delete the old files before uploading new\n if (originalDoc) {\n let filesToDelete: string[] = []\n\n if (typeof originalDoc?.filename === 'string') {\n filesToDelete.push(originalDoc.filename)\n }\n\n if (typeof originalDoc.sizes === 'object') {\n filesToDelete = filesToDelete.concat(\n Object.values(originalDoc?.sizes || []).map(\n (resizedFileData) => resizedFileData?.filename,\n ),\n )\n }\n\n const deletionPromises = filesToDelete.map(async (filename) => {\n if (filename) {\n await adapter.handleDelete({ collection, doc: originalDoc, filename, req })\n }\n })\n\n await Promise.all(deletionPromises)\n }\n\n const promises = files.map(async (file) => {\n await adapter.handleUpload({ collection, data, file, req })\n })\n\n await Promise.all(promises)\n }\n } catch (err: unknown) {\n req.payload.logger.error(\n `There was an error while uploading files corresponding to the collection ${collection.slug} with filename ${data.filename}:`,\n )\n req.payload.logger.error({ err })\n throw err\n }\n return data\n }\n"],"names":["getIncomingFiles","getBeforeChangeHook","adapter","collection","data","originalDoc","req","files","length","filesToDelete","filename","push","sizes","concat","Object","values","map","resizedFileData","deletionPromises","handleDelete","doc","Promise","all","promises","file","handleUpload","err","payload","logger","error","slug"],"mappings":"AAIA,SAASA,gBAAgB,QAAQ,mCAAkC;AAOnE,OAAO,MAAMC,sBACX,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAQ,GAC9B,OAAO,EAAEC,IAAI,EAAEC,WAAW,EAAEC,GAAG,EAAE;QAC/B,IAAI;YACF,MAAMC,QAAQP,iBAAiB;gBAAEI;gBAAME;YAAI;YAE3C,IAAIC,MAAMC,MAAM,GAAG,GAAG;gBACpB,+BAA+B;gBAC/B,yBAAyB;gBACzB,uDAAuD;gBACvD,IAAIH,aAAa;oBACf,IAAII,gBAA0B,EAAE;oBAEhC,IAAI,OAAOJ,aAAaK,aAAa,UAAU;wBAC7CD,cAAcE,IAAI,CAACN,YAAYK,QAAQ;oBACzC;oBAEA,IAAI,OAAOL,YAAYO,KAAK,KAAK,UAAU;wBACzCH,gBAAgBA,cAAcI,MAAM,CAClCC,OAAOC,MAAM,CAACV,aAAaO,SAAS,EAAE,EAAEI,GAAG,CACzC,CAACC,kBAAoBA,iBAAiBP;oBAG5C;oBAEA,MAAMQ,mBAAmBT,cAAcO,GAAG,CAAC,OAAON;wBAChD,IAAIA,UAAU;4BACZ,MAAMR,QAAQiB,YAAY,CAAC;gCAAEhB;gCAAYiB,KAAKf;gCAAaK;gCAAUJ;4BAAI;wBAC3E;oBACF;oBAEA,MAAMe,QAAQC,GAAG,CAACJ;gBACpB;gBAEA,MAAMK,WAAWhB,MAAMS,GAAG,CAAC,OAAOQ;oBAChC,MAAMtB,QAAQuB,YAAY,CAAC;wBAAEtB;wBAAYC;wBAAMoB;wBAAMlB;oBAAI;gBAC3D;gBAEA,MAAMe,QAAQC,GAAG,CAACC;YACpB;QACF,EAAE,OAAOG,KAAc;YACrBpB,IAAIqB,OAAO,CAACC,MAAM,CAACC,KAAK,CACtB,CAAC,yEAAyE,EAAE1B,WAAW2B,IAAI,CAAC,eAAe,EAAE1B,KAAKM,QAAQ,CAAC,CAAC,CAAC;YAE/HJ,IAAIqB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;gBAAEH;YAAI;YAC/B,MAAMA;QACR;QACA,OAAOtB;IACT,EAAC"}
1
+ {"version":3,"sources":["../../src/hooks/beforeChange.ts"],"sourcesContent":["import type { CollectionBeforeChangeHook, CollectionConfig, FileData, TypeWithID } from 'payload'\n\nimport type { GeneratedAdapter } from '../types.js'\n\nimport { getIncomingFiles } from '../utilities/getIncomingFiles.js'\n\ninterface Args {\n adapter: GeneratedAdapter\n collection: CollectionConfig\n}\n\nexport const getBeforeChangeHook =\n ({ adapter, collection }: Args): CollectionBeforeChangeHook<FileData & TypeWithID> =>\n async ({ data, originalDoc, req }) => {\n try {\n const files = getIncomingFiles({ data, req })\n\n if (files.length > 0) {\n // If there is an original doc,\n // And we have new files,\n // We need to delete the old files before uploading new\n if (originalDoc) {\n let filesToDelete: string[] = []\n\n if (typeof originalDoc?.filename === 'string') {\n filesToDelete.push(originalDoc.filename)\n }\n\n if (typeof originalDoc.sizes === 'object') {\n filesToDelete = filesToDelete.concat(\n Object.values(originalDoc?.sizes || []).map(\n (resizedFileData) => resizedFileData?.filename,\n ),\n )\n }\n\n const deletionPromises = filesToDelete.map(async (filename) => {\n if (filename) {\n await adapter.handleDelete({ collection, doc: originalDoc, filename, req })\n }\n })\n\n await Promise.all(deletionPromises)\n }\n\n const promises = files.map(async (file) => {\n await adapter.handleUpload({\n clientUploadContext: file.clientUploadContext,\n collection,\n data,\n file,\n req,\n })\n })\n\n await Promise.all(promises)\n }\n } catch (err: unknown) {\n req.payload.logger.error(\n `There was an error while uploading files corresponding to the collection ${collection.slug} with filename ${data.filename}:`,\n )\n req.payload.logger.error({ err })\n throw err\n }\n return data\n }\n"],"names":["getIncomingFiles","getBeforeChangeHook","adapter","collection","data","originalDoc","req","files","length","filesToDelete","filename","push","sizes","concat","Object","values","map","resizedFileData","deletionPromises","handleDelete","doc","Promise","all","promises","file","handleUpload","clientUploadContext","err","payload","logger","error","slug"],"mappings":"AAIA,SAASA,gBAAgB,QAAQ,mCAAkC;AAOnE,OAAO,MAAMC,sBACX,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAQ,GAC9B,OAAO,EAAEC,IAAI,EAAEC,WAAW,EAAEC,GAAG,EAAE;QAC/B,IAAI;YACF,MAAMC,QAAQP,iBAAiB;gBAAEI;gBAAME;YAAI;YAE3C,IAAIC,MAAMC,MAAM,GAAG,GAAG;gBACpB,+BAA+B;gBAC/B,yBAAyB;gBACzB,uDAAuD;gBACvD,IAAIH,aAAa;oBACf,IAAII,gBAA0B,EAAE;oBAEhC,IAAI,OAAOJ,aAAaK,aAAa,UAAU;wBAC7CD,cAAcE,IAAI,CAACN,YAAYK,QAAQ;oBACzC;oBAEA,IAAI,OAAOL,YAAYO,KAAK,KAAK,UAAU;wBACzCH,gBAAgBA,cAAcI,MAAM,CAClCC,OAAOC,MAAM,CAACV,aAAaO,SAAS,EAAE,EAAEI,GAAG,CACzC,CAACC,kBAAoBA,iBAAiBP;oBAG5C;oBAEA,MAAMQ,mBAAmBT,cAAcO,GAAG,CAAC,OAAON;wBAChD,IAAIA,UAAU;4BACZ,MAAMR,QAAQiB,YAAY,CAAC;gCAAEhB;gCAAYiB,KAAKf;gCAAaK;gCAAUJ;4BAAI;wBAC3E;oBACF;oBAEA,MAAMe,QAAQC,GAAG,CAACJ;gBACpB;gBAEA,MAAMK,WAAWhB,MAAMS,GAAG,CAAC,OAAOQ;oBAChC,MAAMtB,QAAQuB,YAAY,CAAC;wBACzBC,qBAAqBF,KAAKE,mBAAmB;wBAC7CvB;wBACAC;wBACAoB;wBACAlB;oBACF;gBACF;gBAEA,MAAMe,QAAQC,GAAG,CAACC;YACpB;QACF,EAAE,OAAOI,KAAc;YACrBrB,IAAIsB,OAAO,CAACC,MAAM,CAACC,KAAK,CACtB,CAAC,yEAAyE,EAAE3B,WAAW4B,IAAI,CAAC,eAAe,EAAE3B,KAAKM,QAAQ,CAAC,CAAC,CAAC;YAE/HJ,IAAIsB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;gBAAEH;YAAI;YAC/B,MAAMA;QACR;QACA,OAAOvB;IACT,EAAC"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { CollectionConfig, Field, FileData, ImageSize, PayloadRequest, TypeWithID, UploadCollectionSlug } from 'payload';
2
2
  export interface File {
3
3
  buffer: Buffer;
4
+ clientUploadContext?: unknown;
4
5
  filename: string;
5
6
  filesize: number;
6
7
  mimeType: string;
@@ -14,6 +15,7 @@ export type ClientUploadsConfig = {
14
15
  access?: ClientUploadsAccess;
15
16
  } | boolean;
16
17
  export type HandleUpload = (args: {
18
+ clientUploadContext: unknown;
17
19
  collection: CollectionConfig;
18
20
  data: any;
19
21
  file: File;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Field,\n FileData,\n ImageSize,\n PayloadRequest,\n TypeWithID,\n UploadCollectionSlug,\n} from 'payload'\n\nexport interface File {\n buffer: Buffer\n filename: string\n filesize: number\n mimeType: string\n tempFilePath?: string\n}\n\nexport type ClientUploadsAccess = (args: {\n collectionSlug: UploadCollectionSlug\n req: PayloadRequest\n}) => boolean | Promise<boolean>\n\nexport type ClientUploadsConfig =\n | {\n access?: ClientUploadsAccess\n }\n | boolean\n\nexport type HandleUpload = (args: {\n collection: CollectionConfig\n data: any\n file: File\n req: PayloadRequest\n}) => Promise<void> | void\n\nexport interface TypeWithPrefix {\n prefix?: string\n}\n\nexport type HandleDelete = (args: {\n collection: CollectionConfig\n doc: FileData & TypeWithID & TypeWithPrefix\n filename: string\n req: PayloadRequest\n}) => Promise<void> | void\n\nexport type GenerateURL = (args: {\n collection: CollectionConfig\n data: any\n filename: string\n prefix?: string\n}) => Promise<string> | string\n\nexport type StaticHandler = (\n req: PayloadRequest,\n args: {\n doc?: TypeWithID\n params: { clientUploadContext?: unknown; collection: string; filename: string }\n },\n) => Promise<Response> | Response\n\nexport interface GeneratedAdapter {\n /**\n * Additional fields to be injected into the base collection and image sizes\n */\n fields?: Field[]\n /**\n * Generates the public URL for a file\n */\n generateURL?: GenerateURL\n handleDelete: HandleDelete\n handleUpload: HandleUpload\n name: string\n onInit?: () => void\n staticHandler: StaticHandler\n}\n\nexport type Adapter = (args: { collection: CollectionConfig; prefix?: string }) => GeneratedAdapter\n\nexport type GenerateFileURL = (args: {\n collection: CollectionConfig\n filename: string\n prefix?: string\n size?: ImageSize\n}) => Promise<string> | string\n\nexport interface CollectionOptions {\n adapter: Adapter | null\n disableLocalStorage?: boolean\n disablePayloadAccessControl?: true\n generateFileURL?: GenerateFileURL\n prefix?: string\n}\n\nexport interface PluginOptions {\n collections: Partial<Record<UploadCollectionSlug, CollectionOptions>>\n /**\n * Whether or not to enable the plugin\n *\n * Default: true\n */\n enabled?: boolean\n}\n"],"names":[],"mappings":"AA+FA,WAQC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Field,\n FileData,\n ImageSize,\n PayloadRequest,\n TypeWithID,\n UploadCollectionSlug,\n} from 'payload'\n\nexport interface File {\n buffer: Buffer\n clientUploadContext?: unknown\n filename: string\n filesize: number\n mimeType: string\n tempFilePath?: string\n}\n\nexport type ClientUploadsAccess = (args: {\n collectionSlug: UploadCollectionSlug\n req: PayloadRequest\n}) => boolean | Promise<boolean>\n\nexport type ClientUploadsConfig =\n | {\n access?: ClientUploadsAccess\n }\n | boolean\n\nexport type HandleUpload = (args: {\n clientUploadContext: unknown\n collection: CollectionConfig\n data: any\n file: File\n req: PayloadRequest\n}) => Promise<void> | void\n\nexport interface TypeWithPrefix {\n prefix?: string\n}\n\nexport type HandleDelete = (args: {\n collection: CollectionConfig\n doc: FileData & TypeWithID & TypeWithPrefix\n filename: string\n req: PayloadRequest\n}) => Promise<void> | void\n\nexport type GenerateURL = (args: {\n collection: CollectionConfig\n data: any\n filename: string\n prefix?: string\n}) => Promise<string> | string\n\nexport type StaticHandler = (\n req: PayloadRequest,\n args: {\n doc?: TypeWithID\n params: { clientUploadContext?: unknown; collection: string; filename: string }\n },\n) => Promise<Response> | Response\n\nexport interface GeneratedAdapter {\n /**\n * Additional fields to be injected into the base collection and image sizes\n */\n fields?: Field[]\n /**\n * Generates the public URL for a file\n */\n generateURL?: GenerateURL\n handleDelete: HandleDelete\n handleUpload: HandleUpload\n name: string\n onInit?: () => void\n staticHandler: StaticHandler\n}\n\nexport type Adapter = (args: { collection: CollectionConfig; prefix?: string }) => GeneratedAdapter\n\nexport type GenerateFileURL = (args: {\n collection: CollectionConfig\n filename: string\n prefix?: string\n size?: ImageSize\n}) => Promise<string> | string\n\nexport interface CollectionOptions {\n adapter: Adapter | null\n disableLocalStorage?: boolean\n disablePayloadAccessControl?: true\n generateFileURL?: GenerateFileURL\n prefix?: string\n}\n\nexport interface PluginOptions {\n collections: Partial<Record<UploadCollectionSlug, CollectionOptions>>\n /**\n * Whether or not to enable the plugin\n *\n * Default: true\n */\n enabled?: boolean\n}\n"],"names":[],"mappings":"AAiGA,WAQC"}
@@ -1,5 +1,6 @@
1
1
  import type { CollectionConfig, PayloadRequest } from 'payload';
2
- export declare function getFilePrefix({ collection, filename, req, }: {
2
+ export declare function getFilePrefix({ clientUploadContext, collection, filename, req, }: {
3
+ clientUploadContext?: unknown;
3
4
  collection: CollectionConfig;
4
5
  filename: string;
5
6
  req: PayloadRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"getFilePrefix.d.ts","sourceRoot":"","sources":["../../src/utilities/getFilePrefix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAA;AAE7E,wBAAsB,aAAa,CAAC,EAClC,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,UAAU,EAAE,gBAAgB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBlB"}
1
+ {"version":3,"file":"getFilePrefix.d.ts","sourceRoot":"","sources":["../../src/utilities/getFilePrefix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAA;AAE7E,wBAAsB,aAAa,CAAC,EAClC,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,UAAU,EAAE,gBAAgB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BlB"}
@@ -1,4 +1,8 @@
1
- export async function getFilePrefix({ collection, filename, req }) {
1
+ export async function getFilePrefix({ clientUploadContext, collection, filename, req }) {
2
+ // Prioritize from clientUploadContext if there is:
3
+ if (clientUploadContext && typeof clientUploadContext === 'object' && 'prefix' in clientUploadContext && typeof clientUploadContext.prefix === 'string') {
4
+ return clientUploadContext.prefix;
5
+ }
2
6
  const imageSizes = collection?.upload?.imageSizes || [];
3
7
  const files = await req.payload.find({
4
8
  collection: collection.slug,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getFilePrefix.ts"],"sourcesContent":["import type { CollectionConfig, PayloadRequest, UploadConfig } from 'payload'\n\nexport async function getFilePrefix({\n collection,\n filename,\n req,\n}: {\n collection: CollectionConfig\n filename: string\n req: PayloadRequest\n}): Promise<string> {\n const imageSizes = (collection?.upload as UploadConfig)?.imageSizes || []\n\n const files = await req.payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n or: [\n {\n filename: { equals: filename },\n },\n ...imageSizes.map((imageSize) => ({\n [`sizes.${imageSize.name}.filename`]: { equals: filename },\n })),\n ],\n },\n })\n const prefix = files?.docs?.[0]?.prefix\n return prefix ? (prefix as string) : ''\n}\n"],"names":["getFilePrefix","collection","filename","req","imageSizes","upload","files","payload","find","slug","depth","limit","pagination","where","or","equals","map","imageSize","name","prefix","docs"],"mappings":"AAEA,OAAO,eAAeA,cAAc,EAClCC,UAAU,EACVC,QAAQ,EACRC,GAAG,EAKJ;IACC,MAAMC,aAAa,AAACH,YAAYI,QAAyBD,cAAc,EAAE;IAEzE,MAAME,QAAQ,MAAMH,IAAII,OAAO,CAACC,IAAI,CAAC;QACnCP,YAAYA,WAAWQ,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZC,OAAO;YACLC,IAAI;gBACF;oBACEZ,UAAU;wBAAEa,QAAQb;oBAAS;gBAC/B;mBACGE,WAAWY,GAAG,CAAC,CAACC,YAAe,CAAA;wBAChC,CAAC,CAAC,MAAM,EAAEA,UAAUC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;4BAAEH,QAAQb;wBAAS;oBAC3D,CAAA;aACD;QACH;IACF;IACA,MAAMiB,SAASb,OAAOc,MAAM,CAAC,EAAE,EAAED;IACjC,OAAOA,SAAUA,SAAoB;AACvC"}
1
+ {"version":3,"sources":["../../src/utilities/getFilePrefix.ts"],"sourcesContent":["import type { CollectionConfig, PayloadRequest, UploadConfig } from 'payload'\n\nexport async function getFilePrefix({\n clientUploadContext,\n collection,\n filename,\n req,\n}: {\n clientUploadContext?: unknown\n collection: CollectionConfig\n filename: string\n req: PayloadRequest\n}): Promise<string> {\n // Prioritize from clientUploadContext if there is:\n if (\n clientUploadContext &&\n typeof clientUploadContext === 'object' &&\n 'prefix' in clientUploadContext &&\n typeof clientUploadContext.prefix === 'string'\n ) {\n return clientUploadContext.prefix\n }\n\n const imageSizes = (collection?.upload as UploadConfig)?.imageSizes || []\n\n const files = await req.payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n or: [\n {\n filename: { equals: filename },\n },\n ...imageSizes.map((imageSize) => ({\n [`sizes.${imageSize.name}.filename`]: { equals: filename },\n })),\n ],\n },\n })\n const prefix = files?.docs?.[0]?.prefix\n return prefix ? (prefix as string) : ''\n}\n"],"names":["getFilePrefix","clientUploadContext","collection","filename","req","prefix","imageSizes","upload","files","payload","find","slug","depth","limit","pagination","where","or","equals","map","imageSize","name","docs"],"mappings":"AAEA,OAAO,eAAeA,cAAc,EAClCC,mBAAmB,EACnBC,UAAU,EACVC,QAAQ,EACRC,GAAG,EAMJ;IACC,mDAAmD;IACnD,IACEH,uBACA,OAAOA,wBAAwB,YAC/B,YAAYA,uBACZ,OAAOA,oBAAoBI,MAAM,KAAK,UACtC;QACA,OAAOJ,oBAAoBI,MAAM;IACnC;IAEA,MAAMC,aAAa,AAACJ,YAAYK,QAAyBD,cAAc,EAAE;IAEzE,MAAME,QAAQ,MAAMJ,IAAIK,OAAO,CAACC,IAAI,CAAC;QACnCR,YAAYA,WAAWS,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZC,OAAO;YACLC,IAAI;gBACF;oBACEb,UAAU;wBAAEc,QAAQd;oBAAS;gBAC/B;mBACGG,WAAWY,GAAG,CAAC,CAACC,YAAe,CAAA;wBAChC,CAAC,CAAC,MAAM,EAAEA,UAAUC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;4BAAEH,QAAQd;wBAAS;oBAC3D,CAAA;aACD;QACH;IACF;IACA,MAAME,SAASG,OAAOa,MAAM,CAAC,EAAE,EAAEhB;IACjC,OAAOA,SAAUA,SAAoB;AACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getIncomingFiles.d.ts","sourceRoot":"","sources":["../../src/utilities/getIncomingFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,GAAG,GACJ,EAAE;IACD,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,IAAI,EAAE,CAiCT"}
1
+ {"version":3,"file":"getIncomingFiles.d.ts","sourceRoot":"","sources":["../../src/utilities/getIncomingFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,GAAG,GACJ,EAAE;IACD,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,IAAI,EAAE,CAkCT"}
@@ -4,6 +4,7 @@ export function getIncomingFiles({ data, req }) {
4
4
  if (file && data.filename && data.mimeType) {
5
5
  const mainFile = {
6
6
  buffer: file.data,
7
+ clientUploadContext: file.clientUploadContext,
7
8
  filename: data.filename,
8
9
  filesize: file.size,
9
10
  mimeType: data.mimeType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getIncomingFiles.ts"],"sourcesContent":["import type { FileData, PayloadRequest } from 'payload'\n\nimport type { File } from '../types.js'\n\nexport function getIncomingFiles({\n data,\n req,\n}: {\n data: Partial<FileData>\n req: PayloadRequest\n}): File[] {\n const file = req.file\n\n let files: File[] = []\n\n if (file && data.filename && data.mimeType) {\n const mainFile: File = {\n buffer: file.data,\n filename: data.filename,\n filesize: file.size,\n mimeType: data.mimeType,\n tempFilePath: file.tempFilePath,\n }\n\n files = [mainFile]\n\n if (data?.sizes) {\n Object.entries(data.sizes).forEach(([key, resizedFileData]) => {\n if (req.payloadUploadSizes?.[key] && data.mimeType) {\n files = files.concat([\n {\n buffer: req.payloadUploadSizes[key],\n filename: `${resizedFileData.filename}`,\n filesize: req.payloadUploadSizes[key].length,\n mimeType: data.mimeType,\n },\n ])\n }\n })\n }\n }\n\n return files\n}\n"],"names":["getIncomingFiles","data","req","file","files","filename","mimeType","mainFile","buffer","filesize","size","tempFilePath","sizes","Object","entries","forEach","key","resizedFileData","payloadUploadSizes","concat","length"],"mappings":"AAIA,OAAO,SAASA,iBAAiB,EAC/BC,IAAI,EACJC,GAAG,EAIJ;IACC,MAAMC,OAAOD,IAAIC,IAAI;IAErB,IAAIC,QAAgB,EAAE;IAEtB,IAAID,QAAQF,KAAKI,QAAQ,IAAIJ,KAAKK,QAAQ,EAAE;QAC1C,MAAMC,WAAiB;YACrBC,QAAQL,KAAKF,IAAI;YACjBI,UAAUJ,KAAKI,QAAQ;YACvBI,UAAUN,KAAKO,IAAI;YACnBJ,UAAUL,KAAKK,QAAQ;YACvBK,cAAcR,KAAKQ,YAAY;QACjC;QAEAP,QAAQ;YAACG;SAAS;QAElB,IAAIN,MAAMW,OAAO;YACfC,OAAOC,OAAO,CAACb,KAAKW,KAAK,EAAEG,OAAO,CAAC,CAAC,CAACC,KAAKC,gBAAgB;gBACxD,IAAIf,IAAIgB,kBAAkB,EAAE,CAACF,IAAI,IAAIf,KAAKK,QAAQ,EAAE;oBAClDF,QAAQA,MAAMe,MAAM,CAAC;wBACnB;4BACEX,QAAQN,IAAIgB,kBAAkB,CAACF,IAAI;4BACnCX,UAAU,GAAGY,gBAAgBZ,QAAQ,EAAE;4BACvCI,UAAUP,IAAIgB,kBAAkB,CAACF,IAAI,CAACI,MAAM;4BAC5Cd,UAAUL,KAAKK,QAAQ;wBACzB;qBACD;gBACH;YACF;QACF;IACF;IAEA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../src/utilities/getIncomingFiles.ts"],"sourcesContent":["import type { FileData, PayloadRequest } from 'payload'\n\nimport type { File } from '../types.js'\n\nexport function getIncomingFiles({\n data,\n req,\n}: {\n data: Partial<FileData>\n req: PayloadRequest\n}): File[] {\n const file = req.file\n\n let files: File[] = []\n\n if (file && data.filename && data.mimeType) {\n const mainFile: File = {\n buffer: file.data,\n clientUploadContext: file.clientUploadContext,\n filename: data.filename,\n filesize: file.size,\n mimeType: data.mimeType,\n tempFilePath: file.tempFilePath,\n }\n\n files = [mainFile]\n\n if (data?.sizes) {\n Object.entries(data.sizes).forEach(([key, resizedFileData]) => {\n if (req.payloadUploadSizes?.[key] && data.mimeType) {\n files = files.concat([\n {\n buffer: req.payloadUploadSizes[key],\n filename: `${resizedFileData.filename}`,\n filesize: req.payloadUploadSizes[key].length,\n mimeType: data.mimeType,\n },\n ])\n }\n })\n }\n }\n\n return files\n}\n"],"names":["getIncomingFiles","data","req","file","files","filename","mimeType","mainFile","buffer","clientUploadContext","filesize","size","tempFilePath","sizes","Object","entries","forEach","key","resizedFileData","payloadUploadSizes","concat","length"],"mappings":"AAIA,OAAO,SAASA,iBAAiB,EAC/BC,IAAI,EACJC,GAAG,EAIJ;IACC,MAAMC,OAAOD,IAAIC,IAAI;IAErB,IAAIC,QAAgB,EAAE;IAEtB,IAAID,QAAQF,KAAKI,QAAQ,IAAIJ,KAAKK,QAAQ,EAAE;QAC1C,MAAMC,WAAiB;YACrBC,QAAQL,KAAKF,IAAI;YACjBQ,qBAAqBN,KAAKM,mBAAmB;YAC7CJ,UAAUJ,KAAKI,QAAQ;YACvBK,UAAUP,KAAKQ,IAAI;YACnBL,UAAUL,KAAKK,QAAQ;YACvBM,cAAcT,KAAKS,YAAY;QACjC;QAEAR,QAAQ;YAACG;SAAS;QAElB,IAAIN,MAAMY,OAAO;YACfC,OAAOC,OAAO,CAACd,KAAKY,KAAK,EAAEG,OAAO,CAAC,CAAC,CAACC,KAAKC,gBAAgB;gBACxD,IAAIhB,IAAIiB,kBAAkB,EAAE,CAACF,IAAI,IAAIhB,KAAKK,QAAQ,EAAE;oBAClDF,QAAQA,MAAMgB,MAAM,CAAC;wBACnB;4BACEZ,QAAQN,IAAIiB,kBAAkB,CAACF,IAAI;4BACnCZ,UAAU,GAAGa,gBAAgBb,QAAQ,EAAE;4BACvCK,UAAUR,IAAIiB,kBAAkB,CAACF,IAAI,CAACI,MAAM;4BAC5Cf,UAAUL,KAAKK,QAAQ;wBACzB;qBACD;gBACH;YACF;QACF;IACF;IAEA,OAAOF;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"initClientUploads.d.ts","sourceRoot":"","sources":["../../src/utilities/initClientUploads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,eAAO,MAAM,iBAAiB,GAAI,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,+GAQ5E;IACD,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,UAAU,CAAA;IACvD,aAAa,EAAE,cAAc,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;CAC1B,SAuDA,CAAA"}
1
+ {"version":3,"file":"initClientUploads.d.ts","sourceRoot":"","sources":["../../src/utilities/initClientUploads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,eAAO,MAAM,iBAAiB,GAAI,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,+GAQ5E;IACD,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,UAAU,CAAA;IACvD,aAAa,EAAE,cAAc,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;CAC1B,SAmEA,CAAA"}
@@ -33,11 +33,16 @@ export const initClientUploads = ({ clientHandler, collections, config, enabled,
33
33
  }
34
34
  for(const collectionSlug in collections){
35
35
  const collection = collections[collectionSlug];
36
+ let prefix;
37
+ if (collection && typeof collection === 'object' && 'prefix' in collection && typeof collection.prefix === 'string') {
38
+ prefix = collection.prefix;
39
+ }
36
40
  config.admin.components.providers.push({
37
41
  clientProps: {
38
42
  collectionSlug,
39
43
  enabled,
40
44
  extra: extraClientHandlerProps ? extraClientHandlerProps(collection) : undefined,
45
+ prefix,
41
46
  serverHandlerPath
42
47
  },
43
48
  path: clientHandler
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/initClientUploads.ts"],"sourcesContent":["import type { Config, PayloadHandler } from 'payload'\n\nexport const initClientUploads = <ExtraProps extends Record<string, unknown>, T>({\n clientHandler,\n collections,\n config,\n enabled,\n extraClientHandlerProps,\n serverHandler,\n serverHandlerPath,\n}: {\n /** Path to clientHandler component */\n clientHandler: string\n collections: Record<string, T>\n config: Config\n enabled: boolean\n /** extra props to pass to the client handler */\n extraClientHandlerProps?: (collection: T) => ExtraProps\n serverHandler: PayloadHandler\n serverHandlerPath: string\n}) => {\n if (enabled) {\n if (!config.endpoints) {\n config.endpoints = []\n }\n\n /**\n * Tracks how many times the same handler was already applied.\n * This allows to apply the same plugin multiple times, for example\n * to use different buckets for different collections.\n */\n let handlerCount = 0\n\n for (const endpoint of config.endpoints) {\n if (endpoint.path === serverHandlerPath) {\n handlerCount++\n }\n }\n\n if (handlerCount) {\n serverHandlerPath = `${serverHandlerPath}-${handlerCount}`\n }\n\n config.endpoints.push({\n handler: serverHandler,\n method: 'post',\n path: serverHandlerPath,\n })\n }\n\n if (!config.admin) {\n config.admin = {}\n }\n\n if (!config.admin.components) {\n config.admin.components = {}\n }\n\n if (!config.admin.components.providers) {\n config.admin.components.providers = []\n }\n\n for (const collectionSlug in collections) {\n const collection = collections[collectionSlug]\n\n config.admin.components.providers.push({\n clientProps: {\n collectionSlug,\n enabled,\n extra: extraClientHandlerProps ? extraClientHandlerProps(collection) : undefined,\n serverHandlerPath,\n },\n path: clientHandler,\n })\n }\n}\n"],"names":["initClientUploads","clientHandler","collections","config","enabled","extraClientHandlerProps","serverHandler","serverHandlerPath","endpoints","handlerCount","endpoint","path","push","handler","method","admin","components","providers","collectionSlug","collection","clientProps","extra","undefined"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,CAAgD,EAC/EC,aAAa,EACbC,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,uBAAuB,EACvBC,aAAa,EACbC,iBAAiB,EAWlB;IACC,IAAIH,SAAS;QACX,IAAI,CAACD,OAAOK,SAAS,EAAE;YACrBL,OAAOK,SAAS,GAAG,EAAE;QACvB;QAEA;;;;KAIC,GACD,IAAIC,eAAe;QAEnB,KAAK,MAAMC,YAAYP,OAAOK,SAAS,CAAE;YACvC,IAAIE,SAASC,IAAI,KAAKJ,mBAAmB;gBACvCE;YACF;QACF;QAEA,IAAIA,cAAc;YAChBF,oBAAoB,GAAGA,kBAAkB,CAAC,EAAEE,cAAc;QAC5D;QAEAN,OAAOK,SAAS,CAACI,IAAI,CAAC;YACpBC,SAASP;YACTQ,QAAQ;YACRH,MAAMJ;QACR;IACF;IAEA,IAAI,CAACJ,OAAOY,KAAK,EAAE;QACjBZ,OAAOY,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACZ,OAAOY,KAAK,CAACC,UAAU,EAAE;QAC5Bb,OAAOY,KAAK,CAACC,UAAU,GAAG,CAAC;IAC7B;IAEA,IAAI,CAACb,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,EAAE;QACtCd,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,GAAG,EAAE;IACxC;IAEA,IAAK,MAAMC,kBAAkBhB,YAAa;QACxC,MAAMiB,aAAajB,WAAW,CAACgB,eAAe;QAE9Cf,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,CAACL,IAAI,CAAC;YACrCQ,aAAa;gBACXF;gBACAd;gBACAiB,OAAOhB,0BAA0BA,wBAAwBc,cAAcG;gBACvEf;YACF;YACAI,MAAMV;QACR;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/initClientUploads.ts"],"sourcesContent":["import type { Config, PayloadHandler } from 'payload'\n\nexport const initClientUploads = <ExtraProps extends Record<string, unknown>, T>({\n clientHandler,\n collections,\n config,\n enabled,\n extraClientHandlerProps,\n serverHandler,\n serverHandlerPath,\n}: {\n /** Path to clientHandler component */\n clientHandler: string\n collections: Record<string, T>\n config: Config\n enabled: boolean\n /** extra props to pass to the client handler */\n extraClientHandlerProps?: (collection: T) => ExtraProps\n serverHandler: PayloadHandler\n serverHandlerPath: string\n}) => {\n if (enabled) {\n if (!config.endpoints) {\n config.endpoints = []\n }\n\n /**\n * Tracks how many times the same handler was already applied.\n * This allows to apply the same plugin multiple times, for example\n * to use different buckets for different collections.\n */\n let handlerCount = 0\n\n for (const endpoint of config.endpoints) {\n if (endpoint.path === serverHandlerPath) {\n handlerCount++\n }\n }\n\n if (handlerCount) {\n serverHandlerPath = `${serverHandlerPath}-${handlerCount}`\n }\n\n config.endpoints.push({\n handler: serverHandler,\n method: 'post',\n path: serverHandlerPath,\n })\n }\n\n if (!config.admin) {\n config.admin = {}\n }\n\n if (!config.admin.components) {\n config.admin.components = {}\n }\n\n if (!config.admin.components.providers) {\n config.admin.components.providers = []\n }\n\n for (const collectionSlug in collections) {\n const collection = collections[collectionSlug]\n\n let prefix: string | undefined\n\n if (\n collection &&\n typeof collection === 'object' &&\n 'prefix' in collection &&\n typeof collection.prefix === 'string'\n ) {\n prefix = collection.prefix\n }\n\n config.admin.components.providers.push({\n clientProps: {\n collectionSlug,\n enabled,\n extra: extraClientHandlerProps ? extraClientHandlerProps(collection) : undefined,\n prefix,\n serverHandlerPath,\n },\n path: clientHandler,\n })\n }\n}\n"],"names":["initClientUploads","clientHandler","collections","config","enabled","extraClientHandlerProps","serverHandler","serverHandlerPath","endpoints","handlerCount","endpoint","path","push","handler","method","admin","components","providers","collectionSlug","collection","prefix","clientProps","extra","undefined"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,CAAgD,EAC/EC,aAAa,EACbC,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,uBAAuB,EACvBC,aAAa,EACbC,iBAAiB,EAWlB;IACC,IAAIH,SAAS;QACX,IAAI,CAACD,OAAOK,SAAS,EAAE;YACrBL,OAAOK,SAAS,GAAG,EAAE;QACvB;QAEA;;;;KAIC,GACD,IAAIC,eAAe;QAEnB,KAAK,MAAMC,YAAYP,OAAOK,SAAS,CAAE;YACvC,IAAIE,SAASC,IAAI,KAAKJ,mBAAmB;gBACvCE;YACF;QACF;QAEA,IAAIA,cAAc;YAChBF,oBAAoB,GAAGA,kBAAkB,CAAC,EAAEE,cAAc;QAC5D;QAEAN,OAAOK,SAAS,CAACI,IAAI,CAAC;YACpBC,SAASP;YACTQ,QAAQ;YACRH,MAAMJ;QACR;IACF;IAEA,IAAI,CAACJ,OAAOY,KAAK,EAAE;QACjBZ,OAAOY,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACZ,OAAOY,KAAK,CAACC,UAAU,EAAE;QAC5Bb,OAAOY,KAAK,CAACC,UAAU,GAAG,CAAC;IAC7B;IAEA,IAAI,CAACb,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,EAAE;QACtCd,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,GAAG,EAAE;IACxC;IAEA,IAAK,MAAMC,kBAAkBhB,YAAa;QACxC,MAAMiB,aAAajB,WAAW,CAACgB,eAAe;QAE9C,IAAIE;QAEJ,IACED,cACA,OAAOA,eAAe,YACtB,YAAYA,cACZ,OAAOA,WAAWC,MAAM,KAAK,UAC7B;YACAA,SAASD,WAAWC,MAAM;QAC5B;QAEAjB,OAAOY,KAAK,CAACC,UAAU,CAACC,SAAS,CAACL,IAAI,CAAC;YACrCS,aAAa;gBACXH;gBACAd;gBACAkB,OAAOjB,0BAA0BA,wBAAwBc,cAAcI;gBACvEH;gBACAb;YACF;YACAI,MAAMV;QACR;IACF;AACF,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-cloud-storage",
3
- "version": "3.25.0",
3
+ "version": "3.26.0",
4
4
  "description": "The official cloud storage plugin for Payload CMS",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -50,18 +50,18 @@
50
50
  "dependencies": {
51
51
  "find-node-modules": "^2.1.3",
52
52
  "range-parser": "^1.2.1",
53
- "@payloadcms/ui": "3.25.0"
53
+ "@payloadcms/ui": "3.26.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/find-node-modules": "^2.1.2",
57
57
  "@types/react": "19.0.10",
58
58
  "@types/react-dom": "19.0.4",
59
- "payload": "3.25.0"
59
+ "payload": "3.26.0"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
63
63
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
64
- "payload": "3.25.0"
64
+ "payload": "3.26.0"
65
65
  },
66
66
  "publishConfig": {
67
67
  "registry": "https://registry.npmjs.org/"