payload 3.42.0 → 3.43.0-internal.c5bbc84

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 (220) hide show
  1. package/dist/admin/functions/index.d.ts +8 -0
  2. package/dist/admin/functions/index.d.ts.map +1 -1
  3. package/dist/admin/functions/index.js.map +1 -1
  4. package/dist/admin/types.d.ts +1 -1
  5. package/dist/admin/types.d.ts.map +1 -1
  6. package/dist/admin/types.js.map +1 -1
  7. package/dist/admin/views/folderList.d.ts +14 -5
  8. package/dist/admin/views/folderList.d.ts.map +1 -1
  9. package/dist/admin/views/folderList.js.map +1 -1
  10. package/dist/auth/crypto.d.ts.map +1 -1
  11. package/dist/auth/crypto.js +6 -3
  12. package/dist/auth/crypto.js.map +1 -1
  13. package/dist/auth/operations/unlock.d.ts.map +1 -1
  14. package/dist/auth/operations/unlock.js +1 -2
  15. package/dist/auth/operations/unlock.js.map +1 -1
  16. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  17. package/dist/auth/strategies/local/authenticate.js +1 -0
  18. package/dist/auth/strategies/local/authenticate.js.map +1 -1
  19. package/dist/bin/index.js.map +1 -1
  20. package/dist/bin/migrate.d.ts.map +1 -1
  21. package/dist/bin/migrate.js +2 -2
  22. package/dist/bin/migrate.js.map +1 -1
  23. package/dist/collections/config/client.d.ts.map +1 -1
  24. package/dist/collections/config/client.js +3 -1
  25. package/dist/collections/config/client.js.map +1 -1
  26. package/dist/collections/dataloader.d.ts.map +1 -1
  27. package/dist/collections/dataloader.js +0 -1
  28. package/dist/collections/dataloader.js.map +1 -1
  29. package/dist/collections/operations/delete.d.ts.map +1 -1
  30. package/dist/collections/operations/delete.js +1 -2
  31. package/dist/collections/operations/delete.js.map +1 -1
  32. package/dist/collections/operations/findVersions.js +0 -1
  33. package/dist/collections/operations/findVersions.js.map +1 -1
  34. package/dist/collections/operations/update.d.ts.map +1 -1
  35. package/dist/collections/operations/update.js +3 -2
  36. package/dist/collections/operations/update.js.map +1 -1
  37. package/dist/config/client.d.ts.map +1 -1
  38. package/dist/config/client.js +1 -1
  39. package/dist/config/client.js.map +1 -1
  40. package/dist/config/sanitize.d.ts.map +1 -1
  41. package/dist/config/sanitize.js +1 -2
  42. package/dist/config/sanitize.js.map +1 -1
  43. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  44. package/dist/database/queryValidation/validateQueryPaths.js +0 -1
  45. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  46. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  47. package/dist/database/queryValidation/validateSearchParams.js +0 -1
  48. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  49. package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
  50. package/dist/database/sanitizeJoinQuery.js +3 -1
  51. package/dist/database/sanitizeJoinQuery.js.map +1 -1
  52. package/dist/fields/config/client.d.ts.map +1 -1
  53. package/dist/fields/config/client.js +6 -1
  54. package/dist/fields/config/client.js.map +1 -1
  55. package/dist/fields/config/sanitize.d.ts.map +1 -1
  56. package/dist/fields/config/sanitize.js +0 -1
  57. package/dist/fields/config/sanitize.js.map +1 -1
  58. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  59. package/dist/fields/hooks/afterRead/index.js +0 -1
  60. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  61. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  62. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -2
  63. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  64. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  65. package/dist/fields/hooks/beforeChange/promise.js +0 -1
  66. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  67. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  68. package/dist/fields/validations.d.ts.map +1 -1
  69. package/dist/fields/validations.js +1 -2
  70. package/dist/fields/validations.js.map +1 -1
  71. package/dist/folders/types.d.ts +2 -0
  72. package/dist/folders/types.d.ts.map +1 -1
  73. package/dist/folders/types.js.map +1 -1
  74. package/dist/globals/config/client.d.ts.map +1 -1
  75. package/dist/globals/config/client.js +2 -1
  76. package/dist/globals/config/client.js.map +1 -1
  77. package/dist/index.d.ts +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +2 -3
  80. package/dist/index.js.map +1 -1
  81. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  82. package/dist/queues/operations/runJobs/index.js +0 -1
  83. package/dist/queues/operations/runJobs/index.js.map +1 -1
  84. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  85. package/dist/queues/operations/runJobs/runJSONJob/index.js +2 -2
  86. package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -1
  87. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  88. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +0 -1
  89. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  90. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  91. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +1 -1
  92. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  93. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -1
  94. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js +1 -2
  95. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -1
  96. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
  97. package/dist/queues/operations/runJobs/runJob/index.js +2 -2
  98. package/dist/queues/operations/runJobs/runJob/index.js.map +1 -1
  99. package/dist/uploads/cropImage.d.ts +0 -1
  100. package/dist/uploads/cropImage.d.ts.map +1 -1
  101. package/dist/uploads/cropImage.js +2 -3
  102. package/dist/uploads/cropImage.js.map +1 -1
  103. package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
  104. package/dist/uploads/endpoints/getFile.js +0 -1
  105. package/dist/uploads/endpoints/getFile.js.map +1 -1
  106. package/dist/uploads/endpoints/getFileFromURL.d.ts.map +1 -1
  107. package/dist/uploads/endpoints/getFileFromURL.js +2 -3
  108. package/dist/uploads/endpoints/getFileFromURL.js.map +1 -1
  109. package/dist/uploads/fetchAPI-multipart/fileFactory.d.ts.map +1 -1
  110. package/dist/uploads/fetchAPI-multipart/fileFactory.js +1 -0
  111. package/dist/uploads/fetchAPI-multipart/fileFactory.js.map +1 -1
  112. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts +6 -0
  113. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  114. package/dist/uploads/fetchAPI-multipart/processMultipart.js +0 -1
  115. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  116. package/dist/uploads/fetchAPI-multipart/processNested.d.ts +1 -1
  117. package/dist/uploads/fetchAPI-multipart/processNested.d.ts.map +1 -1
  118. package/dist/uploads/fetchAPI-multipart/processNested.js +0 -1
  119. package/dist/uploads/fetchAPI-multipart/processNested.js.map +1 -1
  120. package/dist/uploads/fetchAPI-multipart/utilities.d.ts +1 -1
  121. package/dist/uploads/fetchAPI-multipart/utilities.d.ts.map +1 -1
  122. package/dist/uploads/fetchAPI-multipart/utilities.js +0 -1
  123. package/dist/uploads/fetchAPI-multipart/utilities.js.map +1 -1
  124. package/dist/uploads/fetchAPI-stream-file/index.d.ts +1 -1
  125. package/dist/uploads/fetchAPI-stream-file/index.d.ts.map +1 -1
  126. package/dist/uploads/fetchAPI-stream-file/index.js +0 -1
  127. package/dist/uploads/fetchAPI-stream-file/index.js.map +1 -1
  128. package/dist/uploads/tempFile.d.ts +1 -1
  129. package/dist/uploads/tempFile.d.ts.map +1 -1
  130. package/dist/uploads/tempFile.js +0 -1
  131. package/dist/uploads/tempFile.js.map +1 -1
  132. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  133. package/dist/utilities/addLocalesToRequest.js +0 -1
  134. package/dist/utilities/addLocalesToRequest.js.map +1 -1
  135. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  136. package/dist/utilities/configToJSONSchema.js +2 -1
  137. package/dist/utilities/configToJSONSchema.js.map +1 -1
  138. package/dist/utilities/deepCopyObject.js +1 -2
  139. package/dist/utilities/deepCopyObject.js.map +1 -1
  140. package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -1
  141. package/dist/utilities/fieldSchemaToJSON.js +0 -1
  142. package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
  143. package/dist/utilities/flattenTopLevelFields.d.ts.map +1 -1
  144. package/dist/utilities/flattenTopLevelFields.js +0 -1
  145. package/dist/utilities/flattenTopLevelFields.js.map +1 -1
  146. package/dist/utilities/formatErrors.d.ts.map +1 -1
  147. package/dist/utilities/formatErrors.js +0 -1
  148. package/dist/utilities/formatErrors.js.map +1 -1
  149. package/dist/utilities/getCollectionIDFieldTypes.d.ts.map +1 -1
  150. package/dist/utilities/getCollectionIDFieldTypes.js +0 -1
  151. package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -1
  152. package/dist/utilities/getDataByPath.d.ts.map +1 -1
  153. package/dist/utilities/getDataByPath.js +0 -1
  154. package/dist/utilities/getDataByPath.js.map +1 -1
  155. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  156. package/dist/utilities/getEntityPolicies.js +3 -2
  157. package/dist/utilities/getEntityPolicies.js.map +1 -1
  158. package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
  159. package/dist/utilities/getFieldPermissions.js +2 -3
  160. package/dist/utilities/getFieldPermissions.js.map +1 -1
  161. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  162. package/dist/utilities/getObjectDotNotation.js +0 -1
  163. package/dist/utilities/getObjectDotNotation.js.map +1 -1
  164. package/dist/utilities/getSiblingData.d.ts.map +1 -1
  165. package/dist/utilities/getSiblingData.js +0 -1
  166. package/dist/utilities/getSiblingData.js.map +1 -1
  167. package/dist/utilities/getUniqueListBy.d.ts.map +1 -1
  168. package/dist/utilities/getUniqueListBy.js +0 -1
  169. package/dist/utilities/getUniqueListBy.js.map +1 -1
  170. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  171. package/dist/utilities/handleEndpoints.js +2 -2
  172. package/dist/utilities/handleEndpoints.js.map +1 -1
  173. package/dist/utilities/logError.d.ts.map +1 -1
  174. package/dist/utilities/logError.js +0 -1
  175. package/dist/utilities/logError.js.map +1 -1
  176. package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
  177. package/dist/utilities/reduceFieldsToValues.js +0 -1
  178. package/dist/utilities/reduceFieldsToValues.js.map +1 -1
  179. package/dist/utilities/sanitizeJoinParams.d.ts +1 -1
  180. package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
  181. package/dist/utilities/sanitizeJoinParams.js +2 -2
  182. package/dist/utilities/sanitizeJoinParams.js.map +1 -1
  183. package/dist/utilities/sanitizePermissions.d.ts.map +1 -1
  184. package/dist/utilities/sanitizePermissions.js +2 -2
  185. package/dist/utilities/sanitizePermissions.js.map +1 -1
  186. package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
  187. package/dist/utilities/sanitizePopulateParam.js +1 -1
  188. package/dist/utilities/sanitizePopulateParam.js.map +1 -1
  189. package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
  190. package/dist/utilities/sanitizeSelectParam.js +4 -2
  191. package/dist/utilities/sanitizeSelectParam.js.map +1 -1
  192. package/dist/utilities/telemetry/conf/envPaths.d.ts +1 -1
  193. package/dist/utilities/telemetry/conf/envPaths.d.ts.map +1 -1
  194. package/dist/utilities/telemetry/conf/envPaths.js.map +1 -1
  195. package/dist/utilities/timestamp.d.ts +1 -1
  196. package/dist/utilities/timestamp.d.ts.map +1 -1
  197. package/dist/utilities/timestamp.js +0 -1
  198. package/dist/utilities/timestamp.js.map +1 -1
  199. package/dist/utilities/traverseFields.d.ts.map +1 -1
  200. package/dist/utilities/traverseFields.js +6 -1
  201. package/dist/utilities/traverseFields.js.map +1 -1
  202. package/dist/utilities/unflatten.d.ts.map +1 -1
  203. package/dist/utilities/unflatten.js +1 -2
  204. package/dist/utilities/unflatten.js.map +1 -1
  205. package/dist/utilities/wait.d.ts +1 -1
  206. package/dist/utilities/wait.d.ts.map +1 -1
  207. package/dist/utilities/wait.js +0 -1
  208. package/dist/utilities/wait.js.map +1 -1
  209. package/dist/versions/baseFields.d.ts +2 -7
  210. package/dist/versions/baseFields.d.ts.map +1 -1
  211. package/dist/versions/baseFields.js.map +1 -1
  212. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  213. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -0
  214. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  215. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  216. package/dist/versions/getLatestGlobalVersion.js +3 -1
  217. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  218. package/dist/versions/saveVersion.js +1 -1
  219. package/dist/versions/saveVersion.js.map +1 -1
  220. package/package.json +3 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/client.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { I18nClient } from '@payloadcms/translations'\n\nimport type { StaticDescription } from '../../admin/types.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type {\n LivePreviewConfig,\n ServerOnlyLivePreviewProperties,\n StaticLabel,\n} from '../../config/types.js'\nimport type { ClientField } from '../../fields/config/client.js'\nimport type { Payload } from '../../types/index.js'\nimport type { SanitizedUploadConfig } from '../../uploads/types.js'\nimport type { SanitizedCollectionConfig } from './types.js'\n\nimport { createClientFields } from '../../fields/config/client.js'\n\nexport type ServerOnlyCollectionProperties = keyof Pick<\n SanitizedCollectionConfig,\n | 'access'\n | 'custom'\n | 'endpoints'\n | 'flattenedFields'\n | 'hooks'\n | 'indexes'\n | 'joins'\n | 'polymorphicJoins'\n | 'sanitizedIndexes'\n>\n\nexport type ServerOnlyCollectionAdminProperties = keyof Pick<\n SanitizedCollectionConfig['admin'],\n 'baseListFilter' | 'components' | 'hidden'\n>\n\nexport type ServerOnlyUploadProperties = keyof Pick<\n SanitizedCollectionConfig['upload'],\n | 'adminThumbnail'\n | 'externalFileHeaderFilter'\n | 'handlers'\n | 'modifyResponseHeaders'\n | 'withMetadata'\n>\n\nexport type ClientCollectionConfig = {\n admin: {\n description?: StaticDescription\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n preview?: boolean\n } & Omit<\n SanitizedCollectionConfig['admin'],\n | 'components'\n | 'description'\n | 'joins'\n | 'livePreview'\n | 'preview'\n | ServerOnlyCollectionAdminProperties\n >\n auth?: { verify?: true } & Omit<\n SanitizedCollectionConfig['auth'],\n 'forgotPassword' | 'strategies' | 'verify'\n >\n fields: ClientField[]\n labels: {\n plural: StaticLabel\n singular: StaticLabel\n }\n} & Omit<\n SanitizedCollectionConfig,\n 'admin' | 'auth' | 'fields' | 'labels' | ServerOnlyCollectionProperties\n>\n\nconst serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n 'custom',\n 'joins',\n 'polymorphicJoins',\n 'flattenedFields',\n 'indexes',\n 'sanitizedIndexes',\n // `upload`\n // `admin`\n // are all handled separately\n]\n\nconst serverOnlyUploadProperties: Partial<ServerOnlyUploadProperties>[] = [\n 'adminThumbnail',\n 'externalFileHeaderFilter',\n 'handlers',\n 'modifyResponseHeaders',\n 'withMetadata',\n]\n\nconst serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'hidden',\n 'baseListFilter',\n 'components',\n // 'preview' is handled separately\n // `livePreview` is handled separately\n]\n\nexport const createClientCollectionConfig = ({\n collection,\n defaultIDType,\n i18n,\n importMap,\n}: {\n collection: SanitizedCollectionConfig\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): ClientCollectionConfig => {\n const clientCollection = {} as Partial<ClientCollectionConfig>\n\n for (const key in collection) {\n if (serverOnlyCollectionProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n if (!collection.admin) {\n break\n }\n clientCollection.admin = {} as ClientCollectionConfig['admin']\n for (const adminKey in collection.admin) {\n if (serverOnlyCollectionAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if (\n typeof collection.admin.description === 'string' ||\n typeof collection.admin.description === 'object'\n ) {\n if (collection.admin.description) {\n clientCollection.admin.description = collection.admin.description\n }\n } else if (typeof collection.admin.description === 'function') {\n const description = collection.admin.description({ t: i18n.t })\n if (description) {\n clientCollection.admin.description = description\n }\n }\n break\n case 'livePreview':\n clientCollection.admin.livePreview =\n {} as ClientCollectionConfig['admin']['livePreview']\n if (collection.admin.livePreview?.breakpoints) {\n clientCollection.admin.livePreview!.breakpoints =\n collection.admin.livePreview.breakpoints\n }\n break\n case 'preview':\n if (collection.admin.preview) {\n clientCollection.admin.preview = true\n }\n break\n default:\n clientCollection.admin[adminKey] = collection.admin[adminKey]\n }\n }\n break\n case 'auth':\n if (!collection.auth) {\n break\n }\n clientCollection.auth = {} as { verify?: true } & SanitizedCollectionConfig['auth']\n if (collection.auth.cookies) {\n clientCollection.auth.cookies = collection.auth.cookies\n }\n if (collection.auth.depth !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.depth = collection.auth.depth\n }\n if (collection.auth.disableLocalStrategy) {\n clientCollection.auth.disableLocalStrategy = collection.auth.disableLocalStrategy\n }\n if (collection.auth.lockTime !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.lockTime = collection.auth.lockTime\n }\n if (collection.auth.loginWithUsername) {\n clientCollection.auth.loginWithUsername = collection.auth.loginWithUsername\n }\n if (collection.auth.maxLoginAttempts !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.maxLoginAttempts = collection.auth.maxLoginAttempts\n }\n if (collection.auth.removeTokenFromResponses) {\n clientCollection.auth.removeTokenFromResponses = collection.auth.removeTokenFromResponses\n }\n\n if (collection.auth.useAPIKey) {\n clientCollection.auth.useAPIKey = collection.auth.useAPIKey\n }\n if (collection.auth.tokenExpiration) {\n clientCollection.auth.tokenExpiration = collection.auth.tokenExpiration\n }\n if (collection.auth.verify) {\n clientCollection.auth.verify = true\n }\n break\n case 'fields':\n clientCollection.fields = createClientFields({\n defaultIDType,\n fields: collection.fields,\n i18n,\n importMap,\n })\n break\n case 'labels':\n clientCollection.labels = {\n plural:\n typeof collection.labels.plural === 'function'\n ? collection.labels.plural({ i18n, t: i18n.t })\n : collection.labels.plural,\n singular:\n typeof collection.labels.singular === 'function'\n ? collection.labels.singular({ i18n, t: i18n.t })\n : collection.labels.singular,\n }\n break\n case 'upload':\n if (!collection.upload) {\n break\n }\n clientCollection.upload = {} as SanitizedUploadConfig\n for (const uploadKey in collection.upload) {\n if (serverOnlyUploadProperties.includes(uploadKey as any)) {\n continue\n }\n if (uploadKey === 'imageSizes') {\n clientCollection.upload.imageSizes = collection.upload.imageSizes?.map((size) => {\n const sanitizedSize = { ...size }\n if ('generateImageName' in sanitizedSize) {\n delete sanitizedSize.generateImageName\n }\n return sanitizedSize\n })\n } else {\n clientCollection.upload[uploadKey] = collection.upload[uploadKey]\n }\n }\n break\n\n default:\n clientCollection[key] = collection[key]\n }\n }\n\n return clientCollection as ClientCollectionConfig\n}\n\nexport const createClientCollectionConfigs = ({\n collections,\n defaultIDType,\n i18n,\n importMap,\n}: {\n collections: SanitizedCollectionConfig[]\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): ClientCollectionConfig[] => {\n const clientCollections = new Array(collections.length)\n\n for (let i = 0; i < collections.length; i++) {\n const collection = collections[i]!\n\n clientCollections[i] = createClientCollectionConfig({\n collection,\n defaultIDType,\n i18n,\n importMap,\n })\n }\n\n return clientCollections\n}\n"],"names":["createClientFields","serverOnlyCollectionProperties","serverOnlyUploadProperties","serverOnlyCollectionAdminProperties","createClientCollectionConfig","collection","defaultIDType","i18n","importMap","clientCollection","key","includes","admin","adminKey","description","t","livePreview","breakpoints","preview","auth","cookies","depth","undefined","disableLocalStrategy","lockTime","loginWithUsername","maxLoginAttempts","removeTokenFromResponses","useAPIKey","tokenExpiration","verify","fields","labels","plural","singular","upload","uploadKey","imageSizes","map","size","sanitizedSize","generateImageName","createClientCollectionConfigs","collections","clientCollections","Array","length","i"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/config/client.ts"],"sourcesContent":["import type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport type { StaticDescription } from '../../admin/types.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type {\n LivePreviewConfig,\n ServerOnlyLivePreviewProperties,\n StaticLabel,\n} from '../../config/types.js'\nimport type { ClientField } from '../../fields/config/client.js'\nimport type { Payload } from '../../types/index.js'\nimport type { SanitizedUploadConfig } from '../../uploads/types.js'\nimport type { SanitizedCollectionConfig } from './types.js'\n\nimport { createClientFields } from '../../fields/config/client.js'\n\nexport type ServerOnlyCollectionProperties = keyof Pick<\n SanitizedCollectionConfig,\n | 'access'\n | 'custom'\n | 'endpoints'\n | 'flattenedFields'\n | 'hooks'\n | 'indexes'\n | 'joins'\n | 'polymorphicJoins'\n | 'sanitizedIndexes'\n>\n\nexport type ServerOnlyCollectionAdminProperties = keyof Pick<\n SanitizedCollectionConfig['admin'],\n 'baseListFilter' | 'components' | 'hidden'\n>\n\nexport type ServerOnlyUploadProperties = keyof Pick<\n SanitizedCollectionConfig['upload'],\n | 'adminThumbnail'\n | 'externalFileHeaderFilter'\n | 'handlers'\n | 'modifyResponseHeaders'\n | 'withMetadata'\n>\n\nexport type ClientCollectionConfig = {\n admin: {\n description?: StaticDescription\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n preview?: boolean\n } & Omit<\n SanitizedCollectionConfig['admin'],\n | 'components'\n | 'description'\n | 'joins'\n | 'livePreview'\n | 'preview'\n | ServerOnlyCollectionAdminProperties\n >\n auth?: { verify?: true } & Omit<\n SanitizedCollectionConfig['auth'],\n 'forgotPassword' | 'strategies' | 'verify'\n >\n fields: ClientField[]\n labels: {\n plural: StaticLabel\n singular: StaticLabel\n }\n} & Omit<\n SanitizedCollectionConfig,\n 'admin' | 'auth' | 'fields' | 'labels' | ServerOnlyCollectionProperties\n>\n\nconst serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n 'custom',\n 'joins',\n 'polymorphicJoins',\n 'flattenedFields',\n 'indexes',\n 'sanitizedIndexes',\n // `upload`\n // `admin`\n // are all handled separately\n]\n\nconst serverOnlyUploadProperties: Partial<ServerOnlyUploadProperties>[] = [\n 'adminThumbnail',\n 'externalFileHeaderFilter',\n 'handlers',\n 'modifyResponseHeaders',\n 'withMetadata',\n]\n\nconst serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'hidden',\n 'baseListFilter',\n 'components',\n // 'preview' is handled separately\n // `livePreview` is handled separately\n]\n\nexport const createClientCollectionConfig = ({\n collection,\n defaultIDType,\n i18n,\n importMap,\n}: {\n collection: SanitizedCollectionConfig\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): ClientCollectionConfig => {\n const clientCollection = {} as Partial<ClientCollectionConfig>\n\n for (const key in collection) {\n if (serverOnlyCollectionProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n if (!collection.admin) {\n break\n }\n clientCollection.admin = {} as ClientCollectionConfig['admin']\n for (const adminKey in collection.admin) {\n if (serverOnlyCollectionAdminProperties.includes(adminKey as any)) {\n continue\n }\n\n switch (adminKey) {\n case 'description':\n if (\n typeof collection.admin.description === 'string' ||\n typeof collection.admin.description === 'object'\n ) {\n if (collection.admin.description) {\n clientCollection.admin.description = collection.admin.description\n }\n } else if (typeof collection.admin.description === 'function') {\n const description = collection.admin.description({ t: i18n.t as TFunction })\n if (description) {\n clientCollection.admin.description = description\n }\n }\n break\n case 'livePreview':\n clientCollection.admin.livePreview =\n {} as ClientCollectionConfig['admin']['livePreview']\n if (collection.admin.livePreview?.breakpoints) {\n clientCollection.admin.livePreview!.breakpoints =\n collection.admin.livePreview.breakpoints\n }\n break\n case 'preview':\n if (collection.admin.preview) {\n clientCollection.admin.preview = true\n }\n break\n default:\n ;(clientCollection as any).admin[adminKey] =\n collection.admin[adminKey as keyof SanitizedCollectionConfig['admin']]\n }\n }\n break\n case 'auth':\n if (!collection.auth) {\n break\n }\n clientCollection.auth = {} as { verify?: true } & SanitizedCollectionConfig['auth']\n if (collection.auth.cookies) {\n clientCollection.auth.cookies = collection.auth.cookies\n }\n if (collection.auth.depth !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.depth = collection.auth.depth\n }\n if (collection.auth.disableLocalStrategy) {\n clientCollection.auth.disableLocalStrategy = collection.auth.disableLocalStrategy\n }\n if (collection.auth.lockTime !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.lockTime = collection.auth.lockTime\n }\n if (collection.auth.loginWithUsername) {\n clientCollection.auth.loginWithUsername = collection.auth.loginWithUsername\n }\n if (collection.auth.maxLoginAttempts !== undefined) {\n // Check for undefined as it can be a number (0)\n clientCollection.auth.maxLoginAttempts = collection.auth.maxLoginAttempts\n }\n if (collection.auth.removeTokenFromResponses) {\n clientCollection.auth.removeTokenFromResponses = collection.auth.removeTokenFromResponses\n }\n\n if (collection.auth.useAPIKey) {\n clientCollection.auth.useAPIKey = collection.auth.useAPIKey\n }\n if (collection.auth.tokenExpiration) {\n clientCollection.auth.tokenExpiration = collection.auth.tokenExpiration\n }\n if (collection.auth.verify) {\n clientCollection.auth.verify = true\n }\n break\n case 'fields':\n clientCollection.fields = createClientFields({\n defaultIDType,\n fields: collection.fields,\n i18n,\n importMap,\n })\n break\n case 'labels':\n clientCollection.labels = {\n plural:\n typeof collection.labels.plural === 'function'\n ? collection.labels.plural({ i18n, t: i18n.t as TFunction })\n : collection.labels.plural,\n singular:\n typeof collection.labels.singular === 'function'\n ? collection.labels.singular({ i18n, t: i18n.t as TFunction })\n : collection.labels.singular,\n }\n break\n case 'upload':\n if (!collection.upload) {\n break\n }\n clientCollection.upload = {} as SanitizedUploadConfig\n for (const uploadKey in collection.upload) {\n if (serverOnlyUploadProperties.includes(uploadKey as any)) {\n continue\n }\n if (uploadKey === 'imageSizes') {\n clientCollection.upload.imageSizes = collection.upload.imageSizes?.map((size) => {\n const sanitizedSize = { ...size }\n if ('generateImageName' in sanitizedSize) {\n delete sanitizedSize.generateImageName\n }\n return sanitizedSize\n })\n } else {\n ;(clientCollection.upload as any)[uploadKey] =\n collection.upload[uploadKey as keyof SanitizedUploadConfig]\n }\n }\n break\n\n default:\n ;(clientCollection as any)[key] = collection[key as keyof SanitizedCollectionConfig]\n }\n }\n\n return clientCollection as ClientCollectionConfig\n}\n\nexport const createClientCollectionConfigs = ({\n collections,\n defaultIDType,\n i18n,\n importMap,\n}: {\n collections: SanitizedCollectionConfig[]\n defaultIDType: Payload['config']['db']['defaultIDType']\n i18n: I18nClient\n importMap: ImportMap\n}): ClientCollectionConfig[] => {\n const clientCollections = new Array(collections.length)\n\n for (let i = 0; i < collections.length; i++) {\n const collection = collections[i]!\n\n clientCollections[i] = createClientCollectionConfig({\n collection,\n defaultIDType,\n i18n,\n importMap,\n })\n }\n\n return clientCollections\n}\n"],"names":["createClientFields","serverOnlyCollectionProperties","serverOnlyUploadProperties","serverOnlyCollectionAdminProperties","createClientCollectionConfig","collection","defaultIDType","i18n","importMap","clientCollection","key","includes","admin","adminKey","description","t","livePreview","breakpoints","preview","auth","cookies","depth","undefined","disableLocalStrategy","lockTime","loginWithUsername","maxLoginAttempts","removeTokenFromResponses","useAPIKey","tokenExpiration","verify","fields","labels","plural","singular","upload","uploadKey","imageSizes","map","size","sanitizedSize","generateImageName","createClientCollectionConfigs","collections","clientCollections","Array","length","i"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataloader.d.ts","sourceRoot":"","sources":["../../src/collections/dataloader.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAA;AAGnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AA0JnD,eAAO,MAAM,aAAa,QAAS,cAAc;;0CAgBhD,CAAA;AA4CD,KAAK,kBAAkB,GAAG;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAA;CAC1D,CAAA;AACD,eAAO,MAAM,wBAAwB,sJAalC,kBAAkB,KAAG,MAcpB,CAAA"}
