@payloadcms/plugin-cloud-storage 3.25.0-canary.fd53f68 → 3.26.0-canary.bbb3083

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.
@@ -0,0 +1,24 @@
1
+ import type { UploadCollectionSlug } from 'payload';
2
+ import { type ReactNode } from 'react';
3
+ type ClientUploadHandlerProps<T extends Record<string, unknown>> = {
4
+ children: ReactNode;
5
+ collectionSlug: UploadCollectionSlug;
6
+ enabled?: boolean;
7
+ extra: T;
8
+ prefix?: string;
9
+ serverHandlerPath: string;
10
+ };
11
+ export declare const createClientUploadHandler: <T extends Record<string, unknown>>({ handler, }: {
12
+ handler: (args: {
13
+ apiRoute: string;
14
+ collectionSlug: UploadCollectionSlug;
15
+ extra: T;
16
+ file: File;
17
+ prefix?: string;
18
+ serverHandlerPath: string;
19
+ serverURL: string;
20
+ updateFilename: (value: string) => void;
21
+ }) => Promise<unknown>;
22
+ }) => ({ children, collectionSlug, enabled, extra, prefix, serverHandlerPath, }: ClientUploadHandlerProps<T>) => import("react").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=createClientUploadHandler.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useConfig, useEffectEvent, useUploadHandlers } from '@payloadcms/ui';
4
+ import { Fragment, useEffect } from 'react';
5
+ export const createClientUploadHandler = ({ handler })=>{
6
+ return function ClientUploadHandler({ children, collectionSlug, enabled, extra, prefix, serverHandlerPath }) {
7
+ const { setUploadHandler } = useUploadHandlers();
8
+ const { config: { routes: { api: apiRoute }, serverURL } } = useConfig();
9
+ const initializeHandler = useEffectEvent(()=>{
10
+ if (enabled) {
11
+ setUploadHandler({
12
+ collectionSlug,
13
+ handler: ({ file, updateFilename })=>{
14
+ return handler({
15
+ apiRoute,
16
+ collectionSlug,
17
+ extra,
18
+ file,
19
+ prefix,
20
+ serverHandlerPath,
21
+ serverURL,
22
+ updateFilename
23
+ });
24
+ }
25
+ });
26
+ }
27
+ });
28
+ useEffect(()=>{
29
+ initializeHandler();
30
+ }, []);
31
+ return /*#__PURE__*/ _jsx(Fragment, {
32
+ children: children
33
+ });
34
+ };
35
+ };
36
+
37
+ //# sourceMappingURL=createClientUploadHandler.js.map
@@ -0,0 +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 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"}
@@ -0,0 +1,2 @@
1
+ export { createClientUploadHandler } from '../client/createClientUploadHandler.js';
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { createClientUploadHandler } from '../client/createClientUploadHandler.js';
2
+
3
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/client.ts"],"sourcesContent":["export { createClientUploadHandler } from '../client/createClientUploadHandler.js'\n"],"names":["createClientUploadHandler"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,yCAAwC"}
@@ -1,2 +1,3 @@
1
1
  export { getFilePrefix } from '../utilities/getFilePrefix.js';
2
+ export { initClientUploads } from '../utilities/initClientUploads.js';
2
3
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA"}
@@ -1,3 +1,4 @@
1
1
  export { getFilePrefix } from '../utilities/getFilePrefix.js';
2
+ export { initClientUploads } from '../utilities/initClientUploads.js';
2
3
 
3
4
  //# sourceMappingURL=utilities.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { getFilePrefix } from '../utilities/getFilePrefix.js'\n"],"names":["getFilePrefix"],"mappings":"AAAA,SAASA,aAAa,QAAQ,gCAA+B"}
