payload 3.0.0-beta.127 → 3.0.0-beta.129

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 (294) hide show
  1. package/dist/admin/RichText.d.ts +8 -21
  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.d.ts +7 -9
  5. package/dist/admin/elements/Cell.d.ts.map +1 -1
  6. package/dist/admin/elements/Cell.js.map +1 -1
  7. package/dist/admin/fields/Array.d.ts +3 -3
  8. package/dist/admin/fields/Array.d.ts.map +1 -1
  9. package/dist/admin/fields/Array.js.map +1 -1
  10. package/dist/admin/fields/Blocks.d.ts +2 -1
  11. package/dist/admin/fields/Blocks.d.ts.map +1 -1
  12. package/dist/admin/fields/Blocks.js.map +1 -1
  13. package/dist/admin/fields/Checkbox.d.ts +1 -0
  14. package/dist/admin/fields/Checkbox.d.ts.map +1 -1
  15. package/dist/admin/fields/Checkbox.js.map +1 -1
  16. package/dist/admin/fields/Code.d.ts +2 -1
  17. package/dist/admin/fields/Code.d.ts.map +1 -1
  18. package/dist/admin/fields/Code.js.map +1 -1
  19. package/dist/admin/fields/Collapsible.d.ts +5 -2
  20. package/dist/admin/fields/Collapsible.d.ts.map +1 -1
  21. package/dist/admin/fields/Collapsible.js.map +1 -1
  22. package/dist/admin/fields/Date.d.ts +1 -0
  23. package/dist/admin/fields/Date.d.ts.map +1 -1
  24. package/dist/admin/fields/Date.js.map +1 -1
  25. package/dist/admin/fields/Email.d.ts +1 -1
  26. package/dist/admin/fields/Email.d.ts.map +1 -1
  27. package/dist/admin/fields/Email.js.map +1 -1
  28. package/dist/admin/fields/Group.d.ts +5 -2
  29. package/dist/admin/fields/Group.d.ts.map +1 -1
  30. package/dist/admin/fields/Group.js.map +1 -1
  31. package/dist/admin/fields/Hidden.d.ts +7 -6
  32. package/dist/admin/fields/Hidden.d.ts.map +1 -1
  33. package/dist/admin/fields/Hidden.js.map +1 -1
  34. package/dist/admin/fields/JSON.d.ts +1 -0
  35. package/dist/admin/fields/JSON.d.ts.map +1 -1
  36. package/dist/admin/fields/JSON.js.map +1 -1
  37. package/dist/admin/fields/Join.d.ts +3 -1
  38. package/dist/admin/fields/Join.d.ts.map +1 -1
  39. package/dist/admin/fields/Join.js.map +1 -1
  40. package/dist/admin/fields/Number.d.ts +1 -0
  41. package/dist/admin/fields/Number.d.ts.map +1 -1
  42. package/dist/admin/fields/Number.js.map +1 -1
  43. package/dist/admin/fields/Point.d.ts +1 -0
  44. package/dist/admin/fields/Point.d.ts.map +1 -1
  45. package/dist/admin/fields/Point.js.map +1 -1
  46. package/dist/admin/fields/Radio.d.ts +1 -0
  47. package/dist/admin/fields/Radio.d.ts.map +1 -1
  48. package/dist/admin/fields/Radio.js.map +1 -1
  49. package/dist/admin/fields/Relationship.d.ts +1 -0
  50. package/dist/admin/fields/Relationship.d.ts.map +1 -1
  51. package/dist/admin/fields/Relationship.js.map +1 -1
  52. package/dist/admin/fields/RichText.d.ts +3 -2
  53. package/dist/admin/fields/RichText.d.ts.map +1 -1
  54. package/dist/admin/fields/RichText.js.map +1 -1
  55. package/dist/admin/fields/Row.d.ts +1 -2
  56. package/dist/admin/fields/Row.d.ts.map +1 -1
  57. package/dist/admin/fields/Row.js.map +1 -1
  58. package/dist/admin/fields/Select.d.ts +1 -0
  59. package/dist/admin/fields/Select.d.ts.map +1 -1
  60. package/dist/admin/fields/Select.js.map +1 -1
  61. package/dist/admin/fields/Tabs.d.ts +4 -2
  62. package/dist/admin/fields/Tabs.d.ts.map +1 -1
  63. package/dist/admin/fields/Tabs.js.map +1 -1
  64. package/dist/admin/fields/Text.d.ts +1 -0
  65. package/dist/admin/fields/Text.d.ts.map +1 -1
  66. package/dist/admin/fields/Text.js.map +1 -1
  67. package/dist/admin/fields/Textarea.d.ts +1 -0
  68. package/dist/admin/fields/Textarea.d.ts.map +1 -1
  69. package/dist/admin/fields/Textarea.js.map +1 -1
  70. package/dist/admin/fields/UI.d.ts +8 -0
  71. package/dist/admin/fields/UI.d.ts.map +1 -0
  72. package/dist/admin/fields/UI.js +3 -0
  73. package/dist/admin/fields/UI.js.map +1 -0
  74. package/dist/admin/fields/Upload.d.ts +1 -0
  75. package/dist/admin/fields/Upload.d.ts.map +1 -1
  76. package/dist/admin/fields/Upload.js.map +1 -1
  77. package/dist/admin/forms/Description.d.ts +1 -2
  78. package/dist/admin/forms/Description.d.ts.map +1 -1
  79. package/dist/admin/forms/Description.js.map +1 -1
  80. package/dist/admin/forms/Error.d.ts +0 -2
  81. package/dist/admin/forms/Error.d.ts.map +1 -1
  82. package/dist/admin/forms/Error.js.map +1 -1
  83. package/dist/admin/forms/Field.d.ts +53 -29
  84. package/dist/admin/forms/Field.d.ts.map +1 -1
  85. package/dist/admin/forms/Field.js.map +1 -1
  86. package/dist/admin/forms/Form.d.ts +46 -3
  87. package/dist/admin/forms/Form.d.ts.map +1 -1
  88. package/dist/admin/forms/Form.js.map +1 -1
  89. package/dist/admin/forms/Label.d.ts +1 -2
  90. package/dist/admin/forms/Label.d.ts.map +1 -1
  91. package/dist/admin/forms/Label.js.map +1 -1
  92. package/dist/admin/functions/index.d.ts +44 -0
  93. package/dist/admin/functions/index.d.ts.map +1 -0
  94. package/dist/admin/functions/index.js +3 -0
  95. package/dist/admin/functions/index.js.map +1 -0
  96. package/dist/admin/types.d.ts +63 -20
  97. package/dist/admin/types.d.ts.map +1 -1
  98. package/dist/admin/types.js +4 -1
  99. package/dist/admin/types.js.map +1 -1
  100. package/dist/admin/views/types.d.ts +9 -6
  101. package/dist/admin/views/types.d.ts.map +1 -1
  102. package/dist/admin/views/types.js.map +1 -1
  103. package/dist/assets/images/github-banner-nextjs-native.jpg +0 -0
  104. package/dist/auth/ensureUsernameOrEmail.js +4 -4
  105. package/dist/auth/ensureUsernameOrEmail.js.map +1 -1
  106. package/dist/auth/getFieldsToSign.js +13 -13
  107. package/dist/auth/getFieldsToSign.js.map +1 -1
  108. package/dist/auth/operations/local/auth.d.ts.map +1 -1
  109. package/dist/auth/operations/local/auth.js +2 -2
  110. package/dist/auth/operations/local/auth.js.map +1 -1
  111. package/dist/auth/operations/login.js +10 -10
  112. package/dist/auth/operations/login.js.map +1 -1
  113. package/dist/auth/strategies/local/generatePasswordSaltHash.js +2 -2
  114. package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
  115. package/dist/auth/strategies/local/register.js +4 -4
  116. package/dist/auth/strategies/local/register.js.map +1 -1
  117. package/dist/bin/generateImportMap/index.d.ts.map +1 -1
  118. package/dist/bin/generateImportMap/index.js +32 -5
  119. package/dist/bin/generateImportMap/index.js.map +1 -1
  120. package/dist/bin/generateImportMap/parsePayloadComponent.d.ts +1 -1
  121. package/dist/bin/generateImportMap/parsePayloadComponent.js +5 -5
  122. package/dist/bin/generateImportMap/parsePayloadComponent.js.map +1 -1
  123. package/dist/bin/migrate.js +17 -17
  124. package/dist/bin/migrate.js.map +1 -1
  125. package/dist/collections/config/client.d.ts +23 -35
  126. package/dist/collections/config/client.d.ts.map +1 -1
  127. package/dist/collections/config/client.js +104 -1
  128. package/dist/collections/config/client.js.map +1 -1
  129. package/dist/collections/config/sanitize.d.ts.map +1 -1
  130. package/dist/collections/config/sanitize.js +4 -2
  131. package/dist/collections/config/sanitize.js.map +1 -1
  132. package/dist/collections/config/types.d.ts +3 -3
  133. package/dist/collections/config/types.d.ts.map +1 -1
  134. package/dist/collections/config/types.js.map +1 -1
  135. package/dist/collections/operations/countVersions.d.ts +14 -0
  136. package/dist/collections/operations/countVersions.d.ts.map +1 -0
  137. package/dist/collections/operations/countVersions.js +74 -0
  138. package/dist/collections/operations/countVersions.js.map +1 -0
  139. package/dist/collections/operations/local/count.d.ts.map +1 -1
  140. package/dist/collections/operations/local/count.js +1 -0
  141. package/dist/collections/operations/local/count.js.map +1 -1
  142. package/dist/collections/operations/local/countVersions.d.ts +20 -0
  143. package/dist/collections/operations/local/countVersions.d.ts.map +1 -0
  144. package/dist/collections/operations/local/countVersions.js +20 -0
  145. package/dist/collections/operations/local/countVersions.js.map +1 -0
  146. package/dist/collections/operations/local/index.d.ts +2 -0
  147. package/dist/collections/operations/local/index.d.ts.map +1 -1
  148. package/dist/collections/operations/local/index.js +2 -0
  149. package/dist/collections/operations/local/index.js.map +1 -1
  150. package/dist/collections/operations/utils.d.ts +6 -0
  151. package/dist/collections/operations/utils.d.ts.map +1 -1
  152. package/dist/collections/operations/utils.js.map +1 -1
  153. package/dist/config/client.d.ts +10 -13
  154. package/dist/config/client.d.ts.map +1 -1
  155. package/dist/config/client.js +36 -0
  156. package/dist/config/client.js.map +1 -1
  157. package/dist/config/types.d.ts +20 -15
  158. package/dist/config/types.d.ts.map +1 -1
  159. package/dist/config/types.js.map +1 -1
  160. package/dist/database/getLocalizedPaths.js +1 -1
  161. package/dist/database/getLocalizedPaths.js.map +1 -1
  162. package/dist/database/sanitizeJoinQuery.js +6 -6
  163. package/dist/database/sanitizeJoinQuery.js.map +1 -1
  164. package/dist/database/types.d.ts +14 -0
  165. package/dist/database/types.d.ts.map +1 -1
  166. package/dist/database/types.js.map +1 -1
  167. package/dist/errors/ValidationError.d.ts +1 -1
  168. package/dist/errors/ValidationError.d.ts.map +1 -1
  169. package/dist/errors/ValidationError.js +1 -1
  170. package/dist/errors/ValidationError.js.map +1 -1
  171. package/dist/exports/shared.d.ts +3 -1
  172. package/dist/exports/shared.d.ts.map +1 -1
  173. package/dist/exports/shared.js +3 -1
  174. package/dist/exports/shared.js.map +1 -1
  175. package/dist/fields/config/client.d.ts +16 -1
  176. package/dist/fields/config/client.d.ts.map +1 -1
  177. package/dist/fields/config/client.js +229 -1
  178. package/dist/fields/config/client.js.map +1 -1
  179. package/dist/fields/config/sanitize.d.ts +2 -2
  180. package/dist/fields/config/sanitize.d.ts.map +1 -1
  181. package/dist/fields/config/sanitize.js +7 -21
  182. package/dist/fields/config/sanitize.js.map +1 -1
  183. package/dist/fields/config/sanitizeJoinField.d.ts +2 -2
  184. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  185. package/dist/fields/config/sanitizeJoinField.js +2 -2
  186. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  187. package/dist/fields/config/types.d.ts +28 -171
  188. package/dist/fields/config/types.d.ts.map +1 -1
  189. package/dist/fields/config/types.js.map +1 -1
  190. package/dist/fields/getFieldPaths.d.ts +25 -8
  191. package/dist/fields/getFieldPaths.d.ts.map +1 -1
  192. package/dist/fields/getFieldPaths.js +9 -37
  193. package/dist/fields/getFieldPaths.js.map +1 -1
  194. package/dist/fields/hooks/afterChange/promise.d.ts +2 -1
  195. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  196. package/dist/fields/hooks/afterChange/promise.js +66 -62
  197. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  198. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  199. package/dist/fields/hooks/afterChange/traverseFields.js +2 -1
  200. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  201. package/dist/fields/hooks/afterRead/promise.d.ts +2 -1
  202. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  203. package/dist/fields/hooks/afterRead/promise.js +107 -103
  204. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  205. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  206. package/dist/fields/hooks/afterRead/traverseFields.js +2 -1
  207. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  208. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  209. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  210. package/dist/fields/hooks/beforeChange/promise.d.ts +8 -5
  211. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  212. package/dist/fields/hooks/beforeChange/promise.js +99 -110
  213. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  214. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -4
  215. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  216. package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
  217. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  218. package/dist/fields/hooks/beforeDuplicate/promise.d.ts +2 -1
  219. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  220. package/dist/fields/hooks/beforeDuplicate/promise.js +47 -43
  221. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  222. package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
  223. package/dist/fields/hooks/beforeDuplicate/traverseFields.js +2 -1
  224. package/dist/fields/hooks/beforeDuplicate/traverseFields.js.map +1 -1
  225. package/dist/fields/hooks/beforeValidate/promise.d.ts +2 -1
  226. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  227. package/dist/fields/hooks/beforeValidate/promise.js +105 -101
  228. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  229. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  230. package/dist/fields/hooks/beforeValidate/traverseFields.js +2 -1
  231. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  232. package/dist/globals/config/client.d.ts +18 -25
  233. package/dist/globals/config/client.d.ts.map +1 -1
  234. package/dist/globals/config/client.js +53 -1
  235. package/dist/globals/config/client.js.map +1 -1
  236. package/dist/globals/config/sanitize.d.ts.map +1 -1
  237. package/dist/globals/config/sanitize.js +3 -1
  238. package/dist/globals/config/sanitize.js.map +1 -1
  239. package/dist/globals/operations/countGlobalVersions.d.ts +13 -0
  240. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -0
  241. package/dist/globals/operations/countGlobalVersions.js +49 -0
  242. package/dist/globals/operations/countGlobalVersions.js.map +1 -0
  243. package/dist/globals/operations/local/countGlobalVersions.d.ts +20 -0
  244. package/dist/globals/operations/local/countGlobalVersions.d.ts.map +1 -0
  245. package/dist/globals/operations/local/countGlobalVersions.js +20 -0
  246. package/dist/globals/operations/local/countGlobalVersions.js.map +1 -0
  247. package/dist/globals/operations/local/index.d.ts +2 -0
  248. package/dist/globals/operations/local/index.d.ts.map +1 -1
  249. package/dist/globals/operations/local/index.js +2 -0
  250. package/dist/globals/operations/local/index.js.map +1 -1
  251. package/dist/index.d.ts +28 -12
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +21 -2
  254. package/dist/index.js.map +1 -1
  255. package/dist/queues/config/jobsCollection.d.ts.map +1 -1
  256. package/dist/queues/config/jobsCollection.js +2 -11
  257. package/dist/queues/config/jobsCollection.js.map +1 -1
  258. package/dist/queues/config/types/workflowTypes.d.ts +2 -1
  259. package/dist/queues/config/types/workflowTypes.d.ts.map +1 -1
  260. package/dist/queues/config/types/workflowTypes.js.map +1 -1
  261. package/dist/queues/localAPI.d.ts +2 -0
  262. package/dist/queues/localAPI.d.ts.map +1 -1
  263. package/dist/queues/localAPI.js +13 -0
  264. package/dist/queues/localAPI.js.map +1 -1
  265. package/dist/utilities/configToJSONSchema.js +232 -232
  266. package/dist/utilities/configToJSONSchema.js.map +1 -1
  267. package/dist/utilities/createLocalReq.d.ts +1 -1
  268. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  269. package/dist/utilities/createLocalReq.js +4 -4
  270. package/dist/utilities/createLocalReq.js.map +1 -1
  271. package/dist/utilities/deepCopyObject.d.ts +1 -0
  272. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  273. package/dist/utilities/deepCopyObject.js +23 -0
  274. package/dist/utilities/deepCopyObject.js.map +1 -1
  275. package/dist/utilities/fieldSchemaToJSON.js +17 -17
  276. package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
  277. package/dist/utilities/formatErrors.d.ts +6 -0
  278. package/dist/utilities/formatErrors.d.ts.map +1 -0
  279. package/dist/utilities/formatErrors.js +56 -0
  280. package/dist/utilities/formatErrors.js.map +1 -0
  281. package/dist/utilities/telemetry/conf/index.js +2 -2
  282. package/dist/utilities/telemetry/conf/index.js.map +1 -1
  283. package/dist/versions/saveVersion.d.ts.map +1 -1
  284. package/dist/versions/saveVersion.js +1 -7
  285. package/dist/versions/saveVersion.js.map +1 -1
  286. package/dist/versions/types.d.ts +1 -1
  287. package/dist/versions/types.d.ts.map +1 -1
  288. package/dist/versions/types.js.map +1 -1
  289. package/license.md +22 -0
  290. package/package.json +3 -3
  291. package/dist/utilities/mergeListSearchAndWhere.d.ts +0 -12
  292. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +0 -1
  293. package/dist/utilities/mergeListSearchAndWhere.js +0 -57
  294. package/dist/utilities/mergeListSearchAndWhere.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/admin/views/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/admin/views/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/views/types.ts"],"sourcesContent":["import type { ClientTranslationsObject } from '@payloadcms/translations'\n\nimport type { Permissions } from '../../auth/index.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { ClientConfig } from '../../config/client.js'\nimport type { Locale, MetaConfig, PayloadComponent } from '../../config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { LanguageOptions } from '../LanguageOptions.js'\nimport type { MappedComponent } from '../types.js'\n\nexport type AdminViewConfig = {\n Component: AdminViewComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n meta?: MetaConfig\n path?: string\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type MappedView = {\n actions?: MappedComponent[]\n Component: MappedComponent\n}\n\nexport type AdminViewProps = {\n readonly clientConfig: ClientConfig\n readonly importMap: ImportMap\n readonly initPageResult: InitPageResult\n readonly params?: { [key: string]: string | string[] | undefined }\n readonly searchParams: { [key: string]: string | string[] | undefined }\n}\n\nexport type AdminViewComponent = PayloadComponent<AdminViewProps>\n\nexport type EditViewProps = {\n readonly collectionSlug?: string\n readonly globalSlug?: string\n}\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: number | string\n globalConfig?: SanitizedGlobalConfig\n languageOptions: LanguageOptions\n locale?: Locale\n permissions: Permissions\n redirectTo?: string\n req: PayloadRequest\n translations: ClientTranslationsObject\n visibleEntities: VisibleEntities\n}\n\nexport type ServerSideEditViewProps = {\n readonly initPageResult: InitPageResult\n readonly params: { [key: string]: string | string[] | undefined }\n readonly routeSegments: string[]\n readonly searchParams: { [key: string]: string | string[] | undefined }\n}\n"],"names":[],"mappings":"AA6DA,WAKC"}
