payload 3.0.0-alpha.41 → 3.0.0-alpha.43

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 (599) hide show
  1. package/auth.js +1 -1
  2. package/config.js +1 -1
  3. package/database.js +1 -1
  4. package/dist/admin/RichText.js +1 -1
  5. package/dist/admin/RichText.js.map +1 -0
  6. package/dist/admin/elements/Cell.js +1 -1
  7. package/dist/admin/elements/Cell.js.map +1 -0
  8. package/dist/admin/elements/DatePicker.js +1 -1
  9. package/dist/admin/elements/DatePicker.js.map +1 -0
  10. package/dist/admin/elements/PreviewButton.js +1 -1
  11. package/dist/admin/elements/PreviewButton.js.map +1 -0
  12. package/dist/admin/elements/PublishButton.js +1 -1
  13. package/dist/admin/elements/PublishButton.js.map +1 -0
  14. package/dist/admin/elements/SaveButton.js +1 -1
  15. package/dist/admin/elements/SaveButton.js.map +1 -0
  16. package/dist/admin/elements/SaveDraftButton.js +1 -1
  17. package/dist/admin/elements/SaveDraftButton.js.map +1 -0
  18. package/dist/admin/elements/Tab.js +1 -1
  19. package/dist/admin/elements/Tab.js.map +1 -0
  20. package/dist/admin/forms/Error.js +1 -1
  21. package/dist/admin/forms/Error.js.map +1 -0
  22. package/dist/admin/forms/FieldDescription.js +1 -1
  23. package/dist/admin/forms/FieldDescription.js.map +1 -0
  24. package/dist/admin/forms/FieldTypes.js +1 -1
  25. package/dist/admin/forms/FieldTypes.js.map +1 -0
  26. package/dist/admin/forms/Form.js +1 -1
  27. package/dist/admin/forms/Form.js.map +1 -0
  28. package/dist/admin/forms/Label.js +1 -1
  29. package/dist/admin/forms/Label.js.map +1 -0
  30. package/dist/admin/forms/RowLabel.js +1 -1
  31. package/dist/admin/forms/RowLabel.js.map +1 -0
  32. package/dist/admin/types.js +1 -1
  33. package/dist/admin/types.js.map +1 -0
  34. package/dist/admin/views/types.js +1 -1
  35. package/dist/admin/views/types.js.map +1 -0
  36. package/dist/assets/assets.d.js +1 -1
  37. package/dist/assets/assets.d.js.map +1 -0
  38. package/dist/auth/baseFields/accountLock.js +1 -1
  39. package/dist/auth/baseFields/accountLock.js.map +1 -0
  40. package/dist/auth/baseFields/apiKey.js +1 -1
  41. package/dist/auth/baseFields/apiKey.js.map +1 -0
  42. package/dist/auth/baseFields/auth.js +1 -1
  43. package/dist/auth/baseFields/auth.js.map +1 -0
  44. package/dist/auth/baseFields/verification.js +1 -1
  45. package/dist/auth/baseFields/verification.js.map +1 -0
  46. package/dist/auth/cookies.js +1 -1
  47. package/dist/auth/cookies.js.map +1 -0
  48. package/dist/auth/crypto.js +1 -1
  49. package/dist/auth/crypto.js.map +1 -0
  50. package/dist/auth/defaultAccess.js +1 -1
  51. package/dist/auth/defaultAccess.js.map +1 -0
  52. package/dist/auth/defaultUser.js +1 -1
  53. package/dist/auth/defaultUser.js.map +1 -0
  54. package/dist/auth/executeAccess.js +1 -1
  55. package/dist/auth/executeAccess.js.map +1 -0
  56. package/dist/auth/extractJWT.js +1 -1
  57. package/dist/auth/extractJWT.js.map +1 -0
  58. package/dist/auth/getAccessResults.js +1 -1
  59. package/dist/auth/getAccessResults.js.map +1 -0
  60. package/dist/auth/getAuthenticatedUser.js +1 -1
  61. package/dist/auth/getAuthenticatedUser.js.map +1 -0
  62. package/dist/auth/getFieldsToSign.js +1 -1
  63. package/dist/auth/getFieldsToSign.js.map +1 -0
  64. package/dist/auth/index.js +1 -1
  65. package/dist/auth/index.js.map +1 -0
  66. package/dist/auth/isLocked.js +1 -1
  67. package/dist/auth/isLocked.js.map +1 -0
  68. package/dist/auth/operations/access.js +1 -1
  69. package/dist/auth/operations/access.js.map +1 -0
  70. package/dist/auth/operations/forgotPassword.js +1 -1
  71. package/dist/auth/operations/forgotPassword.js.map +1 -0
  72. package/dist/auth/operations/init.js +1 -1
  73. package/dist/auth/operations/init.js.map +1 -0
  74. package/dist/auth/operations/local/forgotPassword.js +1 -1
  75. package/dist/auth/operations/local/forgotPassword.js.map +1 -0
  76. package/dist/auth/operations/local/index.js +1 -1
  77. package/dist/auth/operations/local/index.js.map +1 -0
  78. package/dist/auth/operations/local/login.js +1 -1
  79. package/dist/auth/operations/local/login.js.map +1 -0
  80. package/dist/auth/operations/local/resetPassword.js +1 -1
  81. package/dist/auth/operations/local/resetPassword.js.map +1 -0
  82. package/dist/auth/operations/local/unlock.js +1 -1
  83. package/dist/auth/operations/local/unlock.js.map +1 -0
  84. package/dist/auth/operations/local/verifyEmail.js +1 -1
  85. package/dist/auth/operations/local/verifyEmail.js.map +1 -0
  86. package/dist/auth/operations/login.js +1 -1
  87. package/dist/auth/operations/login.js.map +1 -0
  88. package/dist/auth/operations/logout.js +1 -1
  89. package/dist/auth/operations/logout.js.map +1 -0
  90. package/dist/auth/operations/me.js +1 -1
  91. package/dist/auth/operations/me.js.map +1 -0
  92. package/dist/auth/operations/refresh.js +1 -1
  93. package/dist/auth/operations/refresh.js.map +1 -0
  94. package/dist/auth/operations/registerFirstUser.js +1 -1
  95. package/dist/auth/operations/registerFirstUser.js.map +1 -0
  96. package/dist/auth/operations/resetPassword.js +1 -1
  97. package/dist/auth/operations/resetPassword.js.map +1 -0
  98. package/dist/auth/operations/unlock.js +1 -1
  99. package/dist/auth/operations/unlock.js.map +1 -0
  100. package/dist/auth/operations/verifyEmail.js +1 -1
  101. package/dist/auth/operations/verifyEmail.js.map +1 -0
  102. package/dist/auth/sendVerificationEmail.js +1 -1
  103. package/dist/auth/sendVerificationEmail.js.map +1 -0
  104. package/dist/auth/strategies/apiKey.js +1 -1
  105. package/dist/auth/strategies/apiKey.js.map +1 -0
  106. package/dist/auth/strategies/jwt.js +1 -1
  107. package/dist/auth/strategies/jwt.js.map +1 -0
  108. package/dist/auth/strategies/local/authenticate.js +1 -1
  109. package/dist/auth/strategies/local/authenticate.js.map +1 -0
  110. package/dist/auth/strategies/local/generatePasswordSaltHash.js +1 -1
  111. package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -0
  112. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  113. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -0
  114. package/dist/auth/strategies/local/register.js +1 -1
  115. package/dist/auth/strategies/local/register.js.map +1 -0
  116. package/dist/auth/strategies/local/resetLoginAttempts.js +1 -1
  117. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -0
  118. package/dist/auth/types.js +1 -1
  119. package/dist/auth/types.js.map +1 -0
  120. package/dist/bin/generateTypes.js +1 -1
  121. package/dist/bin/generateTypes.js.map +1 -0
  122. package/dist/bin/index.js +1 -1
  123. package/dist/bin/index.js.map +1 -0
  124. package/dist/bin/loadEnv.js +1 -1
  125. package/dist/bin/loadEnv.js.map +1 -0
  126. package/dist/bin/migrate.js +1 -1
  127. package/dist/bin/migrate.js.map +1 -0
  128. package/dist/bin/register/clientExtensions.js +1 -1
  129. package/dist/bin/register/clientExtensions.js.map +1 -0
  130. package/dist/bin/register/index.js +1 -1
  131. package/dist/bin/register/index.js.map +1 -0
  132. package/dist/bin/register/read-default-tsconfig.js +1 -1
  133. package/dist/bin/register/read-default-tsconfig.js.map +1 -0
  134. package/dist/bin/register/register.js +1 -1
  135. package/dist/bin/register/register.js.map +1 -0
  136. package/dist/collections/config/build.js +1 -1
  137. package/dist/collections/config/build.js.map +1 -0
  138. package/dist/collections/config/defaults.js +1 -1
  139. package/dist/collections/config/defaults.js.map +1 -0
  140. package/dist/collections/config/sanitize.js +1 -1
  141. package/dist/collections/config/sanitize.js.map +1 -0
  142. package/dist/collections/config/schema.js +1 -1
  143. package/dist/collections/config/schema.js.map +1 -0
  144. package/dist/collections/config/types.js +1 -1
  145. package/dist/collections/config/types.js.map +1 -0
  146. package/dist/collections/dataloader.js +1 -1
  147. package/dist/collections/dataloader.js.map +1 -0
  148. package/dist/collections/operations/create.js +1 -1
  149. package/dist/collections/operations/create.js.map +1 -0
  150. package/dist/collections/operations/delete.js +1 -1
  151. package/dist/collections/operations/delete.js.map +1 -0
  152. package/dist/collections/operations/deleteByID.js +1 -1
  153. package/dist/collections/operations/deleteByID.js.map +1 -0
  154. package/dist/collections/operations/docAccess.js +1 -1
  155. package/dist/collections/operations/docAccess.js.map +1 -0
  156. package/dist/collections/operations/find.js +1 -1
  157. package/dist/collections/operations/find.js.map +1 -0
  158. package/dist/collections/operations/findByID.js +1 -1
  159. package/dist/collections/operations/findByID.js.map +1 -0
  160. package/dist/collections/operations/findVersionByID.js +1 -1
  161. package/dist/collections/operations/findVersionByID.js.map +1 -0
  162. package/dist/collections/operations/findVersions.js +1 -1
  163. package/dist/collections/operations/findVersions.js.map +1 -0
  164. package/dist/collections/operations/local/create.js +1 -1
  165. package/dist/collections/operations/local/create.js.map +1 -0
  166. package/dist/collections/operations/local/delete.js +1 -1
  167. package/dist/collections/operations/local/delete.js.map +1 -0
  168. package/dist/collections/operations/local/find.js +1 -1
  169. package/dist/collections/operations/local/find.js.map +1 -0
  170. package/dist/collections/operations/local/findByID.js +1 -1
  171. package/dist/collections/operations/local/findByID.js.map +1 -0
  172. package/dist/collections/operations/local/findVersionByID.js +1 -1
  173. package/dist/collections/operations/local/findVersionByID.js.map +1 -0
  174. package/dist/collections/operations/local/findVersions.js +1 -1
  175. package/dist/collections/operations/local/findVersions.js.map +1 -0
  176. package/dist/collections/operations/local/index.js +1 -1
  177. package/dist/collections/operations/local/index.js.map +1 -0
  178. package/dist/collections/operations/local/restoreVersion.js +1 -1
  179. package/dist/collections/operations/local/restoreVersion.js.map +1 -0
  180. package/dist/collections/operations/local/update.js +1 -1
  181. package/dist/collections/operations/local/update.js.map +1 -0
  182. package/dist/collections/operations/restoreVersion.js +1 -1
  183. package/dist/collections/operations/restoreVersion.js.map +1 -0
  184. package/dist/collections/operations/update.js +1 -1
  185. package/dist/collections/operations/update.js.map +1 -0
  186. package/dist/collections/operations/updateByID.js +1 -1
  187. package/dist/collections/operations/updateByID.js.map +1 -0
  188. package/dist/collections/operations/utils.js +1 -1
  189. package/dist/collections/operations/utils.js.map +1 -0
  190. package/dist/config/build.js +1 -1
  191. package/dist/config/build.js.map +1 -0
  192. package/dist/config/createClientConfig.js +1 -1
  193. package/dist/config/createClientConfig.js.map +1 -0
  194. package/dist/config/defaults.js +1 -1
  195. package/dist/config/defaults.js.map +1 -0
  196. package/dist/config/find.js +1 -1
  197. package/dist/config/find.js.map +1 -0
  198. package/dist/config/load.js +1 -1
  199. package/dist/config/load.js.map +1 -0
  200. package/dist/config/sanitize.js +1 -1
  201. package/dist/config/sanitize.js.map +1 -0
  202. package/dist/config/schema.js +1 -1
  203. package/dist/config/schema.js.map +1 -0
  204. package/dist/config/shared/adminViewSchema.js +1 -1
  205. package/dist/config/shared/adminViewSchema.js.map +1 -0
  206. package/dist/config/shared/componentSchema.js +1 -1
  207. package/dist/config/shared/componentSchema.js.map +1 -0
  208. package/dist/config/types.js +1 -1
  209. package/dist/config/types.js.map +1 -0
  210. package/dist/config/validate.js +1 -1
  211. package/dist/config/validate.js.map +1 -0
  212. package/dist/database/combineQueries.js +1 -1
  213. package/dist/database/combineQueries.js.map +1 -0
  214. package/dist/database/createDatabaseAdapter.js +1 -1
  215. package/dist/database/createDatabaseAdapter.js.map +1 -0
  216. package/dist/database/flattenWhereToOperators.js +1 -1
  217. package/dist/database/flattenWhereToOperators.js.map +1 -0
  218. package/dist/database/getLocalizedPaths.js +1 -1
  219. package/dist/database/getLocalizedPaths.js.map +1 -0
  220. package/dist/database/migrations/createMigration.js +1 -1
  221. package/dist/database/migrations/createMigration.js.map +1 -0
  222. package/dist/database/migrations/getMigrations.js +1 -1
  223. package/dist/database/migrations/getMigrations.js.map +1 -0
  224. package/dist/database/migrations/migrate.js +1 -1
  225. package/dist/database/migrations/migrate.js.map +1 -0
  226. package/dist/database/migrations/migrateDown.js +1 -1
  227. package/dist/database/migrations/migrateDown.js.map +1 -0
  228. package/dist/database/migrations/migrateRefresh.js +1 -1
  229. package/dist/database/migrations/migrateRefresh.js.map +1 -0
  230. package/dist/database/migrations/migrateReset.js +1 -1
  231. package/dist/database/migrations/migrateReset.js.map +1 -0
  232. package/dist/database/migrations/migrateStatus.js +1 -1
  233. package/dist/database/migrations/migrateStatus.js.map +1 -0
  234. package/dist/database/migrations/migrationTemplate.js +1 -1
  235. package/dist/database/migrations/migrationTemplate.js.map +1 -0
  236. package/dist/database/migrations/migrationsCollection.js +1 -1
  237. package/dist/database/migrations/migrationsCollection.js.map +1 -0
  238. package/dist/database/migrations/readMigrationFiles.js +1 -1
  239. package/dist/database/migrations/readMigrationFiles.js.map +1 -0
  240. package/dist/database/queryValidation/types.js +1 -1
  241. package/dist/database/queryValidation/types.js.map +1 -0
  242. package/dist/database/queryValidation/validateQueryPaths.js +1 -1
  243. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -0
  244. package/dist/database/queryValidation/validateSearchParams.js +1 -1
  245. package/dist/database/queryValidation/validateSearchParams.js.map +1 -0
  246. package/dist/database/types.js +1 -1
  247. package/dist/database/types.js.map +1 -0
  248. package/dist/email/build.js +1 -1
  249. package/dist/email/build.js.map +1 -0
  250. package/dist/email/defaults.js +1 -1
  251. package/dist/email/defaults.js.map +1 -0
  252. package/dist/email/mockHandler.js +1 -1
  253. package/dist/email/mockHandler.js.map +1 -0
  254. package/dist/email/sendEmail.js +1 -1
  255. package/dist/email/sendEmail.js.map +1 -0
  256. package/dist/email/types.js +1 -1
  257. package/dist/email/types.js.map +1 -0
  258. package/dist/errors/APIError.js +1 -1
  259. package/dist/errors/APIError.js.map +1 -0
  260. package/dist/errors/AuthenticationError.js +1 -1
  261. package/dist/errors/AuthenticationError.js.map +1 -0
  262. package/dist/errors/DuplicateCollection.js +1 -1
  263. package/dist/errors/DuplicateCollection.js.map +1 -0
  264. package/dist/errors/DuplicateFieldName.js +1 -1
  265. package/dist/errors/DuplicateFieldName.js.map +1 -0
  266. package/dist/errors/DuplicateGlobal.js +1 -1
  267. package/dist/errors/DuplicateGlobal.js.map +1 -0
  268. package/dist/errors/ErrorDeletingFile.js +1 -1
  269. package/dist/errors/ErrorDeletingFile.js.map +1 -0
  270. package/dist/errors/FileUploadError.js +1 -1
  271. package/dist/errors/FileUploadError.js.map +1 -0
  272. package/dist/errors/Forbidden.js +1 -1
  273. package/dist/errors/Forbidden.js.map +1 -0
  274. package/dist/errors/InvalidConfiguration.js +1 -1
  275. package/dist/errors/InvalidConfiguration.js.map +1 -0
  276. package/dist/errors/InvalidFieldName.js +1 -1
  277. package/dist/errors/InvalidFieldName.js.map +1 -0
  278. package/dist/errors/InvalidFieldRelationship.js +1 -1
  279. package/dist/errors/InvalidFieldRelationship.js.map +1 -0
  280. package/dist/errors/InvalidSchema.js +1 -1
  281. package/dist/errors/InvalidSchema.js.map +1 -0
  282. package/dist/errors/LockedAuth.js +1 -1
  283. package/dist/errors/LockedAuth.js.map +1 -0
  284. package/dist/errors/MissingCollectionLabel.js +1 -1
  285. package/dist/errors/MissingCollectionLabel.js.map +1 -0
  286. package/dist/errors/MissingFieldInputOptions.js +1 -1
  287. package/dist/errors/MissingFieldInputOptions.js.map +1 -0
  288. package/dist/errors/MissingFieldType.js +1 -1
  289. package/dist/errors/MissingFieldType.js.map +1 -0
  290. package/dist/errors/MissingFile.js +1 -1
  291. package/dist/errors/MissingFile.js.map +1 -0
  292. package/dist/errors/NotFound.js +1 -1
  293. package/dist/errors/NotFound.js.map +1 -0
  294. package/dist/errors/QueryError.js +1 -1
  295. package/dist/errors/QueryError.js.map +1 -0
  296. package/dist/errors/TimestampsRequired.js +1 -1
  297. package/dist/errors/TimestampsRequired.js.map +1 -0
  298. package/dist/errors/UnathorizedError.js +1 -1
  299. package/dist/errors/UnathorizedError.js.map +1 -0
  300. package/dist/errors/ValidationError.js +1 -1
  301. package/dist/errors/ValidationError.js.map +1 -0
  302. package/dist/errors/index.js +1 -1
  303. package/dist/errors/index.js.map +1 -0
  304. package/dist/errors/types.js +1 -1
  305. package/dist/errors/types.js.map +1 -0
  306. package/dist/exports/auth.js +1 -1
  307. package/dist/exports/auth.js.map +1 -0
  308. package/dist/exports/components/utilities.js +1 -1
  309. package/dist/exports/components/utilities.js.map +1 -0
  310. package/dist/exports/config.js +1 -1
  311. package/dist/exports/config.js.map +1 -0
  312. package/dist/exports/database.js +1 -1
  313. package/dist/exports/database.js.map +1 -0
  314. package/dist/exports/errors.js +1 -1
  315. package/dist/exports/errors.js.map +1 -0
  316. package/dist/exports/fields/index.js +1 -1
  317. package/dist/exports/fields/index.js.map +1 -0
  318. package/dist/exports/fields/validations.js +1 -1
  319. package/dist/exports/fields/validations.js.map +1 -0
  320. package/dist/exports/operations.js +1 -1
  321. package/dist/exports/operations.js.map +1 -0
  322. package/dist/exports/types.js +1 -1
  323. package/dist/exports/types.js.map +1 -0
  324. package/dist/exports/utilities.js +1 -1
  325. package/dist/exports/utilities.js.map +1 -0
  326. package/dist/exports/versions.js +1 -1
  327. package/dist/exports/versions.js.map +1 -0
  328. package/dist/fields/baseFields/baseBlockFields.js +1 -1
  329. package/dist/fields/baseFields/baseBlockFields.js.map +1 -0
  330. package/dist/fields/baseFields/baseIDField.js +1 -1
  331. package/dist/fields/baseFields/baseIDField.js.map +1 -0
  332. package/dist/fields/config/sanitize.js +1 -1
  333. package/dist/fields/config/sanitize.js.map +1 -0
  334. package/dist/fields/config/sanitize.spec.js +1 -1
  335. package/dist/fields/config/sanitize.spec.js.map +1 -0
  336. package/dist/fields/config/schema.js +1 -1
  337. package/dist/fields/config/schema.js.map +1 -0
  338. package/dist/fields/config/types.js +1 -1
  339. package/dist/fields/config/types.js.map +1 -0
  340. package/dist/fields/getDefaultValue.js +1 -1
  341. package/dist/fields/getDefaultValue.js.map +1 -0
  342. package/dist/fields/hooks/afterChange/index.js +1 -1
  343. package/dist/fields/hooks/afterChange/index.js.map +1 -0
  344. package/dist/fields/hooks/afterChange/promise.js +1 -1
  345. package/dist/fields/hooks/afterChange/promise.js.map +1 -0
  346. package/dist/fields/hooks/afterChange/traverseFields.js +1 -1
  347. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -0
  348. package/dist/fields/hooks/afterRead/index.js +1 -1
  349. package/dist/fields/hooks/afterRead/index.js.map +1 -0
  350. package/dist/fields/hooks/afterRead/promise.js +1 -1
  351. package/dist/fields/hooks/afterRead/promise.js.map +1 -0
  352. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -1
  353. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -0
  354. package/dist/fields/hooks/afterRead/traverseFields.js +1 -1
  355. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -0
  356. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +1 -1
  357. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -0
  358. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +1 -1
  359. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -0
  360. package/dist/fields/hooks/beforeChange/index.js +1 -1
  361. package/dist/fields/hooks/beforeChange/index.js.map +1 -0
  362. package/dist/fields/hooks/beforeChange/promise.js +1 -1
  363. package/dist/fields/hooks/beforeChange/promise.js.map +1 -0
  364. package/dist/fields/hooks/beforeChange/traverseFields.js +1 -1
  365. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -0
  366. package/dist/fields/hooks/beforeValidate/index.js +1 -1
  367. package/dist/fields/hooks/beforeValidate/index.js.map +1 -0
  368. package/dist/fields/hooks/beforeValidate/promise.js +1 -1
  369. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -0
  370. package/dist/fields/hooks/beforeValidate/traverseFields.js +1 -1
  371. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -0
  372. package/dist/fields/mergeBaseFields.js +1 -1
  373. package/dist/fields/mergeBaseFields.js.map +1 -0
  374. package/dist/fields/sortableFieldTypes.js +1 -1
  375. package/dist/fields/sortableFieldTypes.js.map +1 -0
  376. package/dist/fields/validations.js +1 -1
  377. package/dist/fields/validations.js.map +1 -0
  378. package/dist/fields/validations.spec.js +1 -1
  379. package/dist/fields/validations.spec.js.map +1 -0
  380. package/dist/globals/config/sanitize.js +1 -1
  381. package/dist/globals/config/sanitize.js.map +1 -0
  382. package/dist/globals/config/schema.js +1 -1
  383. package/dist/globals/config/schema.js.map +1 -0
  384. package/dist/globals/config/types.js +1 -1
  385. package/dist/globals/config/types.js.map +1 -0
  386. package/dist/globals/operations/docAccess.js +1 -1
  387. package/dist/globals/operations/docAccess.js.map +1 -0
  388. package/dist/globals/operations/findOne.js +1 -1
  389. package/dist/globals/operations/findOne.js.map +1 -0
  390. package/dist/globals/operations/findVersionByID.js +1 -1
  391. package/dist/globals/operations/findVersionByID.js.map +1 -0
  392. package/dist/globals/operations/findVersions.js +1 -1
  393. package/dist/globals/operations/findVersions.js.map +1 -0
  394. package/dist/globals/operations/local/findOne.js +1 -1
  395. package/dist/globals/operations/local/findOne.js.map +1 -0
  396. package/dist/globals/operations/local/findVersionByID.js +1 -1
  397. package/dist/globals/operations/local/findVersionByID.js.map +1 -0
  398. package/dist/globals/operations/local/findVersions.js +1 -1
  399. package/dist/globals/operations/local/findVersions.js.map +1 -0
  400. package/dist/globals/operations/local/index.js +1 -1
  401. package/dist/globals/operations/local/index.js.map +1 -0
  402. package/dist/globals/operations/local/restoreVersion.js +1 -1
  403. package/dist/globals/operations/local/restoreVersion.js.map +1 -0
  404. package/dist/globals/operations/local/update.js +1 -1
  405. package/dist/globals/operations/local/update.js.map +1 -0
  406. package/dist/globals/operations/restoreVersion.js +1 -1
  407. package/dist/globals/operations/restoreVersion.js.map +1 -0
  408. package/dist/globals/operations/update.js +1 -1
  409. package/dist/globals/operations/update.js.map +1 -0
  410. package/dist/index.d.ts +1 -1
  411. package/dist/index.d.ts.map +1 -1
  412. package/dist/index.js +8 -3
  413. package/dist/index.js.map +1 -0
  414. package/dist/localization/middleware.js +1 -1
  415. package/dist/localization/middleware.js.map +1 -0
  416. package/dist/localization/sanitizeFallbackLocale.js +1 -1
  417. package/dist/localization/sanitizeFallbackLocale.js.map +1 -0
  418. package/dist/preferences/deleteUserPreferences.js +1 -1
  419. package/dist/preferences/deleteUserPreferences.js.map +1 -0
  420. package/dist/preferences/operations/delete.d.ts.map +1 -1
  421. package/dist/preferences/operations/delete.js +1 -2
  422. package/dist/preferences/operations/delete.js.map +1 -0
  423. package/dist/preferences/operations/findOne.js +1 -1
  424. package/dist/preferences/operations/findOne.js.map +1 -0
  425. package/dist/preferences/operations/update.js +1 -1
  426. package/dist/preferences/operations/update.js.map +1 -0
  427. package/dist/preferences/preferencesCollection.js +1 -1
  428. package/dist/preferences/preferencesCollection.js.map +1 -0
  429. package/dist/preferences/requestHandlers/delete.js +1 -1
  430. package/dist/preferences/requestHandlers/delete.js.map +1 -0
  431. package/dist/preferences/requestHandlers/findOne.js +1 -1
  432. package/dist/preferences/requestHandlers/findOne.js.map +1 -0
  433. package/dist/preferences/requestHandlers/update.js +1 -1
  434. package/dist/preferences/requestHandlers/update.js.map +1 -0
  435. package/dist/preferences/types.js +1 -1
  436. package/dist/preferences/types.js.map +1 -0
  437. package/dist/translations/extractTranslations.js +1 -1
  438. package/dist/translations/extractTranslations.js.map +1 -0
  439. package/dist/translations/getLocalI18n.js +1 -1
  440. package/dist/translations/getLocalI18n.js.map +1 -0
  441. package/dist/types/constants.js +1 -1
  442. package/dist/types/constants.js.map +1 -0
  443. package/dist/types/index.js +1 -1
  444. package/dist/types/index.js.map +1 -0
  445. package/dist/uploads/canResizeImage.js +1 -1
  446. package/dist/uploads/canResizeImage.js.map +1 -0
  447. package/dist/uploads/cropImage.js +1 -1
  448. package/dist/uploads/cropImage.js.map +1 -0
  449. package/dist/uploads/deleteAssociatedFiles.js +1 -1
  450. package/dist/uploads/deleteAssociatedFiles.js.map +1 -0
  451. package/dist/uploads/docWithFilenameExists.js +1 -1
  452. package/dist/uploads/docWithFilenameExists.js.map +1 -0
  453. package/dist/uploads/fileExists.js +1 -1
  454. package/dist/uploads/fileExists.js.map +1 -0
  455. package/dist/uploads/formatFilesize.js +1 -1
  456. package/dist/uploads/formatFilesize.js.map +1 -0
  457. package/dist/uploads/generateFileData.js +1 -1
  458. package/dist/uploads/generateFileData.js.map +1 -0
  459. package/dist/uploads/getBaseFields.js +1 -1
  460. package/dist/uploads/getBaseFields.js.map +1 -0
  461. package/dist/uploads/getExternalFile.js +1 -1
  462. package/dist/uploads/getExternalFile.js.map +1 -0
  463. package/dist/uploads/getFileByPath.js +1 -1
  464. package/dist/uploads/getFileByPath.js.map +1 -0
  465. package/dist/uploads/getImageSize.js +1 -1
  466. package/dist/uploads/getImageSize.js.map +1 -0
  467. package/dist/uploads/getSafeFilename.js +1 -1
  468. package/dist/uploads/getSafeFilename.js.map +1 -0
  469. package/dist/uploads/imageResizer.js +1 -1
  470. package/dist/uploads/imageResizer.js.map +1 -0
  471. package/dist/uploads/isImage.d.ts.map +1 -1
  472. package/dist/uploads/isImage.js +3 -2
  473. package/dist/uploads/isImage.js.map +1 -0
  474. package/dist/uploads/mimeTypeValidator.js +1 -1
  475. package/dist/uploads/mimeTypeValidator.js.map +1 -0
  476. package/dist/uploads/mimeTypeValidator.spec.js +1 -1
  477. package/dist/uploads/mimeTypeValidator.spec.js.map +1 -0
  478. package/dist/uploads/saveBufferToFile.js +1 -1
  479. package/dist/uploads/saveBufferToFile.js.map +1 -0
  480. package/dist/uploads/types.js +1 -1
  481. package/dist/uploads/types.js.map +1 -0
  482. package/dist/uploads/unlinkTempFiles.js +1 -1
  483. package/dist/uploads/unlinkTempFiles.js.map +1 -0
  484. package/dist/uploads/uploadFiles.js +1 -1
  485. package/dist/uploads/uploadFiles.js.map +1 -0
  486. package/dist/utilities/checkDuplicateCollections.js +1 -1
  487. package/dist/utilities/checkDuplicateCollections.js.map +1 -0
  488. package/dist/utilities/combineMerge.js +1 -1
  489. package/dist/utilities/combineMerge.js.map +1 -0
  490. package/dist/utilities/commitTransaction.js +1 -1
  491. package/dist/utilities/commitTransaction.js.map +1 -0
  492. package/dist/utilities/configToJSONSchema.js +1 -1
  493. package/dist/utilities/configToJSONSchema.js.map +1 -0
  494. package/dist/utilities/configToJSONSchema.spec.js +1 -1
  495. package/dist/utilities/configToJSONSchema.spec.js.map +1 -0
  496. package/dist/utilities/convertData.js +1 -1
  497. package/dist/utilities/convertData.js.map +1 -0
  498. package/dist/utilities/createArrayFromCommaDelineated.js +1 -1
  499. package/dist/utilities/createArrayFromCommaDelineated.js.map +1 -0
  500. package/dist/utilities/createLocalReq.js +1 -1
  501. package/dist/utilities/createLocalReq.js.map +1 -0
  502. package/dist/utilities/deepCopyObject.js +1 -1
  503. package/dist/utilities/deepCopyObject.js.map +1 -0
  504. package/dist/utilities/deepMerge.js +1 -1
  505. package/dist/utilities/deepMerge.js.map +1 -0
  506. package/dist/utilities/fieldSchemaToJSON.js +1 -1
  507. package/dist/utilities/fieldSchemaToJSON.js.map +1 -0
  508. package/dist/utilities/flattenTopLevelFields.js +1 -1
  509. package/dist/utilities/flattenTopLevelFields.js.map +1 -0
  510. package/dist/utilities/formatLabels.js +1 -1
  511. package/dist/utilities/formatLabels.js.map +1 -0
  512. package/dist/utilities/formatLabels.spec.js +1 -1
  513. package/dist/utilities/formatLabels.spec.js.map +1 -0
  514. package/dist/utilities/getCSSVariable.js +1 -1
  515. package/dist/utilities/getCSSVariable.js.map +1 -0
  516. package/dist/utilities/getCollectionIDFieldTypes.js +1 -1
  517. package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -0
  518. package/dist/utilities/getEntityPolicies.js +1 -1
  519. package/dist/utilities/getEntityPolicies.js.map +1 -0
  520. package/dist/utilities/getIDType.js +1 -1
  521. package/dist/utilities/getIDType.js.map +1 -0
  522. package/dist/utilities/getObjectDotNotation.js +1 -1
  523. package/dist/utilities/getObjectDotNotation.js.map +1 -0
  524. package/dist/utilities/getUniqueListBy.js +1 -1
  525. package/dist/utilities/getUniqueListBy.js.map +1 -0
  526. package/dist/utilities/initTransaction.js +1 -1
  527. package/dist/utilities/initTransaction.js.map +1 -0
  528. package/dist/utilities/isEntityHidden.js +1 -1
  529. package/dist/utilities/isEntityHidden.js.map +1 -0
  530. package/dist/utilities/isNumber.js +1 -1
  531. package/dist/utilities/isNumber.js.map +1 -0
  532. package/dist/utilities/isPlainObject.js +1 -1
  533. package/dist/utilities/isPlainObject.js.map +1 -0
  534. package/dist/utilities/isValidID.js +1 -1
  535. package/dist/utilities/isValidID.js.map +1 -0
  536. package/dist/utilities/isolateObjectProperty.js +1 -1
  537. package/dist/utilities/isolateObjectProperty.js.map +1 -0
  538. package/dist/utilities/killTransaction.js +1 -1
  539. package/dist/utilities/killTransaction.js.map +1 -0
  540. package/dist/utilities/logger.js +1 -1
  541. package/dist/utilities/logger.js.map +1 -0
  542. package/dist/utilities/mapAsync.js +1 -1
  543. package/dist/utilities/mapAsync.js.map +1 -0
  544. package/dist/utilities/overwriteMerge.js +1 -1
  545. package/dist/utilities/overwriteMerge.js.map +1 -0
  546. package/dist/utilities/parseCookies.js +1 -1
  547. package/dist/utilities/parseCookies.js.map +1 -0
  548. package/dist/utilities/sanitizeInternalFields.js +1 -1
  549. package/dist/utilities/sanitizeInternalFields.js.map +1 -0
  550. package/dist/utilities/setsAreEqual.js +1 -1
  551. package/dist/utilities/setsAreEqual.js.map +1 -0
  552. package/dist/utilities/telemetry/events/adminInit.js +1 -1
  553. package/dist/utilities/telemetry/events/adminInit.js.map +1 -0
  554. package/dist/utilities/telemetry/events/serverInit.js +1 -1
  555. package/dist/utilities/telemetry/events/serverInit.js.map +1 -0
  556. package/dist/utilities/telemetry/index.js +1 -1
  557. package/dist/utilities/telemetry/index.js.map +1 -0
  558. package/dist/utilities/telemetry/oneWayHash.js +1 -1
  559. package/dist/utilities/telemetry/oneWayHash.js.map +1 -0
  560. package/dist/utilities/timestamp.js +1 -1
  561. package/dist/utilities/timestamp.js.map +1 -0
  562. package/dist/utilities/toKebabCase.js +1 -1
  563. package/dist/utilities/toKebabCase.js.map +1 -0
  564. package/dist/utilities/wait.js +1 -1
  565. package/dist/utilities/wait.js.map +1 -0
  566. package/dist/utilities/wordBoundariesRegex.js +1 -1
  567. package/dist/utilities/wordBoundariesRegex.js.map +1 -0
  568. package/dist/versions/baseFields.js +1 -1
  569. package/dist/versions/baseFields.js.map +1 -0
  570. package/dist/versions/buildCollectionFields.js +1 -1
  571. package/dist/versions/buildCollectionFields.js.map +1 -0
  572. package/dist/versions/buildGlobalFields.js +1 -1
  573. package/dist/versions/buildGlobalFields.js.map +1 -0
  574. package/dist/versions/deleteCollectionVersions.js +1 -1
  575. package/dist/versions/deleteCollectionVersions.js.map +1 -0
  576. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -1
  577. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -0
  578. package/dist/versions/drafts/getQueryDraftsSort.js +1 -1
  579. package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -0
  580. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -1
  581. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -0
  582. package/dist/versions/enforceMaxVersions.js +1 -1
  583. package/dist/versions/enforceMaxVersions.js.map +1 -0
  584. package/dist/versions/getLatestCollectionVersion.js +1 -1
  585. package/dist/versions/getLatestCollectionVersion.js.map +1 -0
  586. package/dist/versions/getLatestGlobalVersion.js +1 -1
  587. package/dist/versions/getLatestGlobalVersion.js.map +1 -0
  588. package/dist/versions/getVersionsModelName.js +1 -1
  589. package/dist/versions/getVersionsModelName.js.map +1 -0
  590. package/dist/versions/saveVersion.js +1 -1
  591. package/dist/versions/saveVersion.js.map +1 -0
  592. package/dist/versions/types.js +1 -1
  593. package/dist/versions/types.js.map +1 -0
  594. package/errors.js +1 -1
  595. package/operations.js +1 -1
  596. package/package.json +2 -2
  597. package/types.js +1 -1
  598. package/utilities.js +1 -1
  599. package/versions.js +1 -1
