payload 3.66.0 → 3.67.0-internal.1ea538b

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.
Files changed (121) hide show
  1. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  2. package/dist/auth/operations/forgotPassword.js +7 -12
  3. package/dist/auth/operations/forgotPassword.js.map +1 -1
  4. package/dist/auth/operations/login.d.ts.map +1 -1
  5. package/dist/auth/operations/login.js +7 -12
  6. package/dist/auth/operations/login.js.map +1 -1
  7. package/dist/auth/operations/refresh.d.ts.map +1 -1
  8. package/dist/auth/operations/refresh.js +7 -12
  9. package/dist/auth/operations/refresh.js.map +1 -1
  10. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  11. package/dist/auth/operations/resetPassword.js +7 -12
  12. package/dist/auth/operations/resetPassword.js.map +1 -1
  13. package/dist/auth/operations/unlock.d.ts.map +1 -1
  14. package/dist/auth/operations/unlock.js +14 -1
  15. package/dist/auth/operations/unlock.js.map +1 -1
  16. package/dist/collections/config/sanitize.d.ts.map +1 -1
  17. package/dist/collections/config/sanitize.js +2 -0
  18. package/dist/collections/config/sanitize.js.map +1 -1
  19. package/dist/collections/config/types.d.ts +7 -19
  20. package/dist/collections/config/types.d.ts.map +1 -1
  21. package/dist/collections/config/types.js.map +1 -1
  22. package/dist/collections/operations/count.d.ts.map +1 -1
  23. package/dist/collections/operations/count.js +7 -12
  24. package/dist/collections/operations/count.js.map +1 -1
  25. package/dist/collections/operations/countVersions.d.ts.map +1 -1
  26. package/dist/collections/operations/countVersions.js +7 -12
  27. package/dist/collections/operations/countVersions.js.map +1 -1
  28. package/dist/collections/operations/create.d.ts.map +1 -1
  29. package/dist/collections/operations/create.js +10 -14
  30. package/dist/collections/operations/create.js.map +1 -1
  31. package/dist/collections/operations/delete.d.ts.map +1 -1
  32. package/dist/collections/operations/delete.js +9 -13
  33. package/dist/collections/operations/delete.js.map +1 -1
  34. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  35. package/dist/collections/operations/deleteByID.js +9 -13
  36. package/dist/collections/operations/deleteByID.js.map +1 -1
  37. package/dist/collections/operations/find.d.ts.map +1 -1
  38. package/dist/collections/operations/find.js +9 -13
  39. package/dist/collections/operations/find.js.map +1 -1
  40. package/dist/collections/operations/findByID.d.ts.map +1 -1
  41. package/dist/collections/operations/findByID.js +22 -26
  42. package/dist/collections/operations/findByID.js.map +1 -1
  43. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  44. package/dist/collections/operations/findDistinct.js +7 -12
  45. package/dist/collections/operations/findDistinct.js.map +1 -1
  46. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  47. package/dist/collections/operations/findVersionByID.js +20 -1
  48. package/dist/collections/operations/findVersionByID.js.map +1 -1
  49. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  50. package/dist/collections/operations/findVersions.js +24 -5
  51. package/dist/collections/operations/findVersions.js.map +1 -1
  52. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  53. package/dist/collections/operations/restoreVersion.js +9 -13
  54. package/dist/collections/operations/restoreVersion.js.map +1 -1
  55. package/dist/collections/operations/update.d.ts.map +1 -1
  56. package/dist/collections/operations/update.js +9 -13
  57. package/dist/collections/operations/update.js.map +1 -1
  58. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  59. package/dist/collections/operations/updateByID.js +7 -12
  60. package/dist/collections/operations/updateByID.js.map +1 -1
  61. package/dist/collections/operations/utilities/buildAfterOperation.d.ts +6 -0
  62. package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -0
  63. package/dist/collections/operations/{utils.js → utilities/buildAfterOperation.js} +1 -1
  64. package/dist/collections/operations/utilities/buildAfterOperation.js.map +1 -0
  65. package/dist/collections/operations/utilities/buildBeforeOperation.d.ts +47 -0
  66. package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -0
  67. package/dist/collections/operations/utilities/buildBeforeOperation.js +25 -0
  68. package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -0
  69. package/dist/collections/operations/utilities/types.d.ts +216 -0
  70. package/dist/collections/operations/utilities/types.d.ts.map +1 -0
  71. package/dist/collections/operations/utilities/types.js +23 -0
  72. package/dist/collections/operations/utilities/types.js.map +1 -0
  73. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  74. package/dist/collections/operations/utilities/update.js +4 -2
  75. package/dist/collections/operations/utilities/update.js.map +1 -1
  76. package/dist/config/sanitize.d.ts.map +1 -1
  77. package/dist/config/sanitize.js +2 -2
  78. package/dist/config/sanitize.js.map +1 -1
  79. package/dist/exports/shared.d.ts +1 -0
  80. package/dist/exports/shared.d.ts.map +1 -1
  81. package/dist/exports/shared.js +1 -0
  82. package/dist/exports/shared.js.map +1 -1
  83. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  84. package/dist/fields/baseFields/slug/generateSlug.js +2 -2
  85. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  86. package/dist/fields/config/types.d.ts +2 -0
  87. package/dist/fields/config/types.d.ts.map +1 -1
  88. package/dist/fields/config/types.js.map +1 -1
  89. package/dist/globals/config/types.d.ts +1 -1
  90. package/dist/globals/config/types.d.ts.map +1 -1
  91. package/dist/globals/config/types.js.map +1 -1
  92. package/dist/globals/operations/findOne.d.ts.map +1 -1
  93. package/dist/globals/operations/findOne.js +4 -3
  94. package/dist/globals/operations/findOne.js.map +1 -1
  95. package/dist/globals/operations/update.d.ts.map +1 -1
  96. package/dist/globals/operations/update.js +3 -2
  97. package/dist/globals/operations/update.js.map +1 -1
  98. package/dist/index.bundled.d.ts +200 -119
  99. package/dist/utilities/getVersionsConfig.d.ts +37 -0
  100. package/dist/utilities/getVersionsConfig.d.ts.map +1 -0
  101. package/dist/utilities/getVersionsConfig.js +44 -0
  102. package/dist/utilities/getVersionsConfig.js.map +1 -0
  103. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  104. package/dist/versions/buildCollectionFields.js +3 -2
  105. package/dist/versions/buildCollectionFields.js.map +1 -1
  106. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  107. package/dist/versions/buildGlobalFields.js +3 -2
  108. package/dist/versions/buildGlobalFields.js.map +1 -1
  109. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  110. package/dist/versions/getLatestCollectionVersion.js +3 -1
  111. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  112. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  113. package/dist/versions/getLatestGlobalVersion.js +3 -2
  114. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  115. package/dist/versions/saveVersion.d.ts.map +1 -1
  116. package/dist/versions/saveVersion.js +2 -1
  117. package/dist/versions/saveVersion.js.map +1 -1
  118. package/package.json +2 -2
  119. package/dist/collections/operations/utils.d.ts +0 -105
  120. package/dist/collections/operations/utils.d.ts.map +0 -1
  121. package/dist/collections/operations/utils.js.map +0 -1
