payload 3.0.0-alpha.60 → 3.0.0-alpha.61

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 (393) hide show
  1. package/dist/admin/RichText.d.ts +3 -0
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/admin/elements/Cell.js.map +1 -1
  5. package/dist/admin/elements/DatePicker.js.map +1 -1
  6. package/dist/admin/elements/PreviewButton.js.map +1 -1
  7. package/dist/admin/elements/PublishButton.js.map +1 -1
  8. package/dist/admin/elements/SaveButton.js.map +1 -1
  9. package/dist/admin/elements/SaveDraftButton.js.map +1 -1
  10. package/dist/admin/elements/Tab.js.map +1 -1
  11. package/dist/admin/forms/Error.js.map +1 -1
  12. package/dist/admin/forms/FieldDescription.d.ts +2 -1
  13. package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
  14. package/dist/admin/forms/FieldDescription.js.map +1 -1
  15. package/dist/admin/forms/FieldTypes.js.map +1 -1
  16. package/dist/admin/forms/Form.js.map +1 -1
  17. package/dist/admin/forms/Label.d.ts +2 -1
  18. package/dist/admin/forms/Label.d.ts.map +1 -1
  19. package/dist/admin/forms/Label.js.map +1 -1
  20. package/dist/admin/forms/RowLabel.js.map +1 -1
  21. package/dist/admin/types.js.map +1 -1
  22. package/dist/admin/views/types.d.ts +2 -2
  23. package/dist/admin/views/types.d.ts.map +1 -1
  24. package/dist/admin/views/types.js.map +1 -1
  25. package/dist/assets/assets.d.js.map +1 -1
  26. package/dist/auth/baseFields/accountLock.js.map +1 -1
  27. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  28. package/dist/auth/baseFields/apiKey.js +3 -7
  29. package/dist/auth/baseFields/apiKey.js.map +1 -1
  30. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  31. package/dist/auth/baseFields/auth.js +1 -5
  32. package/dist/auth/baseFields/auth.js.map +1 -1
  33. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  34. package/dist/auth/baseFields/verification.js +1 -5
  35. package/dist/auth/baseFields/verification.js.map +1 -1
  36. package/dist/auth/cookies.js.map +1 -1
  37. package/dist/auth/crypto.js.map +1 -1
  38. package/dist/auth/defaultAccess.js.map +1 -1
  39. package/dist/auth/defaultUser.d.ts.map +1 -1
  40. package/dist/auth/defaultUser.js +2 -7
  41. package/dist/auth/defaultUser.js.map +1 -1
  42. package/dist/auth/executeAccess.js.map +1 -1
  43. package/dist/auth/executeAuthStrategies.js.map +1 -1
  44. package/dist/auth/extractJWT.js.map +1 -1
  45. package/dist/auth/getAccessResults.js.map +1 -1
  46. package/dist/auth/getFieldsToSign.js.map +1 -1
  47. package/dist/auth/index.js.map +1 -1
  48. package/dist/auth/isLocked.js.map +1 -1
  49. package/dist/auth/operations/access.js.map +1 -1
  50. package/dist/auth/operations/auth.js.map +1 -1
  51. package/dist/auth/operations/forgotPassword.js.map +1 -1
  52. package/dist/auth/operations/init.js.map +1 -1
  53. package/dist/auth/operations/local/auth.js +1 -1
  54. package/dist/auth/operations/local/auth.js.map +1 -1
  55. package/dist/auth/operations/local/forgotPassword.js.map +1 -1
  56. package/dist/auth/operations/local/index.js.map +1 -1
  57. package/dist/auth/operations/local/login.js.map +1 -1
  58. package/dist/auth/operations/local/resetPassword.js.map +1 -1
  59. package/dist/auth/operations/local/unlock.js.map +1 -1
  60. package/dist/auth/operations/local/verifyEmail.js.map +1 -1
  61. package/dist/auth/operations/login.js.map +1 -1
  62. package/dist/auth/operations/logout.js.map +1 -1
  63. package/dist/auth/operations/me.js.map +1 -1
  64. package/dist/auth/operations/refresh.js.map +1 -1
  65. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  66. package/dist/auth/operations/resetPassword.js.map +1 -1
  67. package/dist/auth/operations/unlock.js.map +1 -1
  68. package/dist/auth/operations/verifyEmail.js.map +1 -1
  69. package/dist/auth/sendVerificationEmail.js.map +1 -1
  70. package/dist/auth/strategies/apiKey.js.map +1 -1
  71. package/dist/auth/strategies/jwt.js.map +1 -1
  72. package/dist/auth/strategies/local/authenticate.js.map +1 -1
  73. package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
  74. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  75. package/dist/auth/strategies/local/register.js.map +1 -1
  76. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
  77. package/dist/auth/types.js.map +1 -1
  78. package/dist/bin/generateTypes.js.map +1 -1
  79. package/dist/bin/index.js.map +1 -1
  80. package/dist/bin/loadEnv.js.map +1 -1
  81. package/dist/bin/loader/clientExtensions.js.map +1 -1
  82. package/dist/bin/loader/compile.js.map +1 -1
  83. package/dist/bin/loader/index.d.ts.map +1 -1
  84. package/dist/bin/loader/index.js +0 -1
  85. package/dist/bin/loader/index.js.map +1 -1
  86. package/dist/bin/loader/read-default-tsconfig.js.map +1 -1
  87. package/dist/bin/migrate.js.map +1 -1
  88. package/dist/collections/config/build.js.map +1 -1
  89. package/dist/collections/config/client.d.ts +11 -4
  90. package/dist/collections/config/client.d.ts.map +1 -1
  91. package/dist/collections/config/client.js +18 -3
  92. package/dist/collections/config/client.js.map +1 -1
  93. package/dist/collections/config/defaults.js.map +1 -1
  94. package/dist/collections/config/sanitize.d.ts.map +1 -1
  95. package/dist/collections/config/sanitize.js +2 -7
  96. package/dist/collections/config/sanitize.js.map +1 -1
  97. package/dist/collections/config/schema.js +2 -2
  98. package/dist/collections/config/schema.js.map +1 -1
  99. package/dist/collections/config/types.d.ts +3 -3
  100. package/dist/collections/config/types.d.ts.map +1 -1
  101. package/dist/collections/config/types.js.map +1 -1
  102. package/dist/collections/dataloader.js.map +1 -1
  103. package/dist/collections/operations/create.js.map +1 -1
  104. package/dist/collections/operations/delete.js.map +1 -1
  105. package/dist/collections/operations/deleteByID.js.map +1 -1
  106. package/dist/collections/operations/docAccess.js.map +1 -1
  107. package/dist/collections/operations/duplicate.js.map +1 -1
  108. package/dist/collections/operations/find.js.map +1 -1
  109. package/dist/collections/operations/findByID.js.map +1 -1
  110. package/dist/collections/operations/findVersionByID.js.map +1 -1
  111. package/dist/collections/operations/findVersions.js.map +1 -1
  112. package/dist/collections/operations/local/create.d.ts.map +1 -1
  113. package/dist/collections/operations/local/create.js +2 -1
  114. package/dist/collections/operations/local/create.js.map +1 -1
  115. package/dist/collections/operations/local/delete.js.map +1 -1
  116. package/dist/collections/operations/local/duplicate.js +1 -1
  117. package/dist/collections/operations/local/duplicate.js.map +1 -1
  118. package/dist/collections/operations/local/find.js.map +1 -1
  119. package/dist/collections/operations/local/findByID.js.map +1 -1
  120. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  121. package/dist/collections/operations/local/findVersions.js.map +1 -1
  122. package/dist/collections/operations/local/index.js.map +1 -1
  123. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  124. package/dist/collections/operations/local/update.js.map +1 -1
  125. package/dist/collections/operations/restoreVersion.js.map +1 -1
  126. package/dist/collections/operations/update.js.map +1 -1
  127. package/dist/collections/operations/updateByID.js.map +1 -1
  128. package/dist/collections/operations/utils.js.map +1 -1
  129. package/dist/config/build.js.map +1 -1
  130. package/dist/config/client.d.ts +5 -1
  131. package/dist/config/client.d.ts.map +1 -1
  132. package/dist/config/client.js +9 -4
  133. package/dist/config/client.js.map +1 -1
  134. package/dist/config/defaults.js.map +1 -1
  135. package/dist/config/find.js.map +1 -1
  136. package/dist/config/sanitize.d.ts.map +1 -1
  137. package/dist/config/sanitize.js +5 -3
  138. package/dist/config/sanitize.js.map +1 -1
  139. package/dist/config/schema.js.map +1 -1
  140. package/dist/config/shared/adminViewSchema.js.map +1 -1
  141. package/dist/config/shared/componentSchema.js.map +1 -1
  142. package/dist/config/types.d.ts +6 -2
  143. package/dist/config/types.d.ts.map +1 -1
  144. package/dist/config/types.js.map +1 -1
  145. package/dist/config/validate.js.map +1 -1
  146. package/dist/database/combineQueries.js.map +1 -1
  147. package/dist/database/createDatabaseAdapter.js.map +1 -1
  148. package/dist/database/flattenWhereToOperators.js.map +1 -1
  149. package/dist/database/getLocalizedPaths.js.map +1 -1
  150. package/dist/database/migrations/createMigration.js.map +1 -1
  151. package/dist/database/migrations/getMigrations.js.map +1 -1
  152. package/dist/database/migrations/migrate.js.map +1 -1
  153. package/dist/database/migrations/migrateDown.js.map +1 -1
  154. package/dist/database/migrations/migrateRefresh.js.map +1 -1
  155. package/dist/database/migrations/migrateReset.js.map +1 -1
  156. package/dist/database/migrations/migrateStatus.js.map +1 -1
  157. package/dist/database/migrations/migrationTemplate.js.map +1 -1
  158. package/dist/database/migrations/migrationsCollection.js.map +1 -1
  159. package/dist/database/migrations/readMigrationFiles.js.map +1 -1
  160. package/dist/database/queryValidation/types.js.map +1 -1
  161. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  162. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  163. package/dist/database/types.js.map +1 -1
  164. package/dist/email/build.js.map +1 -1
  165. package/dist/email/defaults.js.map +1 -1
  166. package/dist/email/mockHandler.js.map +1 -1
  167. package/dist/email/sendEmail.js.map +1 -1
  168. package/dist/email/types.js.map +1 -1
  169. package/dist/errors/APIError.js.map +1 -1
  170. package/dist/errors/AuthenticationError.js +2 -2
  171. package/dist/errors/AuthenticationError.js.map +1 -1
  172. package/dist/errors/DuplicateCollection.js.map +1 -1
  173. package/dist/errors/DuplicateFieldName.js.map +1 -1
  174. package/dist/errors/DuplicateGlobal.js.map +1 -1
  175. package/dist/errors/ErrorDeletingFile.js +2 -2
  176. package/dist/errors/ErrorDeletingFile.js.map +1 -1
  177. package/dist/errors/FileUploadError.js +2 -2
  178. package/dist/errors/FileUploadError.js.map +1 -1
  179. package/dist/errors/Forbidden.js +2 -2
  180. package/dist/errors/Forbidden.js.map +1 -1
  181. package/dist/errors/InvalidConfiguration.js.map +1 -1
  182. package/dist/errors/InvalidFieldName.js.map +1 -1
  183. package/dist/errors/InvalidFieldRelationship.js.map +1 -1
  184. package/dist/errors/InvalidSchema.js.map +1 -1
  185. package/dist/errors/LockedAuth.js +2 -2
  186. package/dist/errors/LockedAuth.js.map +1 -1
  187. package/dist/errors/MissingCollectionLabel.js.map +1 -1
  188. package/dist/errors/MissingEditorProp.js.map +1 -1
  189. package/dist/errors/MissingFieldInputOptions.js.map +1 -1
  190. package/dist/errors/MissingFieldType.js.map +1 -1
  191. package/dist/errors/MissingFile.js +2 -2
  192. package/dist/errors/MissingFile.js.map +1 -1
  193. package/dist/errors/NotFound.js +2 -2
  194. package/dist/errors/NotFound.js.map +1 -1
  195. package/dist/errors/QueryError.js.map +1 -1
  196. package/dist/errors/TimestampsRequired.js.map +1 -1
  197. package/dist/errors/UnathorizedError.js +2 -2
  198. package/dist/errors/UnathorizedError.js.map +1 -1
  199. package/dist/errors/ValidationError.js +2 -2
  200. package/dist/errors/ValidationError.js.map +1 -1
  201. package/dist/errors/index.js.map +1 -1
  202. package/dist/errors/types.js.map +1 -1
  203. package/dist/exports/auth.js.map +1 -1
  204. package/dist/exports/components/utilities.js.map +1 -1
  205. package/dist/exports/config.js.map +1 -1
  206. package/dist/exports/database.js.map +1 -1
  207. package/dist/exports/errors.js.map +1 -1
  208. package/dist/exports/fields/index.js.map +1 -1
  209. package/dist/exports/fields/validations.js.map +1 -1
  210. package/dist/exports/node.d.ts +1 -0
  211. package/dist/exports/node.d.ts.map +1 -1
  212. package/dist/exports/node.js +1 -0
  213. package/dist/exports/node.js.map +1 -1
  214. package/dist/exports/operations.js.map +1 -1
  215. package/dist/exports/types.js.map +1 -1
  216. package/dist/exports/uploads.js.map +1 -1
  217. package/dist/exports/utilities.d.ts +0 -1
  218. package/dist/exports/utilities.d.ts.map +1 -1
  219. package/dist/exports/utilities.js +0 -1
  220. package/dist/exports/utilities.js.map +1 -1
  221. package/dist/exports/versions.js.map +1 -1
  222. package/dist/fields/baseFields/baseBlockFields.js.map +1 -1
  223. package/dist/fields/baseFields/baseIDField.js.map +1 -1
  224. package/dist/fields/config/client.d.ts +32 -25
  225. package/dist/fields/config/client.d.ts.map +1 -1
  226. package/dist/fields/config/client.js +31 -6
  227. package/dist/fields/config/client.js.map +1 -1
  228. package/dist/fields/config/sanitize.js.map +1 -1
  229. package/dist/fields/config/sanitize.spec.js.map +1 -1
  230. package/dist/fields/config/schema.d.ts.map +1 -1
  231. package/dist/fields/config/schema.js +3 -3
  232. package/dist/fields/config/schema.js.map +1 -1
  233. package/dist/fields/config/types.d.ts +6 -5
  234. package/dist/fields/config/types.d.ts.map +1 -1
  235. package/dist/fields/config/types.js.map +1 -1
  236. package/dist/fields/getDefaultValue.js.map +1 -1
  237. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  238. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  239. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  240. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  241. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  242. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  243. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  244. package/dist/fields/hooks/beforeChange/beforeDuplicate.js.map +1 -1
  245. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -1
  246. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -1
  247. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  248. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  249. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  250. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  251. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  252. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  253. package/dist/fields/mergeBaseFields.js.map +1 -1
  254. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  255. package/dist/fields/setDefaultBeforeDuplicate.js +2 -6
  256. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  257. package/dist/fields/sortableFieldTypes.js.map +1 -1
  258. package/dist/fields/validations.js.map +1 -1
  259. package/dist/fields/validations.spec.js.map +1 -1
  260. package/dist/globals/config/client.d.ts +9 -2
  261. package/dist/globals/config/client.d.ts.map +1 -1
  262. package/dist/globals/config/client.js +9 -3
  263. package/dist/globals/config/client.js.map +1 -1
  264. package/dist/globals/config/sanitize.d.ts.map +1 -1
  265. package/dist/globals/config/sanitize.js +2 -7
  266. package/dist/globals/config/sanitize.js.map +1 -1
  267. package/dist/globals/config/schema.d.ts.map +1 -1
  268. package/dist/globals/config/schema.js +1 -1
  269. package/dist/globals/config/schema.js.map +1 -1
  270. package/dist/globals/config/types.js.map +1 -1
  271. package/dist/globals/operations/docAccess.js.map +1 -1
  272. package/dist/globals/operations/findOne.js.map +1 -1
  273. package/dist/globals/operations/findVersionByID.js.map +1 -1
  274. package/dist/globals/operations/findVersions.js.map +1 -1
  275. package/dist/globals/operations/local/findOne.js.map +1 -1
  276. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  277. package/dist/globals/operations/local/findVersionByID.js +1 -0
  278. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  279. package/dist/globals/operations/local/findVersions.js.map +1 -1
  280. package/dist/globals/operations/local/index.js.map +1 -1
  281. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  282. package/dist/globals/operations/local/update.js.map +1 -1
  283. package/dist/globals/operations/restoreVersion.js.map +1 -1
  284. package/dist/globals/operations/update.js.map +1 -1
  285. package/dist/index.js.map +1 -1
  286. package/dist/preferences/deleteUserPreferences.js.map +1 -1
  287. package/dist/preferences/operations/delete.js.map +1 -1
  288. package/dist/preferences/operations/findOne.js.map +1 -1
  289. package/dist/preferences/operations/update.js.map +1 -1
  290. package/dist/preferences/preferencesCollection.js.map +1 -1
  291. package/dist/preferences/requestHandlers/delete.js.map +1 -1
  292. package/dist/preferences/requestHandlers/findOne.js.map +1 -1
  293. package/dist/preferences/requestHandlers/update.js.map +1 -1
  294. package/dist/preferences/types.js.map +1 -1
  295. package/dist/translations/getLocalI18n.d.ts +3 -2
  296. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  297. package/dist/translations/getLocalI18n.js +2 -4
  298. package/dist/translations/getLocalI18n.js.map +1 -1
  299. package/dist/types/constants.js.map +1 -1
  300. package/dist/types/index.js.map +1 -1
  301. package/dist/uploads/canResizeImage.js.map +1 -1
  302. package/dist/uploads/cropImage.js.map +1 -1
  303. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  304. package/dist/uploads/docWithFilenameExists.js.map +1 -1
  305. package/dist/uploads/fileExists.js.map +1 -1
  306. package/dist/uploads/formatFilesize.js.map +1 -1
  307. package/dist/uploads/generateFileData.js.map +1 -1
  308. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  309. package/dist/uploads/getBaseFields.js +5 -13
  310. package/dist/uploads/getBaseFields.js.map +1 -1
  311. package/dist/uploads/getExternalFile.js.map +1 -1
  312. package/dist/uploads/getFileByPath.js.map +1 -1
  313. package/dist/uploads/getImageSize.js.map +1 -1
  314. package/dist/uploads/getSafeFilename.js.map +1 -1
  315. package/dist/uploads/imageResizer.js.map +1 -1
  316. package/dist/uploads/isImage.js.map +1 -1
  317. package/dist/uploads/mimeTypeValidator.js.map +1 -1
  318. package/dist/uploads/mimeTypeValidator.spec.js.map +1 -1
  319. package/dist/uploads/saveBufferToFile.js.map +1 -1
  320. package/dist/uploads/types.js.map +1 -1
  321. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  322. package/dist/uploads/uploadFiles.js.map +1 -1
  323. package/dist/utilities/checkDuplicateCollections.js.map +1 -1
  324. package/dist/utilities/combineMerge.js.map +1 -1
  325. package/dist/utilities/commitTransaction.js.map +1 -1
  326. package/dist/utilities/configToJSONSchema.js.map +1 -1
  327. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  328. package/dist/utilities/convertData.js.map +1 -1
  329. package/dist/utilities/createArrayFromCommaDelineated.js.map +1 -1
  330. package/dist/utilities/createLocalReq.d.ts +1 -1
  331. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  332. package/dist/utilities/createLocalReq.js +2 -2
  333. package/dist/utilities/createLocalReq.js.map +1 -1
  334. package/dist/utilities/deepCopyObject.js.map +1 -1
  335. package/dist/utilities/deepMerge.js.map +1 -1
  336. package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
  337. package/dist/utilities/flattenTopLevelFields.js.map +1 -1
  338. package/dist/utilities/formatLabels.js.map +1 -1
  339. package/dist/utilities/formatLabels.spec.js.map +1 -1
  340. package/dist/utilities/getCSSVariable.js.map +1 -1
  341. package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -1
  342. package/dist/utilities/getEntityPolicies.js.map +1 -1
  343. package/dist/utilities/getIDType.js.map +1 -1
  344. package/dist/utilities/getObjectDotNotation.js.map +1 -1
  345. package/dist/utilities/getUniqueListBy.js.map +1 -1
  346. package/dist/utilities/importWithoutClientFiles.js.map +1 -1
  347. package/dist/utilities/initTransaction.js.map +1 -1
  348. package/dist/utilities/isEntityHidden.js.map +1 -1
  349. package/dist/utilities/isNumber.js.map +1 -1
  350. package/dist/utilities/isPlainObject.js.map +1 -1
  351. package/dist/utilities/isReactComponent.js.map +1 -1
  352. package/dist/utilities/isValidID.js.map +1 -1
  353. package/dist/utilities/isolateObjectProperty.js.map +1 -1
  354. package/dist/utilities/killTransaction.js.map +1 -1
  355. package/dist/utilities/logger.js.map +1 -1
  356. package/dist/utilities/mapAsync.js.map +1 -1
  357. package/dist/utilities/mergeListSearchAndWhere.js.map +1 -1
  358. package/dist/utilities/overwriteMerge.js.map +1 -1
  359. package/dist/utilities/parseCookies.js.map +1 -1
  360. package/dist/utilities/sanitizeInternalFields.js.map +1 -1
  361. package/dist/utilities/setsAreEqual.js.map +1 -1
  362. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  363. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  364. package/dist/utilities/telemetry/index.js.map +1 -1
  365. package/dist/utilities/telemetry/oneWayHash.js.map +1 -1
  366. package/dist/utilities/timestamp.js.map +1 -1
  367. package/dist/utilities/toKebabCase.js.map +1 -1
  368. package/dist/utilities/wait.js.map +1 -1
  369. package/dist/utilities/wordBoundariesRegex.js.map +1 -1
  370. package/dist/versions/baseFields.d.ts +3 -1
  371. package/dist/versions/baseFields.d.ts.map +1 -1
  372. package/dist/versions/baseFields.js +3 -9
  373. package/dist/versions/baseFields.js.map +1 -1
  374. package/dist/versions/buildCollectionFields.js.map +1 -1
  375. package/dist/versions/buildGlobalFields.js.map +1 -1
  376. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  377. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
  378. package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -1
  379. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  380. package/dist/versions/enforceMaxVersions.js.map +1 -1
  381. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  382. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  383. package/dist/versions/saveVersion.js.map +1 -1
  384. package/dist/versions/types.js.map +1 -1
  385. package/node.d.ts +1 -0
  386. package/node.js +1 -0
  387. package/package.json +2 -2
  388. package/utilities.d.ts +0 -1
  389. package/utilities.js +0 -1
  390. package/dist/translations/extractTranslations.d.ts +0 -2
  391. package/dist/translations/extractTranslations.d.ts.map +0 -1
  392. package/dist/translations/extractTranslations.js +0 -20
  393. package/dist/translations/extractTranslations.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/migrations/migrateReset.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateReset(this: BaseDatabaseAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to reset.' })\n return\n }\n\n const req = { payload } as PayloadRequest\n\n // Rollback all migrations in order\n for (const migration of migrationFiles) {\n // Create or update migration in database\n const existingMigration = existingMigrations.find(\n (existing) => existing.name === migration.name,\n )\n if (existingMigration) {\n payload.logger.info({ msg: `Migrating down: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.down({ payload, req })\n await payload.delete({\n collection: 'payload-migrations',\n req,\n where: {\n id: {\n equals: existingMigration.id,\n },\n },\n })\n await commitTransaction(req)\n payload.logger.info({ msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({ err, msg: `Error running migration ${migration.name}` })\n throw err\n }\n }\n }\n\n // Delete dev migration\n try {\n await payload.delete({\n collection: 'payload-migrations',\n where: {\n batch: {\n equals: -1,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({ error: err, msg: 'Error deleting dev migration' })\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrateReset","payload","migrationFiles","existingMigrations","length","logger","info","msg","req","migration","existingMigration","find","existing","name","start","Date","now","down","delete","collection","where","id","equals","err","error","batch"],"mappings":"AAAA,yDAAyD,GAIzD,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAE,GAAG,MAAML,cAAc;QAAEG;IAAQ;IAE7D,IAAI,CAACE,oBAAoBC,QAAQ;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA0B;QACrD;IACF;IAEA,MAAMC,MAAM;QAAEP;IAAQ;IAEtB,mCAAmC;IACnC,KAAK,MAAMQ,aAAaP,eAAgB;QACtC,yCAAyC;QACzC,MAAMQ,oBAAoBP,mBAAmBQ,IAAI,CAC/C,CAACC,WAAaA,SAASC,IAAI,KAAKJ,UAAUI,IAAI;QAEhD,IAAIH,mBAAmB;YACrBT,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEE,UAAUI,IAAI,CAAC,CAAC;YAAC;YAC/D,IAAI;gBACF,MAAMC,QAAQC,KAAKC,GAAG;gBACtB,MAAMpB,gBAAgBY;gBACtB,MAAMC,UAAUQ,IAAI,CAAC;oBAAEhB;oBAASO;gBAAI;gBACpC,MAAMP,QAAQiB,MAAM,CAAC;oBACnBC,YAAY;oBACZX;oBACAY,OAAO;wBACLC,IAAI;4BACFC,QAAQZ,kBAAkBW,EAAE;wBAC9B;oBACF;gBACF;gBACA,MAAM1B,kBAAkBa;gBACxBP,QAAQI,MAAM,CAACC,IAAI,CAAC;oBAAEC,KAAK,CAAC,gBAAgB,EAAEE,UAAUI,IAAI,CAAC,EAAE,EAAEE,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;gBAAC;YAC3F,EAAE,OAAOS,KAAc;gBACrB,MAAM1B,gBAAgBW;gBACtBP,QAAQI,MAAM,CAACmB,KAAK,CAAC;oBAAED;oBAAKhB,KAAK,CAAC,wBAAwB,EAAEE,UAAUI,IAAI,CAAC,CAAC;gBAAC;gBAC7E,MAAMU;YACR;QACF;IACF;IAEA,uBAAuB;IACvB,IAAI;QACF,MAAMtB,QAAQiB,MAAM,CAAC;YACnBC,YAAY;YACZC,OAAO;gBACLK,OAAO;oBACLH,QAAQ,CAAC;gBACX;YACF;QACF;IACF,EAAE,OAAOC,KAAc;QACrBtB,QAAQI,MAAM,CAACmB,KAAK,CAAC;YAAEA,OAAOD;YAAKhB,KAAK;QAA+B;IACzE;AACF"}
1
+ {"version":3,"sources":["../../../src/database/migrations/migrateReset.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax, no-await-in-loop */\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateReset(this: BaseDatabaseAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to reset.' })\n return\n }\n\n const req = { payload } as PayloadRequest\n\n // Rollback all migrations in order\n for (const migration of migrationFiles) {\n // Create or update migration in database\n const existingMigration = existingMigrations.find(\n (existing) => existing.name === migration.name,\n )\n if (existingMigration) {\n payload.logger.info({ msg: `Migrating down: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.down({ payload, req })\n await payload.delete({\n collection: 'payload-migrations',\n req,\n where: {\n id: {\n equals: existingMigration.id,\n },\n },\n })\n await commitTransaction(req)\n payload.logger.info({ msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({ err, msg: `Error running migration ${migration.name}` })\n throw err\n }\n }\n }\n\n // Delete dev migration\n try {\n await payload.delete({\n collection: 'payload-migrations',\n where: {\n batch: {\n equals: -1,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({ error: err, msg: 'Error deleting dev migration' })\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","getMigrations","readMigrationFiles","migrateReset","payload","migrationFiles","existingMigrations","length","logger","info","msg","req","migration","existingMigration","find","existing","name","start","Date","now","down","delete","collection","where","id","equals","err","error","batch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,yDAAyD,GAIzD,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAE,GAAG,MAAML,cAAc;QAAEG;IAAQ;IAE7D,IAAI,CAACE,oBAAoBC,QAAQ;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA0B;QACrD;IACF;IAEA,MAAMC,MAAM;QAAEP;IAAQ;IAEtB,mCAAmC;IACnC,KAAK,MAAMQ,aAAaP,eAAgB;QACtC,yCAAyC;QACzC,MAAMQ,oBAAoBP,mBAAmBQ,IAAI,CAC/C,CAACC,WAAaA,SAASC,IAAI,KAAKJ,UAAUI,IAAI;QAEhD,IAAIH,mBAAmB;YACrBT,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEE,UAAUI,IAAI,CAAC,CAAC;YAAC;YAC/D,IAAI;gBACF,MAAMC,QAAQC,KAAKC,GAAG;gBACtB,MAAMpB,gBAAgBY;gBACtB,MAAMC,UAAUQ,IAAI,CAAC;oBAAEhB;oBAASO;gBAAI;gBACpC,MAAMP,QAAQiB,MAAM,CAAC;oBACnBC,YAAY;oBACZX;oBACAY,OAAO;wBACLC,IAAI;4BACFC,QAAQZ,kBAAkBW,EAAE;wBAC9B;oBACF;gBACF;gBACA,MAAM1B,kBAAkBa;gBACxBP,QAAQI,MAAM,CAACC,IAAI,CAAC;oBAAEC,KAAK,CAAC,gBAAgB,EAAEE,UAAUI,IAAI,CAAC,EAAE,EAAEE,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;gBAAC;YAC3F,EAAE,OAAOS,KAAc;gBACrB,MAAM1B,gBAAgBW;gBACtBP,QAAQI,MAAM,CAACmB,KAAK,CAAC;oBAAED;oBAAKhB,KAAK,CAAC,wBAAwB,EAAEE,UAAUI,IAAI,CAAC,CAAC;gBAAC;gBAC7E,MAAMU;YACR;QACF;IACF;IAEA,uBAAuB;IACvB,IAAI;QACF,MAAMtB,QAAQiB,MAAM,CAAC;YACnBC,YAAY;YACZC,OAAO;gBACLK,OAAO;oBACLH,QAAQ,CAAC;gBACX;YACF;QACF;IACF,EAAE,OAAOC,KAAc;QACrBtB,QAAQI,MAAM,CAACmB,KAAK,CAAC;YAAEA,OAAOD;YAAKhB,KAAK;QAA+B;IACzE;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/migrations/migrateStatus.ts"],"sourcesContent":["import { Table } from 'console-table-printer'\n\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateStatus(this: BaseDatabaseAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations found.' })\n return\n }\n\n // Compare migration files to existing migrations\n const statuses = migrationFiles.map((migration) => {\n const existingMigration = existingMigrations.find((m) => m.name === migration.name)\n return {\n Name: migration.name,\n // eslint-disable-next-line perfectionist/sort-objects\n Batch: existingMigration?.batch,\n Ran: existingMigration ? 'Yes' : 'No',\n }\n })\n\n const p = new Table()\n\n statuses.forEach((s) => {\n p.addRow(s, {\n color: s.Ran === 'Yes' ? 'green' : 'red',\n })\n })\n p.printTable()\n}\n"],"names":["Table","getMigrations","readMigrationFiles","migrateStatus","payload","migrationFiles","logger","debug","msg","length","existingMigrations","info","statuses","map","migration","existingMigration","find","m","name","Name","Batch","batch","Ran","p","forEach","s","addRow","color","printTable"],"mappings":"AAAA,SAASA,KAAK,QAAQ,wBAAuB;AAI7C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1DA,QAAQE,MAAM,CAACC,KAAK,CAAC;QACnBC,KAAK,CAAC,MAAM,EAAEH,eAAeI,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAMT,cAAc;QAAEG;IAAQ;IAE7D,IAAI,CAACC,eAAeI,MAAM,EAAE;QAC1BL,QAAQE,MAAM,CAACK,IAAI,CAAC;YAAEH,KAAK;QAAuB;QAClD;IACF;IAEA,iDAAiD;IACjD,MAAMI,WAAWP,eAAeQ,GAAG,CAAC,CAACC;QACnC,MAAMC,oBAAoBL,mBAAmBM,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAClF,OAAO;YACLC,MAAML,UAAUI,IAAI;YACpB,sDAAsD;YACtDE,OAAOL,mBAAmBM;YAC1BC,KAAKP,oBAAoB,QAAQ;QACnC;IACF;IAEA,MAAMQ,IAAI,IAAIvB;IAEdY,SAASY,OAAO,CAAC,CAACC;QAChBF,EAAEG,MAAM,CAACD,GAAG;YACVE,OAAOF,EAAEH,GAAG,KAAK,QAAQ,UAAU;QACrC;IACF;IACAC,EAAEK,UAAU;AACd"}
1
+ {"version":3,"sources":["../../../src/database/migrations/migrateStatus.ts"],"sourcesContent":["import { Table } from 'console-table-printer'\n\nimport type { BaseDatabaseAdapter } from '../types.js'\n\nimport { getMigrations } from './getMigrations.js'\nimport { readMigrationFiles } from './readMigrationFiles.js'\n\nexport async function migrateStatus(this: BaseDatabaseAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations found.' })\n return\n }\n\n // Compare migration files to existing migrations\n const statuses = migrationFiles.map((migration) => {\n const existingMigration = existingMigrations.find((m) => m.name === migration.name)\n return {\n Name: migration.name,\n // eslint-disable-next-line perfectionist/sort-objects\n Batch: existingMigration?.batch,\n Ran: existingMigration ? 'Yes' : 'No',\n }\n })\n\n const p = new Table()\n\n statuses.forEach((s) => {\n p.addRow(s, {\n color: s.Ran === 'Yes' ? 'green' : 'red',\n })\n })\n p.printTable()\n}\n"],"names":["Table","getMigrations","readMigrationFiles","migrateStatus","payload","migrationFiles","logger","debug","msg","length","existingMigrations","info","statuses","map","migration","existingMigration","find","m","name","Name","Batch","batch","Ran","p","forEach","s","addRow","color","printTable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,KAAK,QAAQ,wBAAuB;AAI7C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5D,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMH,mBAAmB;QAAEE;IAAQ;IAE1DA,QAAQE,MAAM,CAACC,KAAK,CAAC;QACnBC,KAAK,CAAC,MAAM,EAAEH,eAAeI,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAM,EAAEC,kBAAkB,EAAE,GAAG,MAAMT,cAAc;QAAEG;IAAQ;IAE7D,IAAI,CAACC,eAAeI,MAAM,EAAE;QAC1BL,QAAQE,MAAM,CAACK,IAAI,CAAC;YAAEH,KAAK;QAAuB;QAClD;IACF;IAEA,iDAAiD;IACjD,MAAMI,WAAWP,eAAeQ,GAAG,CAAC,CAACC;QACnC,MAAMC,oBAAoBL,mBAAmBM,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAClF,OAAO;YACLC,MAAML,UAAUI,IAAI;YACpB,sDAAsD;YACtDE,OAAOL,mBAAmBM;YAC1BC,KAAKP,oBAAoB,QAAQ;QACnC;IACF;IAEA,MAAMQ,IAAI,IAAIvB;IAEdY,SAASY,OAAO,CAAC,CAACC;QAChBF,EAAEG,MAAM,CAACD,GAAG;YACVE,OAAOF,EAAEH,GAAG,KAAK,QAAQ,UAAU;QACrC;IACF;IACAC,EAAEK,UAAU;AACd"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/migrations/migrationTemplate.ts"],"sourcesContent":["export const migrationTemplate = `\nimport {\n MigrateUpArgs,\n MigrateDownArgs,\n} from \"@payloadcms/db-mongodb\";\n\nexport async function up({ payload, req }: MigrateUpArgs): Promise<void> {\n // Migration code\n};\n\nexport async function down({ payload, req }: MigrateDownArgs): Promise<void> {\n // Migration code\n};\n`\n"],"names":["migrationTemplate"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB,CAAC;;;;;;;;;;;;;AAalC,CAAC,CAAA"}
1
+ {"version":3,"sources":["../../../src/database/migrations/migrationTemplate.ts"],"sourcesContent":["export const migrationTemplate = `\nimport {\n MigrateUpArgs,\n MigrateDownArgs,\n} from \"@payloadcms/db-mongodb\";\n\nexport async function up({ payload, req }: MigrateUpArgs): Promise<void> {\n // Migration code\n};\n\nexport async function down({ payload, req }: MigrateDownArgs): Promise<void> {\n // Migration code\n};\n`\n"],"names":["migrationTemplate"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA,oBAAoB,CAAC;;;;;;;;;;;;;AAalC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/migrations/migrationsCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../../collections/config/types.js'\n\nexport const migrationsCollection: CollectionConfig = {\n slug: 'payload-migrations',\n admin: {\n hidden: true,\n },\n endpoints: false,\n fields: [\n {\n name: 'name',\n type: 'text',\n },\n {\n name: 'batch',\n type: 'number',\n // NOTE: This value is -1 if it is a \"dev push\"\n },\n ],\n graphQL: false,\n}\n"],"names":["migrationsCollection","slug","admin","hidden","endpoints","fields","name","type","graphQL"],"mappings":"AAEA,OAAO,MAAMA,uBAAyC;IACpDC,MAAM;IACNC,OAAO;QACLC,QAAQ;IACV;IACAC,WAAW;IACXC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;QACA;YACED,MAAM;YACNC,MAAM;QAER;KACD;IACDC,SAAS;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../src/database/migrations/migrationsCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../../collections/config/types.js'\n\nexport const migrationsCollection: CollectionConfig = {\n slug: 'payload-migrations',\n admin: {\n hidden: true,\n },\n endpoints: false,\n fields: [\n {\n name: 'name',\n type: 'text',\n },\n {\n name: 'batch',\n type: 'number',\n // NOTE: This value is -1 if it is a \"dev push\"\n },\n ],\n graphQL: false,\n}\n"],"names":["migrationsCollection","slug","admin","hidden","endpoints","fields","name","type","graphQL"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,uBAAyC;IACpDC,MAAM;IACNC,OAAO;QACLC,QAAQ;IACV;IACAC,WAAW;IACXC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;QACR;QACA;YACED,MAAM;YACNC,MAAM;QAER;KACD;IACDC,SAAS;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/migrations/readMigrationFiles.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport type { Payload } from '../../index.js'\nimport type { Migration } from '../types.js'\n\n/**\n * Read the migration files from disk\n */\nexport const readMigrationFiles = async ({\n payload,\n}: {\n payload: Payload\n}): Promise<Migration[]> => {\n if (!fs.existsSync(payload.db.migrationDir)) {\n payload.logger.error({\n msg: `No migration directory found at ${payload.db.migrationDir}`,\n })\n return []\n }\n\n payload.logger.info({\n msg: `Reading migration files from ${payload.db.migrationDir}`,\n })\n\n const files = fs\n .readdirSync(payload.db.migrationDir)\n .sort()\n .filter((f) => {\n return f.endsWith('.ts') || f.endsWith('.js')\n })\n .map((file) => {\n return path.resolve(payload.db.migrationDir, file)\n })\n\n return Promise.all(\n files.map(async (filePath) => {\n // eval used to circumvent errors bundling\n let migration = await eval(\n `${typeof require === 'function' ? 'require' : 'import'}('${filePath.replaceAll('\\\\', '/')}')`,\n )\n if ('default' in migration) migration = migration.default\n\n const result: Migration = {\n name: path.basename(filePath).split('.')?.[0],\n down: migration.down,\n up: migration.up,\n }\n\n return result\n }),\n )\n}\n"],"names":["fs","path","readMigrationFiles","payload","existsSync","db","migrationDir","logger","error","msg","info","files","readdirSync","sort","filter","f","endsWith","map","file","resolve","Promise","all","filePath","migration","eval","require","replaceAll","default","result","name","basename","split","down","up"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAKvB;;CAEC,GACD,OAAO,MAAMC,qBAAqB,OAAO,EACvCC,OAAO,EAGR;IACC,IAAI,CAACH,GAAGI,UAAU,CAACD,QAAQE,EAAE,CAACC,YAAY,GAAG;QAC3CH,QAAQI,MAAM,CAACC,KAAK,CAAC;YACnBC,KAAK,CAAC,gCAAgC,EAAEN,QAAQE,EAAE,CAACC,YAAY,CAAC,CAAC;QACnE;QACA,OAAO,EAAE;IACX;IAEAH,QAAQI,MAAM,CAACG,IAAI,CAAC;QAClBD,KAAK,CAAC,6BAA6B,EAAEN,QAAQE,EAAE,CAACC,YAAY,CAAC,CAAC;IAChE;IAEA,MAAMK,QAAQX,GACXY,WAAW,CAACT,QAAQE,EAAE,CAACC,YAAY,EACnCO,IAAI,GACJC,MAAM,CAAC,CAACC;QACP,OAAOA,EAAEC,QAAQ,CAAC,UAAUD,EAAEC,QAAQ,CAAC;IACzC,GACCC,GAAG,CAAC,CAACC;QACJ,OAAOjB,KAAKkB,OAAO,CAAChB,QAAQE,EAAE,CAACC,YAAY,EAAEY;IAC/C;IAEF,OAAOE,QAAQC,GAAG,CAChBV,MAAMM,GAAG,CAAC,OAAOK;QACf,0CAA0C;QAC1C,IAAIC,YAAY,MAAMC,KACpB,CAAC,EAAE,OAAOC,YAAY,aAAa,YAAY,SAAS,EAAE,EAAEH,SAASI,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC;QAEhG,IAAI,aAAaH,WAAWA,YAAYA,UAAUI,OAAO;QAEzD,MAAMC,SAAoB;YACxBC,MAAM5B,KAAK6B,QAAQ,CAACR,UAAUS,KAAK,CAAC,MAAM,CAAC,EAAE;YAC7CC,MAAMT,UAAUS,IAAI;YACpBC,IAAIV,UAAUU,EAAE;QAClB;QAEA,OAAOL;IACT;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../src/database/migrations/readMigrationFiles.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport type { Payload } from '../../index.js'\nimport type { Migration } from '../types.js'\n\n/**\n * Read the migration files from disk\n */\nexport const readMigrationFiles = async ({\n payload,\n}: {\n payload: Payload\n}): Promise<Migration[]> => {\n if (!fs.existsSync(payload.db.migrationDir)) {\n payload.logger.error({\n msg: `No migration directory found at ${payload.db.migrationDir}`,\n })\n return []\n }\n\n payload.logger.info({\n msg: `Reading migration files from ${payload.db.migrationDir}`,\n })\n\n const files = fs\n .readdirSync(payload.db.migrationDir)\n .sort()\n .filter((f) => {\n return f.endsWith('.ts') || f.endsWith('.js')\n })\n .map((file) => {\n return path.resolve(payload.db.migrationDir, file)\n })\n\n return Promise.all(\n files.map(async (filePath) => {\n // eval used to circumvent errors bundling\n let migration = await eval(\n `${typeof require === 'function' ? 'require' : 'import'}('${filePath.replaceAll('\\\\', '/')}')`,\n )\n if ('default' in migration) migration = migration.default\n\n const result: Migration = {\n name: path.basename(filePath).split('.')?.[0],\n down: migration.down,\n up: migration.up,\n }\n\n return result\n }),\n )\n}\n"],"names":["fs","path","readMigrationFiles","payload","existsSync","db","migrationDir","logger","error","msg","info","files","readdirSync","sort","filter","f","endsWith","map","file","resolve","Promise","all","filePath","migration","eval","require","replaceAll","default","result","name","basename","split","down","up"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAKvB;;CAEC,GACD,OAAO,MAAMC,qBAAqB,OAAO,EACvCC,OAAO,EAGR;IACC,IAAI,CAACH,GAAGI,UAAU,CAACD,QAAQE,EAAE,CAACC,YAAY,GAAG;QAC3CH,QAAQI,MAAM,CAACC,KAAK,CAAC;YACnBC,KAAK,CAAC,gCAAgC,EAAEN,QAAQE,EAAE,CAACC,YAAY,CAAC,CAAC;QACnE;QACA,OAAO,EAAE;IACX;IAEAH,QAAQI,MAAM,CAACG,IAAI,CAAC;QAClBD,KAAK,CAAC,6BAA6B,EAAEN,QAAQE,EAAE,CAACC,YAAY,CAAC,CAAC;IAChE;IAEA,MAAMK,QAAQX,GACXY,WAAW,CAACT,QAAQE,EAAE,CAACC,YAAY,EACnCO,IAAI,GACJC,MAAM,CAAC,CAACC;QACP,OAAOA,EAAEC,QAAQ,CAAC,UAAUD,EAAEC,QAAQ,CAAC;IACzC,GACCC,GAAG,CAAC,CAACC;QACJ,OAAOjB,KAAKkB,OAAO,CAAChB,QAAQE,EAAE,CAACC,YAAY,EAAEY;IAC/C;IAEF,OAAOE,QAAQC,GAAG,CAChBV,MAAMM,GAAG,CAAC,OAAOK;QACf,0CAA0C;QAC1C,IAAIC,YAAY,MAAMC,KACpB,CAAC,EAAE,OAAOC,YAAY,aAAa,YAAY,SAAS,EAAE,EAAEH,SAASI,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC;QAEhG,IAAI,aAAaH,WAAWA,YAAYA,UAAUI,OAAO;QAEzD,MAAMC,SAAoB;YACxBC,MAAM5B,KAAK6B,QAAQ,CAACR,UAAUS,KAAK,CAAC,MAAM,CAAC,EAAE;YAC7CC,MAAMT,UAAUS,IAAI;YACpBC,IAAIV,UAAUU,EAAE;QAClB;QAEA,OAAOL;IACT;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/queryValidation/types.ts"],"sourcesContent":["import type { CollectionPermission, GlobalPermission } from '../../auth/index.js'\nimport type { Field, FieldAffectingData, TabAsField, UIField } from '../../fields/config/types.js'\n\nexport type EntityPolicies = {\n collections?: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type PathToQuery = {\n collectionSlug?: string\n complete: boolean\n field: Field | TabAsField\n fields?: (FieldAffectingData | TabAsField | UIField)[]\n globalSlug?: string\n invalid?: boolean\n path: string\n}\n"],"names":[],"mappings":"AAYA,WAQC"}
1
+ {"version":3,"sources":["../../../src/database/queryValidation/types.ts"],"sourcesContent":["import type { CollectionPermission, GlobalPermission } from '../../auth/index.js'\nimport type { Field, FieldAffectingData, TabAsField, UIField } from '../../fields/config/types.js'\n\nexport type EntityPolicies = {\n collections?: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type PathToQuery = {\n collectionSlug?: string\n complete: boolean\n field: Field | TabAsField\n fields?: (FieldAffectingData | TabAsField | UIField)[]\n globalSlug?: string\n invalid?: boolean\n path: string\n}\n"],"names":[],"rangeMappings":"","mappings":"AAYA,WAQC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/queryValidation/validateQueryPaths.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Field, FieldAffectingData } from '../../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\n/* eslint-disable no-await-in-loop */\nimport type { Operator, PayloadRequest, Where, WhereField } from '../../types/index.js'\nimport type { EntityPolicies } from './types.js'\n\nimport QueryError from '../../errors/QueryError.js'\nimport { validOperators } from '../../types/constants.js'\nimport { deepCopyObject } from '../../utilities/deepCopyObject.js'\nimport flattenFields from '../../utilities/flattenTopLevelFields.js'\nimport { validateSearchParam } from './validateSearchParams.js'\n\ntype Args = {\n errors?: { path: string }[]\n overrideAccess: boolean\n policies?: EntityPolicies\n req: PayloadRequest\n versionFields?: Field[]\n where: Where\n} & (\n | {\n collectionConfig: SanitizedCollectionConfig\n globalConfig?: never | undefined\n }\n | {\n collectionConfig?: never | undefined\n globalConfig: SanitizedGlobalConfig\n }\n)\n\nconst flattenWhere = (query: Where): WhereField[] =>\n Object.entries(query).reduce((flattenedConstraints, [key, val]) => {\n if ((key === 'and' || key === 'or') && Array.isArray(val)) {\n const subWhereConstraints: Where[] = val.reduce((acc, subVal) => {\n const subWhere = flattenWhere(subVal)\n return [...acc, ...subWhere]\n }, [])\n return [...flattenedConstraints, ...subWhereConstraints]\n }\n\n return [...flattenedConstraints, { [key]: val }]\n }, [])\n\nexport async function validateQueryPaths({\n collectionConfig,\n errors = [],\n globalConfig,\n overrideAccess,\n policies = {\n collections: {},\n globals: {},\n },\n req,\n versionFields,\n where,\n}: Args): Promise<void> {\n const fields = flattenFields(\n versionFields || (globalConfig || collectionConfig).fields,\n ) as FieldAffectingData[]\n if (typeof where === 'object') {\n const whereFields = flattenWhere(where)\n // We need to determine if the whereKey is an AND, OR, or a schema path\n const promises = []\n whereFields.map(async (constraint) => {\n Object.keys(constraint).map(async (path) => {\n Object.entries(constraint[path]).map(async ([operator, val]) => {\n if (validOperators.includes(operator as Operator)) {\n promises.push(\n validateSearchParam({\n collectionConfig: deepCopyObject(collectionConfig),\n errors,\n fields: fields as Field[],\n globalConfig: deepCopyObject(globalConfig),\n operator,\n overrideAccess,\n path,\n policies,\n req,\n val,\n versionFields,\n }),\n )\n }\n })\n })\n })\n await Promise.all(promises)\n if (errors.length > 0) {\n throw new QueryError(errors)\n }\n }\n}\n"],"names":["QueryError","validOperators","deepCopyObject","flattenFields","validateSearchParam","flattenWhere","query","Object","entries","reduce","flattenedConstraints","key","val","Array","isArray","subWhereConstraints","acc","subVal","subWhere","validateQueryPaths","collectionConfig","errors","globalConfig","overrideAccess","policies","collections","globals","req","versionFields","where","fields","whereFields","promises","map","constraint","keys","path","operator","includes","push","Promise","all","length"],"mappings":"AAAA,uCAAuC,GAQvC,OAAOA,gBAAgB,6BAA4B;AACnD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,OAAOC,mBAAmB,2CAA0C;AACpE,SAASC,mBAAmB,QAAQ,4BAA2B;AAoB/D,MAAMC,eAAe,CAACC,QACpBC,OAAOC,OAAO,CAACF,OAAOG,MAAM,CAAC,CAACC,sBAAsB,CAACC,KAAKC,IAAI;QAC5D,IAAI,AAACD,CAAAA,QAAQ,SAASA,QAAQ,IAAG,KAAME,MAAMC,OAAO,CAACF,MAAM;YACzD,MAAMG,sBAA+BH,IAAIH,MAAM,CAAC,CAACO,KAAKC;gBACpD,MAAMC,WAAWb,aAAaY;gBAC9B,OAAO;uBAAID;uBAAQE;iBAAS;YAC9B,GAAG,EAAE;YACL,OAAO;mBAAIR;mBAAyBK;aAAoB;QAC1D;QAEA,OAAO;eAAIL;YAAsB;gBAAE,CAACC,IAAI,EAAEC;YAAI;SAAE;IAClD,GAAG,EAAE;AAEP,OAAO,eAAeO,mBAAmB,EACvCC,gBAAgB,EAChBC,SAAS,EAAE,EACXC,YAAY,EACZC,cAAc,EACdC,WAAW;IACTC,aAAa,CAAC;IACdC,SAAS,CAAC;AACZ,CAAC,EACDC,GAAG,EACHC,aAAa,EACbC,KAAK,EACA;IACL,MAAMC,SAAS3B,cACbyB,iBAAiB,AAACN,CAAAA,gBAAgBF,gBAAe,EAAGU,MAAM;IAE5D,IAAI,OAAOD,UAAU,UAAU;QAC7B,MAAME,cAAc1B,aAAawB;QACjC,uEAAuE;QACvE,MAAMG,WAAW,EAAE;QACnBD,YAAYE,GAAG,CAAC,OAAOC;YACrB3B,OAAO4B,IAAI,CAACD,YAAYD,GAAG,CAAC,OAAOG;gBACjC7B,OAAOC,OAAO,CAAC0B,UAAU,CAACE,KAAK,EAAEH,GAAG,CAAC,OAAO,CAACI,UAAUzB,IAAI;oBACzD,IAAIX,eAAeqC,QAAQ,CAACD,WAAuB;wBACjDL,SAASO,IAAI,CACXnC,oBAAoB;4BAClBgB,kBAAkBlB,eAAekB;4BACjCC;4BACAS,QAAQA;4BACRR,cAAcpB,eAAeoB;4BAC7Be;4BACAd;4BACAa;4BACAZ;4BACAG;4BACAf;4BACAgB;wBACF;oBAEJ;gBACF;YACF;QACF;QACA,MAAMY,QAAQC,GAAG,CAACT;QAClB,IAAIX,OAAOqB,MAAM,GAAG,GAAG;YACrB,MAAM,IAAI1C,WAAWqB;QACvB;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/database/queryValidation/validateQueryPaths.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Field, FieldAffectingData } from '../../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\n/* eslint-disable no-await-in-loop */\nimport type { Operator, PayloadRequest, Where, WhereField } from '../../types/index.js'\nimport type { EntityPolicies } from './types.js'\n\nimport QueryError from '../../errors/QueryError.js'\nimport { validOperators } from '../../types/constants.js'\nimport { deepCopyObject } from '../../utilities/deepCopyObject.js'\nimport flattenFields from '../../utilities/flattenTopLevelFields.js'\nimport { validateSearchParam } from './validateSearchParams.js'\n\ntype Args = {\n errors?: { path: string }[]\n overrideAccess: boolean\n policies?: EntityPolicies\n req: PayloadRequest\n versionFields?: Field[]\n where: Where\n} & (\n | {\n collectionConfig: SanitizedCollectionConfig\n globalConfig?: never | undefined\n }\n | {\n collectionConfig?: never | undefined\n globalConfig: SanitizedGlobalConfig\n }\n)\n\nconst flattenWhere = (query: Where): WhereField[] =>\n Object.entries(query).reduce((flattenedConstraints, [key, val]) => {\n if ((key === 'and' || key === 'or') && Array.isArray(val)) {\n const subWhereConstraints: Where[] = val.reduce((acc, subVal) => {\n const subWhere = flattenWhere(subVal)\n return [...acc, ...subWhere]\n }, [])\n return [...flattenedConstraints, ...subWhereConstraints]\n }\n\n return [...flattenedConstraints, { [key]: val }]\n }, [])\n\nexport async function validateQueryPaths({\n collectionConfig,\n errors = [],\n globalConfig,\n overrideAccess,\n policies = {\n collections: {},\n globals: {},\n },\n req,\n versionFields,\n where,\n}: Args): Promise<void> {\n const fields = flattenFields(\n versionFields || (globalConfig || collectionConfig).fields,\n ) as FieldAffectingData[]\n if (typeof where === 'object') {\n const whereFields = flattenWhere(where)\n // We need to determine if the whereKey is an AND, OR, or a schema path\n const promises = []\n whereFields.map(async (constraint) => {\n Object.keys(constraint).map(async (path) => {\n Object.entries(constraint[path]).map(async ([operator, val]) => {\n if (validOperators.includes(operator as Operator)) {\n promises.push(\n validateSearchParam({\n collectionConfig: deepCopyObject(collectionConfig),\n errors,\n fields: fields as Field[],\n globalConfig: deepCopyObject(globalConfig),\n operator,\n overrideAccess,\n path,\n policies,\n req,\n val,\n versionFields,\n }),\n )\n }\n })\n })\n })\n await Promise.all(promises)\n if (errors.length > 0) {\n throw new QueryError(errors)\n }\n }\n}\n"],"names":["QueryError","validOperators","deepCopyObject","flattenFields","validateSearchParam","flattenWhere","query","Object","entries","reduce","flattenedConstraints","key","val","Array","isArray","subWhereConstraints","acc","subVal","subWhere","validateQueryPaths","collectionConfig","errors","globalConfig","overrideAccess","policies","collections","globals","req","versionFields","where","fields","whereFields","promises","map","constraint","keys","path","operator","includes","push","Promise","all","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,uCAAuC,GAQvC,OAAOA,gBAAgB,6BAA4B;AACnD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,OAAOC,mBAAmB,2CAA0C;AACpE,SAASC,mBAAmB,QAAQ,4BAA2B;AAoB/D,MAAMC,eAAe,CAACC,QACpBC,OAAOC,OAAO,CAACF,OAAOG,MAAM,CAAC,CAACC,sBAAsB,CAACC,KAAKC,IAAI;QAC5D,IAAI,AAACD,CAAAA,QAAQ,SAASA,QAAQ,IAAG,KAAME,MAAMC,OAAO,CAACF,MAAM;YACzD,MAAMG,sBAA+BH,IAAIH,MAAM,CAAC,CAACO,KAAKC;gBACpD,MAAMC,WAAWb,aAAaY;gBAC9B,OAAO;uBAAID;uBAAQE;iBAAS;YAC9B,GAAG,EAAE;YACL,OAAO;mBAAIR;mBAAyBK;aAAoB;QAC1D;QAEA,OAAO;eAAIL;YAAsB;gBAAE,CAACC,IAAI,EAAEC;YAAI;SAAE;IAClD,GAAG,EAAE;AAEP,OAAO,eAAeO,mBAAmB,EACvCC,gBAAgB,EAChBC,SAAS,EAAE,EACXC,YAAY,EACZC,cAAc,EACdC,WAAW;IACTC,aAAa,CAAC;IACdC,SAAS,CAAC;AACZ,CAAC,EACDC,GAAG,EACHC,aAAa,EACbC,KAAK,EACA;IACL,MAAMC,SAAS3B,cACbyB,iBAAiB,AAACN,CAAAA,gBAAgBF,gBAAe,EAAGU,MAAM;IAE5D,IAAI,OAAOD,UAAU,UAAU;QAC7B,MAAME,cAAc1B,aAAawB;QACjC,uEAAuE;QACvE,MAAMG,WAAW,EAAE;QACnBD,YAAYE,GAAG,CAAC,OAAOC;YACrB3B,OAAO4B,IAAI,CAACD,YAAYD,GAAG,CAAC,OAAOG;gBACjC7B,OAAOC,OAAO,CAAC0B,UAAU,CAACE,KAAK,EAAEH,GAAG,CAAC,OAAO,CAACI,UAAUzB,IAAI;oBACzD,IAAIX,eAAeqC,QAAQ,CAACD,WAAuB;wBACjDL,SAASO,IAAI,CACXnC,oBAAoB;4BAClBgB,kBAAkBlB,eAAekB;4BACjCC;4BACAS,QAAQA;4BACRR,cAAcpB,eAAeoB;4BAC7Be;4BACAd;4BACAa;4BACAZ;4BACAG;4BACAf;4BACAgB;wBACF;oBAEJ;gBACF;YACF;QACF;QACA,MAAMY,QAAQC,GAAG,CAACT;QAClB,IAAIX,OAAOqB,MAAM,GAAG,GAAG;YACrB,MAAM,IAAI1C,WAAWqB;QACvB;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/database/queryValidation/validateSearchParams.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Field } from '../../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { EntityPolicies, PathToQuery } from './types.js'\n\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { getEntityPolicies } from '../../utilities/getEntityPolicies.js'\nimport isolateObjectProperty from '../../utilities/isolateObjectProperty.js'\nimport { getLocalizedPaths } from '../getLocalizedPaths.js'\nimport { validateQueryPaths } from './validateQueryPaths.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n errors: { path: string }[]\n fields: Field[]\n globalConfig?: SanitizedGlobalConfig\n operator: string\n overrideAccess: boolean\n path: string\n policies: EntityPolicies\n req: PayloadRequest\n val: unknown\n versionFields?: Field[]\n}\n\n/**\n * Validate the Payload key / value / operator\n */\nexport async function validateSearchParam({\n collectionConfig,\n errors,\n fields,\n globalConfig,\n operator,\n overrideAccess,\n path: incomingPath,\n policies,\n req,\n val,\n versionFields,\n}: Args): Promise<void> {\n // Replace GraphQL nested field double underscore formatting\n let sanitizedPath\n if (incomingPath === '_id') {\n sanitizedPath = 'id'\n } else {\n sanitizedPath = incomingPath.replace(/__/g, '.')\n }\n let paths: PathToQuery[] = []\n const { slug } = collectionConfig || globalConfig\n\n if (globalConfig && !policies.globals[slug]) {\n // eslint-disable-next-line no-param-reassign\n globalConfig.fields = fields\n\n // eslint-disable-next-line no-param-reassign\n policies.globals[slug] = await getEntityPolicies({\n type: 'global',\n entity: globalConfig,\n operations: ['read'],\n req,\n })\n }\n\n if (sanitizedPath !== 'id') {\n paths = await getLocalizedPaths({\n collectionSlug: collectionConfig?.slug,\n fields,\n globalSlug: globalConfig?.slug,\n incomingPath: sanitizedPath,\n locale: req.locale,\n overrideAccess,\n payload: req.payload,\n })\n }\n const promises = []\n promises.push(\n ...paths.map(async ({ collectionSlug, field, invalid, path }, i) => {\n if (invalid) {\n errors.push({ path })\n return\n }\n\n if (!overrideAccess && fieldAffectsData(field)) {\n if (collectionSlug) {\n if (!policies.collections[collectionSlug]) {\n // eslint-disable-next-line no-param-reassign\n policies.collections[collectionSlug] = await getEntityPolicies({\n type: 'collection',\n entity: req.payload.collections[collectionSlug].config,\n operations: ['read'],\n req: isolateObjectProperty(req, 'transactionID'),\n })\n }\n\n if (\n ['hash', 'salt'].includes(incomingPath) &&\n collectionConfig.auth &&\n !collectionConfig.auth?.disableLocalStrategy\n ) {\n errors.push({ path: incomingPath })\n }\n }\n let fieldPath = path\n // remove locale from end of path\n if (path.endsWith(`.${req.locale}`)) {\n fieldPath = path.slice(0, -(req.locale.length + 1))\n }\n // remove \".value\" from ends of polymorphic relationship paths\n if (field.type === 'relationship' && Array.isArray(field.relationTo)) {\n fieldPath = fieldPath.replace('.value', '')\n }\n const entityType: 'collections' | 'globals' = globalConfig ? 'globals' : 'collections'\n const entitySlug = collectionSlug || globalConfig.slug\n const segments = fieldPath.split('.')\n\n let fieldAccess\n if (versionFields) {\n fieldAccess = policies[entityType][entitySlug]\n if (segments[0] === 'parent' || segments[0] === 'version') {\n segments.shift()\n }\n } else {\n fieldAccess = policies[entityType][entitySlug].fields\n }\n\n segments.forEach((segment) => {\n if (fieldAccess[segment]) {\n if ('fields' in fieldAccess[segment]) {\n fieldAccess = fieldAccess[segment].fields\n } else if ('blocks' in fieldAccess[segment]) {\n fieldAccess = fieldAccess[segment]\n } else {\n fieldAccess = fieldAccess[segment]\n }\n }\n })\n\n if (!fieldAccess?.read?.permission) {\n errors.push({ path: fieldPath })\n }\n }\n\n if (i > 1) {\n // Remove top collection and reverse array\n // to work backwards from top\n const pathsToQuery = paths.slice(1).reverse()\n\n pathsToQuery.forEach(\n ({ collectionSlug: pathCollectionSlug, path: subPath }, pathToQueryIndex) => {\n // On the \"deepest\" collection,\n // validate query of the relationship\n if (pathToQueryIndex === 0) {\n promises.push(\n validateQueryPaths({\n collectionConfig: req.payload.collections[pathCollectionSlug].config,\n errors,\n globalConfig: undefined,\n overrideAccess,\n policies,\n req,\n where: {\n [subPath]: {\n [operator]: val,\n },\n },\n }),\n )\n }\n },\n )\n }\n }),\n )\n await Promise.all(promises)\n}\n"],"names":["fieldAffectsData","getEntityPolicies","isolateObjectProperty","getLocalizedPaths","validateQueryPaths","validateSearchParam","collectionConfig","errors","fields","globalConfig","operator","overrideAccess","path","incomingPath","policies","req","val","versionFields","sanitizedPath","replace","paths","slug","globals","type","entity","operations","collectionSlug","globalSlug","locale","payload","promises","push","map","field","invalid","i","collections","config","includes","auth","disableLocalStrategy","fieldPath","endsWith","slice","length","Array","isArray","relationTo","entityType","entitySlug","segments","split","fieldAccess","shift","forEach","segment","read","permission","pathsToQuery","reverse","pathCollectionSlug","subPath","pathToQueryIndex","undefined","where","Promise","all"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/database/queryValidation/validateSearchParams.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { Field } from '../../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { EntityPolicies, PathToQuery } from './types.js'\n\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { getEntityPolicies } from '../../utilities/getEntityPolicies.js'\nimport isolateObjectProperty from '../../utilities/isolateObjectProperty.js'\nimport { getLocalizedPaths } from '../getLocalizedPaths.js'\nimport { validateQueryPaths } from './validateQueryPaths.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n errors: { path: string }[]\n fields: Field[]\n globalConfig?: SanitizedGlobalConfig\n operator: string\n overrideAccess: boolean\n path: string\n policies: EntityPolicies\n req: PayloadRequest\n val: unknown\n versionFields?: Field[]\n}\n\n/**\n * Validate the Payload key / value / operator\n */\nexport async function validateSearchParam({\n collectionConfig,\n errors,\n fields,\n globalConfig,\n operator,\n overrideAccess,\n path: incomingPath,\n policies,\n req,\n val,\n versionFields,\n}: Args): Promise<void> {\n // Replace GraphQL nested field double underscore formatting\n let sanitizedPath\n if (incomingPath === '_id') {\n sanitizedPath = 'id'\n } else {\n sanitizedPath = incomingPath.replace(/__/g, '.')\n }\n let paths: PathToQuery[] = []\n const { slug } = collectionConfig || globalConfig\n\n if (globalConfig && !policies.globals[slug]) {\n // eslint-disable-next-line no-param-reassign\n globalConfig.fields = fields\n\n // eslint-disable-next-line no-param-reassign\n policies.globals[slug] = await getEntityPolicies({\n type: 'global',\n entity: globalConfig,\n operations: ['read'],\n req,\n })\n }\n\n if (sanitizedPath !== 'id') {\n paths = await getLocalizedPaths({\n collectionSlug: collectionConfig?.slug,\n fields,\n globalSlug: globalConfig?.slug,\n incomingPath: sanitizedPath,\n locale: req.locale,\n overrideAccess,\n payload: req.payload,\n })\n }\n const promises = []\n promises.push(\n ...paths.map(async ({ collectionSlug, field, invalid, path }, i) => {\n if (invalid) {\n errors.push({ path })\n return\n }\n\n if (!overrideAccess && fieldAffectsData(field)) {\n if (collectionSlug) {\n if (!policies.collections[collectionSlug]) {\n // eslint-disable-next-line no-param-reassign\n policies.collections[collectionSlug] = await getEntityPolicies({\n type: 'collection',\n entity: req.payload.collections[collectionSlug].config,\n operations: ['read'],\n req: isolateObjectProperty(req, 'transactionID'),\n })\n }\n\n if (\n ['hash', 'salt'].includes(incomingPath) &&\n collectionConfig.auth &&\n !collectionConfig.auth?.disableLocalStrategy\n ) {\n errors.push({ path: incomingPath })\n }\n }\n let fieldPath = path\n // remove locale from end of path\n if (path.endsWith(`.${req.locale}`)) {\n fieldPath = path.slice(0, -(req.locale.length + 1))\n }\n // remove \".value\" from ends of polymorphic relationship paths\n if (field.type === 'relationship' && Array.isArray(field.relationTo)) {\n fieldPath = fieldPath.replace('.value', '')\n }\n const entityType: 'collections' | 'globals' = globalConfig ? 'globals' : 'collections'\n const entitySlug = collectionSlug || globalConfig.slug\n const segments = fieldPath.split('.')\n\n let fieldAccess\n if (versionFields) {\n fieldAccess = policies[entityType][entitySlug]\n if (segments[0] === 'parent' || segments[0] === 'version') {\n segments.shift()\n }\n } else {\n fieldAccess = policies[entityType][entitySlug].fields\n }\n\n segments.forEach((segment) => {\n if (fieldAccess[segment]) {\n if ('fields' in fieldAccess[segment]) {\n fieldAccess = fieldAccess[segment].fields\n } else if ('blocks' in fieldAccess[segment]) {\n fieldAccess = fieldAccess[segment]\n } else {\n fieldAccess = fieldAccess[segment]\n }\n }\n })\n\n if (!fieldAccess?.read?.permission) {\n errors.push({ path: fieldPath })\n }\n }\n\n if (i > 1) {\n // Remove top collection and reverse array\n // to work backwards from top\n const pathsToQuery = paths.slice(1).reverse()\n\n pathsToQuery.forEach(\n ({ collectionSlug: pathCollectionSlug, path: subPath }, pathToQueryIndex) => {\n // On the \"deepest\" collection,\n // validate query of the relationship\n if (pathToQueryIndex === 0) {\n promises.push(\n validateQueryPaths({\n collectionConfig: req.payload.collections[pathCollectionSlug].config,\n errors,\n globalConfig: undefined,\n overrideAccess,\n policies,\n req,\n where: {\n [subPath]: {\n [operator]: val,\n },\n },\n }),\n )\n }\n },\n )\n }\n }),\n )\n await Promise.all(promises)\n}\n"],"names":["fieldAffectsData","getEntityPolicies","isolateObjectProperty","getLocalizedPaths","validateQueryPaths","validateSearchParam","collectionConfig","errors","fields","globalConfig","operator","overrideAccess","path","incomingPath","policies","req","val","versionFields","sanitizedPath","replace","paths","slug","globals","type","entity","operations","collectionSlug","globalSlug","locale","payload","promises","push","map","field","invalid","i","collections","config","includes","auth","disableLocalStrategy","fieldPath","endsWith","slice","length","Array","isArray","relationTo","entityType","entitySlug","segments","split","fieldAccess","shift","forEach","segment","read","permission","pathsToQuery","reverse","pathCollectionSlug","subPath","pathToQueryIndex","undefined","where","Promise","all"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/types.ts"],"sourcesContent":["import type { TypeWithID } from '../collections/config/types.js'\nimport type { TypeWithID as GlobalsTypeWithID } from '../globals/config/types.js'\nimport type { Document, Payload, PayloadRequest, Where } from '../types/index.js'\nimport type { TypeWithVersion } from '../versions/types.js'\n\nexport type { TypeWithVersion }\n\nexport interface BaseDatabaseAdapter {\n /**\n * Start a transaction, requiring commitTransaction() to be called for any changes to be made.\n * @returns an identifier for the transaction or null if one cannot be established\n */\n beginTransaction?: BeginTransaction\n /**\n * Persist the changes made since the start of the transaction.\n */\n commitTransaction?: CommitTransaction\n\n /**\n * Open the connection to the database\n */\n connect?: Connect\n\n create: Create\n\n createGlobal: CreateGlobal\n\n createGlobalVersion: CreateGlobalVersion\n /**\n * Output a migration file\n */\n createMigration: CreateMigration\n\n createVersion: CreateVersion\n\n /**\n * Specify if the ID is a text or number field by default within this database adapter.\n */\n defaultIDType: 'number' | 'text'\n\n deleteMany: DeleteMany\n\n deleteOne: DeleteOne\n\n deleteVersions: DeleteVersions\n\n /**\n * Terminate the connection with the database\n */\n destroy?: Destroy\n\n find: <T = TypeWithID>(args: FindArgs) => Promise<PaginatedDocs<T>>\n\n findGlobal: FindGlobal\n\n findGlobalVersions: FindGlobalVersions\n\n findOne: FindOne\n\n findVersions: FindVersions\n\n /**\n * Perform startup tasks required to interact with the database such as building Schema and models\n */\n init?: Init\n\n /**\n * Run any migration up functions that have not yet been performed and update the status\n */\n migrate: () => Promise<void>\n\n /**\n * Run any migration down functions that have been performed\n */\n migrateDown: () => Promise<void>\n\n /**\n * Drop the current database and run all migrate up functions\n */\n migrateFresh: (args: { forceAcceptWarning?: boolean }) => Promise<void>\n /**\n * Run all migration down functions before running up\n */\n migrateRefresh: () => Promise<void>\n\n /**\n * Run all migrate down functions\n */\n migrateReset: () => Promise<void>\n /**\n * Read the current state of migrations and output the result to show which have been run\n */\n migrateStatus: () => Promise<void>\n /**\n * Path to read and write migration files from\n */\n migrationDir: string\n /**\n * The name of the database adapter\n */\n name: string\n /**\n * reference to the instance of payload\n */\n payload: Payload\n\n queryDrafts: QueryDrafts\n /**\n * Abort any changes since the start of the transaction.\n */\n rollbackTransaction?: RollbackTransaction\n /**\n * A key-value store of all sessions open (used for transactions)\n */\n sessions?: {\n [id: string]: {\n db: unknown\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n\n updateGlobal: UpdateGlobal\n\n updateGlobalVersion: UpdateGlobalVersion\n\n updateOne: UpdateOne\n\n updateVersion: UpdateVersion\n}\n\nexport type Init = () => Promise<void> | void\n\ntype ConnectArgs = {\n hotReload: boolean\n}\n\nexport type Connect = (args?: ConnectArgs) => Promise<void>\n\nexport type Destroy = () => Promise<void>\n\nexport type CreateMigration = (args: {\n file?: string\n /**\n * Skips the prompt asking to create empty migrations\n */\n forceAcceptWarning?: boolean\n migrationName?: string\n payload: Payload\n}) => Promise<void>\n\nexport type Transaction = (\n callback: () => Promise<void>,\n options?: Record<string, unknown>,\n) => Promise<void>\n\nexport type BeginTransaction = (\n options?: Record<string, unknown>,\n) => Promise<null | number | string>\n\nexport type RollbackTransaction = (id: number | string) => Promise<void>\n\nexport type CommitTransaction = (id: number | string) => Promise<void>\n\nexport type QueryDraftsArgs = {\n collection: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n sort?: string\n where?: Where\n}\n\nexport type QueryDrafts = <T = TypeWithID>(args: QueryDraftsArgs) => Promise<PaginatedDocs<T>>\n\nexport type FindOneArgs = {\n collection: string\n locale?: string\n req: PayloadRequest\n where?: Where\n}\n\nexport type FindOne = <T extends TypeWithID>(args: FindOneArgs) => Promise<T | null>\n\nexport type FindArgs = {\n collection: string\n /** Setting limit to 1 is equal to the previous Model.findOne(). Setting limit to 0 disables the limit */\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n skip?: number\n sort?: string\n versions?: boolean\n where?: Where\n}\n\nexport type Find = <T = TypeWithID>(args: FindArgs) => Promise<PaginatedDocs<T>>\n\ntype BaseVersionArgs = {\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n skip?: number\n sort?: string\n versions?: boolean\n where?: Where\n}\n\nexport type FindVersionsArgs = BaseVersionArgs & {\n collection: string\n}\n\nexport type FindVersions = <T = TypeWithID>(\n args: FindVersionsArgs,\n) => Promise<PaginatedDocs<TypeWithVersion<T>>>\n\nexport type FindGlobalVersionsArgs = BaseVersionArgs & {\n global: string\n}\n\nexport type FindGlobalArgs = {\n locale?: string\n req: PayloadRequest\n slug: string\n where?: Where\n}\n\nexport type UpdateGlobalVersionArgs<T = TypeWithID> = {\n global: string\n locale?: string\n req: PayloadRequest\n versionData: T\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateGlobalVersion = <T extends TypeWithID = TypeWithID>(\n args: UpdateGlobalVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type FindGlobal = <T extends GlobalsTypeWithID = any>(args: FindGlobalArgs) => Promise<T>\n\nexport type CreateGlobalArgs<T extends GlobalsTypeWithID = any> = {\n data: T\n req: PayloadRequest\n slug: string\n}\nexport type CreateGlobal = <T extends GlobalsTypeWithID = any>(\n args: CreateGlobalArgs<T>,\n) => Promise<T>\n\nexport type UpdateGlobalArgs<T extends GlobalsTypeWithID = any> = {\n data: T\n req: PayloadRequest\n slug: string\n}\nexport type UpdateGlobal = <T extends GlobalsTypeWithID = any>(\n args: UpdateGlobalArgs<T>,\n) => Promise<T>\n// export type UpdateOne = (args: UpdateOneArgs) => Promise<Document>\n\nexport type FindGlobalVersions = <T = TypeWithID>(\n args: FindGlobalVersionsArgs,\n) => Promise<PaginatedDocs<TypeWithVersion<T>>>\n\nexport type DeleteVersionsArgs = {\n collection: string\n locale?: string\n req: PayloadRequest\n sort?: {\n [key: string]: string\n }\n where: Where\n}\n\nexport type CreateVersionArgs<T = TypeWithID> = {\n autosave: boolean\n collectionSlug: string\n createdAt: string\n /** ID of the parent document for which the version should be created for */\n parent: number | string\n req: PayloadRequest\n updatedAt: string\n versionData: T\n}\n\nexport type CreateVersion = <T extends TypeWithID = TypeWithID>(\n args: CreateVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type CreateGlobalVersionArgs<T = TypeWithID> = {\n autosave: boolean\n createdAt: string\n globalSlug: string\n /** ID of the parent document for which the version should be created for */\n parent: number | string\n req: PayloadRequest\n updatedAt: string\n versionData: T\n}\n\nexport type CreateGlobalVersion = <T extends TypeWithID = TypeWithID>(\n args: CreateGlobalVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type DeleteVersions = (args: DeleteVersionsArgs) => Promise<void>\n\nexport type UpdateVersionArgs<T = TypeWithID> = {\n collection: string\n locale?: string\n req: PayloadRequest\n versionData: T\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateVersion = <T extends TypeWithID = TypeWithID>(\n args: UpdateVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type CreateArgs = {\n collection: string\n data: Record<string, unknown>\n draft?: boolean\n locale?: string\n req: PayloadRequest\n}\n\nexport type Create = (args: CreateArgs) => Promise<Document>\n\nexport type UpdateOneArgs = {\n collection: string\n data: Record<string, unknown>\n draft?: boolean\n locale?: string\n req: PayloadRequest\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateOne = (args: UpdateOneArgs) => Promise<Document>\n\nexport type DeleteOneArgs = {\n collection: string\n req: PayloadRequest\n where: Where\n}\n\nexport type DeleteOne = (args: DeleteOneArgs) => Promise<Document>\n\nexport type DeleteManyArgs = {\n collection: string\n req: PayloadRequest\n where: Where\n}\n\nexport type DeleteMany = (args: DeleteManyArgs) => Promise<void>\n\nexport type Migration = MigrationData & {\n down: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise<boolean>\n up: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise<boolean>\n}\n\nexport type MigrationData = {\n batch?: number\n id?: string\n name: string\n}\n\nexport type PaginatedDocs<T = any> = {\n docs: T[]\n hasNextPage: boolean\n hasPrevPage: boolean\n limit: number\n nextPage?: null | number | undefined\n page?: number\n pagingCounter: number\n prevPage?: null | number | undefined\n totalDocs: number\n totalPages: number\n}\n\nexport type DatabaseAdapterResult<T = BaseDatabaseAdapter> = {\n defaultIDType: 'number' | 'text'\n init: (args: { payload: Payload }) => T\n}\n\nexport type DBIdentifierName =\n | ((Args: {\n /** The name of the parent table when using relational DBs */\n tableName?: string\n }) => string)\n | string\n"],"names":[],"mappings":"AA8ZA,WAKU"}
1
+ {"version":3,"sources":["../../src/database/types.ts"],"sourcesContent":["import type { TypeWithID } from '../collections/config/types.js'\nimport type { TypeWithID as GlobalsTypeWithID } from '../globals/config/types.js'\nimport type { Document, Payload, PayloadRequest, Where } from '../types/index.js'\nimport type { TypeWithVersion } from '../versions/types.js'\n\nexport type { TypeWithVersion }\n\nexport interface BaseDatabaseAdapter {\n /**\n * Start a transaction, requiring commitTransaction() to be called for any changes to be made.\n * @returns an identifier for the transaction or null if one cannot be established\n */\n beginTransaction?: BeginTransaction\n /**\n * Persist the changes made since the start of the transaction.\n */\n commitTransaction?: CommitTransaction\n\n /**\n * Open the connection to the database\n */\n connect?: Connect\n\n create: Create\n\n createGlobal: CreateGlobal\n\n createGlobalVersion: CreateGlobalVersion\n /**\n * Output a migration file\n */\n createMigration: CreateMigration\n\n createVersion: CreateVersion\n\n /**\n * Specify if the ID is a text or number field by default within this database adapter.\n */\n defaultIDType: 'number' | 'text'\n\n deleteMany: DeleteMany\n\n deleteOne: DeleteOne\n\n deleteVersions: DeleteVersions\n\n /**\n * Terminate the connection with the database\n */\n destroy?: Destroy\n\n find: <T = TypeWithID>(args: FindArgs) => Promise<PaginatedDocs<T>>\n\n findGlobal: FindGlobal\n\n findGlobalVersions: FindGlobalVersions\n\n findOne: FindOne\n\n findVersions: FindVersions\n\n /**\n * Perform startup tasks required to interact with the database such as building Schema and models\n */\n init?: Init\n\n /**\n * Run any migration up functions that have not yet been performed and update the status\n */\n migrate: () => Promise<void>\n\n /**\n * Run any migration down functions that have been performed\n */\n migrateDown: () => Promise<void>\n\n /**\n * Drop the current database and run all migrate up functions\n */\n migrateFresh: (args: { forceAcceptWarning?: boolean }) => Promise<void>\n /**\n * Run all migration down functions before running up\n */\n migrateRefresh: () => Promise<void>\n\n /**\n * Run all migrate down functions\n */\n migrateReset: () => Promise<void>\n /**\n * Read the current state of migrations and output the result to show which have been run\n */\n migrateStatus: () => Promise<void>\n /**\n * Path to read and write migration files from\n */\n migrationDir: string\n /**\n * The name of the database adapter\n */\n name: string\n /**\n * reference to the instance of payload\n */\n payload: Payload\n\n queryDrafts: QueryDrafts\n /**\n * Abort any changes since the start of the transaction.\n */\n rollbackTransaction?: RollbackTransaction\n /**\n * A key-value store of all sessions open (used for transactions)\n */\n sessions?: {\n [id: string]: {\n db: unknown\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n\n updateGlobal: UpdateGlobal\n\n updateGlobalVersion: UpdateGlobalVersion\n\n updateOne: UpdateOne\n\n updateVersion: UpdateVersion\n}\n\nexport type Init = () => Promise<void> | void\n\ntype ConnectArgs = {\n hotReload: boolean\n}\n\nexport type Connect = (args?: ConnectArgs) => Promise<void>\n\nexport type Destroy = () => Promise<void>\n\nexport type CreateMigration = (args: {\n file?: string\n /**\n * Skips the prompt asking to create empty migrations\n */\n forceAcceptWarning?: boolean\n migrationName?: string\n payload: Payload\n}) => Promise<void>\n\nexport type Transaction = (\n callback: () => Promise<void>,\n options?: Record<string, unknown>,\n) => Promise<void>\n\nexport type BeginTransaction = (\n options?: Record<string, unknown>,\n) => Promise<null | number | string>\n\nexport type RollbackTransaction = (id: number | string) => Promise<void>\n\nexport type CommitTransaction = (id: number | string) => Promise<void>\n\nexport type QueryDraftsArgs = {\n collection: string\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n sort?: string\n where?: Where\n}\n\nexport type QueryDrafts = <T = TypeWithID>(args: QueryDraftsArgs) => Promise<PaginatedDocs<T>>\n\nexport type FindOneArgs = {\n collection: string\n locale?: string\n req: PayloadRequest\n where?: Where\n}\n\nexport type FindOne = <T extends TypeWithID>(args: FindOneArgs) => Promise<T | null>\n\nexport type FindArgs = {\n collection: string\n /** Setting limit to 1 is equal to the previous Model.findOne(). Setting limit to 0 disables the limit */\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n skip?: number\n sort?: string\n versions?: boolean\n where?: Where\n}\n\nexport type Find = <T = TypeWithID>(args: FindArgs) => Promise<PaginatedDocs<T>>\n\ntype BaseVersionArgs = {\n limit?: number\n locale?: string\n page?: number\n pagination?: boolean\n req: PayloadRequest\n skip?: number\n sort?: string\n versions?: boolean\n where?: Where\n}\n\nexport type FindVersionsArgs = BaseVersionArgs & {\n collection: string\n}\n\nexport type FindVersions = <T = TypeWithID>(\n args: FindVersionsArgs,\n) => Promise<PaginatedDocs<TypeWithVersion<T>>>\n\nexport type FindGlobalVersionsArgs = BaseVersionArgs & {\n global: string\n}\n\nexport type FindGlobalArgs = {\n locale?: string\n req: PayloadRequest\n slug: string\n where?: Where\n}\n\nexport type UpdateGlobalVersionArgs<T = TypeWithID> = {\n global: string\n locale?: string\n req: PayloadRequest\n versionData: T\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateGlobalVersion = <T extends TypeWithID = TypeWithID>(\n args: UpdateGlobalVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type FindGlobal = <T extends GlobalsTypeWithID = any>(args: FindGlobalArgs) => Promise<T>\n\nexport type CreateGlobalArgs<T extends GlobalsTypeWithID = any> = {\n data: T\n req: PayloadRequest\n slug: string\n}\nexport type CreateGlobal = <T extends GlobalsTypeWithID = any>(\n args: CreateGlobalArgs<T>,\n) => Promise<T>\n\nexport type UpdateGlobalArgs<T extends GlobalsTypeWithID = any> = {\n data: T\n req: PayloadRequest\n slug: string\n}\nexport type UpdateGlobal = <T extends GlobalsTypeWithID = any>(\n args: UpdateGlobalArgs<T>,\n) => Promise<T>\n// export type UpdateOne = (args: UpdateOneArgs) => Promise<Document>\n\nexport type FindGlobalVersions = <T = TypeWithID>(\n args: FindGlobalVersionsArgs,\n) => Promise<PaginatedDocs<TypeWithVersion<T>>>\n\nexport type DeleteVersionsArgs = {\n collection: string\n locale?: string\n req: PayloadRequest\n sort?: {\n [key: string]: string\n }\n where: Where\n}\n\nexport type CreateVersionArgs<T = TypeWithID> = {\n autosave: boolean\n collectionSlug: string\n createdAt: string\n /** ID of the parent document for which the version should be created for */\n parent: number | string\n req: PayloadRequest\n updatedAt: string\n versionData: T\n}\n\nexport type CreateVersion = <T extends TypeWithID = TypeWithID>(\n args: CreateVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type CreateGlobalVersionArgs<T = TypeWithID> = {\n autosave: boolean\n createdAt: string\n globalSlug: string\n /** ID of the parent document for which the version should be created for */\n parent: number | string\n req: PayloadRequest\n updatedAt: string\n versionData: T\n}\n\nexport type CreateGlobalVersion = <T extends TypeWithID = TypeWithID>(\n args: CreateGlobalVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type DeleteVersions = (args: DeleteVersionsArgs) => Promise<void>\n\nexport type UpdateVersionArgs<T = TypeWithID> = {\n collection: string\n locale?: string\n req: PayloadRequest\n versionData: T\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateVersion = <T extends TypeWithID = TypeWithID>(\n args: UpdateVersionArgs<T>,\n) => Promise<TypeWithVersion<T>>\n\nexport type CreateArgs = {\n collection: string\n data: Record<string, unknown>\n draft?: boolean\n locale?: string\n req: PayloadRequest\n}\n\nexport type Create = (args: CreateArgs) => Promise<Document>\n\nexport type UpdateOneArgs = {\n collection: string\n data: Record<string, unknown>\n draft?: boolean\n locale?: string\n req: PayloadRequest\n} & (\n | {\n id: number | string\n where?: never\n }\n | {\n id?: never\n where: Where\n }\n)\n\nexport type UpdateOne = (args: UpdateOneArgs) => Promise<Document>\n\nexport type DeleteOneArgs = {\n collection: string\n req: PayloadRequest\n where: Where\n}\n\nexport type DeleteOne = (args: DeleteOneArgs) => Promise<Document>\n\nexport type DeleteManyArgs = {\n collection: string\n req: PayloadRequest\n where: Where\n}\n\nexport type DeleteMany = (args: DeleteManyArgs) => Promise<void>\n\nexport type Migration = MigrationData & {\n down: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise<boolean>\n up: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise<boolean>\n}\n\nexport type MigrationData = {\n batch?: number\n id?: string\n name: string\n}\n\nexport type PaginatedDocs<T = any> = {\n docs: T[]\n hasNextPage: boolean\n hasPrevPage: boolean\n limit: number\n nextPage?: null | number | undefined\n page?: number\n pagingCounter: number\n prevPage?: null | number | undefined\n totalDocs: number\n totalPages: number\n}\n\nexport type DatabaseAdapterResult<T = BaseDatabaseAdapter> = {\n defaultIDType: 'number' | 'text'\n init: (args: { payload: Payload }) => T\n}\n\nexport type DBIdentifierName =\n | ((Args: {\n /** The name of the parent table when using relational DBs */\n tableName?: string\n }) => string)\n | string\n"],"names":[],"rangeMappings":"","mappings":"AA8ZA,WAKU"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/email/build.ts"],"sourcesContent":["import type { Transporter } from 'nodemailer'\nimport type { Logger } from 'pino'\n\nimport nodemailer from 'nodemailer'\n\nimport type { EmailOptions, EmailTransport } from '../config/types.js'\nimport type { BuildEmailResult, MockEmailHandler } from './types.js'\n\nimport { hasTransport, hasTransportOptions } from '../config/types.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport mockHandler from './mockHandler.js'\n\nasync function handleTransport(\n transport: Transporter,\n email: EmailTransport,\n logger: Logger,\n): BuildEmailResult {\n try {\n await transport.verify()\n } catch (err) {\n logger.error(`There is an error with the email configuration you have provided. ${err}`)\n }\n\n return { ...email, transport }\n}\n\nconst ensureConfigHasFrom = (emailConfig: EmailOptions) => {\n if (!emailConfig?.fromName || !emailConfig?.fromAddress) {\n throw new InvalidConfiguration(\n 'Email fromName and fromAddress must be configured when transport is configured',\n )\n }\n}\n\nconst handleMockAccount = async (emailConfig: EmailOptions, logger: Logger) => {\n let mockAccount: MockEmailHandler\n try {\n mockAccount = await mockHandler(emailConfig)\n const {\n account: { pass, user, web },\n } = mockAccount\n if (emailConfig?.logMockCredentials) {\n logger.info('E-mail configured with mock configuration')\n logger.info(`Log into mock email provider at ${web}`)\n logger.info(`Mock email account username: ${user}`)\n logger.info(`Mock email account password: ${pass}`)\n }\n } catch (err) {\n logger.error({ err, msg: 'There was a problem setting up the mock email handler' })\n }\n return mockAccount\n}\n\nexport default async function buildEmail(\n emailConfig: EmailOptions | undefined,\n logger: Logger,\n): BuildEmailResult {\n if (!emailConfig) {\n return handleMockAccount(emailConfig, logger)\n }\n\n if (hasTransport(emailConfig) && emailConfig.transport) {\n ensureConfigHasFrom(emailConfig)\n const email = { ...emailConfig }\n const { transport }: { transport: Transporter } = emailConfig\n return handleTransport(transport, email, logger)\n }\n\n if (hasTransportOptions(emailConfig) && emailConfig.transportOptions) {\n ensureConfigHasFrom(emailConfig)\n const email = { ...emailConfig } as EmailTransport\n const transport = nodemailer.createTransport(emailConfig.transportOptions)\n return handleTransport(transport, email, logger)\n }\n\n return handleMockAccount(emailConfig, logger)\n}\n"],"names":["nodemailer","hasTransport","hasTransportOptions","InvalidConfiguration","mockHandler","handleTransport","transport","email","logger","verify","err","error","ensureConfigHasFrom","emailConfig","fromName","fromAddress","handleMockAccount","mockAccount","account","pass","user","web","logMockCredentials","info","msg","buildEmail","transportOptions","createTransport"],"mappings":"AAGA,OAAOA,gBAAgB,aAAY;AAKnC,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,qBAAoB;AACtE,SAASC,oBAAoB,QAAQ,qBAAoB;AACzD,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAeC,gBACbC,SAAsB,EACtBC,KAAqB,EACrBC,MAAc;IAEd,IAAI;QACF,MAAMF,UAAUG,MAAM;IACxB,EAAE,OAAOC,KAAK;QACZF,OAAOG,KAAK,CAAC,CAAC,kEAAkE,EAAED,IAAI,CAAC;IACzF;IAEA,OAAO;QAAE,GAAGH,KAAK;QAAED;IAAU;AAC/B;AAEA,MAAMM,sBAAsB,CAACC;IAC3B,IAAI,CAACA,aAAaC,YAAY,CAACD,aAAaE,aAAa;QACvD,MAAM,IAAIZ,qBACR;IAEJ;AACF;AAEA,MAAMa,oBAAoB,OAAOH,aAA2BL;IAC1D,IAAIS;IACJ,IAAI;QACFA,cAAc,MAAMb,YAAYS;QAChC,MAAM,EACJK,SAAS,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAE,EAC7B,GAAGJ;QACJ,IAAIJ,aAAaS,oBAAoB;YACnCd,OAAOe,IAAI,CAAC;YACZf,OAAOe,IAAI,CAAC,CAAC,gCAAgC,EAAEF,IAAI,CAAC;YACpDb,OAAOe,IAAI,CAAC,CAAC,6BAA6B,EAAEH,KAAK,CAAC;YAClDZ,OAAOe,IAAI,CAAC,CAAC,6BAA6B,EAAEJ,KAAK,CAAC;QACpD;IACF,EAAE,OAAOT,KAAK;QACZF,OAAOG,KAAK,CAAC;YAAED;YAAKc,KAAK;QAAwD;IACnF;IACA,OAAOP;AACT;AAEA,eAAe,eAAeQ,WAC5BZ,WAAqC,EACrCL,MAAc;IAEd,IAAI,CAACK,aAAa;QAChB,OAAOG,kBAAkBH,aAAaL;IACxC;IAEA,IAAIP,aAAaY,gBAAgBA,YAAYP,SAAS,EAAE;QACtDM,oBAAoBC;QACpB,MAAMN,QAAQ;YAAE,GAAGM,WAAW;QAAC;QAC/B,MAAM,EAAEP,SAAS,EAAE,GAA+BO;QAClD,OAAOR,gBAAgBC,WAAWC,OAAOC;IAC3C;IAEA,IAAIN,oBAAoBW,gBAAgBA,YAAYa,gBAAgB,EAAE;QACpEd,oBAAoBC;QACpB,MAAMN,QAAQ;YAAE,GAAGM,WAAW;QAAC;QAC/B,MAAMP,YAAYN,WAAW2B,eAAe,CAACd,YAAYa,gBAAgB;QACzE,OAAOrB,gBAAgBC,WAAWC,OAAOC;IAC3C;IAEA,OAAOQ,kBAAkBH,aAAaL;AACxC"}
1
+ {"version":3,"sources":["../../src/email/build.ts"],"sourcesContent":["import type { Transporter } from 'nodemailer'\nimport type { Logger } from 'pino'\n\nimport nodemailer from 'nodemailer'\n\nimport type { EmailOptions, EmailTransport } from '../config/types.js'\nimport type { BuildEmailResult, MockEmailHandler } from './types.js'\n\nimport { hasTransport, hasTransportOptions } from '../config/types.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport mockHandler from './mockHandler.js'\n\nasync function handleTransport(\n transport: Transporter,\n email: EmailTransport,\n logger: Logger,\n): BuildEmailResult {\n try {\n await transport.verify()\n } catch (err) {\n logger.error(`There is an error with the email configuration you have provided. ${err}`)\n }\n\n return { ...email, transport }\n}\n\nconst ensureConfigHasFrom = (emailConfig: EmailOptions) => {\n if (!emailConfig?.fromName || !emailConfig?.fromAddress) {\n throw new InvalidConfiguration(\n 'Email fromName and fromAddress must be configured when transport is configured',\n )\n }\n}\n\nconst handleMockAccount = async (emailConfig: EmailOptions, logger: Logger) => {\n let mockAccount: MockEmailHandler\n try {\n mockAccount = await mockHandler(emailConfig)\n const {\n account: { pass, user, web },\n } = mockAccount\n if (emailConfig?.logMockCredentials) {\n logger.info('E-mail configured with mock configuration')\n logger.info(`Log into mock email provider at ${web}`)\n logger.info(`Mock email account username: ${user}`)\n logger.info(`Mock email account password: ${pass}`)\n }\n } catch (err) {\n logger.error({ err, msg: 'There was a problem setting up the mock email handler' })\n }\n return mockAccount\n}\n\nexport default async function buildEmail(\n emailConfig: EmailOptions | undefined,\n logger: Logger,\n): BuildEmailResult {\n if (!emailConfig) {\n return handleMockAccount(emailConfig, logger)\n }\n\n if (hasTransport(emailConfig) && emailConfig.transport) {\n ensureConfigHasFrom(emailConfig)\n const email = { ...emailConfig }\n const { transport }: { transport: Transporter } = emailConfig\n return handleTransport(transport, email, logger)\n }\n\n if (hasTransportOptions(emailConfig) && emailConfig.transportOptions) {\n ensureConfigHasFrom(emailConfig)\n const email = { ...emailConfig } as EmailTransport\n const transport = nodemailer.createTransport(emailConfig.transportOptions)\n return handleTransport(transport, email, logger)\n }\n\n return handleMockAccount(emailConfig, logger)\n}\n"],"names":["nodemailer","hasTransport","hasTransportOptions","InvalidConfiguration","mockHandler","handleTransport","transport","email","logger","verify","err","error","ensureConfigHasFrom","emailConfig","fromName","fromAddress","handleMockAccount","mockAccount","account","pass","user","web","logMockCredentials","info","msg","buildEmail","transportOptions","createTransport"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,OAAOA,gBAAgB,aAAY;AAKnC,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,qBAAoB;AACtE,SAASC,oBAAoB,QAAQ,qBAAoB;AACzD,OAAOC,iBAAiB,mBAAkB;AAE1C,eAAeC,gBACbC,SAAsB,EACtBC,KAAqB,EACrBC,MAAc;IAEd,IAAI;QACF,MAAMF,UAAUG,MAAM;IACxB,EAAE,OAAOC,KAAK;QACZF,OAAOG,KAAK,CAAC,CAAC,kEAAkE,EAAED,IAAI,CAAC;IACzF;IAEA,OAAO;QAAE,GAAGH,KAAK;QAAED;IAAU;AAC/B;AAEA,MAAMM,sBAAsB,CAACC;IAC3B,IAAI,CAACA,aAAaC,YAAY,CAACD,aAAaE,aAAa;QACvD,MAAM,IAAIZ,qBACR;IAEJ;AACF;AAEA,MAAMa,oBAAoB,OAAOH,aAA2BL;IAC1D,IAAIS;IACJ,IAAI;QACFA,cAAc,MAAMb,YAAYS;QAChC,MAAM,EACJK,SAAS,EAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAE,EAC7B,GAAGJ;QACJ,IAAIJ,aAAaS,oBAAoB;YACnCd,OAAOe,IAAI,CAAC;YACZf,OAAOe,IAAI,CAAC,CAAC,gCAAgC,EAAEF,IAAI,CAAC;YACpDb,OAAOe,IAAI,CAAC,CAAC,6BAA6B,EAAEH,KAAK,CAAC;YAClDZ,OAAOe,IAAI,CAAC,CAAC,6BAA6B,EAAEJ,KAAK,CAAC;QACpD;IACF,EAAE,OAAOT,KAAK;QACZF,OAAOG,KAAK,CAAC;YAAED;YAAKc,KAAK;QAAwD;IACnF;IACA,OAAOP;AACT;AAEA,eAAe,eAAeQ,WAC5BZ,WAAqC,EACrCL,MAAc;IAEd,IAAI,CAACK,aAAa;QAChB,OAAOG,kBAAkBH,aAAaL;IACxC;IAEA,IAAIP,aAAaY,gBAAgBA,YAAYP,SAAS,EAAE;QACtDM,oBAAoBC;QACpB,MAAMN,QAAQ;YAAE,GAAGM,WAAW;QAAC;QAC/B,MAAM,EAAEP,SAAS,EAAE,GAA+BO;QAClD,OAAOR,gBAAgBC,WAAWC,OAAOC;IAC3C;IAEA,IAAIN,oBAAoBW,gBAAgBA,YAAYa,gBAAgB,EAAE;QACpEd,oBAAoBC;QACpB,MAAMN,QAAQ;YAAE,GAAGM,WAAW;QAAC;QAC/B,MAAMP,YAAYN,WAAW2B,eAAe,CAACd,YAAYa,gBAAgB;QACzE,OAAOrB,gBAAgBC,WAAWC,OAAOC;IAC3C;IAEA,OAAOQ,kBAAkBH,aAAaL;AACxC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/email/defaults.ts"],"sourcesContent":["import type { EmailOptions } from '../config/types.js'\n\nexport const defaults: EmailOptions = {\n fromAddress: 'info@payloadcms.com',\n fromName: 'Payload',\n}\n"],"names":["defaults","fromAddress","fromName"],"mappings":"AAEA,OAAO,MAAMA,WAAyB;IACpCC,aAAa;IACbC,UAAU;AACZ,EAAC"}
1
+ {"version":3,"sources":["../../src/email/defaults.ts"],"sourcesContent":["import type { EmailOptions } from '../config/types.js'\n\nexport const defaults: EmailOptions = {\n fromAddress: 'info@payloadcms.com',\n fromName: 'Payload',\n}\n"],"names":["defaults","fromAddress","fromName"],"rangeMappings":";;;","mappings":"AAEA,OAAO,MAAMA,WAAyB;IACpCC,aAAa;IACbC,UAAU;AACZ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/email/mockHandler.ts"],"sourcesContent":["import nodemailer from 'nodemailer'\n\nimport type { EmailOptions } from '../config/types.js'\nimport type { MockEmailHandler } from './types.js'\n\nimport { defaults as emailDefaults } from './defaults.js'\n\nconst mockEmailHandler = async (emailConfig: EmailOptions): Promise<MockEmailHandler> => {\n const testAccount = await nodemailer.createTestAccount()\n\n const smtpOptions = {\n ...emailConfig,\n auth: {\n pass: testAccount.pass,\n user: testAccount.user,\n },\n fromAddress: emailConfig?.fromAddress || emailDefaults.fromAddress,\n fromName: emailConfig?.fromName || emailDefaults.fromName,\n host: 'smtp.ethereal.email',\n port: 587,\n secure: false,\n }\n\n return {\n account: testAccount,\n transport: nodemailer.createTransport(smtpOptions),\n }\n}\n\nexport default mockEmailHandler\n"],"names":["nodemailer","defaults","emailDefaults","mockEmailHandler","emailConfig","testAccount","createTestAccount","smtpOptions","auth","pass","user","fromAddress","fromName","host","port","secure","account","transport","createTransport"],"mappings":"AAAA,OAAOA,gBAAgB,aAAY;AAKnC,SAASC,YAAYC,aAAa,QAAQ,gBAAe;AAEzD,MAAMC,mBAAmB,OAAOC;IAC9B,MAAMC,cAAc,MAAML,WAAWM,iBAAiB;IAEtD,MAAMC,cAAc;QAClB,GAAGH,WAAW;QACdI,MAAM;YACJC,MAAMJ,YAAYI,IAAI;YACtBC,MAAML,YAAYK,IAAI;QACxB;QACAC,aAAaP,aAAaO,eAAeT,cAAcS,WAAW;QAClEC,UAAUR,aAAaQ,YAAYV,cAAcU,QAAQ;QACzDC,MAAM;QACNC,MAAM;QACNC,QAAQ;IACV;IAEA,OAAO;QACLC,SAASX;QACTY,WAAWjB,WAAWkB,eAAe,CAACX;IACxC;AACF;AAEA,eAAeJ,iBAAgB"}
1
+ {"version":3,"sources":["../../src/email/mockHandler.ts"],"sourcesContent":["import nodemailer from 'nodemailer'\n\nimport type { EmailOptions } from '../config/types.js'\nimport type { MockEmailHandler } from './types.js'\n\nimport { defaults as emailDefaults } from './defaults.js'\n\nconst mockEmailHandler = async (emailConfig: EmailOptions): Promise<MockEmailHandler> => {\n const testAccount = await nodemailer.createTestAccount()\n\n const smtpOptions = {\n ...emailConfig,\n auth: {\n pass: testAccount.pass,\n user: testAccount.user,\n },\n fromAddress: emailConfig?.fromAddress || emailDefaults.fromAddress,\n fromName: emailConfig?.fromName || emailDefaults.fromName,\n host: 'smtp.ethereal.email',\n port: 587,\n secure: false,\n }\n\n return {\n account: testAccount,\n transport: nodemailer.createTransport(smtpOptions),\n }\n}\n\nexport default mockEmailHandler\n"],"names":["nodemailer","defaults","emailDefaults","mockEmailHandler","emailConfig","testAccount","createTestAccount","smtpOptions","auth","pass","user","fromAddress","fromName","host","port","secure","account","transport","createTransport"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,aAAY;AAKnC,SAASC,YAAYC,aAAa,QAAQ,gBAAe;AAEzD,MAAMC,mBAAmB,OAAOC;IAC9B,MAAMC,cAAc,MAAML,WAAWM,iBAAiB;IAEtD,MAAMC,cAAc;QAClB,GAAGH,WAAW;QACdI,MAAM;YACJC,MAAMJ,YAAYI,IAAI;YACtBC,MAAML,YAAYK,IAAI;QACxB;QACAC,aAAaP,aAAaO,eAAeT,cAAcS,WAAW;QAClEC,UAAUR,aAAaQ,YAAYV,cAAcU,QAAQ;QACzDC,MAAM;QACNC,MAAM;QACNC,QAAQ;IACV;IAEA,OAAO;QACLC,SAASX;QACTY,WAAWjB,WAAWkB,eAAe,CAACX;IACxC;AACF;AAEA,eAAeJ,iBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/email/sendEmail.ts"],"sourcesContent":["import type { SendMailOptions } from 'nodemailer'\n\nexport default async function sendEmail(message: SendMailOptions): Promise<unknown> {\n let result\n\n try {\n const email = await this.email\n result = await email.transport.sendMail(message)\n } catch (err) {\n this.logger.error(err, `Failed to send mail to ${message.to}, subject: ${message.subject}`)\n return err\n }\n\n return result\n}\n"],"names":["sendEmail","message","result","email","transport","sendMail","err","logger","error","to","subject"],"mappings":"AAEA,eAAe,eAAeA,UAAUC,OAAwB;IAC9D,IAAIC;IAEJ,IAAI;QACF,MAAMC,QAAQ,MAAM,IAAI,CAACA,KAAK;QAC9BD,SAAS,MAAMC,MAAMC,SAAS,CAACC,QAAQ,CAACJ;IAC1C,EAAE,OAAOK,KAAK;QACZ,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,KAAK,CAAC,uBAAuB,EAAEL,QAAQQ,EAAE,CAAC,WAAW,EAAER,QAAQS,OAAO,CAAC,CAAC;QAC1F,OAAOJ;IACT;IAEA,OAAOJ;AACT"}
1
+ {"version":3,"sources":["../../src/email/sendEmail.ts"],"sourcesContent":["import type { SendMailOptions } from 'nodemailer'\n\nexport default async function sendEmail(message: SendMailOptions): Promise<unknown> {\n let result\n\n try {\n const email = await this.email\n result = await email.transport.sendMail(message)\n } catch (err) {\n this.logger.error(err, `Failed to send mail to ${message.to}, subject: ${message.subject}`)\n return err\n }\n\n return result\n}\n"],"names":["sendEmail","message","result","email","transport","sendMail","err","logger","error","to","subject"],"rangeMappings":";;;;;;;;;;","mappings":"AAEA,eAAe,eAAeA,UAAUC,OAAwB;IAC9D,IAAIC;IAEJ,IAAI;QACF,MAAMC,QAAQ,MAAM,IAAI,CAACA,KAAK;QAC9BD,SAAS,MAAMC,MAAMC,SAAS,CAACC,QAAQ,CAACJ;IAC1C,EAAE,OAAOK,KAAK;QACZ,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,KAAK,CAAC,uBAAuB,EAAEL,QAAQQ,EAAE,CAAC,WAAW,EAAER,QAAQS,OAAO,CAAC,CAAC;QAC1F,OAAOJ;IACT;IAEA,OAAOJ;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/email/types.ts"],"sourcesContent":["import type { TestAccount, Transporter } from 'nodemailer'\nimport type Mail from 'nodemailer/lib/mailer'\nimport type SMTPConnection from 'nodemailer/lib/smtp-connection'\n\nexport type Message = {\n from: string\n html: string\n subject: string\n to: string\n}\n\nexport type MockEmailHandler = { account: TestAccount; transport: Transporter }\nexport type BuildEmailResult = Promise<\n | {\n fromAddress: string\n fromName: string\n transport: Mail\n transportOptions?: SMTPConnection.Options\n }\n | MockEmailHandler\n>\n"],"names":[],"mappings":"AAYA,WAQC"}
1
+ {"version":3,"sources":["../../src/email/types.ts"],"sourcesContent":["import type { TestAccount, Transporter } from 'nodemailer'\nimport type Mail from 'nodemailer/lib/mailer'\nimport type SMTPConnection from 'nodemailer/lib/smtp-connection'\n\nexport type Message = {\n from: string\n html: string\n subject: string\n to: string\n}\n\nexport type MockEmailHandler = { account: TestAccount; transport: Transporter }\nexport type BuildEmailResult = Promise<\n | {\n fromAddress: string\n fromName: string\n transport: Mail\n transportOptions?: SMTPConnection.Options\n }\n | MockEmailHandler\n>\n"],"names":[],"rangeMappings":"","mappings":"AAYA,WAQC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/APIError.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport httpStatus from 'http-status'\n\nclass ExtendableError<TData extends object = { [key: string]: unknown }> extends Error {\n data: TData\n\n isOperational: boolean\n\n isPublic: boolean\n\n status: number\n\n constructor(message: string, status: number, data: TData, isPublic: boolean) {\n super(message)\n this.name = this.constructor.name\n this.message = message\n this.status = status\n this.data = data\n this.isPublic = isPublic\n this.isOperational = true // This is required since bluebird 4 doesn't append it anymore.\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\n/**\n * Class representing an API error.\n * @extends ExtendableError\n */\nclass APIError<\n TData extends null | object = { [key: string]: unknown } | null,\n> extends ExtendableError<TData> {\n /**\n * Creates an API error.\n * @param {string} message - Error message.\n * @param {number} status - HTTP status code of error.\n * @param {object} data - response data to be returned.\n * @param {boolean} isPublic - Whether the message should be visible to user or not.\n */\n constructor(\n message: string,\n status: number = httpStatus.INTERNAL_SERVER_ERROR,\n data: TData = null,\n isPublic = false,\n ) {\n super(message, status, data, isPublic)\n }\n}\n\nexport default APIError\n"],"names":["httpStatus","ExtendableError","Error","data","isOperational","isPublic","status","constructor","message","name","captureStackTrace","APIError","INTERNAL_SERVER_ERROR"],"mappings":"AAAA,uCAAuC,GACvC,OAAOA,gBAAgB,cAAa;AAEpC,MAAMC,wBAA2EC;IAC/EC,KAAW;IAEXC,cAAsB;IAEtBC,SAAiB;IAEjBC,OAAc;IAEdC,YAAYC,OAAe,EAAEF,MAAc,EAAEH,IAAW,EAAEE,QAAiB,CAAE;QAC3E,KAAK,CAACG;QACN,IAAI,CAACC,IAAI,GAAG,IAAI,CAACF,WAAW,CAACE,IAAI;QACjC,IAAI,CAACD,OAAO,GAAGA;QACf,IAAI,CAACF,MAAM,GAAGA;QACd,IAAI,CAACH,IAAI,GAAGA;QACZ,IAAI,CAACE,QAAQ,GAAGA;QAChB,IAAI,CAACD,aAAa,GAAG,KAAK,+DAA+D;;QACzFF,MAAMQ,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAACH,WAAW;IAChD;AACF;AAEA;;;CAGC,GACD,MAAMI,iBAEIV;IACR;;;;;;GAMC,GACDM,YACEC,OAAe,EACfF,SAAiBN,WAAWY,qBAAqB,EACjDT,OAAc,IAAI,EAClBE,WAAW,KAAK,CAChB;QACA,KAAK,CAACG,SAASF,QAAQH,MAAME;IAC/B;AACF;AAEA,eAAeM,SAAQ"}
1
+ {"version":3,"sources":["../../src/errors/APIError.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport httpStatus from 'http-status'\n\nclass ExtendableError<TData extends object = { [key: string]: unknown }> extends Error {\n data: TData\n\n isOperational: boolean\n\n isPublic: boolean\n\n status: number\n\n constructor(message: string, status: number, data: TData, isPublic: boolean) {\n super(message)\n this.name = this.constructor.name\n this.message = message\n this.status = status\n this.data = data\n this.isPublic = isPublic\n this.isOperational = true // This is required since bluebird 4 doesn't append it anymore.\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\n/**\n * Class representing an API error.\n * @extends ExtendableError\n */\nclass APIError<\n TData extends null | object = { [key: string]: unknown } | null,\n> extends ExtendableError<TData> {\n /**\n * Creates an API error.\n * @param {string} message - Error message.\n * @param {number} status - HTTP status code of error.\n * @param {object} data - response data to be returned.\n * @param {boolean} isPublic - Whether the message should be visible to user or not.\n */\n constructor(\n message: string,\n status: number = httpStatus.INTERNAL_SERVER_ERROR,\n data: TData = null,\n isPublic = false,\n ) {\n super(message, status, data, isPublic)\n }\n}\n\nexport default APIError\n"],"names":["httpStatus","ExtendableError","Error","data","isOperational","isPublic","status","constructor","message","name","captureStackTrace","APIError","INTERNAL_SERVER_ERROR"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,uCAAuC,GACvC,OAAOA,gBAAgB,cAAa;AAEpC,MAAMC,wBAA2EC;IAC/EC,KAAW;IAEXC,cAAsB;IAEtBC,SAAiB;IAEjBC,OAAc;IAEdC,YAAYC,OAAe,EAAEF,MAAc,EAAEH,IAAW,EAAEE,QAAiB,CAAE;QAC3E,KAAK,CAACG;QACN,IAAI,CAACC,IAAI,GAAG,IAAI,CAACF,WAAW,CAACE,IAAI;QACjC,IAAI,CAACD,OAAO,GAAGA;QACf,IAAI,CAACF,MAAM,GAAGA;QACd,IAAI,CAACH,IAAI,GAAGA;QACZ,IAAI,CAACE,QAAQ,GAAGA;QAChB,IAAI,CAACD,aAAa,GAAG,KAAK,+DAA+D;;QACzFF,MAAMQ,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAACH,WAAW;IAChD;AACF;AAEA;;;CAGC,GACD,MAAMI,iBAEIV;IACR;;;;;;GAMC,GACDM,YACEC,OAAe,EACfF,SAAiBN,WAAWY,qBAAqB,EACjDT,OAAc,IAAI,EAClBE,WAAW,KAAK,CAChB;QACA,KAAK,CAACG,SAASF,QAAQH,MAAME;IAC/B;AACF;AAEA,eAAeM,SAAQ"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class AuthenticationError extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:emailOrPasswordIncorrect') : translations.en.error.emailOrPasswordIncorrect, httpStatus.UNAUTHORIZED);
6
+ super(t ? t('error:emailOrPasswordIncorrect') : en.translations.error.emailOrPasswordIncorrect, httpStatus.UNAUTHORIZED);
7
7
  }
8
8
  }
9
9
  export default AuthenticationError;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/AuthenticationError.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass AuthenticationError extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:emailOrPasswordIncorrect') : translations.en.error.emailOrPasswordIncorrect,\n httpStatus.UNAUTHORIZED,\n )\n }\n}\n\nexport default AuthenticationError\n"],"names":["translations","httpStatus","APIError","AuthenticationError","constructor","t","en","error","emailOrPasswordIncorrect","UNAUTHORIZED"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,4BAA4BD;IAChCE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,oCAAoCL,aAAaM,EAAE,CAACC,KAAK,CAACC,wBAAwB,EACxFP,WAAWQ,YAAY;IAE3B;AACF;AAEA,eAAeN,oBAAmB"}
1
+ {"version":3,"sources":["../../src/errors/AuthenticationError.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass AuthenticationError extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:emailOrPasswordIncorrect') : en.translations.error.emailOrPasswordIncorrect,\n httpStatus.UNAUTHORIZED,\n )\n }\n}\n\nexport default AuthenticationError\n"],"names":["en","httpStatus","APIError","AuthenticationError","constructor","t","translations","error","emailOrPasswordIncorrect","UNAUTHORIZED"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,4BAA4BD;IAChCE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,oCAAoCL,GAAGM,YAAY,CAACC,KAAK,CAACC,wBAAwB,EACxFP,WAAWQ,YAAY;IAE3B;AACF;AAEA,eAAeN,oBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/DuplicateCollection.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass DuplicateCollection extends APIError {\n constructor(propertyName: string, duplicates: string[]) {\n super(`Collection ${propertyName} already in use: \"${duplicates.join(', ')}\"`)\n }\n}\n\nexport default DuplicateCollection\n"],"names":["APIError","DuplicateCollection","constructor","propertyName","duplicates","join"],"mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,4BAA4BD;IAChCE,YAAYC,YAAoB,EAAEC,UAAoB,CAAE;QACtD,KAAK,CAAC,CAAC,WAAW,EAAED,aAAa,kBAAkB,EAAEC,WAAWC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/E;AACF;AAEA,eAAeJ,oBAAmB"}
1
+ {"version":3,"sources":["../../src/errors/DuplicateCollection.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass DuplicateCollection extends APIError {\n constructor(propertyName: string, duplicates: string[]) {\n super(`Collection ${propertyName} already in use: \"${duplicates.join(', ')}\"`)\n }\n}\n\nexport default DuplicateCollection\n"],"names":["APIError","DuplicateCollection","constructor","propertyName","duplicates","join"],"rangeMappings":";;;;;;","mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,4BAA4BD;IAChCE,YAAYC,YAAoB,EAAEC,UAAoB,CAAE;QACtD,KAAK,CAAC,CAAC,WAAW,EAAED,aAAa,kBAAkB,EAAEC,WAAWC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/E;AACF;AAEA,eAAeJ,oBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/DuplicateFieldName.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass DuplicateFieldName extends APIError {\n constructor(fieldName: string) {\n super(\n `A field with the name '${fieldName}' was found multiple times on the same level. Field names must be unique.`,\n )\n }\n}\n\nexport default DuplicateFieldName\n"],"names":["APIError","DuplicateFieldName","constructor","fieldName"],"mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,2BAA2BD;IAC/BE,YAAYC,SAAiB,CAAE;QAC7B,KAAK,CACH,CAAC,uBAAuB,EAAEA,UAAU,yEAAyE,CAAC;IAElH;AACF;AAEA,eAAeF,mBAAkB"}
1
+ {"version":3,"sources":["../../src/errors/DuplicateFieldName.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass DuplicateFieldName extends APIError {\n constructor(fieldName: string) {\n super(\n `A field with the name '${fieldName}' was found multiple times on the same level. Field names must be unique.`,\n )\n }\n}\n\nexport default DuplicateFieldName\n"],"names":["APIError","DuplicateFieldName","constructor","fieldName"],"rangeMappings":";;;;;;","mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,2BAA2BD;IAC/BE,YAAYC,SAAiB,CAAE;QAC7B,KAAK,CACH,CAAC,uBAAuB,EAAEA,UAAU,yEAAyE,CAAC;IAElH;AACF;AAEA,eAAeF,mBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/DuplicateGlobal.ts"],"sourcesContent":["import type { GlobalConfig } from '../globals/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass DuplicateGlobal extends APIError {\n constructor(config: GlobalConfig) {\n super(`Global label \"${config.label}\" is already in use`)\n }\n}\n\nexport default DuplicateGlobal\n"],"names":["APIError","DuplicateGlobal","constructor","config","label"],"mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,wBAAwBD;IAC5BE,YAAYC,MAAoB,CAAE;QAChC,KAAK,CAAC,CAAC,cAAc,EAAEA,OAAOC,KAAK,CAAC,mBAAmB,CAAC;IAC1D;AACF;AAEA,eAAeH,gBAAe"}
1
+ {"version":3,"sources":["../../src/errors/DuplicateGlobal.ts"],"sourcesContent":["import type { GlobalConfig } from '../globals/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass DuplicateGlobal extends APIError {\n constructor(config: GlobalConfig) {\n super(`Global label \"${config.label}\" is already in use`)\n }\n}\n\nexport default DuplicateGlobal\n"],"names":["APIError","DuplicateGlobal","constructor","config","label"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,wBAAwBD;IAC5BE,YAAYC,MAAoB,CAAE;QAChC,KAAK,CAAC,CAAC,cAAc,EAAEA,OAAOC,KAAK,CAAC,mBAAmB,CAAC;IAC1D;AACF;AAEA,eAAeH,gBAAe"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class ErrorDeletingFile extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:deletingFile') : translations.en.error.deletingFile, httpStatus.INTERNAL_SERVER_ERROR);
6
+ super(t ? t('error:deletingFile') : en.translations.error.deletingFile, httpStatus.INTERNAL_SERVER_ERROR);
7
7
  }
8
8
  }
9
9
  export default ErrorDeletingFile;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/ErrorDeletingFile.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass ErrorDeletingFile extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:deletingFile') : translations.en.error.deletingFile,\n httpStatus.INTERNAL_SERVER_ERROR,\n )\n }\n}\n\nexport default ErrorDeletingFile\n"],"names":["translations","httpStatus","APIError","ErrorDeletingFile","constructor","t","en","error","deletingFile","INTERNAL_SERVER_ERROR"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,0BAA0BD;IAC9BE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,wBAAwBL,aAAaM,EAAE,CAACC,KAAK,CAACC,YAAY,EAChEP,WAAWQ,qBAAqB;IAEpC;AACF;AAEA,eAAeN,kBAAiB"}
1
+ {"version":3,"sources":["../../src/errors/ErrorDeletingFile.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass ErrorDeletingFile extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:deletingFile') : en.translations.error.deletingFile,\n httpStatus.INTERNAL_SERVER_ERROR,\n )\n }\n}\n\nexport default ErrorDeletingFile\n"],"names":["en","httpStatus","APIError","ErrorDeletingFile","constructor","t","translations","error","deletingFile","INTERNAL_SERVER_ERROR"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,0BAA0BD;IAC9BE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,wBAAwBL,GAAGM,YAAY,CAACC,KAAK,CAACC,YAAY,EAChEP,WAAWQ,qBAAqB;IAEpC;AACF;AAEA,eAAeN,kBAAiB"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class FileUploadError extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:problemUploadingFile') : translations.en.error.problemUploadingFile, httpStatus.BAD_REQUEST);
6
+ super(t ? t('error:problemUploadingFile') : en.translations.error.problemUploadingFile, httpStatus.BAD_REQUEST);
7
7
  }
8
8
  }
9
9
  export default FileUploadError;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/FileUploadError.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass FileUploadError extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:problemUploadingFile') : translations.en.error.problemUploadingFile,\n httpStatus.BAD_REQUEST,\n )\n }\n}\n\nexport default FileUploadError\n"],"names":["translations","httpStatus","APIError","FileUploadError","constructor","t","en","error","problemUploadingFile","BAD_REQUEST"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,wBAAwBD;IAC5BE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,gCAAgCL,aAAaM,EAAE,CAACC,KAAK,CAACC,oBAAoB,EAChFP,WAAWQ,WAAW;IAE1B;AACF;AAEA,eAAeN,gBAAe"}
1
+ {"version":3,"sources":["../../src/errors/FileUploadError.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass FileUploadError extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:problemUploadingFile') : en.translations.error.problemUploadingFile,\n httpStatus.BAD_REQUEST,\n )\n }\n}\n\nexport default FileUploadError\n"],"names":["en","httpStatus","APIError","FileUploadError","constructor","t","translations","error","problemUploadingFile","BAD_REQUEST"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,wBAAwBD;IAC5BE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,gCAAgCL,GAAGM,YAAY,CAACC,KAAK,CAACC,oBAAoB,EAChFP,WAAWQ,WAAW;IAE1B;AACF;AAEA,eAAeN,gBAAe"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class Forbidden extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:notAllowedToPerformAction') : translations.en.error.notAllowedToPerformAction, httpStatus.FORBIDDEN);
6
+ super(t ? t('error:notAllowedToPerformAction') : en.translations.error.notAllowedToPerformAction, httpStatus.FORBIDDEN);
7
7
  }
8
8
  }
9
9
  export default Forbidden;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/Forbidden.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass Forbidden extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:notAllowedToPerformAction') : translations.en.error.notAllowedToPerformAction,\n httpStatus.FORBIDDEN,\n )\n }\n}\n\nexport default Forbidden\n"],"names":["translations","httpStatus","APIError","Forbidden","constructor","t","en","error","notAllowedToPerformAction","FORBIDDEN"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,kBAAkBD;IACtBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,qCAAqCL,aAAaM,EAAE,CAACC,KAAK,CAACC,yBAAyB,EAC1FP,WAAWQ,SAAS;IAExB;AACF;AAEA,eAAeN,UAAS"}
1
+ {"version":3,"sources":["../../src/errors/Forbidden.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass Forbidden extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:notAllowedToPerformAction') : en.translations.error.notAllowedToPerformAction,\n httpStatus.FORBIDDEN,\n )\n }\n}\n\nexport default Forbidden\n"],"names":["en","httpStatus","APIError","Forbidden","constructor","t","translations","error","notAllowedToPerformAction","FORBIDDEN"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,kBAAkBD;IACtBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,qCAAqCL,GAAGM,YAAY,CAACC,KAAK,CAACC,yBAAyB,EAC1FP,WAAWQ,SAAS;IAExB;AACF;AAEA,eAAeN,UAAS"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/InvalidConfiguration.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass InvalidConfiguration extends APIError {\n constructor(message: string) {\n super(message, httpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n\nexport default InvalidConfiguration\n"],"names":["httpStatus","APIError","InvalidConfiguration","constructor","message","INTERNAL_SERVER_ERROR"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,6BAA6BD;IACjCE,YAAYC,OAAe,CAAE;QAC3B,KAAK,CAACA,SAASJ,WAAWK,qBAAqB;IACjD;AACF;AAEA,eAAeH,qBAAoB"}
1
+ {"version":3,"sources":["../../src/errors/InvalidConfiguration.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass InvalidConfiguration extends APIError {\n constructor(message: string) {\n super(message, httpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n\nexport default InvalidConfiguration\n"],"names":["httpStatus","APIError","InvalidConfiguration","constructor","message","INTERNAL_SERVER_ERROR"],"rangeMappings":";;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,6BAA6BD;IACjCE,YAAYC,OAAe,CAAE;QAC3B,KAAK,CAACA,SAASJ,WAAWK,qBAAqB;IACjD;AACF;AAEA,eAAeH,qBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/InvalidFieldName.ts"],"sourcesContent":["import type { FieldAffectingData } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass InvalidFieldName extends APIError {\n constructor(field: FieldAffectingData, fieldName: string) {\n super(\n `Field ${field.label} has invalid name '${fieldName}'. Field names can not include periods (.) and must be alphanumeric.`,\n )\n }\n}\n\nexport default InvalidFieldName\n"],"names":["APIError","InvalidFieldName","constructor","field","fieldName","label"],"mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,yBAAyBD;IAC7BE,YAAYC,KAAyB,EAAEC,SAAiB,CAAE;QACxD,KAAK,CACH,CAAC,MAAM,EAAED,MAAME,KAAK,CAAC,mBAAmB,EAAED,UAAU,oEAAoE,CAAC;IAE7H;AACF;AAEA,eAAeH,iBAAgB"}
1
+ {"version":3,"sources":["../../src/errors/InvalidFieldName.ts"],"sourcesContent":["import type { FieldAffectingData } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass InvalidFieldName extends APIError {\n constructor(field: FieldAffectingData, fieldName: string) {\n super(\n `Field ${field.label} has invalid name '${fieldName}'. Field names can not include periods (.) and must be alphanumeric.`,\n )\n }\n}\n\nexport default InvalidFieldName\n"],"names":["APIError","InvalidFieldName","constructor","field","fieldName","label"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,yBAAyBD;IAC7BE,YAAYC,KAAyB,EAAEC,SAAiB,CAAE;QACxD,KAAK,CACH,CAAC,MAAM,EAAED,MAAME,KAAK,CAAC,mBAAmB,EAAED,UAAU,oEAAoE,CAAC;IAE7H;AACF;AAEA,eAAeH,iBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/InvalidFieldRelationship.ts"],"sourcesContent":["import type { RelationshipField, UploadField } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass InvalidFieldRelationship extends APIError {\n constructor(field: RelationshipField | UploadField, relationship: string) {\n super(`Field ${field.label} has invalid relationship '${relationship}'.`)\n }\n}\n\nexport default InvalidFieldRelationship\n"],"names":["APIError","InvalidFieldRelationship","constructor","field","relationship","label"],"mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,iCAAiCD;IACrCE,YAAYC,KAAsC,EAAEC,YAAoB,CAAE;QACxE,KAAK,CAAC,CAAC,MAAM,EAAED,MAAME,KAAK,CAAC,2BAA2B,EAAED,aAAa,EAAE,CAAC;IAC1E;AACF;AAEA,eAAeH,yBAAwB"}
1
+ {"version":3,"sources":["../../src/errors/InvalidFieldRelationship.ts"],"sourcesContent":["import type { RelationshipField, UploadField } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass InvalidFieldRelationship extends APIError {\n constructor(field: RelationshipField | UploadField, relationship: string) {\n super(`Field ${field.label} has invalid relationship '${relationship}'.`)\n }\n}\n\nexport default InvalidFieldRelationship\n"],"names":["APIError","InvalidFieldRelationship","constructor","field","relationship","label"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,iCAAiCD;IACrCE,YAAYC,KAAsC,EAAEC,YAAoB,CAAE;QACxE,KAAK,CAAC,CAAC,MAAM,EAAED,MAAME,KAAK,CAAC,2BAA2B,EAAED,aAAa,EAAE,CAAC;IAC1E;AACF;AAEA,eAAeH,yBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/InvalidSchema.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass InvalidSchema extends APIError {\n constructor(message: string, results: any) {\n super(message, httpStatus.INTERNAL_SERVER_ERROR, results)\n }\n}\n\nexport default InvalidSchema\n"],"names":["httpStatus","APIError","InvalidSchema","constructor","message","results","INTERNAL_SERVER_ERROR"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,sBAAsBD;IAC1BE,YAAYC,OAAe,EAAEC,OAAY,CAAE;QACzC,KAAK,CAACD,SAASJ,WAAWM,qBAAqB,EAAED;IACnD;AACF;AAEA,eAAeH,cAAa"}
1
+ {"version":3,"sources":["../../src/errors/InvalidSchema.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass InvalidSchema extends APIError {\n constructor(message: string, results: any) {\n super(message, httpStatus.INTERNAL_SERVER_ERROR, results)\n }\n}\n\nexport default InvalidSchema\n"],"names":["httpStatus","APIError","InvalidSchema","constructor","message","results","INTERNAL_SERVER_ERROR"],"rangeMappings":";;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,sBAAsBD;IAC1BE,YAAYC,OAAe,EAAEC,OAAY,CAAE;QACzC,KAAK,CAACD,SAASJ,WAAWM,qBAAqB,EAAED;IACnD;AACF;AAEA,eAAeH,cAAa"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class LockedAuth extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:userLocked') : translations.en.error.userLocked, httpStatus.UNAUTHORIZED);
6
+ super(t ? t('error:userLocked') : en.translations.error.userLocked, httpStatus.UNAUTHORIZED);
7
7
  }
8
8
  }
9
9
  export default LockedAuth;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/LockedAuth.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass LockedAuth extends APIError {\n constructor(t?: TFunction) {\n super(t ? t('error:userLocked') : translations.en.error.userLocked, httpStatus.UNAUTHORIZED)\n }\n}\n\nexport default LockedAuth\n"],"names":["translations","httpStatus","APIError","LockedAuth","constructor","t","en","error","userLocked","UNAUTHORIZED"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,mBAAmBD;IACvBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CAACA,IAAIA,EAAE,sBAAsBL,aAAaM,EAAE,CAACC,KAAK,CAACC,UAAU,EAAEP,WAAWQ,YAAY;IAC7F;AACF;AAEA,eAAeN,WAAU"}
1
+ {"version":3,"sources":["../../src/errors/LockedAuth.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass LockedAuth extends APIError {\n constructor(t?: TFunction) {\n super(t ? t('error:userLocked') : en.translations.error.userLocked, httpStatus.UNAUTHORIZED)\n }\n}\n\nexport default LockedAuth\n"],"names":["en","httpStatus","APIError","LockedAuth","constructor","t","translations","error","userLocked","UNAUTHORIZED"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,mBAAmBD;IACvBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CAACA,IAAIA,EAAE,sBAAsBL,GAAGM,YAAY,CAACC,KAAK,CAACC,UAAU,EAAEP,WAAWQ,YAAY;IAC7F;AACF;AAEA,eAAeN,WAAU"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/MissingCollectionLabel.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass MissingCollectionLabel extends APIError {\n constructor() {\n super('payload.config.collection object is missing label')\n }\n}\n\nexport default MissingCollectionLabel\n"],"names":["APIError","MissingCollectionLabel","constructor"],"mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,+BAA+BD;IACnCE,aAAc;QACZ,KAAK,CAAC;IACR;AACF;AAEA,eAAeD,uBAAsB"}
1
+ {"version":3,"sources":["../../src/errors/MissingCollectionLabel.ts"],"sourcesContent":["import APIError from './APIError.js'\n\nclass MissingCollectionLabel extends APIError {\n constructor() {\n super('payload.config.collection object is missing label')\n }\n}\n\nexport default MissingCollectionLabel\n"],"names":["APIError","MissingCollectionLabel","constructor"],"rangeMappings":";;;;;;","mappings":"AAAA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,+BAA+BD;IACnCE,aAAc;QACZ,KAAK,CAAC;IACR;AACF;AAEA,eAAeD,uBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/MissingEditorProp.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport APIError from './APIError.js'\n\nclass MissingEditorProp extends APIError {\n constructor(field: Field) {\n super(\n `RichText field${fieldAffectsData(field) ? ` \"${field.name}\"` : ''} is missing the editor prop`,\n )\n }\n}\n\nexport default MissingEditorProp\n"],"names":["fieldAffectsData","APIError","MissingEditorProp","constructor","field","name"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,0BAA0BD;IAC9BE,YAAYC,KAAY,CAAE;QACxB,KAAK,CACH,CAAC,cAAc,EAAEJ,iBAAiBI,SAAS,CAAC,EAAE,EAAEA,MAAMC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,2BAA2B,CAAC;IAEnG;AACF;AAEA,eAAeH,kBAAiB"}
1
+ {"version":3,"sources":["../../src/errors/MissingEditorProp.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport APIError from './APIError.js'\n\nclass MissingEditorProp extends APIError {\n constructor(field: Field) {\n super(\n `RichText field${fieldAffectsData(field) ? ` \"${field.name}\"` : ''} is missing the editor prop`,\n )\n }\n}\n\nexport default MissingEditorProp\n"],"names":["fieldAffectsData","APIError","MissingEditorProp","constructor","field","name"],"rangeMappings":";;;;;;;","mappings":"AAEA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,0BAA0BD;IAC9BE,YAAYC,KAAY,CAAE;QACxB,KAAK,CACH,CAAC,cAAc,EAAEJ,iBAAiBI,SAAS,CAAC,EAAE,EAAEA,MAAMC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,2BAA2B,CAAC;IAEnG;AACF;AAEA,eAAeH,kBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/MissingFieldInputOptions.ts"],"sourcesContent":["import type { RadioField, SelectField } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass MissingFieldInputOptions extends APIError {\n constructor(field: RadioField | SelectField) {\n super(`Field ${field.label} is missing options.`)\n }\n}\n\nexport default MissingFieldInputOptions\n"],"names":["APIError","MissingFieldInputOptions","constructor","field","label"],"mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,iCAAiCD;IACrCE,YAAYC,KAA+B,CAAE;QAC3C,KAAK,CAAC,CAAC,MAAM,EAAEA,MAAMC,KAAK,CAAC,oBAAoB,CAAC;IAClD;AACF;AAEA,eAAeH,yBAAwB"}
1
+ {"version":3,"sources":["../../src/errors/MissingFieldInputOptions.ts"],"sourcesContent":["import type { RadioField, SelectField } from '../fields/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass MissingFieldInputOptions extends APIError {\n constructor(field: RadioField | SelectField) {\n super(`Field ${field.label} is missing options.`)\n }\n}\n\nexport default MissingFieldInputOptions\n"],"names":["APIError","MissingFieldInputOptions","constructor","field","label"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,iCAAiCD;IACrCE,YAAYC,KAA+B,CAAE;QAC3C,KAAK,CAAC,CAAC,MAAM,EAAEA,MAAMC,KAAK,CAAC,oBAAoB,CAAC;IAClD;AACF;AAEA,eAAeH,yBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/MissingFieldType.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport APIError from './APIError.js'\n\nclass MissingFieldType extends APIError {\n constructor(field: Field) {\n super(\n `Field${\n fieldAffectsData(field) ? ` \"${field.name}\"` : ''\n } is either missing a field type or it does not match an available field type`,\n )\n }\n}\n\nexport default MissingFieldType\n"],"names":["fieldAffectsData","APIError","MissingFieldType","constructor","field","name"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,yBAAyBD;IAC7BE,YAAYC,KAAY,CAAE;QACxB,KAAK,CACH,CAAC,KAAK,EACJJ,iBAAiBI,SAAS,CAAC,EAAE,EAAEA,MAAMC,IAAI,CAAC,CAAC,CAAC,GAAG,GAChD,4EAA4E,CAAC;IAElF;AACF;AAEA,eAAeH,iBAAgB"}
1
+ {"version":3,"sources":["../../src/errors/MissingFieldType.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport APIError from './APIError.js'\n\nclass MissingFieldType extends APIError {\n constructor(field: Field) {\n super(\n `Field${\n fieldAffectsData(field) ? ` \"${field.name}\"` : ''\n } is either missing a field type or it does not match an available field type`,\n )\n }\n}\n\nexport default MissingFieldType\n"],"names":["fieldAffectsData","APIError","MissingFieldType","constructor","field","name"],"rangeMappings":";;;;;;;","mappings":"AAEA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,yBAAyBD;IAC7BE,YAAYC,KAAY,CAAE;QACxB,KAAK,CACH,CAAC,KAAK,EACJJ,iBAAiBI,SAAS,CAAC,EAAE,EAAEA,MAAMC,IAAI,CAAC,CAAC,CAAC,GAAG,GAChD,4EAA4E,CAAC;IAElF;AACF;AAEA,eAAeH,iBAAgB"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class MissingFile extends APIError {
5
5
  constructor(t){
6
- super(t ? t('error:noFilesUploaded') : translations.en.error.noFilesUploaded, httpStatus.BAD_REQUEST);
6
+ super(t ? t('error:noFilesUploaded') : en.translations.error.noFilesUploaded, httpStatus.BAD_REQUEST);
7
7
  }
8
8
  }
9
9
  export default MissingFile;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/MissingFile.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass MissingFile extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:noFilesUploaded') : translations.en.error.noFilesUploaded,\n httpStatus.BAD_REQUEST,\n )\n }\n}\n\nexport default MissingFile\n"],"names":["translations","httpStatus","APIError","MissingFile","constructor","t","en","error","noFilesUploaded","BAD_REQUEST"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,oBAAoBD;IACxBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,2BAA2BL,aAAaM,EAAE,CAACC,KAAK,CAACC,eAAe,EACtEP,WAAWQ,WAAW;IAE1B;AACF;AAEA,eAAeN,YAAW"}
1
+ {"version":3,"sources":["../../src/errors/MissingFile.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass MissingFile extends APIError {\n constructor(t?: TFunction) {\n super(\n t ? t('error:noFilesUploaded') : en.translations.error.noFilesUploaded,\n httpStatus.BAD_REQUEST,\n )\n }\n}\n\nexport default MissingFile\n"],"names":["en","httpStatus","APIError","MissingFile","constructor","t","translations","error","noFilesUploaded","BAD_REQUEST"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,oBAAoBD;IACxBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CACHA,IAAIA,EAAE,2BAA2BL,GAAGM,YAAY,CAACC,KAAK,CAACC,eAAe,EACtEP,WAAWQ,WAAW;IAE1B;AACF;AAEA,eAAeN,YAAW"}
@@ -1,9 +1,9 @@
1
- import { translations } from '@payloadcms/translations/api';
1
+ import { en } from '@payloadcms/translations/languages/en';
2
2
  import httpStatus from 'http-status';
3
3
  import APIError from './APIError.js';
4
4
  class NotFound extends APIError {
5
5
  constructor(t){
6
- super(t ? t('general:notFound') : translations.en.general.notFound, httpStatus.NOT_FOUND);
6
+ super(t ? t('general:notFound') : en.translations.general.notFound, httpStatus.NOT_FOUND);
7
7
  }
8
8
  }
9
9
  export default NotFound;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/NotFound.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { translations } from '@payloadcms/translations/api'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass NotFound extends APIError {\n constructor(t?: TFunction) {\n super(t ? t('general:notFound') : translations.en.general.notFound, httpStatus.NOT_FOUND)\n }\n}\n\nexport default NotFound\n"],"names":["translations","httpStatus","APIError","NotFound","constructor","t","en","general","notFound","NOT_FOUND"],"mappings":"AAEA,SAASA,YAAY,QAAQ,+BAA8B;AAC3D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,iBAAiBD;IACrBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CAACA,IAAIA,EAAE,sBAAsBL,aAAaM,EAAE,CAACC,OAAO,CAACC,QAAQ,EAAEP,WAAWQ,SAAS;IAC1F;AACF;AAEA,eAAeN,SAAQ"}
1
+ {"version":3,"sources":["../../src/errors/NotFound.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass NotFound extends APIError {\n constructor(t?: TFunction) {\n super(t ? t('general:notFound') : en.translations.general.notFound, httpStatus.NOT_FOUND)\n }\n}\n\nexport default NotFound\n"],"names":["en","httpStatus","APIError","NotFound","constructor","t","translations","general","notFound","NOT_FOUND"],"rangeMappings":";;;;;;;;","mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,OAAOC,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,iBAAiBD;IACrBE,YAAYC,CAAa,CAAE;QACzB,KAAK,CAACA,IAAIA,EAAE,sBAAsBL,GAAGM,YAAY,CAACC,OAAO,CAACC,QAAQ,EAAEP,WAAWQ,SAAS;IAC1F;AACF;AAEA,eAAeN,SAAQ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/QueryError.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass QueryError extends APIError<{ path: string }[]> {\n constructor(results: { path: string }[]) {\n const message = `The following path${results.length === 1 ? '' : 's'} cannot be queried:`\n\n super(\n `${message} ${results.map((err) => err.path).join(', ')}`,\n httpStatus.BAD_REQUEST,\n results,\n )\n }\n}\n\nexport default QueryError\n"],"names":["httpStatus","APIError","QueryError","constructor","results","message","length","map","err","path","join","BAD_REQUEST"],"mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,mBAAmBD;IACvBE,YAAYC,OAA2B,CAAE;QACvC,MAAMC,UAAU,CAAC,kBAAkB,EAAED,QAAQE,MAAM,KAAK,IAAI,KAAK,IAAI,mBAAmB,CAAC;QAEzF,KAAK,CACH,CAAC,EAAED,QAAQ,CAAC,EAAED,QAAQG,GAAG,CAAC,CAACC,MAAQA,IAAIC,IAAI,EAAEC,IAAI,CAAC,MAAM,CAAC,EACzDV,WAAWW,WAAW,EACtBP;IAEJ;AACF;AAEA,eAAeF,WAAU"}
1
+ {"version":3,"sources":["../../src/errors/QueryError.ts"],"sourcesContent":["import httpStatus from 'http-status'\n\nimport APIError from './APIError.js'\n\nclass QueryError extends APIError<{ path: string }[]> {\n constructor(results: { path: string }[]) {\n const message = `The following path${results.length === 1 ? '' : 's'} cannot be queried:`\n\n super(\n `${message} ${results.map((err) => err.path).join(', ')}`,\n httpStatus.BAD_REQUEST,\n results,\n )\n }\n}\n\nexport default QueryError\n"],"names":["httpStatus","APIError","QueryError","constructor","results","message","length","map","err","path","join","BAD_REQUEST"],"rangeMappings":";;;;;;;;","mappings":"AAAA,OAAOA,gBAAgB,cAAa;AAEpC,OAAOC,cAAc,gBAAe;AAEpC,MAAMC,mBAAmBD;IACvBE,YAAYC,OAA2B,CAAE;QACvC,MAAMC,UAAU,CAAC,kBAAkB,EAAED,QAAQE,MAAM,KAAK,IAAI,KAAK,IAAI,mBAAmB,CAAC;QAEzF,KAAK,CACH,CAAC,EAAED,QAAQ,CAAC,EAAED,QAAQG,GAAG,CAAC,CAACC,MAAQA,IAAIC,IAAI,EAAEC,IAAI,CAAC,MAAM,CAAC,EACzDV,WAAWW,WAAW,EACtBP;IAEJ;AACF;AAEA,eAAeF,WAAU"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/TimestampsRequired.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass TimestampsRequired extends APIError {\n constructor(collection: CollectionConfig) {\n super(\n `Timestamps are required in the collection ${collection.slug} because you have opted in to Versions.`,\n )\n }\n}\n\nexport default TimestampsRequired\n"],"names":["APIError","TimestampsRequired","constructor","collection","slug"],"mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,2BAA2BD;IAC/BE,YAAYC,UAA4B,CAAE;QACxC,KAAK,CACH,CAAC,0CAA0C,EAAEA,WAAWC,IAAI,CAAC,uCAAuC,CAAC;IAEzG;AACF;AAEA,eAAeH,mBAAkB"}
1
+ {"version":3,"sources":["../../src/errors/TimestampsRequired.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\n\nimport APIError from './APIError.js'\n\nclass TimestampsRequired extends APIError {\n constructor(collection: CollectionConfig) {\n super(\n `Timestamps are required in the collection ${collection.slug} because you have opted in to Versions.`,\n )\n }\n}\n\nexport default TimestampsRequired\n"],"names":["APIError","TimestampsRequired","constructor","collection","slug"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAOA,cAAc,gBAAe;AAEpC,MAAMC,2BAA2BD;IAC/BE,YAAYC,UAA4B,CAAE;QACxC,KAAK,CACH,CAAC,0CAA0C,EAAEA,WAAWC,IAAI,CAAC,uCAAuC,CAAC;IAEzG;AACF;AAEA,eAAeH,mBAAkB"}