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/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport { ValidationError } from '../../../errors/index.js'\n\nconst defaultPasswordValidator = (password: string): string | true => {\n if (!password) return 'No password was given'\n if (password.length < 3) return 'Password must be at least 3 characters'\n\n return true\n}\n\nfunction randomBytes(): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.randomBytes(32, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))),\n )\n}\n\nfunction pbkdf2Promisified(password: string, salt: string): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw) =>\n err ? reject(err) : resolve(hashRaw),\n ),\n )\n}\n\ntype Args = {\n password: string\n}\n\nexport const generatePasswordSaltHash = async ({\n password,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = defaultPasswordValidator(password)\n\n if (typeof validationResult === 'string') {\n throw new ValidationError([{ field: 'password', message: validationResult }])\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(password, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","defaultPasswordValidator","password","length","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","validationResult","field","message","toString","hash"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAE3B,SAASC,eAAe,QAAQ,2BAA0B;AAE1D,MAAMC,2BAA2B,CAACC;IAChC,IAAI,CAACA,UAAU,OAAO;IACtB,IAAIA,SAASC,MAAM,GAAG,GAAG,OAAO;IAEhC,OAAO;AACT;AAEA,SAASC;IACP,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BR,OAAOK,WAAW,CAAC,IAAI,CAACI,KAAKC,aAAgBD,MAAMD,OAAOC,OAAOF,QAAQG;AAE7E;AAEA,SAASC,kBAAkBR,QAAgB,EAAES,IAAY;IACvD,OAAO,IAAIN,QAAQ,CAACC,SAASC,SAC3BR,OAAOa,MAAM,CAACV,UAAUS,MAAM,OAAO,KAAK,UAAU,CAACH,KAAKK,UACxDL,MAAMD,OAAOC,OAAOF,QAAQO;AAGlC;AAMA,OAAO,MAAMC,2BAA2B,OAAO,EAC7CZ,QAAQ,EACH;IACL,MAAMa,mBAAmBd,yBAAyBC;IAElD,IAAI,OAAOa,qBAAqB,UAAU;QACxC,MAAM,IAAIf,gBAAgB;YAAC;gBAAEgB,OAAO;gBAAYC,SAASF;YAAiB;SAAE;IAC9E;IAEA,MAAMN,aAAa,MAAML;IACzB,MAAMO,OAAOF,WAAWS,QAAQ,CAAC;IAEjC,MAAML,UAAU,MAAMH,kBAAkBR,UAAUS;IAClD,MAAMQ,OAAON,QAAQK,QAAQ,CAAC;IAE9B,OAAO;QAAEC;QAAMR;IAAK;AACtB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport { ValidationError } from '../../../errors/index.js'\n\nconst defaultPasswordValidator = (password: string): string | true => {\n if (!password) return 'No password was given'\n if (password.length < 3) return 'Password must be at least 3 characters'\n\n return true\n}\n\nfunction randomBytes(): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.randomBytes(32, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))),\n )\n}\n\nfunction pbkdf2Promisified(password: string, salt: string): Promise<Buffer> {\n return new Promise((resolve, reject) =>\n crypto.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw) =>\n err ? reject(err) : resolve(hashRaw),\n ),\n )\n}\n\ntype Args = {\n password: string\n}\n\nexport const generatePasswordSaltHash = async ({\n password,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = defaultPasswordValidator(password)\n\n if (typeof validationResult === 'string') {\n throw new ValidationError([{ field: 'password', message: validationResult }])\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(password, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","defaultPasswordValidator","password","length","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","validationResult","field","message","toString","hash"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAAY,SAAQ;AAE3B,SAASC,eAAe,QAAQ,2BAA0B;AAE1D,MAAMC,2BAA2B,CAACC;IAChC,IAAI,CAACA,UAAU,OAAO;IACtB,IAAIA,SAASC,MAAM,GAAG,GAAG,OAAO;IAEhC,OAAO;AACT;AAEA,SAASC;IACP,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BR,OAAOK,WAAW,CAAC,IAAI,CAACI,KAAKC,aAAgBD,MAAMD,OAAOC,OAAOF,QAAQG;AAE7E;AAEA,SAASC,kBAAkBR,QAAgB,EAAES,IAAY;IACvD,OAAO,IAAIN,QAAQ,CAACC,SAASC,SAC3BR,OAAOa,MAAM,CAACV,UAAUS,MAAM,OAAO,KAAK,UAAU,CAACH,KAAKK,UACxDL,MAAMD,OAAOC,OAAOF,QAAQO;AAGlC;AAMA,OAAO,MAAMC,2BAA2B,OAAO,EAC7CZ,QAAQ,EACH;IACL,MAAMa,mBAAmBd,yBAAyBC;IAElD,IAAI,OAAOa,qBAAqB,UAAU;QACxC,MAAM,IAAIf,gBAAgB;YAAC;gBAAEgB,OAAO;gBAAYC,SAASF;YAAiB;SAAE;IAC9E;IAEA,MAAMN,aAAa,MAAML;IACzB,MAAMO,OAAOF,WAAWS,QAAQ,CAAC;IAEjC,MAAML,UAAU,MAAMH,kBAAkBR,UAAUS;IAClD,MAAMQ,OAAON,QAAQK,QAAQ,CAAC;IAE9B,OAAO;QAAEC;QAAMR;IAAK;AACtB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/strategies/local/incrementLoginAttempts.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: TypeWithID & Record<string, unknown>\n payload: Payload\n req: PayloadRequest\n}\n\nexport const incrementLoginAttempts = async ({\n collection,\n doc,\n payload,\n req,\n}: Args): Promise<void> => {\n const {\n auth: { lockTime, maxLoginAttempts },\n } = collection\n\n if ('lockUntil' in doc && typeof doc.lockUntil === 'string') {\n const lockUntil = new Date(doc.lockUntil).getTime()\n\n // Expired lock, restart count at 1\n if (lockUntil < Date.now()) {\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data: {\n lockUntil: null,\n loginAttempts: 1,\n },\n depth: 0,\n req,\n })\n }\n\n return\n }\n\n const data: Record<string, unknown> = {\n loginAttempts: Number(doc.loginAttempts) + 1,\n }\n\n // Lock the account if at max attempts and not already locked\n if (typeof doc.loginAttempts === 'number' && doc.loginAttempts + 1 >= maxLoginAttempts) {\n const lockUntil = new Date(Date.now() + lockTime)\n data.lockUntil = lockUntil\n }\n\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data,\n depth: 0,\n req,\n })\n}\n"],"names":["incrementLoginAttempts","collection","doc","payload","req","auth","lockTime","maxLoginAttempts","lockUntil","Date","getTime","now","update","id","slug","data","loginAttempts","depth","Number"],"mappings":"AAWA,OAAO,MAAMA,yBAAyB,OAAO,EAC3CC,UAAU,EACVC,GAAG,EACHC,OAAO,EACPC,GAAG,EACE;IACL,MAAM,EACJC,MAAM,EAAEC,QAAQ,EAAEC,gBAAgB,EAAE,EACrC,GAAGN;IAEJ,IAAI,eAAeC,OAAO,OAAOA,IAAIM,SAAS,KAAK,UAAU;QAC3D,MAAMA,YAAY,IAAIC,KAAKP,IAAIM,SAAS,EAAEE,OAAO;QAEjD,mCAAmC;QACnC,IAAIF,YAAYC,KAAKE,GAAG,IAAI;YAC1B,MAAMR,QAAQS,MAAM,CAAC;gBACnBC,IAAIX,IAAIW,EAAE;gBACVZ,YAAYA,WAAWa,IAAI;gBAC3BC,MAAM;oBACJP,WAAW;oBACXQ,eAAe;gBACjB;gBACAC,OAAO;gBACPb;YACF;QACF;QAEA;IACF;IAEA,MAAMW,OAAgC;QACpCC,eAAeE,OAAOhB,IAAIc,aAAa,IAAI;IAC7C;IAEA,6DAA6D;IAC7D,IAAI,OAAOd,IAAIc,aAAa,KAAK,YAAYd,IAAIc,aAAa,GAAG,KAAKT,kBAAkB;QACtF,MAAMC,YAAY,IAAIC,KAAKA,KAAKE,GAAG,KAAKL;QACxCS,KAAKP,SAAS,GAAGA;IACnB;IAEA,MAAML,QAAQS,MAAM,CAAC;QACnBC,IAAIX,IAAIW,EAAE;QACVZ,YAAYA,WAAWa,IAAI;QAC3BC;QACAE,OAAO;QACPb;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/incrementLoginAttempts.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: TypeWithID & Record<string, unknown>\n payload: Payload\n req: PayloadRequest\n}\n\nexport const incrementLoginAttempts = async ({\n collection,\n doc,\n payload,\n req,\n}: Args): Promise<void> => {\n const {\n auth: { lockTime, maxLoginAttempts },\n } = collection\n\n if ('lockUntil' in doc && typeof doc.lockUntil === 'string') {\n const lockUntil = new Date(doc.lockUntil).getTime()\n\n // Expired lock, restart count at 1\n if (lockUntil < Date.now()) {\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data: {\n lockUntil: null,\n loginAttempts: 1,\n },\n depth: 0,\n req,\n })\n }\n\n return\n }\n\n const data: Record<string, unknown> = {\n loginAttempts: Number(doc.loginAttempts) + 1,\n }\n\n // Lock the account if at max attempts and not already locked\n if (typeof doc.loginAttempts === 'number' && doc.loginAttempts + 1 >= maxLoginAttempts) {\n const lockUntil = new Date(Date.now() + lockTime)\n data.lockUntil = lockUntil\n }\n\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data,\n depth: 0,\n req,\n })\n}\n"],"names":["incrementLoginAttempts","collection","doc","payload","req","auth","lockTime","maxLoginAttempts","lockUntil","Date","getTime","now","update","id","slug","data","loginAttempts","depth","Number"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAWA,OAAO,MAAMA,yBAAyB,OAAO,EAC3CC,UAAU,EACVC,GAAG,EACHC,OAAO,EACPC,GAAG,EACE;IACL,MAAM,EACJC,MAAM,EAAEC,QAAQ,EAAEC,gBAAgB,EAAE,EACrC,GAAGN;IAEJ,IAAI,eAAeC,OAAO,OAAOA,IAAIM,SAAS,KAAK,UAAU;QAC3D,MAAMA,YAAY,IAAIC,KAAKP,IAAIM,SAAS,EAAEE,OAAO;QAEjD,mCAAmC;QACnC,IAAIF,YAAYC,KAAKE,GAAG,IAAI;YAC1B,MAAMR,QAAQS,MAAM,CAAC;gBACnBC,IAAIX,IAAIW,EAAE;gBACVZ,YAAYA,WAAWa,IAAI;gBAC3BC,MAAM;oBACJP,WAAW;oBACXQ,eAAe;gBACjB;gBACAC,OAAO;gBACPb;YACF;QACF;QAEA;IACF;IAEA,MAAMW,OAAgC;QACpCC,eAAeE,OAAOhB,IAAIc,aAAa,IAAI;IAC7C;IAEA,6DAA6D;IAC7D,IAAI,OAAOd,IAAIc,aAAa,KAAK,YAAYd,IAAIc,aAAa,GAAG,KAAKT,kBAAkB;QACtF,MAAMC,YAAY,IAAIC,KAAKA,KAAKE,GAAG,KAAKL;QACxCS,KAAKP,SAAS,GAAGA;IACnB;IAEA,MAAML,QAAQS,MAAM,CAAC;QACnBC,IAAIX,IAAIW,EAAE;QACVZ,YAAYA,WAAWa,IAAI;QAC3BC;QACAE,OAAO;QACPb;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: Record<string, unknown>\n password: string\n payload: Payload\n req: PayloadRequest\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n email: {\n equals: doc.email,\n },\n },\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError([\n { field: 'email', message: 'A user with the given email is already registered' },\n ])\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ password })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) delete sanitizedDoc.password\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","existingUser","find","slug","depth","limit","pagination","where","email","equals","docs","length","field","message","hash","salt","sanitizedDoc","db","create","data"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAUxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACE;IACL,MAAMC,eAAe,MAAMF,QAAQG,IAAI,CAAC;QACtCN,YAAYA,WAAWO,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZN;QACAO,OAAO;YACLC,OAAO;gBACLC,QAAQZ,IAAIW,KAAK;YACnB;QACF;IACF;IAEA,IAAIP,aAAaS,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIlB,gBAAgB;YACxB;gBAAEmB,OAAO;gBAASC,SAAS;YAAoD;SAChF;IACH;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAMrB,yBAAyB;QAAEI;IAAS;IAEjE,MAAMkB,eAAe;QAAE,GAAGnB,GAAG;IAAC;IAC9B,IAAImB,aAAalB,QAAQ,EAAE,OAAOkB,aAAalB,QAAQ;IAEvD,OAAOC,QAAQkB,EAAE,CAACC,MAAM,CAAC;QACvBtB,YAAYA,WAAWO,IAAI;QAC3BgB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAf;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: Record<string, unknown>\n password: string\n payload: Payload\n req: PayloadRequest\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: {\n email: {\n equals: doc.email,\n },\n },\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError([\n { field: 'email', message: 'A user with the given email is already registered' },\n ])\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ password })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) delete sanitizedDoc.password\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","existingUser","find","slug","depth","limit","pagination","where","email","equals","docs","length","field","message","hash","salt","sanitizedDoc","db","create","data"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAUxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACE;IACL,MAAMC,eAAe,MAAMF,QAAQG,IAAI,CAAC;QACtCN,YAAYA,WAAWO,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZN;QACAO,OAAO;YACLC,OAAO;gBACLC,QAAQZ,IAAIW,KAAK;YACnB;QACF;IACF;IAEA,IAAIP,aAAaS,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIlB,gBAAgB;YACxB;gBAAEmB,OAAO;gBAASC,SAAS;YAAoD;SAChF;IACH;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAMrB,yBAAyB;QAAEI;IAAS;IAEjE,MAAMkB,eAAe;QAAE,GAAGnB,GAAG;IAAC;IAC9B,IAAImB,aAAalB,QAAQ,EAAE,OAAOkB,aAAalB,QAAQ;IAEvD,OAAOC,QAAQkB,EAAE,CAACC,MAAM,CAAC;QACvBtB,YAAYA,WAAWO,IAAI;QAC3BgB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAf;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/strategies/local/resetLoginAttempts.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: TypeWithID & Record<string, unknown>\n payload: Payload\n req: PayloadRequest\n}\n\nexport const resetLoginAttempts = async ({\n collection,\n doc,\n payload,\n req,\n}: Args): Promise<void> => {\n if (!('lockUntil' in doc && typeof doc.lockUntil === 'string') || doc.loginAttempts === 0) return\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data: {\n lockUntil: null,\n loginAttempts: 0,\n },\n depth: 0,\n overrideAccess: true,\n req,\n })\n}\n"],"names":["resetLoginAttempts","collection","doc","payload","req","lockUntil","loginAttempts","update","id","slug","data","depth","overrideAccess"],"mappings":"AAWA,OAAO,MAAMA,qBAAqB,OAAO,EACvCC,UAAU,EACVC,GAAG,EACHC,OAAO,EACPC,GAAG,EACE;IACL,IAAI,CAAE,CAAA,eAAeF,OAAO,OAAOA,IAAIG,SAAS,KAAK,QAAO,KAAMH,IAAII,aAAa,KAAK,GAAG;IAC3F,MAAMH,QAAQI,MAAM,CAAC;QACnBC,IAAIN,IAAIM,EAAE;QACVP,YAAYA,WAAWQ,IAAI;QAC3BC,MAAM;YACJL,WAAW;YACXC,eAAe;QACjB;QACAK,OAAO;QACPC,gBAAgB;QAChBR;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/resetLoginAttempts.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js'\nimport type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: TypeWithID & Record<string, unknown>\n payload: Payload\n req: PayloadRequest\n}\n\nexport const resetLoginAttempts = async ({\n collection,\n doc,\n payload,\n req,\n}: Args): Promise<void> => {\n if (!('lockUntil' in doc && typeof doc.lockUntil === 'string') || doc.loginAttempts === 0) return\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data: {\n lockUntil: null,\n loginAttempts: 0,\n },\n depth: 0,\n overrideAccess: true,\n req,\n })\n}\n"],"names":["resetLoginAttempts","collection","doc","payload","req","lockUntil","loginAttempts","update","id","slug","data","depth","overrideAccess"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAWA,OAAO,MAAMA,qBAAqB,OAAO,EACvCC,UAAU,EACVC,GAAG,EACHC,OAAO,EACPC,GAAG,EACE;IACL,IAAI,CAAE,CAAA,eAAeF,OAAO,OAAOA,IAAIG,SAAS,KAAK,QAAO,KAAMH,IAAII,aAAa,KAAK,GAAG;IAC3F,MAAMH,QAAQI,MAAM,CAAC;QACnBC,IAAIN,IAAIM,EAAE;QACVP,YAAYA,WAAWQ,IAAI;QAC3BC,MAAM;YACJL,WAAW;YACXC,eAAe;QACjB;QACAK,OAAO;QACPC,gBAAgB;QAChBR;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/auth/types.ts"],"sourcesContent":["import type { DeepRequired } from 'ts-essentials'\n\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest, Where } from '../types/index.js'\n\nexport type Permission = {\n permission: boolean\n where?: Record<string, unknown>\n}\n\nexport type FieldPermissions = {\n blocks?: {\n [blockSlug: string]: {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n }\n }\n create: {\n permission: boolean\n }\n fields?: {\n [fieldName: string]: FieldPermissions\n }\n read: {\n permission: boolean\n }\n update: {\n permission: boolean\n }\n}\n\nexport type CollectionPermission = {\n create: Permission\n delete: Permission\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type GlobalPermission = {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type DocumentPermissions = CollectionPermission | GlobalPermission\nexport type Permissions = {\n canAccessAdmin: boolean\n collections: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type User = {\n [key: string]: any // This NEEDS to be an any, otherwise it breaks the Omit for ClientUser below\n collection: string\n email: string\n id: string\n}\n\n/**\n * `collection` is not available one the client. It's only available on the server (req.user)\n * On the client, you can access the collection via config.admin.user. Config can be accessed using the useConfig() hook\n */\nexport type ClientUser = Omit<User, 'collection'>\n\ntype GenerateVerifyEmailHTML = (args: {\n req: PayloadRequest\n token: string\n user: any\n}) => Promise<string> | string\ntype GenerateVerifyEmailSubject = (args: {\n req: PayloadRequest\n token: string\n user: any\n}) => Promise<string> | string\n\ntype GenerateForgotPasswordEmailHTML = (args?: {\n req?: PayloadRequest\n token?: string\n user?: unknown\n}) => Promise<string> | string\ntype GenerateForgotPasswordEmailSubject = (args?: {\n req?: PayloadRequest\n token?: string\n user?: any\n}) => Promise<string> | string\n\nexport type AuthStrategyFunctionArgs = {\n cookies?: Map<string, string>\n headers: Request['headers']\n isGraphQL?: boolean\n payload: Payload\n}\nexport type AuthStrategyFunction = ({\n headers,\n isGraphQL,\n payload,\n}: AuthStrategyFunctionArgs) => Promise<User | null> | User | null\nexport type AuthStrategy = {\n authenticate: AuthStrategyFunction\n name: string\n}\n\nexport interface IncomingAuthType {\n cookies?: {\n domain?: string\n sameSite?: 'Lax' | 'None' | 'Strict' | boolean\n secure?: boolean\n }\n depth?: number\n disableLocalStrategy?: true\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n lockTime?: number\n maxLoginAttempts?: number\n removeTokenFromResponses?: true\n strategies?: AuthStrategy[]\n tokenExpiration?: number\n useAPIKey?: boolean\n verify?:\n | {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n }\n | boolean\n}\n\nexport type VerifyConfig = {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n}\n\nexport interface Auth extends Omit<DeepRequired<IncomingAuthType>, 'forgotPassword' | 'verify'> {\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n verify?: VerifyConfig | boolean\n}\n\nexport function hasWhereAccessResult(result: Where | boolean): result is Where {\n return result && typeof result === 'object'\n}\n"],"names":["hasWhereAccessResult","result"],"mappings":"AAyJA,OAAO,SAASA,qBAAqBC,MAAuB;IAC1D,OAAOA,UAAU,OAAOA,WAAW;AACrC"}
1
+ {"version":3,"sources":["../../src/auth/types.ts"],"sourcesContent":["import type { DeepRequired } from 'ts-essentials'\n\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest, Where } from '../types/index.js'\n\nexport type Permission = {\n permission: boolean\n where?: Record<string, unknown>\n}\n\nexport type FieldPermissions = {\n blocks?: {\n [blockSlug: string]: {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n }\n }\n create: {\n permission: boolean\n }\n fields?: {\n [fieldName: string]: FieldPermissions\n }\n read: {\n permission: boolean\n }\n update: {\n permission: boolean\n }\n}\n\nexport type CollectionPermission = {\n create: Permission\n delete: Permission\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type GlobalPermission = {\n fields: {\n [fieldName: string]: FieldPermissions\n }\n read: Permission\n readVersions?: Permission\n update: Permission\n}\n\nexport type DocumentPermissions = CollectionPermission | GlobalPermission\nexport type Permissions = {\n canAccessAdmin: boolean\n collections: {\n [collectionSlug: string]: CollectionPermission\n }\n globals?: {\n [globalSlug: string]: GlobalPermission\n }\n}\n\nexport type User = {\n [key: string]: any // This NEEDS to be an any, otherwise it breaks the Omit for ClientUser below\n collection: string\n email: string\n id: string\n}\n\n/**\n * `collection` is not available one the client. It's only available on the server (req.user)\n * On the client, you can access the collection via config.admin.user. Config can be accessed using the useConfig() hook\n */\nexport type ClientUser = Omit<User, 'collection'>\n\ntype GenerateVerifyEmailHTML = (args: {\n req: PayloadRequest\n token: string\n user: any\n}) => Promise<string> | string\ntype GenerateVerifyEmailSubject = (args: {\n req: PayloadRequest\n token: string\n user: any\n}) => Promise<string> | string\n\ntype GenerateForgotPasswordEmailHTML = (args?: {\n req?: PayloadRequest\n token?: string\n user?: unknown\n}) => Promise<string> | string\ntype GenerateForgotPasswordEmailSubject = (args?: {\n req?: PayloadRequest\n token?: string\n user?: any\n}) => Promise<string> | string\n\nexport type AuthStrategyFunctionArgs = {\n cookies?: Map<string, string>\n headers: Request['headers']\n isGraphQL?: boolean\n payload: Payload\n}\nexport type AuthStrategyFunction = ({\n headers,\n isGraphQL,\n payload,\n}: AuthStrategyFunctionArgs) => Promise<User | null> | User | null\nexport type AuthStrategy = {\n authenticate: AuthStrategyFunction\n name: string\n}\n\nexport interface IncomingAuthType {\n cookies?: {\n domain?: string\n sameSite?: 'Lax' | 'None' | 'Strict' | boolean\n secure?: boolean\n }\n depth?: number\n disableLocalStrategy?: true\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n lockTime?: number\n maxLoginAttempts?: number\n removeTokenFromResponses?: true\n strategies?: AuthStrategy[]\n tokenExpiration?: number\n useAPIKey?: boolean\n verify?:\n | {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n }\n | boolean\n}\n\nexport type VerifyConfig = {\n generateEmailHTML?: GenerateVerifyEmailHTML\n generateEmailSubject?: GenerateVerifyEmailSubject\n}\n\nexport interface Auth extends Omit<DeepRequired<IncomingAuthType>, 'forgotPassword' | 'verify'> {\n forgotPassword?: {\n generateEmailHTML?: GenerateForgotPasswordEmailHTML\n generateEmailSubject?: GenerateForgotPasswordEmailSubject\n }\n verify?: VerifyConfig | boolean\n}\n\nexport function hasWhereAccessResult(result: Where | boolean): result is Where {\n return result && typeof result === 'object'\n}\n"],"names":["hasWhereAccessResult","result"],"rangeMappings":";;","mappings":"AAyJA,OAAO,SAASA,qBAAqBC,MAAuB;IAC1D,OAAOA,UAAU,OAAOA,WAAW;AACrC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/generateTypes.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport fs from 'fs'\nimport { compile } from 'json-schema-to-typescript'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport { configToJSONSchema } from '../utilities/configToJSONSchema.js'\nimport Logger from '../utilities/logger.js'\n\nexport function generateTypes(config: SanitizedConfig): void {\n const logger = Logger()\n const outputFile = process.env.PAYLOAD_TS_OUTPUT_PATH || config.typescript.outputFile\n\n logger.info('Compiling TS types for Collections and Globals...')\n\n const jsonSchema = configToJSONSchema(config, config.db.defaultIDType)\n\n const declare = `declare module 'payload' {\\n export interface GeneratedTypes extends Config {}\\n}`\n\n compile(jsonSchema, 'Config', {\n bannerComment:\n '/* tslint:disable */\\n/* eslint-disable */\\n/**\\n* This file was automatically generated by Payload.\\n* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,\\n* and re-run `payload generate:types` to regenerate this file.\\n*/',\n style: {\n singleQuote: true,\n },\n // Generates code for $defs that aren't referenced by the schema. Reason:\n // If a field defines an interfaceName, it should be included in the generated types\n // even if it's not used by another type. Reason: the user might want to use it in their own code.\n unreachableDefinitions: true,\n }).then((compiled) => {\n if (config.typescript.declare !== false) {\n compiled += `\\n\\n${declare}`\n }\n fs.writeFileSync(outputFile, compiled)\n logger.info(`Types written to ${outputFile}`)\n })\n}\n"],"names":["fs","compile","configToJSONSchema","Logger","generateTypes","config","logger","outputFile","process","env","PAYLOAD_TS_OUTPUT_PATH","typescript","info","jsonSchema","db","defaultIDType","declare","bannerComment","style","singleQuote","unreachableDefinitions","then","compiled","writeFileSync"],"mappings":"AAAA,0DAA0D,GAC1D,OAAOA,QAAQ,KAAI;AACnB,SAASC,OAAO,QAAQ,4BAA2B;AAInD,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,OAAOC,YAAY,yBAAwB;AAE3C,OAAO,SAASC,cAAcC,MAAuB;IACnD,MAAMC,SAASH;IACf,MAAMI,aAAaC,QAAQC,GAAG,CAACC,sBAAsB,IAAIL,OAAOM,UAAU,CAACJ,UAAU;IAErFD,OAAOM,IAAI,CAAC;IAEZ,MAAMC,aAAaX,mBAAmBG,QAAQA,OAAOS,EAAE,CAACC,aAAa;IAErE,MAAMC,UAAU,CAAC,kFAAkF,CAAC;IAEpGf,QAAQY,YAAY,UAAU;QAC5BI,eACE;QACFC,OAAO;YACLC,aAAa;QACf;QACA,yEAAyE;QACzE,oFAAoF;QACpF,kGAAkG;QAClGC,wBAAwB;IAC1B,GAAGC,IAAI,CAAC,CAACC;QACP,IAAIjB,OAAOM,UAAU,CAACK,OAAO,KAAK,OAAO;YACvCM,YAAY,CAAC,IAAI,EAAEN,QAAQ,CAAC;QAC9B;QACAhB,GAAGuB,aAAa,CAAChB,YAAYe;QAC7BhB,OAAOM,IAAI,CAAC,CAAC,iBAAiB,EAAEL,WAAW,CAAC;IAC9C;AACF"}
1
+ {"version":3,"sources":["../../src/bin/generateTypes.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport fs from 'fs'\nimport { compile } from 'json-schema-to-typescript'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport { configToJSONSchema } from '../utilities/configToJSONSchema.js'\nimport Logger from '../utilities/logger.js'\n\nexport function generateTypes(config: SanitizedConfig): void {\n const logger = Logger()\n const outputFile = process.env.PAYLOAD_TS_OUTPUT_PATH || config.typescript.outputFile\n\n logger.info('Compiling TS types for Collections and Globals...')\n\n const jsonSchema = configToJSONSchema(config, config.db.defaultIDType)\n\n const declare = `declare module 'payload' {\\n export interface GeneratedTypes extends Config {}\\n}`\n\n compile(jsonSchema, 'Config', {\n bannerComment:\n '/* tslint:disable */\\n/* eslint-disable */\\n/**\\n* This file was automatically generated by Payload.\\n* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,\\n* and re-run `payload generate:types` to regenerate this file.\\n*/',\n style: {\n singleQuote: true,\n },\n // Generates code for $defs that aren't referenced by the schema. Reason:\n // If a field defines an interfaceName, it should be included in the generated types\n // even if it's not used by another type. Reason: the user might want to use it in their own code.\n unreachableDefinitions: true,\n }).then((compiled) => {\n if (config.typescript.declare !== false) {\n compiled += `\\n\\n${declare}`\n }\n fs.writeFileSync(outputFile, compiled)\n logger.info(`Types written to ${outputFile}`)\n })\n}\n"],"names":["fs","compile","configToJSONSchema","Logger","generateTypes","config","logger","outputFile","process","env","PAYLOAD_TS_OUTPUT_PATH","typescript","info","jsonSchema","db","defaultIDType","declare","bannerComment","style","singleQuote","unreachableDefinitions","then","compiled","writeFileSync"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,0DAA0D,GAC1D,OAAOA,QAAQ,KAAI;AACnB,SAASC,OAAO,QAAQ,4BAA2B;AAInD,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,OAAOC,YAAY,yBAAwB;AAE3C,OAAO,SAASC,cAAcC,MAAuB;IACnD,MAAMC,SAASH;IACf,MAAMI,aAAaC,QAAQC,GAAG,CAACC,sBAAsB,IAAIL,OAAOM,UAAU,CAACJ,UAAU;IAErFD,OAAOM,IAAI,CAAC;IAEZ,MAAMC,aAAaX,mBAAmBG,QAAQA,OAAOS,EAAE,CAACC,aAAa;IAErE,MAAMC,UAAU,CAAC,kFAAkF,CAAC;IAEpGf,QAAQY,YAAY,UAAU;QAC5BI,eACE;QACFC,OAAO;YACLC,aAAa;QACf;QACA,yEAAyE;QACzE,oFAAoF;QACpF,kGAAkG;QAClGC,wBAAwB;IAC1B,GAAGC,IAAI,CAAC,CAACC;QACP,IAAIjB,OAAOM,UAAU,CAACK,OAAO,KAAK,OAAO;YACvCM,YAAY,CAAC,IAAI,EAAEN,QAAQ,CAAC;QAC9B;QACAhB,GAAGuB,aAAa,CAAChB,YAAYe;QAC7BhB,OAAOM,IAAI,CAAC,CAAC,iBAAiB,EAAEL,WAAW,CAAC;IAC9C;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport minimist from 'minimist'\n\nimport type { BinScript } from '../config/types.js'\n\nimport { findConfig } from '../config/find.js'\nimport { generateTypes } from './generateTypes.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate } from './migrate.js'\n\nexport const bin = async () => {\n loadEnv()\n const configPath = findConfig()\n const configPromise = await import(configPath)\n let config = await configPromise\n if (config.default) config = await config.default\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const script: BinScript = await import(userBinScript.scriptPath)\n await script(config)\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return\n }\n\n if (script.startsWith('migrate')) {\n return migrate({ config, parsedArgs: args }).then(() => process.exit(0))\n }\n\n if (script === 'generate:types') {\n return generateTypes(config)\n }\n\n console.log(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["minimist","findConfig","generateTypes","loadEnv","migrate","bin","configPath","configPromise","config","default","args","process","argv","slice","script","_","toLowerCase","userBinScript","Array","isArray","find","key","scriptPath","err","console","log","error","startsWith","parsedArgs","then","exit"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,cAAc,WAAU;AAI/B,SAASC,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,OAAO,QAAQ,eAAc;AAEtC,OAAO,MAAMC,MAAM;IACjBF;IACA,MAAMG,aAAaL;IACnB,MAAMM,gBAAgB,MAAM,MAAM,CAACD;IACnC,IAAIE,SAAS,MAAMD;IACnB,IAAIC,OAAOC,OAAO,EAAED,SAAS,MAAMA,OAAOC,OAAO;IAEjD,MAAMC,OAAOV,SAASW,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOJ,KAAKK,CAAC,CAAC,EAAE,KAAK,WAAWL,KAAKK,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,MAAMC,gBAAgBC,MAAMC,OAAO,CAACX,OAAOH,GAAG,IAC1CG,OAAOH,GAAG,CAACe,IAAI,CAAC,CAAC,EAAEC,GAAG,EAAE,GAAKA,QAAQP,UACrC;IAEJ,IAAIG,eAAe;QACjB,IAAI;YACF,MAAMH,SAAoB,MAAM,MAAM,CAACG,cAAcK,UAAU;YAC/D,MAAMR,OAAON;QACf,EAAE,OAAOe,KAAK;YACZC,QAAQC,GAAG,CAAC,CAAC,6CAA6C,EAAER,cAAcI,GAAG,CAAC,QAAQ,CAAC;YACvFG,QAAQE,KAAK,CAACH;QAChB;QAEA;IACF;IAEA,IAAIT,OAAOa,UAAU,CAAC,YAAY;QAChC,OAAOvB,QAAQ;YAAEI;YAAQoB,YAAYlB;QAAK,GAAGmB,IAAI,CAAC,IAAMlB,QAAQmB,IAAI,CAAC;IACvE;IAEA,IAAIhB,WAAW,kBAAkB;QAC/B,OAAOZ,cAAcM;IACvB;IAEAgB,QAAQC,GAAG,CAAC,CAAC,iBAAiB,EAAEX,OAAO,EAAE,CAAC;IAC1CH,QAAQmB,IAAI,CAAC;AACf,EAAC"}
1
+ {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport minimist from 'minimist'\n\nimport type { BinScript } from '../config/types.js'\n\nimport { findConfig } from '../config/find.js'\nimport { generateTypes } from './generateTypes.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate } from './migrate.js'\n\nexport const bin = async () => {\n loadEnv()\n const configPath = findConfig()\n const configPromise = await import(configPath)\n let config = await configPromise\n if (config.default) config = await config.default\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const script: BinScript = await import(userBinScript.scriptPath)\n await script(config)\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return\n }\n\n if (script.startsWith('migrate')) {\n return migrate({ config, parsedArgs: args }).then(() => process.exit(0))\n }\n\n if (script === 'generate:types') {\n return generateTypes(config)\n }\n\n console.log(`Unknown script: \"${script}\".`)\n process.exit(1)\n}\n"],"names":["minimist","findConfig","generateTypes","loadEnv","migrate","bin","configPath","configPromise","config","default","args","process","argv","slice","script","_","toLowerCase","userBinScript","Array","isArray","find","key","scriptPath","err","console","log","error","startsWith","parsedArgs","then","exit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,6BAA6B,GAC7B,OAAOA,cAAc,WAAU;AAI/B,SAASC,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,OAAO,QAAQ,eAAc;AAEtC,OAAO,MAAMC,MAAM;IACjBF;IACA,MAAMG,aAAaL;IACnB,MAAMM,gBAAgB,MAAM,MAAM,CAACD;IACnC,IAAIE,SAAS,MAAMD;IACnB,IAAIC,OAAOC,OAAO,EAAED,SAAS,MAAMA,OAAOC,OAAO;IAEjD,MAAMC,OAAOV,SAASW,QAAQC,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOJ,KAAKK,CAAC,CAAC,EAAE,KAAK,WAAWL,KAAKK,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,MAAMC,gBAAgBC,MAAMC,OAAO,CAACX,OAAOH,GAAG,IAC1CG,OAAOH,GAAG,CAACe,IAAI,CAAC,CAAC,EAAEC,GAAG,EAAE,GAAKA,QAAQP,UACrC;IAEJ,IAAIG,eAAe;QACjB,IAAI;YACF,MAAMH,SAAoB,MAAM,MAAM,CAACG,cAAcK,UAAU;YAC/D,MAAMR,OAAON;QACf,EAAE,OAAOe,KAAK;YACZC,QAAQC,GAAG,CAAC,CAAC,6CAA6C,EAAER,cAAcI,GAAG,CAAC,QAAQ,CAAC;YACvFG,QAAQE,KAAK,CAACH;QAChB;QAEA;IACF;IAEA,IAAIT,OAAOa,UAAU,CAAC,YAAY;QAChC,OAAOvB,QAAQ;YAAEI;YAAQoB,YAAYlB;QAAK,GAAGmB,IAAI,CAAC,IAAMlB,QAAQmB,IAAI,CAAC;IACvE;IAEA,IAAIhB,WAAW,kBAAkB;QAC/B,OAAOZ,cAAcM;IACvB;IAEAgB,QAAQC,GAAG,CAAC,CAAC,iBAAiB,EAAEX,OAAO,EAAE,CAAC;IAC1CH,QAAQmB,IAAI,CAAC;AACf,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/loadEnv.ts"],"sourcesContent":["import dotenv from 'dotenv'\nimport findUp from 'find-up'\nimport fs from 'fs'\nimport path from 'path'\n\n/**\n * Try to find user's .env and load it\n */\nexport function loadEnv() {\n const envPath = findUp.sync('.env')\n\n if (envPath) {\n dotenv.config({ path: envPath })\n } else {\n const cwdPath = path.resolve(process.cwd(), '.env')\n if (fs.existsSync(cwdPath)) {\n dotenv.config({\n path: cwdPath,\n })\n }\n }\n}\n"],"names":["dotenv","findUp","fs","path","loadEnv","envPath","sync","config","cwdPath","resolve","process","cwd","existsSync"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAC3B,OAAOC,YAAY,UAAS;AAC5B,OAAOC,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAEvB;;CAEC,GACD,OAAO,SAASC;IACd,MAAMC,UAAUJ,OAAOK,IAAI,CAAC;IAE5B,IAAID,SAAS;QACXL,OAAOO,MAAM,CAAC;YAAEJ,MAAME;QAAQ;IAChC,OAAO;QACL,MAAMG,UAAUL,KAAKM,OAAO,CAACC,QAAQC,GAAG,IAAI;QAC5C,IAAIT,GAAGU,UAAU,CAACJ,UAAU;YAC1BR,OAAOO,MAAM,CAAC;gBACZJ,MAAMK;YACR;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/bin/loadEnv.ts"],"sourcesContent":["import dotenv from 'dotenv'\nimport findUp from 'find-up'\nimport fs from 'fs'\nimport path from 'path'\n\n/**\n * Try to find user's .env and load it\n */\nexport function loadEnv() {\n const envPath = findUp.sync('.env')\n\n if (envPath) {\n dotenv.config({ path: envPath })\n } else {\n const cwdPath = path.resolve(process.cwd(), '.env')\n if (fs.existsSync(cwdPath)) {\n dotenv.config({\n path: cwdPath,\n })\n }\n }\n}\n"],"names":["dotenv","findUp","fs","path","loadEnv","envPath","sync","config","cwdPath","resolve","process","cwd","existsSync"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAAY,SAAQ;AAC3B,OAAOC,YAAY,UAAS;AAC5B,OAAOC,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAEvB;;CAEC,GACD,OAAO,SAASC;IACd,MAAMC,UAAUJ,OAAOK,IAAI,CAAC;IAE5B,IAAID,SAAS;QACXL,OAAOO,MAAM,CAAC;YAAEJ,MAAME;QAAQ;IAChC,OAAO;QACL,MAAMG,UAAUL,KAAKM,OAAO,CAACC,QAAQC,GAAG,IAAI;QAC5C,IAAIT,GAAGU,UAAU,CAACJ,UAAU;YAC1BR,OAAOO,MAAM,CAAC;gBACZJ,MAAMK;YACR;QACF;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/loader/clientExtensions.ts"],"sourcesContent":["export const CLIENT_EXTENSIONS = [\n '.scss',\n '.css',\n '.svg',\n '.png',\n '.jpg',\n '.eot',\n '.ttf',\n '.woff',\n '.woff2',\n]\n"],"names":["CLIENT_EXTENSIONS"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
1
+ {"version":3,"sources":["../../../src/bin/loader/clientExtensions.ts"],"sourcesContent":["export const CLIENT_EXTENSIONS = [\n '.scss',\n '.css',\n '.svg',\n '.png',\n '.jpg',\n '.eot',\n '.ttf',\n '.woff',\n '.woff2',\n]\n"],"names":["CLIENT_EXTENSIONS"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA,oBAAoB;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/loader/compile.ts"],"sourcesContent":["import type * as ts from 'typescript'\n\nimport { transform } from '@swc-node/core'\nimport { SourcemapMap } from '@swc-node/sourcemap-support'\n\nimport { tsCompilerOptionsToSwcConfig } from './read-default-tsconfig.js'\n\nconst injectInlineSourceMap = ({\n code,\n filename,\n map,\n}: {\n code: string\n filename: string\n map: string | undefined\n}): string => {\n if (map) {\n SourcemapMap.set(filename, map)\n const base64Map = Buffer.from(map, 'utf8').toString('base64')\n const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`\n return `${code}\\n${sourceMapContent}`\n }\n return code\n}\n\nexport async function compile(\n sourcecode: string,\n filename: string,\n options: ts.CompilerOptions & { fallbackToTs?: (filename: string) => boolean },\n): Promise<string> {\n if (filename.endsWith('.d.ts')) {\n return ''\n }\n\n const swcRegisterConfig = tsCompilerOptionsToSwcConfig(options, filename)\n\n return transform(sourcecode, filename, swcRegisterConfig).then(({ code, map }) => {\n return injectInlineSourceMap({ code, filename, map })\n })\n}\n"],"names":["transform","SourcemapMap","tsCompilerOptionsToSwcConfig","injectInlineSourceMap","code","filename","map","set","base64Map","Buffer","from","toString","sourceMapContent","compile","sourcecode","options","endsWith","swcRegisterConfig","then"],"mappings":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,YAAY,QAAQ,8BAA6B;AAE1D,SAASC,4BAA4B,QAAQ,6BAA4B;AAEzE,MAAMC,wBAAwB,CAAC,EAC7BC,IAAI,EACJC,QAAQ,EACRC,GAAG,EAKJ;IACC,IAAIA,KAAK;QACPL,aAAaM,GAAG,CAACF,UAAUC;QAC3B,MAAME,YAAYC,OAAOC,IAAI,CAACJ,KAAK,QAAQK,QAAQ,CAAC;QACpD,MAAMC,mBAAmB,CAAC,gEAAgE,EAAEJ,UAAU,CAAC;QACvG,OAAO,CAAC,EAAEJ,KAAK,EAAE,EAAEQ,iBAAiB,CAAC;IACvC;IACA,OAAOR;AACT;AAEA,OAAO,eAAeS,QACpBC,UAAkB,EAClBT,QAAgB,EAChBU,OAA8E;IAE9E,IAAIV,SAASW,QAAQ,CAAC,UAAU;QAC9B,OAAO;IACT;IAEA,MAAMC,oBAAoBf,6BAA6Ba,SAASV;IAEhE,OAAOL,UAAUc,YAAYT,UAAUY,mBAAmBC,IAAI,CAAC,CAAC,EAAEd,IAAI,EAAEE,GAAG,EAAE;QAC3E,OAAOH,sBAAsB;YAAEC;YAAMC;YAAUC;QAAI;IACrD;AACF"}
1
+ {"version":3,"sources":["../../../src/bin/loader/compile.ts"],"sourcesContent":["import type * as ts from 'typescript'\n\nimport { transform } from '@swc-node/core'\nimport { SourcemapMap } from '@swc-node/sourcemap-support'\n\nimport { tsCompilerOptionsToSwcConfig } from './read-default-tsconfig.js'\n\nconst injectInlineSourceMap = ({\n code,\n filename,\n map,\n}: {\n code: string\n filename: string\n map: string | undefined\n}): string => {\n if (map) {\n SourcemapMap.set(filename, map)\n const base64Map = Buffer.from(map, 'utf8').toString('base64')\n const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`\n return `${code}\\n${sourceMapContent}`\n }\n return code\n}\n\nexport async function compile(\n sourcecode: string,\n filename: string,\n options: ts.CompilerOptions & { fallbackToTs?: (filename: string) => boolean },\n): Promise<string> {\n if (filename.endsWith('.d.ts')) {\n return ''\n }\n\n const swcRegisterConfig = tsCompilerOptionsToSwcConfig(options, filename)\n\n return transform(sourcecode, filename, swcRegisterConfig).then(({ code, map }) => {\n return injectInlineSourceMap({ code, filename, map })\n })\n}\n"],"names":["transform","SourcemapMap","tsCompilerOptionsToSwcConfig","injectInlineSourceMap","code","filename","map","set","base64Map","Buffer","from","toString","sourceMapContent","compile","sourcecode","options","endsWith","swcRegisterConfig","then"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,YAAY,QAAQ,8BAA6B;AAE1D,SAASC,4BAA4B,QAAQ,6BAA4B;AAEzE,MAAMC,wBAAwB,CAAC,EAC7BC,IAAI,EACJC,QAAQ,EACRC,GAAG,EAKJ;IACC,IAAIA,KAAK;QACPL,aAAaM,GAAG,CAACF,UAAUC;QAC3B,MAAME,YAAYC,OAAOC,IAAI,CAACJ,KAAK,QAAQK,QAAQ,CAAC;QACpD,MAAMC,mBAAmB,CAAC,gEAAgE,EAAEJ,UAAU,CAAC;QACvG,OAAO,CAAC,EAAEJ,KAAK,EAAE,EAAEQ,iBAAiB,CAAC;IACvC;IACA,OAAOR;AACT;AAEA,OAAO,eAAeS,QACpBC,UAAkB,EAClBT,QAAgB,EAChBU,OAA8E;IAE9E,IAAIV,SAASW,QAAQ,CAAC,UAAU;QAC9B,OAAO;IACT;IAEA,MAAMC,oBAAoBf,6BAA6Ba,SAASV;IAEhE,OAAOL,UAAUc,YAAYT,UAAUY,mBAAmBC,IAAI,CAAC,CAAC,EAAEd,IAAI,EAAEE,GAAG,EAAE;QAC3E,OAAOH,sBAAsB;YAAEC;YAAMC;YAAUC;QAAI;IACrD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/index.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AACD,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AACD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM;IACjB,OAAO,CAAC,EAAE,cAAc;IACxB,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC;CAC/D,CAAA;AACD,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AA0B3E,eAAO,MAAM,OAAO,EAAE,SAwErB,CAAA;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AACD,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAA;CAC9D;AACD,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,WAAW;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC;CACtD,CAAA;AACD,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAelE,eAAO,MAAM,IAAI,EAAE,MAuBlB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/loader/index.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AACD,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AACD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM;IACjB,OAAO,CAAC,EAAE,cAAc;IACxB,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC;CAC/D,CAAA;AACD,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AA0B3E,eAAO,MAAM,OAAO,EAAE,SAuErB,CAAA;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AACD,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAA;CAC9D;AACD,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,WAAW;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC;CACtD,CAAA;AACD,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAelE,eAAO,MAAM,IAAI,EAAE,MAuBlB,CAAA"}
@@ -47,7 +47,6 @@ export const resolve = async (specifier, context, nextResolve)=>{
47
47
  // This could fail, so we need to swallow that error
48
48
  // and keep going
49
49
  let nextResult;
50
- // First, try to
51
50
  if (!isTS) {
52
51
  try {
53
52
  nextResult = await nextResolve(specifier, context, nextResolve);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/loader/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport { getTsconfig } from 'get-tsconfig'\nimport path from 'path'\nimport ts from 'typescript'\nimport { fileURLToPath, pathToFileURL } from 'url'\n\nimport { CLIENT_EXTENSIONS } from './clientExtensions.js'\nimport { compile } from './compile.js'\n\ninterface ResolveContext {\n conditions: string[]\n parentURL: string | undefined\n}\ninterface ResolveResult {\n format?: string\n shortCircuit?: boolean\n url: string\n}\ntype ResolveArgs = [\n specifier: string,\n context?: ResolveContext,\n nextResolve?: (...args: ResolveArgs) => Promise<ResolveResult>,\n]\ntype ResolveFn = (...args: Required<ResolveArgs>) => Promise<ResolveResult>\n\nconst locatedConfig = getTsconfig()\nconst tsconfig = locatedConfig.config.compilerOptions as unknown as ts.CompilerOptions\n\n// Don't resolve d.ts files, because we aren't type-checking\ntsconfig.noDtsResolution = true\ntsconfig.module = ts.ModuleKind.ESNext\ntsconfig.moduleResolution = ts.ModuleResolutionKind.NodeNext\n\nconst moduleResolutionCache = ts.createModuleResolutionCache(\n ts.sys.getCurrentDirectory(),\n (x) => x,\n tsconfig,\n)\nconst host: ts.ModuleResolutionHost = {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n}\nconst TS_EXTENSIONS: string[] = [\n ts.Extension.Ts,\n ts.Extension.Tsx,\n ts.Extension.Dts,\n ts.Extension.Mts,\n]\n\nexport const resolve: ResolveFn = async (specifier, context, nextResolve) => {\n const isTS = TS_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n const isClient = CLIENT_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n\n // If a client file is resolved, we'll set `format: client`\n // and short circuit, so the load step\n // will return source code of empty object\n if (isClient) {\n const nextResult = await nextResolve(specifier, context, nextResolve)\n\n return {\n format: 'client',\n shortCircuit: true,\n url: nextResult.url,\n }\n }\n\n // entrypoint\n if (!context.parentURL) {\n return {\n format: isTS ? 'ts' : undefined,\n shortCircuit: true,\n url: specifier,\n }\n }\n\n // Try and resolve normally\n // This could fail, so we need to swallow that error\n // and keep going\n let nextResult: ResolveResult\n\n // First, try to\n if (!isTS) {\n try {\n nextResult = await nextResolve(specifier, context, nextResolve)\n } catch (_) {\n // swallow error\n }\n }\n\n if (nextResult) {\n const nextResultIsTS = TS_EXTENSIONS.some((ext) => nextResult.url.endsWith(ext))\n\n return {\n ...nextResult,\n format: nextResultIsTS ? 'ts' : nextResult.format,\n shortCircuit: true,\n }\n }\n\n const { resolvedModule } = ts.resolveModuleName(\n specifier,\n fileURLToPath(context.parentURL),\n tsconfig,\n host,\n moduleResolutionCache,\n )\n\n if (resolvedModule) {\n const resolvedIsTS = TS_EXTENSIONS.includes(resolvedModule.extension)\n\n return {\n format: resolvedIsTS ? 'ts' : undefined,\n shortCircuit: true,\n url: pathToFileURL(resolvedModule.resolvedFileName).href,\n }\n }\n\n // import from local project to either:\n // - something TS couldn't resolve\n // - local project non-TS file\n return nextResolve(specifier, context, nextResolve)\n}\n\ninterface LoadContext {\n conditions: string[]\n format: null | string | undefined\n}\ninterface LoadResult {\n format: string\n shortCircuit?: boolean\n source: ArrayBuffer | SharedArrayBuffer | Uint8Array | string\n}\ntype LoadArgs = [\n url: string,\n context: LoadContext,\n nextLoad?: (...args: LoadArgs) => Promise<LoadResult>,\n]\ntype LoadFn = (...args: Required<LoadArgs>) => Promise<LoadResult>\n\nconst swcOptions = {\n ...tsconfig,\n baseUrl: path.resolve(''),\n paths: undefined,\n}\n\nif (tsconfig.paths) {\n swcOptions.paths = tsconfig.paths\n if (tsconfig.baseUrl) {\n swcOptions.baseUrl = path.resolve(tsconfig.baseUrl)\n }\n}\n\nexport const load: LoadFn = async (url, context, nextLoad) => {\n if (context.format === 'client') {\n const rawSource = 'export default {}'\n\n return {\n format: 'module',\n shortCircuit: true,\n source: rawSource,\n }\n }\n\n if (context.format === 'ts') {\n const { source } = await nextLoad(url, context)\n const code = typeof source === 'string' ? source : Buffer.from(source).toString()\n const compiled = await compile(code, fileURLToPath(url), swcOptions)\n return {\n format: 'module',\n shortCircuit: true,\n source: compiled,\n }\n } else {\n return nextLoad(url, context)\n }\n}\n"],"names":["getTsconfig","path","ts","fileURLToPath","pathToFileURL","CLIENT_EXTENSIONS","compile","locatedConfig","tsconfig","config","compilerOptions","noDtsResolution","module","ModuleKind","ESNext","moduleResolution","ModuleResolutionKind","NodeNext","moduleResolutionCache","createModuleResolutionCache","sys","getCurrentDirectory","x","host","fileExists","readFile","TS_EXTENSIONS","Extension","Ts","Tsx","Dts","Mts","resolve","specifier","context","nextResolve","isTS","some","ext","endsWith","isClient","nextResult","format","shortCircuit","url","parentURL","undefined","_","nextResultIsTS","resolvedModule","resolveModuleName","resolvedIsTS","includes","extension","resolvedFileName","href","swcOptions","baseUrl","paths","load","nextLoad","rawSource","source","code","Buffer","from","toString","compiled"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/bin/loader/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport { getTsconfig } from 'get-tsconfig'\nimport path from 'path'\nimport ts from 'typescript'\nimport { fileURLToPath, pathToFileURL } from 'url'\n\nimport { CLIENT_EXTENSIONS } from './clientExtensions.js'\nimport { compile } from './compile.js'\n\ninterface ResolveContext {\n conditions: string[]\n parentURL: string | undefined\n}\ninterface ResolveResult {\n format?: string\n shortCircuit?: boolean\n url: string\n}\ntype ResolveArgs = [\n specifier: string,\n context?: ResolveContext,\n nextResolve?: (...args: ResolveArgs) => Promise<ResolveResult>,\n]\ntype ResolveFn = (...args: Required<ResolveArgs>) => Promise<ResolveResult>\n\nconst locatedConfig = getTsconfig()\nconst tsconfig = locatedConfig.config.compilerOptions as unknown as ts.CompilerOptions\n\n// Don't resolve d.ts files, because we aren't type-checking\ntsconfig.noDtsResolution = true\ntsconfig.module = ts.ModuleKind.ESNext\ntsconfig.moduleResolution = ts.ModuleResolutionKind.NodeNext\n\nconst moduleResolutionCache = ts.createModuleResolutionCache(\n ts.sys.getCurrentDirectory(),\n (x) => x,\n tsconfig,\n)\nconst host: ts.ModuleResolutionHost = {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n}\nconst TS_EXTENSIONS: string[] = [\n ts.Extension.Ts,\n ts.Extension.Tsx,\n ts.Extension.Dts,\n ts.Extension.Mts,\n]\n\nexport const resolve: ResolveFn = async (specifier, context, nextResolve) => {\n const isTS = TS_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n const isClient = CLIENT_EXTENSIONS.some((ext) => specifier.endsWith(ext))\n\n // If a client file is resolved, we'll set `format: client`\n // and short circuit, so the load step\n // will return source code of empty object\n if (isClient) {\n const nextResult = await nextResolve(specifier, context, nextResolve)\n\n return {\n format: 'client',\n shortCircuit: true,\n url: nextResult.url,\n }\n }\n\n // entrypoint\n if (!context.parentURL) {\n return {\n format: isTS ? 'ts' : undefined,\n shortCircuit: true,\n url: specifier,\n }\n }\n\n // Try and resolve normally\n // This could fail, so we need to swallow that error\n // and keep going\n let nextResult: ResolveResult\n\n if (!isTS) {\n try {\n nextResult = await nextResolve(specifier, context, nextResolve)\n } catch (_) {\n // swallow error\n }\n }\n\n if (nextResult) {\n const nextResultIsTS = TS_EXTENSIONS.some((ext) => nextResult.url.endsWith(ext))\n\n return {\n ...nextResult,\n format: nextResultIsTS ? 'ts' : nextResult.format,\n shortCircuit: true,\n }\n }\n\n const { resolvedModule } = ts.resolveModuleName(\n specifier,\n fileURLToPath(context.parentURL),\n tsconfig,\n host,\n moduleResolutionCache,\n )\n\n if (resolvedModule) {\n const resolvedIsTS = TS_EXTENSIONS.includes(resolvedModule.extension)\n\n return {\n format: resolvedIsTS ? 'ts' : undefined,\n shortCircuit: true,\n url: pathToFileURL(resolvedModule.resolvedFileName).href,\n }\n }\n\n // import from local project to either:\n // - something TS couldn't resolve\n // - local project non-TS file\n return nextResolve(specifier, context, nextResolve)\n}\n\ninterface LoadContext {\n conditions: string[]\n format: null | string | undefined\n}\ninterface LoadResult {\n format: string\n shortCircuit?: boolean\n source: ArrayBuffer | SharedArrayBuffer | Uint8Array | string\n}\ntype LoadArgs = [\n url: string,\n context: LoadContext,\n nextLoad?: (...args: LoadArgs) => Promise<LoadResult>,\n]\ntype LoadFn = (...args: Required<LoadArgs>) => Promise<LoadResult>\n\nconst swcOptions = {\n ...tsconfig,\n baseUrl: path.resolve(''),\n paths: undefined,\n}\n\nif (tsconfig.paths) {\n swcOptions.paths = tsconfig.paths\n if (tsconfig.baseUrl) {\n swcOptions.baseUrl = path.resolve(tsconfig.baseUrl)\n }\n}\n\nexport const load: LoadFn = async (url, context, nextLoad) => {\n if (context.format === 'client') {\n const rawSource = 'export default {}'\n\n return {\n format: 'module',\n shortCircuit: true,\n source: rawSource,\n }\n }\n\n if (context.format === 'ts') {\n const { source } = await nextLoad(url, context)\n const code = typeof source === 'string' ? source : Buffer.from(source).toString()\n const compiled = await compile(code, fileURLToPath(url), swcOptions)\n return {\n format: 'module',\n shortCircuit: true,\n source: compiled,\n }\n } else {\n return nextLoad(url, context)\n }\n}\n"],"names":["getTsconfig","path","ts","fileURLToPath","pathToFileURL","CLIENT_EXTENSIONS","compile","locatedConfig","tsconfig","config","compilerOptions","noDtsResolution","module","ModuleKind","ESNext","moduleResolution","ModuleResolutionKind","NodeNext","moduleResolutionCache","createModuleResolutionCache","sys","getCurrentDirectory","x","host","fileExists","readFile","TS_EXTENSIONS","Extension","Ts","Tsx","Dts","Mts","resolve","specifier","context","nextResolve","isTS","some","ext","endsWith","isClient","nextResult","format","shortCircuit","url","parentURL","undefined","_","nextResultIsTS","resolvedModule","resolveModuleName","resolvedIsTS","includes","extension","resolvedFileName","href","swcOptions","baseUrl","paths","load","nextLoad","rawSource","source","code","Buffer","from","toString","compiled"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/loader/read-default-tsconfig.ts"],"sourcesContent":["import type { Options } from '@swc-node/core'\n\nimport { resolve } from 'path'\nimport ts from 'typescript'\n\nfunction toTsTarget(target: ts.ScriptTarget): Options['target'] {\n switch (target) {\n case ts.ScriptTarget.ES3:\n return 'es3'\n case ts.ScriptTarget.ES5:\n return 'es5'\n case ts.ScriptTarget.ES2015:\n return 'es2015'\n case ts.ScriptTarget.ES2016:\n return 'es2016'\n case ts.ScriptTarget.ES2017:\n return 'es2017'\n case ts.ScriptTarget.ES2018:\n return 'es2018'\n case ts.ScriptTarget.ES2019:\n return 'es2019'\n case ts.ScriptTarget.ES2020:\n return 'es2020'\n case ts.ScriptTarget.ES2021:\n return 'es2021'\n case ts.ScriptTarget.ES2022:\n case ts.ScriptTarget.ESNext:\n case ts.ScriptTarget.Latest:\n return 'es2022'\n case ts.ScriptTarget.JSON:\n return 'es5'\n }\n}\n\nfunction toModule(moduleKind: ts.ModuleKind) {\n switch (moduleKind) {\n case ts.ModuleKind.CommonJS:\n return 'commonjs'\n case ts.ModuleKind.UMD:\n return 'umd'\n case ts.ModuleKind.AMD:\n return 'amd'\n case ts.ModuleKind.ES2015:\n case ts.ModuleKind.ES2020:\n case ts.ModuleKind.ES2022:\n case ts.ModuleKind.ESNext:\n case ts.ModuleKind.Node16:\n case ts.ModuleKind.NodeNext:\n case ts.ModuleKind.None:\n return 'es6'\n case ts.ModuleKind.System:\n throw new TypeError('Do not support system kind module')\n }\n}\n\n/**\n * The default value for useDefineForClassFields depends on the emit target\n * @see https://www.typescriptlang.org/tsconfig#useDefineForClassFields\n */\nfunction getUseDefineForClassFields(\n compilerOptions: ts.CompilerOptions,\n target: ts.ScriptTarget,\n): boolean {\n return compilerOptions.useDefineForClassFields ?? target >= ts.ScriptTarget.ES2022\n}\n\nexport function tsCompilerOptionsToSwcConfig(\n options: ts.CompilerOptions,\n filename: string,\n): Options {\n const isJsx = filename.endsWith('.tsx') || filename.endsWith('.jsx') || Boolean(options.jsx)\n const target = options.target ?? ts.ScriptTarget.ES2018\n return {\n baseUrl: options.baseUrl ? resolve(options.baseUrl) : undefined,\n dynamicImport: true,\n emitDecoratorMetadata: options.emitDecoratorMetadata ?? false,\n esModuleInterop: options.esModuleInterop ?? false,\n experimentalDecorators: options.experimentalDecorators ?? false,\n externalHelpers: Boolean(options.importHelpers),\n ignoreDynamic: Boolean(process.env.SWC_NODE_IGNORE_DYNAMIC),\n jsx: isJsx,\n keepClassNames: true,\n module: toModule(options.module ?? ts.ModuleKind.ES2015),\n paths: Object.fromEntries(\n Object.entries(options.paths ?? {}).map(([aliasKey, aliasPaths]) => [\n aliasKey,\n (aliasPaths ?? []).map((path) => resolve(options.baseUrl ?? './', path)),\n ]),\n ) as Options['paths'],\n react:\n options.jsxFactory ?? options.jsxFragmentFactory ?? options.jsx ?? options.jsxImportSource\n ? {\n importSource: options.jsxImportSource ?? 'react',\n pragma: options.jsxFactory,\n pragmaFrag: options.jsxFragmentFactory,\n runtime: (options.jsx ?? 0) >= ts.JsxEmit.ReactJSX ? 'automatic' : 'classic',\n useBuiltins: true,\n }\n : undefined,\n sourcemap: options.sourceMap && options.inlineSourceMap ? 'inline' : Boolean(options.sourceMap),\n swc: {\n inputSourceMap: options.inlineSourceMap,\n sourceRoot: options.sourceRoot,\n },\n target: toTsTarget(target),\n useDefineForClassFields: getUseDefineForClassFields(options, target),\n }\n}\n"],"names":["resolve","ts","toTsTarget","target","ScriptTarget","ES3","ES5","ES2015","ES2016","ES2017","ES2018","ES2019","ES2020","ES2021","ES2022","ESNext","Latest","JSON","toModule","moduleKind","ModuleKind","CommonJS","UMD","AMD","Node16","NodeNext","None","System","TypeError","getUseDefineForClassFields","compilerOptions","useDefineForClassFields","tsCompilerOptionsToSwcConfig","options","filename","isJsx","endsWith","Boolean","jsx","baseUrl","undefined","dynamicImport","emitDecoratorMetadata","esModuleInterop","experimentalDecorators","externalHelpers","importHelpers","ignoreDynamic","process","env","SWC_NODE_IGNORE_DYNAMIC","keepClassNames","module","paths","Object","fromEntries","entries","map","aliasKey","aliasPaths","path","react","jsxFactory","jsxFragmentFactory","jsxImportSource","importSource","pragma","pragmaFrag","runtime","JsxEmit","ReactJSX","useBuiltins","sourcemap","sourceMap","inlineSourceMap","swc","inputSourceMap","sourceRoot"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/bin/loader/read-default-tsconfig.ts"],"sourcesContent":["import type { Options } from '@swc-node/core'\n\nimport { resolve } from 'path'\nimport ts from 'typescript'\n\nfunction toTsTarget(target: ts.ScriptTarget): Options['target'] {\n switch (target) {\n case ts.ScriptTarget.ES3:\n return 'es3'\n case ts.ScriptTarget.ES5:\n return 'es5'\n case ts.ScriptTarget.ES2015:\n return 'es2015'\n case ts.ScriptTarget.ES2016:\n return 'es2016'\n case ts.ScriptTarget.ES2017:\n return 'es2017'\n case ts.ScriptTarget.ES2018:\n return 'es2018'\n case ts.ScriptTarget.ES2019:\n return 'es2019'\n case ts.ScriptTarget.ES2020:\n return 'es2020'\n case ts.ScriptTarget.ES2021:\n return 'es2021'\n case ts.ScriptTarget.ES2022:\n case ts.ScriptTarget.ESNext:\n case ts.ScriptTarget.Latest:\n return 'es2022'\n case ts.ScriptTarget.JSON:\n return 'es5'\n }\n}\n\nfunction toModule(moduleKind: ts.ModuleKind) {\n switch (moduleKind) {\n case ts.ModuleKind.CommonJS:\n return 'commonjs'\n case ts.ModuleKind.UMD:\n return 'umd'\n case ts.ModuleKind.AMD:\n return 'amd'\n case ts.ModuleKind.ES2015:\n case ts.ModuleKind.ES2020:\n case ts.ModuleKind.ES2022:\n case ts.ModuleKind.ESNext:\n case ts.ModuleKind.Node16:\n case ts.ModuleKind.NodeNext:\n case ts.ModuleKind.None:\n return 'es6'\n case ts.ModuleKind.System:\n throw new TypeError('Do not support system kind module')\n }\n}\n\n/**\n * The default value for useDefineForClassFields depends on the emit target\n * @see https://www.typescriptlang.org/tsconfig#useDefineForClassFields\n */\nfunction getUseDefineForClassFields(\n compilerOptions: ts.CompilerOptions,\n target: ts.ScriptTarget,\n): boolean {\n return compilerOptions.useDefineForClassFields ?? target >= ts.ScriptTarget.ES2022\n}\n\nexport function tsCompilerOptionsToSwcConfig(\n options: ts.CompilerOptions,\n filename: string,\n): Options {\n const isJsx = filename.endsWith('.tsx') || filename.endsWith('.jsx') || Boolean(options.jsx)\n const target = options.target ?? ts.ScriptTarget.ES2018\n return {\n baseUrl: options.baseUrl ? resolve(options.baseUrl) : undefined,\n dynamicImport: true,\n emitDecoratorMetadata: options.emitDecoratorMetadata ?? false,\n esModuleInterop: options.esModuleInterop ?? false,\n experimentalDecorators: options.experimentalDecorators ?? false,\n externalHelpers: Boolean(options.importHelpers),\n ignoreDynamic: Boolean(process.env.SWC_NODE_IGNORE_DYNAMIC),\n jsx: isJsx,\n keepClassNames: true,\n module: toModule(options.module ?? ts.ModuleKind.ES2015),\n paths: Object.fromEntries(\n Object.entries(options.paths ?? {}).map(([aliasKey, aliasPaths]) => [\n aliasKey,\n (aliasPaths ?? []).map((path) => resolve(options.baseUrl ?? './', path)),\n ]),\n ) as Options['paths'],\n react:\n options.jsxFactory ?? options.jsxFragmentFactory ?? options.jsx ?? options.jsxImportSource\n ? {\n importSource: options.jsxImportSource ?? 'react',\n pragma: options.jsxFactory,\n pragmaFrag: options.jsxFragmentFactory,\n runtime: (options.jsx ?? 0) >= ts.JsxEmit.ReactJSX ? 'automatic' : 'classic',\n useBuiltins: true,\n }\n : undefined,\n sourcemap: options.sourceMap && options.inlineSourceMap ? 'inline' : Boolean(options.sourceMap),\n swc: {\n inputSourceMap: options.inlineSourceMap,\n sourceRoot: options.sourceRoot,\n },\n target: toTsTarget(target),\n useDefineForClassFields: getUseDefineForClassFields(options, target),\n }\n}\n"],"names":["resolve","ts","toTsTarget","target","ScriptTarget","ES3","ES5","ES2015","ES2016","ES2017","ES2018","ES2019","ES2020","ES2021","ES2022","ESNext","Latest","JSON","toModule","moduleKind","ModuleKind","CommonJS","UMD","AMD","Node16","NodeNext","None","System","TypeError","getUseDefineForClassFields","compilerOptions","useDefineForClassFields","tsCompilerOptionsToSwcConfig","options","filename","isJsx","endsWith","Boolean","jsx","baseUrl","undefined","dynamicImport","emitDecoratorMetadata","esModuleInterop","experimentalDecorators","externalHelpers","importHelpers","ignoreDynamic","process","env","SWC_NODE_IGNORE_DYNAMIC","keepClassNames","module","paths","Object","fromEntries","entries","map","aliasKey","aliasPaths","path","react","jsxFactory","jsxFragmentFactory","jsxImportSource","importSource","pragma","pragmaFrag","runtime","JsxEmit","ReactJSX","useBuiltins","sourcemap","sourceMap","inlineSourceMap","swc","inputSourceMap","sourceRoot"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/migrate.ts"],"sourcesContent":["import type { ParsedArgs } from 'minimist'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport payload from '../index.js'\nimport { prettySyncLoggerDestination } from '../utilities/logger.js'\n\n/**\n * The default logger's options did not allow for forcing sync logging\n * Using these options, to force both pretty print and sync logging\n */\nconst prettySyncLogger = {\n loggerDestination: prettySyncLoggerDestination,\n loggerOptions: {},\n}\n\nconst availableCommands = [\n 'migrate',\n 'migrate:create',\n 'migrate:down',\n 'migrate:refresh',\n 'migrate:reset',\n 'migrate:status',\n 'migration:fresh',\n]\n\nconst availableCommandsMsg = `Available commands: ${availableCommands.join(', ')}`\n\ntype Args = {\n config: SanitizedConfig\n parsedArgs: ParsedArgs\n}\n\nexport const migrate = async ({ config, parsedArgs }: Args): Promise<void> => {\n const { _: args, file, forceAcceptWarning, help } = parsedArgs\n if (help) {\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${availableCommandsMsg}\\n`) // Avoid having to init payload to get the logger\n process.exit(0)\n }\n\n process.env.PAYLOAD_MIGRATING = 'true'\n\n // Barebones instance to access database adapter\n await payload.init({\n config,\n disableOnInit: true,\n ...prettySyncLogger,\n })\n\n const adapter = payload.db\n\n if (!adapter) {\n throw new Error('No database adapter found')\n }\n\n if (!args.length) {\n payload.logger.error({\n msg: `No migration command provided. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n switch (args[0]) {\n case 'migrate':\n await adapter.migrate()\n break\n case 'migrate:status':\n await adapter.migrateStatus()\n break\n case 'migrate:down':\n await adapter.migrateDown()\n break\n case 'migrate:refresh':\n await adapter.migrateRefresh()\n break\n case 'migrate:reset':\n await adapter.migrateReset()\n break\n case 'migrate:fresh':\n await adapter.migrateFresh({ forceAcceptWarning })\n break\n case 'migrate:create':\n try {\n await adapter.createMigration({\n file,\n forceAcceptWarning,\n migrationName: args[1],\n payload,\n })\n } catch (err) {\n throw new Error(`Error creating migration: ${err.message}`)\n }\n break\n\n default:\n payload.logger.error({\n msg: `Unknown migration command: ${args[0]}. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n payload.logger.info('Done.')\n}\n"],"names":["payload","prettySyncLoggerDestination","prettySyncLogger","loggerDestination","loggerOptions","availableCommands","availableCommandsMsg","join","migrate","config","parsedArgs","_","args","file","forceAcceptWarning","help","console","log","process","exit","env","PAYLOAD_MIGRATING","init","disableOnInit","adapter","db","Error","length","logger","error","msg","migrateStatus","migrateDown","migrateRefresh","migrateReset","migrateFresh","createMigration","migrationName","err","message","info"],"mappings":"AAIA,OAAOA,aAAa,cAAa;AACjC,SAASC,2BAA2B,QAAQ,yBAAwB;AAEpE;;;CAGC,GACD,MAAMC,mBAAmB;IACvBC,mBAAmBF;IACnBG,eAAe,CAAC;AAClB;AAEA,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,uBAAuB,CAAC,oBAAoB,EAAED,kBAAkBE,IAAI,CAAC,MAAM,CAAC;AAOlF,OAAO,MAAMC,UAAU,OAAO,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IACxD,MAAM,EAAEC,GAAGC,IAAI,EAAEC,IAAI,EAAEC,kBAAkB,EAAEC,IAAI,EAAE,GAAGL;IACpD,IAAIK,MAAM;QACR,sCAAsC;QACtCC,QAAQC,GAAG,CAAC,CAAC,IAAI,EAAEX,qBAAqB,EAAE,CAAC,EAAE,iDAAiD;;QAC9FY,QAAQC,IAAI,CAAC;IACf;IAEAD,QAAQE,GAAG,CAACC,iBAAiB,GAAG;IAEhC,gDAAgD;IAChD,MAAMrB,QAAQsB,IAAI,CAAC;QACjBb;QACAc,eAAe;QACf,GAAGrB,gBAAgB;IACrB;IAEA,MAAMsB,UAAUxB,QAAQyB,EAAE;IAE1B,IAAI,CAACD,SAAS;QACZ,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAI,CAACd,KAAKe,MAAM,EAAE;QAChB3B,QAAQ4B,MAAM,CAACC,KAAK,CAAC;YACnBC,KAAK,CAAC,+BAA+B,EAAExB,qBAAqB,CAAC;QAC/D;QACAY,QAAQC,IAAI,CAAC;IACf;IAEA,OAAQP,IAAI,CAAC,EAAE;QACb,KAAK;YACH,MAAMY,QAAQhB,OAAO;YACrB;QACF,KAAK;YACH,MAAMgB,QAAQO,aAAa;YAC3B;QACF,KAAK;YACH,MAAMP,QAAQQ,WAAW;YACzB;QACF,KAAK;YACH,MAAMR,QAAQS,cAAc;YAC5B;QACF,KAAK;YACH,MAAMT,QAAQU,YAAY;YAC1B;QACF,KAAK;YACH,MAAMV,QAAQW,YAAY,CAAC;gBAAErB;YAAmB;YAChD;QACF,KAAK;YACH,IAAI;gBACF,MAAMU,QAAQY,eAAe,CAAC;oBAC5BvB;oBACAC;oBACAuB,eAAezB,IAAI,CAAC,EAAE;oBACtBZ;gBACF;YACF,EAAE,OAAOsC,KAAK;gBACZ,MAAM,IAAIZ,MAAM,CAAC,0BAA0B,EAAEY,IAAIC,OAAO,CAAC,CAAC;YAC5D;YACA;QAEF;YACEvC,QAAQ4B,MAAM,CAACC,KAAK,CAAC;gBACnBC,KAAK,CAAC,2BAA2B,EAAElB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAEN,qBAAqB,CAAC;YACvE;YACAY,QAAQC,IAAI,CAAC;IACjB;IAEAnB,QAAQ4B,MAAM,CAACY,IAAI,CAAC;AACtB,EAAC"}
1
+ {"version":3,"sources":["../../src/bin/migrate.ts"],"sourcesContent":["import type { ParsedArgs } from 'minimist'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport payload from '../index.js'\nimport { prettySyncLoggerDestination } from '../utilities/logger.js'\n\n/**\n * The default logger's options did not allow for forcing sync logging\n * Using these options, to force both pretty print and sync logging\n */\nconst prettySyncLogger = {\n loggerDestination: prettySyncLoggerDestination,\n loggerOptions: {},\n}\n\nconst availableCommands = [\n 'migrate',\n 'migrate:create',\n 'migrate:down',\n 'migrate:refresh',\n 'migrate:reset',\n 'migrate:status',\n 'migration:fresh',\n]\n\nconst availableCommandsMsg = `Available commands: ${availableCommands.join(', ')}`\n\ntype Args = {\n config: SanitizedConfig\n parsedArgs: ParsedArgs\n}\n\nexport const migrate = async ({ config, parsedArgs }: Args): Promise<void> => {\n const { _: args, file, forceAcceptWarning, help } = parsedArgs\n if (help) {\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${availableCommandsMsg}\\n`) // Avoid having to init payload to get the logger\n process.exit(0)\n }\n\n process.env.PAYLOAD_MIGRATING = 'true'\n\n // Barebones instance to access database adapter\n await payload.init({\n config,\n disableOnInit: true,\n ...prettySyncLogger,\n })\n\n const adapter = payload.db\n\n if (!adapter) {\n throw new Error('No database adapter found')\n }\n\n if (!args.length) {\n payload.logger.error({\n msg: `No migration command provided. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n switch (args[0]) {\n case 'migrate':\n await adapter.migrate()\n break\n case 'migrate:status':\n await adapter.migrateStatus()\n break\n case 'migrate:down':\n await adapter.migrateDown()\n break\n case 'migrate:refresh':\n await adapter.migrateRefresh()\n break\n case 'migrate:reset':\n await adapter.migrateReset()\n break\n case 'migrate:fresh':\n await adapter.migrateFresh({ forceAcceptWarning })\n break\n case 'migrate:create':\n try {\n await adapter.createMigration({\n file,\n forceAcceptWarning,\n migrationName: args[1],\n payload,\n })\n } catch (err) {\n throw new Error(`Error creating migration: ${err.message}`)\n }\n break\n\n default:\n payload.logger.error({\n msg: `Unknown migration command: ${args[0]}. ${availableCommandsMsg}`,\n })\n process.exit(1)\n }\n\n payload.logger.info('Done.')\n}\n"],"names":["payload","prettySyncLoggerDestination","prettySyncLogger","loggerDestination","loggerOptions","availableCommands","availableCommandsMsg","join","migrate","config","parsedArgs","_","args","file","forceAcceptWarning","help","console","log","process","exit","env","PAYLOAD_MIGRATING","init","disableOnInit","adapter","db","Error","length","logger","error","msg","migrateStatus","migrateDown","migrateRefresh","migrateReset","migrateFresh","createMigration","migrationName","err","message","info"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,OAAOA,aAAa,cAAa;AACjC,SAASC,2BAA2B,QAAQ,yBAAwB;AAEpE;;;CAGC,GACD,MAAMC,mBAAmB;IACvBC,mBAAmBF;IACnBG,eAAe,CAAC;AAClB;AAEA,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,uBAAuB,CAAC,oBAAoB,EAAED,kBAAkBE,IAAI,CAAC,MAAM,CAAC;AAOlF,OAAO,MAAMC,UAAU,OAAO,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IACxD,MAAM,EAAEC,GAAGC,IAAI,EAAEC,IAAI,EAAEC,kBAAkB,EAAEC,IAAI,EAAE,GAAGL;IACpD,IAAIK,MAAM;QACR,sCAAsC;QACtCC,QAAQC,GAAG,CAAC,CAAC,IAAI,EAAEX,qBAAqB,EAAE,CAAC,EAAE,iDAAiD;;QAC9FY,QAAQC,IAAI,CAAC;IACf;IAEAD,QAAQE,GAAG,CAACC,iBAAiB,GAAG;IAEhC,gDAAgD;IAChD,MAAMrB,QAAQsB,IAAI,CAAC;QACjBb;QACAc,eAAe;QACf,GAAGrB,gBAAgB;IACrB;IAEA,MAAMsB,UAAUxB,QAAQyB,EAAE;IAE1B,IAAI,CAACD,SAAS;QACZ,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAI,CAACd,KAAKe,MAAM,EAAE;QAChB3B,QAAQ4B,MAAM,CAACC,KAAK,CAAC;YACnBC,KAAK,CAAC,+BAA+B,EAAExB,qBAAqB,CAAC;QAC/D;QACAY,QAAQC,IAAI,CAAC;IACf;IAEA,OAAQP,IAAI,CAAC,EAAE;QACb,KAAK;YACH,MAAMY,QAAQhB,OAAO;YACrB;QACF,KAAK;YACH,MAAMgB,QAAQO,aAAa;YAC3B;QACF,KAAK;YACH,MAAMP,QAAQQ,WAAW;YACzB;QACF,KAAK;YACH,MAAMR,QAAQS,cAAc;YAC5B;QACF,KAAK;YACH,MAAMT,QAAQU,YAAY;YAC1B;QACF,KAAK;YACH,MAAMV,QAAQW,YAAY,CAAC;gBAAErB;YAAmB;YAChD;QACF,KAAK;YACH,IAAI;gBACF,MAAMU,QAAQY,eAAe,CAAC;oBAC5BvB;oBACAC;oBACAuB,eAAezB,IAAI,CAAC,EAAE;oBACtBZ;gBACF;YACF,EAAE,OAAOsC,KAAK;gBACZ,MAAM,IAAIZ,MAAM,CAAC,0BAA0B,EAAEY,IAAIC,OAAO,CAAC,CAAC;YAC5D;YACA;QAEF;YACEvC,QAAQ4B,MAAM,CAACC,KAAK,CAAC;gBACnBC,KAAK,CAAC,2BAA2B,EAAElB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAEN,qBAAqB,CAAC;YACvE;YACAY,QAAQC,IAAI,CAAC;IACjB;IAEAnB,QAAQ4B,MAAM,CAACY,IAAI,CAAC;AACtB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/build.ts"],"sourcesContent":["import type { CollectionConfig } from './types.js'\n\nconst buildCollection = (collection: CollectionConfig): CollectionConfig => collection\n\nexport default buildCollection\n"],"names":["buildCollection","collection"],"mappings":"AAEA,MAAMA,kBAAkB,CAACC,aAAmDA;AAE5E,eAAeD,gBAAe"}
1
+ {"version":3,"sources":["../../../src/collections/config/build.ts"],"sourcesContent":["import type { CollectionConfig } from './types.js'\n\nconst buildCollection = (collection: CollectionConfig): CollectionConfig => collection\n\nexport default buildCollection\n"],"names":["buildCollection","collection"],"rangeMappings":";","mappings":"AAEA,MAAMA,kBAAkB,CAACC,aAAmDA;AAE5E,eAAeD,gBAAe"}
@@ -7,9 +7,13 @@ export type ClientCollectionConfig = Omit<SanitizedCollectionConfig, 'admin' | '
7
7
  };
8
8
  fields: ClientFieldConfig[];
9
9
  };
10
+ import type { TFunction } from '@payloadcms/translations';
10
11
  import type { ClientFieldConfig } from '../../fields/config/client.js';
11
12
  import type { SanitizedCollectionConfig } from './types.js';
12
- export declare const createClientCollectionConfig: (collection: SanitizedCollectionConfig) => {
13
+ export declare const createClientCollectionConfig: ({ collection, t, }: {
14
+ collection: SanitizedCollectionConfig;
15
+ t: TFunction;
16
+ }) => {
13
17
  auth: import("../../auth/types.js").Auth;
14
18
  endpoints: false | import("../../config/types.js").Endpoint[];
15
19
  fields: import("../../exports/types.js").Field[];
@@ -301,15 +305,18 @@ export declare const createClientCollectionConfig: (collection: SanitizedCollect
301
305
  defaultSort: string;
302
306
  disableDuplicate: boolean;
303
307
  labels: {
304
- plural: string | {
308
+ plural: string | import("../../config/types.js").LabelFunction | {
305
309
  [x: string]: string;
306
310
  };
307
- singular: string | {
311
+ singular: string | import("../../config/types.js").LabelFunction | {
308
312
  [x: string]: string;
309
313
  };
310
314
  };
311
315
  slug: string;
312
316
  timestamps: boolean;
313
317
  };
314
- export declare const createClientCollectionConfigs: (collections: SanitizedCollectionConfig[]) => ClientCollectionConfig[];
318
+ export declare const createClientCollectionConfigs: ({ collections, t, }: {
319
+ collections: SanitizedCollectionConfig[];
320
+ t: TFunction;
321
+ }) => ClientCollectionConfig[];
315
322
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,eAAgB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDjF,CAAA;AAED,eAAO,MAAM,6BAA6B,gBAC3B,yBAAyB,EAAE,KACvC,sBAAsB,EACkD,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/collections/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,yBAAyB,EACzB,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAC1D,yBAAyB,CAAC,OAAO,CAAC,EAClC,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,yBAAyB,EACzB,OAAO,GAAG,QAAQ,GAAG,8BAA8B,CACpD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,yBAAyB,CAAC,OAAO,CAAC,EAClC,QAAQ,GAAG,aAAa,GAAG,mCAAmC,CAC/D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAI3D,eAAO,MAAM,4BAA4B,uBAGtC;IACD,UAAU,EAAE,yBAAyB,CAAA;IACrC,CAAC,EAAE,SAAS,CAAA;CACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DA,CAAA;AAED,eAAO,MAAM,6BAA6B,wBAGvC;IACD,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,CAAC,EAAE,SAAS,CAAA;CACb,KAAG,sBAAsB,EACwD,CAAA"}
@@ -1,9 +1,12 @@
1
1
  import { createClientFieldConfigs } from '../../fields/config/client.js';
2
- export const createClientCollectionConfig = (collection)=>{
2
+ export const createClientCollectionConfig = ({ collection, t })=>{
3
3
  const sanitized = {
4
4
  ...collection
5
5
  };
6
- sanitized.fields = createClientFieldConfigs(sanitized.fields);
6
+ sanitized.fields = createClientFieldConfigs({
7
+ fields: sanitized.fields,
8
+ t
9
+ });
7
10
  const serverOnlyCollectionProperties = [
8
11
  'hooks',
9
12
  'access',
@@ -29,6 +32,15 @@ export const createClientCollectionConfig = (collection)=>{
29
32
  delete sanitized.auth.forgotPassword;
30
33
  delete sanitized.auth.verify;
31
34
  }
35
+ if (sanitized.labels) {
36
+ Object.entries(sanitized.labels).forEach(([labelType, collectionLabel])=>{
37
+ if (typeof collectionLabel === 'function') {
38
+ sanitized.labels[labelType] = collectionLabel({
39
+ t
40
+ });
41
+ }
42
+ });
43
+ }
32
44
  if ('admin' in sanitized) {
33
45
  sanitized.admin = {
34
46
  ...sanitized.admin
@@ -52,6 +64,9 @@ export const createClientCollectionConfig = (collection)=>{
52
64
  }
53
65
  return sanitized;
54
66
  };
55
- export const createClientCollectionConfigs = (collections)=>collections.map((collection)=>createClientCollectionConfig(collection));
67
+ export const createClientCollectionConfigs = ({ collections, t })=>collections.map((collection)=>createClientCollectionConfig({
68
+ collection,
69
+ t
70
+ }));
56
71
 
57
72
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/client.ts"],"sourcesContent":["import type { LivePreviewConfig, ServerOnlyLivePreviewProperties } from '../../config/types.js'\n\nexport type ServerOnlyCollectionProperties = keyof Pick<\n SanitizedCollectionConfig,\n 'access' | 'endpoints' | 'hooks'\n>\n\nexport type ServerOnlyCollectionAdminProperties = keyof Pick<\n SanitizedCollectionConfig['admin'],\n 'components' | 'hidden' | 'preview'\n>\n\nexport type ClientCollectionConfig = Omit<\n SanitizedCollectionConfig,\n 'admin' | 'fields' | ServerOnlyCollectionProperties\n> & {\n admin: Omit<\n SanitizedCollectionConfig['admin'],\n 'fields' | 'livePreview' | ServerOnlyCollectionAdminProperties\n > & {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n }\n fields: ClientFieldConfig[]\n}\n\nimport type { ClientFieldConfig } from '../../fields/config/client.js'\nimport type { SanitizedCollectionConfig } from './types.js'\n\nimport { createClientFieldConfigs } from '../../fields/config/client.js'\n\nexport const createClientCollectionConfig = (collection: SanitizedCollectionConfig) => {\n const sanitized = { ...collection }\n sanitized.fields = createClientFieldConfigs(sanitized.fields)\n\n const serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n // `upload`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyCollectionProperties.forEach((key) => {\n if (key in sanitized) {\n delete sanitized[key]\n }\n })\n\n if ('upload' in sanitized && typeof sanitized.upload === 'object') {\n sanitized.upload = { ...sanitized.upload }\n delete sanitized.upload.handlers\n delete sanitized.upload.adminThumbnail\n }\n\n if ('auth' in sanitized && typeof sanitized.auth === 'object') {\n sanitized.auth = { ...sanitized.auth }\n delete sanitized.auth.strategies\n delete sanitized.auth.forgotPassword\n delete sanitized.auth.verify\n }\n\n if ('admin' in sanitized) {\n sanitized.admin = { ...sanitized.admin }\n\n const serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'components',\n 'hidden',\n 'preview',\n // `livePreview` is handled separately\n ]\n\n serverOnlyCollectionAdminProperties.forEach((key) => {\n if (key in sanitized.admin) {\n delete sanitized.admin[key]\n }\n })\n\n if ('livePreview' in sanitized.admin) {\n sanitized.admin.livePreview = { ...sanitized.admin.livePreview }\n delete sanitized.admin.livePreview.url\n }\n }\n\n return sanitized\n}\n\nexport const createClientCollectionConfigs = (\n collections: SanitizedCollectionConfig[],\n): ClientCollectionConfig[] =>\n collections.map((collection) => createClientCollectionConfig(collection))\n"],"names":["createClientFieldConfigs","createClientCollectionConfig","collection","sanitized","fields","serverOnlyCollectionProperties","forEach","key","upload","handlers","adminThumbnail","auth","strategies","forgotPassword","verify","admin","serverOnlyCollectionAdminProperties","livePreview","url","createClientCollectionConfigs","collections","map"],"mappings":"AA4BA,SAASA,wBAAwB,QAAQ,gCAA+B;AAExE,OAAO,MAAMC,+BAA+B,CAACC;IAC3C,MAAMC,YAAY;QAAE,GAAGD,UAAU;IAAC;IAClCC,UAAUC,MAAM,GAAGJ,yBAAyBG,UAAUC,MAAM;IAE5D,MAAMC,iCAA4E;QAChF;QACA;QACA;KAID;IAEDA,+BAA+BC,OAAO,CAAC,CAACC;QACtC,IAAIA,OAAOJ,WAAW;YACpB,OAAOA,SAAS,CAACI,IAAI;QACvB;IACF;IAEA,IAAI,YAAYJ,aAAa,OAAOA,UAAUK,MAAM,KAAK,UAAU;QACjEL,UAAUK,MAAM,GAAG;YAAE,GAAGL,UAAUK,MAAM;QAAC;QACzC,OAAOL,UAAUK,MAAM,CAACC,QAAQ;QAChC,OAAON,UAAUK,MAAM,CAACE,cAAc;IACxC;IAEA,IAAI,UAAUP,aAAa,OAAOA,UAAUQ,IAAI,KAAK,UAAU;QAC7DR,UAAUQ,IAAI,GAAG;YAAE,GAAGR,UAAUQ,IAAI;QAAC;QACrC,OAAOR,UAAUQ,IAAI,CAACC,UAAU;QAChC,OAAOT,UAAUQ,IAAI,CAACE,cAAc;QACpC,OAAOV,UAAUQ,IAAI,CAACG,MAAM;IAC9B;IAEA,IAAI,WAAWX,WAAW;QACxBA,UAAUY,KAAK,GAAG;YAAE,GAAGZ,UAAUY,KAAK;QAAC;QAEvC,MAAMC,sCAAsF;YAC1F;YACA;YACA;SAED;QAEDA,oCAAoCV,OAAO,CAAC,CAACC;YAC3C,IAAIA,OAAOJ,UAAUY,KAAK,EAAE;gBAC1B,OAAOZ,UAAUY,KAAK,CAACR,IAAI;YAC7B;QACF;QAEA,IAAI,iBAAiBJ,UAAUY,KAAK,EAAE;YACpCZ,UAAUY,KAAK,CAACE,WAAW,GAAG;gBAAE,GAAGd,UAAUY,KAAK,CAACE,WAAW;YAAC;YAC/D,OAAOd,UAAUY,KAAK,CAACE,WAAW,CAACC,GAAG;QACxC;IACF;IAEA,OAAOf;AACT,EAAC;AAED,OAAO,MAAMgB,gCAAgC,CAC3CC,cAEAA,YAAYC,GAAG,CAAC,CAACnB,aAAeD,6BAA6BC,aAAY"}
1
+ {"version":3,"sources":["../../../src/collections/config/client.ts"],"sourcesContent":["import type { LivePreviewConfig, ServerOnlyLivePreviewProperties } from '../../config/types.js'\n\nexport type ServerOnlyCollectionProperties = keyof Pick<\n SanitizedCollectionConfig,\n 'access' | 'endpoints' | 'hooks'\n>\n\nexport type ServerOnlyCollectionAdminProperties = keyof Pick<\n SanitizedCollectionConfig['admin'],\n 'components' | 'hidden' | 'preview'\n>\n\nexport type ClientCollectionConfig = Omit<\n SanitizedCollectionConfig,\n 'admin' | 'fields' | ServerOnlyCollectionProperties\n> & {\n admin: Omit<\n SanitizedCollectionConfig['admin'],\n 'fields' | 'livePreview' | ServerOnlyCollectionAdminProperties\n > & {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n }\n fields: ClientFieldConfig[]\n}\n\nimport type { TFunction } from '@payloadcms/translations'\n\nimport type { ClientFieldConfig } from '../../fields/config/client.js'\nimport type { SanitizedCollectionConfig } from './types.js'\n\nimport { createClientFieldConfigs } from '../../fields/config/client.js'\n\nexport const createClientCollectionConfig = ({\n collection,\n t,\n}: {\n collection: SanitizedCollectionConfig\n t: TFunction\n}) => {\n const sanitized = { ...collection }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n\n const serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n // `upload`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyCollectionProperties.forEach((key) => {\n if (key in sanitized) {\n delete sanitized[key]\n }\n })\n\n if ('upload' in sanitized && typeof sanitized.upload === 'object') {\n sanitized.upload = { ...sanitized.upload }\n delete sanitized.upload.handlers\n delete sanitized.upload.adminThumbnail\n }\n\n if ('auth' in sanitized && typeof sanitized.auth === 'object') {\n sanitized.auth = { ...sanitized.auth }\n delete sanitized.auth.strategies\n delete sanitized.auth.forgotPassword\n delete sanitized.auth.verify\n }\n\n if (sanitized.labels) {\n Object.entries(sanitized.labels).forEach(([labelType, collectionLabel]) => {\n if (typeof collectionLabel === 'function') {\n sanitized.labels[labelType] = collectionLabel({ t })\n }\n })\n }\n\n if ('admin' in sanitized) {\n sanitized.admin = { ...sanitized.admin }\n\n const serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'components',\n 'hidden',\n 'preview',\n // `livePreview` is handled separately\n ]\n\n serverOnlyCollectionAdminProperties.forEach((key) => {\n if (key in sanitized.admin) {\n delete sanitized.admin[key]\n }\n })\n\n if ('livePreview' in sanitized.admin) {\n sanitized.admin.livePreview = { ...sanitized.admin.livePreview }\n delete sanitized.admin.livePreview.url\n }\n }\n\n return sanitized\n}\n\nexport const createClientCollectionConfigs = ({\n collections,\n t,\n}: {\n collections: SanitizedCollectionConfig[]\n t: TFunction\n}): ClientCollectionConfig[] =>\n collections.map((collection) => createClientCollectionConfig({ collection, t }))\n"],"names":["createClientFieldConfigs","createClientCollectionConfig","collection","t","sanitized","fields","serverOnlyCollectionProperties","forEach","key","upload","handlers","adminThumbnail","auth","strategies","forgotPassword","verify","labels","Object","entries","labelType","collectionLabel","admin","serverOnlyCollectionAdminProperties","livePreview","url","createClientCollectionConfigs","collections","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AA8BA,SAASA,wBAAwB,QAAQ,gCAA+B;AAExE,OAAO,MAAMC,+BAA+B,CAAC,EAC3CC,UAAU,EACVC,CAAC,EAIF;IACC,MAAMC,YAAY;QAAE,GAAGF,UAAU;IAAC;IAClCE,UAAUC,MAAM,GAAGL,yBAAyB;QAAEK,QAAQD,UAAUC,MAAM;QAAEF;IAAE;IAE1E,MAAMG,iCAA4E;QAChF;QACA;QACA;KAID;IAEDA,+BAA+BC,OAAO,CAAC,CAACC;QACtC,IAAIA,OAAOJ,WAAW;YACpB,OAAOA,SAAS,CAACI,IAAI;QACvB;IACF;IAEA,IAAI,YAAYJ,aAAa,OAAOA,UAAUK,MAAM,KAAK,UAAU;QACjEL,UAAUK,MAAM,GAAG;YAAE,GAAGL,UAAUK,MAAM;QAAC;QACzC,OAAOL,UAAUK,MAAM,CAACC,QAAQ;QAChC,OAAON,UAAUK,MAAM,CAACE,cAAc;IACxC;IAEA,IAAI,UAAUP,aAAa,OAAOA,UAAUQ,IAAI,KAAK,UAAU;QAC7DR,UAAUQ,IAAI,GAAG;YAAE,GAAGR,UAAUQ,IAAI;QAAC;QACrC,OAAOR,UAAUQ,IAAI,CAACC,UAAU;QAChC,OAAOT,UAAUQ,IAAI,CAACE,cAAc;QACpC,OAAOV,UAAUQ,IAAI,CAACG,MAAM;IAC9B;IAEA,IAAIX,UAAUY,MAAM,EAAE;QACpBC,OAAOC,OAAO,CAACd,UAAUY,MAAM,EAAET,OAAO,CAAC,CAAC,CAACY,WAAWC,gBAAgB;YACpE,IAAI,OAAOA,oBAAoB,YAAY;gBACzChB,UAAUY,MAAM,CAACG,UAAU,GAAGC,gBAAgB;oBAAEjB;gBAAE;YACpD;QACF;IACF;IAEA,IAAI,WAAWC,WAAW;QACxBA,UAAUiB,KAAK,GAAG;YAAE,GAAGjB,UAAUiB,KAAK;QAAC;QAEvC,MAAMC,sCAAsF;YAC1F;YACA;YACA;SAED;QAEDA,oCAAoCf,OAAO,CAAC,CAACC;YAC3C,IAAIA,OAAOJ,UAAUiB,KAAK,EAAE;gBAC1B,OAAOjB,UAAUiB,KAAK,CAACb,IAAI;YAC7B;QACF;QAEA,IAAI,iBAAiBJ,UAAUiB,KAAK,EAAE;YACpCjB,UAAUiB,KAAK,CAACE,WAAW,GAAG;gBAAE,GAAGnB,UAAUiB,KAAK,CAACE,WAAW;YAAC;YAC/D,OAAOnB,UAAUiB,KAAK,CAACE,WAAW,CAACC,GAAG;QACxC;IACF;IAEA,OAAOpB;AACT,EAAC;AAED,OAAO,MAAMqB,gCAAgC,CAAC,EAC5CC,WAAW,EACXvB,CAAC,EAIF,GACCuB,YAAYC,GAAG,CAAC,CAACzB,aAAeD,6BAA6B;YAAEC;YAAYC;QAAE,IAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/defaults.ts"],"sourcesContent":["import defaultAccess from '../../auth/defaultAccess.js'\n\nexport const defaults = {\n access: {\n create: defaultAccess,\n delete: defaultAccess,\n read: defaultAccess,\n unlock: defaultAccess,\n update: defaultAccess,\n },\n admin: {\n components: {},\n enableRichTextLink: true,\n enableRichTextRelationship: true,\n pagination: {\n defaultLimit: 10,\n limits: [5, 10, 25, 50, 100],\n },\n useAsTitle: 'id',\n },\n auth: false,\n custom: {},\n endpoints: [],\n fields: [],\n hooks: {\n afterChange: [],\n afterDelete: [],\n afterForgotPassword: [],\n afterLogin: [],\n afterLogout: [],\n afterMe: [],\n afterOperation: [],\n afterRead: [],\n afterRefresh: [],\n beforeChange: [],\n beforeDelete: [],\n beforeLogin: [],\n beforeOperation: [],\n beforeRead: [],\n beforeValidate: [],\n },\n timestamps: true,\n upload: false,\n versions: false,\n}\n\nexport const authDefaults = {\n cookies: {\n sameSite: 'Lax',\n secure: false,\n },\n forgotPassword: {},\n lockTime: 600000, // 10 minutes\n maxLoginAttempts: 5,\n tokenExpiration: 7200,\n verify: false,\n}\n"],"names":["defaultAccess","defaults","access","create","delete","read","unlock","update","admin","components","enableRichTextLink","enableRichTextRelationship","pagination","defaultLimit","limits","useAsTitle","auth","custom","endpoints","fields","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","timestamps","upload","versions","authDefaults","cookies","sameSite","secure","forgotPassword","lockTime","maxLoginAttempts","tokenExpiration","verify"],"mappings":"AAAA,OAAOA,mBAAmB,8BAA6B;AAEvD,OAAO,MAAMC,WAAW;IACtBC,QAAQ;QACNC,QAAQH;QACRI,QAAQJ;QACRK,MAAML;QACNM,QAAQN;QACRO,QAAQP;IACV;IACAQ,OAAO;QACLC,YAAY,CAAC;QACbC,oBAAoB;QACpBC,4BAA4B;QAC5BC,YAAY;YACVC,cAAc;YACdC,QAAQ;gBAAC;gBAAG;gBAAI;gBAAI;gBAAI;aAAI;QAC9B;QACAC,YAAY;IACd;IACAC,MAAM;IACNC,QAAQ,CAAC;IACTC,WAAW,EAAE;IACbC,QAAQ,EAAE;IACVC,OAAO;QACLC,aAAa,EAAE;QACfC,aAAa,EAAE;QACfC,qBAAqB,EAAE;QACvBC,YAAY,EAAE;QACdC,aAAa,EAAE;QACfC,SAAS,EAAE;QACXC,gBAAgB,EAAE;QAClBC,WAAW,EAAE;QACbC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,aAAa,EAAE;QACfC,iBAAiB,EAAE;QACnBC,YAAY,EAAE;QACdC,gBAAgB,EAAE;IACpB;IACAC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ,EAAC;AAED,OAAO,MAAMC,eAAe;IAC1BC,SAAS;QACPC,UAAU;QACVC,QAAQ;IACV;IACAC,gBAAgB,CAAC;IACjBC,UAAU;IACVC,kBAAkB;IAClBC,iBAAiB;IACjBC,QAAQ;AACV,EAAC"}
1
+ {"version":3,"sources":["../../../src/collections/config/defaults.ts"],"sourcesContent":["import defaultAccess from '../../auth/defaultAccess.js'\n\nexport const defaults = {\n access: {\n create: defaultAccess,\n delete: defaultAccess,\n read: defaultAccess,\n unlock: defaultAccess,\n update: defaultAccess,\n },\n admin: {\n components: {},\n enableRichTextLink: true,\n enableRichTextRelationship: true,\n pagination: {\n defaultLimit: 10,\n limits: [5, 10, 25, 50, 100],\n },\n useAsTitle: 'id',\n },\n auth: false,\n custom: {},\n endpoints: [],\n fields: [],\n hooks: {\n afterChange: [],\n afterDelete: [],\n afterForgotPassword: [],\n afterLogin: [],\n afterLogout: [],\n afterMe: [],\n afterOperation: [],\n afterRead: [],\n afterRefresh: [],\n beforeChange: [],\n beforeDelete: [],\n beforeLogin: [],\n beforeOperation: [],\n beforeRead: [],\n beforeValidate: [],\n },\n timestamps: true,\n upload: false,\n versions: false,\n}\n\nexport const authDefaults = {\n cookies: {\n sameSite: 'Lax',\n secure: false,\n },\n forgotPassword: {},\n lockTime: 600000, // 10 minutes\n maxLoginAttempts: 5,\n tokenExpiration: 7200,\n verify: false,\n}\n"],"names":["defaultAccess","defaults","access","create","delete","read","unlock","update","admin","components","enableRichTextLink","enableRichTextRelationship","pagination","defaultLimit","limits","useAsTitle","auth","custom","endpoints","fields","hooks","afterChange","afterDelete","afterForgotPassword","afterLogin","afterLogout","afterMe","afterOperation","afterRead","afterRefresh","beforeChange","beforeDelete","beforeLogin","beforeOperation","beforeRead","beforeValidate","timestamps","upload","versions","authDefaults","cookies","sameSite","secure","forgotPassword","lockTime","maxLoginAttempts","tokenExpiration","verify"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,mBAAmB,8BAA6B;AAEvD,OAAO,MAAMC,WAAW;IACtBC,QAAQ;QACNC,QAAQH;QACRI,QAAQJ;QACRK,MAAML;QACNM,QAAQN;QACRO,QAAQP;IACV;IACAQ,OAAO;QACLC,YAAY,CAAC;QACbC,oBAAoB;QACpBC,4BAA4B;QAC5BC,YAAY;YACVC,cAAc;YACdC,QAAQ;gBAAC;gBAAG;gBAAI;gBAAI;gBAAI;aAAI;QAC9B;QACAC,YAAY;IACd;IACAC,MAAM;IACNC,QAAQ,CAAC;IACTC,WAAW,EAAE;IACbC,QAAQ,EAAE;IACVC,OAAO;QACLC,aAAa,EAAE;QACfC,aAAa,EAAE;QACfC,qBAAqB,EAAE;QACvBC,YAAY,EAAE;QACdC,aAAa,EAAE;QACfC,SAAS,EAAE;QACXC,gBAAgB,EAAE;QAClBC,WAAW,EAAE;QACbC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,cAAc,EAAE;QAChBC,aAAa,EAAE;QACfC,iBAAiB,EAAE;QACnBC,YAAY,EAAE;QACdC,gBAAgB,EAAE;IACpB;IACAC,YAAY;IACZC,QAAQ;IACRC,UAAU;AACZ,EAAC;AAED,OAAO,MAAMC,eAAe;IAC1BC,SAAS;QACPC,UAAU;QACVC,QAAQ;IACV;IACAC,gBAAgB,CAAC;IACjBC,UAAU;IACVC,kBAAkB;IAClBC,iBAAiB;IACjBC,QAAQ;AACV,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/collections/config/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAmB7E,QAAA,MAAM,kBAAkB,WACd,MAAM,cACF,gBAAgB,KAC3B,yBA0IF,CAAA;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/collections/config/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAgB7E,QAAA,MAAM,kBAAkB,WACd,MAAM,cACF,gBAAgB,KAC3B,yBA0IF,CAAA;AAED,eAAe,kBAAkB,CAAA"}
@@ -7,16 +7,11 @@ import TimestampsRequired from '../../errors/TimestampsRequired.js';
7
7
  import { sanitizeFields } from '../../fields/config/sanitize.js';
8
8
  import { fieldAffectsData } from '../../fields/config/types.js';
9
9
  import mergeBaseFields from '../../fields/mergeBaseFields.js';
10
- import { extractTranslations } from '../../translations/extractTranslations.js';
11
10
  import { getBaseUploadFields } from '../../uploads/getBaseFields.js';
12
11
  import { formatLabels } from '../../utilities/formatLabels.js';
13
12
  import { isPlainObject } from '../../utilities/isPlainObject.js';
14
13
  import baseVersionFields from '../../versions/baseFields.js';
15
14
  import { authDefaults, defaults } from './defaults.js';
16
- const translations = extractTranslations([
17
- 'general:createdAt',
18
- 'general:updatedAt'
19
- ]);
20
15
  const sanitizeCollection = (config, collection)=>{
21
16
  // /////////////////////////////////
22
17
  // Make copy of collection config
@@ -43,7 +38,7 @@ const sanitizeCollection = (config, collection)=>{
43
38
  disableBulkEdit: true,
44
39
  hidden: true
45
40
  },
46
- label: translations['general:updatedAt']
41
+ label: ({ t })=>t('general:updatedAt')
47
42
  });
48
43
  }
49
44
  if (!hasCreatedAt) {
@@ -56,7 +51,7 @@ const sanitizeCollection = (config, collection)=>{
56
51
  // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.
57
52
  type: 'date',
58
53
  index: true,
59
- label: translations['general:createdAt']
54
+ label: ({ t })=>t('general:createdAt')
60
55
  });
61
56
  }
62
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/config/sanitize.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { Config } from '../../config/types.js'\nimport type { CollectionConfig, SanitizedCollectionConfig } from './types.js'\n\nimport baseAccountLockFields from '../../auth/baseFields/accountLock.js'\nimport baseAPIKeyFields from '../../auth/baseFields/apiKey.js'\nimport baseAuthFields from '../../auth/baseFields/auth.js'\nimport baseVerificationFields from '../../auth/baseFields/verification.js'\nimport TimestampsRequired from '../../errors/TimestampsRequired.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport mergeBaseFields from '../../fields/mergeBaseFields.js'\nimport { extractTranslations } from '../../translations/extractTranslations.js'\nimport { getBaseUploadFields } from '../../uploads/getBaseFields.js'\nimport { formatLabels } from '../../utilities/formatLabels.js'\nimport { isPlainObject } from '../../utilities/isPlainObject.js'\nimport baseVersionFields from '../../versions/baseFields.js'\nimport { authDefaults, defaults } from './defaults.js'\n\nconst translations = extractTranslations(['general:createdAt', 'general:updatedAt'])\n\nconst sanitizeCollection = (\n config: Config,\n collection: CollectionConfig,\n): SanitizedCollectionConfig => {\n // /////////////////////////////////\n // Make copy of collection config\n // /////////////////////////////////\n\n const sanitized: CollectionConfig = merge(defaults, collection, {\n isMergeableObject: isPlainObject,\n })\n\n if (sanitized.timestamps !== false) {\n // add default timestamps fields only as needed\n let hasUpdatedAt = null\n let hasCreatedAt = null\n sanitized.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') hasUpdatedAt = true\n if (field.name === 'createdAt') hasCreatedAt = true\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n sanitized.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: translations['general:updatedAt'],\n })\n }\n if (!hasCreatedAt) {\n sanitized.fields.push({\n name: 'createdAt',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.\n type: 'date',\n index: true,\n label: translations['general:createdAt'],\n })\n }\n }\n\n sanitized.labels = sanitized.labels || formatLabels(sanitized.slug)\n\n if (sanitized.versions) {\n if (sanitized.versions === true) sanitized.versions = { drafts: false }\n\n if (sanitized.timestamps === false) {\n throw new TimestampsRequired(collection)\n }\n\n if (sanitized.versions.drafts) {\n if (sanitized.versions.drafts === true) {\n sanitized.versions.drafts = {\n autosave: false,\n }\n }\n\n if (sanitized.versions.drafts.autosave === true) {\n sanitized.versions.drafts.autosave = {\n interval: 2000,\n }\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, baseVersionFields)\n }\n }\n\n if (sanitized.upload) {\n if (sanitized.upload === true) sanitized.upload = {}\n\n // disable duplicate for uploads by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug\n sanitized.admin.useAsTitle =\n sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id'\n ? sanitized.admin.useAsTitle\n : 'filename'\n\n const uploadFields = getBaseUploadFields({\n collection: sanitized,\n config,\n })\n\n sanitized.fields = mergeBaseFields(sanitized.fields, uploadFields)\n }\n\n if (sanitized.auth) {\n sanitized.auth = merge(authDefaults, typeof sanitized.auth === 'object' ? sanitized.auth : {}, {\n isMergeableObject: isPlainObject,\n })\n\n let authFields = []\n\n if (sanitized.auth.useAPIKey) {\n authFields = authFields.concat(baseAPIKeyFields)\n }\n\n if (!sanitized.auth.disableLocalStrategy) {\n authFields = authFields.concat(baseAuthFields)\n\n if (sanitized.auth.verify) {\n if (sanitized.auth.verify === true) sanitized.auth.verify = {}\n authFields = authFields.concat(baseVerificationFields)\n }\n\n if (sanitized.auth.maxLoginAttempts > 0) {\n authFields = authFields.concat(baseAccountLockFields)\n }\n }\n\n // disable duplicate for auth enabled collections by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n if (!sanitized.auth.strategies) {\n sanitized.auth.strategies = []\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, authFields)\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n sanitized.fields = sanitizeFields({\n config,\n fields: sanitized.fields,\n validRelationships,\n })\n\n return sanitized as SanitizedCollectionConfig\n}\n\nexport default sanitizeCollection\n"],"names":["merge","baseAccountLockFields","baseAPIKeyFields","baseAuthFields","baseVerificationFields","TimestampsRequired","sanitizeFields","fieldAffectsData","mergeBaseFields","extractTranslations","getBaseUploadFields","formatLabels","isPlainObject","baseVersionFields","authDefaults","defaults","translations","sanitizeCollection","config","collection","sanitized","isMergeableObject","timestamps","hasUpdatedAt","hasCreatedAt","fields","some","field","name","push","type","admin","disableBulkEdit","hidden","label","index","labels","slug","versions","drafts","autosave","interval","upload","disableDuplicate","staticDir","useAsTitle","uploadFields","auth","authFields","useAPIKey","concat","disableLocalStrategy","verify","maxLoginAttempts","strategies","validRelationships","collections","map","c"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/config/sanitize.ts"],"sourcesContent":["import merge from 'deepmerge'\n\nimport type { Config } from '../../config/types.js'\nimport type { CollectionConfig, SanitizedCollectionConfig } from './types.js'\n\nimport baseAccountLockFields from '../../auth/baseFields/accountLock.js'\nimport baseAPIKeyFields from '../../auth/baseFields/apiKey.js'\nimport baseAuthFields from '../../auth/baseFields/auth.js'\nimport baseVerificationFields from '../../auth/baseFields/verification.js'\nimport TimestampsRequired from '../../errors/TimestampsRequired.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport mergeBaseFields from '../../fields/mergeBaseFields.js'\nimport { getBaseUploadFields } from '../../uploads/getBaseFields.js'\nimport { formatLabels } from '../../utilities/formatLabels.js'\nimport { isPlainObject } from '../../utilities/isPlainObject.js'\nimport baseVersionFields from '../../versions/baseFields.js'\nimport { authDefaults, defaults } from './defaults.js'\n\nconst sanitizeCollection = (\n config: Config,\n collection: CollectionConfig,\n): SanitizedCollectionConfig => {\n // /////////////////////////////////\n // Make copy of collection config\n // /////////////////////////////////\n\n const sanitized: CollectionConfig = merge(defaults, collection, {\n isMergeableObject: isPlainObject,\n })\n\n if (sanitized.timestamps !== false) {\n // add default timestamps fields only as needed\n let hasUpdatedAt = null\n let hasCreatedAt = null\n sanitized.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') hasUpdatedAt = true\n if (field.name === 'createdAt') hasCreatedAt = true\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n sanitized.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n if (!hasCreatedAt) {\n sanitized.fields.push({\n name: 'createdAt',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n // The default sort for list view is createdAt. Thus, enabling indexing by default, is a major performance improvement, especially for large or a large amount of collections.\n type: 'date',\n index: true,\n label: ({ t }) => t('general:createdAt'),\n })\n }\n }\n\n sanitized.labels = sanitized.labels || formatLabels(sanitized.slug)\n\n if (sanitized.versions) {\n if (sanitized.versions === true) sanitized.versions = { drafts: false }\n\n if (sanitized.timestamps === false) {\n throw new TimestampsRequired(collection)\n }\n\n if (sanitized.versions.drafts) {\n if (sanitized.versions.drafts === true) {\n sanitized.versions.drafts = {\n autosave: false,\n }\n }\n\n if (sanitized.versions.drafts.autosave === true) {\n sanitized.versions.drafts.autosave = {\n interval: 2000,\n }\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, baseVersionFields)\n }\n }\n\n if (sanitized.upload) {\n if (sanitized.upload === true) sanitized.upload = {}\n\n // disable duplicate for uploads by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug\n sanitized.admin.useAsTitle =\n sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id'\n ? sanitized.admin.useAsTitle\n : 'filename'\n\n const uploadFields = getBaseUploadFields({\n collection: sanitized,\n config,\n })\n\n sanitized.fields = mergeBaseFields(sanitized.fields, uploadFields)\n }\n\n if (sanitized.auth) {\n sanitized.auth = merge(authDefaults, typeof sanitized.auth === 'object' ? sanitized.auth : {}, {\n isMergeableObject: isPlainObject,\n })\n\n let authFields = []\n\n if (sanitized.auth.useAPIKey) {\n authFields = authFields.concat(baseAPIKeyFields)\n }\n\n if (!sanitized.auth.disableLocalStrategy) {\n authFields = authFields.concat(baseAuthFields)\n\n if (sanitized.auth.verify) {\n if (sanitized.auth.verify === true) sanitized.auth.verify = {}\n authFields = authFields.concat(baseVerificationFields)\n }\n\n if (sanitized.auth.maxLoginAttempts > 0) {\n authFields = authFields.concat(baseAccountLockFields)\n }\n }\n\n // disable duplicate for auth enabled collections by default\n sanitized.disableDuplicate = sanitized.disableDuplicate || true\n\n if (!sanitized.auth.strategies) {\n sanitized.auth.strategies = []\n }\n\n sanitized.fields = mergeBaseFields(sanitized.fields, authFields)\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n sanitized.fields = sanitizeFields({\n config,\n fields: sanitized.fields,\n validRelationships,\n })\n\n return sanitized as SanitizedCollectionConfig\n}\n\nexport default sanitizeCollection\n"],"names":["merge","baseAccountLockFields","baseAPIKeyFields","baseAuthFields","baseVerificationFields","TimestampsRequired","sanitizeFields","fieldAffectsData","mergeBaseFields","getBaseUploadFields","formatLabels","isPlainObject","baseVersionFields","authDefaults","defaults","sanitizeCollection","config","collection","sanitized","isMergeableObject","timestamps","hasUpdatedAt","hasCreatedAt","fields","some","field","name","push","type","admin","disableBulkEdit","hidden","label","t","index","labels","slug","versions","drafts","autosave","interval","upload","disableDuplicate","staticDir","useAsTitle","uploadFields","auth","authFields","useAPIKey","concat","disableLocalStrategy","verify","maxLoginAttempts","strategies","validRelationships","collections","map","c"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -114,10 +114,10 @@ const collectionSchema = joi.object().keys({
114
114
  beforeValidate: joi.array().items(joi.func())
115
115
  }),
116
116
  labels: joi.object({
117
- plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
117
+ plural: joi.alternatives().try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [
118
118
  joi.string()
119
119
  ])),
120
- singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
120
+ singular: joi.alternatives().try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [
121
121
  joi.string()
122
122
  ]))
123
123
  }),