payload 4.0.0-internal.cd69eef → 4.0.0-internal.d1cc1d3

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 (279) hide show
  1. package/dist/admin/RichText.d.ts +1 -1
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/admin/functions/index.d.ts +10 -8
  5. package/dist/admin/functions/index.d.ts.map +1 -1
  6. package/dist/admin/functions/index.js.map +1 -1
  7. package/dist/admin/types.d.ts +2 -2
  8. package/dist/admin/types.d.ts.map +1 -1
  9. package/dist/admin/types.js.map +1 -1
  10. package/dist/auth/endpoints/login.d.ts.map +1 -1
  11. package/dist/auth/endpoints/login.js +2 -11
  12. package/dist/auth/endpoints/login.js.map +1 -1
  13. package/dist/auth/loginWithCookie.d.ts +33 -0
  14. package/dist/auth/loginWithCookie.d.ts.map +1 -0
  15. package/dist/auth/loginWithCookie.js +34 -0
  16. package/dist/auth/loginWithCookie.js.map +1 -0
  17. package/dist/auth/serverFunctions/cookies.d.ts +47 -0
  18. package/dist/auth/serverFunctions/cookies.d.ts.map +1 -0
  19. package/dist/auth/serverFunctions/cookies.js +52 -0
  20. package/dist/auth/serverFunctions/cookies.js.map +1 -0
  21. package/dist/auth/serverFunctions/login.d.ts +29 -0
  22. package/dist/auth/serverFunctions/login.d.ts.map +1 -0
  23. package/dist/auth/serverFunctions/login.js +63 -0
  24. package/dist/auth/serverFunctions/login.js.map +1 -0
  25. package/dist/auth/serverFunctions/logout.d.ts +17 -0
  26. package/dist/auth/serverFunctions/logout.d.ts.map +1 -0
  27. package/dist/auth/serverFunctions/logout.js +58 -0
  28. package/dist/auth/serverFunctions/logout.js.map +1 -0
  29. package/dist/auth/serverFunctions/refresh.d.ts +17 -0
  30. package/dist/auth/serverFunctions/refresh.d.ts.map +1 -0
  31. package/dist/auth/serverFunctions/refresh.js +61 -0
  32. package/dist/auth/serverFunctions/refresh.js.map +1 -0
  33. package/dist/collections/config/client.d.ts +2 -3
  34. package/dist/collections/config/client.d.ts.map +1 -1
  35. package/dist/collections/config/client.js +5 -7
  36. package/dist/collections/config/client.js.map +1 -1
  37. package/dist/collections/config/defaults.d.ts.map +1 -1
  38. package/dist/collections/config/defaults.js +1 -0
  39. package/dist/collections/config/defaults.js.map +1 -1
  40. package/dist/collections/config/sanitize.d.ts +3 -8
  41. package/dist/collections/config/sanitize.d.ts.map +1 -1
  42. package/dist/collections/config/sanitize.js +2 -6
  43. package/dist/collections/config/sanitize.js.map +1 -1
  44. package/dist/collections/config/types.d.ts +1 -1
  45. package/dist/collections/config/types.d.ts.map +1 -1
  46. package/dist/collections/config/types.js.map +1 -1
  47. package/dist/collections/config/useAsTitle.spec.js +27 -27
  48. package/dist/collections/config/useAsTitle.spec.js.map +1 -1
  49. package/dist/collections/operations/create.d.ts.map +1 -1
  50. package/dist/collections/operations/create.js +10 -0
  51. package/dist/collections/operations/create.js.map +1 -1
  52. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  53. package/dist/collections/operations/restoreVersion.js +7 -4
  54. package/dist/collections/operations/restoreVersion.js.map +1 -1
  55. package/dist/collections/operations/updateByID.js +1 -0
  56. package/dist/collections/operations/updateByID.js.map +1 -1
  57. package/dist/config/build.js +1 -1
  58. package/dist/config/build.js.map +1 -1
  59. package/dist/config/defaults.d.ts.map +1 -1
  60. package/dist/config/defaults.js +5 -2
  61. package/dist/config/defaults.js.map +1 -1
  62. package/dist/config/orderable/index.d.ts +1 -1
  63. package/dist/config/orderable/index.d.ts.map +1 -1
  64. package/dist/config/orderable/index.js +2 -2
  65. package/dist/config/orderable/index.js.map +1 -1
  66. package/dist/config/sanitize.d.ts +1 -1
  67. package/dist/config/sanitize.d.ts.map +1 -1
  68. package/dist/config/sanitize.js +33 -40
  69. package/dist/config/sanitize.js.map +1 -1
  70. package/dist/config/types.d.ts +1 -1
  71. package/dist/config/types.js.map +1 -1
  72. package/dist/database/createDatabaseAdapter.d.ts +1 -1
  73. package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
  74. package/dist/database/createDatabaseAdapter.js +0 -2
  75. package/dist/database/createDatabaseAdapter.js.map +1 -1
  76. package/dist/database/types.d.ts +6 -0
  77. package/dist/database/types.d.ts.map +1 -1
  78. package/dist/database/types.js.map +1 -1
  79. package/dist/exports/auth.d.ts +5 -0
  80. package/dist/exports/auth.d.ts.map +1 -0
  81. package/dist/exports/auth.js +6 -0
  82. package/dist/exports/auth.js.map +1 -0
  83. package/dist/exports/internal.d.ts +2 -0
  84. package/dist/exports/internal.d.ts.map +1 -1
  85. package/dist/exports/internal.js +3 -1
  86. package/dist/exports/internal.js.map +1 -1
  87. package/dist/fields/baseFields/slug/duplicateContext.d.ts +11 -0
  88. package/dist/fields/baseFields/slug/duplicateContext.d.ts.map +1 -0
  89. package/dist/fields/baseFields/slug/duplicateContext.js +21 -0
  90. package/dist/fields/baseFields/slug/duplicateContext.js.map +1 -0
  91. package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.d.ts +22 -0
  92. package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.d.ts.map +1 -0
  93. package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.js +63 -0
  94. package/dist/fields/baseFields/slug/fillEmptyLocalizedSlugs.js.map +1 -0
  95. package/dist/fields/baseFields/slug/generateSlug.d.ts +13 -8
  96. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  97. package/dist/fields/baseFields/slug/generateSlug.js +98 -45
  98. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  99. package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.d.ts +18 -0
  100. package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.d.ts.map +1 -0
  101. package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.js +20 -0
  102. package/dist/fields/baseFields/slug/generateSlugBeforeDuplicate.js.map +1 -0
  103. package/dist/fields/baseFields/slug/getSlugFallbackValue.d.ts +22 -0
  104. package/dist/fields/baseFields/slug/getSlugFallbackValue.d.ts.map +1 -0
  105. package/dist/fields/baseFields/slug/getSlugFallbackValue.js +23 -0
  106. package/dist/fields/baseFields/slug/getSlugFallbackValue.js.map +1 -0
  107. package/dist/fields/baseFields/slug/hasValue.d.ts +3 -0
  108. package/dist/fields/baseFields/slug/hasValue.d.ts.map +1 -0
  109. package/dist/fields/baseFields/slug/hasValue.js +3 -0
  110. package/dist/fields/baseFields/slug/hasValue.js.map +1 -0
  111. package/dist/fields/config/reservedFieldNames.spec.js +18 -18
  112. package/dist/fields/config/reservedFieldNames.spec.js.map +1 -1
  113. package/dist/fields/config/sanitize.d.ts +3 -9
  114. package/dist/fields/config/sanitize.d.ts.map +1 -1
  115. package/dist/fields/config/sanitize.js +33 -34
  116. package/dist/fields/config/sanitize.js.map +1 -1
  117. package/dist/fields/config/sanitize.spec.js +128 -105
  118. package/dist/fields/config/sanitize.spec.js.map +1 -1
  119. package/dist/fields/config/types.d.ts +4 -3
  120. package/dist/fields/config/types.d.ts.map +1 -1
  121. package/dist/fields/config/types.js.map +1 -1
  122. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  123. package/dist/fields/hooks/beforeValidate/promise.js +5 -3
  124. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  125. package/dist/fields/hooks/beforeValidate/stripNullRows.d.ts +10 -0
  126. package/dist/fields/hooks/beforeValidate/stripNullRows.d.ts.map +1 -0
  127. package/dist/fields/hooks/beforeValidate/stripNullRows.js +18 -0
  128. package/dist/fields/hooks/beforeValidate/stripNullRows.js.map +1 -0
  129. package/dist/fields/validations.d.ts.map +1 -1
  130. package/dist/fields/validations.js +7 -8
  131. package/dist/fields/validations.js.map +1 -1
  132. package/dist/fields/validations.spec.js +61 -37
  133. package/dist/fields/validations.spec.js.map +1 -1
  134. package/dist/globals/config/sanitize.d.ts +2 -7
  135. package/dist/globals/config/sanitize.d.ts.map +1 -1
  136. package/dist/globals/config/sanitize.js +2 -6
  137. package/dist/globals/config/sanitize.js.map +1 -1
  138. package/dist/globals/config/sanitize.spec.js +6 -6
  139. package/dist/globals/config/sanitize.spec.js.map +1 -1
  140. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  141. package/dist/globals/operations/countGlobalVersions.js +1 -0
  142. package/dist/globals/operations/countGlobalVersions.js.map +1 -1
  143. package/dist/index.bundled.d.ts +247 -178
  144. package/dist/index.d.ts +49 -17
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +3 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/query-presets/constraints.js +1 -1
  149. package/dist/query-presets/constraints.js.map +1 -1
  150. package/dist/queues/config/collection.d.ts.map +1 -1
  151. package/dist/queues/config/collection.js +37 -43
  152. package/dist/queues/config/collection.js.map +1 -1
  153. package/dist/queues/config/global.d.ts +5 -6
  154. package/dist/queues/config/global.d.ts.map +1 -1
  155. package/dist/queues/config/global.js +1 -1
  156. package/dist/queues/config/global.js.map +1 -1
  157. package/dist/queues/config/types/index.d.ts +29 -24
  158. package/dist/queues/config/types/index.d.ts.map +1 -1
  159. package/dist/queues/config/types/index.js.map +1 -1
  160. package/dist/queues/config/types/taskTypes.d.ts +4 -7
  161. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  162. package/dist/queues/config/types/taskTypes.js.map +1 -1
  163. package/dist/queues/config/types/workflowJSONTypes.d.ts +10 -9
  164. package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -1
  165. package/dist/queues/config/types/workflowJSONTypes.js.map +1 -1
  166. package/dist/queues/config/types/workflowTypes.d.ts +11 -58
  167. package/dist/queues/config/types/workflowTypes.d.ts.map +1 -1
  168. package/dist/queues/config/types/workflowTypes.js.map +1 -1
  169. package/dist/queues/endpoints/handleSchedules.js +1 -1
  170. package/dist/queues/endpoints/handleSchedules.js.map +1 -1
  171. package/dist/queues/errors/handleTaskError.js +4 -4
  172. package/dist/queues/errors/handleTaskError.js.map +1 -1
  173. package/dist/queues/errors/handleWorkflowError.js +1 -1
  174. package/dist/queues/errors/handleWorkflowError.js.map +1 -1
  175. package/dist/queues/errors/index.d.ts +6 -0
  176. package/dist/queues/errors/index.d.ts.map +1 -1
  177. package/dist/queues/errors/index.js +5 -0
  178. package/dist/queues/errors/index.js.map +1 -1
  179. package/dist/queues/localAPI.d.ts +4 -4
  180. package/dist/queues/localAPI.d.ts.map +1 -1
  181. package/dist/queues/localAPI.js +63 -66
  182. package/dist/queues/localAPI.js.map +1 -1
  183. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.d.ts +4 -4
  184. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.d.ts.map +1 -1
  185. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.js.map +1 -1
  186. package/dist/queues/operations/handleSchedules/index.d.ts +1 -1
  187. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  188. package/dist/queues/operations/handleSchedules/index.js +1 -1
  189. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  190. package/dist/queues/operations/runJobs/heartbeat.d.ts +13 -0
  191. package/dist/queues/operations/runJobs/heartbeat.d.ts.map +1 -0
  192. package/dist/queues/operations/runJobs/heartbeat.js +66 -0
  193. package/dist/queues/operations/runJobs/heartbeat.js.map +1 -0
  194. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  195. package/dist/queues/operations/runJobs/index.js +133 -84
  196. package/dist/queues/operations/runJobs/index.js.map +1 -1
  197. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  198. package/dist/queues/operations/runJobs/runJSONJob/index.js +6 -3
  199. package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -1
  200. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +5 -5
  201. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  202. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts +2 -1
  203. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  204. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +39 -8
  205. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  206. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -1
  207. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
  208. package/dist/queues/operations/runJobs/runJob/index.js +4 -4
  209. package/dist/queues/operations/runJobs/runJob/index.js.map +1 -1
  210. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  211. package/dist/queues/utilities/updateJob.js +3 -0
  212. package/dist/queues/utilities/updateJob.js.map +1 -1
  213. package/dist/types/index.d.ts +2 -2
  214. package/dist/types/index.d.ts.map +1 -1
  215. package/dist/types/index.js.map +1 -1
  216. package/dist/uploads/checkFileRestrictions.d.ts +1 -1
  217. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  218. package/dist/uploads/checkFileRestrictions.js +15 -1
  219. package/dist/uploads/checkFileRestrictions.js.map +1 -1
  220. package/dist/uploads/endpoints/uploadInstructions.d.ts +12 -0
  221. package/dist/uploads/endpoints/uploadInstructions.d.ts.map +1 -1
  222. package/dist/uploads/endpoints/uploadInstructions.js +66 -20
  223. package/dist/uploads/endpoints/uploadInstructions.js.map +1 -1
  224. package/dist/uploads/generateFileData.js +4 -1
  225. package/dist/uploads/generateFileData.js.map +1 -1
  226. package/dist/uploads/getFileFromUploadInstructions.d.ts +8 -0
  227. package/dist/uploads/getFileFromUploadInstructions.d.ts.map +1 -0
  228. package/dist/uploads/getFileFromUploadInstructions.js +62 -0
  229. package/dist/uploads/getFileFromUploadInstructions.js.map +1 -0
  230. package/dist/uploads/getImageSize.d.ts +12 -1
  231. package/dist/uploads/getImageSize.d.ts.map +1 -1
  232. package/dist/uploads/getImageSize.js +20 -18
  233. package/dist/uploads/getImageSize.js.map +1 -1
  234. package/dist/uploads/getImageSize.spec.js +298 -0
  235. package/dist/uploads/getImageSize.spec.js.map +1 -0
  236. package/dist/uploads/probeImageSize.d.ts +39 -0
  237. package/dist/uploads/probeImageSize.d.ts.map +1 -0
  238. package/dist/uploads/probeImageSize.js +374 -0
  239. package/dist/uploads/probeImageSize.js.map +1 -0
  240. package/dist/uploads/probeImageSize.spec.js +366 -0
  241. package/dist/uploads/probeImageSize.spec.js.map +1 -0
  242. package/dist/uploads/stagedUpload.d.ts +27 -0
  243. package/dist/uploads/stagedUpload.d.ts.map +1 -0
  244. package/dist/uploads/stagedUpload.js +197 -0
  245. package/dist/uploads/stagedUpload.js.map +1 -0
  246. package/dist/uploads/types.d.ts +41 -13
  247. package/dist/uploads/types.d.ts.map +1 -1
  248. package/dist/uploads/types.js.map +1 -1
  249. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  250. package/dist/utilities/addDataAndFileToRequest.js +12 -46
  251. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  252. package/dist/utilities/configToJSONSchema.spec.js +33 -33
  253. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  254. package/dist/utilities/fieldValueExists.d.ts +29 -0
  255. package/dist/utilities/fieldValueExists.d.ts.map +1 -0
  256. package/dist/utilities/fieldValueExists.js +27 -0
  257. package/dist/utilities/fieldValueExists.js.map +1 -0
  258. package/dist/utilities/getUniqueFieldValue.d.ts +27 -0
  259. package/dist/utilities/getUniqueFieldValue.d.ts.map +1 -0
  260. package/dist/utilities/getUniqueFieldValue.js +26 -0
  261. package/dist/utilities/getUniqueFieldValue.js.map +1 -0
  262. package/dist/versions/deleteScheduledPublishJobs.js +2 -2
  263. package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
  264. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  265. package/dist/versions/payloadPackageList.js +0 -1
  266. package/dist/versions/payloadPackageList.js.map +1 -1
  267. package/package.json +8 -3
  268. package/dist/database/defaultUpdateJobs.d.ts +0 -3
  269. package/dist/database/defaultUpdateJobs.d.ts.map +0 -1
  270. package/dist/database/defaultUpdateJobs.js +0 -41
  271. package/dist/database/defaultUpdateJobs.js.map +0 -1
  272. package/dist/fields/baseFields/slug/countVersions.d.ts +0 -13
  273. package/dist/fields/baseFields/slug/countVersions.d.ts.map +0 -1
  274. package/dist/fields/baseFields/slug/countVersions.js +0 -27
  275. package/dist/fields/baseFields/slug/countVersions.js.map +0 -1
  276. package/dist/uploads/tempFile.d.ts +0 -7
  277. package/dist/uploads/tempFile.d.ts.map +0 -1
  278. package/dist/uploads/tempFile.js +0 -39
  279. package/dist/uploads/tempFile.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/validations.spec.ts"],"sourcesContent":["import type { SelectField, ValidateOptions } from './config/types.js'\n\nimport {\n blocks,\n number,\n password,\n point,\n relationship,\n select,\n text,\n textarea,\n type BlocksFieldValidation,\n type PointFieldValidation,\n type SelectFieldValidation,\n} from './validations.js'\nimport { describe, expect, it, vitest } from 'vitest'\n\nconst t = vitest.fn((string) => string)\n\nlet options: ValidateOptions<any, any, any, any> = {\n data: undefined,\n operation: 'create',\n req: {\n context: {},\n payload: {\n config: {\n db: {\n defaultIDType: 'text',\n init: () => null,\n },\n },\n },\n t,\n },\n siblingData: undefined,\n}\n\ndescribe('Field Validations', () => {\n describe('text', () => {\n it('should validate', () => {\n const val = 'test'\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = text(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n it('should validate minLength with empty string', () => {\n const val = ''\n const result = text(val, { ...options, required: false, minLength: 1 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate an array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true })\n expect(result).toBe(true)\n })\n it('should handle required array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true, required: true })\n expect(result).toBe(true)\n })\n it('should accept localized object value when required', () => {\n const val = { en: 'English text', es: 'Spanish text' }\n const result = text(val as any, { ...options, required: true })\n expect(result).toBe(true)\n })\n it('should reject null when required', () => {\n const result = text(null as any, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should reject empty string when required', () => {\n const result = text('', { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n })\n\n describe('textarea', () => {\n options = { ...options, field: { name: 'test', type: 'textarea' } }\n it('should validate', () => {\n const val = 'test'\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = textarea(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n\n it('should handle undefined', () => {\n const val = undefined\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n\n it('should validate minLength', () => {\n const val = 'short'\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('password', () => {\n const passwordOptions = {\n ...options,\n name: 'test',\n type: 'password',\n }\n it('should validate', () => {\n const val = 'test'\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('point', () => {\n const pointOptions: Parameters<PointFieldValidation>[1] = {\n ...options,\n name: 'point',\n type: 'point',\n }\n type PointFieldValue = [number | string, number | string]\n it('should validate numbers', () => {\n const val: PointFieldValue = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate strings that could be numbers', () => {\n const val: PointFieldValue = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should show required message when undefined', () => {\n const val = undefined\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array', () => {\n const val = []\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array of undefined', () => {\n const val = [undefined, undefined]\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle undefined not required', () => {\n const val = undefined\n const result = password(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle empty array not required', () => {\n const val = []\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle array of undefined not required', () => {\n const val = [undefined, undefined]\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent text input', () => {\n const val = ['bad', 'input']\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should prevent missing value', () => {\n const val = [0.1]\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should validate longitude within bounds', () => {\n const val: PointFieldValue = ['180', '0']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate longitude at lower bound', () => {\n const val: PointFieldValue = ['-180', '0']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent longitude below lower bound', () => {\n const val: PointFieldValue = ['-181', '0']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:longitudeOutOfBounds')\n })\n it('should prevent longitude above upper bound', () => {\n const val: PointFieldValue = ['181', '0']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:longitudeOutOfBounds')\n })\n it('should validate latitude within bounds', () => {\n const val: PointFieldValue = ['0', '90']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate latitude at lower bound', () => {\n const val: PointFieldValue = ['0', '-90']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent latitude below lower bound', () => {\n const val: PointFieldValue = ['0', '-91']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:latitudeOutOfBounds')\n })\n it('should prevent latitude above upper bound', () => {\n const val: PointFieldValue = ['0', '91']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:latitudeOutOfBounds')\n })\n })\n\n describe('relationship', () => {\n const relationCollection = {\n slug: 'relation',\n fields: [\n {\n name: 'id',\n type: 'text',\n },\n ],\n }\n\n const relationshipOptions = {\n ...options,\n relationTo: 'relation',\n req: {\n ...options.req,\n payload: {\n ...options.req.payload,\n collections: {\n relation: {\n config: relationCollection,\n },\n },\n config: {\n collections: [relationCollection],\n },\n },\n },\n }\n it('should handle required', async () => {\n const val = undefined\n const result = await relationship(val, { ...relationshipOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle required with hasMany', async () => {\n const val = []\n const result = await relationship(val, {\n ...relationshipOptions,\n hasMany: true,\n required: true,\n })\n expect(result).not.toBe(true)\n })\n it('should enforce hasMany min', async () => {\n const minOptions = {\n ...relationshipOptions,\n hasMany: true,\n minRows: 2,\n }\n\n const val = ['a']\n\n const result = await relationship(val, minOptions)\n expect(result).not.toBe(true)\n\n const allowed = await relationship(['a', 'b'], minOptions)\n expect(allowed).toStrictEqual(true)\n })\n it('should enforce hasMany max', async () => {\n const maxOptions = {\n ...relationshipOptions,\n hasMany: true,\n maxRows: 2,\n }\n let val = ['a', 'b', 'c']\n\n const result = await relationship(val, maxOptions)\n expect(result).not.toBe(true)\n\n val = ['a']\n const allowed = await relationship(val, maxOptions)\n expect(allowed).toStrictEqual(true)\n })\n })\n\n describe('select', () => {\n const selectOptions: Parameters<SelectFieldValidation>[1] = {\n ...options,\n type: 'select',\n options: ['one', 'two', 'three'],\n }\n const optionsRequired: Parameters<SelectFieldValidation>[1] = {\n ...selectOptions,\n options: [\n {\n label: 'One',\n value: 'one',\n },\n {\n label: 'two',\n value: 'two',\n },\n {\n label: 'three',\n value: 'three',\n },\n ],\n required: true,\n }\n const optionsWithEmptyString: Parameters<SelectFieldValidation>[1] = {\n ...selectOptions,\n options: [\n {\n label: 'None',\n value: '',\n },\n {\n label: 'Option',\n value: 'option',\n },\n ],\n }\n it('should allow valid input', async () => {\n const val = 'one'\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input', () => {\n const val = 'bad'\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow null input', () => {\n const val = null\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should allow undefined input', () => {\n let val\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent empty string input', () => {\n const val = ''\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required', () => {\n let val\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string input with required', () => {\n const result = select('', optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required and hasMany', () => {\n let val\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty array input with required and hasMany', () => {\n optionsRequired.hasMany = true\n const result = select([], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string array input with required and hasMany', () => {\n options.hasMany = true\n const result = select([''], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent null input with required and hasMany', () => {\n const val = null\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with option objects', () => {\n const val = 'one'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with option objects', () => {\n const val = 'bad'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow empty string input with option object', () => {\n const val = ''\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow empty string input with option object and required', () => {\n const val = ''\n optionsWithEmptyString.required = true\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow valid input with hasMany', () => {\n const val = ['one', 'two']\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany', () => {\n const val = ['one', 'bad']\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with hasMany option objects', () => {\n const val = ['one', 'three']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany option objects', () => {\n const val = ['three', 'bad']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n })\n\n describe('blocks', () => {\n const blocksOptions: Parameters<BlocksFieldValidation>[1] = {\n ...options,\n }\n it('basic blocks should pass validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result = await blocks(val, blocksOptions)\n expect(result).toStrictEqual(true)\n })\n\n it('should respect required validation', async () => {\n const result1 = await blocks(\n [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n ],\n { ...blocksOptions, required: true },\n )\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks([], { ...blocksOptions, required: true })\n expect(result2).not.toStrictEqual(true)\n\n const result3 = await blocks(undefined, { ...blocksOptions, required: true })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(null, { ...blocksOptions, required: true })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should respect minRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, minRows: 0 })\n expect(result1).toStrictEqual(true)\n const result2 = await blocks(val, { ...blocksOptions, minRows: 2 })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, minRows: 3 })\n expect(result3).not.toStrictEqual(true)\n })\n\n it('should respect maxRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n\n const result1 = await blocks(val, { ...blocksOptions, maxRows: 2 })\n expect(result1).toStrictEqual(true)\n const result2 = await blocks(val, { ...blocksOptions, maxRows: 3 })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, maxRows: 1 })\n expect(result3).not.toStrictEqual(true)\n })\n\n it('should respect both minRows and maxRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, maxRows: 2, minRows: 2 })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, { ...blocksOptions, maxRows: 1, minRows: 4 })\n expect(result2).not.toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, maxRows: 1, minRows: 0 })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, maxRows: 5, minRows: 3 })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should validate static filterOptions', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, filterOptions: ['block1', 'block2'] })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, {\n ...blocksOptions,\n filterOptions: ['block1', 'block2', 'block3'],\n })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, filterOptions: ['block1', 'block3'] })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, filterOptions: [] })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should validate dynamic filterOptions 1', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, filterOptions: () => true })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block2'],\n })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block2', 'block3'],\n })\n expect(result3).toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, filterOptions: () => [] })\n expect(result4).not.toStrictEqual(true)\n\n const result5 = await blocks(val, { ...blocksOptions, filterOptions: () => ['block1'] })\n expect(result5).not.toStrictEqual(true)\n\n const result6 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block3'],\n })\n expect(result6).not.toStrictEqual(true)\n })\n })\n\n describe('number', () => {\n const numberOptions = {\n ...options,\n name: 'test',\n type: 'number',\n }\n it('should validate', () => {\n const val = 1\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should validate 0', () => {\n const val = 0\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe(true)\n })\n it('should validate 2', () => {\n const val = 1.5\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should show invalid number message', () => {\n const val = 'test'\n const result = number(val, { ...numberOptions })\n expect(result).toBe('validation:enterNumber')\n })\n it('should handle empty value', () => {\n const val = ''\n const result = number(val, { ...numberOptions })\n expect(result).toBe(true)\n })\n it('should handle required value', () => {\n const val = ''\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should validate minValue', () => {\n const val = 2.4\n const result = number(val, { ...numberOptions, min: 2.5 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate maxValue', () => {\n const val = 1.25\n const result = number(val, { ...numberOptions, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true })\n expect(result).toBe(true)\n })\n it('should validate an array of numbers using min', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, min: 3 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate an array of numbers using max', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers using minRows', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, minRows: 4 })\n expect(result).toBe('validation:requiresAtLeast')\n })\n it('should validate an array of numbers using maxRows', async () => {\n const val = [1.25, 2.5, 3.5]\n const result = number(val, { ...numberOptions, hasMany: true, maxRows: 2 })\n expect(result).toBe('validation:requiresNoMoreThan')\n })\n })\n})\n"],"names":["blocks","number","password","point","relationship","select","text","textarea","describe","expect","it","vitest","t","fn","string","options","data","undefined","operation","req","context","payload","config","db","defaultIDType","init","siblingData","val","result","toBe","required","maxLength","minLength","hasMany","en","es","field","name","type","passwordOptions","pointOptions","not","relationCollection","slug","fields","relationshipOptions","relationTo","collections","relation","minOptions","minRows","allowed","toStrictEqual","maxOptions","maxRows","selectOptions","optionsRequired","label","value","optionsWithEmptyString","blocksOptions","blockType","someField","result1","result2","result3","result4","filterOptions","result5","result6","numberOptions","min","max"],"mappings":"AAEA,SACEA,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,IAAI,EACJC,QAAQ,QAIH,mBAAkB;AACzB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,EAAEC,MAAM,QAAQ,SAAQ;AAErD,MAAMC,IAAID,OAAOE,EAAE,CAAC,CAACC,SAAWA;AAEhC,IAAIC,UAA+C;IACjDC,MAAMC;IACNC,WAAW;IACXC,KAAK;QACHC,SAAS,CAAC;QACVC,SAAS;YACPC,QAAQ;gBACNC,IAAI;oBACFC,eAAe;oBACfC,MAAM,IAAM;gBACd;YACF;QACF;QACAb;IACF;IACAc,aAAaT;AACf;AAEAT,SAAS,qBAAqB;IAC5BA,SAAS,QAAQ;QACfE,GAAG,mBAAmB;YACpB,MAAMiB,MAAM;YACZ,MAAMC,SAAStB,KAAKqB,KAAKZ;YACzBN,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,gCAAgC;YACjC,MAAMiB,MAAMV;YACZ,MAAMW,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEe,UAAU;YAAK;YACtDrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2BAA2B;YAC5B,MAAMiB,MAAMV;YACZ,MAAMW,SAAStB,KAAKqB,KAAKZ;YACzBN,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEgB,WAAW;YAAE;YACpDtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEiB,WAAW;YAAG;YACrDvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEgB,WAAW;YAAE;YACpDtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEiB,WAAW;YAAG;YACrDvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,+CAA+C;YAChD,MAAMiB,MAAM;YACZ,MAAMC,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEe,UAAU;gBAAOE,WAAW;YAAE;YACrEvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,qCAAqC;YACtC,MAAMiB,MAAM;gBAAC;aAAO;YACpB,MAAMC,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEkB,SAAS;YAAK;YACrDxB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,yCAAyC;YAC1C,MAAMiB,MAAM;gBAAC;aAAO;YACpB,MAAMC,SAAStB,KAAKqB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEkB,SAAS;gBAAMH,UAAU;YAAK;YACrErB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,sDAAsD;YACvD,MAAMiB,MAAM;gBAAEO,IAAI;gBAAgBC,IAAI;YAAe;YACrD,MAAMP,SAAStB,KAAKqB,KAAY;gBAAE,GAAGZ,OAAO;gBAAEe,UAAU;YAAK;YAC7DrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,oCAAoC;YACrC,MAAMkB,SAAStB,KAAK,MAAa;gBAAE,GAAGS,OAAO;gBAAEe,UAAU;YAAK;YAC9DrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,4CAA4C;YAC7C,MAAMkB,SAAStB,KAAK,IAAI;gBAAE,GAAGS,OAAO;gBAAEe,UAAU;YAAK;YACrDrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;IACF;IAEArB,SAAS,YAAY;QACnBO,UAAU;YAAE,GAAGA,OAAO;YAAEqB,OAAO;gBAAEC,MAAM;gBAAQC,MAAM;YAAW;QAAE;QAClE5B,GAAG,mBAAmB;YACpB,MAAMiB,MAAM;YACZ,MAAMC,SAASrB,SAASoB,KAAKZ;YAC7BN,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,gCAAgC;YACjC,MAAMiB,MAAMV;YACZ,MAAMW,SAASrB,SAASoB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEe,UAAU;YAAK;YAC1DrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QAEAnB,GAAG,2BAA2B;YAC5B,MAAMiB,MAAMV;YACZ,MAAMW,SAASrB,SAASoB,KAAKZ;YAC7BN,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAASrB,SAASoB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEgB,WAAW;YAAE;YACxDtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QAEAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAASrB,SAASoB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEiB,WAAW;YAAG;YACzDvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAASrB,SAASoB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEgB,WAAW;YAAE;YACxDtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAASrB,SAASoB,KAAK;gBAAE,GAAGZ,OAAO;gBAAEiB,WAAW;YAAG;YACzDvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;IACF;IAEArB,SAAS,YAAY;QACnB,MAAM+B,kBAAkB;YACtB,GAAGxB,OAAO;YACVsB,MAAM;YACNC,MAAM;QACR;QACA5B,GAAG,mBAAmB;YACpB,MAAMiB,MAAM;YACZ,MAAMC,SAAS1B,SAASyB,KAAKY;YAC7B9B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,gCAAgC;YACjC,MAAMiB,MAAMV;YACZ,MAAMW,SAAS1B,SAASyB,KAAK;gBAAE,GAAGY,eAAe;gBAAET,UAAU;YAAK;YAClErB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2BAA2B;YAC5B,MAAMiB,MAAMV;YACZ,MAAMW,SAAS1B,SAASyB,KAAKY;YAC7B9B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAAS1B,SAASyB,KAAK;gBAAE,GAAGY,eAAe;gBAAER,WAAW;YAAE;YAChEtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAAS1B,SAASyB,KAAK;gBAAE,GAAGY,eAAe;gBAAEP,WAAW;YAAG;YACjEvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAAS1B,SAASyB,KAAK;gBAAE,GAAGY,eAAe;gBAAER,WAAW;YAAE;YAChEtB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAMV;YACZ,MAAMW,SAAS1B,SAASyB,KAAK;gBAAE,GAAGY,eAAe;gBAAEP,WAAW;YAAG;YACjEvB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;IACF;IAEArB,SAAS,SAAS;QAChB,MAAMgC,eAAoD;YACxD,GAAGzB,OAAO;YACVsB,MAAM;YACNC,MAAM;QACR;QAEA5B,GAAG,2BAA2B;YAC5B,MAAMiB,MAAuB;gBAAC;gBAAO;aAAM;YAC3C,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,iDAAiD;YAClD,MAAMiB,MAAuB;gBAAC;gBAAO;aAAM;YAC3C,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,+CAA+C;YAChD,MAAMiB,MAAMV;YACZ,MAAMW,SAASzB,MAAMwB,KAAK;gBAAE,GAAGa,YAAY;gBAAEV,UAAU;YAAK;YAC5DrB,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAM,EAAE;YACd,MAAMC,SAASzB,MAAMwB,KAAK;gBAAE,GAAGa,YAAY;gBAAEV,UAAU;YAAK;YAC5DrB,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,wDAAwD;YACzD,MAAMiB,MAAM;gBAACV;gBAAWA;aAAU;YAClC,MAAMW,SAASzB,MAAMwB,KAAK;gBAAE,GAAGa,YAAY;gBAAEV,UAAU;YAAK;YAC5DrB,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,wCAAwC;YACzC,MAAMiB,MAAMV;YACZ,MAAMW,SAAS1B,SAASyB,KAAKa;YAC7B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,0CAA0C;YAC3C,MAAMiB,MAAM,EAAE;YACd,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,iDAAiD;YAClD,MAAMiB,MAAM;gBAACV;gBAAWA;aAAU;YAClC,MAAMW,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;gBAAC;gBAAO;aAAQ;YAC5B,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,gCAAgC;YACjC,MAAMiB,MAAM;gBAAC;aAAI;YACjB,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAuB;gBAAC;gBAAO;aAAI;YACzC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,4CAA4C;YAC7C,MAAMiB,MAAuB;gBAAC;gBAAQ;aAAI;YAC1C,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,8CAA8C;YAC/C,MAAMiB,MAAuB;gBAAC;gBAAQ;aAAI;YAC1C,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,8CAA8C;YAC/C,MAAMiB,MAAuB;gBAAC;gBAAO;aAAI;YACzC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,0CAA0C;YAC3C,MAAMiB,MAAuB;gBAAC;gBAAK;aAAK;YACxC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,2CAA2C;YAC5C,MAAMiB,MAAuB;gBAAC;gBAAK;aAAM;YACzC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6CAA6C;YAC9C,MAAMiB,MAAuB;gBAAC;gBAAK;aAAM;YACzC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6CAA6C;YAC9C,MAAMiB,MAAuB;gBAAC;gBAAK;aAAK;YACxC,MAAMC,SAASzB,MAAMwB,KAAKa;YAC1B/B,OAAOmB,QAAQC,IAAI,CAAC;QACtB;IACF;IAEArB,SAAS,gBAAgB;QACvB,MAAMkC,qBAAqB;YACzBC,MAAM;YACNC,QAAQ;gBACN;oBACEP,MAAM;oBACNC,MAAM;gBACR;aACD;QACH;QAEA,MAAMO,sBAAsB;YAC1B,GAAG9B,OAAO;YACV+B,YAAY;YACZ3B,KAAK;gBACH,GAAGJ,QAAQI,GAAG;gBACdE,SAAS;oBACP,GAAGN,QAAQI,GAAG,CAACE,OAAO;oBACtB0B,aAAa;wBACXC,UAAU;4BACR1B,QAAQoB;wBACV;oBACF;oBACApB,QAAQ;wBACNyB,aAAa;4BAACL;yBAAmB;oBACnC;gBACF;YACF;QACF;QACAhC,GAAG,0BAA0B;YAC3B,MAAMiB,MAAMV;YACZ,MAAMW,SAAS,MAAMxB,aAAauB,KAAK;gBAAE,GAAGkB,mBAAmB;gBAAEf,UAAU;YAAK;YAChFrB,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,uCAAuC;YACxC,MAAMiB,MAAM,EAAE;YACd,MAAMC,SAAS,MAAMxB,aAAauB,KAAK;gBACrC,GAAGkB,mBAAmB;gBACtBZ,SAAS;gBACTH,UAAU;YACZ;YACArB,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;QAC1B;QACAnB,GAAG,8BAA8B;YAC/B,MAAMuC,aAAa;gBACjB,GAAGJ,mBAAmB;gBACtBZ,SAAS;gBACTiB,SAAS;YACX;YAEA,MAAMvB,MAAM;gBAAC;aAAI;YAEjB,MAAMC,SAAS,MAAMxB,aAAauB,KAAKsB;YACvCxC,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;YAExB,MAAMsB,UAAU,MAAM/C,aAAa;gBAAC;gBAAK;aAAI,EAAE6C;YAC/CxC,OAAO0C,SAASC,aAAa,CAAC;QAChC;QACA1C,GAAG,8BAA8B;YAC/B,MAAM2C,aAAa;gBACjB,GAAGR,mBAAmB;gBACtBZ,SAAS;gBACTqB,SAAS;YACX;YACA,IAAI3B,MAAM;gBAAC;gBAAK;gBAAK;aAAI;YAEzB,MAAMC,SAAS,MAAMxB,aAAauB,KAAK0B;YACvC5C,OAAOmB,QAAQa,GAAG,CAACZ,IAAI,CAAC;YAExBF,MAAM;gBAAC;aAAI;YACX,MAAMwB,UAAU,MAAM/C,aAAauB,KAAK0B;YACxC5C,OAAO0C,SAASC,aAAa,CAAC;QAChC;IACF;IAEA5C,SAAS,UAAU;QACjB,MAAM+C,gBAAsD;YAC1D,GAAGxC,OAAO;YACVuB,MAAM;YACNvB,SAAS;gBAAC;gBAAO;gBAAO;aAAQ;QAClC;QACA,MAAMyC,kBAAwD;YAC5D,GAAGD,aAAa;YAChBxC,SAAS;gBACP;oBACE0C,OAAO;oBACPC,OAAO;gBACT;gBACA;oBACED,OAAO;oBACPC,OAAO;gBACT;gBACA;oBACED,OAAO;oBACPC,OAAO;gBACT;aACD;YACD5B,UAAU;QACZ;QACA,MAAM6B,yBAA+D;YACnE,GAAGJ,aAAa;YAChBxC,SAAS;gBACP;oBACE0C,OAAO;oBACPC,OAAO;gBACT;gBACA;oBACED,OAAO;oBACPC,OAAO;gBACT;aACD;QACH;QACAhD,GAAG,4BAA4B;YAC7B,MAAMiB,MAAM;YACZ,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,gCAAgC;YACjC,MAAMiB,MAAM;YACZ,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,2BAA2B;YAC5B,MAAMiB,MAAM;YACZ,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,gCAAgC;YACjC,IAAIiB;YACJ,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,qCAAqC;YACtC,MAAMiB,MAAM;YACZ,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,gDAAgD;YACjD,IAAIiB;YACJ,MAAMC,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,mDAAmD;YACpD,MAAMkB,SAASvB,OAAO,IAAImD;YAC1B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,4DAA4D;YAC7D,IAAIiB;YACJZ,QAAQkB,OAAO,GAAG;YAClB,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,8DAA8D;YAC/D8C,gBAAgBvB,OAAO,GAAG;YAC1B,MAAML,SAASvB,OAAO,EAAE,EAAEmD;YAC1B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,qEAAqE;YACtEK,QAAQkB,OAAO,GAAG;YAClB,MAAML,SAASvB,OAAO;gBAAC;aAAG,EAAEmD;YAC5B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,uDAAuD;YACxD,MAAMiB,MAAM;YACZZ,QAAQkB,OAAO,GAAG;YAClB,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,gDAAgD;YACjD,MAAMiB,MAAM;YACZZ,QAAQkB,OAAO,GAAG;YAClB,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,oDAAoD;YACrD,MAAMiB,MAAM;YACZZ,QAAQkB,OAAO,GAAG;YAClB,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,sDAAsD;YACvD,MAAMiB,MAAM;YACZ,MAAMC,SAASvB,OAAOsB,KAAKgC;YAC3BlD,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,mEAAmE;YACpE,MAAMiB,MAAM;YACZgC,uBAAuB7B,QAAQ,GAAG;YAClC,MAAMF,SAASvB,OAAOsB,KAAKgC;YAC3BlD,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,yCAAyC;YAC1C,MAAMiB,MAAM;gBAAC;gBAAO;aAAM;YAC1B,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,6CAA6C;YAC9C,MAAMiB,MAAM;gBAAC;gBAAO;aAAM;YAC1B,MAAMC,SAASvB,OAAOsB,KAAK4B;YAC3B9C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;QACA1C,GAAG,wDAAwD;YACzD,MAAMiB,MAAM;gBAAC;gBAAO;aAAQ;YAC5B6B,gBAAgBvB,OAAO,GAAG;YAC1B,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QACA1C,GAAG,4DAA4D;YAC7D,MAAMiB,MAAM;gBAAC;gBAAS;aAAM;YAC5B6B,gBAAgBvB,OAAO,GAAG;YAC1B,MAAML,SAASvB,OAAOsB,KAAK6B;YAC3B/C,OAAOmB,QAAQa,GAAG,CAACW,aAAa,CAAC;QACnC;IACF;IAEA5C,SAAS,UAAU;QACjB,MAAMoD,gBAAsD;YAC1D,GAAG7C,OAAO;QACZ;QACAL,GAAG,uCAAuC;YACxC,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YACD,MAAMlC,SAAS,MAAM5B,OAAO2B,KAAKiC;YACjCnD,OAAOmB,QAAQwB,aAAa,CAAC;QAC/B;QAEA1C,GAAG,sCAAsC;YACvC,MAAMqD,UAAU,MAAM/D,OACpB;gBACE;oBACE6D,WAAW;oBACXC,WAAW;gBACb;aACD,EACD;gBAAE,GAAGF,aAAa;gBAAE9B,UAAU;YAAK;YAErCrB,OAAOsD,SAASX,aAAa,CAAC;YAE9B,MAAMY,UAAU,MAAMhE,OAAO,EAAE,EAAE;gBAAE,GAAG4D,aAAa;gBAAE9B,UAAU;YAAK;YACpErB,OAAOuD,SAASvB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMa,UAAU,MAAMjE,OAAOiB,WAAW;gBAAE,GAAG2C,aAAa;gBAAE9B,UAAU;YAAK;YAC3ErB,OAAOwD,SAASxB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMc,UAAU,MAAMlE,OAAO,MAAM;gBAAE,GAAG4D,aAAa;gBAAE9B,UAAU;YAAK;YACtErB,OAAOyD,SAASzB,GAAG,CAACW,aAAa,CAAC;QACpC;QAEA1C,GAAG,qCAAqC;YACtC,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YACD,MAAMC,UAAU,MAAM/D,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEV,SAAS;YAAE;YACjEzC,OAAOsD,SAASX,aAAa,CAAC;YAC9B,MAAMY,UAAU,MAAMhE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEV,SAAS;YAAE;YACjEzC,OAAOuD,SAASZ,aAAa,CAAC;YAE9B,MAAMa,UAAU,MAAMjE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEV,SAAS;YAAE;YACjEzC,OAAOwD,SAASxB,GAAG,CAACW,aAAa,CAAC;QACpC;QAEA1C,GAAG,qCAAqC;YACtC,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YAED,MAAMC,UAAU,MAAM/D,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;YAAE;YACjE7C,OAAOsD,SAASX,aAAa,CAAC;YAC9B,MAAMY,UAAU,MAAMhE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;YAAE;YACjE7C,OAAOuD,SAASZ,aAAa,CAAC;YAE9B,MAAMa,UAAU,MAAMjE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;YAAE;YACjE7C,OAAOwD,SAASxB,GAAG,CAACW,aAAa,CAAC;QACpC;QAEA1C,GAAG,sDAAsD;YACvD,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YACD,MAAMC,UAAU,MAAM/D,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;gBAAGJ,SAAS;YAAE;YAC7EzC,OAAOsD,SAASX,aAAa,CAAC;YAE9B,MAAMY,UAAU,MAAMhE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;gBAAGJ,SAAS;YAAE;YAC7EzC,OAAOuD,SAASvB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMa,UAAU,MAAMjE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;gBAAGJ,SAAS;YAAE;YAC7EzC,OAAOwD,SAASxB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMc,UAAU,MAAMlE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEN,SAAS;gBAAGJ,SAAS;YAAE;YAC7EzC,OAAOyD,SAASzB,GAAG,CAACW,aAAa,CAAC;QACpC;QAEA1C,GAAG,wCAAwC;YACzC,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YACD,MAAMC,UAAU,MAAM/D,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe;oBAAC;oBAAU;iBAAS;YAAC;YAC1F1D,OAAOsD,SAASX,aAAa,CAAC;YAE9B,MAAMY,UAAU,MAAMhE,OAAO2B,KAAK;gBAChC,GAAGiC,aAAa;gBAChBO,eAAe;oBAAC;oBAAU;oBAAU;iBAAS;YAC/C;YACA1D,OAAOuD,SAASZ,aAAa,CAAC;YAE9B,MAAMa,UAAU,MAAMjE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe;oBAAC;oBAAU;iBAAS;YAAC;YAC1F1D,OAAOwD,SAASxB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMc,UAAU,MAAMlE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe,EAAE;YAAC;YACxE1D,OAAOyD,SAASzB,GAAG,CAACW,aAAa,CAAC;QACpC;QAEA1C,GAAG,2CAA2C;YAC5C,MAAMiB,MAAa;gBACjB;oBACEkC,WAAW;oBACXC,WAAW;gBACb;gBACA;oBACED,WAAW;oBACXC,WAAW;gBACb;aACD;YACD,MAAMC,UAAU,MAAM/D,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe,IAAM;YAAK;YAChF1D,OAAOsD,SAASX,aAAa,CAAC;YAE9B,MAAMY,UAAU,MAAMhE,OAAO2B,KAAK;gBAChC,GAAGiC,aAAa;gBAChBO,eAAe,IAAM;wBAAC;wBAAU;qBAAS;YAC3C;YACA1D,OAAOuD,SAASZ,aAAa,CAAC;YAE9B,MAAMa,UAAU,MAAMjE,OAAO2B,KAAK;gBAChC,GAAGiC,aAAa;gBAChBO,eAAe,IAAM;wBAAC;wBAAU;wBAAU;qBAAS;YACrD;YACA1D,OAAOwD,SAASb,aAAa,CAAC;YAE9B,MAAMc,UAAU,MAAMlE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe,IAAM,EAAE;YAAC;YAC9E1D,OAAOyD,SAASzB,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMgB,UAAU,MAAMpE,OAAO2B,KAAK;gBAAE,GAAGiC,aAAa;gBAAEO,eAAe,IAAM;wBAAC;qBAAS;YAAC;YACtF1D,OAAO2D,SAAS3B,GAAG,CAACW,aAAa,CAAC;YAElC,MAAMiB,UAAU,MAAMrE,OAAO2B,KAAK;gBAChC,GAAGiC,aAAa;gBAChBO,eAAe,IAAM;wBAAC;wBAAU;qBAAS;YAC3C;YACA1D,OAAO4D,SAAS5B,GAAG,CAACW,aAAa,CAAC;QACpC;IACF;IAEA5C,SAAS,UAAU;QACjB,MAAM8D,gBAAgB;YACpB,GAAGvD,OAAO;YACVsB,MAAM;YACNC,MAAM;QACR;QACA5B,GAAG,mBAAmB;YACpB,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK2C;YAC3B7D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,qBAAqB;YACtB,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAExC,UAAU;YAAK;YAC9DrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,qBAAqB;YACtB,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK2C;YAC3B7D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,sCAAsC;YACvC,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;YAAC;YAC9C7D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,6BAA6B;YAC9B,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;YAAC;YAC9C7D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,gCAAgC;YACjC,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAExC,UAAU;YAAK;YAC9DrB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,4BAA4B;YAC7B,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAEC,KAAK;YAAI;YACxD9D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,4BAA4B;YAC7B,MAAMiB,MAAM;YACZ,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAEE,KAAK;YAAE;YACtD/D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,uCAAuC;YACxC,MAAMiB,MAAM;gBAAC;gBAAM;aAAI;YACvB,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAErC,SAAS;YAAK;YAC7DxB,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,iDAAiD;YAClD,MAAMiB,MAAM;gBAAC;gBAAM;aAAI;YACvB,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAErC,SAAS;gBAAMsC,KAAK;YAAE;YACrE9D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,iDAAiD;YAClD,MAAMiB,MAAM;gBAAC;gBAAM;aAAI;YACvB,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAErC,SAAS;gBAAMuC,KAAK;YAAE;YACrE/D,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,qDAAqD;YACtD,MAAMiB,MAAM;gBAAC;gBAAM;aAAI;YACvB,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAErC,SAAS;gBAAMiB,SAAS;YAAE;YACzEzC,OAAOmB,QAAQC,IAAI,CAAC;QACtB;QACAnB,GAAG,qDAAqD;YACtD,MAAMiB,MAAM;gBAAC;gBAAM;gBAAK;aAAI;YAC5B,MAAMC,SAAS3B,OAAO0B,KAAK;gBAAE,GAAG2C,aAAa;gBAAErC,SAAS;gBAAMqB,SAAS;YAAE;YACzE7C,OAAOmB,QAAQC,IAAI,CAAC;QACtB;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/fields/validations.spec.ts"],"sourcesContent":["import type { SelectField, ValidateOptions } from './config/types.js'\n\nimport {\n blocks,\n number,\n password,\n point,\n relationship,\n select,\n text,\n textarea,\n type BlocksFieldValidation,\n type PointFieldValidation,\n type SelectFieldValidation,\n} from './validations.js'\nimport { describe, expect, it, vitest } from 'vitest'\n\nconst t = vitest.fn((string) => string)\n\nlet options: ValidateOptions<any, any, any, any> = {\n data: undefined,\n operation: 'create',\n req: {\n context: {},\n payload: {\n config: {\n db: {\n defaultIDType: 'text',\n init: () => null,\n },\n },\n },\n t,\n },\n siblingData: undefined,\n}\n\ndescribe('Field Validations', () => {\n describe('text', () => {\n it('should validate', () => {\n const val = 'test'\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = text(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n it('should validate minLength with empty string', () => {\n const val = ''\n const result = text(val, { ...options, required: false, minLength: 1 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate an array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true })\n expect(result).toBe(true)\n })\n it('should handle required array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true, required: true })\n expect(result).toBe(true)\n })\n it('should accept localized object value when required', () => {\n const val = { en: 'English text', es: 'Spanish text' }\n const result = text(val as any, { ...options, required: true })\n expect(result).toBe(true)\n })\n it('should reject null when required', () => {\n const result = text(null as any, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should reject empty string when required', () => {\n const result = text('', { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n })\n\n describe('textarea', () => {\n options = { ...options, field: { name: 'test', type: 'textarea' } }\n it('should validate', () => {\n const val = 'test'\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = textarea(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n\n it('should handle undefined', () => {\n const val = undefined\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n\n it('should validate minLength', () => {\n const val = 'short'\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('password', () => {\n const passwordOptions = {\n ...options,\n name: 'test',\n type: 'password',\n }\n it('should validate', () => {\n const val = 'test'\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('point', () => {\n const pointOptions: Parameters<PointFieldValidation>[1] = {\n ...options,\n name: 'point',\n type: 'point',\n }\n type PointFieldValue = [number | string, number | string]\n it('should validate numbers', () => {\n const val: PointFieldValue = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate strings that could be numbers', () => {\n const val: PointFieldValue = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should show required message when undefined', () => {\n const val = undefined\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array', () => {\n const val = []\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array of undefined', () => {\n const val = [undefined, undefined]\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle undefined not required', () => {\n const val = undefined\n const result = password(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle empty array not required', () => {\n const val = []\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle array of undefined not required', () => {\n const val = [undefined, undefined]\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent text input', () => {\n const val = ['bad', 'input']\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should prevent missing value', () => {\n const val = [0.1]\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should validate longitude within bounds', () => {\n const val: PointFieldValue = ['180', '0']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate longitude at lower bound', () => {\n const val: PointFieldValue = ['-180', '0']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent longitude below lower bound', () => {\n const val: PointFieldValue = ['-181', '0']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:longitudeOutOfBounds')\n })\n it('should prevent longitude above upper bound', () => {\n const val: PointFieldValue = ['181', '0']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:longitudeOutOfBounds')\n })\n it('should validate latitude within bounds', () => {\n const val: PointFieldValue = ['0', '90']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate latitude at lower bound', () => {\n const val: PointFieldValue = ['0', '-90']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent latitude below lower bound', () => {\n const val: PointFieldValue = ['0', '-91']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:latitudeOutOfBounds')\n })\n it('should prevent latitude above upper bound', () => {\n const val: PointFieldValue = ['0', '91']\n const result = point(val, pointOptions)\n expect(result).toBe('validation:latitudeOutOfBounds')\n })\n })\n\n describe('relationship', () => {\n const relationCollection = {\n slug: 'relation',\n fields: [\n {\n name: 'id',\n type: 'text',\n },\n ],\n }\n\n const relationshipOptions = {\n ...options,\n relationTo: 'relation',\n req: {\n ...options.req,\n payload: {\n ...options.req.payload,\n collections: {\n relation: {\n config: relationCollection,\n },\n },\n config: {\n collections: [relationCollection],\n },\n },\n },\n }\n it('should handle required', async () => {\n const val = undefined\n const result = await relationship(val, { ...relationshipOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle required with hasMany', async () => {\n const val = []\n const result = await relationship(val, {\n ...relationshipOptions,\n hasMany: true,\n required: true,\n })\n expect(result).not.toBe(true)\n })\n it('should enforce hasMany min', async () => {\n const minOptions = {\n ...relationshipOptions,\n hasMany: true,\n minRows: 2,\n }\n\n const val = ['a']\n\n const result = await relationship(val, minOptions)\n expect(result).not.toBe(true)\n\n const allowed = await relationship(['a', 'b'], minOptions)\n expect(allowed).toStrictEqual(true)\n })\n it('should enforce hasMany max', async () => {\n const maxOptions = {\n ...relationshipOptions,\n hasMany: true,\n maxRows: 2,\n }\n let val = ['a', 'b', 'c']\n\n const result = await relationship(val, maxOptions)\n expect(result).not.toBe(true)\n\n val = ['a']\n const allowed = await relationship(val, maxOptions)\n expect(allowed).toStrictEqual(true)\n })\n })\n\n describe('select', () => {\n const selectOptions: Parameters<SelectFieldValidation>[1] = {\n ...options,\n type: 'select',\n options: ['one', 'two', 'three'],\n }\n const optionsRequired: Parameters<SelectFieldValidation>[1] = {\n ...selectOptions,\n options: [\n {\n label: 'One',\n value: 'one',\n },\n {\n label: 'two',\n value: 'two',\n },\n {\n label: 'three',\n value: 'three',\n },\n ],\n required: true,\n }\n const optionsWithEmptyString: Parameters<SelectFieldValidation>[1] = {\n ...selectOptions,\n options: [\n {\n label: 'None',\n value: '',\n },\n {\n label: 'Option',\n value: 'option',\n },\n ],\n }\n it('should allow valid input', async () => {\n const val = 'one'\n const result = await select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input', async () => {\n const val = 'bad'\n const result = await select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow null input', async () => {\n const val = null\n const result = await select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should allow undefined input', async () => {\n let val\n const result = await select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent empty string input', async () => {\n const val = ''\n const result = await select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required', async () => {\n let val\n const result = await select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string input with required', async () => {\n const result = await select('', optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required and hasMany', async () => {\n let val\n options.hasMany = true\n const result = await select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty array input with required and hasMany', async () => {\n optionsRequired.hasMany = true\n const result = await select([], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string array input with required and hasMany', async () => {\n options.hasMany = true\n const result = await select([''], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent null input with required and hasMany', async () => {\n const val = null\n options.hasMany = true\n const result = await select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with option objects', async () => {\n const val = 'one'\n options.hasMany = false\n const result = await select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with option objects', async () => {\n const val = 'bad'\n options.hasMany = false\n const result = await select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow empty string input with option object', async () => {\n const val = ''\n const result = await select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow empty string input with option object and required', async () => {\n const val = ''\n optionsWithEmptyString.required = true\n const result = await select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow valid input with hasMany', async () => {\n const val = ['one', 'two']\n const result = await select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany', async () => {\n const val = ['one', 'bad']\n const result = await select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with hasMany option objects', async () => {\n const val = ['one', 'three']\n optionsRequired.hasMany = true\n const result = await select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany option objects', async () => {\n const val = ['three', 'bad']\n optionsRequired.hasMany = true\n const result = await select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should resolve a promise-returning filterOptions before validating', async () => {\n const val = 'one'\n const filterOptions: SelectField['filterOptions'] = async ({ options }) => {\n await Promise.resolve()\n return options\n }\n const result = await select(val, { ...selectOptions, filterOptions })\n expect(result).toStrictEqual(true)\n })\n it('should reject a value excluded by a promise-returning filterOptions', async () => {\n const val = 'one'\n const filterOptions: SelectField['filterOptions'] = async ({ options }) => {\n await Promise.resolve()\n return (options as string[]).filter((option) => option !== 'one')\n }\n const result = await select(val, { ...selectOptions, filterOptions })\n expect(result).not.toStrictEqual(true)\n })\n })\n\n describe('blocks', () => {\n const blocksOptions: Parameters<BlocksFieldValidation>[1] = {\n ...options,\n }\n it('basic blocks should pass validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result = await blocks(val, blocksOptions)\n expect(result).toStrictEqual(true)\n })\n\n it('should respect required validation', async () => {\n const result1 = await blocks(\n [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n ],\n { ...blocksOptions, required: true },\n )\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks([], { ...blocksOptions, required: true })\n expect(result2).not.toStrictEqual(true)\n\n const result3 = await blocks(undefined, { ...blocksOptions, required: true })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(null, { ...blocksOptions, required: true })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should respect minRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, minRows: 0 })\n expect(result1).toStrictEqual(true)\n const result2 = await blocks(val, { ...blocksOptions, minRows: 2 })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, minRows: 3 })\n expect(result3).not.toStrictEqual(true)\n })\n\n it('should respect maxRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n\n const result1 = await blocks(val, { ...blocksOptions, maxRows: 2 })\n expect(result1).toStrictEqual(true)\n const result2 = await blocks(val, { ...blocksOptions, maxRows: 3 })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, maxRows: 1 })\n expect(result3).not.toStrictEqual(true)\n })\n\n it('should respect both minRows and maxRows validation', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, maxRows: 2, minRows: 2 })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, { ...blocksOptions, maxRows: 1, minRows: 4 })\n expect(result2).not.toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, maxRows: 1, minRows: 0 })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, maxRows: 5, minRows: 3 })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should validate static filterOptions', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, filterOptions: ['block1', 'block2'] })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, {\n ...blocksOptions,\n filterOptions: ['block1', 'block2', 'block3'],\n })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, { ...blocksOptions, filterOptions: ['block1', 'block3'] })\n expect(result3).not.toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, filterOptions: [] })\n expect(result4).not.toStrictEqual(true)\n })\n\n it('should validate dynamic filterOptions 1', async () => {\n const val: any[] = [\n {\n blockType: 'block1',\n someField: 'some data',\n },\n {\n blockType: 'block2',\n someField: 'some data',\n },\n ]\n const result1 = await blocks(val, { ...blocksOptions, filterOptions: () => true })\n expect(result1).toStrictEqual(true)\n\n const result2 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block2'],\n })\n expect(result2).toStrictEqual(true)\n\n const result3 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block2', 'block3'],\n })\n expect(result3).toStrictEqual(true)\n\n const result4 = await blocks(val, { ...blocksOptions, filterOptions: () => [] })\n expect(result4).not.toStrictEqual(true)\n\n const result5 = await blocks(val, { ...blocksOptions, filterOptions: () => ['block1'] })\n expect(result5).not.toStrictEqual(true)\n\n const result6 = await blocks(val, {\n ...blocksOptions,\n filterOptions: () => ['block1', 'block3'],\n })\n expect(result6).not.toStrictEqual(true)\n })\n })\n\n describe('number', () => {\n const numberOptions = {\n ...options,\n name: 'test',\n type: 'number',\n }\n it('should validate', () => {\n const val = 1\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should validate 0', () => {\n const val = 0\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe(true)\n })\n it('should validate 2', () => {\n const val = 1.5\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should show invalid number message', () => {\n const val = 'test'\n const result = number(val, { ...numberOptions })\n expect(result).toBe('validation:enterNumber')\n })\n it('should handle empty value', () => {\n const val = ''\n const result = number(val, { ...numberOptions })\n expect(result).toBe(true)\n })\n it('should handle required value', () => {\n const val = ''\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should validate minValue', () => {\n const val = 2.4\n const result = number(val, { ...numberOptions, min: 2.5 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate maxValue', () => {\n const val = 1.25\n const result = number(val, { ...numberOptions, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true })\n expect(result).toBe(true)\n })\n it('should validate an array of numbers using min', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, min: 3 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate an array of numbers using max', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers using minRows', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, minRows: 4 })\n expect(result).toBe('validation:requiresAtLeast')\n })\n it('should validate an array of numbers using maxRows', async () => {\n const val = [1.25, 2.5, 3.5]\n const result = number(val, { ...numberOptions, hasMany: true, maxRows: 2 })\n expect(result).toBe('validation:requiresNoMoreThan')\n })\n })\n})\n"],"names":["blocks","number","password","point","relationship","select","text","textarea","describe","expect","it","vitest","t","fn","string","options","data","undefined","operation","req","context","payload","config","db","defaultIDType","init","siblingData","val","result","toBe","required","maxLength","minLength","hasMany","en","es","field","name","type","passwordOptions","pointOptions","not","relationCollection","slug","fields","relationshipOptions","relationTo","collections","relation","minOptions","minRows","allowed","toStrictEqual","maxOptions","maxRows","selectOptions","optionsRequired","label","value","optionsWithEmptyString","filterOptions","Promise","resolve","filter","option","blocksOptions","blockType","someField","result1","result2","result3","result4","result5","result6","numberOptions","min","max"],"mappings":"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"}
@@ -1,9 +1,4 @@
1
- import type { Config, SanitizedConfig } from '../../config/types.js';
1
+ import type { Config } from '../../config/types.js';
2
2
  import type { GlobalConfig, SanitizedGlobalConfig } from './types.js';
3
- export declare const sanitizeGlobal: (config: Config, global: GlobalConfig,
4
- /**
5
- * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises
6
- * so that you can sanitize them together, after the config has been sanitized.
7
- */
8
- richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>, _validRelationships?: string[]) => Promise<SanitizedGlobalConfig>;
3
+ export declare const sanitizeGlobal: (config: Config, global: GlobalConfig, _validRelationships?: string[]) => SanitizedGlobalConfig;
9
4
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAYrE,eAAO,MAAM,cAAc,WACjB,MAAM,UACN,YAAY;AACpB;;;GAGG;+BAC4B,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,wBAC1D,MAAM,EAAE,KAC7B,OAAO,CAAC,qBAAqB,CAyK/B,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAYrE,eAAO,MAAM,cAAc,WACjB,MAAM,UACN,YAAY,wBACE,MAAM,EAAE,KAC7B,qBAwKF,CAAA"}
@@ -8,10 +8,7 @@ import { traverseForLocalizedFields } from '../../utilities/traverseForLocalized
8
8
  import { baseVersionFields } from '../../versions/baseFields.js';
9
9
  import { versionDefaults } from '../../versions/defaults.js';
10
10
  import { defaultGlobalEndpoints } from '../endpoints/index.js';
11
- export const sanitizeGlobal = async (config, global, /**
12
- * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises
13
- * so that you can sanitize them together, after the config has been sanitized.
14
- */ richTextSanitizationPromises, _validRelationships)=>{
11
+ export const sanitizeGlobal = (config, global, _validRelationships)=>{
15
12
  if (global._sanitized) {
16
13
  return global;
17
14
  }
@@ -53,12 +50,11 @@ export const sanitizeGlobal = async (config, global, /**
53
50
  }
54
51
  // Sanitize fields
55
52
  const validRelationships = _validRelationships ?? config.collections?.map((c)=>c.slug) ?? [];
56
- global.fields = await sanitizeFields({
53
+ global.fields = sanitizeFields({
57
54
  config,
58
55
  fields: global.fields,
59
56
  globalConfig: global,
60
57
  parentIsLocalized: false,
61
- richTextSanitizationPromises,
62
58
  validRelationships
63
59
  });
64
60
  if (global.endpoints !== false) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { SanitizedDrafts } from '../../versions/types.js'\nimport type { GlobalConfig, SanitizedGlobalConfig } from './types.js'\n\nimport { defaultAccess } from '../../auth/defaultAccess.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { mergeBaseFields } from '../../fields/mergeBaseFields.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { toWords } from '../../utilities/formatLabels.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { baseVersionFields } from '../../versions/baseFields.js'\nimport { versionDefaults } from '../../versions/defaults.js'\nimport { defaultGlobalEndpoints } from '../endpoints/index.js'\nexport const sanitizeGlobal = async (\n config: Config,\n global: GlobalConfig,\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>,\n _validRelationships?: string[],\n): Promise<SanitizedGlobalConfig> => {\n if (global._sanitized) {\n return global as SanitizedGlobalConfig\n }\n\n global._sanitized = true\n\n global.label = global.label || toWords(global.slug)\n\n // /////////////////////////////////\n // Ensure that collection has required object structure\n // /////////////////////////////////\n\n global.endpoints = global.endpoints ?? []\n\n if (!global.hooks) {\n global.hooks = {}\n }\n\n if (!global.access) {\n global.access = {}\n }\n\n if (!global.admin) {\n global.admin = {}\n }\n\n if (!global.access.read) {\n global.access.read = defaultAccess\n }\n\n if (!global.access.update) {\n global.access.update = defaultAccess\n }\n\n if (!global.hooks.beforeValidate) {\n global.hooks.beforeValidate = []\n }\n\n if (!global.hooks.beforeChange) {\n global.hooks.beforeChange = []\n }\n\n if (!global.hooks.afterChange) {\n global.hooks.afterChange = []\n }\n\n if (!global.hooks.beforeRead) {\n global.hooks.beforeRead = []\n }\n\n if (!global.hooks.afterRead) {\n global.hooks.afterRead = []\n }\n\n // Sanitize fields\n const validRelationships = _validRelationships ?? config.collections?.map((c) => c.slug) ?? []\n\n global.fields = await sanitizeFields({\n config,\n fields: global.fields,\n globalConfig: global,\n parentIsLocalized: false,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n if (global.endpoints !== false) {\n if (!global.endpoints) {\n global.endpoints = []\n }\n\n for (const endpoint of defaultGlobalEndpoints) {\n global.endpoints.push(endpoint)\n }\n }\n\n global.versions = global.versions ?? true\n\n if (global.versions) {\n if (global.versions === true) {\n global.versions = {\n drafts: false,\n max: 100,\n }\n }\n\n global.versions.max = typeof global.versions.max === 'number' ? global.versions.max : 100\n\n if (global.versions.drafts) {\n if (global.versions.drafts === true) {\n global.versions.drafts = {\n autosave: false,\n validate: false,\n }\n }\n\n const hasLocalizedFields = traverseForLocalizedFields(global.fields)\n\n // Auto-enable per-locale status when localization is configured and the global has localized fields.\n ;(global.versions.drafts as SanitizedDrafts).localizeStatus = !!(\n config.localization && hasLocalizedFields\n )\n\n if (global.versions.drafts.autosave === true) {\n global.versions.drafts.autosave = {\n interval: versionDefaults.autosaveInterval,\n }\n }\n\n if (global.versions.drafts.validate === undefined) {\n global.versions.drafts.validate = false\n }\n\n global.fields = mergeBaseFields(\n global.fields,\n baseVersionFields({\n localized: (global.versions.drafts as SanitizedDrafts).localizeStatus ?? false,\n }),\n )\n }\n }\n\n if (!global.custom) {\n global.custom = {}\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n let hasUpdatedAt: boolean | null = null\n let hasCreatedAt: boolean | null = null\n global.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') {\n hasUpdatedAt = true\n }\n if (field.name === 'createdAt') {\n hasCreatedAt = true\n }\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n global.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n if (!hasCreatedAt) {\n global.fields.push({\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:createdAt'),\n })\n }\n\n ;(global as SanitizedGlobalConfig).flattenedFields = flattenAllFields({ fields: global.fields })\n\n return global as SanitizedGlobalConfig\n}\n"],"names":["defaultAccess","sanitizeFields","fieldAffectsData","mergeBaseFields","flattenAllFields","toWords","traverseForLocalizedFields","baseVersionFields","versionDefaults","defaultGlobalEndpoints","sanitizeGlobal","config","global","richTextSanitizationPromises","_validRelationships","_sanitized","label","slug","endpoints","hooks","access","admin","read","update","beforeValidate","beforeChange","afterChange","beforeRead","afterRead","validRelationships","collections","map","c","fields","globalConfig","parentIsLocalized","endpoint","push","versions","drafts","max","autosave","validate","hasLocalizedFields","localizeStatus","localization","interval","autosaveInterval","undefined","localized","custom","hasUpdatedAt","hasCreatedAt","some","field","name","type","disabled","bulkEdit","hidden","t","flattenedFields"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/globals/config/sanitize.ts"],"sourcesContent":["import type { Config } from '../../config/types.js'\nimport type { SanitizedDrafts } from '../../versions/types.js'\nimport type { GlobalConfig, SanitizedGlobalConfig } from './types.js'\n\nimport { defaultAccess } from '../../auth/defaultAccess.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { mergeBaseFields } from '../../fields/mergeBaseFields.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { toWords } from '../../utilities/formatLabels.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { baseVersionFields } from '../../versions/baseFields.js'\nimport { versionDefaults } from '../../versions/defaults.js'\nimport { defaultGlobalEndpoints } from '../endpoints/index.js'\nexport const sanitizeGlobal = (\n config: Config,\n global: GlobalConfig,\n _validRelationships?: string[],\n): SanitizedGlobalConfig => {\n if (global._sanitized) {\n return global as SanitizedGlobalConfig\n }\n\n global._sanitized = true\n\n global.label = global.label || toWords(global.slug)\n\n // /////////////////////////////////\n // Ensure that collection has required object structure\n // /////////////////////////////////\n\n global.endpoints = global.endpoints ?? []\n\n if (!global.hooks) {\n global.hooks = {}\n }\n\n if (!global.access) {\n global.access = {}\n }\n\n if (!global.admin) {\n global.admin = {}\n }\n\n if (!global.access.read) {\n global.access.read = defaultAccess\n }\n\n if (!global.access.update) {\n global.access.update = defaultAccess\n }\n\n if (!global.hooks.beforeValidate) {\n global.hooks.beforeValidate = []\n }\n\n if (!global.hooks.beforeChange) {\n global.hooks.beforeChange = []\n }\n\n if (!global.hooks.afterChange) {\n global.hooks.afterChange = []\n }\n\n if (!global.hooks.beforeRead) {\n global.hooks.beforeRead = []\n }\n\n if (!global.hooks.afterRead) {\n global.hooks.afterRead = []\n }\n\n // Sanitize fields\n const validRelationships = _validRelationships ?? config.collections?.map((c) => c.slug) ?? []\n\n global.fields = sanitizeFields({\n config,\n fields: global.fields,\n globalConfig: global,\n parentIsLocalized: false,\n validRelationships,\n })\n\n if (global.endpoints !== false) {\n if (!global.endpoints) {\n global.endpoints = []\n }\n\n for (const endpoint of defaultGlobalEndpoints) {\n global.endpoints.push(endpoint)\n }\n }\n\n global.versions = global.versions ?? true\n\n if (global.versions) {\n if (global.versions === true) {\n global.versions = {\n drafts: false,\n max: 100,\n }\n }\n\n global.versions.max = typeof global.versions.max === 'number' ? global.versions.max : 100\n\n if (global.versions.drafts) {\n if (global.versions.drafts === true) {\n global.versions.drafts = {\n autosave: false,\n validate: false,\n }\n }\n\n const hasLocalizedFields = traverseForLocalizedFields(global.fields)\n\n // Auto-enable per-locale status when localization is configured and the global has localized fields.\n ;(global.versions.drafts as SanitizedDrafts).localizeStatus = !!(\n config.localization && hasLocalizedFields\n )\n\n if (global.versions.drafts.autosave === true) {\n global.versions.drafts.autosave = {\n interval: versionDefaults.autosaveInterval,\n }\n }\n\n if (global.versions.drafts.validate === undefined) {\n global.versions.drafts.validate = false\n }\n\n global.fields = mergeBaseFields(\n global.fields,\n baseVersionFields({\n localized: (global.versions.drafts as SanitizedDrafts).localizeStatus ?? false,\n }),\n )\n }\n }\n\n if (!global.custom) {\n global.custom = {}\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n let hasUpdatedAt: boolean | null = null\n let hasCreatedAt: boolean | null = null\n global.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') {\n hasUpdatedAt = true\n }\n if (field.name === 'createdAt') {\n hasCreatedAt = true\n }\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n global.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n if (!hasCreatedAt) {\n global.fields.push({\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:createdAt'),\n })\n }\n\n ;(global as SanitizedGlobalConfig).flattenedFields = flattenAllFields({ fields: global.fields })\n\n return global as SanitizedGlobalConfig\n}\n"],"names":["defaultAccess","sanitizeFields","fieldAffectsData","mergeBaseFields","flattenAllFields","toWords","traverseForLocalizedFields","baseVersionFields","versionDefaults","defaultGlobalEndpoints","sanitizeGlobal","config","global","_validRelationships","_sanitized","label","slug","endpoints","hooks","access","admin","read","update","beforeValidate","beforeChange","afterChange","beforeRead","afterRead","validRelationships","collections","map","c","fields","globalConfig","parentIsLocalized","endpoint","push","versions","drafts","max","autosave","validate","hasLocalizedFields","localizeStatus","localization","interval","autosaveInterval","undefined","localized","custom","hasUpdatedAt","hasCreatedAt","some","field","name","type","disabled","bulkEdit","hidden","t","flattenedFields"],"mappings":"AAIA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,gBAAgB,QAAQ,sCAAqC;AACtE,SAASC,OAAO,QAAQ,kCAAiC;AACzD,SAASC,0BAA0B,QAAQ,gDAA+C;AAC1F,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SAASC,sBAAsB,QAAQ,wBAAuB;AAC9D,OAAO,MAAMC,iBAAiB,CAC5BC,QACAC,QACAC;IAEA,IAAID,OAAOE,UAAU,EAAE;QACrB,OAAOF;IACT;IAEAA,OAAOE,UAAU,GAAG;IAEpBF,OAAOG,KAAK,GAAGH,OAAOG,KAAK,IAAIV,QAAQO,OAAOI,IAAI;IAElD,oCAAoC;IACpC,uDAAuD;IACvD,oCAAoC;IAEpCJ,OAAOK,SAAS,GAAGL,OAAOK,SAAS,IAAI,EAAE;IAEzC,IAAI,CAACL,OAAOM,KAAK,EAAE;QACjBN,OAAOM,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACN,OAAOO,MAAM,EAAE;QAClBP,OAAOO,MAAM,GAAG,CAAC;IACnB;IAEA,IAAI,CAACP,OAAOQ,KAAK,EAAE;QACjBR,OAAOQ,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACR,OAAOO,MAAM,CAACE,IAAI,EAAE;QACvBT,OAAOO,MAAM,CAACE,IAAI,GAAGrB;IACvB;IAEA,IAAI,CAACY,OAAOO,MAAM,CAACG,MAAM,EAAE;QACzBV,OAAOO,MAAM,CAACG,MAAM,GAAGtB;IACzB;IAEA,IAAI,CAACY,OAAOM,KAAK,CAACK,cAAc,EAAE;QAChCX,OAAOM,KAAK,CAACK,cAAc,GAAG,EAAE;IAClC;IAEA,IAAI,CAACX,OAAOM,KAAK,CAACM,YAAY,EAAE;QAC9BZ,OAAOM,KAAK,CAACM,YAAY,GAAG,EAAE;IAChC;IAEA,IAAI,CAACZ,OAAOM,KAAK,CAACO,WAAW,EAAE;QAC7Bb,OAAOM,KAAK,CAACO,WAAW,GAAG,EAAE;IAC/B;IAEA,IAAI,CAACb,OAAOM,KAAK,CAACQ,UAAU,EAAE;QAC5Bd,OAAOM,KAAK,CAACQ,UAAU,GAAG,EAAE;IAC9B;IAEA,IAAI,CAACd,OAAOM,KAAK,CAACS,SAAS,EAAE;QAC3Bf,OAAOM,KAAK,CAACS,SAAS,GAAG,EAAE;IAC7B;IAEA,kBAAkB;IAClB,MAAMC,qBAAqBf,uBAAuBF,OAAOkB,WAAW,EAAEC,IAAI,CAACC,IAAMA,EAAEf,IAAI,KAAK,EAAE;IAE9FJ,OAAOoB,MAAM,GAAG/B,eAAe;QAC7BU;QACAqB,QAAQpB,OAAOoB,MAAM;QACrBC,cAAcrB;QACdsB,mBAAmB;QACnBN;IACF;IAEA,IAAIhB,OAAOK,SAAS,KAAK,OAAO;QAC9B,IAAI,CAACL,OAAOK,SAAS,EAAE;YACrBL,OAAOK,SAAS,GAAG,EAAE;QACvB;QAEA,KAAK,MAAMkB,YAAY1B,uBAAwB;YAC7CG,OAAOK,SAAS,CAACmB,IAAI,CAACD;QACxB;IACF;IAEAvB,OAAOyB,QAAQ,GAAGzB,OAAOyB,QAAQ,IAAI;IAErC,IAAIzB,OAAOyB,QAAQ,EAAE;QACnB,IAAIzB,OAAOyB,QAAQ,KAAK,MAAM;YAC5BzB,OAAOyB,QAAQ,GAAG;gBAChBC,QAAQ;gBACRC,KAAK;YACP;QACF;QAEA3B,OAAOyB,QAAQ,CAACE,GAAG,GAAG,OAAO3B,OAAOyB,QAAQ,CAACE,GAAG,KAAK,WAAW3B,OAAOyB,QAAQ,CAACE,GAAG,GAAG;QAEtF,IAAI3B,OAAOyB,QAAQ,CAACC,MAAM,EAAE;YAC1B,IAAI1B,OAAOyB,QAAQ,CAACC,MAAM,KAAK,MAAM;gBACnC1B,OAAOyB,QAAQ,CAACC,MAAM,GAAG;oBACvBE,UAAU;oBACVC,UAAU;gBACZ;YACF;YAEA,MAAMC,qBAAqBpC,2BAA2BM,OAAOoB,MAAM;YAGjEpB,OAAOyB,QAAQ,CAACC,MAAM,CAAqBK,cAAc,GAAG,CAAC,CAC7DhC,CAAAA,OAAOiC,YAAY,IAAIF,kBAAiB;YAG1C,IAAI9B,OAAOyB,QAAQ,CAACC,MAAM,CAACE,QAAQ,KAAK,MAAM;gBAC5C5B,OAAOyB,QAAQ,CAACC,MAAM,CAACE,QAAQ,GAAG;oBAChCK,UAAUrC,gBAAgBsC,gBAAgB;gBAC5C;YACF;YAEA,IAAIlC,OAAOyB,QAAQ,CAACC,MAAM,CAACG,QAAQ,KAAKM,WAAW;gBACjDnC,OAAOyB,QAAQ,CAACC,MAAM,CAACG,QAAQ,GAAG;YACpC;YAEA7B,OAAOoB,MAAM,GAAG7B,gBACdS,OAAOoB,MAAM,EACbzB,kBAAkB;gBAChByC,WAAW,AAACpC,OAAOyB,QAAQ,CAACC,MAAM,CAAqBK,cAAc,IAAI;YAC3E;QAEJ;IACF;IAEA,IAAI,CAAC/B,OAAOqC,MAAM,EAAE;QAClBrC,OAAOqC,MAAM,GAAG,CAAC;IACnB;IAEA,oCAAoC;IACpC,kBAAkB;IAClB,oCAAoC;IACpC,IAAIC,eAA+B;IACnC,IAAIC,eAA+B;IACnCvC,OAAOoB,MAAM,CAACoB,IAAI,CAAC,CAACC;QAClB,IAAInD,iBAAiBmD,QAAQ;YAC3B,IAAIA,MAAMC,IAAI,KAAK,aAAa;gBAC9BJ,eAAe;YACjB;YACA,IAAIG,MAAMC,IAAI,KAAK,aAAa;gBAC9BH,eAAe;YACjB;QACF;QACA,OAAOA,gBAAgBD;IACzB;IACA,IAAI,CAACA,cAAc;QACjBtC,OAAOoB,MAAM,CAACI,IAAI,CAAC;YACjBkB,MAAM;YACNC,MAAM;YACNnC,OAAO;gBACLoC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA3C,OAAO,CAAC,EAAE4C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;IACA,IAAI,CAACR,cAAc;QACjBvC,OAAOoB,MAAM,CAACI,IAAI,CAAC;YACjBkB,MAAM;YACNC,MAAM;YACNnC,OAAO;gBACLoC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA3C,OAAO,CAAC,EAAE4C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;;IAEE/C,OAAiCgD,eAAe,GAAGxD,iBAAiB;QAAE4B,QAAQpB,OAAOoB,MAAM;IAAC;IAE9F,OAAOpB;AACT,EAAC"}
@@ -5,27 +5,27 @@ const minimalConfig = {
5
5
  globals: []
6
6
  };
7
7
  describe('sanitizeGlobal — versions default', ()=>{
8
- it('should default versions to true when not specified', async ()=>{
8
+ it('should default versions to true when not specified', ()=>{
9
9
  const global = {
10
10
  slug: 'header',
11
11
  fields: []
12
12
  };
13
- const result = await sanitizeGlobal(minimalConfig, global);
13
+ const result = sanitizeGlobal(minimalConfig, global);
14
14
  expect(result.versions).toEqual({
15
15
  drafts: false,
16
16
  max: 100
17
17
  });
18
18
  });
19
- it('should preserve explicit versions: false', async ()=>{
19
+ it('should preserve explicit versions: false', ()=>{
20
20
  const global = {
21
21
  slug: 'header',
22
22
  fields: [],
23
23
  versions: false
24
24
  };
25
- const result = await sanitizeGlobal(minimalConfig, global);
25
+ const result = sanitizeGlobal(minimalConfig, global);
26
26
  expect(result.versions).toBe(false);
27
27
  });
28
- it('should preserve explicit versions object config', async ()=>{
28
+ it('should preserve explicit versions object config', ()=>{
29
29
  const global = {
30
30
  slug: 'header',
31
31
  fields: [],
@@ -34,7 +34,7 @@ describe('sanitizeGlobal — versions default', ()=>{
34
34
  max: 50
35
35
  }
36
36
  };
37
- const result = await sanitizeGlobal(minimalConfig, global);
37
+ const result = sanitizeGlobal(minimalConfig, global);
38
38
  expect(result.versions.max).toBe(50);
39
39
  expect(result.versions.drafts).toBeTruthy();
40
40
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/config/sanitize.spec.ts"],"sourcesContent":["import type { GlobalConfig } from './types.js'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { sanitizeGlobal } from './sanitize.js'\n\nconst minimalConfig = {\n collections: [],\n globals: [],\n} as any\n\ndescribe('sanitizeGlobal — versions default', () => {\n it('should default versions to true when not specified', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toEqual({ drafts: false, max: 100 })\n })\n\n it('should preserve explicit versions: false', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: false,\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toBe(false)\n })\n\n it('should preserve explicit versions object config', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: { drafts: true, max: 50 },\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect((result.versions as any).max).toBe(50)\n expect((result.versions as any).drafts).toBeTruthy()\n })\n})\n"],"names":["describe","expect","it","sanitizeGlobal","minimalConfig","collections","globals","global","slug","fields","result","versions","toEqual","drafts","max","toBe","toBeTruthy"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,cAAc,QAAQ,gBAAe;AAE9C,MAAMC,gBAAgB;IACpBC,aAAa,EAAE;IACfC,SAAS,EAAE;AACb;AAEAN,SAAS,qCAAqC;IAC5CE,GAAG,sDAAsD;QACvD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;QACZ;QAEA,MAAMC,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAOS,OAAOC,QAAQ,EAAEC,OAAO,CAAC;YAAEC,QAAQ;YAAOC,KAAK;QAAI;IAC5D;IAEAZ,GAAG,4CAA4C;QAC7C,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;QACZ;QAEA,MAAMD,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAOS,OAAOC,QAAQ,EAAEI,IAAI,CAAC;IAC/B;IAEAb,GAAG,mDAAmD;QACpD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;gBAAEE,QAAQ;gBAAMC,KAAK;YAAG;QACpC;QAEA,MAAMJ,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAO,AAACS,OAAOC,QAAQ,CAASG,GAAG,EAAEC,IAAI,CAAC;QAC1Cd,OAAO,AAACS,OAAOC,QAAQ,CAASE,MAAM,EAAEG,UAAU;IACpD;AACF"}
1
+ {"version":3,"sources":["../../../src/globals/config/sanitize.spec.ts"],"sourcesContent":["import type { GlobalConfig } from './types.js'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { sanitizeGlobal } from './sanitize.js'\n\nconst minimalConfig = {\n collections: [],\n globals: [],\n} as any\n\ndescribe('sanitizeGlobal — versions default', () => {\n it('should default versions to true when not specified', () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n }\n\n const result = sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toEqual({ drafts: false, max: 100 })\n })\n\n it('should preserve explicit versions: false', () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: false,\n }\n\n const result = sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toBe(false)\n })\n\n it('should preserve explicit versions object config', () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: { drafts: true, max: 50 },\n }\n\n const result = sanitizeGlobal(minimalConfig, global)\n\n expect((result.versions as any).max).toBe(50)\n expect((result.versions as any).drafts).toBeTruthy()\n })\n})\n"],"names":["describe","expect","it","sanitizeGlobal","minimalConfig","collections","globals","global","slug","fields","result","versions","toEqual","drafts","max","toBe","toBeTruthy"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,cAAc,QAAQ,gBAAe;AAE9C,MAAMC,gBAAgB;IACpBC,aAAa,EAAE;IACfC,SAAS,EAAE;AACb;AAEAN,SAAS,qCAAqC;IAC5CE,GAAG,sDAAsD;QACvD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;QACZ;QAEA,MAAMC,SAASP,eAAeC,eAAeG;QAE7CN,OAAOS,OAAOC,QAAQ,EAAEC,OAAO,CAAC;YAAEC,QAAQ;YAAOC,KAAK;QAAI;IAC5D;IAEAZ,GAAG,4CAA4C;QAC7C,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;QACZ;QAEA,MAAMD,SAASP,eAAeC,eAAeG;QAE7CN,OAAOS,OAAOC,QAAQ,EAAEI,IAAI,CAAC;IAC/B;IAEAb,GAAG,mDAAmD;QACpD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;gBAAEE,QAAQ;gBAAMC,KAAK;YAAG;QACpC;QAEA,MAAMJ,SAASP,eAAeC,eAAeG;QAE7CN,OAAO,AAACS,OAAOC,QAAQ,CAASG,GAAG,EAAEC,IAAI,CAAC;QAC1Cd,OAAO,AAACS,OAAOC,QAAQ,CAASE,MAAM,EAAEG,UAAU;IACpD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAKjE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAGD,eAAO,MAAM,4BAA4B,GAAU,KAAK,SAAS,UAAU,QACnE,SAAS,KACd,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAoE/B,CAAA"}
1
+ {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAKjE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAGD,eAAO,MAAM,4BAA4B,GAAU,KAAK,SAAS,UAAU,QACnE,SAAS,KACd,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAqE/B,CAAA"}
@@ -51,6 +51,7 @@ export const countGlobalVersionsOperation = async (args)=>{
51
51
  });
52
52
  const result = await payload.db.countGlobalVersions({
53
53
  global: global.slug,
54
+ locale: req?.locale || undefined,
54
55
  req,
55
56
  where: fullWhere
56
57
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/operations/countGlobalVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport {\n buildVersionGlobalFields,\n type GlobalSlug,\n type SanitizedGlobalConfig,\n} from '../../index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n disableErrors?: boolean\n global: SanitizedGlobalConfig\n overrideAccess?: boolean\n req?: PayloadRequest\n where?: Where\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const countGlobalVersionsOperation = async <TSlug extends GlobalSlug>(\n args: Arguments,\n): Promise<{ totalDocs: number }> => {\n try {\n const { disableErrors, global, overrideAccess, where } = args\n const req = args.req!\n const { payload } = req\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (global.hooks?.beforeOperation?.length) {\n for (const hook of global.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: req.context,\n global,\n operation: 'countVersions',\n overrideAccess,\n req,\n })) || args\n }\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, global.access.readVersions)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n totalDocs: 0,\n }\n }\n }\n\n const fullWhere = combineQueries(where!, accessResult!)\n\n const versionFields = buildVersionGlobalFields(payload.config, global, true)\n\n await validateQueryPaths({\n globalConfig: global,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n const result = await payload.db.countGlobalVersions({\n global: global.slug,\n req,\n where: fullWhere,\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":["executeAccess","combineQueries","validateQueryPaths","buildVersionGlobalFields","killTransaction","countGlobalVersionsOperation","args","disableErrors","global","overrideAccess","where","req","payload","hooks","beforeOperation","length","hook","context","operation","accessResult","access","readVersions","totalDocs","fullWhere","versionFields","config","globalConfig","result","db","countGlobalVersions","slug","error"],"mappings":"AAGA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SACEC,wBAAwB,QAGnB,iBAAgB;AACvB,SAASC,eAAe,QAAQ,qCAAoC;AAUpE,6DAA6D;AAC7D,OAAO,MAAMC,+BAA+B,OAC1CC;IAEA,IAAI;QACF,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAEC,cAAc,EAAEC,KAAK,EAAE,GAAGJ;QACzD,MAAMK,MAAML,KAAKK,GAAG;QACpB,MAAM,EAAEC,OAAO,EAAE,GAAGD;QAEpB,wCAAwC;QACxC,2BAA2B;QAC3B,wCAAwC;QAExC,IAAIH,OAAOK,KAAK,EAAEC,iBAAiBC,QAAQ;YACzC,KAAK,MAAMC,QAAQR,OAAOK,KAAK,CAACC,eAAe,CAAE;gBAC/CR,OACE,AAAC,MAAMU,KAAK;oBACVV;oBACAW,SAASN,IAAIM,OAAO;oBACpBT;oBACAU,WAAW;oBACXT;oBACAE;gBACF,MAAOL;YACX;QACF;QAEA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIa;QAEJ,IAAI,CAACV,gBAAgB;YACnBU,eAAe,MAAMnB,cAAc;gBAAEO;gBAAeI;YAAI,GAAGH,OAAOY,MAAM,CAACC,YAAY;YAErF,yEAAyE;YACzE,IAAIF,iBAAiB,OAAO;gBAC1B,OAAO;oBACLG,WAAW;gBACb;YACF;QACF;QAEA,MAAMC,YAAYtB,eAAeS,OAAQS;QAEzC,MAAMK,gBAAgBrB,yBAAyBS,QAAQa,MAAM,EAAEjB,QAAQ;QAEvE,MAAMN,mBAAmB;YACvBwB,cAAclB;YACdC,gBAAgBA;YAChBE;YACAa;YACAd,OAAOA;QACT;QAEA,MAAMiB,SAAS,MAAMf,QAAQgB,EAAE,CAACC,mBAAmB,CAAC;YAClDrB,QAAQA,OAAOsB,IAAI;YACnBnB;YACAD,OAAOa;QACT;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,OAAOI;IACT,EAAE,OAAOI,OAAgB;QACvB,MAAM3B,gBAAgBE,KAAKK,GAAG;QAC9B,MAAMoB;IACR;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/globals/operations/countGlobalVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport {\n buildVersionGlobalFields,\n type GlobalSlug,\n type SanitizedGlobalConfig,\n} from '../../index.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\nexport type Arguments = {\n disableErrors?: boolean\n global: SanitizedGlobalConfig\n overrideAccess?: boolean\n req?: PayloadRequest\n where?: Where\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const countGlobalVersionsOperation = async <TSlug extends GlobalSlug>(\n args: Arguments,\n): Promise<{ totalDocs: number }> => {\n try {\n const { disableErrors, global, overrideAccess, where } = args\n const req = args.req!\n const { payload } = req\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (global.hooks?.beforeOperation?.length) {\n for (const hook of global.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: req.context,\n global,\n operation: 'countVersions',\n overrideAccess,\n req,\n })) || args\n }\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, global.access.readVersions)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n totalDocs: 0,\n }\n }\n }\n\n const fullWhere = combineQueries(where!, accessResult!)\n\n const versionFields = buildVersionGlobalFields(payload.config, global, true)\n\n await validateQueryPaths({\n globalConfig: global,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n const result = await payload.db.countGlobalVersions({\n global: global.slug,\n locale: req?.locale || undefined,\n req,\n where: fullWhere,\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":["executeAccess","combineQueries","validateQueryPaths","buildVersionGlobalFields","killTransaction","countGlobalVersionsOperation","args","disableErrors","global","overrideAccess","where","req","payload","hooks","beforeOperation","length","hook","context","operation","accessResult","access","readVersions","totalDocs","fullWhere","versionFields","config","globalConfig","result","db","countGlobalVersions","slug","locale","undefined","error"],"mappings":"AAGA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SACEC,wBAAwB,QAGnB,iBAAgB;AACvB,SAASC,eAAe,QAAQ,qCAAoC;AAUpE,6DAA6D;AAC7D,OAAO,MAAMC,+BAA+B,OAC1CC;IAEA,IAAI;QACF,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAEC,cAAc,EAAEC,KAAK,EAAE,GAAGJ;QACzD,MAAMK,MAAML,KAAKK,GAAG;QACpB,MAAM,EAAEC,OAAO,EAAE,GAAGD;QAEpB,wCAAwC;QACxC,2BAA2B;QAC3B,wCAAwC;QAExC,IAAIH,OAAOK,KAAK,EAAEC,iBAAiBC,QAAQ;YACzC,KAAK,MAAMC,QAAQR,OAAOK,KAAK,CAACC,eAAe,CAAE;gBAC/CR,OACE,AAAC,MAAMU,KAAK;oBACVV;oBACAW,SAASN,IAAIM,OAAO;oBACpBT;oBACAU,WAAW;oBACXT;oBACAE;gBACF,MAAOL;YACX;QACF;QAEA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIa;QAEJ,IAAI,CAACV,gBAAgB;YACnBU,eAAe,MAAMnB,cAAc;gBAAEO;gBAAeI;YAAI,GAAGH,OAAOY,MAAM,CAACC,YAAY;YAErF,yEAAyE;YACzE,IAAIF,iBAAiB,OAAO;gBAC1B,OAAO;oBACLG,WAAW;gBACb;YACF;QACF;QAEA,MAAMC,YAAYtB,eAAeS,OAAQS;QAEzC,MAAMK,gBAAgBrB,yBAAyBS,QAAQa,MAAM,EAAEjB,QAAQ;QAEvE,MAAMN,mBAAmB;YACvBwB,cAAclB;YACdC,gBAAgBA;YAChBE;YACAa;YACAd,OAAOA;QACT;QAEA,MAAMiB,SAAS,MAAMf,QAAQgB,EAAE,CAACC,mBAAmB,CAAC;YAClDrB,QAAQA,OAAOsB,IAAI;YACnBC,QAAQpB,KAAKoB,UAAUC;YACvBrB;YACAD,OAAOa;QACT;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,OAAOI;IACT,EAAE,OAAOM,OAAgB;QACvB,MAAM7B,gBAAgBE,KAAKK,GAAG;QAC9B,MAAMsB;IACR;AACF,EAAC"}