@@ -416,4 +416,4 @@ export default {
416
416
  upload
417
417
  };
418
418
 
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIsIFdoZXJlIH0gZnJvbSAnLi4vZXhwb3J0cy90eXBlcy5qcydcbmltcG9ydCB0eXBlIHtcbiAgQXJyYXlGaWVsZCxcbiAgQmxvY2tGaWVsZCxcbiAgQ2hlY2tib3hGaWVsZCxcbiAgQ29kZUZpZWxkLFxuICBEYXRlRmllbGQsXG4gIEVtYWlsRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgUmljaFRleHRGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRleHRGaWVsZCxcbiAgVGV4dGFyZWFGaWVsZCxcbiAgVXBsb2FkRmllbGQsXG4gIFZhbGlkYXRlLFxufSBmcm9tICcuL2NvbmZpZy90eXBlcy5qcydcblxuaW1wb3J0IHsgZ2V0SURUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2dldElEVHlwZS5qcydcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzTnVtYmVyLmpzJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRC5qcydcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcy5qcydcblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHN0cmluZyB8IHN0cmluZ1tdLCB1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAge1xuICAgIGhhc01hbnksXG4gICAgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCxcbiAgICBtYXhSb3dzLFxuICAgIG1pbkxlbmd0aCxcbiAgICBtaW5Sb3dzLFxuICAgIHJlcToge1xuICAgICAgcGF5bG9hZDogeyBjb25maWcgfSxcbiAgICAgIHQsXG4gICAgfSxcbiAgICByZXF1aXJlZCxcbiAgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAoIXJlcXVpcmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChoYXNNYW55ID09PSB0cnVlKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbiAgICBpZiAodHlwZW9mIGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvblJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGNvbnN0IHN0cmluZ3NUb1ZhbGlkYXRlOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBzdHJpbmdWYWx1ZSBvZiBzdHJpbmdzVG9WYWxpZGF0ZSkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHN0cmluZ1ZhbHVlPy5sZW5ndGggfHwgMFxuXG4gICAgaWYgKHR5cGVvZiBtYXhMZW5ndGggPT09ICdudW1iZXInICYmIGxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXhMZW5ndGgsIHN0cmluZ1ZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW5MZW5ndGggPT09ICdudW1iZXInICYmIGxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3ZhbHVlJyksIG1pbkxlbmd0aCwgc3RyaW5nVmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7XG4gICAgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCxcbiAgICBtaW5MZW5ndGgsXG4gICAgcmVxOiB7XG4gICAgICBwYXlsb2FkOiB7IGNvbmZpZyB9LFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcXVpcmVkLFxuICB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgIS9cXFNbXlxcc0BdKkBcXFMrXFwuXFxTKy8udGVzdCh2YWx1ZSkpIHx8ICghdmFsdWUgJiYgcmVxdWlyZWQpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW1haWxBZGRyZXNzJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB0ZXh0YXJlYTogVmFsaWRhdGU8c3RyaW5nLCB1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHtcbiAgICBtYXhMZW5ndGg6IGZpZWxkTWF4TGVuZ3RoLFxuICAgIG1pbkxlbmd0aCxcbiAgICByZXE6IHtcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICB0LFxuICAgIH0sXG4gICAgcmVxdWlyZWQsXG4gIH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHN0cmluZywgdW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBqc29uOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZSxcbiAgeyBqc29uRXJyb3IsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChqc29uRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3g6IFZhbGlkYXRlPGJvb2xlYW4sIHVua25vd24sIHVua25vd24sIENoZWNrYm94RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHx8IChyZXF1aXJlZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjp0cnVlT3JGYWxzZScpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZGF0ZTogVmFsaWRhdGU8RGF0ZSwgdW5rbm93biwgdW5rbm93biwgRGF0ZUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgdW5rbm93biwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aCA9IChcbiAgdmFsdWUsXG4gIG9wdGlvbnM6IHtcbiAgICBtYXhSb3dzPzogbnVtYmVyXG4gICAgbWluUm93cz86IG51bWJlclxuICAgIHJlcXVpcmVkPzogYm9vbGVhblxuICAgIHQ6IChrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIH0pID0+IHN0cmluZ1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBjb25zdCBhcnJheUxlbmd0aCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogMFxuXG4gIGlmICghcmVxdWlyZWQgJiYgYXJyYXlMZW5ndGggPT09IDApIHJldHVybiB0cnVlXG5cbiAgaWYgKG1pblJvd3MgJiYgYXJyYXlMZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogbWluUm93cywgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgnZ2VuZXJhbDpyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhYXJyYXlMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgnZ2VuZXJhbDpyb3cnKSB9KVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8bnVtYmVyIHwgbnVtYmVyW10sIHVua25vd24sIHVua25vd24sIE51bWJlckZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKGhhc01hbnkgPT09IHRydWUpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxuICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9PT0gJ3N0cmluZycpIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0XG4gIH1cblxuICBpZiAoIXZhbHVlICYmICFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAvLyBpZiBubyB2YWx1ZSBpcyBwcmVzZW50LCB2YWxpZGF0ZSBiYXNlZCBvbiByZXF1aXJlZFxuICAgIGlmIChyZXF1aXJlZCkgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIGlmICghcmVxdWlyZWQpIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBudW1iZXJzVG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIGZvciAoY29uc3QgbnVtYmVyIG9mIG51bWJlcnNUb1ZhbGlkYXRlKSB7XG4gICAgaWYgKCFpc051bWJlcihudW1iZXIpKSByZXR1cm4gdCgndmFsaWRhdGlvbjplbnRlck51bWJlcicpXG5cbiAgICBjb25zdCBudW1iZXJWYWx1ZSA9IHBhcnNlRmxvYXQobnVtYmVyIGFzIHVua25vd24gYXMgc3RyaW5nKVxuXG4gICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInICYmIG51bWJlclZhbHVlID4gbWF4KSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ2dlbmVyYWw6dmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdnZW5lcmFsOnZhbHVlJyksIG1pbiwgdmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYXJyYXk6IFZhbGlkYXRlPHVua25vd25bXSwgdW5rbm93biwgdW5rbm93biwgQXJyYXlGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgcmV0dXJuIHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGJsb2NrczogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgQmxvY2tGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgcmV0dXJuIHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZTxcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHJlbGF0aW9uVG8sIHJlcSwgcmVxOiB7IHBheWxvYWQsIHQsIHVzZXIgfSwgc2libGluZ0RhdGEgfSxcbikgPT4ge1xuICBpZiAodHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGZhbHNlQ29sbGVjdGlvbnM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgb3B0aW9uRmlsdGVyID0gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kV2hlcmU6IFdoZXJlID0ge1xuICAgICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH1dLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyICYmIG9wdGlvbkZpbHRlciAhPT0gdHJ1ZSkgZmluZFdoZXJlLmFuZC5wdXNoKG9wdGlvbkZpbHRlcilcblxuICAgICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgZmFsc2VDb2xsZWN0aW9ucy5wdXNoKGNvbGxlY3Rpb24pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGByZXFgIG9taXR0ZWQgdG8gcHJldmVudCB0cmFuc2FjdGlvbiBlcnJvcnMgZnJvbSBhYm9ydGluZyB0aGUgZW50aXJlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgICAgbGltaXQ6IDAsXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgb3B0aW9uc1tjb2xsZWN0aW9uXSA9IHJlc3VsdC5kb2NzLm1hcCgoZG9jKSA9PiBkb2MuaWQpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcmVxLnBheWxvYWQubG9nZ2VyLmVycm9yKHtcbiAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgIG1zZzogYEVycm9yIHZhbGlkYXRpbmcgZmlsdGVyIG9wdGlvbnMgZm9yIGNvbGxlY3Rpb24gJHtjb2xsZWN0aW9ufWAsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKGZhbHNlQ29sbGVjdGlvbnMuZmluZCgoc2x1ZykgPT4gcmVsYXRpb25UbyA9PT0gc2x1ZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucz8ucmVxPy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgaWRGaWVsZCA9IG9wdGlvbnM/LnJlcT8ucGF5bG9hZD8uY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IG9wdGlvbnMucmVsYXRpb25UbylcbiAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgb3B0aW9ucz8ucmVxPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucmVxPy50KCd2YWxpZGF0aW9uOnZhbGlkVXBsb2FkSUQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCByZWxhdGlvbnNoaXA6IFZhbGlkYXRlPFxuICBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgUmVsYXRpb25zaGlwRmllbGRcbj4gPSBhc3luYyAodmFsdWUsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIG1heFJvd3MsXG4gICAgbWluUm93cyxcbiAgICByZWxhdGlvblRvLFxuICAgIHJlcToge1xuICAgICAgcGF5bG9hZCxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICB0LFxuICAgIH0sXG4gICAgcmVxdWlyZWQsXG4gIH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHtcbiAgICAgICAgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpLFxuICAgICAgICBtaW46IG1pblJvd3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZS5sZW5ndGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgnZ2VuZXJhbDpyb3dzJyksXG4gICAgICAgIG1heDogbWF4Um93cyxcbiAgICAgICAgdmFsdWU6IHZhbHVlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZyA9IHJlbGF0aW9uVG9cblxuICAgICAgICAvLyBjdXN0b20gaWRcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHJlcXVlc3RlZElEID0gdmFsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy5yZWxhdGlvblRvKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IGNvbmZpZz8uY29sbGVjdGlvbnNcbiAgICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGNvbGxlY3Rpb25TbHVnKVxuICAgICAgICA/LmZpZWxkcz8uZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgcGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICAgIHJldHVybiAhaXNWYWxpZElEKHJlcXVlc3RlZElELCB0eXBlKVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBUaGlzIHJlbGF0aW9uc2hpcCBmaWVsZCBoYXMgdGhlIGZvbGxvd2luZyBpbnZhbGlkIHJlbGF0aW9uc2hpcHM6ICR7aW52YWxpZFJlbGF0aW9uc2hpcHNcbiAgICAgICAgLm1hcCgoZXJyLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX1gXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpfWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG9wdGlvbnMsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVNYXRjaGVzT3B0aW9uID0gb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICAgIHJldHVybiB2YWx1ZU1hdGNoZXNPcHRpb24gfHwgdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIHJldHVybiByZXF1aXJlZCA/IHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKSA6IHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50OiBWYWxpZGF0ZTxbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddLCB1bmtub3duLCB1bmtub3duLCBQb2ludEZpZWxkPiA9IChcbiAgdmFsdWUgPSBbJycsICcnXSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGNvbnN0IGxuZyA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzBdKSlcbiAgY29uc3QgbGF0ID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMV0pKVxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAoKHZhbHVlWzBdICYmIHZhbHVlWzFdICYmIHR5cGVvZiBsbmcgIT09ICdudW1iZXInICYmIHR5cGVvZiBsYXQgIT09ICdudW1iZXInKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxuZykgfHxcbiAgICAgIE51bWJlci5pc05hTihsYXQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoICE9PSAyKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNUd29OdW1iZXJzJylcbiAgfVxuXG4gIGlmICgodmFsdWVbMV0gJiYgTnVtYmVyLmlzTmFOKGxuZykpIHx8ICh2YWx1ZVswXSAmJiBOdW1iZXIuaXNOYU4obGF0KSkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcnJheSxcbiAgYmxvY2tzLFxuICBjaGVja2JveCxcbiAgY29kZSxcbiAgZGF0ZSxcbiAgZW1haWwsXG4gIGpzb24sXG4gIG51bWJlcixcbiAgcGFzc3dvcmQsXG4gIHBvaW50LFxuICByYWRpbyxcbiAgcmVsYXRpb25zaGlwLFxuICByaWNoVGV4dCxcbiAgc2VsZWN0LFxuICB0ZXh0LFxuICB0ZXh0YXJlYSxcbiAgdXBsb2FkLFxufVxuIl0sIm5hbWVzIjpbImdldElEVHlwZSIsImlzTnVtYmVyIiwiaXNWYWxpZElEIiwiZmllbGRBZmZlY3RzRGF0YSIsInRleHQiLCJ2YWx1ZSIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1heFJvd3MiLCJtaW5MZW5ndGgiLCJtaW5Sb3dzIiwicmVxIiwicGF5bG9hZCIsImNvbmZpZyIsInQiLCJyZXF1aXJlZCIsImxlbmd0aFZhbGlkYXRpb25SZXN1bHQiLCJ2YWxpZGF0ZUFycmF5TGVuZ3RoIiwiZGVmYXVsdE1heFRleHRMZW5ndGgiLCJzdHJpbmdzVG9WYWxpZGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsInN0cmluZ1ZhbHVlIiwibGVuZ3RoIiwibGFiZWwiLCJwYXNzd29yZCIsImVtYWlsIiwidGVzdCIsInRleHRhcmVhIiwiY29kZSIsInVuZGVmaW5lZCIsImpzb24iLCJqc29uRXJyb3IiLCJjaGVja2JveCIsImRhdGUiLCJpc05hTiIsIkRhdGUiLCJwYXJzZSIsInRvU3RyaW5nIiwicmljaFRleHQiLCJvcHRpb25zIiwiZWRpdG9yIiwidmFsaWRhdGUiLCJhcnJheUxlbmd0aCIsImNvdW50IiwibnVtYmVyIiwibWF4IiwibWluIiwibnVtYmVyc1RvVmFsaWRhdGUiLCJudW1iZXJWYWx1ZSIsInBhcnNlRmxvYXQiLCJhcnJheSIsImJsb2NrcyIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwidXNlciIsInNpYmxpbmdEYXRhIiwiZmFsc2VDb2xsZWN0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwiZmluZFdoZXJlIiwiYW5kIiwiaW4iLCJyZXN1bHQiLCJmaW5kIiwiZGVwdGgiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJ3aGVyZSIsImRvY3MiLCJkb2MiLCJlcnIiLCJsb2dnZXIiLCJlcnJvciIsIm1zZyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJzbHVnIiwiaW5kZXhPZiIsInJlZHVjZSIsImludmFsaWQiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsInVwbG9hZCIsImlkRmllbGQiLCJmaWVsZHMiLCJmaWVsZCIsIm5hbWUiLCJ0eXBlIiwiZGIiLCJkZWZhdWx0SURUeXBlIiwicmVsYXRpb25zaGlwIiwiY29sbGVjdGlvblNsdWciLCJqb2luIiwic2VsZWN0Iiwic29tZSIsImlucHV0Iiwib3B0aW9uIiwicmFkaW8iLCJ2YWx1ZU1hdGNoZXNPcHRpb24iLCJwb2ludCIsImxuZyIsIlN0cmluZyIsImxhdCIsIk51bWJlciJdLCJtYXBwaW5ncyI6IkFBc0JBLFNBQVNBLFNBQVMsUUFBUSw0QkFBMkI7QUFDckQsU0FBU0MsUUFBUSxRQUFRLDJCQUEwQjtBQUNuRCxTQUFTQyxTQUFTLFFBQVEsNEJBQTJCO0FBQ3JELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFtQjtBQUVwRCxPQUFPLE1BQU1DLE9BQWlFLENBQzVFQyxPQUNBLEVBQ0VDLE9BQU8sRUFDUEMsV0FBV0MsY0FBYyxFQUN6QkMsT0FBTyxFQUNQQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsS0FBSyxFQUNIQyxTQUFTLEVBQUVDLE1BQU0sRUFBRSxFQUNuQkMsQ0FBQyxFQUNGLEVBQ0RDLFFBQVEsRUFDVDtJQUVELElBQUlUO0lBRUosSUFBSSxDQUFDUyxVQUFVO1FBQ2IsSUFBSSxDQUFDWCxPQUFPLE9BQU87SUFDckI7SUFFQSxJQUFJQyxZQUFZLE1BQU07UUFDcEIsTUFBTVcseUJBQXlCQyxvQkFBb0JiLE9BQU87WUFBRUk7WUFBU0U7WUFBU0s7WUFBVUQ7UUFBRTtRQUMxRixJQUFJLE9BQU9FLDJCQUEyQixVQUFVLE9BQU9BO0lBQ3pEO0lBRUEs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
419
+ //# sourceMappingURL=validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fields/validations.ts"],"sourcesContent":["import type { RichTextAdapter, Where } from '../exports/types.js'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n DateField,\n EmailField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RichTextField,\n SelectField,\n TextField,\n TextareaField,\n UploadField,\n Validate,\n} from './config/types.js'\n\nimport { getIDType } from '../utilities/getIDType.js'\nimport { isNumber } from '../utilities/isNumber.js'\nimport { isValidID } from '../utilities/isValidID.js'\nimport { fieldAffectsData } from './config/types.js'\n\nexport const text: Validate<string | string[], unknown, unknown, TextField> = (\n value,\n {\n hasMany,\n maxLength: fieldMaxLength,\n maxRows,\n minLength,\n minRows,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (!required) {\n if (!value) return true\n }\n\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n const stringsToValidate: string[] = Array.isArray(value) ? value : [value]\n\n for (const stringValue of stringsToValidate) {\n const length = stringValue?.length || 0\n\n if (typeof maxLength === 'number' && length > maxLength) {\n return t('validation:shorterThanMax', { label: t('value'), maxLength, stringValue })\n }\n\n if (typeof minLength === 'number' && length < minLength) {\n return t('validation:longerThanMin', { label: t('value'), minLength, stringValue })\n }\n }\n\n if (required) {\n if (!(typeof value === 'string' || Array.isArray(value)) || value?.length === 0) {\n return t('validation:required')\n }\n }\n\n return true\n}\n\nexport const password: Validate<string, unknown, unknown, TextField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const email: Validate<string, unknown, unknown, EmailField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && !/\\S[^\\s@]*@\\S+\\.\\S+/.test(value)) || (!value && required)) {\n return t('validation:emailAddress')\n }\n\n return true\n}\n\nexport const textarea: Validate<string, unknown, unknown, TextareaField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const code: Validate<string, unknown, unknown, CodeField> = (\n value,\n { req: { t }, required },\n) => {\n if (required && value === undefined) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const json: Validate<string, unknown, unknown, JSONField & { jsonError?: string }> = (\n value,\n { jsonError, req: { t }, required },\n) => {\n if (required && !value) {\n return t('validation:required')\n }\n\n if (jsonError !== undefined) {\n return t('validation:invalidInput')\n }\n\n return true\n}\n\nexport const checkbox: Validate<boolean, unknown, unknown, CheckboxField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && typeof value !== 'boolean') || (required && typeof value !== 'boolean')) {\n return t('validation:trueOrFalse')\n }\n\n return true\n}\n\nexport const date: Validate<Date, unknown, unknown, DateField> = (\n value,\n { req: { t }, required },\n) => {\n if (value && !isNaN(Date.parse(value.toString()))) {\n /* eslint-disable-line */\n return true\n }\n\n if (value) {\n return t('validation:notValidDate', { value })\n }\n\n if (required) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const richText: Validate<object, unknown, unknown, RichTextField> = async (\n value,\n options,\n) => {\n const editor: RichTextAdapter = options?.editor\n\n return editor.validate(value, options)\n}\n\nconst validateArrayLength = (\n value,\n options: {\n maxRows?: number\n minRows?: number\n required?: boolean\n t: (key: string, options?: { [key: string]: number | string }) => string\n },\n) => {\n const { maxRows, minRows, required, t } = options\n\n const arrayLength = Array.isArray(value) ? value.length : 0\n\n if (!required && arrayLength === 0) return true\n\n if (minRows && arrayLength < minRows) {\n return t('validation:requiresAtLeast', { count: minRows, label: t('general:rows') })\n }\n\n if (maxRows && arrayLength > maxRows) {\n return t('validation:requiresNoMoreThan', { count: maxRows, label: t('general:rows') })\n }\n\n if (required && !arrayLength) {\n return t('validation:requiresAtLeast', { count: 1, label: t('general:row') })\n }\n\n return true\n}\n\nexport const number: Validate<number | number[], unknown, unknown, NumberField> = (\n value,\n { hasMany, max, maxRows, min, minRows, req: { t }, required },\n) => {\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (!value && !isNumber(value)) {\n // if no value is present, validate based on required\n if (required) return t('validation:required')\n if (!required) return true\n }\n\n const numbersToValidate: number[] = Array.isArray(value) ? value : [value]\n\n for (const number of numbersToValidate) {\n if (!isNumber(number)) return t('validation:enterNumber')\n\n const numberValue = parseFloat(number as unknown as string)\n\n if (typeof max === 'number' && numberValue > max) {\n return t('validation:greaterThanMax', { label: t('general:value'), max, value })\n }\n\n if (typeof min === 'number' && numberValue < min) {\n return t('validation:lessThanMin', { label: t('general:value'), min, value })\n }\n }\n\n return true\n}\n\nexport const array: Validate<unknown[], unknown, unknown, ArrayField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nexport const blocks: Validate<unknown, unknown, unknown, BlockField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nconst validateFilterOptions: Validate<\n unknown,\n unknown,\n unknown,\n RelationshipField | UploadField\n> = async (\n value,\n { id, data, filterOptions, relationTo, req, req: { payload, t, user }, siblingData },\n) => {\n if (typeof filterOptions !== 'undefined' && value) {\n const options: {\n [collection: string]: (number | string)[]\n } = {}\n\n const falseCollections: string[] = []\n const collections = typeof relationTo === 'string' ? [relationTo] : relationTo\n const values = Array.isArray(value) ? value : [value]\n\n await Promise.all(\n collections.map(async (collection) => {\n try {\n let optionFilter =\n typeof filterOptions === 'function'\n ? await filterOptions({\n id,\n data,\n relationTo: collection,\n siblingData,\n user,\n })\n : filterOptions\n\n if (optionFilter === true) {\n optionFilter = null\n }\n\n const valueIDs: (number | string)[] = []\n\n values.forEach((val) => {\n if (typeof val === 'object' && val?.value) {\n valueIDs.push(val.value)\n }\n\n if (typeof val === 'string' || typeof val === 'number') {\n valueIDs.push(val)\n }\n })\n\n if (valueIDs.length > 0) {\n const findWhere: Where = {\n and: [{ id: { in: valueIDs } }],\n }\n\n if (optionFilter && optionFilter !== true) findWhere.and.push(optionFilter)\n\n if (optionFilter === false) {\n falseCollections.push(collection)\n }\n\n // `req` omitted to prevent transaction errors from aborting the entire transaction\n const result = await payload.find({\n collection,\n depth: 0,\n limit: 0,\n pagination: false,\n where: findWhere,\n })\n\n options[collection] = result.docs.map((doc) => doc.id)\n } else {\n options[collection] = []\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `Error validating filter options for collection ${collection}`,\n })\n options[collection] = []\n }\n }),\n )\n\n const invalidRelationships = values.filter((val) => {\n let collection: string\n let requestedID: number | string\n\n if (typeof relationTo === 'string') {\n collection = relationTo\n\n if (typeof val === 'string' || typeof val === 'number') {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collection = val.relationTo\n requestedID = val.value\n }\n\n if (falseCollections.find((slug) => relationTo === slug)) {\n return true\n }\n\n return options[collection].indexOf(requestedID) === -1\n })\n\n if (invalidRelationships.length > 0) {\n return invalidRelationships.reduce((err, invalid, i) => {\n return `${err} ${JSON.stringify(invalid)}${\n invalidRelationships.length === i + 1 ? ',' : ''\n } `\n }, t('validation:invalidSelections')) as string\n }\n\n return true\n }\n\n return true\n}\n\nexport const upload: Validate<unknown, unknown, unknown, UploadField> = (\n value: string,\n options,\n) => {\n if (!value && options.required) {\n return options?.req?.t('validation:required')\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const idField = options?.req?.payload?.config?.collections\n ?.find((collection) => collection.slug === options.relationTo)\n ?.fields?.find((field) => fieldAffectsData(field) && field.name === 'id')\n\n const type = getIDType(idField, options?.req?.payload?.db?.defaultIDType)\n\n if (!isValidID(value, type)) {\n return options.req?.t('validation:validUploadID')\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const relationship: Validate<\n RelationshipValue,\n unknown,\n unknown,\n RelationshipField\n> = async (value, options) => {\n const {\n maxRows,\n minRows,\n relationTo,\n req: {\n payload,\n payload: { config },\n t,\n },\n required,\n } = options\n\n if ((!value || (Array.isArray(value) && value.length === 0)) && required) {\n return t('validation:required')\n }\n\n if (Array.isArray(value) && value.length > 0) {\n if (minRows && value.length < minRows) {\n return t('validation:lessThanMin', {\n label: t('general:rows'),\n min: minRows,\n value: value.length,\n })\n }\n\n if (maxRows && value.length > maxRows) {\n return t('validation:greaterThanMax', {\n label: t('general:rows'),\n max: maxRows,\n value: value.length,\n })\n }\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const values = Array.isArray(value) ? value : [value]\n\n const invalidRelationships = values.filter((val) => {\n let collectionSlug: string\n let requestedID\n\n if (typeof relationTo === 'string') {\n collectionSlug = relationTo\n\n // custom id\n if (val) {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collectionSlug = val.relationTo\n requestedID = val.value\n }\n\n if (requestedID === null) return false\n\n const idField = config?.collections\n ?.find((collection) => collection.slug === collectionSlug)\n ?.fields?.find((field) => fieldAffectsData(field) && field.name === 'id')\n\n const type = getIDType(idField, payload?.db?.defaultIDType)\n\n return !isValidID(requestedID, type)\n })\n\n if (invalidRelationships.length > 0) {\n return `This relationship field has the following invalid relationships: ${invalidRelationships\n .map((err, invalid) => {\n return `${err} ${JSON.stringify(invalid)}`\n })\n .join(', ')}`\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const select: Validate<unknown, unknown, unknown, SelectField> = (\n value,\n { hasMany, options, req: { t }, required },\n) => {\n if (\n Array.isArray(value) &&\n value.some(\n (input) =>\n !options.some(\n (option) => option === input || (typeof option !== 'string' && option?.value === input),\n ),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n typeof value === 'string' &&\n !options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n required &&\n (typeof value === 'undefined' ||\n value === null ||\n (hasMany && Array.isArray(value) && (value as [])?.length === 0))\n ) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const radio: Validate<unknown, unknown, unknown, RadioField> = (\n value,\n { options, req: { t }, required },\n) => {\n if (value) {\n const valueMatchesOption = options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n return valueMatchesOption || t('validation:invalidSelection')\n }\n\n return required ? t('validation:required') : true\n}\n\nexport const point: Validate<[number | string, number | string], unknown, unknown, PointField> = (\n value = ['', ''],\n { req: { t }, required },\n) => {\n const lng = parseFloat(String(value[0]))\n const lat = parseFloat(String(value[1]))\n if (\n required &&\n ((value[0] && value[1] && typeof lng !== 'number' && typeof lat !== 'number') ||\n Number.isNaN(lng) ||\n Number.isNaN(lat) ||\n (Array.isArray(value) && value.length !== 2))\n ) {\n return t('validation:requiresTwoNumbers')\n }\n\n if ((value[1] && Number.isNaN(lng)) || (value[0] && Number.isNaN(lat))) {\n return t('validation:invalidInput')\n }\n\n return true\n}\n\nexport default {\n array,\n blocks,\n checkbox,\n code,\n date,\n email,\n json,\n number,\n password,\n point,\n radio,\n relationship,\n richText,\n select,\n text,\n textarea,\n upload,\n}\n"],"names":["getIDType","isNumber","isValidID","fieldAffectsData","text","value","hasMany","maxLength","fieldMaxLength","maxRows","minLength","minRows","req","payload","config","t","required","lengthValidationResult","validateArrayLength","defaultMaxTextLength","stringsToValidate","Array","isArray","stringValue","length","label","password","email","test","textarea","code","undefined","json","jsonError","checkbox","date","isNaN","Date","parse","toString","richText","options","editor","validate","arrayLength","count","number","max","min","numbersToValidate","numberValue","parseFloat","array","blocks","validateFilterOptions","id","data","filterOptions","relationTo","user","siblingData","falseCollections","collections","values","Promise","all","map","collection","optionFilter","valueIDs","forEach","val","push","findWhere","and","in","result","find","depth","limit","pagination","where","docs","doc","err","logger","error","msg","invalidRelationships","filter","requestedID","slug","indexOf","reduce","invalid","i","JSON","stringify","upload","idField","fields","field","name","type","db","defaultIDType","relationship","collectionSlug","join","select","some","input","option","radio","valueMatchesOption","point","lng","String","lat","Number"],"mappings":"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"}
@@ -651,4 +651,4 @@ describe('Field Validations', ()=>{
651
651
  });