1
+ {"version":3,"sources":["../../../src/admin/views/types.ts"],"sourcesContent":["import type { ClientTranslationsObject } from '@payloadcms/translations'\n\nimport type { Permissions } from '../../auth/index.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { ClientConfig } from '../../config/client.js'\nimport type { Locale, MetaConfig, PayloadComponent } from '../../config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { LanguageOptions } from '../LanguageOptions.js'\nimport type { Data, DocumentSlots, PayloadServerAction } from '../types.js'\n\nexport type AdminViewConfig = {\n Component: AdminViewComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n meta?: MetaConfig\n path?: string\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type AdminViewProps = {\n readonly clientConfig: ClientConfig\n readonly disableActions?: boolean\n readonly drawerSlug?: string\n readonly importMap: ImportMap\n readonly initialData?: Data\n readonly initPageResult: InitPageResult\n readonly params?: { [key: string]: string | string[] | undefined }\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly searchParams: { [key: string]: string | string[] | undefined }\n}\n\nexport type AdminViewComponent = PayloadComponent<AdminViewProps>\n\nexport type EditViewProps = {\n readonly collectionSlug?: string\n readonly globalSlug?: string\n}\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: number | string\n globalConfig?: SanitizedGlobalConfig\n languageOptions: LanguageOptions\n locale?: Locale\n permissions: Permissions\n redirectTo?: string\n req: PayloadRequest\n translations: ClientTranslationsObject\n visibleEntities: VisibleEntities\n}\n\nexport type ServerSideEditViewProps = {\n readonly initPageResult: InitPageResult\n readonly params: { [key: string]: string | string[] | undefined }\n readonly payloadServerAction: PayloadServerAction\n readonly routeSegments: string[]\n readonly searchParams: { [key: string]: string | string[] | undefined }\n} & ClientSideEditViewProps\n\nexport type ClientSideEditViewProps = {} & DocumentSlots\n"],"names":[],"mappings":"AAqEA,WAAwD"}
@@ -26,12 +26,12 @@ export const ensureUsernameOrEmail = ({ authOptions: { disableLocalStrategy, log
26
26
  collection: collectionSlug,
27
27
  errors: [
28
28
  {
29
- field: 'username',
30
- message: 'Username or email is required'
29
+ message: 'Username or email is required',
30
+ path: 'username'
31
31
  },
32
32
  {
33
- field: 'email',
34
- message: 'Username or email is required'
33
+ message: 'Username or email is required',
34
+ path: 'email'
35
35
  }
36
36
  ]
37
37
  }, req.t);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/auth/ensureUsernameOrEmail.ts"],"sourcesContent":["import type { RequiredDataFromCollectionSlug } from '../collections/config/types.js'\nimport type { AuthCollection, CollectionSlug, PayloadRequest } from '../index.js'\n\nimport { ValidationError } from '../errors/index.js'\n\ntype ValidateUsernameOrEmailArgs<TSlug extends CollectionSlug> = {\n authOptions: AuthCollection['config']['auth']\n collectionSlug: string\n data: RequiredDataFromCollectionSlug<TSlug>\n req: PayloadRequest\n} & (\n | {\n operation: 'create'\n originalDoc?: never\n }\n | {\n operation: 'update'\n originalDoc: RequiredDataFromCollectionSlug<TSlug>\n }\n)\nexport const ensureUsernameOrEmail = <TSlug extends CollectionSlug>({\n authOptions: { disableLocalStrategy, loginWithUsername },\n collectionSlug,\n data,\n operation,\n originalDoc,\n req,\n}: ValidateUsernameOrEmailArgs<TSlug>) => {\n // neither username or email are required\n // and neither are provided\n // so we need to manually validate\n if (\n !disableLocalStrategy &&\n loginWithUsername &&\n !loginWithUsername.requireEmail &&\n !loginWithUsername.requireUsername\n ) {\n let missingFields = false\n if (operation === 'create' && !data.email && !data.username) {\n missingFields = true\n } else if (operation === 'update') {\n // prevent clearing both email and username\n if ('email' in data && !data.email && 'username' in data && !data.username) {\n missingFields = true\n }\n // prevent clearing email if no username\n if ('email' in data && !data.email && !originalDoc.username && !data?.username) {\n missingFields = true\n }\n // prevent clearing username if no email\n if ('username' in data && !data.username && !originalDoc.email && !data?.email) {\n missingFields = true\n }\n }\n\n if (missingFields) {\n throw new ValidationError(\n {\n collection: collectionSlug,\n errors: [\n {\n field: 'username',\n message: 'Username or email is required',\n },\n {\n field: 'email',\n message: 'Username or email is required',\n },\n ],\n },\n req.t,\n )\n }\n }\n\n return\n}\n"],"names":["ValidationError","ensureUsernameOrEmail","authOptions","disableLocalStrategy","loginWithUsername","collectionSlug","data","operation","originalDoc","req","requireEmail","requireUsername","missingFields","email","username","collection","errors","field","message","t"],"mappings":"AAGA,SAASA,eAAe,QAAQ,qBAAoB;AAiBpD,OAAO,MAAMC,wBAAwB,CAA+B,EAClEC,aAAa,EAAEC,oBAAoB,EAAEC,iBAAiB,EAAE,EACxDC,cAAc,EACdC,IAAI,EACJC,SAAS,EACTC,WAAW,EACXC,GAAG,EACgC;IACnC,yCAAyC;IACzC,2BAA2B;IAC3B,kCAAkC;IAClC,IACE,CAACN,wBACDC,qBACA,CAACA,kBAAkBM,YAAY,IAC/B,CAACN,kBAAkBO,eAAe,EAClC;QACA,IAAIC,gBAAgB;QACpB,IAAIL,cAAc,YAAY,CAACD,KAAKO,KAAK,IAAI,CAACP,KAAKQ,QAAQ,EAAE;YAC3DF,gBAAgB;QAClB,OAAO,IAAIL,cAAc,UAAU;YACjC,2CAA2C;YAC3C,IAAI,WAAWD,QAAQ,CAACA,KAAKO,KAAK,IAAI,cAAcP,QAAQ,CAACA,KAAKQ,QAAQ,EAAE;gBAC1EF,gBAAgB;YAClB;YACA,wCAAwC;YACxC,IAAI,WAAWN,QAAQ,CAACA,KAAKO,KAAK,IAAI,CAACL,YAAYM,QAAQ,IAAI,CAACR,MAAMQ,UAAU;gBAC9EF,gBAAgB;YAClB;YACA,wCAAwC;YACxC,IAAI,cAAcN,QAAQ,CAACA,KAAKQ,QAAQ,IAAI,CAACN,YAAYK,KAAK,IAAI,CAACP,MAAMO,OAAO;gBAC9ED,gBAAgB;YAClB;QACF;QAEA,IAAIA,eAAe;YACjB,MAAM,IAAIZ,gBACR;gBACEe,YAAYV;gBACZW,QAAQ;oBACN;wBACEC,OAAO;wBACPC,SAAS;oBACX;oBACA;wBACED,OAAO;wBACPC,SAAS;oBACX;iBACD;YACH,GACAT,IAAIU,CAAC;QAET;IACF;IAEA;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/auth/ensureUsernameOrEmail.ts"],"sourcesContent":["import type { RequiredDataFromCollectionSlug } from '../collections/config/types.js'\nimport type { AuthCollection, CollectionSlug, PayloadRequest } from '../index.js'\n\nimport { ValidationError } from '../errors/index.js'\n\ntype ValidateUsernameOrEmailArgs<TSlug extends CollectionSlug> = {\n authOptions: AuthCollection['config']['auth']\n collectionSlug: string\n data: RequiredDataFromCollectionSlug<TSlug>\n req: PayloadRequest\n} & (\n | {\n operation: 'create'\n originalDoc?: never\n }\n | {\n operation: 'update'\n originalDoc: RequiredDataFromCollectionSlug<TSlug>\n }\n)\nexport const ensureUsernameOrEmail = <TSlug extends CollectionSlug>({\n authOptions: { disableLocalStrategy, loginWithUsername },\n collectionSlug,\n data,\n operation,\n originalDoc,\n req,\n}: ValidateUsernameOrEmailArgs<TSlug>) => {\n // neither username or email are required\n // and neither are provided\n // so we need to manually validate\n if (\n !disableLocalStrategy &&\n loginWithUsername &&\n !loginWithUsername.requireEmail &&\n !loginWithUsername.requireUsername\n ) {\n let missingFields = false\n if (operation === 'create' && !data.email && !data.username) {\n missingFields = true\n } else if (operation === 'update') {\n // prevent clearing both email and username\n if ('email' in data && !data.email && 'username' in data && !data.username) {\n missingFields = true\n }\n // prevent clearing email if no username\n if ('email' in data && !data.email && !originalDoc.username && !data?.username) {\n missingFields = true\n }\n // prevent clearing username if no email\n if ('username' in data && !data.username && !originalDoc.email && !data?.email) {\n missingFields = true\n }\n }\n\n if (missingFields) {\n throw new ValidationError(\n {\n collection: collectionSlug,\n errors: [\n {\n message: 'Username or email is required',\n path: 'username',\n },\n {\n message: 'Username or email is required',\n path: 'email',\n },\n ],\n },\n req.t,\n )\n }\n }\n\n return\n}\n"],"names":["ValidationError","ensureUsernameOrEmail","authOptions","disableLocalStrategy","loginWithUsername","collectionSlug","data","operation","originalDoc","req","requireEmail","requireUsername","missingFields","email","username","collection","errors","message","path","t"],"mappings":"AAGA,SAASA,eAAe,QAAQ,qBAAoB;AAiBpD,OAAO,MAAMC,wBAAwB,CAA+B,EAClEC,aAAa,EAAEC,oBAAoB,EAAEC,iBAAiB,EAAE,EACxDC,cAAc,EACdC,IAAI,EACJC,SAAS,EACTC,WAAW,EACXC,GAAG,EACgC;IACnC,yCAAyC;IACzC,2BAA2B;IAC3B,kCAAkC;IAClC,IACE,CAACN,wBACDC,qBACA,CAACA,kBAAkBM,YAAY,IAC/B,CAACN,kBAAkBO,eAAe,EAClC;QACA,IAAIC,gBAAgB;QACpB,IAAIL,cAAc,YAAY,CAACD,KAAKO,KAAK,IAAI,CAACP,KAAKQ,QAAQ,EAAE;YAC3DF,gBAAgB;QAClB,OAAO,IAAIL,cAAc,UAAU;YACjC,2CAA2C;YAC3C,IAAI,WAAWD,QAAQ,CAACA,KAAKO,KAAK,IAAI,cAAcP,QAAQ,CAACA,KAAKQ,QAAQ,EAAE;gBAC1EF,gBAAgB;YAClB;YACA,wCAAwC;YACxC,IAAI,WAAWN,QAAQ,CAACA,KAAKO,KAAK,IAAI,CAACL,YAAYM,QAAQ,IAAI,CAACR,MAAMQ,UAAU;gBAC9EF,gBAAgB;YAClB;YACA,wCAAwC;YACxC,IAAI,cAAcN,QAAQ,CAACA,KAAKQ,QAAQ,IAAI,CAACN,YAAYK,KAAK,IAAI,CAACP,MAAMO,OAAO;gBAC9ED,gBAAgB;YAClB;QACF;QAEA,IAAIA,eAAe;YACjB,MAAM,IAAIZ,gBACR;gBACEe,YAAYV;gBACZW,QAAQ;oBACN;wBACEC,SAAS;wBACTC,MAAM;oBACR;oBACA;wBACED,SAAS;wBACTC,MAAM;oBACR;iBACD;YACH,GACAT,IAAIU,CAAC;QAET;IACF;IAEA;AACF,EAAC"}
@@ -3,8 +3,8 @@ const traverseFields = ({ data, // parent,
3
3
  fields, result })=>{
4
4
  fields.forEach((field)=>{
5
5
  switch(field.type){
6
- case 'row':
7
6
  case 'collapsible':
7
+ case 'row':
8
8
  {
9
9
  traverseFields({
10
10
  data,
@@ -32,18 +32,6 @@ fields, result })=>{
32
32
  });
33
33
  break;
34
34
  }
35
- case 'tabs':
36
- {
37
- traverseFields({
38
- data,
39
- fields: field.tabs.map((tab)=>({
40
- ...tab,
41
- type: 'tab'
42
- })),
43
- result
44
- });
45
- break;
46
- }
47
35
  case 'tab':
48
36
  {
49
37
  if (tabHasName(field)) {
@@ -71,6 +59,18 @@ fields, result })=>{
71
59
  }
72
60
  break;
73
61
  }
62
+ case 'tabs':
63
+ {
64
+ traverseFields({
65
+ data,
66
+ fields: field.tabs.map((tab)=>({
67
+ ...tab,
68
+ type: 'tab'
69
+ })),
70
+ result
71
+ });
72
+ break;
73
+ }
74
74
  default:
75
75
  if (fieldAffectsData(field)) {
76
76
  if (field.saveToJWT) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/auth/getFieldsToSign.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\nimport type { Field, TabAsField } from '../fields/config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\n\ntype TraverseFieldsArgs = {\n data: Record<string, unknown>\n fields: (Field | TabAsField)[]\n result: Record<string, unknown>\n}\nconst traverseFields = ({\n data,\n // parent,\n fields,\n result,\n}: TraverseFieldsArgs) => {\n fields.forEach((field) => {\n switch (field.type) {\n case 'row':\n case 'collapsible': {\n traverseFields({\n data,\n fields: field.fields,\n result,\n })\n break\n }\n case 'group': {\n let targetResult\n if (typeof field.saveToJWT === 'string') {\n targetResult = field.saveToJWT\n result[field.saveToJWT] = data[field.name]\n } else if (field.saveToJWT) {\n targetResult = field.name\n result[field.name] = data[field.name]\n }\n const groupData: Record<string, unknown> = data[field.name] as Record<string, unknown>\n const groupResult = (targetResult ? result[targetResult] : result) as Record<\n string,\n unknown\n >\n traverseFields({\n data: groupData,\n fields: field.fields,\n result: groupResult,\n })\n break\n }\n case 'tabs': {\n traverseFields({\n data,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n result,\n })\n break\n }\n case 'tab': {\n if (tabHasName(field)) {\n let targetResult\n if (typeof field.saveToJWT === 'string') {\n targetResult = field.saveToJWT\n result[field.saveToJWT] = data[field.name]\n } else if (field.saveToJWT) {\n targetResult = field.name\n result[field.name] = data[field.name]\n }\n const tabData: Record<string, unknown> = data[field.name] as Record<string, unknown>\n const tabResult = (targetResult ? result[targetResult] : result) as Record<\n string,\n unknown\n >\n traverseFields({\n data: tabData,\n fields: field.fields,\n result: tabResult,\n })\n } else {\n traverseFields({\n data,\n fields: field.fields,\n result,\n })\n }\n break\n }\n default:\n if (fieldAffectsData(field)) {\n if (field.saveToJWT) {\n if (typeof field.saveToJWT === 'string') {\n result[field.saveToJWT] = data[field.name]\n delete result[field.name]\n } else {\n result[field.name] = data[field.name] as Record<string, unknown>\n }\n } else if (field.saveToJWT === false) {\n delete result[field.name]\n }\n }\n }\n })\n return result\n}\nexport const getFieldsToSign = (args: {\n collectionConfig: CollectionConfig\n email: string\n user: PayloadRequest['user']\n}): Record<string, unknown> => {\n const { collectionConfig, email, user } = args\n\n const result: Record<string, unknown> = {\n id: user.id,\n collection: collectionConfig.slug,\n email,\n }\n\n traverseFields({\n data: user,\n fields: collectionConfig.fields,\n result,\n })\n\n return result\n}\n"],"names":["fieldAffectsData","tabHasName","traverseFields","data","fields","result","forEach","field","type","targetResult","saveToJWT","name","groupData","groupResult","tabs","map","tab","tabData","tabResult","getFieldsToSign","args","collectionConfig","email","user","id","collection","slug"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/auth/getFieldsToSign.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\nimport type { Field, TabAsField } from '../fields/config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\n\ntype TraverseFieldsArgs = {\n data: Record<string, unknown>\n fields: (Field | TabAsField)[]\n result: Record<string, unknown>\n}\nconst traverseFields = ({\n data,\n // parent,\n fields,\n result,\n}: TraverseFieldsArgs) => {\n fields.forEach((field) => {\n switch (field.type) {\n case 'collapsible':\n case 'row': {\n traverseFields({\n data,\n fields: field.fields,\n result,\n })\n break\n }\n case 'group': {\n let targetResult\n if (typeof field.saveToJWT === 'string') {\n targetResult = field.saveToJWT\n result[field.saveToJWT] = data[field.name]\n } else if (field.saveToJWT) {\n targetResult = field.name\n result[field.name] = data[field.name]\n }\n const groupData: Record<string, unknown> = data[field.name] as Record<string, unknown>\n const groupResult = (targetResult ? result[targetResult] : result) as Record<\n string,\n unknown\n >\n traverseFields({\n data: groupData,\n fields: field.fields,\n result: groupResult,\n })\n break\n }\n case 'tab': {\n if (tabHasName(field)) {\n let targetResult\n if (typeof field.saveToJWT === 'string') {\n targetResult = field.saveToJWT\n result[field.saveToJWT] = data[field.name]\n } else if (field.saveToJWT) {\n targetResult = field.name\n result[field.name] = data[field.name]\n }\n const tabData: Record<string, unknown> = data[field.name] as Record<string, unknown>\n const tabResult = (targetResult ? result[targetResult] : result) as Record<\n string,\n unknown\n >\n traverseFields({\n data: tabData,\n fields: field.fields,\n result: tabResult,\n })\n } else {\n traverseFields({\n data,\n fields: field.fields,\n result,\n })\n }\n break\n }\n case 'tabs': {\n traverseFields({\n data,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n result,\n })\n break\n }\n default:\n if (fieldAffectsData(field)) {\n if (field.saveToJWT) {\n if (typeof field.saveToJWT === 'string') {\n result[field.saveToJWT] = data[field.name]\n delete result[field.name]\n } else {\n result[field.name] = data[field.name] as Record<string, unknown>\n }\n } else if (field.saveToJWT === false) {\n delete result[field.name]\n }\n }\n }\n })\n return result\n}\nexport const getFieldsToSign = (args: {\n collectionConfig: CollectionConfig\n email: string\n user: PayloadRequest['user']\n}): Record<string, unknown> => {\n const { collectionConfig, email, user } = args\n\n const result: Record<string, unknown> = {\n id: user.id,\n collection: collectionConfig.slug,\n email,\n }\n\n traverseFields({\n data: user,\n fields: collectionConfig.fields,\n result,\n })\n\n return result\n}\n"],"names":["fieldAffectsData","tabHasName","traverseFields","data","fields","result","forEach","field","type","targetResult","saveToJWT","name","groupData","groupResult","tabData","tabResult","tabs","map","tab","getFieldsToSign","args","collectionConfig","email","user","id","collection","slug"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/auth/operations/local/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAKtD,eAAO,MAAM,IAAI,YAAmB,OAAO,WAAW,QAAQ,KAAG,OAAO,CAAC,UAAU,CAOlF,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/auth/operations/local/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAKtD,eAAO,MAAM,IAAI,YAAmB,OAAO,WAAW,QAAQ,KAAG,OAAO,CAAC,UAAU,CAOlF,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { createLocalReq } from '../../../utilities/createLocalReq.js';
2
2
  import { auth as authOperation } from '../auth.js';
3
3
  export const auth = async (payload, options)=>{
4
- const { headers } = options;
4
+ const { headers, req } = options;
5
5
  return await authOperation({
6
6
  headers,
7
7
  req: await createLocalReq({
8
- req: options.req
8
+ req
9
9
  }, payload)
10
10
  });
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/operations/local/auth.ts"],"sourcesContent":["import type { Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { AuthArgs, AuthResult } from '../auth.js'\n\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { auth as authOperation } from '../auth.js'\n\nexport const auth = async (payload: Payload, options: AuthArgs): Promise<AuthResult> => {\n const { headers } = options\n\n return await authOperation({\n headers,\n req: await createLocalReq({ req: options.req as PayloadRequest }, payload),\n })\n}\n"],"names":["createLocalReq","auth","authOperation","payload","options","headers","req"],"mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQC,aAAa,QAAQ,aAAY;AAElD,OAAO,MAAMD,OAAO,OAAOE,SAAkBC;IAC3C,MAAM,EAAEC,OAAO,EAAE,GAAGD;IAEpB,OAAO,MAAMF,cAAc;QACzBG;QACAC,KAAK,MAAMN,eAAe;YAAEM,KAAKF,QAAQE,GAAG;QAAmB,GAAGH;IACpE;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/operations/local/auth.ts"],"sourcesContent":["import type { Payload } from '../../../index.js'\nimport type { AuthArgs, AuthResult } from '../auth.js'\n\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { auth as authOperation } from '../auth.js'\n\nexport const auth = async (payload: Payload, options: AuthArgs): Promise<AuthResult> => {\n const { headers, req } = options\n\n return await authOperation({\n headers,\n req: await createLocalReq({ req }, payload),\n })\n}\n"],"names":["createLocalReq","auth","authOperation","payload","options","headers","req"],"mappings":"AAGA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,QAAQC,aAAa,QAAQ,aAAY;AAElD,OAAO,MAAMD,OAAO,OAAOE,SAAkBC;IAC3C,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAE,GAAGF;IAEzB,OAAO,MAAMF,cAAc;QACzBG;QACAC,KAAK,MAAMN,eAAe;YAAEM;QAAI,GAAGH;IACrC;AACF,EAAC"}
@@ -42,8 +42,8 @@ export const loginOperation = async (incomingArgs)=>{
42
42
  collection: collectionConfig.slug,
43
43
  errors: [
44
44
  {
45
- field: 'username',
46
- message: req.i18n.t('validation:required')
45
+ message: req.i18n.t('validation:required'),
46
+ path: 'username'
47
47
  }
48
48
  ]
49
49
  });
@@ -54,8 +54,8 @@ export const loginOperation = async (incomingArgs)=>{
54
54
  collection: collectionConfig.slug,
55
55
  errors: [
56
56
  {
57
- field: 'email',
58
- message: req.i18n.t('validation:required')
57
+ message: req.i18n.t('validation:required'),
58
+ path: 'email'
59
59
  }
60
60
  ]
61
61
  });
@@ -66,12 +66,12 @@ export const loginOperation = async (incomingArgs)=>{
66
66
  collection: collectionConfig.slug,
67
67
  errors: [
68
68
  {
69
- field: 'email',
70
- message: req.i18n.t('validation:required')
69
+ message: req.i18n.t('validation:required'),
70
+ path: 'email'
71
71
  },
72
72
  {
73
- field: 'username',
74
- message: req.i18n.t('validation:required')
73
+ message: req.i18n.t('validation:required'),
74
+ path: 'username'
75
75
  }
76
76
  ]
77
77
  });
@@ -82,8 +82,8 @@ export const loginOperation = async (incomingArgs)=>{
82
82
  collection: collectionConfig.slug,
83
83
  errors: [
84
84
  {
85
- field: 'password',
86
- message: req.i18n.t('validation:required')
85
+ message: req.i18n.t('validation:required'),
86
+ path: 'password'
87
87
  }
88
88
  ]
89
89
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import type {\n AuthOperationsFromCollectionSlug,\n Collection,\n DataFromCollectionSlug,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth, ValidationError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { jwtSign } from '../jwt.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: AuthOperationsFromCollectionSlug<TSlug>['login']\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<{ user: DataFromCollectionSlug<TSlug> } & Result> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n let user\n const { email: unsanitizedEmail, password } = data\n const loginWithUsername = collectionConfig.auth.loginWithUsername\n\n const sanitizedEmail =\n typeof unsanitizedEmail === 'string' ? unsanitizedEmail.toLowerCase().trim() : null\n const sanitizedUsername =\n 'username' in data && typeof data?.username === 'string'\n ? data.username.toLowerCase().trim()\n : null\n\n const canLoginWithUsername = Boolean(loginWithUsername)\n const canLoginWithEmail = !loginWithUsername || loginWithUsername.allowEmailLogin\n\n // cannot login with email, did not provide username\n if (!canLoginWithEmail && !sanitizedUsername) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ field: 'username', message: req.i18n.t('validation:required') }],\n })\n }\n\n // cannot login with username, did not provide email\n if (!canLoginWithUsername && !sanitizedEmail) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ field: 'email', message: req.i18n.t('validation:required') }],\n })\n }\n\n // can login with either email or username, did not provide either\n if (!sanitizedUsername && !sanitizedEmail) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [\n { field: 'email', message: req.i18n.t('validation:required') },\n { field: 'username', message: req.i18n.t('validation:required') },\n ],\n })\n }\n\n // did not provide password for login\n if (typeof password !== 'string' || password.trim() === '') {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ field: 'password', message: req.i18n.t('validation:required') }],\n })\n }\n\n let whereConstraint: Where = {}\n const emailConstraint: Where = {\n email: {\n equals: sanitizedEmail,\n },\n }\n const usernameConstraint: Where = {\n username: {\n equals: sanitizedUsername,\n },\n }\n\n if (canLoginWithEmail && canLoginWithUsername && (sanitizedUsername || sanitizedEmail)) {\n if (sanitizedUsername) {\n whereConstraint = {\n or: [\n usernameConstraint,\n {\n email: {\n equals: sanitizedUsername,\n },\n },\n ],\n }\n } else {\n whereConstraint = {\n or: [\n emailConstraint,\n {\n username: {\n equals: sanitizedEmail,\n },\n },\n ],\n }\n }\n } else if (canLoginWithEmail && sanitizedEmail) {\n whereConstraint = emailConstraint\n } else if (canLoginWithUsername && sanitizedUsername) {\n whereConstraint = usernameConstraint\n }\n\n user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: whereConstraint,\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t, Boolean(canLoginWithUsername && sanitizedUsername))\n }\n\n user.collection = collectionConfig.slug\n\n if (isLocked(new Date(user.lockUntil).getTime())) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: sanitizedEmail,\n user,\n })\n\n // /////////////////////////////////////\n // beforeLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const { exp, token } = await jwtSign({\n fieldsToSign,\n secret,\n tokenExpiration: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: { user: DataFromCollectionSlug<TSlug> } & Result = {\n exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["buildAfterOperation","AuthenticationError","LockedAuth","ValidationError","afterRead","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","jwtSign","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","req","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","user","email","unsanitizedEmail","password","loginWithUsername","auth","sanitizedEmail","toLowerCase","trim","sanitizedUsername","username","canLoginWithUsername","Boolean","canLoginWithEmail","allowEmailLogin","slug","errors","field","message","i18n","t","whereConstraint","emailConstraint","equals","usernameConstraint","or","db","findOne","where","verify","_verified","Date","lockUntil","getTime","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","exp","token","tokenExpiration","afterLogin","draft","undefined","global","result","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/auth/operations/login.ts"],"sourcesContent":["import type {\n AuthOperationsFromCollectionSlug,\n Collection,\n DataFromCollectionSlug,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\nimport type { User } from '../types.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { AuthenticationError, LockedAuth, ValidationError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { getFieldsToSign } from '../getFieldsToSign.js'\nimport isLocked from '../isLocked.js'\nimport { jwtSign } from '../jwt.js'\nimport { authenticateLocalStrategy } from '../strategies/local/authenticate.js'\nimport { incrementLoginAttempts } from '../strategies/local/incrementLoginAttempts.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Result = {\n exp?: number\n token?: string\n user?: User\n}\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: AuthOperationsFromCollectionSlug<TSlug>['login']\n depth?: number\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n}\n\nexport const loginOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<{ user: DataFromCollectionSlug<TSlug> } & Result> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection?.config,\n context: args.req.context,\n operation: 'login',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n data,\n depth,\n overrideAccess,\n req,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { secret },\n },\n showHiddenFields,\n } = args\n\n // /////////////////////////////////////\n // Login\n // /////////////////////////////////////\n\n let user\n const { email: unsanitizedEmail, password } = data\n const loginWithUsername = collectionConfig.auth.loginWithUsername\n\n const sanitizedEmail =\n typeof unsanitizedEmail === 'string' ? unsanitizedEmail.toLowerCase().trim() : null\n const sanitizedUsername =\n 'username' in data && typeof data?.username === 'string'\n ? data.username.toLowerCase().trim()\n : null\n\n const canLoginWithUsername = Boolean(loginWithUsername)\n const canLoginWithEmail = !loginWithUsername || loginWithUsername.allowEmailLogin\n\n // cannot login with email, did not provide username\n if (!canLoginWithEmail && !sanitizedUsername) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ message: req.i18n.t('validation:required'), path: 'username' }],\n })\n }\n\n // cannot login with username, did not provide email\n if (!canLoginWithUsername && !sanitizedEmail) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ message: req.i18n.t('validation:required'), path: 'email' }],\n })\n }\n\n // can login with either email or username, did not provide either\n if (!sanitizedUsername && !sanitizedEmail) {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [\n { message: req.i18n.t('validation:required'), path: 'email' },\n { message: req.i18n.t('validation:required'), path: 'username' },\n ],\n })\n }\n\n // did not provide password for login\n if (typeof password !== 'string' || password.trim() === '') {\n throw new ValidationError({\n collection: collectionConfig.slug,\n errors: [{ message: req.i18n.t('validation:required'), path: 'password' }],\n })\n }\n\n let whereConstraint: Where = {}\n const emailConstraint: Where = {\n email: {\n equals: sanitizedEmail,\n },\n }\n const usernameConstraint: Where = {\n username: {\n equals: sanitizedUsername,\n },\n }\n\n if (canLoginWithEmail && canLoginWithUsername && (sanitizedUsername || sanitizedEmail)) {\n if (sanitizedUsername) {\n whereConstraint = {\n or: [\n usernameConstraint,\n {\n email: {\n equals: sanitizedUsername,\n },\n },\n ],\n }\n } else {\n whereConstraint = {\n or: [\n emailConstraint,\n {\n username: {\n equals: sanitizedEmail,\n },\n },\n ],\n }\n }\n } else if (canLoginWithEmail && sanitizedEmail) {\n whereConstraint = emailConstraint\n } else if (canLoginWithUsername && sanitizedUsername) {\n whereConstraint = usernameConstraint\n }\n\n user = await payload.db.findOne<any>({\n collection: collectionConfig.slug,\n req,\n where: whereConstraint,\n })\n\n if (!user || (args.collection.config.auth.verify && user._verified === false)) {\n throw new AuthenticationError(req.t, Boolean(canLoginWithUsername && sanitizedUsername))\n }\n\n user.collection = collectionConfig.slug\n\n if (isLocked(new Date(user.lockUntil).getTime())) {\n throw new LockedAuth(req.t)\n }\n\n const authResult = await authenticateLocalStrategy({ doc: user, password })\n\n user = sanitizeInternalFields(user)\n\n const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0\n\n if (!authResult) {\n if (maxLoginAttemptsEnabled) {\n await incrementLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n throw new AuthenticationError(req.t)\n }\n\n if (maxLoginAttemptsEnabled) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n }\n\n const fieldsToSign = getFieldsToSign({\n collectionConfig,\n email: sanitizedEmail,\n user,\n })\n\n // /////////////////////////////////////\n // beforeLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n user,\n })) || user\n }, Promise.resolve())\n\n const { exp, token } = await jwtSign({\n fieldsToSign,\n secret,\n tokenExpiration: collectionConfig.auth.tokenExpiration,\n })\n\n req.user = user\n\n // /////////////////////////////////////\n // afterLogin - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterLogin.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: args.req.context,\n req: args.req,\n token,\n user,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n user = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: user,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n user =\n (await hook({\n collection: args.collection?.config,\n context: req.context,\n doc: user,\n req,\n })) || user\n }, Promise.resolve())\n\n let result: { user: DataFromCollectionSlug<TSlug> } & Result = {\n exp,\n token,\n user,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'login',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["buildAfterOperation","AuthenticationError","LockedAuth","ValidationError","afterRead","killTransaction","sanitizeInternalFields","getFieldsToSign","isLocked","jwtSign","authenticateLocalStrategy","incrementLoginAttempts","resetLoginAttempts","loginOperation","incomingArgs","args","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","req","operation","Promise","resolve","collectionConfig","data","depth","overrideAccess","fallbackLocale","locale","payload","secret","showHiddenFields","user","email","unsanitizedEmail","password","loginWithUsername","auth","sanitizedEmail","toLowerCase","trim","sanitizedUsername","username","canLoginWithUsername","Boolean","canLoginWithEmail","allowEmailLogin","slug","errors","message","i18n","t","path","whereConstraint","emailConstraint","equals","usernameConstraint","or","db","findOne","where","verify","_verified","Date","lockUntil","getTime","authResult","doc","maxLoginAttemptsEnabled","maxLoginAttempts","fieldsToSign","beforeLogin","exp","token","tokenExpiration","afterLogin","draft","undefined","global","result","error"],"mappings":"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"}
@@ -24,8 +24,8 @@ export const generatePasswordSaltHash = async ({ collection, password: passwordT
24
24
  collection: collection?.slug,
25
25
  errors: [
26
26
  {
27
- field: 'password',
28
- message: validationResult
27
+ message: validationResult,
28
+ path: 'password'
29
29
  }
30
30
  ]
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { password } from '../../../fields/validations.js'\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 collection: SanitizedCollectionConfig\n password: string\n req: PayloadRequest\n}\n\nexport const generatePasswordSaltHash = async ({\n collection,\n password: passwordToSet,\n req,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = password(passwordToSet, {\n name: 'password',\n type: 'text',\n data: {},\n preferences: { fields: {} },\n req,\n required: true,\n siblingData: {},\n })\n\n if (typeof validationResult === 'string') {\n throw new ValidationError({\n collection: collection?.slug,\n errors: [{ field: 'password', message: validationResult }],\n })\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(passwordToSet, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","password","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","collection","passwordToSet","req","validationResult","name","type","data","preferences","fields","required","siblingData","slug","errors","field","message","toString","hash"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAK3B,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,QAAQ,QAAQ,iCAAgC;AAEzD,SAASC;IACP,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BN,OAAOG,WAAW,CAAC,IAAI,CAACI,KAAKC,aAAgBD,MAAMD,OAAOC,OAAOF,QAAQG;AAE7E;AAEA,SAASC,kBAAkBP,QAAgB,EAAEQ,IAAY;IACvD,OAAO,IAAIN,QAAQ,CAACC,SAASC,SAC3BN,OAAOW,MAAM,CAACT,UAAUQ,MAAM,OAAO,KAAK,UAAU,CAACH,KAAKK,UACxDL,MAAMD,OAAOC,OAAOF,QAAQO;AAGlC;AAQA,OAAO,MAAMC,2BAA2B,OAAO,EAC7CC,UAAU,EACVZ,UAAUa,aAAa,EACvBC,GAAG,EACE;IACL,MAAMC,mBAAmBf,SAASa,eAAe;QAC/CG,MAAM;QACNC,MAAM;QACNC,MAAM,CAAC;QACPC,aAAa;YAAEC,QAAQ,CAAC;QAAE;QAC1BN;QACAO,UAAU;QACVC,aAAa,CAAC;IAChB;IAEA,IAAI,OAAOP,qBAAqB,UAAU;QACxC,MAAM,IAAIhB,gBAAgB;YACxBa,YAAYA,YAAYW;YACxBC,QAAQ;gBAAC;oBAAEC,OAAO;oBAAYC,SAASX;gBAAiB;aAAE;QAC5D;IACF;IAEA,MAAMT,aAAa,MAAML;IACzB,MAAMO,OAAOF,WAAWqB,QAAQ,CAAC;IAEjC,MAAMjB,UAAU,MAAMH,kBAAkBM,eAAeL;IACvD,MAAMoB,OAAOlB,QAAQiB,QAAQ,CAAC;IAE9B,OAAO;QAAEC;QAAMpB;IAAK;AACtB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { password } from '../../../fields/validations.js'\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 collection: SanitizedCollectionConfig\n password: string\n req: PayloadRequest\n}\n\nexport const generatePasswordSaltHash = async ({\n collection,\n password: passwordToSet,\n req,\n}: Args): Promise<{ hash: string; salt: string }> => {\n const validationResult = password(passwordToSet, {\n name: 'password',\n type: 'text',\n data: {},\n preferences: { fields: {} },\n req,\n required: true,\n siblingData: {},\n })\n\n if (typeof validationResult === 'string') {\n throw new ValidationError({\n collection: collection?.slug,\n errors: [{ message: validationResult, path: 'password' }],\n })\n }\n\n const saltBuffer = await randomBytes()\n const salt = saltBuffer.toString('hex')\n\n const hashRaw = await pbkdf2Promisified(passwordToSet, salt)\n const hash = hashRaw.toString('hex')\n\n return { hash, salt }\n}\n"],"names":["crypto","ValidationError","password","randomBytes","Promise","resolve","reject","err","saltBuffer","pbkdf2Promisified","salt","pbkdf2","hashRaw","generatePasswordSaltHash","collection","passwordToSet","req","validationResult","name","type","data","preferences","fields","required","siblingData","slug","errors","message","path","toString","hash"],"mappings":"AAAA,OAAOA,YAAY,SAAQ;AAK3B,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,QAAQ,QAAQ,iCAAgC;AAEzD,SAASC;IACP,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BN,OAAOG,WAAW,CAAC,IAAI,CAACI,KAAKC,aAAgBD,MAAMD,OAAOC,OAAOF,QAAQG;AAE7E;AAEA,SAASC,kBAAkBP,QAAgB,EAAEQ,IAAY;IACvD,OAAO,IAAIN,QAAQ,CAACC,SAASC,SAC3BN,OAAOW,MAAM,CAACT,UAAUQ,MAAM,OAAO,KAAK,UAAU,CAACH,KAAKK,UACxDL,MAAMD,OAAOC,OAAOF,QAAQO;AAGlC;AAQA,OAAO,MAAMC,2BAA2B,OAAO,EAC7CC,UAAU,EACVZ,UAAUa,aAAa,EACvBC,GAAG,EACE;IACL,MAAMC,mBAAmBf,SAASa,eAAe;QAC/CG,MAAM;QACNC,MAAM;QACNC,MAAM,CAAC;QACPC,aAAa;YAAEC,QAAQ,CAAC;QAAE;QAC1BN;QACAO,UAAU;QACVC,aAAa,CAAC;IAChB;IAEA,IAAI,OAAOP,qBAAqB,UAAU;QACxC,MAAM,IAAIhB,gBAAgB;YACxBa,YAAYA,YAAYW;YACxBC,QAAQ;gBAAC;oBAAEC,SAASV;oBAAkBW,MAAM;gBAAW;aAAE;QAC3D;IACF;IAEA,MAAMpB,aAAa,MAAML;IACzB,MAAMO,OAAOF,WAAWqB,QAAQ,CAAC;IAEjC,MAAMjB,UAAU,MAAMH,kBAAkBM,eAAeL;IACvD,MAAMoB,OAAOlB,QAAQiB,QAAQ,CAAC;IAE9B,OAAO;QAAEC;QAAMpB;IAAK;AACtB,EAAC"}
@@ -41,11 +41,11 @@ export const registerLocalStrategy = async ({ collection, doc, password, payload
41
41
  collection: collection.slug,
42
42
  errors: [
43
43
  loginWithUsername ? {
44
- field: 'username',
45
- message: req.t('error:usernameAlreadyRegistered')
44
+ message: req.t('error:usernameAlreadyRegistered'),
45
+ path: 'username'
46
46
  } : {
47
- field: 'email',
48
- message: req.t('error:userEmailAlreadyRegistered')
47
+ message: req.t('error:userEmailAlreadyRegistered'),
48
+ path: 'email'
49
49
  }
50
50
  ]
51
51
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { JsonObject, Payload } from '../../../index.js'\nimport type { PayloadRequest, SelectType, Where } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: JsonObject\n password: string\n payload: Payload\n req: PayloadRequest\n select?: SelectType\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n select,\n}: Args): Promise<Record<string, unknown>> => {\n const loginWithUsername = collection?.auth?.loginWithUsername\n\n let whereConstraint: Where\n\n if (!loginWithUsername) {\n whereConstraint = {\n email: {\n equals: doc.email,\n },\n }\n } else {\n whereConstraint = {\n or: [],\n }\n\n if (doc.email) {\n whereConstraint.or.push({\n email: {\n equals: doc.email,\n },\n })\n }\n\n if (doc.username) {\n whereConstraint.or.push({\n username: {\n equals: doc.username,\n },\n })\n }\n }\n\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: whereConstraint,\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError({\n collection: collection.slug,\n errors: [\n loginWithUsername\n ? {\n field: 'username',\n message: req.t('error:usernameAlreadyRegistered'),\n }\n : { field: 'email', message: req.t('error:userEmailAlreadyRegistered') },\n ],\n })\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ collection, password, req })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) {\n delete sanitizedDoc.password\n }\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n select,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","select","loginWithUsername","auth","whereConstraint","email","equals","or","push","username","existingUser","find","slug","depth","limit","pagination","where","docs","length","errors","field","message","t","hash","salt","sanitizedDoc","db","create","data"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAWxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACHC,MAAM,EACD;IACL,MAAMC,oBAAoBN,YAAYO,MAAMD;IAE5C,IAAIE;IAEJ,IAAI,CAACF,mBAAmB;QACtBE,kBAAkB;YAChBC,OAAO;gBACLC,QAAQT,IAAIQ,KAAK;YACnB;QACF;IACF,OAAO;QACLD,kBAAkB;YAChBG,IAAI,EAAE;QACR;QAEA,IAAIV,IAAIQ,KAAK,EAAE;YACbD,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBH,OAAO;oBACLC,QAAQT,IAAIQ,KAAK;gBACnB;YACF;QACF;QAEA,IAAIR,IAAIY,QAAQ,EAAE;YAChBL,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBC,UAAU;oBACRH,QAAQT,IAAIY,QAAQ;gBACtB;YACF;QACF;IACF;IAEA,MAAMC,eAAe,MAAMX,QAAQY,IAAI,CAAC;QACtCf,YAAYA,WAAWgB,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZf;QACAgB,OAAOZ;IACT;IAEA,IAAIM,aAAaO,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIzB,gBAAgB;YACxBG,YAAYA,WAAWgB,IAAI;YAC3BO,QAAQ;gBACNjB,oBACI;oBACEkB,OAAO;oBACPC,SAASrB,IAAIsB,CAAC,CAAC;gBACjB,IACA;oBAAEF,OAAO;oBAASC,SAASrB,IAAIsB,CAAC,CAAC;gBAAoC;aAC1E;QACH;IACF;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAM9B,yBAAyB;QAAEE;QAAYE;QAAUE;IAAI;IAElF,MAAMyB,eAAe;QAAE,GAAG5B,GAAG;IAAC;IAC9B,IAAI4B,aAAa3B,QAAQ,EAAE;QACzB,OAAO2B,aAAa3B,QAAQ;IAC9B;IAEA,OAAOC,QAAQ2B,EAAE,CAACC,MAAM,CAAC;QACvB/B,YAAYA,WAAWgB,IAAI;QAC3BgB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAxB;QACAC;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { JsonObject, Payload } from '../../../index.js'\nimport type { PayloadRequest, SelectType, Where } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: JsonObject\n password: string\n payload: Payload\n req: PayloadRequest\n select?: SelectType\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n select,\n}: Args): Promise<Record<string, unknown>> => {\n const loginWithUsername = collection?.auth?.loginWithUsername\n\n let whereConstraint: Where\n\n if (!loginWithUsername) {\n whereConstraint = {\n email: {\n equals: doc.email,\n },\n }\n } else {\n whereConstraint = {\n or: [],\n }\n\n if (doc.email) {\n whereConstraint.or.push({\n email: {\n equals: doc.email,\n },\n })\n }\n\n if (doc.username) {\n whereConstraint.or.push({\n username: {\n equals: doc.username,\n },\n })\n }\n }\n\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: whereConstraint,\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError({\n collection: collection.slug,\n errors: [\n loginWithUsername\n ? {\n message: req.t('error:usernameAlreadyRegistered'),\n path: 'username',\n }\n : { message: req.t('error:userEmailAlreadyRegistered'), path: 'email' },\n ],\n })\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ collection, password, req })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) {\n delete sanitizedDoc.password\n }\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n select,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","select","loginWithUsername","auth","whereConstraint","email","equals","or","push","username","existingUser","find","slug","depth","limit","pagination","where","docs","length","errors","message","t","path","hash","salt","sanitizedDoc","db","create","data"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAWxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACHC,MAAM,EACD;IACL,MAAMC,oBAAoBN,YAAYO,MAAMD;IAE5C,IAAIE;IAEJ,IAAI,CAACF,mBAAmB;QACtBE,kBAAkB;YAChBC,OAAO;gBACLC,QAAQT,IAAIQ,KAAK;YACnB;QACF;IACF,OAAO;QACLD,kBAAkB;YAChBG,IAAI,EAAE;QACR;QAEA,IAAIV,IAAIQ,KAAK,EAAE;YACbD,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBH,OAAO;oBACLC,QAAQT,IAAIQ,KAAK;gBACnB;YACF;QACF;QAEA,IAAIR,IAAIY,QAAQ,EAAE;YAChBL,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBC,UAAU;oBACRH,QAAQT,IAAIY,QAAQ;gBACtB;YACF;QACF;IACF;IAEA,MAAMC,eAAe,MAAMX,QAAQY,IAAI,CAAC;QACtCf,YAAYA,WAAWgB,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZf;QACAgB,OAAOZ;IACT;IAEA,IAAIM,aAAaO,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIzB,gBAAgB;YACxBG,YAAYA,WAAWgB,IAAI;YAC3BO,QAAQ;gBACNjB,oBACI;oBACEkB,SAASpB,IAAIqB,CAAC,CAAC;oBACfC,MAAM;gBACR,IACA;oBAAEF,SAASpB,IAAIqB,CAAC,CAAC;oBAAqCC,MAAM;gBAAQ;aACzE;QACH;IACF;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAM9B,yBAAyB;QAAEE;QAAYE;QAAUE;IAAI;IAElF,MAAMyB,eAAe;QAAE,GAAG5B,GAAG;IAAC;IAC9B,IAAI4B,aAAa3B,QAAQ,EAAE;QACzB,OAAO2B,aAAa3B,QAAQ;IAC9B;IAEA,OAAOC,QAAQ2B,EAAE,CAACC,MAAM,CAAC;QACvB/B,YAAYA,WAAWgB,IAAI;QAC3BgB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAxB;QACAC;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAK9E,KAAK,gBAAgB,GAAG,MAAM,CAAA;AAC9B,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,KAAK,UAAU,GAAG,MAAM,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,UAAU,EAAE,gBAAgB,GAAG;QAC9B,IAAI,EAAE,UAAU,CAAA;QAChB,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAA;CAC5B,CAAA;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,OAAO,EACP,SAAS,EACT,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,QAyBA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,KAAK,IAAI,CAAA;AAE9F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,EACH,OAAO,GACR,EAAE;IACD,YAAY,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,iBAgDA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAK9E,KAAK,gBAAgB,GAAG,MAAM,CAAA;AAC9B,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,KAAK,UAAU,GAAG,MAAM,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,UAAU,EAAE,gBAAgB,GAAG;QAC9B,IAAI,EAAE,UAAU,CAAA;QAChB,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAA;CAC5B,CAAA;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,OAAO,EACP,SAAS,EACT,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,QAoCA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,KAAK,IAAI,CAAA;AAE9F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CAmGf;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,EACH,OAAO,GACR,EAAE;IACD,YAAY,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,iBAgDA"}
@@ -16,10 +16,19 @@ export function addPayloadComponentToImportMap({ baseDir, importMap, imports, pa
16
16
  // e.g. if baseDir is /test/fields and componentPath is /components/Field.tsx
17
17
  // then path needs to be /test/fields/components/Field.tsx NOT /users/username/project/test/fields/components/Field.tsx
18
18
  // so we need to append baseDir to componentPath
19
- imports[importIdentifier] = {
20
- path: componentPath.startsWith('.') || componentPath.startsWith('/') ? path.posix.join(baseDir.replace(/\\/g, '/'), componentPath.slice(1)) : componentPath,
21
- specifier: exportName
22
- };
19
+ if (componentPath.startsWith('.') || componentPath.startsWith('/')) {
20
+ const normalizedBaseDir = baseDir.replace(/\\/g, '/');
21
+ const finalPath = normalizedBaseDir.startsWith('/../') ? `${normalizedBaseDir}${componentPath.slice(1)}` : path.posix.join(normalizedBaseDir, componentPath.slice(1));
22
+ imports[importIdentifier] = {
23
+ path: componentPath.startsWith('.') || componentPath.startsWith('/') ? finalPath : componentPath,
24
+ specifier: exportName
25
+ };
26
+ } else {
27
+ imports[importIdentifier] = {
28
+ path: componentPath,
29
+ specifier: exportName
30
+ };
31
+ }
23
32
  importMap[componentPath + '#' + exportName] = importIdentifier;
24
33
  }
25
34
  export async function generateImportMap(config, options) {
@@ -44,7 +53,25 @@ export async function generateImportMap(config, options) {
44
53
  // config.admin.importMap.baseDir = /
45
54
  // rootDir: /
46
55
  // componentsBaseDir = /
47
- const componentsBaseDir = path.relative(rootDir, config.admin.importMap.baseDir);
56
+ // E.g.:
57
+ // config.admin.importMap.baseDir = /test/fields/
58
+ // rootDir: /test/fields/prod
59
+ // componentsBaseDir = ../
60
+ // Check if rootDir is a subdirectory of baseDir
61
+ const baseDir = config.admin.importMap.baseDir;
62
+ const isSubdirectory = path.relative(baseDir, rootDir).startsWith('..');
63
+ let componentsBaseDir;
64
+ if (isSubdirectory) {
65
+ // Get the relative path from rootDir to baseDir
66
+ componentsBaseDir = path.relative(rootDir, baseDir);
67
+ } else {
68
+ // If rootDir is not a subdirectory, just return baseDir relative to rootDir
69
+ componentsBaseDir = `/${path.relative(rootDir, baseDir)}`;
70
+ }
71
+ // Ensure result has a trailing slash
72
+ if (!componentsBaseDir.endsWith('/')) {
73
+ componentsBaseDir += '/';
74
+ }
48
75
  const addToImportMap = (payloadComponent)=>{
49
76
  if (!payloadComponent) {
50
77
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/generateImportMap/index.ts"],"sourcesContent":["import crypto from 'crypto'\nimport fs from 'fs'\nimport process from 'node:process'\nimport path from 'path'\n\nimport type { PayloadComponent, SanitizedConfig } from '../../config/types.js'\n\nimport { iterateConfig } from './iterateConfig.js'\nimport { parsePayloadComponent } from './parsePayloadComponent.js'\n\ntype ImportIdentifier = string\ntype ImportSpecifier = string\ntype ImportPath = string\ntype UserImportPath = string\n\n/**\n * Import Map before being written to the file. Only contains all paths\n */\nexport type InternalImportMap = {\n [path: UserImportPath]: ImportIdentifier\n}\n\n/**\n * Imports of the import map.\n */\nexport type Imports = {\n [identifier: ImportIdentifier]: {\n path: ImportPath\n specifier: ImportSpecifier\n }\n}\n\n/**\n * Import Map after being imported from the actual import map. Contains all the actual imported components\n */\nexport type ImportMap = {\n [path: UserImportPath]: any\n}\n\nexport function addPayloadComponentToImportMap({\n baseDir,\n importMap,\n imports,\n payloadComponent,\n}: {\n baseDir: string\n importMap: InternalImportMap\n imports: Imports\n payloadComponent: PayloadComponent\n}) {\n if (!payloadComponent) {\n return\n }\n const { exportName, path: componentPath } = parsePayloadComponent(payloadComponent)\n\n if (importMap[componentPath + '#' + exportName]) {\n return\n }\n\n const importIdentifier =\n exportName + '_' + crypto.createHash('md5').update(componentPath).digest('hex')\n\n // e.g. if baseDir is /test/fields and componentPath is /components/Field.tsx\n // then path needs to be /test/fields/components/Field.tsx NOT /users/username/project/test/fields/components/Field.tsx\n // so we need to append baseDir to componentPath\n\n imports[importIdentifier] = {\n path:\n componentPath.startsWith('.') || componentPath.startsWith('/')\n ? path.posix.join(baseDir.replace(/\\\\/g, '/'), componentPath.slice(1))\n : componentPath,\n specifier: exportName,\n }\n importMap[componentPath + '#' + exportName] = importIdentifier\n}\n\nexport type AddToImportMap = (payloadComponent: PayloadComponent | PayloadComponent[]) => void\n\nexport async function generateImportMap(\n config: SanitizedConfig,\n options?: { force?: boolean; log: boolean },\n): Promise<void> {\n const shouldLog = options?.log ?? true\n\n if (shouldLog) {\n console.log('Generating import map')\n }\n\n const importMap: InternalImportMap = {}\n const imports: Imports = {}\n\n const rootDir = process.env.ROOT_DIR ?? process.cwd()\n\n // get componentsBaseDir.\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /\n // componentsBaseDir = /test/fields/\n\n // or\n\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /test\n // componentsBaseDir = /fields/\n\n // or\n // config.admin.importMap.baseDir = /\n // rootDir: /\n // componentsBaseDir = /\n\n const componentsBaseDir = path.relative(rootDir, config.admin.importMap.baseDir)\n\n const addToImportMap: AddToImportMap = (payloadComponent) => {\n if (!payloadComponent) {\n return\n }\n\n if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {\n console.error(payloadComponent)\n throw new Error('addToImportMap > Payload component must be an object or a string')\n }\n\n if (Array.isArray(payloadComponent)) {\n for (const component of payloadComponent) {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent: component,\n })\n }\n } else {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent,\n })\n }\n }\n\n iterateConfig({\n addToImportMap,\n baseDir: config.admin.importMap.baseDir,\n config,\n importMap,\n imports,\n })\n\n await writeImportMap({\n componentMap: importMap,\n fileName: 'importMap.js',\n force: options?.force,\n importMap: imports,\n log: shouldLog,\n rootDir,\n })\n}\n\nexport async function writeImportMap({\n componentMap,\n fileName,\n force,\n importMap,\n log,\n rootDir,\n}: {\n componentMap: InternalImportMap\n fileName: string\n force?: boolean\n importMap: Imports\n log?: boolean\n rootDir: string\n}) {\n let importMapFolderPath = ''\n if (fs.existsSync(path.resolve(rootDir, 'app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'app/(payload)/admin/')\n } else if (fs.existsSync(path.resolve(rootDir, 'src/app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'src/app/(payload)/admin/')\n } else {\n throw new Error(\n `Could not find the payload admin directory. Looked in ${path.resolve(rootDir, 'app/(payload)/admin/')} and ${path.resolve(rootDir, 'src/app/(payload)/admin/')}`,\n )\n }\n\n const imports: string[] = []\n for (const [identifier, { path, specifier }] of Object.entries(importMap)) {\n imports.push(`import { ${specifier} as ${identifier} } from '${path}'`)\n }\n\n const mapKeys: string[] = []\n for (const [userPath, identifier] of Object.entries(componentMap)) {\n mapKeys.push(` \"${userPath}\": ${identifier}`)\n }\n\n const importMapOutputFile = `${imports.join('\\n')}\n\nexport const importMap = {\n${mapKeys.join(',\\n')}\n}\n`\n\n const importMapFilePath = path.resolve(importMapFolderPath, fileName)\n\n if (!force) {\n // Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.\n const currentImportMap = await fs.promises.readFile(importMapFilePath, 'utf-8')\n\n if (currentImportMap?.trim() === importMapOutputFile?.trim()) {\n if (log) {\n console.log('No new imports found, skipping writing import map')\n }\n return\n }\n }\n\n if (log) {\n console.log('Writing import map to', importMapFilePath)\n }\n\n await fs.promises.writeFile(importMapFilePath, importMapOutputFile)\n}\n"],"names":["crypto","fs","process","path","iterateConfig","parsePayloadComponent","addPayloadComponentToImportMap","baseDir","importMap","imports","payloadComponent","exportName","componentPath","importIdentifier","createHash","update","digest","startsWith","posix","join","replace","slice","specifier","generateImportMap","config","options","shouldLog","log","console","rootDir","env","ROOT_DIR","cwd","componentsBaseDir","relative","admin","addToImportMap","error","Error","Array","isArray","component","writeImportMap","componentMap","fileName","force","importMapFolderPath","existsSync","resolve","identifier","Object","entries","push","mapKeys","userPath","importMapOutputFile","importMapFilePath","currentImportMap","promises","readFile","trim","writeFile"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/bin/generateImportMap/index.ts"],"sourcesContent":["import crypto from 'crypto'\nimport fs from 'fs'\nimport process from 'node:process'\nimport path from 'path'\n\nimport type { PayloadComponent, SanitizedConfig } from '../../config/types.js'\n\nimport { iterateConfig } from './iterateConfig.js'\nimport { parsePayloadComponent } from './parsePayloadComponent.js'\n\ntype ImportIdentifier = string\ntype ImportSpecifier = string\ntype ImportPath = string\ntype UserImportPath = string\n\n/**\n * Import Map before being written to the file. Only contains all paths\n */\nexport type InternalImportMap = {\n [path: UserImportPath]: ImportIdentifier\n}\n\n/**\n * Imports of the import map.\n */\nexport type Imports = {\n [identifier: ImportIdentifier]: {\n path: ImportPath\n specifier: ImportSpecifier\n }\n}\n\n/**\n * Import Map after being imported from the actual import map. Contains all the actual imported components\n */\nexport type ImportMap = {\n [path: UserImportPath]: any\n}\n\nexport function addPayloadComponentToImportMap({\n baseDir,\n importMap,\n imports,\n payloadComponent,\n}: {\n baseDir: string\n importMap: InternalImportMap\n imports: Imports\n payloadComponent: PayloadComponent\n}) {\n if (!payloadComponent) {\n return\n }\n const { exportName, path: componentPath } = parsePayloadComponent(payloadComponent)\n\n if (importMap[componentPath + '#' + exportName]) {\n return\n }\n\n const importIdentifier =\n exportName + '_' + crypto.createHash('md5').update(componentPath).digest('hex')\n\n // e.g. if baseDir is /test/fields and componentPath is /components/Field.tsx\n // then path needs to be /test/fields/components/Field.tsx NOT /users/username/project/test/fields/components/Field.tsx\n // so we need to append baseDir to componentPath\n\n if (componentPath.startsWith('.') || componentPath.startsWith('/')) {\n const normalizedBaseDir = baseDir.replace(/\\\\/g, '/')\n\n const finalPath = normalizedBaseDir.startsWith('/../')\n ? `${normalizedBaseDir}${componentPath.slice(1)}`\n : path.posix.join(normalizedBaseDir, componentPath.slice(1))\n\n imports[importIdentifier] = {\n path:\n componentPath.startsWith('.') || componentPath.startsWith('/') ? finalPath : componentPath,\n specifier: exportName,\n }\n } else {\n imports[importIdentifier] = {\n path: componentPath,\n specifier: exportName,\n }\n }\n importMap[componentPath + '#' + exportName] = importIdentifier\n}\n\nexport type AddToImportMap = (payloadComponent: PayloadComponent | PayloadComponent[]) => void\n\nexport async function generateImportMap(\n config: SanitizedConfig,\n options?: { force?: boolean; log: boolean },\n): Promise<void> {\n const shouldLog = options?.log ?? true\n\n if (shouldLog) {\n console.log('Generating import map')\n }\n\n const importMap: InternalImportMap = {}\n const imports: Imports = {}\n\n const rootDir = process.env.ROOT_DIR ?? process.cwd()\n\n // get componentsBaseDir.\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /\n // componentsBaseDir = /test/fields/\n\n // or\n\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /test\n // componentsBaseDir = /fields/\n\n // or\n // config.admin.importMap.baseDir = /\n // rootDir: /\n // componentsBaseDir = /\n\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /test/fields/prod\n // componentsBaseDir = ../\n\n // Check if rootDir is a subdirectory of baseDir\n const baseDir = config.admin.importMap.baseDir\n const isSubdirectory = path.relative(baseDir, rootDir).startsWith('..')\n\n let componentsBaseDir\n\n if (isSubdirectory) {\n // Get the relative path from rootDir to baseDir\n componentsBaseDir = path.relative(rootDir, baseDir)\n } else {\n // If rootDir is not a subdirectory, just return baseDir relative to rootDir\n componentsBaseDir = `/${path.relative(rootDir, baseDir)}`\n }\n\n // Ensure result has a trailing slash\n if (!componentsBaseDir.endsWith('/')) {\n componentsBaseDir += '/'\n }\n\n const addToImportMap: AddToImportMap = (payloadComponent) => {\n if (!payloadComponent) {\n return\n }\n\n if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {\n console.error(payloadComponent)\n throw new Error('addToImportMap > Payload component must be an object or a string')\n }\n\n if (Array.isArray(payloadComponent)) {\n for (const component of payloadComponent) {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent: component,\n })\n }\n } else {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent,\n })\n }\n }\n\n iterateConfig({\n addToImportMap,\n baseDir: config.admin.importMap.baseDir,\n config,\n importMap,\n imports,\n })\n\n await writeImportMap({\n componentMap: importMap,\n fileName: 'importMap.js',\n force: options?.force,\n importMap: imports,\n log: shouldLog,\n rootDir,\n })\n}\n\nexport async function writeImportMap({\n componentMap,\n fileName,\n force,\n importMap,\n log,\n rootDir,\n}: {\n componentMap: InternalImportMap\n fileName: string\n force?: boolean\n importMap: Imports\n log?: boolean\n rootDir: string\n}) {\n let importMapFolderPath = ''\n if (fs.existsSync(path.resolve(rootDir, 'app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'app/(payload)/admin/')\n } else if (fs.existsSync(path.resolve(rootDir, 'src/app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'src/app/(payload)/admin/')\n } else {\n throw new Error(\n `Could not find the payload admin directory. Looked in ${path.resolve(rootDir, 'app/(payload)/admin/')} and ${path.resolve(rootDir, 'src/app/(payload)/admin/')}`,\n )\n }\n\n const imports: string[] = []\n for (const [identifier, { path, specifier }] of Object.entries(importMap)) {\n imports.push(`import { ${specifier} as ${identifier} } from '${path}'`)\n }\n\n const mapKeys: string[] = []\n for (const [userPath, identifier] of Object.entries(componentMap)) {\n mapKeys.push(` \"${userPath}\": ${identifier}`)\n }\n\n const importMapOutputFile = `${imports.join('\\n')}\n\nexport const importMap = {\n${mapKeys.join(',\\n')}\n}\n`\n\n const importMapFilePath = path.resolve(importMapFolderPath, fileName)\n\n if (!force) {\n // Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.\n const currentImportMap = await fs.promises.readFile(importMapFilePath, 'utf-8')\n\n if (currentImportMap?.trim() === importMapOutputFile?.trim()) {\n if (log) {\n console.log('No new imports found, skipping writing import map')\n }\n return\n }\n }\n\n if (log) {\n console.log('Writing import map to', importMapFilePath)\n }\n\n await fs.promises.writeFile(importMapFilePath, importMapOutputFile)\n}\n"],"names":["crypto","fs","process","path","iterateConfig","parsePayloadComponent","addPayloadComponentToImportMap","baseDir","importMap","imports","payloadComponent","exportName","componentPath","importIdentifier","createHash","update","digest","startsWith","normalizedBaseDir","replace","finalPath","slice","posix","join","specifier","generateImportMap","config","options","shouldLog","log","console","rootDir","env","ROOT_DIR","cwd","admin","isSubdirectory","relative","componentsBaseDir","endsWith","addToImportMap","error","Error","Array","isArray","component","writeImportMap","componentMap","fileName","force","importMapFolderPath","existsSync","resolve","identifier","Object","entries","push","mapKeys","userPath","importMapOutputFile","importMapFilePath","currentImportMap","promises","readFile","trim","writeFile"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { PayloadComponent } from '../../config/types.js';
2
- export declare function parsePayloadComponent(payloadComponent: PayloadComponent): {
2
+ export declare function parsePayloadComponent(PayloadComponent: PayloadComponent): {
3
3
  exportName: string;
4
4
  path: string;
5
5
  };
@@ -1,8 +1,8 @@
1
- export function parsePayloadComponent(payloadComponent) {
2
- if (!payloadComponent) {
1
+ export function parsePayloadComponent(PayloadComponent) {
2
+ if (!PayloadComponent) {
3
3
  return null;
4
4
  }
5
- const pathAndMaybeExport = typeof payloadComponent === 'string' ? payloadComponent : payloadComponent.path;
5
+ const pathAndMaybeExport = typeof PayloadComponent === 'string' ? PayloadComponent : PayloadComponent.path;
6
6
  let path = '';
7
7
  let exportName = 'default';
8
8
  if (pathAndMaybeExport?.includes('#')) {
@@ -10,8 +10,8 @@ export function parsePayloadComponent(payloadComponent) {
10
10
  } else {
11
11
  path = pathAndMaybeExport;
12
12
  }
13
- if (typeof payloadComponent === 'object' && payloadComponent.exportName) {
14
- exportName = payloadComponent.exportName;
13
+ if (typeof PayloadComponent === 'object' && PayloadComponent.exportName) {
14
+ exportName = PayloadComponent.exportName;
15
15
  }
16
16
  return {
17
17
  exportName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/generateImportMap/parsePayloadComponent.ts"],"sourcesContent":["import type { PayloadComponent } from '../../config/types.js'\n\nexport function parsePayloadComponent(payloadComponent: PayloadComponent): {\n exportName: string\n path: string\n} {\n if (!payloadComponent) {\n return null\n }\n const pathAndMaybeExport =\n typeof payloadComponent === 'string' ? payloadComponent : payloadComponent.path\n\n let path = ''\n let exportName = 'default'\n\n if (pathAndMaybeExport?.includes('#')) {\n ;[path, exportName] = pathAndMaybeExport.split('#')\n } else {\n path = pathAndMaybeExport\n }\n\n if (typeof payloadComponent === 'object' && payloadComponent.exportName) {\n exportName = payloadComponent.exportName\n }\n\n return { exportName, path }\n}\n"],"names":["parsePayloadComponent","payloadComponent","pathAndMaybeExport","path","exportName","includes","split"],"mappings":"AAEA,OAAO,SAASA,sBAAsBC,gBAAkC;IAItE,IAAI,CAACA,kBAAkB;QACrB,OAAO;IACT;IACA,MAAMC,qBACJ,OAAOD,qBAAqB,WAAWA,mBAAmBA,iBAAiBE,IAAI;IAEjF,IAAIA,OAAO;IACX,IAAIC,aAAa;IAEjB,IAAIF,oBAAoBG,SAAS,MAAM;QACpC,CAACF,MAAMC,WAAW,GAAGF,mBAAmBI,KAAK,CAAC;IACjD,OAAO;QACLH,OAAOD;IACT;IAEA,IAAI,OAAOD,qBAAqB,YAAYA,iBAAiBG,UAAU,EAAE;QACvEA,aAAaH,iBAAiBG,UAAU;IAC1C;IAEA,OAAO;QAAEA;QAAYD;IAAK;AAC5B"}
1
+ {"version":3,"sources":["../../../src/bin/generateImportMap/parsePayloadComponent.ts"],"sourcesContent":["import type { PayloadComponent } from '../../config/types.js'\n\nexport function parsePayloadComponent(PayloadComponent: PayloadComponent): {\n exportName: string\n path: string\n} {\n if (!PayloadComponent) {\n return null\n }\n const pathAndMaybeExport =\n typeof PayloadComponent === 'string' ? PayloadComponent : PayloadComponent.path\n\n let path = ''\n let exportName = 'default'\n\n if (pathAndMaybeExport?.includes('#')) {\n ;[path, exportName] = pathAndMaybeExport.split('#')\n } else {\n path = pathAndMaybeExport\n }\n\n if (typeof PayloadComponent === 'object' && PayloadComponent.exportName) {\n exportName = PayloadComponent.exportName\n }\n\n return { exportName, path }\n}\n"],"names":["parsePayloadComponent","PayloadComponent","pathAndMaybeExport","path","exportName","includes","split"],"mappings":"AAEA,OAAO,SAASA,sBAAsBC,gBAAkC;IAItE,IAAI,CAACA,kBAAkB;QACrB,OAAO;IACT;IACA,MAAMC,qBACJ,OAAOD,qBAAqB,WAAWA,mBAAmBA,iBAAiBE,IAAI;IAEjF,IAAIA,OAAO;IACX,IAAIC,aAAa;IAEjB,IAAIF,oBAAoBG,SAAS,MAAM;QACpC,CAACF,MAAMC,WAAW,GAAGF,mBAAmBI,KAAK,CAAC;IACjD,OAAO;QACLH,OAAOD;IACT;IAEA,IAAI,OAAOD,qBAAqB,YAAYA,iBAAiBG,UAAU,EAAE;QACvEA,aAAaH,iBAAiBG,UAAU;IAC1C;IAEA,OAAO;QAAEA;QAAYD;IAAK;AAC5B"}