@@ -7,6 +7,7 @@ import { deepCopyObjectSimple } from '../../index.js';
7
7
  import { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js';
8
8
  import { commitTransaction } from '../../utilities/commitTransaction.js';
9
9
  import { getSelectMode } from '../../utilities/getSelectMode.js';
10
+ import { hasDraftsEnabled, hasDraftValidationEnabled } from '../../utilities/getVersionsConfig.js';
10
11
  import { initTransaction } from '../../utilities/initTransaction.js';
11
12
  import { killTransaction } from '../../utilities/killTransaction.js';
12
13
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
@@ -34,7 +35,7 @@ export const updateOperation = async (args)=>{
34
35
  }
35
36
  }
36
37
  let { data } = args;
37
- const isSavingDraft = Boolean(draftArg && globalConfig.versions?.drafts) && data._status !== 'published';
38
+ const isSavingDraft = Boolean(draftArg && hasDraftsEnabled(globalConfig)) && data._status !== 'published';
38
39
  // /////////////////////////////////////
39
40
  // 1. Retrieve and execute access
40
41
  // /////////////////////////////////////
@@ -140,7 +141,7 @@ export const updateOperation = async (args)=>{
140
141
  global: globalConfig,
141
142
  operation: 'update',
142
143
  req,
143
- skipValidation: isSavingDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate
144
+ skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig)
144
145
  };