652
652
  });
653
653
 
654
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZhbGlkYXRlT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnL3R5cGVzLmpzJ1xuXG5pbXBvcnQgeyBudW1iZXIsIHBhc3N3b3JkLCBwb2ludCwgcmVsYXRpb25zaGlwLCBzZWxlY3QsIHRleHQsIHRleHRhcmVhIH0gZnJvbSAnLi92YWxpZGF0aW9ucy5qcydcblxuY29uc3QgdCA9IGplc3QuZm4oKHN0cmluZykgPT4gc3RyaW5nKVxuXG5sZXQgb3B0aW9uczogVmFsaWRhdGVPcHRpb25zPGFueSwgYW55PiA9IHtcbiAgZGF0YTogdW5kZWZpbmVkLFxuICBvcGVyYXRpb246ICdjcmVhdGUnLFxuICBzaWJsaW5nRGF0YTogdW5kZWZpbmVkLFxuICByZXE6IHtcbiAgICB0LFxuICAgIGNvbnRleHQ6IHt9LFxuICAgIHBheWxvYWQ6IHtcbiAgICAgIGNvbmZpZzoge30sXG4gICAgfSxcbiAgfSxcbn1cblxuZGVzY3JpYmUoJ0ZpZWxkIFZhbGlkYXRpb25zJywgKCkgPT4ge1xuICBkZXNjcmliZSgndGV4dCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rlc3QnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgb3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndG9vbG9uZydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1heExlbmd0aDogNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdzaG9ydCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1heExlbmd0aCB3aXRoIG5vIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWluTGVuZ3RoIHdpdGggbm8gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYXJyYXkgb2YgdGV4dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ3Rlc3QnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgaGFzTWFueTogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQgYXJyYXkgb2YgdGV4dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ3Rlc3QnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd0ZXh0YXJlYScsICgpID0+IHtcbiAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCBmaWVsZDogeyBuYW1lOiAndGVzdCcsIHR5cGU6ICd0ZXh0YXJlYScgfSB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndG9vbG9uZydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdzaG9ydCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCB7IC4uLm9wdGlvbnMsIG1heExlbmd0aDogNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdwYXNzd29yZCcsICgpID0+IHtcbiAgICBjb25zdCBwYXNzd29yZE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCBwYXNzd29yZE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHNob3cgcmVxdWlyZWQgbWVzc2FnZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHBhc3N3b3JkT3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rvb2xvbmcnXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnc2hvcnQnXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgbWF4TGVuZ3RoOiA1IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCB3aXRoIG5vIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgncG9pbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgcG9pbnRPcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5hbWU6ICdwb2ludCcsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgIH1cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG51bWJlcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJzAuMScsICcwLjInXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHN0cmluZ3MgdGhhdCBjb3VsZCBiZSBudW1iZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWycwLjEnLCAnMC4yJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgcG9pbnRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2Ugd2hlbiB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgeyAuLi5wb2ludE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2Ugd2hlbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHsgLi4ucG9pbnRPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlIHdoZW4gYXJyYXkgb2YgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCB7IC4uLnBvaW50T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQgbm90IHJlcXVpcmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IGFycmF5IG5vdCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGFycmF5IG9mIHVuZGVmaW5lZCBub3QgcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCB0ZXh0IGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWydiYWQnLCAnaW5wdXQnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IG1pc3NpbmcgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMC4xXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3JlbGF0aW9uc2hpcCcsICgpID0+IHtcbiAgICBjb25zdCByZWxhdGlvbkNvbGxlY3Rpb24gPSB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNsdWc6ICdyZWxhdGlvbicsXG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25zaGlwT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICByZXE6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5yZXEsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLnJlcS5wYXlsb2FkLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29sbGVjdGlvbnM6IFtyZWxhdGlvbkNvbGxlY3Rpb25dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sbGVjdGlvbnM6IHtcbiAgICAgICAgICAgIHJlbGF0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbmZpZzogcmVsYXRpb25Db2xsZWN0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlbGF0aW9uVG86ICdyZWxhdGlvbicsXG4gICAgfVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlcXVpcmVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWxhdGlvbnNoaXAodmFsLCB7IC4uLnJlbGF0aW9uc2hpcE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQgd2l0aCBoYXNNYW55JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gW11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbGF0aW9uc2hpcCh2YWwsIHtcbiAgICAgICAgLi4ucmVsYXRpb25zaGlwT3B0aW9ucyxcbiAgICAgICAgaGFzTWFueTogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgZW5mb3JjZSBoYXNNYW55IG1pbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbk9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnJlbGF0aW9uc2hpcE9wdGlvbnMsXG4gICAgICAgIGhhc01hbnk6IHRydWUsXG4gICAgICAgIG1pblJvd3M6IDIsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbCA9IFsnYSddXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbGF0aW9uc2hpcCh2YWwsIG1pbk9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuXG4gICAgICBjb25zdCBhbGxvd2VkID0gYXdhaXQgcmVsYXRpb25zaGlwKFsnYScsICdiJ10sIG1pbk9wdGlvbnMpXG4gICAgICBleHBlY3QoYWxsb3dlZCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBlbmZvcmNlIGhhc01hbnkgbWF4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWF4T3B0aW9ucyA9IHtcbiAgICAgICAgLi4ucmVsYXRpb25zaGlwT3B0aW9ucyxcbiAgICAgICAgaGFzTWFueTogdHJ1ZSxcbiAgICAgICAgbWF4Um93czogMixcbiAgICAgIH1cbiAgICAgIGxldCB2YWwgPSBbJ2EnLCAnYicsICdjJ11cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwgbWF4T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG5cbiAgICAgIHZhbCA9IFsnYSddXG4gICAgICBjb25zdCBhbGxvd2VkID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwgbWF4T3B0aW9ucylcbiAgICAgIGV4cGVjdChhbGxvd2VkKS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnc2VsZWN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgb3B0aW9uczogWydvbmUnLCAndHdvJywgJ3RocmVlJ10sXG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uc1JlcXVpcmVkID0ge1xuICAgICAgLi4uc2VsZWN0T3B0aW9ucyxcbiAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnT25lJyxcbiAgICAgICAgICB2YWx1ZTogJ29uZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ3R3bycsXG4gICAgICAgICAgdmFsdWU6ICd0d28nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICd0aHJlZScsXG4gICAgICAgICAgdmFsdWU6ICd0aHJlZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnNXaXRoRW1wdHlTdHJpbmcgPSB7XG4gICAgICAuLi5zZWxlY3RPcHRpb25zLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdOb25lJyxcbiAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ09wdGlvbicsXG4gICAgICAgICAgdmFsdWU6ICdvcHRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB2YWxpZCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdvbmUnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnYmFkJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgc2VsZWN0T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IG51bGwgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBudWxsXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB1bmRlZmluZWQgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBsZXQgdmFsXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGVtcHR5IHN0cmluZyBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCB1bmRlZmluZWQgaW5wdXQgd2l0aCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGxldCB2YWxcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgZW1wdHkgc3RyaW5nIGlucHV0IHdpdGggcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QoJycsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgdW5kZWZpbmVkIGlucHV0IHdpdGggcmVxdWlyZWQgYW5kIGhhc01hbnknLCAoKSA9PiB7XG4gICAgICBsZXQgdmFsXG4gICAgICBvcHRpb25zLmhhc01hbnkgPSB0cnVlXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGVtcHR5IGFycmF5IGlucHV0IHdpdGggcmVxdWlyZWQgYW5kIGhhc01hbnknLCAoKSA9PiB7XG4gICAgICBvcHRpb25zUmVxdWlyZWQuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdChbXSwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBlbXB0eSBzdHJpbmcgYXJyYXkgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIG9wdGlvbnMuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdChbJyddLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IG51bGwgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IG51bGxcbiAgICAgIG9wdGlvbnMuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnb25lJ1xuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBpbnZhbGlkIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnYmFkJ1xuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IGVtcHR5IHN0cmluZyBpbnB1dCB3aXRoIG9wdGlvbiBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1dpdGhFbXB0eVN0cmluZylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgZW1wdHkgc3RyaW5nIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdCBhbmQgcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnJ1xuICAgICAgb3B0aW9uc1dpdGhFbXB0eVN0cmluZy5yZXF1aXJlZCA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNXaXRoRW1wdHlTdHJpbmcpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0IHdpdGggaGFzTWFueScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsnb25lJywgJ3R3byddXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQgd2l0aCBoYXNNYW55JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWydvbmUnLCAnYmFkJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB2YWxpZCBpbnB1dCB3aXRoIGhhc01hbnkgb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ29uZScsICd0aHJlZSddXG4gICAgICBvcHRpb25zUmVxdWlyZWQuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBpbnZhbGlkIGlucHV0IHdpdGggaGFzTWFueSBvcHRpb24gb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsndGhyZWUnLCAnYmFkJ11cbiAgICAgIG9wdGlvbnNSZXF1aXJlZC5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICB9KVxuICBkZXNjcmliZSgnbnVtYmVyJywgKCkgPT4ge1xuICAgIGNvbnN0IG51bWJlck9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgfVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAxXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCBudW1iZXJPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSAwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMFxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSAyJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMS41XG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCBudW1iZXJPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IGludmFsaWQgbnVtYmVyIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndGVzdCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucyB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjplbnRlck51bWJlcicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlcXVpcmVkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5WYWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IDIuNFxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBtaW46IDIuNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1heFZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMS4yNVxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBtYXg6IDEgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzIHVzaW5nIG1pbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsxLjI1LCAyLjVdXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIGhhc01hbnk6IHRydWUsIG1pbjogMyB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIG51bWJlcnMgdXNpbmcgbWF4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWF4OiAxIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYXJyYXkgb2YgbnVtYmVycyB1c2luZyBtaW5Sb3dzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWluUm93czogNCB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzIHVzaW5nIG1heFJvd3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMS4yNSwgMi41LCAzLjVdXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIGhhc01hbnk6IHRydWUsIG1heFJvd3M6IDIgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJylcbiAgICB9KVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJudW1iZXIiLCJwYXNzd29yZCIsInBvaW50IiwicmVsYXRpb25zaGlwIiwic2VsZWN0IiwidGV4dCIsInRleHRhcmVhIiwidCIsImplc3QiLCJmbiIsInN0cmluZyIsIm9wdGlvbnMiLCJkYXRhIiwidW5kZWZpbmVkIiwib3BlcmF0aW9uIiwic2libGluZ0RhdGEiLCJyZXEiLCJjb250ZXh0IiwicGF5bG9hZCIsImNvbmZpZyIsImRlc2NyaWJlIiwiaXQiLCJ2YWwiLCJyZXN1bHQiLCJleHBlY3QiLCJ0b0JlIiwicmVxdWlyZWQiLCJtYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJoYXNNYW55IiwiZmllbGQiLCJuYW1lIiwidHlwZSIsInBhc3N3b3JkT3B0aW9ucyIsInBvaW50T3B0aW9ucyIsIm5vdCIsInJlbGF0aW9uQ29sbGVjdGlvbiIsImZpZWxkcyIsInNsdWciLCJyZWxhdGlvbnNoaXBPcHRpb25zIiwiY29sbGVjdGlvbnMiLCJyZWxhdGlvbiIsInJlbGF0aW9uVG8iLCJtaW5PcHRpb25zIiwibWluUm93cyIsImFsbG93ZWQiLCJ0b1N0cmljdEVxdWFsIiwibWF4T3B0aW9ucyIsIm1heFJvd3MiLCJzZWxlY3RPcHRpb25zIiwib3B0aW9uc1JlcXVpcmVkIiwibGFiZWwiLCJ2YWx1ZSIsIm9wdGlvbnNXaXRoRW1wdHlT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
654
+ //# sourceMappingURL=validations.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/fields/validations.spec.ts"],"sourcesContent":["import type { ValidateOptions } from './config/types.js'\n\nimport { number, password, point, relationship, select, text, textarea } from './validations.js'\n\nconst t = jest.fn((string) => string)\n\nlet options: ValidateOptions<any, any> = {\n data: undefined,\n operation: 'create',\n siblingData: undefined,\n req: {\n t,\n context: {},\n payload: {\n config: {},\n },\n },\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 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 })\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 = {\n ...options,\n name: 'point',\n type: 'point',\n }\n it('should validate numbers', () => {\n const val = ['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 = ['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 })\n\n describe('relationship', () => {\n const relationCollection = {\n fields: [\n {\n name: 'id',\n type: 'text',\n },\n ],\n slug: 'relation',\n }\n\n const relationshipOptions = {\n ...options,\n req: {\n ...options.req,\n payload: {\n ...options.req.payload,\n config: {\n collections: [relationCollection],\n },\n collections: {\n relation: {\n config: relationCollection,\n },\n },\n },\n },\n relationTo: 'relation',\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 = {\n ...options,\n options: ['one', 'two', 'three'],\n type: 'select',\n }\n const optionsRequired = {\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 = {\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', () => {\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 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":["number","password","point","relationship","select","text","textarea","t","jest","fn","string","options","data","undefined","operation","siblingData","req","context","payload","config","describe","it","val","result","expect","toBe","required","maxLength","minLength","hasMany","field","name","type","passwordOptions","pointOptions","not","relationCollection","fields","slug","relationshipOptions","collections","relation","relationTo","minOptions","minRows","allowed","toStrictEqual","maxOptions","maxRows","selectOptions","optionsRequired","label","value","optionsWithEmptyString","numberOptions","min","max"],"mappings":"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"}
@@ -95,4 +95,4 @@ const sanitizeGlobals = (config)=>{
95
95
  };