1
+ {"version":3,"file":"dataloader.d.ts","sourceRoot":"","sources":["../../src/collections/dataloader.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,YAAY,CAAA;AAGnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AA0JnD,eAAO,MAAM,aAAa,QAAS,cAAc;;0CAgBhD,CAAA;AA4CD,KAAK,kBAAkB,GAAG;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAA;CAC1D,CAAA;AACD,eAAO,MAAM,wBAAwB,sJAalC,kBAAkB,KAAG,MAcpB,CAAA"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import DataLoader from 'dataloader';
3
2
  import { isValidID } from '../utilities/isValidID.js';
4
3
  // Payload uses `dataloader` to solve the classic GraphQL N+1 problem.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collections/dataloader.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { BatchLoadFn } from 'dataloader'\n\nimport DataLoader from 'dataloader'\n\nimport type { FindArgs } from '../database/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../types/index.js'\nimport type { TypeWithID } from './config/types.js'\nimport type { Options } from './operations/local/find.js'\n\nimport { isValidID } from '../utilities/isValidID.js'\n\n// Payload uses `dataloader` to solve the classic GraphQL N+1 problem.\n\n// We keep a list of all documents requested to be populated for any given request\n// and then batch together documents within the same collection,\n// making only 1 find per each collection, rather than `findByID` per each requested doc.\n\n// This dramatically improves performance for REST and Local API `depth` populations,\n// and also ensures complex GraphQL queries perform lightning-fast.\n\nconst batchAndLoadDocs =\n (req: PayloadRequest): BatchLoadFn<string, TypeWithID> =>\n async (keys: string[]): Promise<TypeWithID[]> => {\n const { payload } = req\n\n // Create docs array of same length as keys, using null as value\n // We will replace nulls with injected docs as they are retrieved\n const docs: (null | TypeWithID)[] = keys.map(() => null)\n\n /**\n * Batch IDs by their `find` args\n * so we can make one find query per combination of collection, depth, locale, and fallbackLocale.\n *\n * Resulting shape will be as follows:\n {\n // key is stringified set of find args\n '[null,\"pages\",2,0,\"es\",\"en\",false,false]': [\n // value is array of IDs to find with these args\n 'q34tl23462346234524',\n '435523540194324280',\n '2346245j35l3j5234532li',\n ],\n // etc\n };\n *\n **/\n\n const batchByFindArgs = {}\n\n for (const key of keys) {\n const [\n transactionID,\n collection,\n id,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ] = JSON.parse(key)\n\n const batchKeyArray = [\n transactionID,\n collection,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ]\n\n const batchKey = JSON.stringify(batchKeyArray)\n\n const idType = payload.collections?.[collection]?.customIDType || payload.db.defaultIDType\n const sanitizedID = idType === 'number' ? parseFloat(id) : id\n\n if (isValidID(sanitizedID, idType)) {\n batchByFindArgs[batchKey] = [...(batchByFindArgs[batchKey] || []), sanitizedID]\n }\n }\n\n // Run find requests one after another, so as to not hang transactions\n\n for (const [batchKey, ids] of Object.entries(batchByFindArgs)) {\n const [\n transactionID,\n collection,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ] = JSON.parse(batchKey)\n\n req.transactionID = transactionID\n\n const result = await payload.find({\n collection,\n currentDepth,\n depth,\n disableErrors: true,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: Boolean(overrideAccess),\n pagination: false,\n populate,\n req,\n select,\n showHiddenFields: Boolean(showHiddenFields),\n where: {\n id: {\n in: ids,\n },\n },\n })\n\n // For each returned doc, find index in original keys\n // Inject doc within docs array if index exists\n for (const doc of result.docs) {\n const docKey = createDataloaderCacheKey({\n collectionSlug: collection,\n currentDepth,\n depth,\n docID: doc.id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n populate,\n select,\n showHiddenFields,\n transactionID: req.transactionID!,\n })\n const docsIndex = keys.findIndex((key) => key === docKey)\n\n if (docsIndex > -1) {\n docs[docsIndex] = doc\n }\n }\n }\n\n // Return docs array,\n // which has now been injected with all fetched docs\n // and should match the length of the incoming keys arg\n return docs as TypeWithID[]\n }\n\nexport const getDataLoader = (req: PayloadRequest) => {\n const findQueries = new Map()\n const dataLoader = new DataLoader(batchAndLoadDocs(req)) as PayloadRequest['payloadDataLoader']\n\n dataLoader.find = ((args: FindArgs) => {\n const key = createFindDataloaderCacheKey(args)\n const cached = findQueries.get(key)\n if (cached) {\n return cached\n }\n const request = req.payload.find(args)\n findQueries.set(key, request)\n return request\n }) as Payload['find']\n\n return dataLoader\n}\n\nconst createFindDataloaderCacheKey = ({\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination,\n populate,\n req,\n select,\n showHiddenFields,\n sort,\n where,\n}: Options<string, SelectType>): string =>\n JSON.stringify([\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination,\n populate,\n req?.locale,\n req?.fallbackLocale,\n req?.user?.id,\n req?.transactionID,\n select,\n showHiddenFields,\n sort,\n where,\n ])\n\ntype CreateCacheKeyArgs = {\n collectionSlug: string\n currentDepth: number\n depth: number\n docID: number | string\n draft: boolean\n fallbackLocale: string\n locale: string\n overrideAccess: boolean\n populate?: PopulateType\n select?: SelectType\n showHiddenFields: boolean\n transactionID: number | Promise<number | string> | string\n}\nexport const createDataloaderCacheKey = ({\n collectionSlug,\n currentDepth,\n depth,\n docID,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n populate,\n select,\n showHiddenFields,\n transactionID,\n}: CreateCacheKeyArgs): string =>\n JSON.stringify([\n transactionID,\n collectionSlug,\n docID,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ])\n"],"names":["DataLoader","isValidID","batchAndLoadDocs","req","keys","payload","docs","map","batchByFindArgs","key","transactionID","collection","id","depth","currentDepth","locale","fallbackLocale","overrideAccess","showHiddenFields","draft","select","populate","JSON","parse","batchKeyArray","batchKey","stringify","idType","collections","customIDType","db","defaultIDType","sanitizedID","parseFloat","ids","Object","entries","result","find","disableErrors","Boolean","pagination","where","in","doc","docKey","createDataloaderCacheKey","collectionSlug","docID","docsIndex","findIndex","getDataLoader","findQueries","Map","dataLoader","args","createFindDataloaderCacheKey","cached","get","request","set","includeLockStatus","joins","limit","page","sort","user"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/collections/dataloader.ts"],"sourcesContent":["import type { BatchLoadFn } from 'dataloader'\n\nimport DataLoader from 'dataloader'\n\nimport type { FindArgs } from '../database/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../types/index.js'\nimport type { TypeWithID } from './config/types.js'\nimport type { Options } from './operations/local/find.js'\n\nimport { isValidID } from '../utilities/isValidID.js'\n\n// Payload uses `dataloader` to solve the classic GraphQL N+1 problem.\n\n// We keep a list of all documents requested to be populated for any given request\n// and then batch together documents within the same collection,\n// making only 1 find per each collection, rather than `findByID` per each requested doc.\n\n// This dramatically improves performance for REST and Local API `depth` populations,\n// and also ensures complex GraphQL queries perform lightning-fast.\n\nconst batchAndLoadDocs =\n (req: PayloadRequest): BatchLoadFn<string, TypeWithID> =>\n async (keys: readonly string[]): Promise<TypeWithID[]> => {\n const { payload } = req\n\n // Create docs array of same length as keys, using null as value\n // We will replace nulls with injected docs as they are retrieved\n const docs: (null | TypeWithID)[] = keys.map(() => null)\n\n /**\n * Batch IDs by their `find` args\n * so we can make one find query per combination of collection, depth, locale, and fallbackLocale.\n *\n * Resulting shape will be as follows:\n {\n // key is stringified set of find args\n '[null,\"pages\",2,0,\"es\",\"en\",false,false]': [\n // value is array of IDs to find with these args\n 'q34tl23462346234524',\n '435523540194324280',\n '2346245j35l3j5234532li',\n ],\n // etc\n };\n *\n **/\n\n const batchByFindArgs: Record<string, string[]> = {}\n\n for (const key of keys) {\n const [\n transactionID,\n collection,\n id,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ] = JSON.parse(key)\n\n const batchKeyArray = [\n transactionID,\n collection,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ]\n\n const batchKey = JSON.stringify(batchKeyArray)\n\n const idType = payload.collections?.[collection]?.customIDType || payload.db.defaultIDType\n const sanitizedID = idType === 'number' ? parseFloat(id) : id\n\n if (isValidID(sanitizedID, idType)) {\n batchByFindArgs[batchKey] = [...(batchByFindArgs[batchKey] || []), sanitizedID]\n }\n }\n\n // Run find requests one after another, so as to not hang transactions\n\n for (const [batchKey, ids] of Object.entries(batchByFindArgs)) {\n const [\n transactionID,\n collection,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ] = JSON.parse(batchKey)\n\n req.transactionID = transactionID\n\n const result = await payload.find({\n collection,\n currentDepth,\n depth,\n disableErrors: true,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: Boolean(overrideAccess),\n pagination: false,\n populate,\n req,\n select,\n showHiddenFields: Boolean(showHiddenFields),\n where: {\n id: {\n in: ids,\n },\n },\n })\n\n // For each returned doc, find index in original keys\n // Inject doc within docs array if index exists\n for (const doc of result.docs) {\n const docKey = createDataloaderCacheKey({\n collectionSlug: collection,\n currentDepth,\n depth,\n docID: doc.id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n populate,\n select,\n showHiddenFields,\n transactionID: req.transactionID!,\n })\n const docsIndex = keys.findIndex((key) => key === docKey)\n\n if (docsIndex > -1) {\n docs[docsIndex] = doc\n }\n }\n }\n\n // Return docs array,\n // which has now been injected with all fetched docs\n // and should match the length of the incoming keys arg\n return docs as TypeWithID[]\n }\n\nexport const getDataLoader = (req: PayloadRequest) => {\n const findQueries = new Map()\n const dataLoader = new DataLoader(batchAndLoadDocs(req)) as PayloadRequest['payloadDataLoader']\n\n dataLoader.find = ((args: FindArgs) => {\n const key = createFindDataloaderCacheKey(args)\n const cached = findQueries.get(key)\n if (cached) {\n return cached\n }\n const request = req.payload.find(args)\n findQueries.set(key, request)\n return request\n }) as Payload['find']\n\n return dataLoader\n}\n\nconst createFindDataloaderCacheKey = ({\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination,\n populate,\n req,\n select,\n showHiddenFields,\n sort,\n where,\n}: Options<string, SelectType>): string =>\n JSON.stringify([\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination,\n populate,\n req?.locale,\n req?.fallbackLocale,\n req?.user?.id,\n req?.transactionID,\n select,\n showHiddenFields,\n sort,\n where,\n ])\n\ntype CreateCacheKeyArgs = {\n collectionSlug: string\n currentDepth: number\n depth: number\n docID: number | string\n draft: boolean\n fallbackLocale: string\n locale: string\n overrideAccess: boolean\n populate?: PopulateType\n select?: SelectType\n showHiddenFields: boolean\n transactionID: number | Promise<number | string> | string\n}\nexport const createDataloaderCacheKey = ({\n collectionSlug,\n currentDepth,\n depth,\n docID,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n populate,\n select,\n showHiddenFields,\n transactionID,\n}: CreateCacheKeyArgs): string =>\n JSON.stringify([\n transactionID,\n collectionSlug,\n docID,\n depth,\n currentDepth,\n locale,\n fallbackLocale,\n overrideAccess,\n showHiddenFields,\n draft,\n select,\n populate,\n ])\n"],"names":["DataLoader","isValidID","batchAndLoadDocs","req","keys","payload","docs","map","batchByFindArgs","key","transactionID","collection","id","depth","currentDepth","locale","fallbackLocale","overrideAccess","showHiddenFields","draft","select","populate","JSON","parse","batchKeyArray","batchKey","stringify","idType","collections","customIDType","db","defaultIDType","sanitizedID","parseFloat","ids","Object","entries","result","find","disableErrors","Boolean","pagination","where","in","doc","docKey","createDataloaderCacheKey","collectionSlug","docID","docsIndex","findIndex","getDataLoader","findQueries","Map","dataLoader","args","createFindDataloaderCacheKey","cached","get","request","set","includeLockStatus","joins","limit","page","sort","user"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAkB3B,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CA8Q7C,CAAA"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAkB3B,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CA8Q7C,CAAA"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import { status as httpStatus } from 'http-status';
3
2
  import executeAccess from '../../auth/executeAccess.js';
4
3
  import { combineQueries } from '../../database/combineQueries.js';
@@ -191,7 +190,7 @@ export const deleteOperation = async (incomingArgs)=>{
191
190
  } catch (error) {
192
191
  errors.push({
193
192
  id: doc.id,
194
- message: error.message
193
+ message: error instanceof Error ? error.message : 'Unknown error'
195
194
  });
196
195
  }
197
196
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["// @ts-strict-ignore\nimport { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n where: Where\n}\n\nexport const deleteOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'delete',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to delete.\", httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.delete)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResult!)\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const { docs } = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n select,\n where: fullWhere,\n })\n\n const errors: { id: number | string; message: string }[] = []\n\n const promises = docs.map(async (doc) => {\n let result\n\n const { id } = doc\n\n try {\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (collectionConfig.versions?.drafts && collectionConfig.versions.drafts.schedulePublish) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n await payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n returning: false,\n where: {\n id: {\n equals: id,\n },\n },\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result || doc,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result || doc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n\n return result\n } catch (error) {\n errors.push({\n id: doc.id,\n message: error.message,\n })\n }\n return null\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: docs.map(({ id }) => id),\n payload,\n req,\n })\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'delete',\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","checkDocumentLockStatus","commitTransaction","initTransaction","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","deleteOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","collectionConfig","depth","overrideAccess","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","where","BAD_REQUEST","accessResult","access","delete","fullWhere","fields","flattenedFields","forceSelect","docs","db","find","slug","errors","promises","map","doc","result","id","collectionSlug","lockErrorMessage","beforeDelete","overrideDelete","versions","drafts","schedulePublish","deleteOne","returning","equals","draft","undefined","global","afterDelete","error","push","message","awaitedDocs","Promise","all","ids","filter","Boolean"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n where: Where\n}\n\nexport const deleteOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'delete',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to delete.\", httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.delete)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResult!)\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const { docs } = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n select,\n where: fullWhere,\n })\n\n const errors: { id: number | string; message: string }[] = []\n\n const promises = docs.map(async (doc) => {\n let result\n\n const { id } = doc\n\n try {\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (collectionConfig.versions?.drafts && collectionConfig.versions.drafts.schedulePublish) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n await payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n returning: false,\n where: {\n id: {\n equals: id,\n },\n },\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result || doc,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result || doc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n\n return result\n } catch (error) {\n errors.push({\n id: doc.id,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: docs.map(({ id }) => id),\n payload,\n req,\n })\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'delete',\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","checkDocumentLockStatus","commitTransaction","initTransaction","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","deleteOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","collectionConfig","depth","overrideAccess","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","where","BAD_REQUEST","accessResult","access","delete","fullWhere","fields","flattenedFields","forceSelect","docs","db","find","slug","errors","promises","map","doc","result","id","collectionSlug","lockErrorMessage","beforeDelete","overrideDelete","versions","drafts","schedulePublish","deleteOne","returning","equals","draft","undefined","global","afterDelete","error","push","message","Error","awaitedDocs","Promise","all","ids","filter","Boolean"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import executeAccess from '../../auth/executeAccess.js';
3
2
  import { combineQueries } from '../../database/combineQueries.js';
4
3
  import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults\n\n if (!overrideAccess) {\n accessResults = await executeAccess({ req }, collectionConfig.access.readVersions)\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n const fullWhere = combineQueries(where!, accessResults)\n\n const select = sanitizeSelect({\n fields: buildVersionCollectionFields(payload.config, collectionConfig, true),\n forceSelect: getQueryDraftsSelect({ select: collectionConfig.forceSelect }),\n select: incomingSelect,\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: limit ?? 10,\n locale: locale!,\n page: page || 1,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n const result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","afterRead","killTransaction","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","getQueryDraftsSelect","findVersionsOperation","args","collection","config","collectionConfig","depth","limit","overrideAccess","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","where","req","fallbackLocale","locale","payload","accessResults","access","readVersions","versionFields","fullWhere","fields","forceSelect","versions","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n try {\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults!: AccessResult\n\n if (!overrideAccess) {\n accessResults = await executeAccess({ req }, collectionConfig.access.readVersions)\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n const fullWhere = combineQueries(where!, accessResults)\n\n const select = sanitizeSelect({\n fields: buildVersionCollectionFields(payload.config, collectionConfig, true),\n forceSelect: getQueryDraftsSelect({ select: collectionConfig.forceSelect }),\n select: incomingSelect,\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: limit ?? 10,\n locale: locale!,\n page: page || 1,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n const result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","afterRead","killTransaction","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","getQueryDraftsSelect","findVersionsOperation","args","collection","config","collectionConfig","depth","limit","overrideAccess","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","where","req","fallbackLocale","locale","payload","accessResults","access","readVersions","versionFields","fullWhere","fields","forceSelect","versions","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,gBAAgB,CAAA;AAc1E,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAsN7C,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,gBAAgB,CAAA;AAc1E,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAwN7C,CAAA"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import { status as httpStatus } from 'http-status';
3
2
  import executeAccess from '../../auth/executeAccess.js';
4
3
  import { combineQueries } from '../../database/combineQueries.js';
@@ -149,7 +148,7 @@ export const updateOperation = async (incomingArgs)=>{
149
148
  } catch (error) {
150
149
  errors.push({
151
150
  id,
152
- message: error.message
151
+ message: error instanceof Error ? error.message : 'Unknown error'
153
152
  });
154
153
  }
155
154
  return null;
@@ -171,11 +170,13 @@ export const updateOperation = async (incomingArgs)=>{
171
170
  args,
172
171
  collection: collectionConfig,
173
172
  operation: 'update',
173
+ // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
174
174
  result
175
175
  });
176
176
  if (shouldCommit) {
177
177
  await commitTransaction(req);
178
178
  }
179
+ // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
179
180
  return result;
180
181
  } catch (error) {
181
182
  await killTransaction(args.req);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n where: Where\n}\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'update',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.update)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const fullWhere = combineQueries(where, accessResult!)\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n let docs\n\n if (collectionConfig.versions?.drafts && shouldSaveDraft) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const errors: { id: number | string; message: string }[] = []\n\n const promises = docs.map(async (docWithLocales) => {\n const { id } = docWithLocales\n\n try {\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n const updatedDoc = await updateDocument({\n id,\n accessResults: accessResult,\n autosave: false,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(data),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n })\n\n return updatedDoc\n } catch (error) {\n errors.push({\n id,\n message: error.message,\n })\n }\n return null\n })\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","APIError","deepCopyObjectSimple","generateFileData","unlinkTempFiles","commitTransaction","initTransaction","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","sanitizeSortQuery","updateDocument","buildAfterOperation","updateOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","collectionConfig","depth","draft","draftArg","limit","overrideAccess","overrideLock","overwriteExistingFiles","populate","publishSpecificLocale","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","versions","drafts","accessResult","access","update","fullWhere","fields","flattenedFields","docs","versionsWhere","versionFields","query","db","queryDrafts","slug","pagination","find","files","filesToUpload","throwOnMissingFile","errors","promises","map","docWithLocales","id","forceSelect","updatedDoc","accessResults","autosave","error","push","message","awaitedDocs","Promise","all","result","filter"],"mappings":"AAAA,oBAAoB;AAGpB,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAYlD,OAAOC,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAA8BC,oBAAoB,QAAQ,iBAAgB;AAC1E,SAASC,gBAAgB,QAAQ,oCAAmC;AACpE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,uBAAuB,QAAQ,mDAAkD;AAC1F,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,mBAAmB,QAAQ,aAAY;AA2BhD,OAAO,MAAMC,kBAAkB,OAI7BC;IAEA,IAAIC,OAAOD;IAEX,IAAI;QACF,MAAME,eAAe,CAACD,KAAKE,kBAAkB,IAAK,MAAMb,gBAAgBW,KAAKG,GAAG;QAEhF,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExC,IAAIH,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,EAAEC,iBAAiBC,QAAQ;YACzD,KAAK,MAAMC,QAAQT,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,CAACC,eAAe,CAAE;gBAC/DP,OACE,AAAC,MAAMS,KAAK;oBACVT;oBACAI,YAAYJ,KAAKI,UAAU,CAACC,MAAM;oBAClCK,SAASV,KAAKG,GAAG,CAACO,OAAO;oBACzBC,WAAW;oBACXR,KAAKH,KAAKG,GAAG;gBACf,MAAOH;YACX;QACF;QAEA,MAAM,EACJI,YAAY,EAAEC,QAAQO,gBAAgB,EAAE,EACxCR,UAAU,EACVS,KAAK,EACLC,OAAOC,WAAW,KAAK,EACvBC,QAAQ,CAAC,EACTC,cAAc,EACdC,YAAY,EACZC,yBAAyB,KAAK,EAC9BC,QAAQ,EACRC,qBAAqB,EACrBlB,KAAK,EACHmB,cAAc,EACdC,MAAM,EACNC,SAAS,EAAEnB,MAAM,EAAE,EACnBmB,OAAO,EACR,EACDrB,GAAG,EACHsB,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,MAAMC,YAAY,EAClBC,KAAK,EACN,GAAG9B;QAEJ,IAAI,CAAC8B,OAAO;YACV,MAAM,IAAI9C,SAAS,iDAAiDJ,WAAWmD,WAAW;QAC5F;QAEA,MAAM,EAAEC,MAAMC,cAAc,EAAE,GAAGjC;QACjC,MAAMkC,kBAAkBC,QAAQpB,YAAYH,iBAAiBwB,QAAQ,CAACC,MAAM;QAE5E,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIC;QACJ,IAAI,CAACrB,gBAAgB;YACnBqB,eAAe,MAAMzD,cAAc;gBAAEsB;YAAI,GAAGS,iBAAiB2B,MAAM,CAACC,MAAM;QAC5E;QAEA,MAAMzD,mBAAmB;YACvB6B;YACAK,gBAAgBA;YAChBd;YACA2B;QACF;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,MAAMW,YAAY3D,eAAegD,OAAOQ;QAExC,MAAMV,OAAOjC,kBAAkB;YAC7B+C,QAAQtC,WAAWC,MAAM,CAACsC,eAAe;YACzCf,MAAMC;QACR;QAEA,IAAIe;QAEJ,IAAIhC,iBAAiBwB,QAAQ,EAAEC,UAAUH,iBAAiB;YACxD,MAAMW,gBAAgBpD,wBAAwBgD;YAE9C,MAAM1D,mBAAmB;gBACvB6B,kBAAkBR,WAAWC,MAAM;gBACnCY,gBAAgBA;gBAChBd;gBACA2C,eAAetD,6BAA6BgC,QAAQnB,MAAM,EAAED,WAAWC,MAAM,EAAE;gBAC/EyB,OAAOrC,wBAAwBqC;YACjC;YAEA,MAAMiB,QAAQ,MAAMvB,QAAQwB,EAAE,CAACC,WAAW,CAAgC;gBACxE7C,YAAYQ,iBAAiBsC,IAAI;gBACjClC;gBACAO,QAAQA;gBACR4B,YAAY;gBACZhD;gBACAyB,MAAMlC,mBAAmB;oBAAEkB;oBAAkBgB;gBAAK;gBAClDE,OAAOe;YACT;YAEAD,OAAOG,MAAMH,IAAI;QACnB,OAAO;YACL,MAAMG,QAAQ,MAAMvB,QAAQwB,EAAE,CAACI,IAAI,CAAC;gBAClChD,YAAYQ,iBAAiBsC,IAAI;gBACjClC;gBACAO,QAAQA;gBACR4B,YAAY;gBACZhD;gBACAyB;gBACAE,OAAOW;YACT;YAEAG,OAAOG,MAAMH,IAAI;QACnB;QAEA,wCAAwC;QACxC,wCAAwC;QACxC,wCAAwC;QAExC,MAAM,EAAEZ,IAAI,EAAEqB,OAAOC,aAAa,EAAE,GAAG,MAAMpE,iBAAiB;YAC5DkB;YACAC;YACA2B,MAAMC;YACNtB,WAAW;YACXQ;YACAhB;YACAoD,oBAAoB;QACtB;QAEA,MAAMC,SAAqD,EAAE;QAE7D,MAAMC,WAAWb,KAAKc,GAAG,CAAC,OAAOC;YAC/B,MAAM,EAAEC,EAAE,EAAE,GAAGD;YAEf,IAAI;gBACF,MAAMlC,SAASlC,eAAe;oBAC5BmD,QAAQ9B,iBAAiB+B,eAAe;oBACxCkB,aAAajD,iBAAiBiD,WAAW;oBACzCpC,QAAQC;gBACV;gBAEA,kDAAkD;gBAClD,iDAAiD;gBACjD,kDAAkD;gBAClD,MAAMoC,aAAa,MAAMlE,eAAe;oBACtCgE;oBACAG,eAAezB;oBACf0B,UAAU;oBACVpD;oBACAP;oBACA2B,MAAM/C,qBAAqB+C;oBAC3BnB,OAAOA;oBACP8C;oBACA5C;oBACAO,gBAAgBA;oBAChBgC;oBACA/B,QAAQA;oBACRN,gBAAgBA;oBAChBC,cAAcA;oBACdM;oBACAJ;oBACAC;oBACAlB;oBACAsB,QAAQA;oBACRE,kBAAkBA;gBACpB;gBAEA,OAAOmC;YACT,EAAE,OAAOG,OAAO;gBACdT,OAAOU,IAAI,CAAC;oBACVN;oBACAO,SAASF,MAAME,OAAO;gBACxB;YACF;YACA,OAAO;QACT;QAEA,MAAMhF,gBAAgB;YACpByB;YACAP;YACAF;QACF;QAEA,MAAMiE,cAAc,MAAMC,QAAQC,GAAG,CAACb;QAEtC,IAAIc,SAAS;YACX3B,MAAMwB,YAAYI,MAAM,CAACrC;YACzBqB;QACF;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExCe,SAAS,MAAM1E,oBAAoB;YACjCG;YACAI,YAAYQ;YACZD,WAAW;YACX4D;QACF;QAEA,IAAItE,cAAc;YAChB,MAAMb,kBAAkBe;QAC1B;QAEA,OAAOoE;IACT,EAAE,OAAON,OAAgB;QACvB,MAAM3E,gBAAgBU,KAAKG,GAAG;QAC9B,MAAM8D;IACR;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n where: Where\n}\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'update',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.update)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const fullWhere = combineQueries(where, accessResult!)\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n let docs\n\n if (collectionConfig.versions?.drafts && shouldSaveDraft) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const errors: { id: number | string; message: string }[] = []\n\n const promises = docs.map(async (docWithLocales) => {\n const { id } = docWithLocales\n\n try {\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n const updatedDoc = await updateDocument({\n id,\n accessResults: accessResult,\n autosave: false,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(data),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n })\n\n return updatedDoc\n } catch (error) {\n errors.push({\n id,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","APIError","deepCopyObjectSimple","generateFileData","unlinkTempFiles","commitTransaction","initTransaction","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","sanitizeSortQuery","updateDocument","buildAfterOperation","updateOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","collectionConfig","depth","draft","draftArg","limit","overrideAccess","overrideLock","overwriteExistingFiles","populate","publishSpecificLocale","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","versions","drafts","accessResult","access","update","fullWhere","fields","flattenedFields","docs","versionsWhere","versionFields","query","db","queryDrafts","slug","pagination","find","files","filesToUpload","throwOnMissingFile","errors","promises","map","docWithLocales","id","forceSelect","updatedDoc","accessResults","autosave","error","push","message","Error","awaitedDocs","Promise","all","result","filter"],"mappings":"AAEA,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAYlD,OAAOC,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAA8BC,oBAAoB,QAAQ,iBAAgB;AAC1E,SAASC,gBAAgB,QAAQ,oCAAmC;AACpE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,uBAAuB,QAAQ,mDAAkD;AAC1F,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,mBAAmB,QAAQ,aAAY;AA2BhD,OAAO,MAAMC,kBAAkB,OAI7BC;IAEA,IAAIC,OAAOD;IAEX,IAAI;QACF,MAAME,eAAe,CAACD,KAAKE,kBAAkB,IAAK,MAAMb,gBAAgBW,KAAKG,GAAG;QAEhF,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExC,IAAIH,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,EAAEC,iBAAiBC,QAAQ;YACzD,KAAK,MAAMC,QAAQT,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,CAACC,eAAe,CAAE;gBAC/DP,OACE,AAAC,MAAMS,KAAK;oBACVT;oBACAI,YAAYJ,KAAKI,UAAU,CAACC,MAAM;oBAClCK,SAASV,KAAKG,GAAG,CAACO,OAAO;oBACzBC,WAAW;oBACXR,KAAKH,KAAKG,GAAG;gBACf,MAAOH;YACX;QACF;QAEA,MAAM,EACJI,YAAY,EAAEC,QAAQO,gBAAgB,EAAE,EACxCR,UAAU,EACVS,KAAK,EACLC,OAAOC,WAAW,KAAK,EACvBC,QAAQ,CAAC,EACTC,cAAc,EACdC,YAAY,EACZC,yBAAyB,KAAK,EAC9BC,QAAQ,EACRC,qBAAqB,EACrBlB,KAAK,EACHmB,cAAc,EACdC,MAAM,EACNC,SAAS,EAAEnB,MAAM,EAAE,EACnBmB,OAAO,EACR,EACDrB,GAAG,EACHsB,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,MAAMC,YAAY,EAClBC,KAAK,EACN,GAAG9B;QAEJ,IAAI,CAAC8B,OAAO;YACV,MAAM,IAAI9C,SAAS,iDAAiDJ,WAAWmD,WAAW;QAC5F;QAEA,MAAM,EAAEC,MAAMC,cAAc,EAAE,GAAGjC;QACjC,MAAMkC,kBAAkBC,QAAQpB,YAAYH,iBAAiBwB,QAAQ,CAACC,MAAM;QAE5E,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIC;QACJ,IAAI,CAACrB,gBAAgB;YACnBqB,eAAe,MAAMzD,cAAc;gBAAEsB;YAAI,GAAGS,iBAAiB2B,MAAM,CAACC,MAAM;QAC5E;QAEA,MAAMzD,mBAAmB;YACvB6B;YACAK,gBAAgBA;YAChBd;YACA2B;QACF;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,MAAMW,YAAY3D,eAAegD,OAAOQ;QAExC,MAAMV,OAAOjC,kBAAkB;YAC7B+C,QAAQtC,WAAWC,MAAM,CAACsC,eAAe;YACzCf,MAAMC;QACR;QAEA,IAAIe;QAEJ,IAAIhC,iBAAiBwB,QAAQ,EAAEC,UAAUH,iBAAiB;YACxD,MAAMW,gBAAgBpD,wBAAwBgD;YAE9C,MAAM1D,mBAAmB;gBACvB6B,kBAAkBR,WAAWC,MAAM;gBACnCY,gBAAgBA;gBAChBd;gBACA2C,eAAetD,6BAA6BgC,QAAQnB,MAAM,EAAED,WAAWC,MAAM,EAAE;gBAC/EyB,OAAOrC,wBAAwBqC;YACjC;YAEA,MAAMiB,QAAQ,MAAMvB,QAAQwB,EAAE,CAACC,WAAW,CAAgC;gBACxE7C,YAAYQ,iBAAiBsC,IAAI;gBACjClC;gBACAO,QAAQA;gBACR4B,YAAY;gBACZhD;gBACAyB,MAAMlC,mBAAmB;oBAAEkB;oBAAkBgB;gBAAK;gBAClDE,OAAOe;YACT;YAEAD,OAAOG,MAAMH,IAAI;QACnB,OAAO;YACL,MAAMG,QAAQ,MAAMvB,QAAQwB,EAAE,CAACI,IAAI,CAAC;gBAClChD,YAAYQ,iBAAiBsC,IAAI;gBACjClC;gBACAO,QAAQA;gBACR4B,YAAY;gBACZhD;gBACAyB;gBACAE,OAAOW;YACT;YAEAG,OAAOG,MAAMH,IAAI;QACnB;QAEA,wCAAwC;QACxC,wCAAwC;QACxC,wCAAwC;QAExC,MAAM,EAAEZ,IAAI,EAAEqB,OAAOC,aAAa,EAAE,GAAG,MAAMpE,iBAAiB;YAC5DkB;YACAC;YACA2B,MAAMC;YACNtB,WAAW;YACXQ;YACAhB;YACAoD,oBAAoB;QACtB;QAEA,MAAMC,SAAqD,EAAE;QAE7D,MAAMC,WAAWb,KAAKc,GAAG,CAAC,OAAOC;YAC/B,MAAM,EAAEC,EAAE,EAAE,GAAGD;YAEf,IAAI;gBACF,MAAMlC,SAASlC,eAAe;oBAC5BmD,QAAQ9B,iBAAiB+B,eAAe;oBACxCkB,aAAajD,iBAAiBiD,WAAW;oBACzCpC,QAAQC;gBACV;gBAEA,kDAAkD;gBAClD,iDAAiD;gBACjD,kDAAkD;gBAClD,MAAMoC,aAAa,MAAMlE,eAAe;oBACtCgE;oBACAG,eAAezB;oBACf0B,UAAU;oBACVpD;oBACAP;oBACA2B,MAAM/C,qBAAqB+C;oBAC3BnB,OAAOA;oBACP8C;oBACA5C;oBACAO,gBAAgBA;oBAChBgC;oBACA/B,QAAQA;oBACRN,gBAAgBA;oBAChBC,cAAcA;oBACdM;oBACAJ;oBACAC;oBACAlB;oBACAsB,QAAQA;oBACRE,kBAAkBA;gBACpB;gBAEA,OAAOmC;YACT,EAAE,OAAOG,OAAO;gBACdT,OAAOU,IAAI,CAAC;oBACVN;oBACAO,SAASF,iBAAiBG,QAAQH,MAAME,OAAO,GAAG;gBACpD;YACF;YACA,OAAO;QACT;QAEA,MAAMhF,gBAAgB;YACpByB;YACAP;YACAF;QACF;QAEA,MAAMkE,cAAc,MAAMC,QAAQC,GAAG,CAACd;QAEtC,IAAIe,SAAS;YACX5B,MAAMyB,YAAYI,MAAM,CAACtC;YACzBqB;QACF;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExCgB,SAAS,MAAM3E,oBAAoB;YACjCG;YACAI,YAAYQ;YACZD,WAAW;YACX,oFAAoF;YACpF6D;QACF;QAEA,IAAIvE,cAAc;YAChB,MAAMb,kBAAkBe;QAC1B;QAEA,oFAAoF;QACpF,OAAOqE;IACT,EAAE,OAAOP,OAAgB;QACvB,MAAM3E,gBAAgBU,KAAKG,GAAG;QAC9B,MAAM8D;IACR;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/config/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,6BAA6B,CAAA;AAEhG,MAAM,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAC/C,eAAe,EACb,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,cAAc,GACd,QAAQ,GACR,OAAO,GACP,YAAY,CACf,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AAE9F,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE;QACL,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC9B,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAA;AAElG,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE;QACL,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACzC,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC9B,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAA;AAElG,eAAO,MAAM,+BAA+B,EAAE,SAAS,OAAO,CAAC,6BAA6B,CAAC,EAAO,CAAA;AAEpG,eAAO,MAAM,0BAA0B,EAAE,SAAS,OAAO,CAAC,wBAAwB,CAAC,EAqBlF,CAAA;AAED,eAAO,MAAM,kBAAkB,iCAI5B;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,YA8GH,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,6BAA6B,CAAA;AAEhG,MAAM,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAC/C,eAAe,EACb,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,cAAc,GACd,QAAQ,GACR,OAAO,GACP,YAAY,CACf,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AAE9F,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE;QACL,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC9B,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAA;AAElG,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE;QACL,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC,CAAA;IACjF,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACzC,WAAW,EAAE,sBAAsB,EAAE,CAAA;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC9B,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAA;AAElG,eAAO,MAAM,+BAA+B,EAAE,SAAS,OAAO,CAAC,6BAA6B,CAAC,EAAO,CAAA;AAEpG,eAAO,MAAM,0BAA0B,EAAE,SAAS,OAAO,CAAC,wBAAwB,CAAC,EAqBlF,CAAA;AAED,eAAO,MAAM,kBAAkB,iCAI5B;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,YA8GH,CAAA"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import { createClientCollectionConfigs } from '../collections/config/client.js';
3
2
  import { createClientBlocks } from '../fields/config/client.js';
4
3
  import { createClientGlobalConfigs } from '../globals/config/client.js';
@@ -129,6 +128,7 @@ export const createClientConfig = ({ config, i18n, importMap })=>{
129
128
  }
130
129
  break;
131
130
  default:
131
+ ;
132
132
  clientConfig[key] = config[key];
133
133
  }
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config/client.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { DeepPartial } from 'ts-essentials'\n\nimport type { ImportMap } from '../bin/generateImportMap/index.js'\nimport type { ClientBlock } from '../fields/config/types.js'\nimport type { BlockSlug } from '../index.js'\nimport type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from './types.js'\n\nimport {\n type ClientCollectionConfig,\n createClientCollectionConfigs,\n} from '../collections/config/client.js'\nimport { createClientBlocks } from '../fields/config/client.js'\nimport { type ClientGlobalConfig, createClientGlobalConfigs } from '../globals/config/client.js'\n\nexport type ServerOnlyRootProperties = keyof Pick<\n SanitizedConfig,\n | 'bin'\n | 'cors'\n | 'csrf'\n | 'custom'\n | 'db'\n | 'editor'\n | 'email'\n | 'endpoints'\n | 'graphQL'\n | 'hooks'\n | 'i18n'\n | 'jobs'\n | 'logger'\n | 'onInit'\n | 'plugins'\n | 'queryPresets'\n | 'secret'\n | 'sharp'\n | 'typescript'\n>\n\nexport type ServerOnlyRootAdminProperties = keyof Pick<SanitizedConfig['admin'], 'components'>\n\nexport type UnsanitizedClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n blocks: ClientBlock[]\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport type ClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n blocks: ClientBlock[]\n blocksMap: Record<BlockSlug, ClientBlock>\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport const serverOnlyAdminConfigProperties: readonly Partial<ServerOnlyRootAdminProperties>[] = []\n\nexport const serverOnlyConfigProperties: readonly Partial<ServerOnlyRootProperties>[] = [\n 'endpoints',\n 'db',\n 'editor',\n 'plugins',\n 'sharp',\n 'onInit',\n 'secret',\n 'hooks',\n 'bin',\n 'i18n',\n 'typescript',\n 'cors',\n 'csrf',\n 'email',\n 'custom',\n 'graphQL',\n 'jobs',\n 'logger',\n 'queryPresets',\n // `admin`, `onInit`, `localization`, `collections`, and `globals` are all handled separately\n]\n\nexport const createClientConfig = ({\n config,\n i18n,\n importMap,\n}: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const clientConfig = {} as DeepPartial<ClientConfig>\n\n for (const key in config) {\n if (serverOnlyConfigProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n clientConfig.admin = {\n autoLogin: config.admin.autoLogin,\n avatar: config.admin.avatar,\n custom: config.admin.custom,\n dateFormat: config.admin.dateFormat,\n importMap: config.admin.importMap,\n meta: config.admin.meta,\n routes: config.admin.routes,\n theme: config.admin.theme,\n timezones: config.admin.timezones,\n user: config.admin.user,\n }\n if (config.admin.livePreview) {\n clientConfig.admin.livePreview = {}\n\n if (config.admin.livePreview.breakpoints) {\n clientConfig.admin.livePreview.breakpoints = config.admin.livePreview.breakpoints\n }\n }\n break\n case 'blocks': {\n ;(clientConfig.blocks as ClientBlock[]) = createClientBlocks({\n blocks: config.blocks!,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n }).filter((block) => typeof block !== 'string') as ClientBlock[]\n\n break\n }\n case 'collections':\n ;(clientConfig.collections as ClientCollectionConfig[]) = createClientCollectionConfigs({\n collections: config.collections,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n })\n break\n case 'folders':\n if (config.folders) {\n clientConfig.folders = {\n slug: config.folders.slug,\n browseByFolder: config.folders.browseByFolder,\n debug: config.folders.debug,\n fieldName: config.folders.fieldName,\n }\n }\n break\n\n case 'globals':\n ;(clientConfig.globals as ClientGlobalConfig[]) = createClientGlobalConfigs({\n defaultIDType: config.db.defaultIDType,\n globals: config.globals,\n i18n,\n importMap,\n })\n break\n case 'localization':\n if (typeof config.localization === 'object' && config.localization) {\n clientConfig.localization = {}\n if (config.localization.defaultLocale) {\n clientConfig.localization.defaultLocale = config.localization.defaultLocale\n }\n if (config.localization.defaultLocalePublishOption) {\n clientConfig.localization.defaultLocalePublishOption =\n config.localization.defaultLocalePublishOption\n }\n if (config.localization.fallback) {\n clientConfig.localization.fallback = config.localization.fallback\n }\n if (config.localization.localeCodes) {\n clientConfig.localization.localeCodes = config.localization.localeCodes\n }\n if (config.localization.locales) {\n clientConfig.localization.locales = []\n for (const locale of config.localization.locales) {\n if (locale) {\n const clientLocale: Partial<(typeof config.localization.locales)[0]> = {}\n if (locale.code) {\n clientLocale.code = locale.code\n }\n if (locale.fallbackLocale) {\n clientLocale.fallbackLocale = locale.fallbackLocale\n }\n if (locale.label) {\n clientLocale.label = locale.label\n }\n if (locale.rtl) {\n clientLocale.rtl = locale.rtl\n }\n clientConfig.localization.locales.push(clientLocale)\n }\n }\n }\n }\n break\n default:\n clientConfig[key] = config[key]\n }\n }\n return clientConfig as ClientConfig\n}\n"],"names":["createClientCollectionConfigs","createClientBlocks","createClientGlobalConfigs","serverOnlyAdminConfigProperties","serverOnlyConfigProperties","createClientConfig","config","i18n","importMap","clientConfig","key","includes","admin","autoLogin","avatar","custom","dateFormat","meta","routes","theme","timezones","user","livePreview","breakpoints","blocks","defaultIDType","db","filter","block","collections","folders","slug","browseByFolder","debug","fieldName","globals","localization","defaultLocale","defaultLocalePublishOption","fallback","localeCodes","locales","locale","clientLocale","code","fallbackLocale","label","rtl","push"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/config/client.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { DeepPartial } from 'ts-essentials'\n\nimport type { ImportMap } from '../bin/generateImportMap/index.js'\nimport type { ClientBlock } from '../fields/config/types.js'\nimport type { BlockSlug } from '../index.js'\nimport type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from './types.js'\n\nimport {\n type ClientCollectionConfig,\n createClientCollectionConfigs,\n} from '../collections/config/client.js'\nimport { createClientBlocks } from '../fields/config/client.js'\nimport { type ClientGlobalConfig, createClientGlobalConfigs } from '../globals/config/client.js'\n\nexport type ServerOnlyRootProperties = keyof Pick<\n SanitizedConfig,\n | 'bin'\n | 'cors'\n | 'csrf'\n | 'custom'\n | 'db'\n | 'editor'\n | 'email'\n | 'endpoints'\n | 'graphQL'\n | 'hooks'\n | 'i18n'\n | 'jobs'\n | 'logger'\n | 'onInit'\n | 'plugins'\n | 'queryPresets'\n | 'secret'\n | 'sharp'\n | 'typescript'\n>\n\nexport type ServerOnlyRootAdminProperties = keyof Pick<SanitizedConfig['admin'], 'components'>\n\nexport type UnsanitizedClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n blocks: ClientBlock[]\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport type ClientConfig = {\n admin: {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n } & Omit<SanitizedConfig['admin'], 'components' | 'dependencies' | 'livePreview'>\n blocks: ClientBlock[]\n blocksMap: Record<BlockSlug, ClientBlock>\n collections: ClientCollectionConfig[]\n custom?: Record<string, any>\n globals: ClientGlobalConfig[]\n} & Omit<SanitizedConfig, 'admin' | 'collections' | 'globals' | 'i18n' | ServerOnlyRootProperties>\n\nexport const serverOnlyAdminConfigProperties: readonly Partial<ServerOnlyRootAdminProperties>[] = []\n\nexport const serverOnlyConfigProperties: readonly Partial<ServerOnlyRootProperties>[] = [\n 'endpoints',\n 'db',\n 'editor',\n 'plugins',\n 'sharp',\n 'onInit',\n 'secret',\n 'hooks',\n 'bin',\n 'i18n',\n 'typescript',\n 'cors',\n 'csrf',\n 'email',\n 'custom',\n 'graphQL',\n 'jobs',\n 'logger',\n 'queryPresets',\n // `admin`, `onInit`, `localization`, `collections`, and `globals` are all handled separately\n]\n\nexport const createClientConfig = ({\n config,\n i18n,\n importMap,\n}: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const clientConfig = {} as DeepPartial<ClientConfig>\n\n for (const key in config) {\n if (serverOnlyConfigProperties.includes(key as any)) {\n continue\n }\n switch (key) {\n case 'admin':\n clientConfig.admin = {\n autoLogin: config.admin.autoLogin,\n avatar: config.admin.avatar,\n custom: config.admin.custom,\n dateFormat: config.admin.dateFormat,\n importMap: config.admin.importMap,\n meta: config.admin.meta,\n routes: config.admin.routes,\n theme: config.admin.theme,\n timezones: config.admin.timezones,\n user: config.admin.user,\n }\n if (config.admin.livePreview) {\n clientConfig.admin.livePreview = {}\n\n if (config.admin.livePreview.breakpoints) {\n clientConfig.admin.livePreview.breakpoints = config.admin.livePreview.breakpoints\n }\n }\n break\n case 'blocks': {\n ;(clientConfig.blocks as ClientBlock[]) = createClientBlocks({\n blocks: config.blocks!,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n }).filter((block) => typeof block !== 'string') as ClientBlock[]\n\n break\n }\n case 'collections':\n ;(clientConfig.collections as ClientCollectionConfig[]) = createClientCollectionConfigs({\n collections: config.collections,\n defaultIDType: config.db.defaultIDType,\n i18n,\n importMap,\n })\n break\n case 'folders':\n if (config.folders) {\n clientConfig.folders = {\n slug: config.folders.slug,\n browseByFolder: config.folders.browseByFolder,\n debug: config.folders.debug,\n fieldName: config.folders.fieldName,\n }\n }\n break\n\n case 'globals':\n ;(clientConfig.globals as ClientGlobalConfig[]) = createClientGlobalConfigs({\n defaultIDType: config.db.defaultIDType,\n globals: config.globals,\n i18n,\n importMap,\n })\n break\n case 'localization':\n if (typeof config.localization === 'object' && config.localization) {\n clientConfig.localization = {}\n if (config.localization.defaultLocale) {\n clientConfig.localization.defaultLocale = config.localization.defaultLocale\n }\n if (config.localization.defaultLocalePublishOption) {\n clientConfig.localization.defaultLocalePublishOption =\n config.localization.defaultLocalePublishOption\n }\n if (config.localization.fallback) {\n clientConfig.localization.fallback = config.localization.fallback\n }\n if (config.localization.localeCodes) {\n clientConfig.localization.localeCodes = config.localization.localeCodes\n }\n if (config.localization.locales) {\n clientConfig.localization.locales = []\n for (const locale of config.localization.locales) {\n if (locale) {\n const clientLocale: Partial<(typeof config.localization.locales)[0]> = {}\n if (locale.code) {\n clientLocale.code = locale.code\n }\n if (locale.fallbackLocale) {\n clientLocale.fallbackLocale = locale.fallbackLocale\n }\n if (locale.label) {\n clientLocale.label = locale.label\n }\n if (locale.rtl) {\n clientLocale.rtl = locale.rtl\n }\n clientConfig.localization.locales.push(clientLocale)\n }\n }\n }\n }\n break\n default:\n ;(clientConfig as any)[key] = config[key as keyof SanitizedConfig]\n }\n }\n return clientConfig as ClientConfig\n}\n"],"names":["createClientCollectionConfigs","createClientBlocks","createClientGlobalConfigs","serverOnlyAdminConfigProperties","serverOnlyConfigProperties","createClientConfig","config","i18n","importMap","clientConfig","key","includes","admin","autoLogin","avatar","custom","dateFormat","meta","routes","theme","timezones","user","livePreview","breakpoints","blocks","defaultIDType","db","filter","block","collections","folders","slug","browseByFolder","debug","fieldName","globals","localization","defaultLocale","defaultLocalePublishOption","fallback","localeCodes","locales","locale","clientLocale","code","fallbackLocale","label","rtl","push"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/config/sanitize.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,MAAM,EAGN,eAAe,EAEhB,MAAM,YAAY,CAAA;AAiGnB,eAAO,MAAM,cAAc,mBAA0B,MAAM,KAAG,OAAO,CAAC,eAAe,CA4TpF,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/config/sanitize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EAGN,eAAe,EAEhB,MAAM,YAAY,CAAA;AAiGnB,eAAO,MAAM,cAAc,mBAA0B,MAAM,KAAG,OAAO,CAAC,eAAe,CA4TpF,CAAA"}
@@ -1,4 +1,3 @@
1
- // @ts-strict-ignore
2
1
  import { en } from '@payloadcms/translations/languages/en';
3
2
  import { deepMergeSimple } from '@payloadcms/translations/utilities';
4
3
  import { defaultUserCollection } from '../auth/defaultUser.js';
@@ -210,7 +209,7 @@ export const sanitizeConfig = async (incomingConfig)=>{
210
209
  if (hooks && config?.jobs?.runHooks !== true) {
211
210
  for (const hook of Object.keys(hooks)){
212
211
  const defaultAmount = hook === 'afterRead' || hook === 'beforeChange' ? 1 : 0;
213
- if (hooks[hook]?.length > defaultAmount) {
212
+ if (hooks[hook].length > defaultAmount) {
214
213
  // eslint-disable-next-line no-console
215
214
  console.warn(`The jobsCollectionOverrides function is returning a collection with an additional ${hook} hook defined. These hooks will not run unless the jobs.runHooks option is set to true. Setting this option to true will negatively impact performance.`);
216
215
  break;