@payloadcms/next 3.0.0-beta.102 → 3.0.0-beta.104

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.
@@ -1 +1 @@
1
- {"version":3,"file":"checkFileAccess.d.ts","sourceRoot":"","sources":["../../../../src/routes/rest/files/checkFileAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAM5E,wBAAsB,eAAe,CAAC,EACpC,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,CA+CjC"}
1
+ {"version":3,"file":"checkFileAccess.d.ts","sourceRoot":"","sources":["../../../../src/routes/rest/files/checkFileAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAM5E,wBAAsB,eAAe,CAAC,EACpC,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,CAmDjC"}
@@ -15,6 +15,9 @@ export async function checkFileAccess({
15
15
  if (disableEndpoints) {
16
16
  return disableEndpoints;
17
17
  }
18
+ if (filename.includes('../') || filename.includes('..\\')) {
19
+ throw new Forbidden(req.t);
20
+ }
18
21
  const accessResult = await executeAccess({
19
22
  isReadingStaticFile: true,
20
23
  req
@@ -1 +1 @@
1
- {"version":3,"file":"checkFileAccess.js","names":["executeAccess","Forbidden","endpointsAreDisabled","checkFileAccess","collection","filename","req","config","disableEndpoints","endpoints","request","accessResult","isReadingStaticFile","access","read","queryToBuild","and","or","equals","upload","imageSizes","forEach","name","push","doc","payload","db","findOne","slug","where","t"],"sources":["../../../../src/routes/rest/files/checkFileAccess.ts"],"sourcesContent":["import type { Collection, PayloadRequest, TypeWithID, Where } from 'payload'\n\nimport { executeAccess, Forbidden } from 'payload'\n\nimport { endpointsAreDisabled } from '../checkEndpoints.js'\n\nexport async function checkFileAccess({\n collection,\n filename,\n req,\n}: {\n collection: Collection\n filename: string\n req: PayloadRequest\n}): Promise<Response | TypeWithID> {\n const { config } = collection\n const disableEndpoints = endpointsAreDisabled({ endpoints: config.endpoints, request: req })\n if (disableEndpoints) {\n return disableEndpoints\n }\n\n const accessResult = await executeAccess({ isReadingStaticFile: true, req }, config.access.read)\n\n if (typeof accessResult === 'object') {\n const queryToBuild: Where = {\n and: [\n {\n or: [\n {\n filename: {\n equals: filename,\n },\n },\n ],\n },\n accessResult,\n ],\n }\n\n if (config.upload.imageSizes) {\n config.upload.imageSizes.forEach(({ name }) => {\n queryToBuild.and[0].or.push({\n [`sizes.${name}.filename`]: {\n equals: filename,\n },\n })\n })\n }\n\n const doc = await req.payload.db.findOne({\n collection: config.slug,\n req,\n where: queryToBuild,\n })\n\n if (!doc) {\n throw new Forbidden(req.t)\n }\n\n return doc\n }\n}\n"],"mappings":"AAEA,SAASA,aAAa,EAAEC,SAAS,QAAQ;AAEzC,SAASC,oBAAoB,QAAQ;AAErC,OAAO,eAAeC,gBAAgB;EACpCC,UAAU;EACVC,QAAQ;EACRC;AAAG,CAKJ;EACC,MAAM;IAAEC;EAAM,CAAE,GAAGH,UAAA;EACnB,MAAMI,gBAAA,GAAmBN,oBAAA,CAAqB;IAAEO,SAAA,EAAWF,MAAA,CAAOE,SAAS;IAAEC,OAAA,EAASJ;EAAI;EAC1F,IAAIE,gBAAA,EAAkB;IACpB,OAAOA,gBAAA;EACT;EAEA,MAAMG,YAAA,GAAe,MAAMX,aAAA,CAAc;IAAEY,mBAAA,EAAqB;IAAMN;EAAI,GAAGC,MAAA,CAAOM,MAAM,CAACC,IAAI;EAE/F,IAAI,OAAOH,YAAA,KAAiB,UAAU;IACpC,MAAMI,YAAA,GAAsB;MAC1BC,GAAA,EAAK,CACH;QACEC,EAAA,EAAI,CACF;UACEZ,QAAA,EAAU;YACRa,MAAA,EAAQb;UACV;QACF;MAEJ,GACAM,YAAA;IAEJ;IAEA,IAAIJ,MAAA,CAAOY,MAAM,CAACC,UAAU,EAAE;MAC5Bb,MAAA,CAAOY,MAAM,CAACC,UAAU,CAACC,OAAO,CAAC,CAAC;QAAEC;MAAI,CAAE;QACxCP,YAAA,CAAaC,GAAG,CAAC,EAAE,CAACC,EAAE,CAACM,IAAI,CAAC;UAC1B,CAAC,SAASD,IAAA,WAAe,GAAG;YAC1BJ,MAAA,EAAQb;UACV;QACF;MACF;IACF;IAEA,MAAMmB,GAAA,GAAM,MAAMlB,GAAA,CAAImB,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;MACvCvB,UAAA,EAAYG,MAAA,CAAOqB,IAAI;MACvBtB,GAAA;MACAuB,KAAA,EAAOd;IACT;IAEA,IAAI,CAACS,GAAA,EAAK;MACR,MAAM,IAAIvB,SAAA,CAAUK,GAAA,CAAIwB,CAAC;IAC3B;IAEA,OAAON,GAAA;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"checkFileAccess.js","names":["executeAccess","Forbidden","endpointsAreDisabled","checkFileAccess","collection","filename","req","config","disableEndpoints","endpoints","request","includes","t","accessResult","isReadingStaticFile","access","read","queryToBuild","and","or","equals","upload","imageSizes","forEach","name","push","doc","payload","db","findOne","slug","where"],"sources":["../../../../src/routes/rest/files/checkFileAccess.ts"],"sourcesContent":["import type { Collection, PayloadRequest, TypeWithID, Where } from 'payload'\n\nimport { executeAccess, Forbidden } from 'payload'\n\nimport { endpointsAreDisabled } from '../checkEndpoints.js'\n\nexport async function checkFileAccess({\n collection,\n filename,\n req,\n}: {\n collection: Collection\n filename: string\n req: PayloadRequest\n}): Promise<Response | TypeWithID> {\n const { config } = collection\n const disableEndpoints = endpointsAreDisabled({ endpoints: config.endpoints, request: req })\n if (disableEndpoints) {\n return disableEndpoints\n }\n\n if (filename.includes('../') || filename.includes('..\\\\')) {\n throw new Forbidden(req.t)\n }\n\n const accessResult = await executeAccess({ isReadingStaticFile: true, req }, config.access.read)\n\n if (typeof accessResult === 'object') {\n const queryToBuild: Where = {\n and: [\n {\n or: [\n {\n filename: {\n equals: filename,\n },\n },\n ],\n },\n accessResult,\n ],\n }\n\n if (config.upload.imageSizes) {\n config.upload.imageSizes.forEach(({ name }) => {\n queryToBuild.and[0].or.push({\n [`sizes.${name}.filename`]: {\n equals: filename,\n },\n })\n })\n }\n\n const doc = await req.payload.db.findOne({\n collection: config.slug,\n req,\n where: queryToBuild,\n })\n\n if (!doc) {\n throw new Forbidden(req.t)\n }\n\n return doc\n }\n}\n"],"mappings":"AAEA,SAASA,aAAa,EAAEC,SAAS,QAAQ;AAEzC,SAASC,oBAAoB,QAAQ;AAErC,OAAO,eAAeC,gBAAgB;EACpCC,UAAU;EACVC,QAAQ;EACRC;AAAG,CAKJ;EACC,MAAM;IAAEC;EAAM,CAAE,GAAGH,UAAA;EACnB,MAAMI,gBAAA,GAAmBN,oBAAA,CAAqB;IAAEO,SAAA,EAAWF,MAAA,CAAOE,SAAS;IAAEC,OAAA,EAASJ;EAAI;EAC1F,IAAIE,gBAAA,EAAkB;IACpB,OAAOA,gBAAA;EACT;EAEA,IAAIH,QAAA,CAASM,QAAQ,CAAC,UAAUN,QAAA,CAASM,QAAQ,CAAC,SAAS;IACzD,MAAM,IAAIV,SAAA,CAAUK,GAAA,CAAIM,CAAC;EAC3B;EAEA,MAAMC,YAAA,GAAe,MAAMb,aAAA,CAAc;IAAEc,mBAAA,EAAqB;IAAMR;EAAI,GAAGC,MAAA,CAAOQ,MAAM,CAACC,IAAI;EAE/F,IAAI,OAAOH,YAAA,KAAiB,UAAU;IACpC,MAAMI,YAAA,GAAsB;MAC1BC,GAAA,EAAK,CACH;QACEC,EAAA,EAAI,CACF;UACEd,QAAA,EAAU;YACRe,MAAA,EAAQf;UACV;QACF;MAEJ,GACAQ,YAAA;IAEJ;IAEA,IAAIN,MAAA,CAAOc,MAAM,CAACC,UAAU,EAAE;MAC5Bf,MAAA,CAAOc,MAAM,CAACC,UAAU,CAACC,OAAO,CAAC,CAAC;QAAEC;MAAI,CAAE;QACxCP,YAAA,CAAaC,GAAG,CAAC,EAAE,CAACC,EAAE,CAACM,IAAI,CAAC;UAC1B,CAAC,SAASD,IAAA,WAAe,GAAG;YAC1BJ,MAAA,EAAQf;UACV;QACF;MACF;IACF;IAEA,MAAMqB,GAAA,GAAM,MAAMpB,GAAA,CAAIqB,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;MACvCzB,UAAA,EAAYG,MAAA,CAAOuB,IAAI;MACvBxB,GAAA;MACAyB,KAAA,EAAOd;IACT;IAEA,IAAI,CAACS,GAAA,EAAK;MACR,MAAM,IAAIzB,SAAA,CAAUK,GAAA,CAAIM,CAAC;IAC3B;IAEA,OAAOc,GAAA;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAI9D,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAwPnC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAI9D,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAqQnC,CAAA"}
@@ -24,6 +24,7 @@ export const DefaultEditView = () => {
24
24
  BeforeFields,
25
25
  collectionSlug,
26
26
  disableActions,
27
+ disableCreate,
27
28
  disableLeaveWithoutSaving,
28
29
  docPermissions,
29
30
  getDocPreferences,
@@ -35,7 +36,12 @@ export const DefaultEditView = () => {
35
36
  initialState,
36
37
  isEditing,
37
38
  isInitializing,
38
- onSave: onSaveFromContext
39
+ onDelete,
40
+ onDrawerCreate,
41
+ onDuplicate,
42
+ onSave: onSaveFromContext,
43
+ redirectAfterDelete,
44
+ redirectAfterDuplicate
39
45
  } = useDocumentInfo();
40
46
  const {
41
47
  refreshCookieAsync,
@@ -171,11 +177,18 @@ export const DefaultEditView = () => {
171
177
  apiURL: apiURL,
172
178
  data: data,
173
179
  disableActions: disableActions,
180
+ disableCreate: disableCreate,
174
181
  hasPublishPermission: hasPublishPermission,
175
182
  hasSavePermission: hasSavePermission,
176
183
  id: id,
177
184
  isEditing: isEditing,
185
+ onDelete: onDelete,
186
+ onDrawerCreate: onDrawerCreate,
187
+ onDuplicate: onDuplicate,
188
+ onSave: onSave,
178
189
  permissions: docPermissions,
190
+ redirectAfterDelete: redirectAfterDelete,
191
+ redirectAfterDuplicate: redirectAfterDuplicate,
179
192
  slug: collectionConfig?.slug || globalConfig?.slug
180
193
  }), /*#__PURE__*/_jsx(DocumentFields, {
181
194
  AfterFields: AfterFields,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DocumentControls","DocumentFields","Form","OperationProvider","RenderComponent","Upload","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useUploadEdits","formatAdminURL","getFormState","useRouter","useSearchParams","React","Fragment","useCallback","useState","LeaveWithoutSaving","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","disableActions","disableLeaveWithoutSaving","docPermissions","getDocPreferences","getVersions","globalSlug","hasPublishPermission","hasSavePermission","initialData","data","initialState","isEditing","isInitializing","onSave","onSaveFromContext","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","api","apiRoute","serverURL","getEntityConfig","router","depth","params","reportUpdate","resetUploadEdits","locale","get","collectionConfig","globalConfig","entitySlug","slug","operation","auth","undefined","upload","preventLeaveWithoutSaving","versions","drafts","autosave","classes","push","schemaPath","setSchemaPath","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","Date","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","docPreferences","body","_jsx","className","filter","Boolean","join","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","pluralLabel","labels","plural","useAsTitle","fallback","toString","permissions","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","components","edit","mappedComponent","uploadConfig","fields"],"sources":["../../../../src/views/Edit/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n type FormProps,\n OperationProvider,\n RenderComponent,\n Upload,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport { formatAdminURL, getFormState } from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useState } from 'react'\n\nimport { LeaveWithoutSaving } from '../../../elements/LeaveWithoutSaving/index.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC = () => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n getDocPreferences,\n getVersions,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n onSave: onSaveFromContext,\n } = useDocumentInfo()\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n\n const locale = params.get('locale')\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const preventLeaveWithoutSaving =\n (!(collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n !(globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n !disableLeaveWithoutSaving\n\n const classes = [baseClass, id && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPath, setSchemaPath] = React.useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return `_${entitySlug}.auth`\n }\n\n return entitySlug\n })\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n void getVersions()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n },\n [\n onSaveFromContext,\n userSlug,\n reportUpdate,\n id,\n entitySlug,\n user,\n depth,\n collectionSlug,\n getVersions,\n isEditing,\n refreshCookieAsync,\n adminRoute,\n router,\n locale,\n resetUploadEdits,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const docPreferences = await getDocPreferences()\n return getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n schemaPath,\n },\n serverURL,\n })\n },\n [apiRoute, collectionSlug, schemaPath, getDocPreferences, globalSlug, id, operation, serverURL],\n )\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {BeforeDocument}\n {preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={data}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n permissions={docPermissions}\n slug={collectionConfig?.slug || globalConfig?.slug}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPath={setSchemaPath}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {collectionConfig?.admin?.components?.edit?.Upload ? (\n <RenderComponent\n mappedComponent={collectionConfig.admin.components.edit.Upload}\n />\n ) : (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n docPermissions={docPermissions}\n fields={(collectionConfig || globalConfig)?.fields}\n readOnly={!hasSavePermission}\n schemaPath={schemaPath}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DocumentControls","DocumentFields","Form","OperationProvider","RenderComponent","Upload","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useUploadEdits","formatAdminURL","getFormState","useRouter","useSearchParams","React","Fragment","useCallback","useState","LeaveWithoutSaving","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","getDocPreferences","getVersions","globalSlug","hasPublishPermission","hasSavePermission","initialData","data","initialState","isEditing","isInitializing","onDelete","onDrawerCreate","onDuplicate","onSave","onSaveFromContext","redirectAfterDelete","redirectAfterDuplicate","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","api","apiRoute","serverURL","getEntityConfig","router","depth","params","reportUpdate","resetUploadEdits","locale","get","collectionConfig","globalConfig","entitySlug","slug","operation","auth","undefined","upload","preventLeaveWithoutSaving","versions","drafts","autosave","classes","push","schemaPath","setSchemaPath","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","Date","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","docPreferences","body","_jsx","className","filter","Boolean","join","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","pluralLabel","labels","plural","useAsTitle","fallback","toString","permissions","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","components","edit","mappedComponent","uploadConfig","fields"],"sources":["../../../../src/views/Edit/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n type FormProps,\n OperationProvider,\n RenderComponent,\n Upload,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport { formatAdminURL, getFormState } from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useState } from 'react'\n\nimport { LeaveWithoutSaving } from '../../../elements/LeaveWithoutSaving/index.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC = () => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n getDocPreferences,\n getVersions,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n onDelete,\n onDrawerCreate,\n onDuplicate,\n onSave: onSaveFromContext,\n redirectAfterDelete,\n redirectAfterDuplicate,\n } = useDocumentInfo()\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n\n const locale = params.get('locale')\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const preventLeaveWithoutSaving =\n (!(collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n !(globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n !disableLeaveWithoutSaving\n\n const classes = [baseClass, id && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPath, setSchemaPath] = React.useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return `_${entitySlug}.auth`\n }\n\n return entitySlug\n })\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n void getVersions()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n },\n [\n onSaveFromContext,\n userSlug,\n reportUpdate,\n id,\n entitySlug,\n user,\n depth,\n collectionSlug,\n getVersions,\n isEditing,\n refreshCookieAsync,\n adminRoute,\n router,\n locale,\n resetUploadEdits,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const docPreferences = await getDocPreferences()\n return getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n schemaPath,\n },\n serverURL,\n })\n },\n [apiRoute, collectionSlug, schemaPath, getDocPreferences, globalSlug, id, operation, serverURL],\n )\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {BeforeDocument}\n {preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={data}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreate={onDrawerCreate}\n onDuplicate={onDuplicate}\n onSave={onSave}\n permissions={docPermissions}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPath={setSchemaPath}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {collectionConfig?.admin?.components?.edit?.Upload ? (\n <RenderComponent\n mappedComponent={collectionConfig.admin.components.edit.Upload}\n />\n ) : (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n docPermissions={docPermissions}\n fields={(collectionConfig || globalConfig)?.fields}\n readOnly={!hasSavePermission}\n schemaPath={schemaPath}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAmFA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAyFA,CAAA"}
@@ -6,11 +6,11 @@ import LinkImport from 'next/link.js';
6
6
  import React from 'react';
7
7
  const baseClass = 'login__form';
8
8
  const Link = LinkImport.default || LinkImport;
9
- import { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui';
9
+ import { Form, FormSubmit, PasswordField, useAuth, useConfig, useTranslation } from '@payloadcms/ui';
10
10
  import { formatAdminURL } from '@payloadcms/ui/shared';
11
11
  import { LoginField } from '../LoginField/index.js';
12
12
  export const LoginForm = t0 => {
13
- const $ = _c(19);
13
+ const $ = _c(22);
14
14
  const {
15
15
  prefillEmail,
16
16
  prefillPassword,
@@ -72,10 +72,13 @@ export const LoginForm = t0 => {
72
72
  const {
73
73
  t
74
74
  } = useTranslation();
75
+ const {
76
+ setUser
77
+ } = useAuth();
75
78
  const t6 = prefillPassword ?? undefined;
76
79
  const t7 = prefillPassword ?? undefined;
77
80
  let t8;
78
- if ($[6] !== t6 || $[7] !== t7 || $[8] !== loginWithUsername || $[9] !== prefillUsername || $[10] !== prefillEmail || $[11] !== apiRoute || $[12] !== userSlug || $[13] !== searchParams || $[14] !== adminRoute || $[15] !== loginType || $[16] !== t || $[17] !== forgotRoute) {
81
+ if ($[6] !== t6 || $[7] !== t7 || $[8] !== loginWithUsername || $[9] !== prefillUsername || $[10] !== prefillEmail || $[11] !== setUser || $[12] !== apiRoute || $[13] !== userSlug || $[14] !== searchParams || $[15] !== adminRoute || $[16] !== loginType || $[17] !== t || $[18] !== forgotRoute) {
79
82
  const initialState = {
80
83
  password: {
81
84
  initialValue: t6,
@@ -96,12 +99,24 @@ export const LoginForm = t0 => {
96
99
  value: prefillEmail ?? undefined
97
100
  };
98
101
  }
102
+ let t9;
103
+ if ($[20] !== setUser) {
104
+ t9 = data => {
105
+ setUser(data.user);
106
+ };
107
+ $[20] = setUser;
108
+ $[21] = t9;
109
+ } else {
110
+ t9 = $[21];
111
+ }
112
+ const handleLogin = t9;
99
113
  t8 = _jsxs(Form, {
100
114
  action: `${apiRoute}/${userSlug}/login`,
101
115
  className: baseClass,
102
116
  disableSuccessStatus: true,
103
117
  initialState,
104
118
  method: "POST",
119
+ onSuccess: handleLogin,
105
120
  redirect: typeof searchParams?.redirect === "string" ? searchParams.redirect : adminRoute,
106
121
  waitForAutocomplete: true,
107
122
  children: [_jsxs("div", {
@@ -131,16 +146,17 @@ export const LoginForm = t0 => {
131
146
  $[8] = loginWithUsername;
132
147
  $[9] = prefillUsername;
133
148
  $[10] = prefillEmail;
134
- $[11] = apiRoute;
135
- $[12] = userSlug;
136
- $[13] = searchParams;
137
- $[14] = adminRoute;
138
- $[15] = loginType;
139
- $[16] = t;
140
- $[17] = forgotRoute;
141
- $[18] = t8;
149
+ $[11] = setUser;
150
+ $[12] = apiRoute;
151
+ $[13] = userSlug;
152
+ $[14] = searchParams;
153
+ $[15] = adminRoute;
154
+ $[16] = loginType;
155
+ $[17] = t;
156
+ $[18] = forgotRoute;
157
+ $[19] = t8;
142
158
  } else {
143
- t8 = $[18];
159
+ t8 = $[19];
144
160
  }
145
161
  return t8;
146
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","t4","collections","find","collection","slug","collectionConfig","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","t5","loginType","useState","t","t6","undefined","t7","t8","initialState","password","initialValue","valid","value","username","email","_jsxs","action","className","disableSuccessStatus","method","redirect","waitForAutocomplete","children","_jsx","type","field","name","label","required","href","path","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","t4","collections","find","collection","slug","collectionConfig","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","t5","loginType","useState","t","setUser","t6","undefined","t7","t8","initialState","password","initialValue","valid","value","username","email","t9","data","handleLogin","_jsxs","action","className","disableSuccessStatus","method","onSuccess","redirect","waitForAutocomplete","children","_jsx","type","field","name","label","required","href","path","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { ClientUser, FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useAuth, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n const handleLogin = (data: { user: ClientUser }) => {\n setUser(data.user)\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n onSuccess={handleLogin}\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.0.0-beta.102",
3
+ "version": "3.0.0-beta.104",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -63,9 +63,9 @@
63
63
  "sonner": "^1.5.0",
64
64
  "uuid": "10.0.0",
65
65
  "ws": "^8.16.0",
66
- "@payloadcms/graphql": "3.0.0-beta.102",
67
- "@payloadcms/translations": "3.0.0-beta.102",
68
- "@payloadcms/ui": "3.0.0-beta.102"
66
+ "@payloadcms/graphql": "3.0.0-beta.104",
67
+ "@payloadcms/translations": "3.0.0-beta.104",
68
+ "@payloadcms/ui": "3.0.0-beta.104"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@babel/cli": "^7.24.5",
@@ -85,12 +85,12 @@
85
85
  "eslint-plugin-react-compiler": "0.0.0-experimental-72f06b2-20240822",
86
86
  "swc-plugin-transform-remove-imports": "1.15.0",
87
87
  "@payloadcms/eslint-config": "3.0.0-beta.97",
88
- "payload": "3.0.0-beta.102"
88
+ "payload": "3.0.0-beta.104"
89
89
  },
90
90
  "peerDependencies": {
91
91
  "graphql": "^16.8.1",
92
92
  "next": "^15.0.0-canary.104",
93
- "payload": "3.0.0-beta.102"
93
+ "payload": "3.0.0-beta.104"
94
94
  },
95
95
  "engines": {
96
96
  "node": "^18.20.2 || >=20.9.0"