1
+ {"version":3,"sources":["../../src/exports/utilities.ts"],"sourcesContent":["export { getFilePrefix } from '../utilities/getFilePrefix.js'\nexport { initClientUploads } from '../utilities/initClientUploads.js'\n"],"names":["getFilePrefix","initClientUploads"],"mappings":"AAAA,SAASA,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,iBAAiB,QAAQ,oCAAmC"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,13 @@ export interface File {
6
6
  mimeType: string;
7
7
  tempFilePath?: string;
8
8
  }
9
+ export type ClientUploadsAccess = (args: {
10
+ collectionSlug: UploadCollectionSlug;
11
+ req: PayloadRequest;
12
+ }) => boolean | Promise<boolean>;
13
+ export type ClientUploadsConfig = {
14
+ access?: ClientUploadsAccess;
15
+ } | boolean;
9
16
  export type HandleUpload = (args: {
10
17
  collection: CollectionConfig;
11
18
  data: any;
@@ -30,6 +37,7 @@ export type GenerateURL = (args: {
30
37
  export type StaticHandler = (req: PayloadRequest, args: {
31
38
  doc?: TypeWithID;
32
39
  params: {
40
+ clientUploadContext?: unknown;
33
41
  collection: string;
34
42
  filename: string;
35
43
  };
@@ -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 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: { doc?: TypeWithID; params: { collection: string; filename: string } },\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":"AAiFA,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 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,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"}
@@ -0,0 +1,13 @@
1
+ import type { Config, PayloadHandler } from 'payload';
2
+ export declare const initClientUploads: <ExtraProps extends Record<string, unknown>, T>({ clientHandler, collections, config, enabled, extraClientHandlerProps, serverHandler, serverHandlerPath, }: {
3
+ /** Path to clientHandler component */
4
+ clientHandler: string;
5
+ collections: Record<string, T>;
6
+ config: Config;
7
+ enabled: boolean;
8
+ /** extra props to pass to the client handler */
9
+ extraClientHandlerProps?: (collection: T) => ExtraProps;
10
+ serverHandler: PayloadHandler;
11
+ serverHandlerPath: string;
12
+ }) => void;
13
+ //# sourceMappingURL=initClientUploads.d.ts.map
@@ -0,0 +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,SAmEA,CAAA"}
@@ -0,0 +1,53 @@
1
+ export const initClientUploads = ({ clientHandler, collections, config, enabled, extraClientHandlerProps, serverHandler, serverHandlerPath })=>{
2
+ if (enabled) {
3
+ if (!config.endpoints) {
4
+ config.endpoints = [];
5
+ }
6
+ /**
7
+ * Tracks how many times the same handler was already applied.
8
+ * This allows to apply the same plugin multiple times, for example
9
+ * to use different buckets for different collections.
10
+ */ let handlerCount = 0;
11
+ for (const endpoint of config.endpoints){
12
+ if (endpoint.path === serverHandlerPath) {
13
+ handlerCount++;
14
+ }
15
+ }
16
+ if (handlerCount) {
17
+ serverHandlerPath = `${serverHandlerPath}-${handlerCount}`;
18
+ }
19
+ config.endpoints.push({
20
+ handler: serverHandler,
21
+ method: 'post',
22
+ path: serverHandlerPath
23
+ });
24
+ }
25
+ if (!config.admin) {
26
+ config.admin = {};
27
+ }
28
+ if (!config.admin.components) {
29
+ config.admin.components = {};
30
+ }
31
+ if (!config.admin.components.providers) {
32
+ config.admin.components.providers = [];
33
+ }
34
+ for(const collectionSlug in collections){
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
+ }
40
+ config.admin.components.providers.push({
41
+ clientProps: {
42
+ collectionSlug,
43
+ enabled,
44
+ extra: extraClientHandlerProps ? extraClientHandlerProps(collection) : undefined,
45
+ prefix,
46
+ serverHandlerPath
47
+ },
48
+ path: clientHandler
49
+ });
50
+ }
51
+ };
52
+
53
+ //# sourceMappingURL=initClientUploads.js.map
@@ -0,0 +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 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-canary.fd53f68",
3
+ "version": "3.26.0-canary.bbb3083",
4
4
  "description": "The official cloud storage plugin for Payload CMS",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -33,6 +33,11 @@
33
33
  "import": "./dist/exports/utilities.js",
34
34
  "types": "./dist/exports/utilities.d.ts",
35
35
  "default": "./dist/exports/utilities.js"
36
+ },
37
+ "./client": {
38
+ "import": "./dist/exports/client.js",
39
+ "types": "./dist/exports/client.d.ts",
40
+ "default": "./dist/exports/client.js"
36
41
  }
37
42
  },
38
43
  "main": "./dist/index.js",
@@ -44,14 +49,19 @@
44
49
  ],
45
50
  "dependencies": {
46
51
  "find-node-modules": "^2.1.3",
47
- "range-parser": "^1.2.1"
52
+ "range-parser": "^1.2.1",
53
+ "@payloadcms/ui": "3.26.0-canary.bbb3083"
48
54
  },
49
55
  "devDependencies": {
50
56
  "@types/find-node-modules": "^2.1.2",
51
- "payload": "3.25.0-canary.fd53f68"
57
+ "@types/react": "19.0.10",
58
+ "@types/react-dom": "19.0.4",
59
+ "payload": "3.26.0-canary.bbb3083"
52
60
  },
53
61
  "peerDependencies": {
54
- "payload": "3.25.0-canary.fd53f68"
62
+ "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
63
+ "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
64
+ "payload": "3.26.0-canary.bbb3083"
55
65
  },
56
66
  "publishConfig": {
57
67
  "registry": "https://registry.npmjs.org/"