145
146
  let result = await beforeChange(beforeChangeArgs);
146
147
  let snapshotToSave;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeOperation?.length) {\n for (const hook of globalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: globalConfig,\n operation: 'update',\n req: args.req,\n })) || args\n }\n }\n\n let { data } = args\n\n const isSavingDraft =\n Boolean(draftArg && globalConfig.versions?.drafts) && data._status !== 'published'\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: globalJSON,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n isSavingDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate,\n }\n\n let result: JsonObject = await beforeChange(beforeChangeArgs)\n let snapshotToSave: JsonObject | undefined\n\n if (payload.config.localization && globalConfig.versions) {\n if (publishSpecificLocale) {\n snapshotToSave = deepCopyObjectSimple(result)\n\n // the published data to save to the main document\n result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales:\n (\n await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n )?.global || {},\n })\n }\n }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n forceSelect: globalConfig.forceSelect,\n select: incomingSelect,\n })\n\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!result.createdAt) {\n result.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n result.updatedAt = now\n\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: snapshotToSave,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: result,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","initTransaction","killTransaction","sanitizeSelect","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","fallbackLocale","payload","select","incomingSelect","showHiddenFields","shouldCommit","hooks","beforeOperation","length","hook","context","global","operation","data","isSavingDraft","Boolean","versions","drafts","_status","accessResults","access","update","query","undefined","globalVersionResult","config","where","globalExists","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","beforeChangeArgs","docWithLocales","skipValidation","validate","result","snapshotToSave","localization","published","fields","flattenedFields","forceSelect","now","Date","toISOString","createdAt","updatedAt","db","updateGlobal","createGlobal","globalType","snapshot","selectMode","previousDoc","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { hasDraftsEnabled, hasDraftValidationEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeOperation?.length) {\n for (const hook of globalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: globalConfig,\n operation: 'update',\n req: args.req,\n })) || args\n }\n }\n\n let { data } = args\n\n const isSavingDraft =\n Boolean(draftArg && hasDraftsEnabled(globalConfig)) && data._status !== 'published'\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: globalJSON,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig),\n }\n\n let result: JsonObject = await beforeChange(beforeChangeArgs)\n let snapshotToSave: JsonObject | undefined\n\n if (payload.config.localization && globalConfig.versions) {\n if (publishSpecificLocale) {\n snapshotToSave = deepCopyObjectSimple(result)\n\n // the published data to save to the main document\n result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales:\n (\n await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n )?.global || {},\n })\n }\n }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n forceSelect: globalConfig.forceSelect,\n select: incomingSelect,\n })\n\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!result.createdAt) {\n result.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n result.updatedAt = now\n\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: snapshotToSave,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: result,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","hasDraftsEnabled","hasDraftValidationEnabled","initTransaction","killTransaction","sanitizeSelect","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","fallbackLocale","payload","select","incomingSelect","showHiddenFields","shouldCommit","hooks","beforeOperation","length","hook","context","global","operation","data","isSavingDraft","Boolean","_status","accessResults","access","update","query","undefined","globalVersionResult","config","where","globalExists","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","beforeChangeArgs","docWithLocales","skipValidation","result","snapshotToSave","localization","versions","published","fields","flattenedFields","forceSelect","now","Date","toISOString","createdAt","updatedAt","db","updateGlobal","createGlobal","globalType","snapshot","selectMode","previousDoc","error"],"mappings":"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"}