96
96
  export default sanitizeGlobals;
97
97
 
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2NvbmZpZy9zYW5pdGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRyYWN0VHJhbnNsYXRpb25zIH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5cbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5pbXBvcnQgZGVmYXVsdEFjY2VzcyBmcm9tICcuLi8uLi9hdXRoL2RlZmF1bHRBY2Nlc3MuanMnXG5pbXBvcnQgeyBzYW5pdGl6ZUZpZWxkcyB9IGZyb20gJy4uLy4uL2ZpZWxkcy9jb25maWcvc2FuaXRpemUuanMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcy5qcydcbmltcG9ydCBtZXJnZUJhc2VGaWVsZHMgZnJvbSAnLi4vLi4vZmllbGRzL21lcmdlQmFzZUZpZWxkcy5qcydcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZm9ybWF0TGFiZWxzLmpzJ1xuaW1wb3J0IGJhc2VWZXJzaW9uRmllbGRzIGZyb20gJy4uLy4uL3ZlcnNpb25zL2Jhc2VGaWVsZHMuanMnXG5cbmNvbnN0IHRyYW5zbGF0aW9ucyA9IGV4dHJhY3RUcmFuc2xhdGlvbnMoWydnZW5lcmFsOmNyZWF0ZWRBdCcsICdnZW5lcmFsOnVwZGF0ZWRBdCddKVxuXG5jb25zdCBzYW5pdGl6ZUdsb2JhbHMgPSAoY29uZmlnOiBDb25maWcpOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdbXSA9PiB7XG4gIGNvbnN0IHsgY29sbGVjdGlvbnMsIGdsb2JhbHMgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHNhbml0aXplZEdsb2JhbHMgPSBnbG9iYWxzLm1hcCgoZ2xvYmFsKSA9PiB7XG4gICAgY29uc3Qgc2FuaXRpemVkR2xvYmFsID0geyAuLi5nbG9iYWwgfVxuXG4gICAgc2FuaXRpemVkR2xvYmFsLmxhYmVsID0gc2FuaXRpemVkR2xvYmFsLmxhYmVsIHx8IHRvV29yZHMoc2FuaXRpemVkR2xvYmFsLnNsdWcpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBFbnN1cmUgdGhhdCBjb2xsZWN0aW9uIGhhcyByZXF1aXJlZCBvYmplY3Qgc3RydWN0dXJlXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBzYW5pdGl6ZWRHbG9iYWwuZW5kcG9pbnRzID0gc2FuaXRpemVkR2xvYmFsLmVuZHBvaW50cyA/PyBbXVxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmhvb2tzKSBzYW5pdGl6ZWRHbG9iYWwuaG9va3MgPSB7fVxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmFjY2Vzcykgc2FuaXRpemVkR2xvYmFsLmFjY2VzcyA9IHt9XG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuYWRtaW4pIHNhbml0aXplZEdsb2JhbC5hZG1pbiA9IHt9XG5cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5hY2Nlc3MucmVhZCkgc2FuaXRpemVkR2xvYmFsLmFjY2Vzcy5yZWFkID0gZGVmYXVsdEFjY2Vzc1xuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmFjY2Vzcy51cGRhdGUpIHNhbml0aXplZEdsb2JhbC5hY2Nlc3MudXBkYXRlID0gZGVmYXVsdEFjY2Vzc1xuXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYmVmb3JlVmFsaWRhdGUpIHNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVWYWxpZGF0ZSA9IFtdXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYmVmb3JlQ2hhbmdlKSBzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYmVmb3JlQ2hhbmdlID0gW11cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5ob29rcy5hZnRlckNoYW5nZSkgc2FuaXRpemVkR2xvYmFsLmhvb2tzLmFmdGVyQ2hhbmdlID0gW11cbiAgICBpZiAoIXNhbml0aXplZEdsb2JhbC5ob29rcy5iZWZvcmVSZWFkKSBzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYmVmb3JlUmVhZCA9IFtdXG4gICAgaWYgKCFzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYWZ0ZXJSZWFkKSBzYW5pdGl6ZWRHbG9iYWwuaG9va3MuYWZ0ZXJSZWFkID0gW11cblxuICAgIGlmIChzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMpIHtcbiAgICAgIGlmIChzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMgPT09IHRydWUpIHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucyA9IHsgZHJhZnRzOiBmYWxzZSB9XG5cbiAgICAgIGlmIChzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMuZHJhZnRzKSB7XG4gICAgICAgIGlmIChzYW5pdGl6ZWRHbG9iYWwudmVyc2lvbnMuZHJhZnRzID09PSB0cnVlKSB7XG4gICAgICAgICAgc2FuaXRpemVkR2xvYmFsLnZlcnNpb25zLmRyYWZ0cyA9IHtcbiAgICAgICAgICAgIGF1dG9zYXZlOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2FuaXRpemVkR2xvYmFsLnZlcnNpb25zLmRyYWZ0cy5hdXRvc2F2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHNhbml0aXplZEdsb2JhbC52ZXJzaW9ucy5kcmFmdHMuYXV0b3NhdmUgPSB7XG4gICAgICAgICAgICBpbnRlcnZhbDogMjAwMCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzYW5pdGl6ZWRHbG9iYWwuZmllbGRzID0gbWVyZ2VCYXNlRmllbGRzKHNhbml0aXplZEdsb2JhbC5maWVsZHMsIGJhc2VWZXJzaW9uRmllbGRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc2FuaXRpemVkR2xvYmFsLmN1c3RvbSkgc2FuaXRpemVkR2xvYmFsLmN1c3RvbSA9IHt9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBTYW5pdGl6ZSBmaWVsZHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBsZXQgaGFzVXBkYXRlZEF0ID0gbnVsbFxuICAgIGxldCBoYXNDcmVhdGVkQXQgPSBudWxsXG4gICAgc2FuaXRpemVkR2xvYmFsLmZpZWxkcy5zb21lKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICAgIGlmIChmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0JykgaGFzVXBkYXRlZEF0ID0gdHJ1ZVxuICAgICAgICBpZiAoZmllbGQubmFtZSA9PT0gJ2NyZWF0ZWRBdCcpIGhhc0NyZWF0ZWRBdCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNDcmVhdGVkQXQgJiYgaGFzVXBkYXRlZEF0XG4gICAgfSlcbiAgICBpZiAoIWhhc1VwZGF0ZWRBdCkge1xuICAgICAgc2FuaXRpemVkR2xvYmFsLmZpZWxkcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3VwZGF0ZWRBdCcsXG4gICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkaXNhYmxlQnVsa0VkaXQ6IHRydWUsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zWydnZW5lcmFsOnVwZGF0ZWRBdCddLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKCFoYXNDcmVhdGVkQXQpIHtcbiAgICAgIHNhbml0aXplZEdsb2JhbC5maWVsZHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdjcmVhdGVkQXQnLFxuICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGlzYWJsZUJ1bGtFZGl0OiB0cnVlLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1snZ2VuZXJhbDpjcmVhdGVkQXQnXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gY29sbGVjdGlvbnMubWFwKChjKSA9PiBjLnNsdWcpIHx8IFtdXG4gICAgc2FuaXRpemVkR2xvYmFsLmZpZWxkcyA9IHNhbml0aXplRmllbGRzKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZpZWxkczogc2FuaXRpemVkR2xvYmFsLmZpZWxkcyxcbiAgICAgIHZhbGlkUmVsYXRpb25zaGlwcyxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHNhbml0aXplZEdsb2JhbCBhcyBTYW5pdGl6ZWRHbG9iYWxDb25maWdcbiAgfSlcblxuICByZXR1cm4gc2FuaXRpemVkR2xvYmFsc1xufVxuXG5leHBvcnQgZGVmYXVsdCBzYW5pdGl6ZUdsb2JhbHNcbiJdLCJuYW1lcyI6WyJleHRyYWN0VHJhbnNsYXRpb25zIiwiZGVmYXVsdEFjY2VzcyIsInNhbml0aXplRmllbGRzIiwiZmllbGRBZmZlY3RzRGF0YSIsIm1lcmdlQmFzZUZpZWxkcyIsInRvV29yZHMiLCJiYXNlVmVyc2lvbkZpZWxkcyIsInRyYW5zbGF0aW9ucyIsInNhbml0aXplR2xvYmFscyIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZ2xvYmFscyIsInNhbml0aXplZEdsb2JhbHMiLCJtYXAiLCJnbG9iYWwiLCJzYW5pdGl6ZWRHbG9iYWwiLCJsYWJlbCIsInNsdWciLCJlbmRwb2ludHMiLCJob29rcyIsImFjY2VzcyIsImFkbWluIiwicmVhZCIsInVwZGF0ZSIsImJlZm9yZVZhbGlkYXRlIiwiYmVmb3JlQ2hhbmdlIiwiYWZ0ZXJDaGFuZ2UiLCJiZWZvcmVSZWFkIiwiYWZ0ZXJSZWFkIiwidmVyc2lvbnMiLCJkcmFmdHMiLCJhdXRvc2F2ZSIsImludGVydmFsIiwiZmllbGRzIiwiY3VzdG9tIiwiaGFzVXBkYXRlZEF0IiwiaGFzQ3JlYXRlZEF0Iiwic29tZSIsImZpZWxkIiwibmFtZSIsInB1c2giLCJ0eXBlIiwiZGlzYWJsZUJ1bGtFZGl0IiwiaGlkZGVuIiwidmFsaWRSZWxhdGlvbnNoaXBzIiwiYyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsbUJBQW1CLFFBQVEsb0JBQW1CO0FBS3ZELE9BQU9DLG1CQUFtQiw4QkFBNkI7QUFDdkQsU0FBU0MsY0FBYyxRQUFRLGtDQUFpQztBQUNoRSxTQUFTQyxnQkFBZ0IsUUFBUSwrQkFBOEI7QUFDL0QsT0FBT0MscUJBQXFCLGtDQUFpQztBQUM3RCxTQUFTQyxPQUFPLFFBQVEsa0NBQWlDO0FBQ3pELE9BQU9DLHVCQUF1QiwrQkFBOEI7QUFFNUQsTUFBTUMsZUFBZVAsb0JBQW9CO0lBQUM7SUFBcUI7Q0FBb0I7QUFFbkYsTUFBTVEsa0JBQWtCLENBQUNDO0lBQ3ZCLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUUsR0FBR0Y7SUFFakMsTUFBTUcsbUJBQW1CRCxRQUFRRSxHQUFHLENBQUMsQ0FBQ0M7UUFDcEMsTUFBTUMsa0JBQWtCO1lBQUUsR0FBR0QsTUFBTTtRQUFDO1FBRXBDQyxnQkFBZ0JDLEtBQUssR0FBR0QsZ0JBQWdCQyxLQUFLLElBQUlYLFFBQVFVLGdCQUFnQkUsSUFBSTtRQUU3RSxvQ0FBb0M7UUFDcEMsdURBQXVEO1FBQ3ZELG9DQUFvQztRQUVwQ0YsZ0JBQWdCRyxTQUFTLEdBQUdILGdCQUFnQkcsU0FBUyxJQUFJLEVBQUU7UUFDM0QsSUFBSSxDQUFDSCxnQkFBZ0JJLEtBQUssRUFBRUosZ0JBQWdCSSxLQUFLLEdBQUcsQ0FBQztRQUNyRCxJQUFJLENBQUNKLGdCQUFnQkssTUFBTSxFQUFFTCxnQkFBZ0JLLE1BQU0sR0FBRyxDQUFDO1FBQ3ZELElBQUksQ0FBQ0wsZ0JBQWdCTSxLQUFLLEVBQUVOLGdCQUFnQk0sS0FBSyxHQUFHLENBQUM7UUFFckQsSUFBSSxDQUFDTixnQkFBZ0JLLE1BQU0sQ0FBQ0UsSUFBSSxFQUFFUCxnQkFBZ0JLLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHckI7UUFDaEUsSUFBSSxD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
98
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/config/sanitize.ts"],"sourcesContent":["import { extractTranslations } from 'payload/utilities'\n\nimport type { Config } from '../../config/types.js'\nimport type { 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 { toWords } from '../../utilities/formatLabels.js'\nimport baseVersionFields from '../../versions/baseFields.js'\n\nconst translations = extractTranslations(['general:createdAt', 'general:updatedAt'])\n\nconst sanitizeGlobals = (config: Config): SanitizedGlobalConfig[] => {\n const { collections, globals } = config\n\n const sanitizedGlobals = globals.map((global) => {\n const sanitizedGlobal = { ...global }\n\n sanitizedGlobal.label = sanitizedGlobal.label || toWords(sanitizedGlobal.slug)\n\n // /////////////////////////////////\n // Ensure that collection has required object structure\n // /////////////////////////////////\n\n sanitizedGlobal.endpoints = sanitizedGlobal.endpoints ?? []\n if (!sanitizedGlobal.hooks) sanitizedGlobal.hooks = {}\n if (!sanitizedGlobal.access) sanitizedGlobal.access = {}\n if (!sanitizedGlobal.admin) sanitizedGlobal.admin = {}\n\n if (!sanitizedGlobal.access.read) sanitizedGlobal.access.read = defaultAccess\n if (!sanitizedGlobal.access.update) sanitizedGlobal.access.update = defaultAccess\n\n if (!sanitizedGlobal.hooks.beforeValidate) sanitizedGlobal.hooks.beforeValidate = []\n if (!sanitizedGlobal.hooks.beforeChange) sanitizedGlobal.hooks.beforeChange = []\n if (!sanitizedGlobal.hooks.afterChange) sanitizedGlobal.hooks.afterChange = []\n if (!sanitizedGlobal.hooks.beforeRead) sanitizedGlobal.hooks.beforeRead = []\n if (!sanitizedGlobal.hooks.afterRead) sanitizedGlobal.hooks.afterRead = []\n\n if (sanitizedGlobal.versions) {\n if (sanitizedGlobal.versions === true) sanitizedGlobal.versions = { drafts: false }\n\n if (sanitizedGlobal.versions.drafts) {\n if (sanitizedGlobal.versions.drafts === true) {\n sanitizedGlobal.versions.drafts = {\n autosave: false,\n }\n }\n\n if (sanitizedGlobal.versions.drafts.autosave === true) {\n sanitizedGlobal.versions.drafts.autosave = {\n interval: 2000,\n }\n }\n\n sanitizedGlobal.fields = mergeBaseFields(sanitizedGlobal.fields, baseVersionFields)\n }\n }\n\n if (!sanitizedGlobal.custom) sanitizedGlobal.custom = {}\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n let hasUpdatedAt = null\n let hasCreatedAt = null\n sanitizedGlobal.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') hasUpdatedAt = true\n if (field.name === 'createdAt') hasCreatedAt = true\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n sanitizedGlobal.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: translations['general:updatedAt'],\n })\n }\n if (!hasCreatedAt) {\n sanitizedGlobal.fields.push({\n name: 'createdAt',\n type: 'date',\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n label: translations['general:createdAt'],\n })\n }\n\n const validRelationships = collections.map((c) => c.slug) || []\n sanitizedGlobal.fields = sanitizeFields({\n config,\n fields: sanitizedGlobal.fields,\n validRelationships,\n })\n\n return sanitizedGlobal as SanitizedGlobalConfig\n })\n\n return sanitizedGlobals\n}\n\nexport default sanitizeGlobals\n"],"names":["extractTranslations","defaultAccess","sanitizeFields","fieldAffectsData","mergeBaseFields","toWords","baseVersionFields","translations","sanitizeGlobals","config","collections","globals","sanitizedGlobals","map","global","sanitizedGlobal","label","slug","endpoints","hooks","access","admin","read","update","beforeValidate","beforeChange","afterChange","beforeRead","afterRead","versions","drafts","autosave","interval","fields","custom","hasUpdatedAt","hasCreatedAt","some","field","name","push","type","disableBulkEdit","hidden","validRelationships","c"],"mappings":"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"}
@@ -65,4 +65,4 @@ const globalSchema = joi.object().keys({
65
65
  }).unknown();
66
66
  export default globalSchema;
67
67
 
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2NvbmZpZy9zY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGpvaSBmcm9tICdqb2knXG5cbmltcG9ydCB7IGVuZHBvaW50c1NjaGVtYSB9IGZyb20gJy4uLy4uL2NvbmZpZy9zY2hlbWEuanMnXG5pbXBvcnQge1xuICBjb21wb25lbnRTY2hlbWEsXG4gIGN1c3RvbVZpZXdTY2hlbWEsXG4gIGxpdmVQcmV2aWV3U2NoZW1hLFxufSBmcm9tICcuLi8uLi9jb25maWcvc2hhcmVkL2NvbXBvbmVudFNjaGVtYS5qcydcblxuY29uc3QgZ2xvYmFsU2NoZW1hID0gam9pXG4gIC5vYmplY3QoKVxuICAua2V5cyh7XG4gICAgc2x1Zzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgYWNjZXNzOiBqb2kub2JqZWN0KHtcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICByZWFkVmVyc2lvbnM6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGpvaS5vYmplY3Qoe1xuICAgICAgY29tcG9uZW50czogam9pLm9iamVjdCh7XG4gICAgICAgIGVsZW1lbnRzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgICBQcmV2aWV3QnV0dG9uOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgICAgUHVibGlzaEJ1dHRvbjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgIFNhdmVCdXR0b246IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgICBTYXZlRHJhZnRCdXR0b246IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgfSksXG4gICAgICAgIHZpZXdzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgICBFZGl0OiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICAgICAgY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgICAgICAgIEFQSTogam9pLmFsdGVybmF0aXZlcygpLnRyeShjb21wb25lbnRTY2hlbWEsIGN1c3RvbVZpZXdTY2hlbWEpLFxuICAgICAgICAgICAgICBEZWZhdWx0OiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGNvbXBvbmVudFNjaGVtYSwgY3VzdG9tVmlld1NjaGVtYSksXG4gICAgICAgICAgICAgIFByZXZpZXc6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoY29tcG9uZW50U2NoZW1hLCBjdXN0b21WaWV3U2NoZW1hKSxcbiAgICAgICAgICAgICAgVmVyc2lvbjogam9pLmFsdGVybmF0aXZlcygpLnRyeShjb21wb25lbnRTY2hlbWEsIGN1c3RvbVZpZXdTY2hlbWEpLFxuICAgICAgICAgICAgICBWZXJzaW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShjb21wb25lbnRTY2hlbWEsIGN1c3RvbVZpZXdTY2hlbWEpLFxuICAgICAgICAgICAgICAvLyBSZWxhdGlvbnNoaXBzXG4gICAgICAgICAgICAgIC8vIFJlZmVyZW5jZXNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBncm91cDogam9pXG4gICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgaGlkZGVuOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5mdW5jKCkpLFxuICAgICAgaGlkZUFQSVVSTDogam9pLmJvb2xlYW4oKSxcbiAgICAgIGxpdmVQcmV2aWV3OiBqb2kub2JqZWN0KGxpdmVQcmV2aWV3U2NoZW1hKSxcbiAgICAgIHByZXZpZXc6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgZW5kcG9pbnRzOiBlbmRwb2ludHNTY2hlbWEsXG4gICAgZmllbGRzOiBqb2kuYXJyYXkoKSxcbiAgICBncmFwaFFMOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICBuYW1lOiBqb2kuc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICAgIGpvaS5ib29sZWFuKCksXG4gICAgKSxcbiAgICBob29rczogam9pLm9iamVjdCh7XG4gICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gICAgICBhZnRlclJlYWQ6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgICAgYmVmb3JlQ2hhbmdlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICAgIGJlZm9yZVJlYWQ6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgICAgYmVmb3JlVmFsaWRhdGU6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgIH0pLFxuICAgIGxhYmVsOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgIHR5cGVzY3JpcHQ6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGludGVyZmFjZTogam9pLnN0cmluZygpLFxuICAgIH0pLFxuICAgIHZlcnNpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgIGRyYWZ0czogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICAgIGF1dG9zYXZlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICAgICAgICBqb2kuYm9vbGVhbigpLFxuICAgICAgICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogam9pLm51bWJlcigpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgam9pLmJvb2xlYW4oKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWF4OiBqb2kubnVtYmVyKCksXG4gICAgICB9KSxcbiAgICAgIGpvaS5ib29sZWFuKCksXG4gICAgKSxcbiAgfSlcbiAgLnVua25vd24oKVxuXG5leHBvcnQgZGVmYXVsdCBnbG9iYWxTY2hlbWFcbiJdLCJuYW1lcyI6WyJqb2kiLCJlbmRwb2ludHNTY2hlbWEiLCJjb21wb25lbnRTY2hlbWEiLCJjdXN0b21WaWV3U2NoZW1hIiwibGl2ZVByZXZpZXdTY2hlbWEiLCJnbG9iYWxTY2hlbWEiLCJvYmplY3QiLCJrZXlzIiwic2x1ZyIsInN0cmluZyIsInJlcXVpcmVkIiwiYWNjZXNzIiwicmVhZCIsImZ1bmMiLCJyZWFkVmVyc2lvbnMiLCJ1cGRhdGUiLCJhZG1pbiIsImNvbXBvbmVudHMiLCJlbGVtZW50cyIsIlByZXZpZXdCdXR0b24iLCJQdWJsaXNoQnV0dG9uIiwiU2F2ZUJ1dHRvbiIsIlNhdmVEcmFmdEJ1dHRvbiIsInZpZXdzIiwiRWRpdCIsImFsdGVybmF0aXZlcyIsInRyeSIsIkFQSSIsIkRlZmF1bHQiLCJQcmV2aWV3IiwiVmVyc2lvbiIsIlZlcnNpb25zIiwiZGVzY3JpcHRpb24iLCJncm91cCIsInBhdHRlcm4iLCJoaWRkZW4iLCJib29sZWFuIiwiaGlkZUFQSVVSTCIsImxpdmVQcmV2aWV3IiwicHJldmlldyIsImN1c3RvbSIsImFueSIsImVuZHBvaW50cyIsImZpZWxkcyIsImFycmF5IiwiZ3JhcGhRTCIsIm5hbWUiLCJob29rcyIsImFmdGVyQ2hhbmdlIiwiaXRlbXMiLCJhZnRlclJlYWQiLCJiZWZvcmVDaGFuZ2UiLCJiZWZvcmVSZWFkIiwiYmVmb3JlVmFsaWRhdGUiLCJsYWJlbCIsInR5cGVzY3JpcHQiLCJpbnRlcmZhY2UiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsImF1dG9zYXZlIiwiaW50ZXJ2YWwiLCJudW1iZXIiLCJtYXgiLCJ1bmtub3duIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxTQUFTLE1BQUs7QUFFckIsU0FBU0MsZUFBZSxRQUFRLHlCQUF3QjtBQUN4RCxTQUNFQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsaUJBQWlCLFFBQ1oseUNBQXdDO0FBRS9DLE1BQU1DLGVBQWVMLElBQ2xCTSxNQUFNLEdBQ05DLElBQUksQ0FBQztJQUNKQyxNQUFNUixJQUFJUyxNQUFNLEdBQUdDLFFBQVE7SUFDM0JDLFFBQVFYLElBQUlNLE1BQU0sQ0FBQztRQUNqQk0sTUFBTVosSUFBSWEsSUFBSTtRQUNkQyxjQUFjZCxJQUFJYSxJQUFJO1FBQ3RCRSxRQUFRZixJQUFJYSxJQUFJO0lBQ2xCO0lBQ0FHLE9BQU9oQixJQUFJTSxNQUFNLENBQUM7UUFDaEJXLFlBQVlqQixJQUFJTSxNQUFNLENBQUM7WUFDckJZLFVBQVVsQixJQUFJTSxNQUFNLENBQUM7Z0JBQ25CYSxlQUFlakI7Z0JBQ2ZrQixlQUFlbEI7Z0JBQ2ZtQixZQUFZbkI7Z0JBQ1pvQixpQkFBaUJwQjtZQUNuQjtZQUNBcUIsT0FBT3ZCLElBQUlNLE1BQU0sQ0FBQztnQkFDaEJrQixNQUFNeEIsSUFBSXlCLFlBQVksR0FBR0MsR0FBRyxDQUMxQnhCLGlCQUNBRixJQUFJTSxNQUFNLENBQUM7b0JBQ1RxQixLQUFLM0IsSUFBSXlCLFlBQVksR0FBR0MsR0FBRyxDQUFDeEIsaUJBQWlCQztvQkFDN0N5QixTQUFTNUIsSUFBSXlCLFlBQVksR0FBR0MsR0FBRyxDQUFDeEIsaUJBQWlCQztvQkFDakQwQixTQUFTN0IsSUFBSXlCLFlBQVksR0FBR0MsR0FBRyxDQUFDeEIsaUJBQWlCQztvQkFDakQyQixTQUFTOUIsSUFBSXlCLFlBQVksR0FBR0MsR0FBRyxDQUFDeEIsaUJBQWlC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
68
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { endpointsSchema } from '../../config/schema.js'\nimport {\n componentSchema,\n customViewSchema,\n livePreviewSchema,\n} from '../../config/shared/componentSchema.js'\n\nconst globalSchema = joi\n .object()\n .keys({\n slug: joi.string().required(),\n access: joi.object({\n read: joi.func(),\n readVersions: joi.func(),\n update: joi.func(),\n }),\n admin: joi.object({\n components: joi.object({\n elements: joi.object({\n PreviewButton: componentSchema,\n PublishButton: componentSchema,\n SaveButton: componentSchema,\n SaveDraftButton: componentSchema,\n }),\n views: joi.object({\n Edit: joi.alternatives().try(\n componentSchema,\n joi.object({\n API: joi.alternatives().try(componentSchema, customViewSchema),\n Default: joi.alternatives().try(componentSchema, customViewSchema),\n Preview: joi.alternatives().try(componentSchema, customViewSchema),\n Version: joi.alternatives().try(componentSchema, customViewSchema),\n Versions: joi.alternatives().try(componentSchema, customViewSchema),\n // Relationships\n // References\n }),\n ),\n }),\n }),\n description: joi.alternatives().try(joi.string(), componentSchema),\n group: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n hidden: joi.alternatives().try(joi.boolean(), joi.func()),\n hideAPIURL: joi.boolean(),\n livePreview: joi.object(livePreviewSchema),\n preview: joi.func(),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n endpoints: endpointsSchema,\n fields: joi.array(),\n graphQL: joi.alternatives().try(\n joi.object().keys({\n name: joi.string(),\n }),\n joi.boolean(),\n ),\n hooks: joi.object({\n afterChange: joi.array().items(joi.func()),\n afterRead: joi.array().items(joi.func()),\n beforeChange: joi.array().items(joi.func()),\n beforeRead: joi.array().items(joi.func()),\n beforeValidate: joi.array().items(joi.func()),\n }),\n label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n typescript: joi.object().keys({\n interface: joi.string(),\n }),\n versions: joi.alternatives().try(\n joi.object({\n drafts: joi.alternatives().try(\n joi.object({\n autosave: joi.alternatives().try(\n joi.boolean(),\n joi.object({\n interval: joi.number(),\n }),\n ),\n }),\n joi.boolean(),\n ),\n max: joi.number(),\n }),\n joi.boolean(),\n ),\n })\n .unknown()\n\nexport default globalSchema\n"],"names":["joi","endpointsSchema","componentSchema","customViewSchema","livePreviewSchema","globalSchema","object","keys","slug","string","required","access","read","func","readVersions","update","admin","components","elements","PreviewButton","PublishButton","SaveButton","SaveDraftButton","views","Edit","alternatives","try","API","Default","Preview","Version","Versions","description","group","pattern","hidden","boolean","hideAPIURL","livePreview","preview","custom","any","endpoints","fields","array","graphQL","name","hooks","afterChange","items","afterRead","beforeChange","beforeRead","beforeValidate","label","typescript","interface","versions","drafts","autosave","interval","number","max","unknown"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { };
2
2
 
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2NvbmZpZy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMT2JqZWN0VHlwZSB9IGZyb20gJ2dyYXBocWwnXG5pbXBvcnQgdHlwZSB7IERlZXBSZXF1aXJlZCB9IGZyb20gJ3RzLWVzc2VudGlhbHMnXG5cbmltcG9ydCB0eXBlIHtcbiAgQ3VzdG9tUHJldmlld0J1dHRvblByb3BzLFxuICBDdXN0b21QdWJsaXNoQnV0dG9uUHJvcHMsXG4gIEN1c3RvbVNhdmVCdXR0b25Qcm9wcyxcbiAgQ3VzdG9tU2F2ZURyYWZ0QnV0dG9uUHJvcHMsXG59IGZyb20gJy4uLy4uL2FkbWluL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi4vLi4vYXV0aC90eXBlcy5qcydcbmltcG9ydCB0eXBlIHtcbiAgQWNjZXNzLFxuICBFZGl0Vmlld0NvbXBvbmVudCxcbiAgRWRpdFZpZXdDb25maWcsXG4gIEVuZHBvaW50LFxuICBFbnRpdHlEZXNjcmlwdGlvbixcbiAgR2VuZXJhdGVQcmV2aWV3VVJMLFxuICBMaXZlUHJldmlld0NvbmZpZyxcbn0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4uLy4uL2ZpZWxkcy9jb25maWcvdHlwZXMuanMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzL2luZGV4LmpzJ1xuaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uL3R5cGVzL2luZGV4LmpzJ1xuaW1wb3J0IHR5cGUgeyBJbmNvbWluZ0dsb2JhbFZlcnNpb25zLCBTYW5pdGl6ZWRHbG9iYWxWZXJzaW9ucyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL3R5cGVzLmpzJ1xuXG5leHBvcnQgdHlwZSBUeXBlV2l0aElEID0ge1xuICBpZDogbnVtYmVyIHwgc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEJlZm9yZVZhbGlkYXRlSG9vayA9IChhcmdzOiB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE/OiBhbnlcbiAgLyoqIFRoZSBnbG9iYWwgd2hpY2ggdGhpcyBob29rIGlzIGJlaW5nIHJ1biBvbiAqL1xuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBvcmlnaW5hbERvYz86IGFueVxuICByZXE/OiBQYXlsb2FkUmVxdWVzdFxufSkgPT4gYW55XG5cbmV4cG9ydCB0eXBlIEJlZm9yZUNoYW5nZUhvb2sgPSAoYXJnczoge1xuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICBkYXRhOiBhbnlcbiAgLyoqIFRoZSBnbG9iYWwgd2hpY2ggdGhpcyBob29rIGlzIGJlaW5nIHJ1biBvbiAqL1xuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBvcmlnaW5hbERvYz86IGFueVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59KSA9PiBhbnlcblxuZXhwb3J0IHR5cGUgQWZ0ZXJDaGFuZ2VIb29rID0gKGFyZ3M6IHtcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZG9jOiBhbnlcbiAgLyoqIFRoZSBnbG9iYWwgd2hpY2ggdGhpcyBob29rIGlzIGJlaW5nIHJ1biBvbiAqL1xuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBwcmV2aW91c0RvYzogYW55XG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pID0+IGFueVxuXG5leHBvcnQgdHlwZSBCZWZvcmVSZWFkSG9vayA9IChhcmdzOiB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRvYzogYW55XG4gIC8qKiBUaGUgZ2xvYmFsIHdoaWNoIHRoaXMgaG9vayBpcyBiZWluZyBydW4gb24gKi9cbiAgZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxufSkgPT4gYW55XG5cbmV4cG9ydCB0eXBlIEFmdGVyUmVhZEhvb2sgPSAoYXJnczoge1xuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICBkb2M6IGFueVxuICBmaW5kTWFueT86IGJvb2xlYW5cbiAgLyoqIFRoZSBnbG9iYWwgd2hpY2ggdGhpcyBob29rIGlzIGJlaW5nIHJ1biBvbiAqL1xuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBxdWVyeT86IFdoZXJlXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pID0+IGFueVxuXG5leHBvcnQgdHlwZSBHbG9iYWxBZG1pbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBDdXN0b20gYWRtaW4gY29tcG9uZW50c1xuICAgKi9cbiAgY29tcG9uZW50cz86IHtcbiAgICBlbGVtZW50cz86IHtcbiAgICAgIC8qKlxuICAgICAgICogUmVwbGFjZXMgdGhlIFwiUHJldmlld1wiIGJ1dHRvblxuICAgICAgICovXG4gICAgICBQcmV2aWV3QnV0dG9uPzogQ3VzdG9tUHJldmlld0J1dHRvblByb3BzXG4gICAgICAvKipcbiAgICAgICAqIFJlcGxhY2VzIHRoZSBcIlB1Ymxpc2hcIiBidXR0b25cbiAgICAgICAqICsgZHJhZnRzIG11c3QgYmUgZW5hYmxlZFxuICAgICAgICovXG4gICAgICBQdWJsaXNoQnV0dG9uPzogQ3VzdG9tUHVibGlzaEJ1dHRvblByb3BzXG4gICAgICAvKipcbiAgICAgICAqIFJlcGxhY2VzIHRoZSBcIlNhdmVcIiBidXR0b25cbiAgICAgICAqICsgZHJhZnRzIG11c3QgYmUgZGlzYWJsZWRcbiAgICAgICAqL1xuICAgICAgU2F2ZUJ1dHRvbj86IEN1c3RvbVNhdmVCdXR0b25Qcm9wc1xuICAgICAgLyoqXG4gICAgICAgKiBSZXBsYWNlcyB0aGUgXCJTYXZlIERyYWZ0XCIgYnV0dG9uXG4gICAgICAgKiArIGRyYWZ0cyBtdXN0IGJlIGVuYWJsZWRcbiAgICAgICAqICsgYXV0b3NhdmUgbXVzdCBiZSBkaXNhYmxlZFxuICAgICAgICovXG4gICAgICBTYXZlRHJhZnRCdXR0b24/OiBDdXN0b21TYXZlRHJhZnRCdXR0b25Qcm9wc1xuICAgIH1cbiAgICB2aWV3cz86IHtcbiAgICAgIC8qKlxuICAgICAgICogU2V0IHRvIGEgUmVhY3QgY29tcG9uZW50IHRvIHJlcGxhY2UgdGhlIGVudGlyZSBcIkVkaXRcIiB2aWV3LCBpbmNsdWRpbmcgYWxsIG5lc3RlZCByb3V0ZXMuXG4gICAgICAgKiBTZXQgdG8gYW4gb2JqZWN0IHRvIHJlcGxhY2Ugb3IgbW9kaWZ5IGluZGl2aWR1YWwgbmVzdGVkIHJvdXRlcywgb3IgdG8gYWRkIG5ldyBvbmVzLlxuICAgICAgICovXG4gICAgICBFZGl0PzpcbiAgICAgICAgfCAoXG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSZXBsYWNlIG9yIG1vZGlmeSBpbmRpdmlkdWFsIG5lc3RlZCByb3V0ZXMsIG9yIGFkZCBuZXcgb25lczpcbiAgICAgICAgICAgICAgICAgKiArIGBEZWZhdWx0YCAtIGAvYWRtaW4vZ2xvYmFscy86c2x1Z2BcbiAgICAgICAgICAgICAgICAgKiArIGBBUElgIC0gYC9hZG1pbi9nbG9iYWxzLzppZC9hcGlgXG4gICAgICAgICAgICAgICAgICogKyBgTGl2ZVByZXZpZXdgIC0gYC9hZG1pbi9nbG9iYWxzLzppZC9wcmV2aWV3YFxuICAgICAgICAgICAgICAgICAqICsgYFJlZmVyZW5jZXNgIC0gYC9hZG1pbi9nbG9iYWxzLzppZC9yZWZlcmVuY2VzYFxuICAgICAgICAgICAgICAgICAqICsgYFJlbGF0aW9uc2hpcHNgIC0gYC9hZG1pbi9nbG9iYWxzLzppZC9yZWxhdGlvbnNoaXBzYFxuICAgICAgICAgICAgICAgICAqICsgYFZlcnNpb25zYCAtIGAvYWRtaW4vZ2xvYmFscy86aWQvdmVyc2lvbnNgXG4gICAgICAgICAgICAgICAgICogKyBgVmVyc2lvbmAgLSBgL2FkbWluL2dsb2JhbHMvOmlkL3ZlcnNpb25zLzp2ZXJzaW9uYFxuICAgICAgICAgICAgICAgICAqICsgYEN1c3RvbVZpZXdgIC0gYC9hZG1pbi9nbG9iYWxzLzppZC86cGF0aGBcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBBUEk/OiBFZGl0Vmlld0NvbXBvbmVudCB8IFBhcnRpYWw8RWRpdFZpZXdDb25maWc+XG4gICAgICAgICAgICAgICAgRGVmYXVsdD86IEVkaXRWaWV3Q29tcG9uZW50IHwgUGFydGlhbDxFZGl0Vmlld0NvbmZpZz5cbiAgICAgICAgICAgICAgICBMaXZlUHJldmlldz86IEVkaXRWaWV3Q29tcG9uZW50IHwgUGFydGlhbDxFZGl0Vmlld0NvbmZpZz5cbiAgICAgICAgICAgICAgICBWZXJzaW9uPzogRWRpdFZpZXdDb21wb25lbnQgfCBQYXJ0aWFsPEVkaXRWaWV3Q29uZmlnPlxuICAgICAgICAgICAgICAgIFZlcnNpb25zPzogRWRpdFZpZXdDb21wb25lbnQgfCBQYXJ0aWFsPEVkaXRWaWV3Q29uZmlnPlxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHVuY29tbWVudCB0aGVzZSBhcyB0aGV5IGFyZSBidWlsdFxuICAgICAgICAgICAgICAgIC8vIFJlZmVyZW5jZXM/OiBFZGl0Vmlld1xuICAgICAgICAgICAgICAgIC8vIFJlbGF0aW9uc2hpcHM/OiBFZGl0Vmlld1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICBbbmFtZTogc3RyaW5nXTogRWRpdFZpZXdDb25maWdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgfCBFZGl0Vmlld0NvbXBvbmVudFxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ3VzdG9tIGRlc2NyaXB0aW9uIGZvciBjb2xsZWN0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IEVudGl0eURlc2NyaXB0aW9uXG4gIC8qKlxuICAgKiBQbGFjZSBnbG9iYWxzIGludG8gYSBuYXZpZ2F0aW9uYWwgZ3JvdXBcbiAgICogKi9cbiAgZ3JvdXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIC8qKlxuICAgKiBFeGNsdWRlIHRoZSBnbG9iYWwgZnJvbSB0aGUgYWRtaW4gbmF2IGFuZCByb3V0ZXNcbiAgICovXG4gIGhpZGRlbj86ICgoYXJnczogeyB1c2VyOiBVc2VyIH0pID0+IGJvb2xlYW4pIHwgYm9vbGVhblxuICAvKipcbiAgICogSGlkZSB0aGUgQVBJIFVSTCB3aXRoaW4gdGhlIEVkaXQgdmlld1xuICAgKi9cbiAgaGlkZUFQSVVSTD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIExpdmUgcHJldmlldyBvcHRpb25zXG4gICAqL1xuICBsaXZlUHJldmlldz86IExpdmVQcmV2aWV3Q29uZmlnXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBnZW5lcmF0ZSBjdXN0b20gcHJldmlldyBVUkxcbiAgICovXG4gIHByZXZpZXc/OiBHZW5lcmF0ZVByZXZpZXdVUkxcbn1cblxuZXhwb3J0IHR5cGUgR2xvYmFsQ29uZmlnID0ge1xuICBhY2Nlc3M/OiB7XG4gICAgcmVhZD86IEFjY2Vzc1xuICAgIHJlYWREcmFmdHM/OiBBY2Nlc3NcbiAgICByZWFkVmVyc2lvbnM/OiBBY2Nlc3NcbiAgICB1cGRhdGU/OiBBY2Nlc3NcbiAgfVxuICBhZG1pbj86IEdsb2JhbEFkbWluT3B0aW9uc1xuICAvKiogRXh0ZW5zaW9uIHBvaW50IHRvIGFkZCB5b3VyIGN1c3RvbSBkYXRhLiAqL1xuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIGVuZHBvaW50cz86IE9taXQ8RW5kcG9pbnQsICdyb290Jz5bXSB8IGZhbHNlXG4gIGZpZWxkczogRmllbGRbXVxuICBncmFwaFFMPzpcbiAgICB8IHtcbiAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgfVxuICAgIHwgZmFsc2VcbiAgaG9va3M/OiB7XG4gICAgYWZ0ZXJDaGFuZ2U/OiBBZnRlckNoYW5nZUhvb2tbXVxuICAgIGFmdGVyUmVhZD86IEFmdGVyUmVhZEhvb2tbXVxuICAgIGJlZm9yZUNoYW5nZT86IEJlZm9yZUNoYW5nZUhvb2tbXVxuICAgIGJlZm9yZVJlYWQ/OiBCZWZvcmVSZWFkSG9va1tdXG4gICAgYmVmb3JlVmFsaWRhdGU/OiBCZWZvcmVWYWxpZGF0ZUhvb2tbXVxuICB9XG4gIGxhYmVsPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICBzbHVnOiBzdHJpbmdcbiAgLyoqXG4gICAqIE9wdGlvbnMgdXNlZCBpbiB0eXBlc2NyaXB0IGdlbmVyYXRpb25cbiAgICovXG4gIHR5cGVzY3JpcHQ/OiB7XG4gICAgLyoqXG4gICAgICogVHlwZXNjcmlwdCBnZW5lcmF0aW9uIG5hbWUgZ2l2ZW4gdG8gdGhlIGludGVyZmFjZSB0eXBlXG4gICAgICovXG4gICAgaW50ZXJmYWNlPzogc3RyaW5nXG4gIH1cbiAgdmVyc2lvbnM/OiBJbmNvbWluZ0dsb2JhbFZlcnNpb25zIHwgYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBleHRlbmRzIE9taXQ8RGVlcFJlcXVpcmVkPEdsb2JhbENvbmZpZz4sICdlbmRwb2ludHMnIHwgJ2ZpZWxkcycgfCAndmVyc2lvbnMnPiB7XG4gIGVuZHBvaW50czogRW5kcG9pbnRbXSB8IGZhbHNlXG4gIGZpZWxkczogRmllbGRbXVxuICB2ZXJzaW9uczogU2FuaXRpemVkR2xvYmFsVmVyc2lvbnNcbn1cblxuZXhwb3J0IHR5cGUgR2xvYmFscyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdbXVxuICBncmFwaFFMPzpcbiAgICB8IHtcbiAgICAgICAgW3NsdWc6IHN0cmluZ106IHtcbiAgICAgICAgICBtdXRhdGlvbklucHV0VHlwZTogR3JhcGhRTE5vbk51bGw8YW55PlxuICAgICAgICAgIHR5cGU6IEdyYXBoUUxPYmplY3RUeXBlXG4gICAgICAgICAgdmVyc2lvblR5cGU/OiBHcmFwaFFMT2JqZWN0VHlwZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfCBmYWxzZVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThNQSxXQVdDIn0=
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/config/types.ts"],"sourcesContent":["import type { GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport type { DeepRequired } from 'ts-essentials'\n\nimport type {\n CustomPreviewButtonProps,\n CustomPublishButtonProps,\n CustomSaveButtonProps,\n CustomSaveDraftButtonProps,\n} from '../../admin/types.js'\nimport type { User } from '../../auth/types.js'\nimport type {\n Access,\n EditViewComponent,\n EditViewConfig,\n Endpoint,\n EntityDescription,\n GeneratePreviewURL,\n LivePreviewConfig,\n} from '../../config/types.js'\nimport type { Field } from '../../fields/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../types/index.js'\nimport type { Where } from '../../types/index.js'\nimport type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js'\n\nexport type TypeWithID = {\n id: number | string\n}\n\nexport type BeforeValidateHook = (args: {\n context: RequestContext\n data?: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req?: PayloadRequest\n}) => any\n\nexport type BeforeChangeHook = (args: {\n context: RequestContext\n data: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req: PayloadRequest\n}) => any\n\nexport type AfterChangeHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n previousDoc: any\n req: PayloadRequest\n}) => any\n\nexport type BeforeReadHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n req: PayloadRequest\n}) => any\n\nexport type AfterReadHook = (args: {\n context: RequestContext\n doc: any\n findMany?: boolean\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n query?: Where\n req: PayloadRequest\n}) => any\n\nexport type GlobalAdminOptions = {\n /**\n * Custom admin components\n */\n components?: {\n elements?: {\n /**\n * Replaces the \"Preview\" button\n */\n PreviewButton?: CustomPreviewButtonProps\n /**\n * Replaces the \"Publish\" button\n * + drafts must be enabled\n */\n PublishButton?: CustomPublishButtonProps\n /**\n * Replaces the \"Save\" button\n * + drafts must be disabled\n */\n SaveButton?: CustomSaveButtonProps\n /**\n * Replaces the \"Save Draft\" button\n * + drafts must be enabled\n * + autosave must be disabled\n */\n SaveDraftButton?: CustomSaveDraftButtonProps\n }\n views?: {\n /**\n * Set to a React component to replace the entire \"Edit\" view, including all nested routes.\n * Set to an object to replace or modify individual nested routes, or to add new ones.\n */\n Edit?:\n | (\n | {\n /**\n * Replace or modify individual nested routes, or add new ones:\n * + `Default` - `/admin/globals/:slug`\n * + `API` - `/admin/globals/:id/api`\n * + `LivePreview` - `/admin/globals/:id/preview`\n * + `References` - `/admin/globals/:id/references`\n * + `Relationships` - `/admin/globals/:id/relationships`\n * + `Versions` - `/admin/globals/:id/versions`\n * + `Version` - `/admin/globals/:id/versions/:version`\n * + `CustomView` - `/admin/globals/:id/:path`\n */\n API?: EditViewComponent | Partial<EditViewConfig>\n Default?: EditViewComponent | Partial<EditViewConfig>\n LivePreview?: EditViewComponent | Partial<EditViewConfig>\n Version?: EditViewComponent | Partial<EditViewConfig>\n Versions?: EditViewComponent | Partial<EditViewConfig>\n // TODO: uncomment these as they are built\n // References?: EditView\n // Relationships?: EditView\n }\n | {\n [name: string]: EditViewConfig\n }\n )\n | EditViewComponent\n }\n }\n /**\n * Custom description for collection\n */\n description?: EntityDescription\n /**\n * Place globals into a navigational group\n * */\n group?: Record<string, string> | string\n /**\n * Exclude the global from the admin nav and routes\n */\n hidden?: ((args: { user: User }) => boolean) | boolean\n /**\n * Hide the API URL within the Edit view\n */\n hideAPIURL?: boolean\n /**\n * Live preview options\n */\n livePreview?: LivePreviewConfig\n /**\n * Function to generate custom preview URL\n */\n preview?: GeneratePreviewURL\n}\n\nexport type GlobalConfig = {\n access?: {\n read?: Access\n readDrafts?: Access\n readVersions?: Access\n update?: Access\n }\n admin?: GlobalAdminOptions\n /** Extension point to add your custom data. */\n custom?: Record<string, any>\n endpoints?: Omit<Endpoint, 'root'>[] | false\n fields: Field[]\n graphQL?:\n | {\n name?: string\n }\n | false\n hooks?: {\n afterChange?: AfterChangeHook[]\n afterRead?: AfterReadHook[]\n beforeChange?: BeforeChangeHook[]\n beforeRead?: BeforeReadHook[]\n beforeValidate?: BeforeValidateHook[]\n }\n label?: Record<string, string> | string\n slug: string\n /**\n * Options used in typescript generation\n */\n typescript?: {\n /**\n * Typescript generation name given to the interface type\n */\n interface?: string\n }\n versions?: IncomingGlobalVersions | boolean\n}\n\nexport interface SanitizedGlobalConfig\n extends Omit<DeepRequired<GlobalConfig>, 'endpoints' | 'fields' | 'versions'> {\n endpoints: Endpoint[] | false\n fields: Field[]\n versions: SanitizedGlobalVersions\n}\n\nexport type Globals = {\n config: SanitizedGlobalConfig[]\n graphQL?:\n | {\n [slug: string]: {\n mutationInputType: GraphQLNonNull<any>\n type: GraphQLObjectType\n versionType?: GraphQLObjectType\n }\n }\n | false\n}\n"],"names":[],"mappings":"AA8MA,WAWC"}
@@ -27,4 +27,4 @@ export const docAccessOperation = async (args)=>{
27
27
  }
28
28
  };
29
29
 
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvZG9jQWNjZXNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgR2xvYmFsUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uL2F1dGgvaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IEFsbE9wZXJhdGlvbnMsIFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcy5qcydcblxuaW1wb3J0IHsgY29tbWl0VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29tbWl0VHJhbnNhY3Rpb24uanMnXG5pbXBvcnQgeyBnZXRFbnRpdHlQb2xpY2llcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9nZXRFbnRpdHlQb2xpY2llcy5qcydcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24uanMnXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uLmpzJ1xuXG50eXBlIEFyZ3VtZW50cyA9IHtcbiAgZ2xvYmFsQ29uZmlnOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxufVxuXG5leHBvcnQgY29uc3QgZG9jQWNjZXNzT3BlcmF0aW9uID0gYXN5bmMgKGFyZ3M6IEFyZ3VtZW50cyk6IFByb21pc2U8R2xvYmFsUGVybWlzc2lvbj4gPT4ge1xuICBjb25zdCB7IGdsb2JhbENvbmZpZywgcmVxIH0gPSBhcmdzXG5cbiAgY29uc3QgZ2xvYmFsT3BlcmF0aW9uczogQWxsT3BlcmF0aW9uc1tdID0gWydyZWFkJywgJ3VwZGF0ZSddXG5cbiAgaWYgKGdsb2JhbENvbmZpZy52ZXJzaW9ucykge1xuICAgIGdsb2JhbE9wZXJhdGlvbnMucHVzaCgncmVhZFZlcnNpb25zJylcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRFbnRpdHlQb2xpY2llcyh7XG4gICAgICB0eXBlOiAnZ2xvYmFsJyxcbiAgICAgIGVudGl0eTogZ2xvYmFsQ29uZmlnLFxuICAgICAgb3BlcmF0aW9uczogZ2xvYmFsT3BlcmF0aW9ucyxcbiAgICAgIHJlcSxcbiAgICB9KVxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IGNvbW1pdFRyYW5zYWN0aW9uKHJlcSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBhd2FpdCBraWxsVHJhbnNhY3Rpb24ocmVxKVxuICAgIHRocm93IGVcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNvbW1pdFRyYW5zYWN0aW9uIiwiZ2V0RW50aXR5UG9saWNpZXMiLCJpbml0VHJhbnNhY3Rpb24iLCJraWxsVHJhbnNhY3Rpb24iLCJkb2NBY2Nlc3NPcGVyYXRpb24iLCJhcmdzIiwiZ2xvYmFsQ29uZmlnIiwicmVxIiwiZ2xvYmFsT3BlcmF0aW9ucyIsInZlcnNpb25zIiwicHVzaCIsInNob3VsZENvbW1pdCIsInJlc3VsdCIsInR5cGUiLCJlbnRpdHkiLCJvcGVyYXRpb25zIiwiZSJdLCJtYXBwaW5ncyI6IkFBSUEsU0FBU0EsaUJBQWlCLFFBQVEsdUNBQXNDO0FBQ3hFLFNBQVNDLGlCQUFpQixRQUFRLHVDQUFzQztBQUN4RSxTQUFTQyxlQUFlLFFBQVEscUNBQW9DO0FBQ3BFLFNBQVNDLGVBQWUsUUFBUSxxQ0FBb0M7QUFPcEUsT0FBTyxNQUFNQyxxQkFBcUIsT0FBT0M7SUFDdkMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLEdBQUcsRUFBRSxHQUFHRjtJQUU5QixNQUFNRyxtQkFBb0M7UUFBQztRQUFRO0tBQVM7SUFFNUQsSUFBSUYsYUFBYUcsUUFBUSxFQUFFO1FBQ3pCRCxpQkFBaUJFLElBQUksQ0FBQztJQUN4QjtJQUVBLElBQUk7UUFDRixNQUFNQyxlQUFlLE1BQU1ULGdCQUFnQks7UUFDM0MsTUFBTUssU0FBUyxNQUFNWCxrQkFBa0I7WUFDckNZLE1BQU07WUFDTkMsUUFBUVI7WUFDUlMsWUFBWVA7WUFDWkQ7UUFDRjtRQUNBLElBQUlJLGNBQWMsTUFBTVgsa0JBQWtCTztRQUMxQyxPQUFPSztJQUNULEVBQUUsT0FBT0ksR0FBWTtRQUNuQixNQUFNYixnQkFBZ0JJO1FBQ3RCLE1BQU1TO0lBQ1I7QUFDRixFQUFDIn0=
30
+ //# sourceMappingURL=docAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/operations/docAccess.ts"],"sourcesContent":["import type { GlobalPermission } from '../../auth/index.js'\nimport type { AllOperations, PayloadRequest } from '../../types/index.js'\nimport type { SanitizedGlobalConfig } from '../config/types.js'\n\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getEntityPolicies } from '../../utilities/getEntityPolicies.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\n\ntype Arguments = {\n globalConfig: SanitizedGlobalConfig\n req: PayloadRequest\n}\n\nexport const docAccessOperation = async (args: Arguments): Promise<GlobalPermission> => {\n const { globalConfig, req } = args\n\n const globalOperations: AllOperations[] = ['read', 'update']\n\n if (globalConfig.versions) {\n globalOperations.push('readVersions')\n }\n\n try {\n const shouldCommit = await initTransaction(req)\n const result = await getEntityPolicies({\n type: 'global',\n entity: globalConfig,\n operations: globalOperations,\n req,\n })\n if (shouldCommit) await commitTransaction(req)\n return result\n } catch (e: unknown) {\n await killTransaction(req)\n throw e\n }\n}\n"],"names":["commitTransaction","getEntityPolicies","initTransaction","killTransaction","docAccessOperation","args","globalConfig","req","globalOperations","versions","push","shouldCommit","result","type","entity","operations","e"],"mappings":"AAIA,SAASA,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AAOpE,OAAO,MAAMC,qBAAqB,OAAOC;IACvC,MAAM,EAAEC,YAAY,EAAEC,GAAG,EAAE,GAAGF;IAE9B,MAAMG,mBAAoC;QAAC;QAAQ;KAAS;IAE5D,IAAIF,aAAaG,QAAQ,EAAE;QACzBD,iBAAiBE,IAAI,CAAC;IACxB;IAEA,IAAI;QACF,MAAMC,eAAe,MAAMT,gBAAgBK;QAC3C,MAAMK,SAAS,MAAMX,kBAAkB;YACrCY,MAAM;YACNC,QAAQR;YACRS,YAAYP;YACZD;QACF;QACA,IAAII,cAAc,MAAMX,kBAAkBO;QAC1C,OAAOK;IACT,EAAE,OAAOI,GAAY;QACnB,MAAMb,gBAAgBI;QACtB,MAAMS;IACR;AACF,EAAC"}
@@ -95,4 +95,4 @@ export const findOneOperation = async (args)=>{
95
95
  }
96
96
  };
97
97
 
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvZmluZE9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjY2Vzc1Jlc3VsdCB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcy5qcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFdoZXJlIH0gZnJvbSAnLi4vLi4vdHlwZXMvaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcy5qcydcblxuaW1wb3J0IGV4ZWN1dGVBY2Nlc3MgZnJvbSAnLi4vLi4vYXV0aC9leGVjdXRlQWNjZXNzLmpzJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZC9pbmRleC5qcydcbmltcG9ydCB7IGNvbW1pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbW1pdFRyYW5zYWN0aW9uLmpzJ1xuaW1wb3J0IHsgaW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2luaXRUcmFuc2FjdGlvbi5qcydcbmltcG9ydCB7IGtpbGxUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9raWxsVHJhbnNhY3Rpb24uanMnXG5pbXBvcnQgcmVwbGFjZVdpdGhEcmFmdElmQXZhaWxhYmxlIGZyb20gJy4uLy4uL3ZlcnNpb25zL2RyYWZ0cy9yZXBsYWNlV2l0aERyYWZ0SWZBdmFpbGFibGUuanMnXG5cbnR5cGUgQXJncyA9IHtcbiAgZGVwdGg/OiBudW1iZXJcbiAgZHJhZnQ/OiBib29sZWFuXG4gIGdsb2JhbENvbmZpZzogU2FuaXRpemVkR2xvYmFsQ29uZmlnXG4gIGxvY2FsZT86IHN0cmluZ1xuICBvdmVycmlkZUFjY2Vzcz86IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaG93SGlkZGVuRmllbGRzPzogYm9vbGVhblxuICBzbHVnOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGZpbmRPbmVPcGVyYXRpb24gPSBhc3luYyA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgYXJnczogQXJncyxcbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB7XG4gICAgc2x1ZyxcbiAgICBkZXB0aCxcbiAgICBkcmFmdDogZHJhZnRFbmFibGVkID0gZmFsc2UsXG4gICAgZ2xvYmFsQ29uZmlnLFxuICAgIG92ZXJyaWRlQWNjZXNzID0gZmFsc2UsXG4gICAgcmVxOiB7IGZhbGxiYWNrTG9jYWxlLCBsb2NhbGUgfSxcbiAgICByZXEsXG4gICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgfSA9IGFyZ3NcblxuICB0cnkge1xuICAgIGNvbnN0IHNob3VsZENvbW1pdCA9IGF3YWl0IGluaXRUcmFuc2FjdGlvbihyZXEpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gUmV0cmlldmUgYW5kIGV4ZWN1dGUgYWNjZXNzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgbGV0IGFjY2Vzc1Jlc3VsdDogQWNjZXNzUmVzdWx0XG5cbiAgICBpZiAoIW92ZXJyaWRlQWNjZXNzKSB7XG4gICAgICBhY2Nlc3NSZXN1bHQgPSBhd2FpdCBleGVjdXRlQWNjZXNzKHsgcmVxIH0sIGdsb2JhbENvbmZpZy5hY2Nlc3MucmVhZClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gUGVyZm9ybSBkYXRhYmFzZSBvcGVyYXRpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBsZXQgZG9jID0gYXdhaXQgcmVxLnBheWxvYWQuZGIuZmluZEdsb2JhbCh7XG4gICAgICBzbHVnLFxuICAgICAgbG9jYWxlLFxuICAgICAgcmVxLFxuICAgICAgd2hlcmU6IG92ZXJyaWRlQWNjZXNzID8gdW5kZWZpbmVkIDogKGFjY2Vzc1Jlc3VsdCBhcyBXaGVyZSksXG4gICAgfSlcbiAgICBpZiAoIWRvYykge1xuICAgICAgZG9jID0ge31cbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gUmVwbGFjZSBkb2N1bWVudCB3aXRoIGRyYWZ0IGlmIGF2YWlsYWJsZVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChnbG9iYWxDb25maWcudmVyc2lvbnM/LmRyYWZ0cyAmJiBkcmFmdEVuYWJsZWQpIHtcbiAgICAgIGRvYyA9IGF3YWl0IHJlcGxhY2VXaXRoRHJhZnRJZkF2YWlsYWJsZSh7XG4gICAgICAgIGFjY2Vzc1Jlc3VsdCxcbiAgICAgICAgZG9jLFxuICAgICAgICBlbnRpdHk6IGdsb2JhbENvbmZpZyxcbiAgICAgICAgZW50aXR5VHlwZTogJ2dsb2JhbCcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBFeGVjdXRlIGJlZm9yZSBnbG9iYWwgaG9va1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGdsb2JhbENvbmZpZy5ob29rcy5iZWZvcmVSZWFkLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgZG9jID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCBkb2NcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBFeGVjdXRlIGZpZWxkLWxldmVsIGhvb2tzIGFuZCBhY2Nlc3NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBkb2MgPSBhd2FpdCBhZnRlclJlYWQoe1xuICAgICAgY29sbGVjdGlvbjogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgZGVwdGgsXG4gICAgICBkb2MsXG4gICAgICBmYWxsYmFja0xvY2FsZSxcbiAgICAgIGdsb2JhbDogZ2xvYmFsQ29uZmlnLFxuICAgICAgbG9jYWxlLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICByZXEsXG4gICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRXhlY3V0ZSBhZnRlciBnbG9iYWwgaG9va1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGdsb2JhbENvbmZpZy5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICBkb2MgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZG9jLFxuICAgICAgICAgIGdsb2JhbDogZ2xvYmFsQ29uZmlnLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgfSkpIHx8IGRvY1xuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHVybiByZXN1bHRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgaWYgKHNob3VsZENvbW1pdCkgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHVybiByZXN1bHRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgcmV0dXJuIGRvY1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIl0sIm5hbWVzIjpbImV4ZWN1dGVBY2Nlc3MiLCJhZnRlclJlYWQiLCJjb21taXRUcmFuc2FjdGlvbiIsImluaXRUcmFuc2FjdGlvbiIsImtpbGxUcmFuc2FjdGlvbiIsInJlcGxhY2VXaXRoRHJhZnRJZkF2YWlsYWJsZSIsImZpbmRPbmVPcGVyYXRpb24iLCJhcmdzIiwic2x1ZyIsImRlcHRoIiwiZHJhZnQiLCJkcmFmdEVuYWJsZWQiLCJnbG9iYWxDb25maWciLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsImZhbGxiYWNrTG9jYWxlIiwibG9jYWxlIiwic2hvd0hpZGRlbkZpZWxkcyIsInNob3VsZENvbW1pdCIsImFjY2Vzc1Jlc3VsdCIsImFjY2VzcyIsInJlYWQiLCJkb2MiLCJwYXlsb2FkIiwiZGIiLCJmaW5kR2xvYmFsIiwid2hlcmUiLCJ1bmRlZmluZWQiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsImVudGl0eSIsImVudGl0eVR5cGUiLCJob29rcyIsImJlZm9yZVJlYWQiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJob29rIiwiY29udGV4dCIsImdsb2JhbCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY29sbGVjdGlvbiIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFJQSxPQUFPQSxtQkFBbUIsOEJBQTZCO0FBQ3ZE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
98
+ //# sourceMappingURL=findOne.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/operations/findOne.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\nimport type { SanitizedGlobalConfig } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport replaceWithDraftIfAvailable from '../../versions/drafts/replaceWithDraftIfAvailable.js'\n\ntype Args = {\n depth?: number\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n locale?: string\n overrideAccess?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const findOneOperation = async <T extends Record<string, unknown>>(\n args: Args,\n): Promise<T> => {\n const {\n slug,\n depth,\n draft: draftEnabled = false,\n globalConfig,\n overrideAccess = false,\n req: { fallbackLocale, locale },\n req,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Retrieve and execute access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, globalConfig.access.read)\n }\n\n // /////////////////////////////////////\n // Perform database operation\n // /////////////////////////////////////\n\n let doc = await req.payload.db.findGlobal({\n slug,\n locale,\n req,\n where: overrideAccess ? undefined : (accessResult as Where),\n })\n if (!doc) {\n doc = {}\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (globalConfig.versions?.drafts && draftEnabled) {\n doc = await replaceWithDraftIfAvailable({\n accessResult,\n doc,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Execute before global hook\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n doc =\n (await hook({\n context: req.context,\n doc,\n global: globalConfig,\n req,\n })) || doc\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Execute field-level hooks and access\n // /////////////////////////////////////\n\n doc = await afterRead({\n collection: null,\n context: req.context,\n depth,\n doc,\n fallbackLocale,\n global: globalConfig,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // Execute after global hook\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n doc =\n (await hook({\n context: req.context,\n doc,\n global: globalConfig,\n req,\n })) || doc\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) await commitTransaction(req)\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return doc\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterRead","commitTransaction","initTransaction","killTransaction","replaceWithDraftIfAvailable","findOneOperation","args","slug","depth","draft","draftEnabled","globalConfig","overrideAccess","req","fallbackLocale","locale","showHiddenFields","shouldCommit","accessResult","access","read","doc","payload","db","findGlobal","where","undefined","versions","drafts","entity","entityType","hooks","beforeRead","reduce","priorHook","hook","context","global","Promise","resolve","collection","error"],"mappings":"AAIA,OAAOA,mBAAmB,8BAA6B;AACvD,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,OAAOC,iCAAiC,uDAAsD;AAa9F,OAAO,MAAMC,mBAAmB,OAC9BC;IAEA,MAAM,EACJC,IAAI,EACJC,KAAK,EACLC,OAAOC,eAAe,KAAK,EAC3BC,YAAY,EACZC,iBAAiB,KAAK,EACtBC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAE,EAC/BF,GAAG,EACHG,gBAAgB,EACjB,GAAGV;IAEJ,IAAI;QACF,MAAMW,eAAe,MAAMf,gBAAgBW;QAE3C,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExC,IAAIK;QAEJ,IAAI,CAACN,gBAAgB;YACnBM,eAAe,MAAMnB,cAAc;gBAAEc;YAAI,GAAGF,aAAaQ,MAAM,CAACC,IAAI;QACtE;QAEA,wCAAwC;QACxC,6BAA6B;QAC7B,wCAAwC;QAExC,IAAIC,MAAM,MAAMR,IAAIS,OAAO,CAACC,EAAE,CAACC,UAAU,CAAC;YACxCjB;YACAQ;YACAF;YACAY,OAAOb,iBAAiBc,YAAaR;QACvC;QACA,IAAI,CAACG,KAAK;YACRA,MAAM,CAAC;QACT;QAEA,wCAAwC;QACxC,2CAA2C;QAC3C,wCAAwC;QAExC,IAAIV,aAAagB,QAAQ,EAAEC,UAAUlB,cAAc;YACjDW,MAAM,MAAMjB,4BAA4B;gBACtCc;gBACAG;gBACAQ,QAAQlB;gBACRmB,YAAY;gBACZlB;gBACAC;YACF;QACF;QAEA,wCAAwC;QACxC,6BAA6B;QAC7B,wCAAwC;QAExC,MAAMF,aAAaoB,KAAK,CAACC,UAAU,CAACC,MAAM,CAAC,OAAOC,WAAWC;YAC3D,MAAMD;YAENb,MACE,AAAC,MAAMc,KAAK;gBACVC,SAASvB,IAAIuB,OAAO;gBACpBf;gBACAgB,QAAQ1B;gBACRE;YACF,MAAOQ;QACX,GAAGiB,QAAQC,OAAO;QAElB,wCAAwC;QACxC,uCAAuC;QACvC,wCAAwC;QAExClB,MAAM,MAAMrB,UAAU;YACpBwC,YAAY;YACZJ,SAASvB,IAAIuB,OAAO;YACpB5B;YACAa;YACAP;YACAuB,QAAQ1B;YACRI;YACAH;YACAC;YACAG;QACF;QAEA,wCAAwC;QACxC,4BAA4B;QAC5B,wCAAwC;QAExC,MAAML,aAAaoB,KAAK,CAAC/B,SAAS,CAACiC,MAAM,CAAC,OAAOC,WAAWC;YAC1D,MAAMD;YAENb,MACE,AAAC,MAAMc,KAAK;gBACVC,SAASvB,IAAIuB,OAAO;gBACpBf;gBACAgB,QAAQ1B;gBACRE;YACF,MAAOQ;QACX,GAAGiB,QAAQC,OAAO;QAElB,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,IAAItB,cAAc,MAAMhB,kBAAkBY;QAE1C,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,OAAOQ;IACT,EAAE,OAAOoB,OAAgB;QACvB,MAAMtC,gBAAgBU;QACtB,MAAM4B;IACR;AACF,EAAC"}
@@ -99,4 +99,4 @@ export const findVersionByIDOperation = async (args)=>{
99
99
  }
100
100
  };
101
101
 
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvZmluZFZlcnNpb25CeUlELnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5pbXBvcnQgdHlwZSB7IEZpbmRHbG9iYWxWZXJzaW9uc0FyZ3MgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS90eXBlcy5qcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9pbmRleC5qcydcbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uIH0gZnJvbSAnLi4vLi4vdmVyc2lvbnMvdHlwZXMuanMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcy5qcydcblxuaW1wb3J0IGV4ZWN1dGVBY2Nlc3MgZnJvbSAnLi4vLi4vYXV0aC9leGVjdXRlQWNjZXNzLmpzJ1xuaW1wb3J0IHsgY29tYmluZVF1ZXJpZXMgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9jb21iaW5lUXVlcmllcy5qcydcbmltcG9ydCB7IEZvcmJpZGRlbiwgTm90Rm91bmQgfSBmcm9tICcuLi8uLi9lcnJvcnMvaW5kZXguanMnXG5pbXBvcnQgeyBhZnRlclJlYWQgfSBmcm9tICcuLi8uLi9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL2luZGV4LmpzJ1xuaW1wb3J0IHsgY29tbWl0VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29tbWl0VHJhbnNhY3Rpb24uanMnXG5pbXBvcnQgeyBpbml0VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvaW5pdFRyYW5zYWN0aW9uLmpzJ1xuaW1wb3J0IHsga2lsbFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2tpbGxUcmFuc2FjdGlvbi5qcydcblxuZXhwb3J0IHR5cGUgQXJndW1lbnRzID0ge1xuICBjdXJyZW50RGVwdGg/OiBudW1iZXJcbiAgZGVwdGg/OiBudW1iZXJcbiAgZGlzYWJsZUVycm9ycz86IGJvb2xlYW5cbiAgZ2xvYmFsQ29uZmlnOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBvdmVycmlkZUFjY2Vzcz86IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaG93SGlkZGVuRmllbGRzPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgZmluZFZlcnNpb25CeUlET3BlcmF0aW9uID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aFZlcnNpb248VD4gPSBhbnk+KFxuICBhcmdzOiBBcmd1bWVudHMsXG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGN1cnJlbnREZXB0aCxcbiAgICBkZXB0aCxcbiAgICBkaXNhYmxlRXJyb3JzLFxuICAgIGdsb2JhbENvbmZpZyxcbiAgICBvdmVycmlkZUFjY2VzcyxcbiAgICByZXE6IHsgZmFsbGJhY2tMb2NhbGUsIGxvY2FsZSwgcGF5bG9hZCB9LFxuICAgIHJlcSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICB9ID0gYXJnc1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBBY2Nlc3NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBhY2Nlc3NSZXN1bHRzID0gIW92ZXJyaWRlQWNjZXNzXG4gICAgICA/IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyBpZCwgZGlzYWJsZUVycm9ycywgcmVxIH0sIGdsb2JhbENvbmZpZy5hY2Nlc3MucmVhZFZlcnNpb25zKVxuICAgICAgOiB0cnVlXG5cbiAgICAvLyBJZiBlcnJvcnMgYXJlIGRpc2FibGVkLCBhbmQgYWNjZXNzIHJldHVybnMgZmFsc2UsIHJldHVybiBudWxsXG4gICAgaWYgKGFjY2Vzc1Jlc3VsdHMgPT09IGZhbHNlKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgaGFzV2hlcmVBY2Nlc3MgPSB0eXBlb2YgYWNjZXNzUmVzdWx0cyA9PT0gJ29iamVjdCdcblxuICAgIGNvbnN0IGZpbmRHbG9iYWxWZXJzaW9uc0FyZ3M6IEZpbmRHbG9iYWxWZXJzaW9uc0FyZ3MgPSB7XG4gICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZy5zbHVnLFxuICAgICAgbGltaXQ6IDEsXG4gICAgICBsb2NhbGUsXG4gICAgICByZXEsXG4gICAgICB3aGVyZTogY29tYmluZVF1ZXJpZXMoeyBpZDogeyBlcXVhbHM6IGlkIH0gfSwgYWNjZXNzUmVzdWx0cyksXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEZpbmQgYnkgSURcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAoIWZpbmRHbG9iYWxWZXJzaW9uc0FyZ3Mud2hlcmUuYW5kWzBdLmlkKSB0aHJvdyBuZXcgTm90Rm91bmQocmVxLnQpXG5cbiAgICBjb25zdCB7IGRvY3M6IHJlc3VsdHMgfSA9IGF3YWl0IHBheWxvYWQuZGIuZmluZEdsb2JhbFZlcnNpb25zKGZpbmRHbG9iYWxWZXJzaW9uc0FyZ3MpXG4gICAgaWYgKCFyZXN1bHRzIHx8IHJlc3VsdHM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKCFkaXNhYmxlRXJyb3JzKSB7XG4gICAgICAgIGlmICghaGFzV2hlcmVBY2Nlc3MpIHRocm93IG5ldyBOb3RGb3VuZChyZXEudClcbiAgICAgICAgaWYgKGhhc1doZXJlQWNjZXNzKSB0aHJvdyBuZXcgRm9yYmlkZGVuKHJlcS50KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIC8vIENsb25lIHRoZSByZXN1bHQgLSBpdCBtYXkgaGF2ZSBjb21lIGJhY2sgbWVtb2l6ZWRcbiAgICBsZXQgcmVzdWx0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRzWzBdKSlcblxuICAgIC8vIFBhdGNoIGdsb2JhbFR5cGUgb250byB2ZXJzaW9uIGRvY1xuICAgIHJlc3VsdC52ZXJzaW9uLmdsb2JhbFR5cGUgPSBnbG9iYWxDb25maWcuc2x1Z1xuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZVJlYWQgLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgZ2xvYmFsQ29uZmlnLmhvb2tzLmJlZm9yZVJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICByZXN1bHQgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZG9jOiByZXN1bHQudmVyc2lvbixcbiAgICAgICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHQudmVyc2lvblxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyUmVhZCAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdC52ZXJzaW9uID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgIGNvbGxlY3Rpb246IG51bGwsXG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgIGRlcHRoLFxuICAgICAgZG9jOiByZXN1bHQudmVyc2lvbixcbiAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgZ2xvYmFsOiBnbG9iYWxDb25maWcsXG4gICAgICBsb2NhbGUsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBHbG9iYWxcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBnbG9iYWxDb25maWcuaG9va3MuYWZ0ZXJSZWFkLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgcmVzdWx0LnZlcnNpb24gPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZG9jOiByZXN1bHQudmVyc2lvbixcbiAgICAgICAgICBnbG9iYWw6IGdsb2JhbENvbmZpZyxcbiAgICAgICAgICBxdWVyeTogZmluZEdsb2JhbFZlcnNpb25zQXJncy53aGVyZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHQudmVyc2lvblxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHVybiByZXN1bHRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgaWYgKHNob3VsZENvbW1pdCkgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIl0sIm5hbWVzIjpbImV4ZWN1dGVBY2Nlc3MiLCJjb21iaW5lUXVlcmllcyIsIkZvcmJpZGRlbiIsIk5vdEZvdW5kIiwiYWZ0ZXJSZWFkIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJpbml0VHJhbnNhY3Rpb24iLCJraWxsVHJhbnNhY3Rpb24iLCJmaW5kVmVyc2lvbkJ5SURPcGVyYXRpb24iLCJhcmdzIiwiaWQiLCJjdXJyZW50RGVwdGgiLCJkZXB0aCIsImRpc2FibGVFcnJvcnMiLCJnbG9iYWxDb25maWciLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsImZhbGxiYWNrTG9jYWxlIiwibG9jYWxlIiwicGF5bG9hZCIsInNob3dIaWRkZW5GaWVsZHMiLCJzaG91bGRDb21taXQiLCJhY2Nlc3NSZXN1bHRzIiwiYWNjZXNzIiwicmVhZFZlcnNpb25zIiwiaGFzV2hlcmVBY2Nlc3MiLCJmaW5kR2xvYmFsVmVyc2lvbnNBcmdzIiwiZ2xvYmFsIiwic2x1ZyIsImxpbWl0Iiwid2hlcmUiLCJlcXVhbHMiLCJhbmQiLCJ0IiwiZG9jcyIsInJlc3VsdHMiLCJkYiIsImZpbmRHbG9iYWxWZXJzaW9ucyIsImxlbmd0aCIsInJlc3VsdCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInZlcnNpb24iLCJnbG9iYWxUeXBlIiwiaG9va3MiLCJiZWZvcmVSZWFkIiwicmVkdWNlIiwicHJpb3JIb29rIiwiaG9vayIsImNvbnRleHQiLCJkb2MiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvbGxlY3Rpb24iLCJxdWVyeSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUMsR0FNdkMsT0FBT0EsbUJBQW1CLDhCQUE2QjtBQUN2RCxTQUFTQyxjQUFjLFFBQVEsbUNBQWtDO0FBQ2pFLFNBQVNDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLHdCQUF1QjtBQUMzRCxTQUFTQyxTQUFTLFFBQVEsd0NBQXVDO0FBQ2pFLFNBQVNDLGlCQUFpQixRQUFRLHVDQUFzQztBQUN4RSxTQUFTQyxlQUFlLFFBQVEscUNBQW9D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
102
+ //# sourceMappingURL=findVersionByID.js.map