payload 0.19.1 → 0.19.2

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 (1459) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/bin.js +0 -0
  3. package/components/index.js +1 -1
  4. package/dist/admin/api.d.ts +6 -6
  5. package/dist/admin/api.js +39 -39
  6. package/dist/admin/components/Routes.d.ts +3 -3
  7. package/dist/admin/components/Routes.js +181 -174
  8. package/dist/admin/components/elements/Autosave/index.d.ts +5 -5
  9. package/dist/admin/components/elements/Autosave/index.js +116 -116
  10. package/dist/admin/components/elements/Autosave/types.d.ts +8 -8
  11. package/dist/admin/components/elements/Autosave/types.js +1 -1
  12. package/dist/admin/components/elements/Banner/index.d.ts +5 -5
  13. package/dist/admin/components/elements/Banner/index.js +25 -25
  14. package/dist/admin/components/elements/Banner/types.d.ts +18 -18
  15. package/dist/admin/components/elements/Banner/types.js +1 -1
  16. package/dist/admin/components/elements/Button/index.d.ts +5 -5
  17. package/dist/admin/components/elements/Button/index.js +68 -68
  18. package/dist/admin/components/elements/Button/types.d.ts +19 -19
  19. package/dist/admin/components/elements/Button/types.js +1 -1
  20. package/dist/admin/components/elements/Card/index.d.ts +5 -5
  21. package/dist/admin/components/elements/Card/index.js +16 -16
  22. package/dist/admin/components/elements/Card/types.d.ts +6 -6
  23. package/dist/admin/components/elements/Card/types.js +1 -1
  24. package/dist/admin/components/elements/ColumnSelector/index.d.ts +5 -5
  25. package/dist/admin/components/elements/ColumnSelector/index.js +25 -25
  26. package/dist/admin/components/elements/ColumnSelector/types.d.ts +6 -6
  27. package/dist/admin/components/elements/ColumnSelector/types.js +1 -1
  28. package/dist/admin/components/elements/CopyToClipboard/index.d.ts +5 -5
  29. package/dist/admin/components/elements/CopyToClipboard/index.js +40 -40
  30. package/dist/admin/components/elements/CopyToClipboard/types.d.ts +5 -5
  31. package/dist/admin/components/elements/CopyToClipboard/types.js +1 -1
  32. package/dist/admin/components/elements/DatePicker/DatePicker.d.ts +6 -6
  33. package/dist/admin/components/elements/DatePicker/DatePicker.js +52 -52
  34. package/dist/admin/components/elements/DatePicker/index.d.ts +4 -4
  35. package/dist/admin/components/elements/DatePicker/index.js +6 -6
  36. package/dist/admin/components/elements/DatePicker/types.d.ts +29 -29
  37. package/dist/admin/components/elements/DatePicker/types.js +2 -2
  38. package/dist/admin/components/elements/DeleteDocument/index.d.ts +5 -5
  39. package/dist/admin/components/elements/DeleteDocument/index.js +78 -78
  40. package/dist/admin/components/elements/DeleteDocument/types.d.ts +6 -6
  41. package/dist/admin/components/elements/DeleteDocument/types.js +1 -1
  42. package/dist/admin/components/elements/DuplicateDocument/index.d.ts +5 -5
  43. package/dist/admin/components/elements/DuplicateDocument/index.js +23 -23
  44. package/dist/admin/components/elements/DuplicateDocument/types.d.ts +3 -3
  45. package/dist/admin/components/elements/DuplicateDocument/types.js +1 -1
  46. package/dist/admin/components/elements/Eyebrow/index.d.ts +5 -5
  47. package/dist/admin/components/elements/Eyebrow/index.js +8 -8
  48. package/dist/admin/components/elements/Eyebrow/types.d.ts +4 -4
  49. package/dist/admin/components/elements/Eyebrow/types.js +1 -1
  50. package/dist/admin/components/elements/FileDetails/Meta/index.d.ts +5 -5
  51. package/dist/admin/components/elements/FileDetails/Meta/index.js +26 -26
  52. package/dist/admin/components/elements/FileDetails/Meta/types.d.ts +10 -10
  53. package/dist/admin/components/elements/FileDetails/Meta/types.js +1 -1
  54. package/dist/admin/components/elements/FileDetails/index.d.ts +5 -5
  55. package/dist/admin/components/elements/FileDetails/index.js +39 -39
  56. package/dist/admin/components/elements/FileDetails/types.d.ts +6 -6
  57. package/dist/admin/components/elements/FileDetails/types.js +1 -1
  58. package/dist/admin/components/elements/GenerateConfirmation/index.d.ts +5 -5
  59. package/dist/admin/components/elements/GenerateConfirmation/index.js +38 -38
  60. package/dist/admin/components/elements/GenerateConfirmation/types.d.ts +4 -4
  61. package/dist/admin/components/elements/GenerateConfirmation/types.js +1 -1
  62. package/dist/admin/components/elements/IDLabel/index.d.ts +7 -7
  63. package/dist/admin/components/elements/IDLabel/index.js +8 -8
  64. package/dist/admin/components/elements/ListControls/index.d.ts +5 -5
  65. package/dist/admin/components/elements/ListControls/index.js +34 -34
  66. package/dist/admin/components/elements/ListControls/types.d.ts +16 -16
  67. package/dist/admin/components/elements/ListControls/types.js +1 -1
  68. package/dist/admin/components/elements/Loading/index.d.ts +3 -3
  69. package/dist/admin/components/elements/Loading/index.js +3 -3
  70. package/dist/admin/components/elements/Localizer/index.d.ts +5 -5
  71. package/dist/admin/components/elements/Localizer/index.js +39 -39
  72. package/dist/admin/components/elements/Localizer/types.d.ts +1 -1
  73. package/dist/admin/components/elements/Localizer/types.js +1 -1
  74. package/dist/admin/components/elements/Nav/index.d.ts +4 -4
  75. package/dist/admin/components/elements/Nav/index.js +74 -74
  76. package/dist/admin/components/elements/Paginator/ClickableArrow/index.d.ts +5 -5
  77. package/dist/admin/components/elements/Paginator/ClickableArrow/index.js +15 -15
  78. package/dist/admin/components/elements/Paginator/ClickableArrow/types.d.ts +5 -5
  79. package/dist/admin/components/elements/Paginator/ClickableArrow/types.js +1 -1
  80. package/dist/admin/components/elements/Paginator/Page/index.d.ts +4 -4
  81. package/dist/admin/components/elements/Paginator/Page/index.js +12 -12
  82. package/dist/admin/components/elements/Paginator/Page/types.d.ts +7 -7
  83. package/dist/admin/components/elements/Paginator/Page/types.js +1 -1
  84. package/dist/admin/components/elements/Paginator/Separator/index.d.ts +3 -3
  85. package/dist/admin/components/elements/Paginator/Separator/index.js +3 -3
  86. package/dist/admin/components/elements/Paginator/index.d.ts +5 -5
  87. package/dist/admin/components/elements/Paginator/index.js +96 -96
  88. package/dist/admin/components/elements/Paginator/types.d.ts +23 -23
  89. package/dist/admin/components/elements/Paginator/types.js +1 -1
  90. package/dist/admin/components/elements/PerPage/index.d.ts +10 -10
  91. package/dist/admin/components/elements/PerPage/index.js +40 -40
  92. package/dist/admin/components/elements/Pill/index.d.ts +5 -5
  93. package/dist/admin/components/elements/Pill/index.js +25 -25
  94. package/dist/admin/components/elements/Pill/types.d.ts +17 -17
  95. package/dist/admin/components/elements/Pill/types.js +1 -1
  96. package/dist/admin/components/elements/Popup/PopupButton/index.d.ts +5 -5
  97. package/dist/admin/components/elements/Popup/PopupButton/index.js +22 -22
  98. package/dist/admin/components/elements/Popup/PopupButton/types.d.ts +7 -7
  99. package/dist/admin/components/elements/Popup/PopupButton/types.js +1 -1
  100. package/dist/admin/components/elements/Popup/index.d.ts +5 -5
  101. package/dist/admin/components/elements/Popup/index.js +92 -92
  102. package/dist/admin/components/elements/Popup/types.d.ts +19 -19
  103. package/dist/admin/components/elements/Popup/types.js +1 -1
  104. package/dist/admin/components/elements/PreviewButton/index.d.ts +5 -5
  105. package/dist/admin/components/elements/PreviewButton/index.js +31 -31
  106. package/dist/admin/components/elements/PreviewButton/types.d.ts +6 -6
  107. package/dist/admin/components/elements/PreviewButton/types.js +1 -1
  108. package/dist/admin/components/elements/Publish/index.d.ts +4 -4
  109. package/dist/admin/components/elements/Publish/index.js +20 -20
  110. package/dist/admin/components/elements/Publish/types.d.ts +1 -1
  111. package/dist/admin/components/elements/Publish/types.js +1 -1
  112. package/dist/admin/components/elements/ReactSelect/index.d.ts +5 -5
  113. package/dist/admin/components/elements/ReactSelect/index.js +14 -14
  114. package/dist/admin/components/elements/ReactSelect/types.d.ts +21 -21
  115. package/dist/admin/components/elements/ReactSelect/types.js +1 -1
  116. package/dist/admin/components/elements/RenderTitle/index.d.ts +4 -4
  117. package/dist/admin/components/elements/RenderTitle/index.js +23 -23
  118. package/dist/admin/components/elements/RenderTitle/types.d.ts +8 -8
  119. package/dist/admin/components/elements/RenderTitle/types.js +1 -1
  120. package/dist/admin/components/elements/SaveDraft/index.d.ts +4 -4
  121. package/dist/admin/components/elements/SaveDraft/index.js +39 -39
  122. package/dist/admin/components/elements/SearchFilter/index.d.ts +5 -5
  123. package/dist/admin/components/elements/SearchFilter/index.js +44 -44
  124. package/dist/admin/components/elements/SearchFilter/types.d.ts +7 -7
  125. package/dist/admin/components/elements/SearchFilter/types.js +1 -1
  126. package/dist/admin/components/elements/SortColumn/index.d.ts +5 -5
  127. package/dist/admin/components/elements/SortColumn/index.js +38 -38
  128. package/dist/admin/components/elements/SortColumn/types.d.ts +5 -5
  129. package/dist/admin/components/elements/SortColumn/types.js +1 -1
  130. package/dist/admin/components/elements/SortComplex/index.d.ts +5 -5
  131. package/dist/admin/components/elements/SortComplex/index.js +51 -51
  132. package/dist/admin/components/elements/SortComplex/types.d.ts +7 -7
  133. package/dist/admin/components/elements/SortComplex/types.js +1 -1
  134. package/dist/admin/components/elements/Status/index.d.ts +5 -5
  135. package/dist/admin/components/elements/Status/index.js +107 -107
  136. package/dist/admin/components/elements/Status/types.d.ts +1 -1
  137. package/dist/admin/components/elements/Status/types.js +1 -1
  138. package/dist/admin/components/elements/StepNav/index.d.ts +10 -10
  139. package/dist/admin/components/elements/StepNav/index.js +34 -34
  140. package/dist/admin/components/elements/StepNav/types.d.ts +8 -8
  141. package/dist/admin/components/elements/StepNav/types.js +1 -1
  142. package/dist/admin/components/elements/Table/index.d.ts +5 -5
  143. package/dist/admin/components/elements/Table/index.js +14 -14
  144. package/dist/admin/components/elements/Table/types.d.ts +12 -12
  145. package/dist/admin/components/elements/Table/types.js +1 -1
  146. package/dist/admin/components/elements/Thumbnail/index.d.ts +5 -5
  147. package/dist/admin/components/elements/Thumbnail/index.js +17 -17
  148. package/dist/admin/components/elements/Thumbnail/types.d.ts +6 -6
  149. package/dist/admin/components/elements/Thumbnail/types.js +1 -1
  150. package/dist/admin/components/elements/Tooltip/index.d.ts +5 -5
  151. package/dist/admin/components/elements/Tooltip/index.js +13 -13
  152. package/dist/admin/components/elements/Tooltip/types.d.ts +5 -5
  153. package/dist/admin/components/elements/Tooltip/types.js +1 -1
  154. package/dist/admin/components/elements/UploadCard/index.d.ts +5 -5
  155. package/dist/admin/components/elements/UploadCard/index.js +17 -17
  156. package/dist/admin/components/elements/UploadCard/types.d.ts +7 -7
  157. package/dist/admin/components/elements/UploadCard/types.js +1 -1
  158. package/dist/admin/components/elements/UploadGallery/index.d.ts +5 -5
  159. package/dist/admin/components/elements/UploadGallery/index.js +13 -13
  160. package/dist/admin/components/elements/UploadGallery/types.d.ts +6 -6
  161. package/dist/admin/components/elements/UploadGallery/types.js +1 -1
  162. package/dist/admin/components/elements/VersionsCount/index.d.ts +5 -5
  163. package/dist/admin/components/elements/VersionsCount/index.js +42 -42
  164. package/dist/admin/components/elements/VersionsCount/types.d.ts +7 -7
  165. package/dist/admin/components/elements/VersionsCount/types.js +1 -1
  166. package/dist/admin/components/elements/ViewDescription/index.d.ts +5 -5
  167. package/dist/admin/components/elements/ViewDescription/index.js +15 -15
  168. package/dist/admin/components/elements/ViewDescription/types.d.ts +9 -9
  169. package/dist/admin/components/elements/ViewDescription/types.js +4 -4
  170. package/dist/admin/components/elements/WhereBuilder/Condition/Date/index.d.ts +4 -4
  171. package/dist/admin/components/elements/WhereBuilder/Condition/Date/index.js +6 -6
  172. package/dist/admin/components/elements/WhereBuilder/Condition/Date/types.d.ts +4 -4
  173. package/dist/admin/components/elements/WhereBuilder/Condition/Date/types.js +1 -1
  174. package/dist/admin/components/elements/WhereBuilder/Condition/Number/index.d.ts +5 -5
  175. package/dist/admin/components/elements/WhereBuilder/Condition/Number/index.js +5 -5
  176. package/dist/admin/components/elements/WhereBuilder/Condition/Number/types.d.ts +4 -4
  177. package/dist/admin/components/elements/WhereBuilder/Condition/Number/types.js +1 -1
  178. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.d.ts +5 -5
  179. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +202 -202
  180. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts +3 -3
  181. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +76 -76
  182. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.d.ts +35 -35
  183. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.js +1 -1
  184. package/dist/admin/components/elements/WhereBuilder/Condition/Text/index.d.ts +5 -5
  185. package/dist/admin/components/elements/WhereBuilder/Condition/Text/index.js +5 -5
  186. package/dist/admin/components/elements/WhereBuilder/Condition/Text/types.d.ts +4 -4
  187. package/dist/admin/components/elements/WhereBuilder/Condition/Text/types.js +1 -1
  188. package/dist/admin/components/elements/WhereBuilder/Condition/index.d.ts +5 -5
  189. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +83 -83
  190. package/dist/admin/components/elements/WhereBuilder/Condition/types.d.ts +9 -9
  191. package/dist/admin/components/elements/WhereBuilder/Condition/types.js +1 -1
  192. package/dist/admin/components/elements/WhereBuilder/field-types.d.ts +87 -87
  193. package/dist/admin/components/elements/WhereBuilder/field-types.js +114 -114
  194. package/dist/admin/components/elements/WhereBuilder/index.d.ts +5 -5
  195. package/dist/admin/components/elements/WhereBuilder/index.js +78 -78
  196. package/dist/admin/components/elements/WhereBuilder/reducer.d.ts +4 -4
  197. package/dist/admin/components/elements/WhereBuilder/reducer.js +65 -65
  198. package/dist/admin/components/elements/WhereBuilder/types.d.ts +43 -43
  199. package/dist/admin/components/elements/WhereBuilder/types.js +1 -1
  200. package/dist/admin/components/elements/WhereBuilder/validateWhereQuery.d.ts +3 -3
  201. package/dist/admin/components/elements/WhereBuilder/validateWhereQuery.js +8 -8
  202. package/dist/admin/components/elements/elements.spec.d.ts +1 -1
  203. package/dist/admin/components/elements/elements.spec.js +12 -12
  204. package/dist/admin/components/forms/DraggableSection/ActionPanel/index.d.ts +5 -5
  205. package/dist/admin/components/forms/DraggableSection/ActionPanel/index.js +22 -22
  206. package/dist/admin/components/forms/DraggableSection/ActionPanel/types.d.ts +11 -11
  207. package/dist/admin/components/forms/DraggableSection/ActionPanel/types.js +1 -1
  208. package/dist/admin/components/forms/DraggableSection/PositionPanel/index.d.ts +5 -5
  209. package/dist/admin/components/forms/DraggableSection/PositionPanel/index.js +18 -18
  210. package/dist/admin/components/forms/DraggableSection/PositionPanel/types.d.ts +6 -6
  211. package/dist/admin/components/forms/DraggableSection/PositionPanel/types.js +1 -1
  212. package/dist/admin/components/forms/DraggableSection/SectionTitle/index.d.ts +5 -5
  213. package/dist/admin/components/forms/DraggableSection/SectionTitle/index.js +16 -16
  214. package/dist/admin/components/forms/DraggableSection/SectionTitle/types.d.ts +5 -5
  215. package/dist/admin/components/forms/DraggableSection/SectionTitle/types.js +1 -1
  216. package/dist/admin/components/forms/DraggableSection/index.d.ts +5 -5
  217. package/dist/admin/components/forms/DraggableSection/index.js +40 -40
  218. package/dist/admin/components/forms/DraggableSection/types.d.ts +24 -24
  219. package/dist/admin/components/forms/DraggableSection/types.js +1 -1
  220. package/dist/admin/components/forms/Error/index.d.ts +5 -5
  221. package/dist/admin/components/forms/Error/index.js +12 -12
  222. package/dist/admin/components/forms/Error/types.d.ts +4 -4
  223. package/dist/admin/components/forms/Error/types.js +1 -1
  224. package/dist/admin/components/forms/FieldDescription/index.d.ts +5 -5
  225. package/dist/admin/components/forms/FieldDescription/index.js +15 -15
  226. package/dist/admin/components/forms/FieldDescription/types.d.ts +11 -11
  227. package/dist/admin/components/forms/FieldDescription/types.js +11 -11
  228. package/dist/admin/components/forms/FieldTypeGutter/context.d.ts +6 -6
  229. package/dist/admin/components/forms/FieldTypeGutter/context.js +9 -9
  230. package/dist/admin/components/forms/FieldTypeGutter/index.d.ts +5 -5
  231. package/dist/admin/components/forms/FieldTypeGutter/index.js +18 -18
  232. package/dist/admin/components/forms/FieldTypeGutter/types.d.ts +9 -9
  233. package/dist/admin/components/forms/FieldTypeGutter/types.js +1 -1
  234. package/dist/admin/components/forms/Form/buildInitialState.d.ts +2 -2
  235. package/dist/admin/components/forms/Form/buildInitialState.js +14 -14
  236. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +18 -18
  237. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +160 -160
  238. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts +14 -14
  239. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +25 -25
  240. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +18 -18
  241. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +24 -24
  242. package/dist/admin/components/forms/Form/context.d.ts +13 -13
  243. package/dist/admin/components/forms/Form/context.js +24 -24
  244. package/dist/admin/components/forms/Form/errorMessages.d.ts +4 -4
  245. package/dist/admin/components/forms/Form/errorMessages.js +3 -3
  246. package/dist/admin/components/forms/Form/fieldReducer.d.ts +3 -3
  247. package/dist/admin/components/forms/Form/fieldReducer.js +147 -147
  248. package/dist/admin/components/forms/Form/flattenFilters.d.ts +4 -4
  249. package/dist/admin/components/forms/Form/flattenFilters.js +8 -8
  250. package/dist/admin/components/forms/Form/getDataByPath.d.ts +3 -3
  251. package/dist/admin/components/forms/Form/getDataByPath.js +14 -14
  252. package/dist/admin/components/forms/Form/getSiblingData.d.ts +3 -3
  253. package/dist/admin/components/forms/Form/getSiblingData.js +18 -18
  254. package/dist/admin/components/forms/Form/index.d.ts +4 -4
  255. package/dist/admin/components/forms/Form/index.js +308 -308
  256. package/dist/admin/components/forms/Form/initContextState.d.ts +3 -3
  257. package/dist/admin/components/forms/Form/initContextState.js +31 -31
  258. package/dist/admin/components/forms/Form/reduceFieldsToValues.d.ts +3 -3
  259. package/dist/admin/components/forms/Form/reduceFieldsToValues.js +14 -14
  260. package/dist/admin/components/forms/Form/types.d.ts +78 -78
  261. package/dist/admin/components/forms/Form/types.js +2 -2
  262. package/dist/admin/components/forms/Label/index.d.ts +5 -5
  263. package/dist/admin/components/forms/Label/index.js +12 -12
  264. package/dist/admin/components/forms/Label/types.d.ts +6 -6
  265. package/dist/admin/components/forms/Label/types.js +1 -1
  266. package/dist/admin/components/forms/RenderFields/index.d.ts +4 -4
  267. package/dist/admin/components/forms/RenderFields/index.js +77 -77
  268. package/dist/admin/components/forms/RenderFields/types.d.ts +13 -13
  269. package/dist/admin/components/forms/RenderFields/types.js +1 -1
  270. package/dist/admin/components/forms/Submit/index.d.ts +5 -5
  271. package/dist/admin/components/forms/Submit/index.js +13 -13
  272. package/dist/admin/components/forms/field-types/Array/Array.d.ts +5 -5
  273. package/dist/admin/components/forms/field-types/Array/Array.js +116 -116
  274. package/dist/admin/components/forms/field-types/Array/index.d.ts +4 -4
  275. package/dist/admin/components/forms/field-types/Array/index.js +6 -6
  276. package/dist/admin/components/forms/field-types/Array/types.d.ts +9 -9
  277. package/dist/admin/components/forms/field-types/Array/types.js +1 -1
  278. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSearch/index.d.ts +6 -6
  279. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSearch/index.js +14 -14
  280. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/index.d.ts +5 -5
  281. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/index.js +18 -18
  282. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/types.d.ts +7 -7
  283. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlockSelection/types.js +1 -1
  284. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlocksContainer/index.d.ts +5 -5
  285. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlocksContainer/index.js +9 -9
  286. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlocksContainer/types.d.ts +7 -7
  287. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/BlocksContainer/types.js +1 -1
  288. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/index.d.ts +4 -4
  289. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/index.js +26 -26
  290. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/types.d.ts +9 -9
  291. package/dist/admin/components/forms/field-types/Blocks/BlockSelector/types.js +1 -1
  292. package/dist/admin/components/forms/field-types/Blocks/Blocks.d.ts +5 -5
  293. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +162 -162
  294. package/dist/admin/components/forms/field-types/Blocks/index.d.ts +4 -4
  295. package/dist/admin/components/forms/field-types/Blocks/index.js +6 -6
  296. package/dist/admin/components/forms/field-types/Blocks/types.d.ts +8 -8
  297. package/dist/admin/components/forms/field-types/Blocks/types.js +1 -1
  298. package/dist/admin/components/forms/field-types/Checkbox/index.d.ts +5 -5
  299. package/dist/admin/components/forms/field-types/Checkbox/index.js +46 -46
  300. package/dist/admin/components/forms/field-types/Checkbox/types.d.ts +6 -6
  301. package/dist/admin/components/forms/field-types/Checkbox/types.js +1 -1
  302. package/dist/admin/components/forms/field-types/Code/Code.d.ts +7 -7
  303. package/dist/admin/components/forms/field-types/Code/Code.js +53 -53
  304. package/dist/admin/components/forms/field-types/Code/index.d.ts +4 -4
  305. package/dist/admin/components/forms/field-types/Code/index.js +6 -6
  306. package/dist/admin/components/forms/field-types/Code/types.d.ts +4 -4
  307. package/dist/admin/components/forms/field-types/Code/types.js +1 -1
  308. package/dist/admin/components/forms/field-types/ConfirmPassword/index.d.ts +4 -4
  309. package/dist/admin/components/forms/field-types/ConfirmPassword/index.js +32 -32
  310. package/dist/admin/components/forms/field-types/DateTime/index.d.ts +5 -5
  311. package/dist/admin/components/forms/field-types/DateTime/index.js +40 -40
  312. package/dist/admin/components/forms/field-types/DateTime/types.d.ts +4 -4
  313. package/dist/admin/components/forms/field-types/DateTime/types.js +1 -1
  314. package/dist/admin/components/forms/field-types/Email/index.d.ts +5 -5
  315. package/dist/admin/components/forms/field-types/Email/index.js +38 -38
  316. package/dist/admin/components/forms/field-types/Email/types.d.ts +4 -4
  317. package/dist/admin/components/forms/field-types/Email/types.js +1 -1
  318. package/dist/admin/components/forms/field-types/Group/index.d.ts +5 -5
  319. package/dist/admin/components/forms/field-types/Group/index.js +34 -34
  320. package/dist/admin/components/forms/field-types/Group/types.d.ts +8 -8
  321. package/dist/admin/components/forms/field-types/Group/types.js +1 -1
  322. package/dist/admin/components/forms/field-types/HiddenInput/index.d.ts +4 -4
  323. package/dist/admin/components/forms/field-types/HiddenInput/index.js +17 -17
  324. package/dist/admin/components/forms/field-types/HiddenInput/types.d.ts +6 -6
  325. package/dist/admin/components/forms/field-types/HiddenInput/types.js +1 -1
  326. package/dist/admin/components/forms/field-types/Number/index.d.ts +5 -5
  327. package/dist/admin/components/forms/field-types/Number/index.js +46 -46
  328. package/dist/admin/components/forms/field-types/Number/types.d.ts +4 -4
  329. package/dist/admin/components/forms/field-types/Number/types.js +1 -1
  330. package/dist/admin/components/forms/field-types/Password/index.d.ts +5 -5
  331. package/dist/admin/components/forms/field-types/Password/index.js +34 -34
  332. package/dist/admin/components/forms/field-types/Password/types.d.ts +15 -15
  333. package/dist/admin/components/forms/field-types/Password/types.js +1 -1
  334. package/dist/admin/components/forms/field-types/Point/index.d.ts +5 -5
  335. package/dist/admin/components/forms/field-types/Point/index.js +52 -52
  336. package/dist/admin/components/forms/field-types/Point/types.d.ts +4 -4
  337. package/dist/admin/components/forms/field-types/Point/types.js +1 -1
  338. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.d.ts +5 -5
  339. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.js +17 -17
  340. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/types.d.ts +9 -9
  341. package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/types.js +1 -1
  342. package/dist/admin/components/forms/field-types/RadioGroup/index.d.ts +5 -5
  343. package/dist/admin/components/forms/field-types/RadioGroup/index.js +52 -52
  344. package/dist/admin/components/forms/field-types/RadioGroup/types.d.ts +4 -4
  345. package/dist/admin/components/forms/field-types/RadioGroup/types.js +1 -1
  346. package/dist/admin/components/forms/field-types/Relationship/createRelationMap.d.ts +10 -10
  347. package/dist/admin/components/forms/field-types/Relationship/createRelationMap.js +35 -35
  348. package/dist/admin/components/forms/field-types/Relationship/index.d.ts +5 -5
  349. package/dist/admin/components/forms/field-types/Relationship/index.js +291 -291
  350. package/dist/admin/components/forms/field-types/Relationship/optionsReducer.d.ts +3 -3
  351. package/dist/admin/components/forms/field-types/Relationship/optionsReducer.js +101 -101
  352. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +38 -38
  353. package/dist/admin/components/forms/field-types/Relationship/types.js +1 -1
  354. package/dist/admin/components/forms/field-types/RichText/RichText.d.ts +23 -23
  355. package/dist/admin/components/forms/field-types/RichText/RichText.js +199 -199
  356. package/dist/admin/components/forms/field-types/RichText/elements/Button.d.ts +6 -6
  357. package/dist/admin/components/forms/field-types/RichText/elements/Button.js +19 -19
  358. package/dist/admin/components/forms/field-types/RichText/elements/ListButton.d.ts +6 -6
  359. package/dist/admin/components/forms/field-types/RichText/elements/ListButton.js +19 -19
  360. package/dist/admin/components/forms/field-types/RichText/elements/h1/index.d.ts +9 -9
  361. package/dist/admin/components/forms/field-types/RichText/elements/h1/index.js +10 -10
  362. package/dist/admin/components/forms/field-types/RichText/elements/h2/index.d.ts +9 -9
  363. package/dist/admin/components/forms/field-types/RichText/elements/h2/index.js +10 -10
  364. package/dist/admin/components/forms/field-types/RichText/elements/h3/index.d.ts +9 -9
  365. package/dist/admin/components/forms/field-types/RichText/elements/h3/index.js +10 -10
  366. package/dist/admin/components/forms/field-types/RichText/elements/h4/index.d.ts +9 -9
  367. package/dist/admin/components/forms/field-types/RichText/elements/h4/index.js +10 -10
  368. package/dist/admin/components/forms/field-types/RichText/elements/h5/index.d.ts +9 -9
  369. package/dist/admin/components/forms/field-types/RichText/elements/h5/index.js +10 -10
  370. package/dist/admin/components/forms/field-types/RichText/elements/h6/index.d.ts +9 -9
  371. package/dist/admin/components/forms/field-types/RichText/elements/h6/index.js +10 -10
  372. package/dist/admin/components/forms/field-types/RichText/elements/indent/index.d.ts +9 -9
  373. package/dist/admin/components/forms/field-types/RichText/elements/indent/index.js +69 -69
  374. package/dist/admin/components/forms/field-types/RichText/elements/index.d.ts +100 -100
  375. package/dist/admin/components/forms/field-types/RichText/elements/index.js +29 -29
  376. package/dist/admin/components/forms/field-types/RichText/elements/injectVoid.d.ts +2 -2
  377. package/dist/admin/components/forms/field-types/RichText/elements/injectVoid.js +24 -24
  378. package/dist/admin/components/forms/field-types/RichText/elements/isActive.d.ts +2 -2
  379. package/dist/admin/components/forms/field-types/RichText/elements/isActive.js +11 -11
  380. package/dist/admin/components/forms/field-types/RichText/elements/isLastSelectedElementEmpty.d.ts +2 -2
  381. package/dist/admin/components/forms/field-types/RichText/elements/isLastSelectedElementEmpty.js +12 -12
  382. package/dist/admin/components/forms/field-types/RichText/elements/isListActive.d.ts +3 -3
  383. package/dist/admin/components/forms/field-types/RichText/elements/isListActive.js +19 -19
  384. package/dist/admin/components/forms/field-types/RichText/elements/li/index.d.ts +5 -5
  385. package/dist/admin/components/forms/field-types/RichText/elements/li/index.js +11 -11
  386. package/dist/admin/components/forms/field-types/RichText/elements/link/index.d.ts +14 -14
  387. package/dist/admin/components/forms/field-types/RichText/elements/link/index.js +74 -74
  388. package/dist/admin/components/forms/field-types/RichText/elements/link/utilities.d.ts +4 -4
  389. package/dist/admin/components/forms/field-types/RichText/elements/link/utilities.js +42 -42
  390. package/dist/admin/components/forms/field-types/RichText/elements/listTypes.d.ts +2 -2
  391. package/dist/admin/components/forms/field-types/RichText/elements/listTypes.js +1 -1
  392. package/dist/admin/components/forms/field-types/RichText/elements/ol/index.d.ts +9 -9
  393. package/dist/admin/components/forms/field-types/RichText/elements/ol/index.js +10 -10
  394. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/Fields/index.d.ts +3 -3
  395. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/Fields/index.js +33 -33
  396. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.d.ts +6 -6
  397. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Button/index.js +75 -75
  398. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Element/index.d.ts +4 -4
  399. package/dist/admin/components/forms/field-types/RichText/elements/relationship/Element/index.js +33 -33
  400. package/dist/admin/components/forms/field-types/RichText/elements/relationship/index.d.ts +9 -9
  401. package/dist/admin/components/forms/field-types/RichText/elements/relationship/index.js +10 -10
  402. package/dist/admin/components/forms/field-types/RichText/elements/relationship/plugin.d.ts +2 -2
  403. package/dist/admin/components/forms/field-types/RichText/elements/relationship/plugin.js +7 -7
  404. package/dist/admin/components/forms/field-types/RichText/elements/toggle.d.ts +2 -2
  405. package/dist/admin/components/forms/field-types/RichText/elements/toggle.js +30 -30
  406. package/dist/admin/components/forms/field-types/RichText/elements/types.d.ts +7 -7
  407. package/dist/admin/components/forms/field-types/RichText/elements/types.js +1 -1
  408. package/dist/admin/components/forms/field-types/RichText/elements/ul/index.d.ts +9 -9
  409. package/dist/admin/components/forms/field-types/RichText/elements/ul/index.js +10 -10
  410. package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.d.ts +7 -7
  411. package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.js +138 -138
  412. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.d.ts +16 -16
  413. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +51 -51
  414. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.d.ts +13 -13
  415. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.js +97 -97
  416. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.d.ts +10 -10
  417. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.js +73 -73
  418. package/dist/admin/components/forms/field-types/RichText/elements/upload/index.d.ts +15 -15
  419. package/dist/admin/components/forms/field-types/RichText/elements/upload/index.js +10 -10
  420. package/dist/admin/components/forms/field-types/RichText/elements/upload/plugin.d.ts +2 -2
  421. package/dist/admin/components/forms/field-types/RichText/elements/upload/plugin.js +7 -7
  422. package/dist/admin/components/forms/field-types/RichText/enablePlugins.d.ts +2 -2
  423. package/dist/admin/components/forms/field-types/RichText/enablePlugins.js +22 -22
  424. package/dist/admin/components/forms/field-types/RichText/hotkeys.d.ts +7 -7
  425. package/dist/admin/components/forms/field-types/RichText/hotkeys.js +6 -6
  426. package/dist/admin/components/forms/field-types/RichText/index.d.ts +4 -4
  427. package/dist/admin/components/forms/field-types/RichText/index.js +6 -6
  428. package/dist/admin/components/forms/field-types/RichText/leaves/Button.d.ts +7 -7
  429. package/dist/admin/components/forms/field-types/RichText/leaves/Button.js +17 -17
  430. package/dist/admin/components/forms/field-types/RichText/leaves/bold/index.d.ts +9 -9
  431. package/dist/admin/components/forms/field-types/RichText/leaves/bold/index.js +10 -10
  432. package/dist/admin/components/forms/field-types/RichText/leaves/code/index.d.ts +9 -9
  433. package/dist/admin/components/forms/field-types/RichText/leaves/code/index.js +10 -10
  434. package/dist/admin/components/forms/field-types/RichText/leaves/index.d.ts +39 -39
  435. package/dist/admin/components/forms/field-types/RichText/leaves/index.js +12 -12
  436. package/dist/admin/components/forms/field-types/RichText/leaves/isActive.d.ts +2 -2
  437. package/dist/admin/components/forms/field-types/RichText/leaves/isActive.js +6 -6
  438. package/dist/admin/components/forms/field-types/RichText/leaves/italic/index.d.ts +9 -9
  439. package/dist/admin/components/forms/field-types/RichText/leaves/italic/index.js +10 -10
  440. package/dist/admin/components/forms/field-types/RichText/leaves/strikethrough/index.d.ts +9 -9
  441. package/dist/admin/components/forms/field-types/RichText/leaves/strikethrough/index.js +10 -10
  442. package/dist/admin/components/forms/field-types/RichText/leaves/toggle.d.ts +2 -2
  443. package/dist/admin/components/forms/field-types/RichText/leaves/toggle.js +12 -12
  444. package/dist/admin/components/forms/field-types/RichText/leaves/underline/index.d.ts +9 -9
  445. package/dist/admin/components/forms/field-types/RichText/leaves/underline/index.js +10 -10
  446. package/dist/admin/components/forms/field-types/RichText/mergeCustomFunctions.d.ts +2 -2
  447. package/dist/admin/components/forms/field-types/RichText/mergeCustomFunctions.js +21 -21
  448. package/dist/admin/components/forms/field-types/RichText/plugins/withEnterBreakOut.d.ts +2 -2
  449. package/dist/admin/components/forms/field-types/RichText/plugins/withEnterBreakOut.js +7 -7
  450. package/dist/admin/components/forms/field-types/RichText/plugins/withHTML.d.ts +2 -2
  451. package/dist/admin/components/forms/field-types/RichText/plugins/withHTML.js +78 -78
  452. package/dist/admin/components/forms/field-types/RichText/types.d.ts +8 -8
  453. package/dist/admin/components/forms/field-types/RichText/types.js +1 -1
  454. package/dist/admin/components/forms/field-types/Row/index.d.ts +5 -5
  455. package/dist/admin/components/forms/field-types/Row/index.js +18 -18
  456. package/dist/admin/components/forms/field-types/Row/types.d.ts +8 -8
  457. package/dist/admin/components/forms/field-types/Row/types.js +1 -1
  458. package/dist/admin/components/forms/field-types/Select/Input.d.ts +22 -22
  459. package/dist/admin/components/forms/field-types/Select/Input.js +33 -33
  460. package/dist/admin/components/forms/field-types/Select/index.d.ts +4 -4
  461. package/dist/admin/components/forms/field-types/Select/index.js +53 -53
  462. package/dist/admin/components/forms/field-types/Select/types.d.ts +4 -4
  463. package/dist/admin/components/forms/field-types/Select/types.js +1 -1
  464. package/dist/admin/components/forms/field-types/Text/Input.d.ts +20 -20
  465. package/dist/admin/components/forms/field-types/Text/Input.js +25 -25
  466. package/dist/admin/components/forms/field-types/Text/index.d.ts +4 -4
  467. package/dist/admin/components/forms/field-types/Text/index.js +23 -23
  468. package/dist/admin/components/forms/field-types/Text/types.d.ts +4 -4
  469. package/dist/admin/components/forms/field-types/Text/types.js +1 -1
  470. package/dist/admin/components/forms/field-types/Textarea/Input.d.ts +21 -21
  471. package/dist/admin/components/forms/field-types/Textarea/Input.js +24 -24
  472. package/dist/admin/components/forms/field-types/Textarea/index.d.ts +5 -5
  473. package/dist/admin/components/forms/field-types/Textarea/index.js +23 -23
  474. package/dist/admin/components/forms/field-types/Textarea/types.d.ts +4 -4
  475. package/dist/admin/components/forms/field-types/Textarea/types.js +1 -1
  476. package/dist/admin/components/forms/field-types/UI/index.d.ts +4 -4
  477. package/dist/admin/components/forms/field-types/UI/index.js +10 -10
  478. package/dist/admin/components/forms/field-types/Upload/Add/index.d.ts +5 -5
  479. package/dist/admin/components/forms/field-types/Upload/Add/index.js +46 -46
  480. package/dist/admin/components/forms/field-types/Upload/Add/types.d.ts +10 -10
  481. package/dist/admin/components/forms/field-types/Upload/Add/types.js +1 -1
  482. package/dist/admin/components/forms/field-types/Upload/Input.d.ts +27 -27
  483. package/dist/admin/components/forms/field-types/Upload/Input.js +86 -86
  484. package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.d.ts +5 -5
  485. package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.js +99 -99
  486. package/dist/admin/components/forms/field-types/Upload/SelectExisting/types.d.ts +11 -11
  487. package/dist/admin/components/forms/field-types/Upload/SelectExisting/types.js +1 -1
  488. package/dist/admin/components/forms/field-types/Upload/index.d.ts +5 -5
  489. package/dist/admin/components/forms/field-types/Upload/index.js +32 -32
  490. package/dist/admin/components/forms/field-types/Upload/types.d.ts +6 -6
  491. package/dist/admin/components/forms/field-types/Upload/types.js +1 -1
  492. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.d.ts +5 -5
  493. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +11 -11
  494. package/dist/admin/components/forms/field-types/index.d.ts +26 -26
  495. package/dist/admin/components/forms/field-types/index.js +45 -45
  496. package/dist/admin/components/forms/field-types/rowReducer.d.ts +2 -2
  497. package/dist/admin/components/forms/field-types/rowReducer.js +50 -50
  498. package/dist/admin/components/forms/useField/index.d.ts +3 -3
  499. package/dist/admin/components/forms/useField/index.js +127 -127
  500. package/dist/admin/components/forms/useField/types.d.ts +18 -18
  501. package/dist/admin/components/forms/useField/types.js +1 -1
  502. package/dist/admin/components/forms/withCondition/index.d.ts +3 -3
  503. package/dist/admin/components/forms/withCondition/index.js +63 -63
  504. package/dist/admin/components/graphics/Account/index.d.ts +3 -3
  505. package/dist/admin/components/graphics/Account/index.js +6 -6
  506. package/dist/admin/components/graphics/DefaultBlockImage/index.d.ts +3 -3
  507. package/dist/admin/components/graphics/DefaultBlockImage/index.js +13 -13
  508. package/dist/admin/components/graphics/File/index.d.ts +3 -3
  509. package/dist/admin/components/graphics/File/index.js +6 -6
  510. package/dist/admin/components/graphics/Icon/index.d.ts +3 -3
  511. package/dist/admin/components/graphics/Icon/index.js +13 -13
  512. package/dist/admin/components/graphics/Logo/index.d.ts +3 -3
  513. package/dist/admin/components/graphics/Logo/index.js +20 -20
  514. package/dist/admin/components/graphics/Search/index.d.ts +3 -3
  515. package/dist/admin/components/graphics/Search/index.js +5 -5
  516. package/dist/admin/components/icons/Blockquote/index.d.ts +3 -3
  517. package/dist/admin/components/icons/Blockquote/index.js +5 -5
  518. package/dist/admin/components/icons/Bold/index.d.ts +3 -3
  519. package/dist/admin/components/icons/Bold/index.js +5 -5
  520. package/dist/admin/components/icons/Calendar/index.d.ts +4 -4
  521. package/dist/admin/components/icons/Calendar/index.js +8 -8
  522. package/dist/admin/components/icons/Check/index.d.ts +4 -4
  523. package/dist/admin/components/icons/Check/index.js +6 -6
  524. package/dist/admin/components/icons/Chevron/index.d.ts +6 -6
  525. package/dist/admin/components/icons/Chevron/index.js +8 -8
  526. package/dist/admin/components/icons/CloseMenu/index.d.ts +4 -4
  527. package/dist/admin/components/icons/CloseMenu/index.js +6 -6
  528. package/dist/admin/components/icons/Code/index.d.ts +3 -3
  529. package/dist/admin/components/icons/Code/index.js +4 -4
  530. package/dist/admin/components/icons/CodeBlock/index.d.ts +3 -3
  531. package/dist/admin/components/icons/CodeBlock/index.js +5 -5
  532. package/dist/admin/components/icons/Copy/index.d.ts +4 -4
  533. package/dist/admin/components/icons/Copy/index.js +6 -6
  534. package/dist/admin/components/icons/Edit/index.d.ts +4 -4
  535. package/dist/admin/components/icons/Edit/index.js +7 -7
  536. package/dist/admin/components/icons/IndentLeft/index.d.ts +4 -4
  537. package/dist/admin/components/icons/IndentLeft/index.js +8 -8
  538. package/dist/admin/components/icons/IndentRight/index.d.ts +4 -4
  539. package/dist/admin/components/icons/IndentRight/index.js +8 -8
  540. package/dist/admin/components/icons/Italic/index.d.ts +3 -3
  541. package/dist/admin/components/icons/Italic/index.js +5 -5
  542. package/dist/admin/components/icons/Link/index.d.ts +3 -3
  543. package/dist/admin/components/icons/Link/index.js +5 -5
  544. package/dist/admin/components/icons/LogOut/index.d.ts +4 -4
  545. package/dist/admin/components/icons/LogOut/index.js +8 -8
  546. package/dist/admin/components/icons/Menu/index.d.ts +3 -3
  547. package/dist/admin/components/icons/Menu/index.js +6 -6
  548. package/dist/admin/components/icons/OrderedList/index.d.ts +3 -3
  549. package/dist/admin/components/icons/OrderedList/index.js +5 -5
  550. package/dist/admin/components/icons/Plus/index.d.ts +4 -4
  551. package/dist/admin/components/icons/Plus/index.js +6 -6
  552. package/dist/admin/components/icons/Relationship/index.d.ts +4 -4
  553. package/dist/admin/components/icons/Relationship/index.js +7 -7
  554. package/dist/admin/components/icons/Search/index.d.ts +3 -3
  555. package/dist/admin/components/icons/Search/index.js +5 -5
  556. package/dist/admin/components/icons/Strikethrough/index.d.ts +3 -3
  557. package/dist/admin/components/icons/Strikethrough/index.js +5 -5
  558. package/dist/admin/components/icons/Swap/index.d.ts +4 -4
  559. package/dist/admin/components/icons/Swap/index.js +8 -8
  560. package/dist/admin/components/icons/Underline/index.d.ts +3 -3
  561. package/dist/admin/components/icons/Underline/index.js +5 -5
  562. package/dist/admin/components/icons/UnorderedList/index.d.ts +3 -3
  563. package/dist/admin/components/icons/UnorderedList/index.js +5 -5
  564. package/dist/admin/components/icons/Upload/index.d.ts +4 -4
  565. package/dist/admin/components/icons/Upload/index.js +6 -6
  566. package/dist/admin/components/icons/X/index.d.ts +4 -4
  567. package/dist/admin/components/icons/X/index.js +6 -6
  568. package/dist/admin/components/icons/headings/H1/index.d.ts +3 -3
  569. package/dist/admin/components/icons/headings/H1/index.js +5 -5
  570. package/dist/admin/components/icons/headings/H2/index.d.ts +3 -3
  571. package/dist/admin/components/icons/headings/H2/index.js +5 -5
  572. package/dist/admin/components/icons/headings/H3/index.d.ts +3 -3
  573. package/dist/admin/components/icons/headings/H3/index.js +5 -5
  574. package/dist/admin/components/icons/headings/H4/index.d.ts +3 -3
  575. package/dist/admin/components/icons/headings/H4/index.js +5 -5
  576. package/dist/admin/components/icons/headings/H5/index.d.ts +3 -3
  577. package/dist/admin/components/icons/headings/H5/index.js +5 -5
  578. package/dist/admin/components/icons/headings/H6/index.d.ts +3 -3
  579. package/dist/admin/components/icons/headings/H6/index.js +5 -5
  580. package/dist/admin/components/icons/headings/index.d.ts +10 -10
  581. package/dist/admin/components/icons/headings/index.js +14 -14
  582. package/dist/admin/components/index.d.ts +10 -10
  583. package/dist/admin/components/index.js +10 -10
  584. package/dist/admin/components/modals/LeaveWithoutSaving/index.d.ts +4 -4
  585. package/dist/admin/components/modals/LeaveWithoutSaving/index.js +19 -19
  586. package/dist/admin/components/modals/StayLoggedIn/index.d.ts +5 -5
  587. package/dist/admin/components/modals/StayLoggedIn/index.js +28 -28
  588. package/dist/admin/components/modals/StayLoggedIn/types.d.ts +3 -3
  589. package/dist/admin/components/modals/StayLoggedIn/types.js +1 -1
  590. package/dist/admin/components/templates/Default/index.d.ts +5 -5
  591. package/dist/admin/components/templates/Default/index.js +21 -21
  592. package/dist/admin/components/templates/Default/types.d.ts +5 -5
  593. package/dist/admin/components/templates/Default/types.js +1 -1
  594. package/dist/admin/components/templates/Minimal/index.d.ts +5 -5
  595. package/dist/admin/components/templates/Minimal/index.js +14 -14
  596. package/dist/admin/components/templates/Minimal/types.d.ts +7 -7
  597. package/dist/admin/components/templates/Minimal/types.js +1 -1
  598. package/dist/admin/components/utilities/Auth/index.d.ts +9 -6
  599. package/dist/admin/components/utilities/Auth/index.js +125 -125
  600. package/dist/admin/components/utilities/Auth/types.d.ts +9 -9
  601. package/dist/admin/components/utilities/Auth/types.js +1 -1
  602. package/dist/admin/components/utilities/Config/index.d.ts +7 -7
  603. package/dist/admin/components/utilities/Config/index.js +4 -4
  604. package/dist/admin/components/utilities/CustomProvider/index.d.ts +4 -4
  605. package/dist/admin/components/utilities/CustomProvider/index.js +18 -18
  606. package/dist/admin/components/utilities/DocumentInfo/index.d.ts +6 -6
  607. package/dist/admin/components/utilities/DocumentInfo/index.js +136 -136
  608. package/dist/admin/components/utilities/DocumentInfo/types.d.ts +25 -25
  609. package/dist/admin/components/utilities/DocumentInfo/types.js +1 -1
  610. package/dist/admin/components/utilities/Locale/index.d.ts +7 -7
  611. package/dist/admin/components/utilities/Locale/index.js +45 -45
  612. package/dist/admin/components/utilities/Meta/index.d.ts +4 -4
  613. package/dist/admin/components/utilities/Meta/index.js +59 -59
  614. package/dist/admin/components/utilities/Meta/types.d.ts +12 -12
  615. package/dist/admin/components/utilities/Meta/types.js +1 -1
  616. package/dist/admin/components/utilities/OperationProvider/index.d.ts +4 -4
  617. package/dist/admin/components/utilities/OperationProvider/index.js +3 -3
  618. package/dist/admin/components/utilities/Portal/index.d.ts +5 -5
  619. package/dist/admin/components/utilities/Portal/index.js +3 -3
  620. package/dist/admin/components/utilities/Preferences/index.d.ts +10 -10
  621. package/dist/admin/components/utilities/Preferences/index.js +50 -50
  622. package/dist/admin/components/utilities/RenderCustomComponent/index.d.ts +4 -4
  623. package/dist/admin/components/utilities/RenderCustomComponent/index.js +9 -9
  624. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts +6 -6
  625. package/dist/admin/components/utilities/RenderCustomComponent/types.js +1 -1
  626. package/dist/admin/components/utilities/SearchParams/index.d.ts +6 -6
  627. package/dist/admin/components/utilities/SearchParams/index.js +10 -10
  628. package/dist/admin/components/views/Account/Default.d.ts +5 -5
  629. package/dist/admin/components/views/Account/Default.js +71 -71
  630. package/dist/admin/components/views/Account/index.d.ts +3 -3
  631. package/dist/admin/components/views/Account/index.js +59 -59
  632. package/dist/admin/components/views/Account/types.d.ts +13 -13
  633. package/dist/admin/components/views/Account/types.js +1 -1
  634. package/dist/admin/components/views/CreateFirstUser/index.d.ts +5 -5
  635. package/dist/admin/components/views/CreateFirstUser/index.js +55 -55
  636. package/dist/admin/components/views/CreateFirstUser/types.d.ts +3 -3
  637. package/dist/admin/components/views/CreateFirstUser/types.js +1 -1
  638. package/dist/admin/components/views/Dashboard/Default.d.ts +5 -5
  639. package/dist/admin/components/views/Dashboard/Default.js +30 -30
  640. package/dist/admin/components/views/Dashboard/index.d.ts +3 -3
  641. package/dist/admin/components/views/Dashboard/index.js +26 -26
  642. package/dist/admin/components/views/Dashboard/types.d.ts +8 -8
  643. package/dist/admin/components/views/Dashboard/types.js +1 -1
  644. package/dist/admin/components/views/ForgotPassword/index.d.ts +4 -4
  645. package/dist/admin/components/views/ForgotPassword/index.js +52 -52
  646. package/dist/admin/components/views/Global/Default.d.ts +5 -5
  647. package/dist/admin/components/views/Global/Default.js +78 -78
  648. package/dist/admin/components/views/Global/index.d.ts +4 -4
  649. package/dist/admin/components/views/Global/index.js +57 -57
  650. package/dist/admin/components/views/Global/types.d.ts +18 -18
  651. package/dist/admin/components/views/Global/types.js +1 -1
  652. package/dist/admin/components/views/Login/index.d.ts +4 -4
  653. package/dist/admin/components/views/Login/index.js +52 -51
  654. package/dist/admin/components/views/Logout/index.d.ts +6 -6
  655. package/dist/admin/components/views/Logout/index.js +24 -24
  656. package/dist/admin/components/views/NotFound/index.d.ts +4 -4
  657. package/dist/admin/components/views/NotFound/index.js +25 -25
  658. package/dist/admin/components/views/ResetPassword/index.d.ts +4 -4
  659. package/dist/admin/components/views/ResetPassword/index.js +49 -49
  660. package/dist/admin/components/views/Unauthorized/index.d.ts +3 -3
  661. package/dist/admin/components/views/Unauthorized/index.js +15 -15
  662. package/dist/admin/components/views/Verify/index.d.ts +7 -7
  663. package/dist/admin/components/views/Verify/index.js +43 -43
  664. package/dist/admin/components/views/Version/Compare/index.d.ts +5 -5
  665. package/dist/admin/components/views/Version/Compare/index.js +79 -79
  666. package/dist/admin/components/views/Version/Compare/types.d.ts +26 -26
  667. package/dist/admin/components/views/Version/Compare/types.js +1 -1
  668. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.d.ts +6 -6
  669. package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.js +5 -5
  670. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +8 -8
  671. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +57 -57
  672. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +8 -8
  673. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.js +15 -15
  674. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +8 -8
  675. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +68 -68
  676. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +5 -5
  677. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +25 -25
  678. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.d.ts +1 -1
  679. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.js +82 -82
  680. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.d.ts +1 -1
  681. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.js +52 -52
  682. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.d.ts +6 -6
  683. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.js +6 -6
  684. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.d.ts +33 -33
  685. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +23 -23
  686. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.d.ts +16 -16
  687. package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.js +1 -1
  688. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.d.ts +5 -5
  689. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +39 -39
  690. package/dist/admin/components/views/Version/RenderFieldsToDiff/types.d.ts +11 -11
  691. package/dist/admin/components/views/Version/RenderFieldsToDiff/types.js +1 -1
  692. package/dist/admin/components/views/Version/Restore/index.d.ts +5 -5
  693. package/dist/admin/components/views/Version/Restore/index.js +50 -50
  694. package/dist/admin/components/views/Version/Restore/types.d.ts +10 -10
  695. package/dist/admin/components/views/Version/Restore/types.js +1 -1
  696. package/dist/admin/components/views/Version/SelectLocales/index.d.ts +5 -5
  697. package/dist/admin/components/views/Version/SelectLocales/index.js +8 -8
  698. package/dist/admin/components/views/Version/SelectLocales/types.d.ts +6 -6
  699. package/dist/admin/components/views/Version/SelectLocales/types.js +1 -1
  700. package/dist/admin/components/views/Version/Version.d.ts +5 -5
  701. package/dist/admin/components/views/Version/Version.js +159 -159
  702. package/dist/admin/components/views/Version/index.d.ts +4 -4
  703. package/dist/admin/components/views/Version/index.js +6 -6
  704. package/dist/admin/components/views/Version/shared.d.ts +8 -8
  705. package/dist/admin/components/views/Version/shared.js +8 -8
  706. package/dist/admin/components/views/Version/types.d.ts +16 -16
  707. package/dist/admin/components/views/Version/types.js +1 -1
  708. package/dist/admin/components/views/Versions/columns.d.ts +4 -4
  709. package/dist/admin/components/views/Versions/columns.js +47 -47
  710. package/dist/admin/components/views/Versions/index.d.ts +5 -5
  711. package/dist/admin/components/views/Versions/index.js +178 -178
  712. package/dist/admin/components/views/Versions/types.d.ts +6 -6
  713. package/dist/admin/components/views/Versions/types.js +1 -1
  714. package/dist/admin/components/views/collections/Edit/Auth/APIKey.d.ts +3 -3
  715. package/dist/admin/components/views/collections/Edit/Auth/APIKey.js +60 -60
  716. package/dist/admin/components/views/collections/Edit/Auth/index.d.ts +5 -5
  717. package/dist/admin/components/views/collections/Edit/Auth/index.js +59 -56
  718. package/dist/admin/components/views/collections/Edit/Auth/types.d.ts +10 -10
  719. package/dist/admin/components/views/collections/Edit/Auth/types.js +1 -1
  720. package/dist/admin/components/views/collections/Edit/Default.d.ts +5 -5
  721. package/dist/admin/components/views/collections/Edit/Default.js +98 -98
  722. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts +5 -5
  723. package/dist/admin/components/views/collections/Edit/Upload/index.js +118 -118
  724. package/dist/admin/components/views/collections/Edit/Upload/types.d.ts +12 -12
  725. package/dist/admin/components/views/collections/Edit/Upload/types.js +1 -1
  726. package/dist/admin/components/views/collections/Edit/formatFields.d.ts +4 -4
  727. package/dist/admin/components/views/collections/Edit/formatFields.js +5 -5
  728. package/dist/admin/components/views/collections/Edit/index.d.ts +4 -4
  729. package/dist/admin/components/views/collections/Edit/index.js +104 -104
  730. package/dist/admin/components/views/collections/Edit/types.d.ts +19 -19
  731. package/dist/admin/components/views/collections/Edit/types.js +1 -1
  732. package/dist/admin/components/views/collections/List/Cell/cellTypes.spec.d.ts +1 -1
  733. package/dist/admin/components/views/collections/List/Cell/cellTypes.spec.js +138 -138
  734. package/dist/admin/components/views/collections/List/Cell/field-types/Array/index.d.ts +8 -8
  735. package/dist/admin/components/views/collections/List/Cell/field-types/Array/index.js +8 -8
  736. package/dist/admin/components/views/collections/List/Cell/field-types/Blocks/index.d.ts +6 -6
  737. package/dist/admin/components/views/collections/List/Cell/field-types/Blocks/index.js +21 -21
  738. package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.d.ts +6 -6
  739. package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.js +6 -6
  740. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.d.ts +6 -6
  741. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.js +8 -8
  742. package/dist/admin/components/views/collections/List/Cell/field-types/Date/index.d.ts +5 -5
  743. package/dist/admin/components/views/collections/List/Cell/field-types/Date/index.js +8 -8
  744. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.d.ts +3 -3
  745. package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.js +43 -43
  746. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.d.ts +5 -5
  747. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +7 -7
  748. package/dist/admin/components/views/collections/List/Cell/field-types/Select/index.d.ts +7 -7
  749. package/dist/admin/components/views/collections/List/Cell/field-types/Select/index.js +23 -23
  750. package/dist/admin/components/views/collections/List/Cell/field-types/Textarea/index.d.ts +5 -5
  751. package/dist/admin/components/views/collections/List/Cell/field-types/Textarea/index.js +6 -6
  752. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.d.ts +5 -5
  753. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.js +4 -4
  754. package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +35 -35
  755. package/dist/admin/components/views/collections/List/Cell/field-types/index.js +22 -22
  756. package/dist/admin/components/views/collections/List/Cell/index.d.ts +4 -4
  757. package/dist/admin/components/views/collections/List/Cell/index.js +36 -36
  758. package/dist/admin/components/views/collections/List/Cell/types.d.ts +11 -11
  759. package/dist/admin/components/views/collections/List/Cell/types.js +1 -1
  760. package/dist/admin/components/views/collections/List/Default.d.ts +5 -5
  761. package/dist/admin/components/views/collections/List/Default.js +63 -63
  762. package/dist/admin/components/views/collections/List/buildColumns.d.ts +4 -4
  763. package/dist/admin/components/views/collections/List/buildColumns.js +52 -52
  764. package/dist/admin/components/views/collections/List/formatFields.d.ts +4 -4
  765. package/dist/admin/components/views/collections/List/formatFields.js +38 -38
  766. package/dist/admin/components/views/collections/List/getInitialColumns.d.ts +3 -3
  767. package/dist/admin/components/views/collections/List/getInitialColumns.js +37 -37
  768. package/dist/admin/components/views/collections/List/index.d.ts +4 -4
  769. package/dist/admin/components/views/collections/List/index.js +117 -117
  770. package/dist/admin/components/views/collections/List/types.d.ts +24 -24
  771. package/dist/admin/components/views/collections/List/types.js +1 -1
  772. package/dist/admin/hooks/useDebounce.d.ts +1 -1
  773. package/dist/admin/hooks/useDebounce.js +15 -15
  774. package/dist/admin/hooks/useDebouncedCallback.d.ts +7 -7
  775. package/dist/admin/hooks/useDebouncedCallback.js +20 -20
  776. package/dist/admin/hooks/useIntersect.d.ts +11 -11
  777. package/dist/admin/hooks/useIntersect.js +20 -20
  778. package/dist/admin/hooks/useMountEffect.d.ts +2 -2
  779. package/dist/admin/hooks/useMountEffect.js +3 -3
  780. package/dist/admin/hooks/usePayloadAPI.d.ts +18 -18
  781. package/dist/admin/hooks/usePayloadAPI.js +44 -44
  782. package/dist/admin/hooks/useThrottledEffect.d.ts +4 -4
  783. package/dist/admin/hooks/useThrottledEffect.js +17 -17
  784. package/dist/admin/hooks/useThumbnail.d.ts +3 -3
  785. package/dist/admin/hooks/useThumbnail.js +27 -27
  786. package/dist/admin/hooks/useTitle.d.ts +2 -2
  787. package/dist/admin/hooks/useTitle.js +7 -7
  788. package/dist/admin/index.d.ts +1 -1
  789. package/dist/admin/index.js +46 -46
  790. package/dist/admin/utilities/getOffsetTop.d.ts +2 -2
  791. package/dist/admin/utilities/getOffsetTop.js +14 -14
  792. package/dist/auth/auth.spec.d.ts +1 -1
  793. package/dist/auth/auth.spec.js +197 -197
  794. package/dist/auth/baseFields/accountLock.d.ts +3 -3
  795. package/dist/auth/baseFields/accountLock.js +15 -15
  796. package/dist/auth/baseFields/apiKey.d.ts +3 -3
  797. package/dist/auth/baseFields/apiKey.js +62 -62
  798. package/dist/auth/baseFields/auth.d.ts +3 -3
  799. package/dist/auth/baseFields/auth.js +27 -27
  800. package/dist/auth/baseFields/verification.d.ts +3 -3
  801. package/dist/auth/baseFields/verification.js +40 -40
  802. package/dist/auth/crypto.d.ts +2 -2
  803. package/dist/auth/crypto.js +25 -25
  804. package/dist/auth/defaultAccess.d.ts +5 -5
  805. package/dist/auth/defaultAccess.js +3 -3
  806. package/dist/auth/defaultUser.d.ts +3 -3
  807. package/dist/auth/defaultUser.js +17 -17
  808. package/dist/auth/executeAccess.d.ts +3 -3
  809. package/dist/auth/executeAccess.js +20 -20
  810. package/dist/auth/getExecuteStaticAccess.d.ts +7 -7
  811. package/dist/auth/getExecuteStaticAccess.js +55 -55
  812. package/dist/auth/getExtractJWT.d.ts +4 -4
  813. package/dist/auth/getExtractJWT.js +24 -24
  814. package/dist/auth/graphql/resolvers/access.d.ts +3 -3
  815. package/dist/auth/graphql/resolvers/access.js +29 -29
  816. package/dist/auth/graphql/resolvers/forgotPassword.d.ts +3 -3
  817. package/dist/auth/graphql/resolvers/forgotPassword.js +23 -23
  818. package/dist/auth/graphql/resolvers/init.d.ts +3 -3
  819. package/dist/auth/graphql/resolvers/init.js +18 -18
  820. package/dist/auth/graphql/resolvers/login.d.ts +5 -5
  821. package/dist/auth/graphql/resolvers/login.js +23 -23
  822. package/dist/auth/graphql/resolvers/logout.d.ts +3 -3
  823. package/dist/auth/graphql/resolvers/logout.js +19 -19
  824. package/dist/auth/graphql/resolvers/me.d.ts +3 -3
  825. package/dist/auth/graphql/resolvers/me.js +17 -17
  826. package/dist/auth/graphql/resolvers/refresh.d.ts +3 -3
  827. package/dist/auth/graphql/resolvers/refresh.js +27 -27
  828. package/dist/auth/graphql/resolvers/resetPassword.d.ts +3 -3
  829. package/dist/auth/graphql/resolvers/resetPassword.js +25 -25
  830. package/dist/auth/graphql/resolvers/unlock.d.ts +3 -3
  831. package/dist/auth/graphql/resolvers/unlock.js +19 -19
  832. package/dist/auth/graphql/resolvers/verifyEmail.d.ts +3 -3
  833. package/dist/auth/graphql/resolvers/verifyEmail.js +25 -25
  834. package/dist/auth/index.d.ts +1 -1
  835. package/dist/auth/index.js +17 -17
  836. package/dist/auth/init.d.ts +3 -3
  837. package/dist/auth/init.js +13 -13
  838. package/dist/auth/isLocked.d.ts +2 -2
  839. package/dist/auth/isLocked.js +4 -4
  840. package/dist/auth/operations/access.d.ts +7 -7
  841. package/dist/auth/operations/access.js +97 -97
  842. package/dist/auth/operations/forgotPassword.d.ts +15 -15
  843. package/dist/auth/operations/forgotPassword.js +69 -69
  844. package/dist/auth/operations/init.d.ts +7 -7
  845. package/dist/auth/operations/init.js +8 -8
  846. package/dist/auth/operations/local/forgotPassword.d.ts +14 -14
  847. package/dist/auth/operations/local/forgotPassword.js +21 -21
  848. package/dist/auth/operations/local/index.d.ts +13 -13
  849. package/dist/auth/operations/local/index.js +17 -17
  850. package/dist/auth/operations/local/login.d.ts +23 -23
  851. package/dist/auth/operations/local/login.js +31 -31
  852. package/dist/auth/operations/local/resetPassword.d.ts +14 -14
  853. package/dist/auth/operations/local/resetPassword.js +21 -21
  854. package/dist/auth/operations/local/unlock.d.ts +12 -12
  855. package/dist/auth/operations/local/unlock.js +21 -21
  856. package/dist/auth/operations/local/verifyEmail.d.ts +7 -7
  857. package/dist/auth/operations/local/verifyEmail.js +15 -15
  858. package/dist/auth/operations/login.d.ts +25 -25
  859. package/dist/auth/operations/login.js +140 -140
  860. package/dist/auth/operations/logout.d.ts +10 -10
  861. package/dist/auth/operations/logout.js +35 -27
  862. package/dist/auth/operations/me.d.ts +15 -15
  863. package/dist/auth/operations/me.js +46 -36
  864. package/dist/auth/operations/refresh.d.ts +17 -17
  865. package/dist/auth/operations/refresh.js +70 -57
  866. package/dist/auth/operations/registerFirstUser.d.ts +19 -19
  867. package/dist/auth/operations/registerFirstUser.js +44 -44
  868. package/dist/auth/operations/resetPassword.d.ts +20 -20
  869. package/dist/auth/operations/resetPassword.js +61 -61
  870. package/dist/auth/operations/unlock.d.ts +12 -12
  871. package/dist/auth/operations/unlock.js +30 -30
  872. package/dist/auth/operations/verifyEmail.d.ts +7 -7
  873. package/dist/auth/operations/verifyEmail.js +24 -24
  874. package/dist/auth/requestHandlers/access.d.ts +4 -4
  875. package/dist/auth/requestHandlers/access.js +20 -20
  876. package/dist/auth/requestHandlers/forgotPassword.d.ts +3 -3
  877. package/dist/auth/requestHandlers/forgotPassword.js +26 -26
  878. package/dist/auth/requestHandlers/init.d.ts +3 -3
  879. package/dist/auth/requestHandlers/init.js +16 -16
  880. package/dist/auth/requestHandlers/login.d.ts +6 -6
  881. package/dist/auth/requestHandlers/login.js +29 -29
  882. package/dist/auth/requestHandlers/logout.d.ts +5 -5
  883. package/dist/auth/requestHandlers/logout.js +21 -21
  884. package/dist/auth/requestHandlers/me.d.ts +3 -3
  885. package/dist/auth/requestHandlers/me.js +19 -19
  886. package/dist/auth/requestHandlers/refresh.d.ts +3 -3
  887. package/dist/auth/requestHandlers/refresh.js +31 -31
  888. package/dist/auth/requestHandlers/registerFirstUser.d.ts +3 -3
  889. package/dist/auth/requestHandlers/registerFirstUser.js +21 -21
  890. package/dist/auth/requestHandlers/resetPassword.d.ts +4 -4
  891. package/dist/auth/requestHandlers/resetPassword.js +27 -27
  892. package/dist/auth/requestHandlers/unlock.d.ts +3 -3
  893. package/dist/auth/requestHandlers/unlock.js +24 -24
  894. package/dist/auth/requestHandlers/verifyEmail.d.ts +4 -4
  895. package/dist/auth/requestHandlers/verifyEmail.js +23 -23
  896. package/dist/auth/sendVerificationEmail.d.ts +17 -17
  897. package/dist/auth/sendVerificationEmail.js +35 -35
  898. package/dist/auth/strategies/apiKey.d.ts +7 -7
  899. package/dist/auth/strategies/apiKey.js +66 -65
  900. package/dist/auth/strategies/jwt.d.ts +4 -4
  901. package/dist/auth/strategies/jwt.js +65 -61
  902. package/dist/auth/types.d.ts +114 -107
  903. package/dist/auth/types.js +8 -8
  904. package/dist/babel.config.d.ts +4 -4
  905. package/dist/babel.config.js +21 -21
  906. package/dist/bin/build.d.ts +1 -1
  907. package/dist/bin/build.js +48 -48
  908. package/dist/bin/generateGraphQLSchema.d.ts +1 -1
  909. package/dist/bin/generateGraphQLSchema.js +29 -29
  910. package/dist/bin/generateTypes.d.ts +1 -1
  911. package/dist/bin/generateTypes.js +349 -349
  912. package/dist/bin/index.d.ts +1 -1
  913. package/dist/bin/index.js +35 -35
  914. package/dist/collections/bindCollection.d.ts +7 -7
  915. package/dist/collections/bindCollection.js +7 -7
  916. package/dist/collections/buildEndpoints.d.ts +4 -4
  917. package/dist/collections/buildEndpoints.js +136 -132
  918. package/dist/collections/buildSchema.d.ts +5 -5
  919. package/dist/collections/buildSchema.js +17 -17
  920. package/dist/collections/config/build.d.ts +3 -3
  921. package/dist/collections/config/build.js +4 -4
  922. package/dist/collections/config/defaults.d.ts +61 -58
  923. package/dist/collections/config/defaults.js +59 -56
  924. package/dist/collections/config/sanitize.d.ts +4 -4
  925. package/dist/collections/config/sanitize.js +101 -93
  926. package/dist/collections/config/schema.d.ts +3 -3
  927. package/dist/collections/config/schema.js +116 -107
  928. package/dist/collections/config/types.d.ts +252 -234
  929. package/dist/collections/config/types.js +2 -2
  930. package/dist/collections/graphql/init.d.ts +3 -3
  931. package/dist/collections/graphql/init.js +346 -344
  932. package/dist/collections/graphql/resolvers/create.d.ts +12 -12
  933. package/dist/collections/graphql/resolvers/create.js +22 -22
  934. package/dist/collections/graphql/resolvers/delete.d.ts +11 -11
  935. package/dist/collections/graphql/resolvers/delete.js +23 -23
  936. package/dist/collections/graphql/resolvers/find.d.ts +18 -18
  937. package/dist/collections/graphql/resolvers/find.js +26 -26
  938. package/dist/collections/graphql/resolvers/findByID.d.ts +12 -12
  939. package/dist/collections/graphql/resolvers/findByID.js +24 -24
  940. package/dist/collections/graphql/resolvers/findVersionByID.d.ts +13 -13
  941. package/dist/collections/graphql/resolvers/findVersionByID.js +23 -23
  942. package/dist/collections/graphql/resolvers/findVersions.d.ts +17 -17
  943. package/dist/collections/graphql/resolvers/findVersions.js +27 -27
  944. package/dist/collections/graphql/resolvers/resolvers.spec.d.ts +1 -1
  945. package/dist/collections/graphql/resolvers/resolvers.spec.js +192 -192
  946. package/dist/collections/graphql/resolvers/restoreVersion.d.ts +10 -10
  947. package/dist/collections/graphql/resolvers/restoreVersion.js +19 -19
  948. package/dist/collections/graphql/resolvers/update.d.ts +14 -14
  949. package/dist/collections/graphql/resolvers/update.js +27 -27
  950. package/dist/collections/graphql/types.d.ts +12 -12
  951. package/dist/collections/graphql/types.js +2 -2
  952. package/dist/collections/init.d.ts +2 -2
  953. package/dist/collections/init.js +95 -93
  954. package/dist/collections/operations/create.d.ts +16 -16
  955. package/dist/collections/operations/create.js +208 -208
  956. package/dist/collections/operations/delete.d.ts +13 -13
  957. package/dist/collections/operations/delete.js +143 -143
  958. package/dist/collections/operations/find.d.ts +19 -19
  959. package/dist/collections/operations/find.js +147 -147
  960. package/dist/collections/operations/findByID.d.ts +15 -15
  961. package/dist/collections/operations/findByID.js +129 -129
  962. package/dist/collections/operations/findVersionByID.d.ts +15 -15
  963. package/dist/collections/operations/findVersionByID.js +99 -99
  964. package/dist/collections/operations/findVersions.d.ts +18 -18
  965. package/dist/collections/operations/findVersions.js +122 -122
  966. package/dist/collections/operations/local/create.d.ts +21 -21
  967. package/dist/collections/operations/local/create.js +34 -34
  968. package/dist/collections/operations/local/delete.d.ts +14 -14
  969. package/dist/collections/operations/local/delete.js +26 -26
  970. package/dist/collections/operations/local/find.d.ts +20 -20
  971. package/dist/collections/operations/local/find.js +32 -32
  972. package/dist/collections/operations/local/findByID.d.ts +19 -19
  973. package/dist/collections/operations/local/findByID.js +34 -34
  974. package/dist/collections/operations/local/findVersionByID.d.ts +17 -17
  975. package/dist/collections/operations/local/findVersionByID.js +27 -27
  976. package/dist/collections/operations/local/findVersions.d.ts +18 -18
  977. package/dist/collections/operations/local/findVersions.js +29 -29
  978. package/dist/collections/operations/local/index.d.ts +26 -26
  979. package/dist/collections/operations/local/index.js +25 -25
  980. package/dist/collections/operations/local/local.spec.d.ts +1 -1
  981. package/dist/collections/operations/local/local.spec.js +195 -195
  982. package/dist/collections/operations/local/restoreVersion.d.ts +15 -15
  983. package/dist/collections/operations/local/restoreVersion.js +29 -29
  984. package/dist/collections/operations/local/update.d.ts +19 -19
  985. package/dist/collections/operations/local/update.js +36 -36
  986. package/dist/collections/operations/restoreVersion.d.ts +14 -14
  987. package/dist/collections/operations/restoreVersion.js +113 -113
  988. package/dist/collections/operations/update.d.ts +18 -18
  989. package/dist/collections/operations/update.js +248 -248
  990. package/dist/collections/requestHandlers/create.d.ts +8 -8
  991. package/dist/collections/requestHandlers/create.js +27 -27
  992. package/dist/collections/requestHandlers/delete.d.ts +8 -8
  993. package/dist/collections/requestHandlers/delete.js +26 -26
  994. package/dist/collections/requestHandlers/find.d.ts +5 -5
  995. package/dist/collections/requestHandlers/find.js +34 -34
  996. package/dist/collections/requestHandlers/findByID.d.ts +8 -8
  997. package/dist/collections/requestHandlers/findByID.js +22 -22
  998. package/dist/collections/requestHandlers/findVersionByID.d.ts +8 -8
  999. package/dist/collections/requestHandlers/findVersionByID.js +23 -23
  1000. package/dist/collections/requestHandlers/findVersions.d.ts +5 -5
  1001. package/dist/collections/requestHandlers/findVersions.js +34 -34
  1002. package/dist/collections/requestHandlers/restoreVersion.d.ts +8 -8
  1003. package/dist/collections/requestHandlers/restoreVersion.js +28 -28
  1004. package/dist/collections/requestHandlers/update.d.ts +7 -7
  1005. package/dist/collections/requestHandlers/update.js +36 -36
  1006. package/dist/collections/tests/collections.spec.d.ts +1 -1
  1007. package/dist/collections/tests/collections.spec.js +812 -812
  1008. package/dist/collections/tests/defaultValue.spec.d.ts +1 -1
  1009. package/dist/collections/tests/defaultValue.spec.js +94 -94
  1010. package/dist/collections/tests/endpoints.spec.d.ts +1 -1
  1011. package/dist/collections/tests/endpoints.spec.js +70 -70
  1012. package/dist/collections/tests/hooks.spec.d.ts +1 -1
  1013. package/dist/collections/tests/hooks.spec.js +155 -155
  1014. package/dist/collections/tests/pointField.spec.d.ts +1 -1
  1015. package/dist/collections/tests/pointField.spec.js +164 -164
  1016. package/dist/collections/tests/relationships.spec.d.ts +1 -1
  1017. package/dist/collections/tests/relationships.spec.js +193 -193
  1018. package/dist/collections/tests/uploads.spec.d.ts +1 -1
  1019. package/dist/collections/tests/uploads.spec.js +357 -357
  1020. package/dist/config/build.d.ts +7 -7
  1021. package/dist/config/build.js +21 -21
  1022. package/dist/config/defaults.d.ts +2 -2
  1023. package/dist/config/defaults.js +58 -56
  1024. package/dist/config/find.d.ts +2 -2
  1025. package/dist/config/find.js +32 -32
  1026. package/dist/config/load.d.ts +5 -5
  1027. package/dist/config/load.js +48 -48
  1028. package/dist/config/sanitize.d.ts +3 -3
  1029. package/dist/config/sanitize.js +46 -37
  1030. package/dist/config/schema.d.ts +3 -3
  1031. package/dist/config/schema.js +131 -129
  1032. package/dist/config/types.d.ts +190 -183
  1033. package/dist/config/types.js +19 -19
  1034. package/dist/config/validate.d.ts +4 -4
  1035. package/dist/config/validate.js +107 -107
  1036. package/dist/email/build.d.ts +4 -4
  1037. package/dist/email/build.js +56 -56
  1038. package/dist/email/mockHandler.d.ts +4 -4
  1039. package/dist/email/mockHandler.js +26 -26
  1040. package/dist/email/sendEmail.d.ts +2 -2
  1041. package/dist/email/sendEmail.js +19 -19
  1042. package/dist/email/types.d.ts +19 -19
  1043. package/dist/email/types.js +2 -2
  1044. package/dist/errors/APIError.d.ts +29 -29
  1045. package/dist/errors/APIError.js +41 -41
  1046. package/dist/errors/AuthenticationError.d.ts +5 -5
  1047. package/dist/errors/AuthenticationError.js +13 -13
  1048. package/dist/errors/DuplicateCollection.d.ts +5 -5
  1049. package/dist/errors/DuplicateCollection.js +12 -12
  1050. package/dist/errors/DuplicateGlobal.d.ts +6 -6
  1051. package/dist/errors/DuplicateGlobal.js +12 -12
  1052. package/dist/errors/ErrorDeletingFile.d.ts +5 -5
  1053. package/dist/errors/ErrorDeletingFile.js +13 -13
  1054. package/dist/errors/FileUploadError.d.ts +5 -5
  1055. package/dist/errors/FileUploadError.js +13 -13
  1056. package/dist/errors/Forbidden.d.ts +5 -5
  1057. package/dist/errors/Forbidden.js +13 -13
  1058. package/dist/errors/InvalidConfiguration.d.ts +5 -5
  1059. package/dist/errors/InvalidConfiguration.js +13 -13
  1060. package/dist/errors/InvalidFieldRelationship.d.ts +6 -6
  1061. package/dist/errors/InvalidFieldRelationship.js +12 -12
  1062. package/dist/errors/InvalidSchema.d.ts +5 -5
  1063. package/dist/errors/InvalidSchema.js +13 -13
  1064. package/dist/errors/LockedAuth.d.ts +5 -5
  1065. package/dist/errors/LockedAuth.js +13 -13
  1066. package/dist/errors/MissingCollectionLabel.d.ts +5 -5
  1067. package/dist/errors/MissingCollectionLabel.js +12 -12
  1068. package/dist/errors/MissingFieldInputOptions.d.ts +6 -6
  1069. package/dist/errors/MissingFieldInputOptions.js +12 -12
  1070. package/dist/errors/MissingFieldType.d.ts +6 -6
  1071. package/dist/errors/MissingFieldType.js +13 -13
  1072. package/dist/errors/MissingFile.d.ts +5 -5
  1073. package/dist/errors/MissingFile.js +13 -13
  1074. package/dist/errors/NotFound.d.ts +5 -5
  1075. package/dist/errors/NotFound.js +13 -13
  1076. package/dist/errors/TimestampsRequired.d.ts +6 -6
  1077. package/dist/errors/TimestampsRequired.js +12 -12
  1078. package/dist/errors/UnathorizedError.d.ts +5 -5
  1079. package/dist/errors/UnathorizedError.js +13 -13
  1080. package/dist/errors/ValidationError.d.ts +8 -8
  1081. package/dist/errors/ValidationError.js +13 -13
  1082. package/dist/errors/errors.spec.d.ts +1 -1
  1083. package/dist/errors/errors.spec.js +28 -28
  1084. package/dist/errors/index.d.ts +17 -17
  1085. package/dist/errors/index.js +40 -40
  1086. package/dist/errors/types.d.ts +1 -1
  1087. package/dist/errors/types.js +17 -17
  1088. package/dist/express/admin.d.ts +3 -3
  1089. package/dist/express/admin.js +35 -35
  1090. package/dist/express/middleware/authenticate.d.ts +5 -5
  1091. package/dist/express/middleware/authenticate.js +27 -19
  1092. package/dist/express/middleware/convertPayload.d.ts +3 -3
  1093. package/dist/express/middleware/convertPayload.js +14 -14
  1094. package/dist/express/middleware/corsHeaders.d.ts +4 -4
  1095. package/dist/express/middleware/corsHeaders.js +16 -16
  1096. package/dist/express/middleware/errorHandler.d.ts +9 -9
  1097. package/dist/express/middleware/errorHandler.js +25 -25
  1098. package/dist/express/middleware/errorHandler.spec.d.ts +1 -1
  1099. package/dist/express/middleware/errorHandler.spec.js +90 -90
  1100. package/dist/express/middleware/identifyAPI.d.ts +2 -2
  1101. package/dist/express/middleware/identifyAPI.js +9 -9
  1102. package/dist/express/middleware/index.d.ts +3 -3
  1103. package/dist/express/middleware/index.js +53 -47
  1104. package/dist/express/mountEndpoints.d.ts +4 -4
  1105. package/dist/express/mountEndpoints.js +8 -8
  1106. package/dist/express/responses/formatError.d.ts +10 -10
  1107. package/dist/express/responses/formatError.js +54 -54
  1108. package/dist/express/responses/formatSuccess.d.ts +2 -2
  1109. package/dist/express/responses/formatSuccess.js +13 -13
  1110. package/dist/express/static.d.ts +3 -3
  1111. package/dist/express/static.js +27 -27
  1112. package/dist/express/types.d.ts +22 -22
  1113. package/dist/express/types.js +2 -2
  1114. package/dist/fields/baseFields/baseBlockFields.d.ts +2 -2
  1115. package/dist/fields/baseFields/baseBlockFields.js +16 -16
  1116. package/dist/fields/baseFields/baseIDField.d.ts +2 -2
  1117. package/dist/fields/baseFields/baseIDField.js +21 -21
  1118. package/dist/fields/config/sanitize.d.ts +3 -3
  1119. package/dist/fields/config/sanitize.js +81 -81
  1120. package/dist/fields/config/sanitize.spec.d.ts +1 -1
  1121. package/dist/fields/config/sanitize.spec.js +239 -239
  1122. package/dist/fields/config/schema.d.ts +24 -24
  1123. package/dist/fields/config/schema.js +269 -269
  1124. package/dist/fields/config/types.d.ts +287 -287
  1125. package/dist/fields/config/types.js +47 -47
  1126. package/dist/fields/getDefaultValue.d.ts +9 -9
  1127. package/dist/fields/getDefaultValue.js +13 -13
  1128. package/dist/fields/hooks/afterChange/index.d.ts +12 -12
  1129. package/dist/fields/hooks/afterChange/index.js +25 -25
  1130. package/dist/fields/hooks/afterChange/promise.d.ts +14 -14
  1131. package/dist/fields/hooks/afterChange/promise.js +103 -103
  1132. package/dist/fields/hooks/afterChange/traverseFields.d.ts +14 -14
  1133. package/dist/fields/hooks/afterChange/traverseFields.js +19 -19
  1134. package/dist/fields/hooks/afterRead/index.d.ts +16 -16
  1135. package/dist/fields/hooks/afterRead/index.js +39 -39
  1136. package/dist/fields/hooks/afterRead/promise.d.ts +18 -18
  1137. package/dist/fields/hooks/afterRead/promise.js +224 -224
  1138. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +13 -13
  1139. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +85 -85
  1140. package/dist/fields/hooks/afterRead/traverseFields.d.ts +18 -18
  1141. package/dist/fields/hooks/afterRead/traverseFields.js +23 -23
  1142. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts +7 -7
  1143. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +16 -16
  1144. package/dist/fields/hooks/beforeChange/index.d.ts +16 -16
  1145. package/dist/fields/hooks/beforeChange/index.js +39 -39
  1146. package/dist/fields/hooks/beforeChange/promise.d.ts +25 -25
  1147. package/dist/fields/hooks/beforeChange/promise.js +238 -238
  1148. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +25 -25
  1149. package/dist/fields/hooks/beforeChange/traverseFields.js +26 -26
  1150. package/dist/fields/hooks/beforeValidate/index.d.ts +14 -14
  1151. package/dist/fields/hooks/beforeValidate/index.js +27 -27
  1152. package/dist/fields/hooks/beforeValidate/promise.d.ts +16 -16
  1153. package/dist/fields/hooks/beforeValidate/promise.js +228 -228
  1154. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +16 -16
  1155. package/dist/fields/hooks/beforeValidate/traverseFields.js +21 -21
  1156. package/dist/fields/mergeBaseFields.d.ts +2 -2
  1157. package/dist/fields/mergeBaseFields.js +39 -39
  1158. package/dist/fields/richText/defaultValue.d.ts +6 -6
  1159. package/dist/fields/richText/defaultValue.js +5 -5
  1160. package/dist/fields/richText/populate.d.ts +19 -19
  1161. package/dist/fields/richText/populate.js +23 -23
  1162. package/dist/fields/richText/recurseNestedFields.d.ts +14 -14
  1163. package/dist/fields/richText/recurseNestedFields.js +162 -162
  1164. package/dist/fields/richText/relationshipPromise.d.ts +24 -24
  1165. package/dist/fields/richText/relationshipPromise.js +70 -70
  1166. package/dist/fields/sortableFieldTypes.d.ts +2 -2
  1167. package/dist/fields/sortableFieldTypes.js +12 -12
  1168. package/dist/fields/validations.d.ts +36 -36
  1169. package/dist/fields/validations.js +263 -263
  1170. package/dist/fields/validations.spec.d.ts +1 -1
  1171. package/dist/fields/validations.spec.js +352 -352
  1172. package/dist/globals/buildEndpoints.d.ts +4 -4
  1173. package/dist/globals/buildEndpoints.js +46 -46
  1174. package/dist/globals/buildModel.d.ts +4 -4
  1175. package/dist/globals/buildModel.js +22 -22
  1176. package/dist/globals/config/sanitize.d.ts +4 -4
  1177. package/dist/globals/config/sanitize.js +70 -70
  1178. package/dist/globals/config/schema.d.ts +3 -3
  1179. package/dist/globals/config/schema.js +42 -42
  1180. package/dist/globals/config/types.d.ts +77 -77
  1181. package/dist/globals/config/types.js +2 -2
  1182. package/dist/globals/graphql/init.d.ts +3 -3
  1183. package/dist/globals/graphql/init.js +104 -104
  1184. package/dist/globals/graphql/resolvers/findOne.d.ts +3 -3
  1185. package/dist/globals/graphql/resolvers/findOne.js +26 -26
  1186. package/dist/globals/graphql/resolvers/findVersionByID.d.ts +14 -14
  1187. package/dist/globals/graphql/resolvers/findVersionByID.js +24 -24
  1188. package/dist/globals/graphql/resolvers/findVersions.d.ts +16 -16
  1189. package/dist/globals/graphql/resolvers/findVersions.js +21 -21
  1190. package/dist/globals/graphql/resolvers/index.d.ts +6 -6
  1191. package/dist/globals/graphql/resolvers/index.js +16 -16
  1192. package/dist/globals/graphql/resolvers/restoreVersion.d.ts +11 -11
  1193. package/dist/globals/graphql/resolvers/restoreVersion.js +19 -19
  1194. package/dist/globals/graphql/resolvers/update.d.ts +13 -13
  1195. package/dist/globals/graphql/resolvers/update.js +27 -27
  1196. package/dist/globals/init.d.ts +2 -2
  1197. package/dist/globals/init.js +48 -48
  1198. package/dist/globals/operations/findOne.d.ts +14 -14
  1199. package/dist/globals/operations/findOne.js +99 -99
  1200. package/dist/globals/operations/findVersionByID.d.ts +15 -15
  1201. package/dist/globals/operations/findVersionByID.js +93 -93
  1202. package/dist/globals/operations/findVersions.d.ts +18 -18
  1203. package/dist/globals/operations/findVersions.js +107 -107
  1204. package/dist/globals/operations/local/findOne.d.ts +14 -14
  1205. package/dist/globals/operations/local/findOne.js +27 -27
  1206. package/dist/globals/operations/local/findVersionByID.d.ts +15 -15
  1207. package/dist/globals/operations/local/findVersionByID.js +27 -27
  1208. package/dist/globals/operations/local/findVersions.d.ts +18 -18
  1209. package/dist/globals/operations/local/findVersions.js +29 -29
  1210. package/dist/globals/operations/local/index.d.ts +13 -13
  1211. package/dist/globals/operations/local/index.js +17 -17
  1212. package/dist/globals/operations/local/restoreVersion.d.ts +12 -12
  1213. package/dist/globals/operations/local/restoreVersion.js +23 -23
  1214. package/dist/globals/operations/local/update.d.ts +15 -15
  1215. package/dist/globals/operations/local/update.js +28 -28
  1216. package/dist/globals/operations/restoreVersion.d.ts +13 -13
  1217. package/dist/globals/operations/restoreVersion.js +91 -91
  1218. package/dist/globals/operations/update.d.ts +15 -15
  1219. package/dist/globals/operations/update.js +206 -206
  1220. package/dist/globals/requestHandlers/findOne.d.ts +7 -7
  1221. package/dist/globals/requestHandlers/findOne.js +26 -26
  1222. package/dist/globals/requestHandlers/findVersionByID.d.ts +3 -3
  1223. package/dist/globals/requestHandlers/findVersionByID.js +24 -24
  1224. package/dist/globals/requestHandlers/findVersions.d.ts +6 -6
  1225. package/dist/globals/requestHandlers/findVersions.js +35 -35
  1226. package/dist/globals/requestHandlers/globals.spec.d.ts +4 -4
  1227. package/dist/globals/requestHandlers/globals.spec.js +173 -173
  1228. package/dist/globals/requestHandlers/restoreVersion.d.ts +5 -5
  1229. package/dist/globals/requestHandlers/restoreVersion.js +29 -29
  1230. package/dist/globals/requestHandlers/update.d.ts +7 -7
  1231. package/dist/globals/requestHandlers/update.js +35 -35
  1232. package/dist/graphql/errorHandler.d.ts +10 -10
  1233. package/dist/graphql/errorHandler.js +33 -33
  1234. package/dist/graphql/graphQLHandler.d.ts +9 -9
  1235. package/dist/graphql/graphQLHandler.js +15 -15
  1236. package/dist/graphql/initPlayground.d.ts +3 -3
  1237. package/dist/graphql/initPlayground.js +19 -19
  1238. package/dist/graphql/registerSchema.d.ts +2 -2
  1239. package/dist/graphql/registerSchema.js +121 -121
  1240. package/dist/graphql/schema/buildBlockType.d.ts +4 -4
  1241. package/dist/graphql/schema/buildBlockType.js +21 -21
  1242. package/dist/graphql/schema/buildFallbackLocaleInputType.d.ts +4 -4
  1243. package/dist/graphql/schema/buildFallbackLocaleInputType.js +13 -13
  1244. package/dist/graphql/schema/buildLocaleInputType.d.ts +4 -4
  1245. package/dist/graphql/schema/buildLocaleInputType.js +13 -13
  1246. package/dist/graphql/schema/buildMutationInputType.d.ts +7 -7
  1247. package/dist/graphql/schema/buildMutationInputType.js +168 -168
  1248. package/dist/graphql/schema/buildObjectType.d.ts +6 -6
  1249. package/dist/graphql/schema/buildObjectType.js +362 -362
  1250. package/dist/graphql/schema/buildPaginatedListType.d.ts +3 -3
  1251. package/dist/graphql/schema/buildPaginatedListType.js +22 -22
  1252. package/dist/graphql/schema/buildPoliciesType.d.ts +3 -3
  1253. package/dist/graphql/schema/buildPoliciesType.js +119 -119
  1254. package/dist/graphql/schema/buildWhereInputType.d.ts +4 -4
  1255. package/dist/graphql/schema/buildWhereInputType.js +70 -70
  1256. package/dist/graphql/schema/fieldToWhereInputSchemaMap.d.ts +2 -2
  1257. package/dist/graphql/schema/fieldToWhereInputSchemaMap.js +163 -163
  1258. package/dist/graphql/schema/operators.d.ts +7 -7
  1259. package/dist/graphql/schema/operators.js +9 -9
  1260. package/dist/graphql/schema/recursivelyBuildNestedPaths.d.ts +3 -3
  1261. package/dist/graphql/schema/recursivelyBuildNestedPaths.js +37 -37
  1262. package/dist/graphql/schema/withNullableType.d.ts +4 -4
  1263. package/dist/graphql/schema/withNullableType.js +12 -12
  1264. package/dist/graphql/schema/withOperators.d.ts +4 -4
  1265. package/dist/graphql/schema/withOperators.js +35 -35
  1266. package/dist/graphql/utilities/combineParentName.d.ts +2 -2
  1267. package/dist/graphql/utilities/combineParentName.js +8 -8
  1268. package/dist/graphql/utilities/formatName.d.ts +2 -2
  1269. package/dist/graphql/utilities/formatName.js +21 -21
  1270. package/dist/graphql/utilities/formatOptions.d.ts +3 -3
  1271. package/dist/graphql/utilities/formatOptions.js +26 -26
  1272. package/dist/graphql/utilities/getCheckIfLocaleObject.d.ts +4 -4
  1273. package/dist/graphql/utilities/getCheckIfLocaleObject.js +4 -4
  1274. package/dist/graphql/utilities/uppercase.d.ts +2 -2
  1275. package/dist/graphql/utilities/uppercase.js +11 -11
  1276. package/dist/index.d.ts +164 -164
  1277. package/dist/index.js +244 -244
  1278. package/dist/localization/middleware.d.ts +7 -7
  1279. package/dist/localization/middleware.js +37 -37
  1280. package/dist/localization/sanitizeFallbackLocale.d.ts +2 -2
  1281. package/dist/localization/sanitizeFallbackLocale.js +9 -9
  1282. package/dist/mongoose/buildQuery.d.ts +2 -2
  1283. package/dist/mongoose/buildQuery.js +287 -287
  1284. package/dist/mongoose/buildSchema.d.ts +11 -11
  1285. package/dist/mongoose/buildSchema.js +356 -356
  1286. package/dist/mongoose/buildSortParam.d.ts +1 -1
  1287. package/dist/mongoose/buildSortParam.js +26 -26
  1288. package/dist/mongoose/connect.d.ts +4 -4
  1289. package/dist/mongoose/connect.js +43 -43
  1290. package/dist/mongoose/createArrayFromCommaDelineated.d.ts +1 -1
  1291. package/dist/mongoose/createArrayFromCommaDelineated.js +12 -12
  1292. package/dist/mongoose/getSchemaTypeOptions.d.ts +4 -4
  1293. package/dist/mongoose/getSchemaTypeOptions.js +10 -10
  1294. package/dist/mongoose/operatorMap.d.ts +13 -13
  1295. package/dist/mongoose/operatorMap.js +16 -16
  1296. package/dist/mongoose/sanitizeFormattedValue.d.ts +2 -2
  1297. package/dist/mongoose/sanitizeFormattedValue.js +102 -102
  1298. package/dist/mongoose/testCredentials.d.ts +7 -7
  1299. package/dist/mongoose/testCredentials.js +10 -10
  1300. package/dist/mongoose/types.d.ts +12 -12
  1301. package/dist/mongoose/types.js +2 -2
  1302. package/dist/preferences/graphql/init.d.ts +3 -3
  1303. package/dist/preferences/graphql/init.js +58 -58
  1304. package/dist/preferences/graphql/resolvers.spec.d.ts +1 -1
  1305. package/dist/preferences/graphql/resolvers.spec.js +76 -76
  1306. package/dist/preferences/init.d.ts +2 -2
  1307. package/dist/preferences/init.js +23 -23
  1308. package/dist/preferences/model.d.ts +4 -4
  1309. package/dist/preferences/model.js +37 -37
  1310. package/dist/preferences/operations/delete.d.ts +4 -4
  1311. package/dist/preferences/operations/delete.js +25 -25
  1312. package/dist/preferences/operations/findOne.d.ts +3 -3
  1313. package/dist/preferences/operations/findOne.js +27 -27
  1314. package/dist/preferences/operations/update.d.ts +3 -3
  1315. package/dist/preferences/operations/update.js +22 -22
  1316. package/dist/preferences/requestHandlers/delete.d.ts +3 -3
  1317. package/dist/preferences/requestHandlers/delete.js +24 -24
  1318. package/dist/preferences/requestHandlers/findOne.d.ts +4 -4
  1319. package/dist/preferences/requestHandlers/findOne.js +21 -21
  1320. package/dist/preferences/requestHandlers/update.d.ts +5 -5
  1321. package/dist/preferences/requestHandlers/update.js +26 -26
  1322. package/dist/preferences/types.d.ts +34 -34
  1323. package/dist/preferences/types.js +2 -2
  1324. package/dist/types/index.d.ts +20 -20
  1325. package/dist/types/index.js +7 -7
  1326. package/dist/uploads/docWithFilenameExists.d.ts +3 -3
  1327. package/dist/uploads/docWithFilenameExists.js +9 -9
  1328. package/dist/uploads/fileExists.d.ts +2 -2
  1329. package/dist/uploads/fileExists.js +18 -18
  1330. package/dist/uploads/formatFilesize.d.ts +1 -1
  1331. package/dist/uploads/formatFilesize.js +12 -12
  1332. package/dist/uploads/getBaseFields.d.ts +9 -9
  1333. package/dist/uploads/getBaseFields.js +132 -132
  1334. package/dist/uploads/getFileByPath.d.ts +3 -3
  1335. package/dist/uploads/getFileByPath.js +24 -24
  1336. package/dist/uploads/getImageSize.d.ts +8 -8
  1337. package/dist/uploads/getImageSize.js +10 -10
  1338. package/dist/uploads/getSafeFilename.d.ts +3 -3
  1339. package/dist/uploads/getSafeFilename.js +35 -35
  1340. package/dist/uploads/imageResizer.d.ts +24 -24
  1341. package/dist/uploads/imageResizer.js +72 -72
  1342. package/dist/uploads/isImage.d.ts +1 -1
  1343. package/dist/uploads/isImage.js +6 -6
  1344. package/dist/uploads/mimeTypeValidator.d.ts +2 -2
  1345. package/dist/uploads/mimeTypeValidator.js +16 -16
  1346. package/dist/uploads/mimeTypeValidator.spec.d.ts +1 -1
  1347. package/dist/uploads/mimeTypeValidator.spec.js +56 -56
  1348. package/dist/uploads/saveBufferToFile.d.ts +8 -8
  1349. package/dist/uploads/saveBufferToFile.js +24 -24
  1350. package/dist/uploads/types.d.ts +56 -56
  1351. package/dist/uploads/types.js +2 -2
  1352. package/dist/uploads/uploadFile.d.ts +13 -13
  1353. package/dist/uploads/uploadFile.js +70 -70
  1354. package/dist/utilities/canUseDOM.d.ts +2 -2
  1355. package/dist/utilities/canUseDOM.js +4 -4
  1356. package/dist/utilities/checkDuplicateCollections.d.ts +3 -3
  1357. package/dist/utilities/checkDuplicateCollections.js +15 -15
  1358. package/dist/utilities/combineMerge.d.ts +1 -1
  1359. package/dist/utilities/combineMerge.js +23 -23
  1360. package/dist/utilities/componentSchema.d.ts +2 -2
  1361. package/dist/utilities/componentSchema.js +8 -8
  1362. package/dist/utilities/convertData.d.ts +4 -4
  1363. package/dist/utilities/convertData.js +19 -19
  1364. package/dist/utilities/deepCopyObject.d.ts +2 -2
  1365. package/dist/utilities/deepCopyObject.js +18 -18
  1366. package/dist/utilities/flattenTopLevelFields.d.ts +2 -2
  1367. package/dist/utilities/flattenTopLevelFields.js +15 -15
  1368. package/dist/utilities/flattenWhereConstraints.d.ts +3 -3
  1369. package/dist/utilities/flattenWhereConstraints.js +17 -17
  1370. package/dist/utilities/formatLabels.d.ts +7 -7
  1371. package/dist/utilities/formatLabels.js +57 -57
  1372. package/dist/utilities/formatLabels.spec.d.ts +1 -1
  1373. package/dist/utilities/formatLabels.spec.js +37 -37
  1374. package/dist/utilities/getCSSVariable.d.ts +2 -2
  1375. package/dist/utilities/getCSSVariable.js +3 -3
  1376. package/dist/utilities/getCookieExpiration.d.ts +2 -2
  1377. package/dist/utilities/getCookieExpiration.js +8 -8
  1378. package/dist/utilities/getUniqueListBy.d.ts +1 -1
  1379. package/dist/utilities/getUniqueListBy.js +6 -6
  1380. package/dist/utilities/logger.d.ts +4 -4
  1381. package/dist/utilities/logger.js +20 -20
  1382. package/dist/utilities/overwriteMerge.d.ts +2 -2
  1383. package/dist/utilities/overwriteMerge.js +4 -4
  1384. package/dist/utilities/parseCookies.d.ts +4 -4
  1385. package/dist/utilities/parseCookies.js +14 -14
  1386. package/dist/utilities/sanitizeInternalFields.d.ts +3 -3
  1387. package/dist/utilities/sanitizeInternalFields.js +19 -19
  1388. package/dist/utilities/telemetry/events/adminInit.d.ts +7 -7
  1389. package/dist/utilities/telemetry/events/adminInit.js +26 -26
  1390. package/dist/utilities/telemetry/events/serverInit.d.ts +5 -5
  1391. package/dist/utilities/telemetry/events/serverInit.js +13 -13
  1392. package/dist/utilities/telemetry/index.d.ts +22 -22
  1393. package/dist/utilities/telemetry/index.js +81 -81
  1394. package/dist/utilities/telemetry/oneWayHash.d.ts +2 -2
  1395. package/dist/utilities/telemetry/oneWayHash.js +14 -14
  1396. package/dist/utilities/toKebabCase.d.ts +2 -2
  1397. package/dist/utilities/toKebabCase.js +4 -4
  1398. package/dist/utilities/wait.d.ts +2 -2
  1399. package/dist/utilities/wait.js +8 -8
  1400. package/dist/versions/baseFields.d.ts +7 -7
  1401. package/dist/versions/baseFields.js +28 -28
  1402. package/dist/versions/buildCollectionFields.d.ts +3 -3
  1403. package/dist/versions/buildCollectionFields.js +28 -28
  1404. package/dist/versions/buildGlobalFields.d.ts +3 -3
  1405. package/dist/versions/buildGlobalFields.js +22 -22
  1406. package/dist/versions/cleanUpFailedVersion.d.ts +11 -11
  1407. package/dist/versions/cleanUpFailedVersion.js +10 -10
  1408. package/dist/versions/defaults.d.ts +3 -3
  1409. package/dist/versions/defaults.js +18 -18
  1410. package/dist/versions/drafts/appendVersionToQueryKey.d.ts +2 -2
  1411. package/dist/versions/drafts/appendVersionToQueryKey.js +21 -21
  1412. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +13 -13
  1413. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +65 -65
  1414. package/dist/versions/drafts/saveCollectionDraft.d.ts +13 -13
  1415. package/dist/versions/drafts/saveCollectionDraft.js +53 -53
  1416. package/dist/versions/drafts/saveGlobalDraft.d.ts +10 -10
  1417. package/dist/versions/drafts/saveGlobalDraft.js +48 -48
  1418. package/dist/versions/enforceMaxVersions.d.ts +12 -12
  1419. package/dist/versions/enforceMaxVersions.js +24 -24
  1420. package/dist/versions/ensurePublishedCollectionVersion.d.ts +12 -12
  1421. package/dist/versions/ensurePublishedCollectionVersion.js +59 -59
  1422. package/dist/versions/ensurePublishedGlobalVersion.d.ts +11 -11
  1423. package/dist/versions/ensurePublishedGlobalVersion.js +54 -54
  1424. package/dist/versions/getVersionsModelName.d.ts +3 -3
  1425. package/dist/versions/getVersionsModelName.js +5 -5
  1426. package/dist/versions/saveCollectionVersion.d.ts +12 -12
  1427. package/dist/versions/saveCollectionVersion.js +80 -80
  1428. package/dist/versions/saveGlobalVersion.d.ts +11 -11
  1429. package/dist/versions/saveGlobalVersion.js +75 -75
  1430. package/dist/versions/shouldIncrementVersionCount.d.ts +14 -14
  1431. package/dist/versions/shouldIncrementVersionCount.js +9 -9
  1432. package/dist/versions/tests/collections-graphql.spec.d.ts +1 -1
  1433. package/dist/versions/tests/collections-graphql.spec.js +83 -83
  1434. package/dist/versions/tests/collections-rest.spec.d.ts +1 -1
  1435. package/dist/versions/tests/collections-rest.spec.js +147 -147
  1436. package/dist/versions/tests/globals-graphql.spec.d.ts +1 -1
  1437. package/dist/versions/tests/globals-graphql.spec.js +86 -86
  1438. package/dist/versions/tests/globals-rest.spec.d.ts +1 -1
  1439. package/dist/versions/tests/globals-rest.spec.js +150 -150
  1440. package/dist/versions/types.d.ts +34 -34
  1441. package/dist/versions/types.js +2 -2
  1442. package/dist/webpack/components.config.d.ts +79 -79
  1443. package/dist/webpack/components.config.js +91 -91
  1444. package/dist/webpack/getBaseConfig.d.ts +4 -4
  1445. package/dist/webpack/getBaseConfig.js +81 -81
  1446. package/dist/webpack/getDevConfig.d.ts +4 -4
  1447. package/dist/webpack/getDevConfig.js +59 -59
  1448. package/dist/webpack/getProdConfig.d.ts +4 -4
  1449. package/dist/webpack/getProdConfig.js +69 -69
  1450. package/dist/webpack/init.d.ts +4 -4
  1451. package/dist/webpack/init.js +21 -21
  1452. package/dist/webpack/mocks/dotENV.d.ts +4 -4
  1453. package/dist/webpack/mocks/dotENV.js +5 -5
  1454. package/dist/webpack/mocks/emptyModule.d.ts +2 -2
  1455. package/dist/webpack/mocks/emptyModule.js +3 -3
  1456. package/dist/webpack/mocks/fileMock.d.ts +2 -2
  1457. package/dist/webpack/mocks/fileMock.js +3 -3
  1458. package/docs/hooks/collections.mdx +57 -3
  1459. package/package.json +4 -2
@@ -1,813 +1,813 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const uuid_1 = require("uuid");
7
- const load_1 = __importDefault(require("../../config/load"));
8
- const testCredentials_1 = require("../../mongoose/testCredentials");
9
- require('isomorphic-fetch');
10
- const { serverURL: url } = (0, load_1.default)();
11
- let token = null;
12
- let headers = {};
13
- let localizedPost;
14
- let relationshipBID;
15
- const localizedPostTitle = 'title';
16
- const englishPostDesc = 'english description';
17
- const spanishPostDesc = 'spanish description';
18
- describe('Collections - REST', () => {
19
- beforeAll(async (done) => {
20
- const response = await fetch(`${url}/api/admins/login`, {
21
- body: JSON.stringify({
22
- email: testCredentials_1.email,
23
- password: testCredentials_1.password,
24
- }),
25
- headers: {
26
- 'Content-Type': 'application/json',
27
- },
28
- method: 'post',
29
- });
30
- const data = await response.json();
31
- ({ token } = data);
32
- headers = {
33
- Authorization: `JWT ${token}`,
34
- 'Content-Type': 'application/json',
35
- };
36
- done();
37
- });
38
- describe('Create', () => {
39
- let response;
40
- let data;
41
- beforeAll(async () => {
42
- response = await fetch(`${url}/api/localized-posts`, {
43
- body: JSON.stringify({
44
- title: localizedPostTitle,
45
- description: englishPostDesc,
46
- priority: 1,
47
- nonLocalizedGroup: {
48
- text: 'english',
49
- },
50
- localizedGroup: {
51
- text: 'english',
52
- },
53
- nonLocalizedArray: [
54
- {
55
- localizedEmbeddedText: 'english',
56
- },
57
- ],
58
- richTextBlocks: [
59
- {
60
- blockType: 'richTextBlock',
61
- blockName: 'Test Block Name',
62
- content: [
63
- {
64
- children: [{ text: 'english' }],
65
- },
66
- ],
67
- },
68
- ],
69
- }),
70
- headers,
71
- method: 'post',
72
- });
73
- data = await response.json();
74
- });
75
- it('should allow a localized post to be created', async () => {
76
- expect(response.status).toBe(201);
77
- expect(data.doc.title).toBeDefined();
78
- expect(data.doc.id).toBeDefined();
79
- expect(data.doc.nonLocalizedGroup.text).toStrictEqual('english');
80
- expect(data.doc.localizedGroup.text).toStrictEqual('english');
81
- expect(data.doc.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
82
- expect(data.doc.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
83
- const timestampRegex = /^(\d{4})(?:-?W(\d+)(?:-?(\d+)D?)?|(?:-(\d+))?-(\d+))(?:[T ](\d+):(\d+)(?::(\d+)(?:\.(\d+))?)?)?(?:Z(-?\d*))?$/;
84
- expect(data.doc.createdAt).toStrictEqual(expect.stringMatching(timestampRegex));
85
- expect(data.doc.updatedAt).toStrictEqual(expect.stringMatching(timestampRegex));
86
- localizedPost = data.doc;
87
- });
88
- it('should add id to array items', async () => {
89
- expect(data.doc.nonLocalizedArray[0].id).toBeDefined();
90
- });
91
- it('should add id to block items', async () => {
92
- expect(data.doc.richTextBlocks[0].id).toBeDefined();
93
- });
94
- });
95
- describe('Update', () => {
96
- it('should allow updating an existing post', async () => {
97
- const createResponse = await fetch(`${url}/api/localized-posts`, {
98
- body: JSON.stringify({
99
- title: 'newTitle',
100
- description: 'original description',
101
- richText: [
102
- {
103
- children: [{ text: 'english' }],
104
- },
105
- ],
106
- priority: 1,
107
- }),
108
- headers,
109
- method: 'post',
110
- });
111
- expect(createResponse.status).toBe(201);
112
- const createData = await createResponse.json();
113
- const { id } = createData.doc;
114
- const updatedDesc = 'updated description';
115
- const updatedRichText = [
116
- {
117
- children: [{ text: 'english update' }],
118
- },
119
- ];
120
- const updatedNonLocalizedArray = [
121
- {
122
- localizedEmbeddedText: 'english',
123
- },
124
- {
125
- localizedEmbeddedText: 'english update',
126
- },
127
- ];
128
- const response = await fetch(`${url}/api/localized-posts/${id}`, {
129
- body: JSON.stringify({
130
- title: 'newTitle',
131
- description: updatedDesc,
132
- richText: updatedRichText,
133
- nonLocalizedArray: updatedNonLocalizedArray,
134
- priority: '',
135
- }),
136
- headers,
137
- method: 'put',
138
- });
139
- const data = await response.json();
140
- expect(response.status).toBe(200);
141
- expect(data.doc.description).toBe(updatedDesc);
142
- expect(data.doc.priority).not.toStrictEqual(1);
143
- expect(data.doc.nonLocalizedArray).toHaveLength(2);
144
- expect(data.doc.richText[0].children[0].text).toBe('english update');
145
- // make certain the stored object is exactly the same as the returned object
146
- const stored = await (await fetch(`${url}/api/localized-posts/${id}`, {
147
- method: 'get',
148
- headers,
149
- })).json();
150
- expect(data.doc).toMatchObject(stored);
151
- });
152
- it('should allow a Spanish locale to be added to an existing post', async () => {
153
- const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=es`, {
154
- body: JSON.stringify({
155
- title: 'title in spanish',
156
- description: spanishPostDesc,
157
- priority: 1,
158
- nonLocalizedGroup: {
159
- text: 'spanish',
160
- },
161
- localizedGroup: {
162
- text: 'spanish',
163
- },
164
- nonLocalizedArray: [
165
- {
166
- id: localizedPost.nonLocalizedArray[0].id,
167
- localizedEmbeddedText: 'spanish',
168
- },
169
- ],
170
- richTextBlocks: [
171
- {
172
- id: localizedPost.richTextBlocks[0].id,
173
- blockType: 'richTextBlock',
174
- blockName: 'Test Block Name',
175
- content: [
176
- {
177
- children: [{ text: 'spanish' }],
178
- },
179
- ],
180
- },
181
- ],
182
- }),
183
- headers,
184
- method: 'put',
185
- });
186
- const data = await response.json();
187
- expect(response.status).toBe(200);
188
- expect(data.doc.description).toBe(spanishPostDesc);
189
- expect(data.doc.nonLocalizedGroup.text).toStrictEqual('spanish');
190
- expect(data.doc.localizedGroup.text).toStrictEqual('spanish');
191
- expect(data.doc.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('spanish');
192
- expect(data.doc.richTextBlocks[0].content[0].children[0].text).toStrictEqual('spanish');
193
- });
194
- it('should persist existing array-based data while updating and passing row ID', async () => {
195
- const originalText = 'some optional text';
196
- const { doc } = await fetch(`${url}/api/arrays`, {
197
- headers,
198
- method: 'post',
199
- body: JSON.stringify({
200
- array: [
201
- {
202
- required: 'a required field here',
203
- optional: originalText,
204
- },
205
- {
206
- required: 'another required field here',
207
- optional: 'this is cool',
208
- },
209
- ],
210
- }),
211
- }).then((res) => res.json());
212
- const arrayWithExistingValues = [
213
- ...doc.array,
214
- ];
215
- const updatedText = 'this is some new text for the first item in array';
216
- arrayWithExistingValues[0] = {
217
- id: arrayWithExistingValues[0].id,
218
- required: updatedText,
219
- };
220
- const { doc: updatedDoc } = await fetch(`${url}/api/arrays/${doc.id}`, {
221
- headers,
222
- method: 'put',
223
- body: JSON.stringify({
224
- array: arrayWithExistingValues,
225
- }),
226
- }).then((res) => res.json());
227
- expect(updatedDoc.array[0].required).toStrictEqual(updatedText);
228
- expect(updatedDoc.array[0].optional).toStrictEqual(originalText);
229
- });
230
- it('should disregard existing array-based data while updating and NOT passing row ID', async () => {
231
- const updatedText = 'here is some new text';
232
- const secondArrayItem = {
233
- required: 'test',
234
- optional: 'optional test',
235
- };
236
- const { doc } = await fetch(`${url}/api/arrays`, {
237
- headers,
238
- method: 'post',
239
- body: JSON.stringify({
240
- array: [
241
- {
242
- required: 'a required field here',
243
- optional: 'some optional text',
244
- },
245
- secondArrayItem,
246
- ],
247
- }),
248
- }).then((res) => res.json());
249
- const { doc: updatedDoc } = await fetch(`${url}/api/arrays/${doc.id}`, {
250
- headers,
251
- method: 'put',
252
- body: JSON.stringify({
253
- array: [
254
- {
255
- required: updatedText,
256
- },
257
- {
258
- id: doc.array[1].id,
259
- required: doc.array[1].required,
260
- // NOTE - not passing optional field. It should persist
261
- // because we're passing ID
262
- },
263
- ],
264
- }),
265
- }).then((res) => res.json());
266
- expect(updatedDoc.array[0].required).toStrictEqual(updatedText);
267
- expect(updatedDoc.array[0].optional).toBeUndefined();
268
- expect(updatedDoc.array[1].required).toStrictEqual(secondArrayItem.required);
269
- expect(updatedDoc.array[1].optional).toStrictEqual(secondArrayItem.optional);
270
- });
271
- });
272
- describe('Read', () => {
273
- describe('Localized', () => {
274
- it('should allow a localized post to be retrieved in unspecified locale, defaulting to English', async () => {
275
- const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}`);
276
- const data = await response.json();
277
- expect(response.status).toBe(200);
278
- expect(data.description).toBe(englishPostDesc);
279
- expect(data.nonLocalizedGroup.text).toStrictEqual('english');
280
- expect(data.localizedGroup.text).toStrictEqual('english');
281
- expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
282
- expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
283
- });
284
- it('should allow a localized post to be retrieved in specified English locale', async () => {
285
- const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=en`);
286
- const data = await response.json();
287
- expect(response.status).toBe(200);
288
- expect(data.description).toBe(englishPostDesc);
289
- expect(data.nonLocalizedGroup.text).toStrictEqual('english');
290
- expect(data.localizedGroup.text).toStrictEqual('english');
291
- expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
292
- expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
293
- });
294
- it('should allow a localized post to be retrieved in Spanish', async () => {
295
- const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=es`);
296
- const data = await response.json();
297
- expect(response.status).toBe(200);
298
- expect(data.description).toBe(spanishPostDesc);
299
- expect(data.nonLocalizedGroup.text).toStrictEqual('spanish');
300
- expect(data.localizedGroup.text).toStrictEqual('spanish');
301
- expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('spanish');
302
- expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('spanish');
303
- });
304
- it('should allow a localized post to be retrieved in all locales', async () => {
305
- const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=all`);
306
- const data = await response.json();
307
- expect(response.status).toBe(200);
308
- expect(data.description.es).toBe(spanishPostDesc);
309
- expect(data.description.en).toBe(englishPostDesc);
310
- });
311
- });
312
- it('should allow querying by id', async () => {
313
- const response = await fetch(`${url}/api/localized-posts`, {
314
- body: JSON.stringify({
315
- title: 'another title',
316
- description: 'description',
317
- priority: 1,
318
- }),
319
- headers,
320
- method: 'post',
321
- });
322
- expect(response.status).toBe(201);
323
- const data = await response.json();
324
- const getResponse = await fetch(`${url}/api/localized-posts/${data.doc.id}`);
325
- expect(getResponse.status).toBe(200);
326
- const getData = await getResponse.json();
327
- expect(getData.id).toBeDefined();
328
- });
329
- it('should allow querying on a field', async () => {
330
- const desc = 'query test';
331
- const response = await fetch(`${url}/api/localized-posts`, {
332
- body: JSON.stringify({
333
- title: 'unique title here',
334
- description: desc,
335
- priority: 1,
336
- nonLocalizedGroup: {
337
- text: 'sample content',
338
- },
339
- }),
340
- headers,
341
- method: 'post',
342
- });
343
- expect(response.status).toBe(201);
344
- const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}`);
345
- const data = await getResponse.json();
346
- expect(getResponse.status).toBe(200);
347
- expect(data.docs[0].description).toBe(desc);
348
- expect(data.docs).toHaveLength(1);
349
- const getResponse2 = await fetch(`${url}/api/localized-posts?where[nonLocalizedGroup.text][equals]=sample content`);
350
- const data2 = await getResponse2.json();
351
- expect(getResponse2.status).toBe(200);
352
- expect(data2.docs[0].description).toBe(desc);
353
- expect(data2.docs).toHaveLength(1);
354
- });
355
- it('should allow querying with OR', async () => {
356
- const title1 = 'Or1';
357
- const title2 = 'Or2';
358
- const response = await fetch(`${url}/api/localized-posts`, {
359
- body: JSON.stringify({
360
- title: title1,
361
- description: 'desc',
362
- priority: 1,
363
- }),
364
- headers,
365
- method: 'post',
366
- });
367
- const response2 = await fetch(`${url}/api/localized-posts`, {
368
- body: JSON.stringify({
369
- title: title2,
370
- description: 'desc',
371
- priority: 1,
372
- }),
373
- headers,
374
- method: 'post',
375
- });
376
- expect(response.status).toBe(201);
377
- expect(response2.status).toBe(201);
378
- const queryResponse = await fetch(`${url}/api/localized-posts?where[or][0][title][equals]=${title1}&where[or][1][title][equals]=${title2}`);
379
- const data = await queryResponse.json();
380
- expect(queryResponse.status).toBe(200);
381
- expect(data.docs).toHaveLength(2);
382
- expect(data.docs).toContainEqual(expect.objectContaining({ title: title1 }));
383
- expect(data.docs).toContainEqual(expect.objectContaining({ title: title2 }));
384
- });
385
- it('should allow querying with OR, 1 result', async () => {
386
- const title1 = 'OrNegative1';
387
- const title2 = 'OrNegative2';
388
- const response = await fetch(`${url}/api/localized-posts`, {
389
- body: JSON.stringify({
390
- title: title1,
391
- description: 'desc',
392
- priority: 1,
393
- }),
394
- headers,
395
- method: 'post',
396
- });
397
- const response2 = await fetch(`${url}/api/localized-posts`, {
398
- body: JSON.stringify({
399
- title: title2,
400
- description: 'desc',
401
- priority: 1,
402
- }),
403
- headers,
404
- method: 'post',
405
- });
406
- expect(response.status).toBe(201);
407
- expect(response2.status).toBe(201);
408
- const queryResponse = await fetch(`${url}/api/localized-posts?where[or][0][title][equals]=${title1}&where[or][1][title][equals]=nonexistent`);
409
- const data = await queryResponse.json();
410
- expect(queryResponse.status).toBe(200);
411
- expect(data.docs).toHaveLength(1);
412
- expect(data.docs[0].title).toBe(title1);
413
- });
414
- it('should allow querying by a non-localized nested relationship property', async () => {
415
- const relationshipBTitle = 'test';
416
- const relationshipBRes = await fetch(`${url}/api/relationship-b?depth=0`, {
417
- body: JSON.stringify({
418
- title: relationshipBTitle,
419
- }),
420
- headers,
421
- method: 'post',
422
- });
423
- const relationshipBData = await relationshipBRes.json();
424
- const res = await fetch(`${url}/api/relationship-a?depth=0`, {
425
- body: JSON.stringify({
426
- post: relationshipBData.doc.id,
427
- }),
428
- headers,
429
- method: 'post',
430
- });
431
- const additionalRelationshipARes = await fetch(`${url}/api/relationship-a?depth=0`, {
432
- body: JSON.stringify({
433
- postLocalizedMultiple: [
434
- {
435
- relationTo: 'localized-posts',
436
- value: localizedPost.id,
437
- },
438
- ],
439
- }),
440
- headers,
441
- method: 'post',
442
- });
443
- const relationshipAData = await res.json();
444
- expect(res.status).toBe(201);
445
- expect(additionalRelationshipARes.status).toBe(201);
446
- expect(relationshipAData.doc.post).toBe(relationshipBData.doc.id);
447
- const queryRes = await fetch(`${url}/api/relationship-a?where[post.title][equals]=${relationshipBTitle}`);
448
- const data = await queryRes.json();
449
- expect(data.docs).toHaveLength(1);
450
- });
451
- it('should allow querying by a localized nested relationship property', async () => {
452
- const res = await fetch(`${url}/api/relationship-a`, {
453
- body: JSON.stringify({
454
- LocalizedPost: [localizedPost.id],
455
- }),
456
- headers,
457
- method: 'post',
458
- });
459
- expect(res.status).toBe(201);
460
- const queryRes1 = await fetch(`${url}/api/relationship-a?where[LocalizedPost.title][in]=${localizedPostTitle}`);
461
- const data1 = await queryRes1.json();
462
- expect(data1.docs).toHaveLength(1);
463
- });
464
- it('should allow querying by a localized nested relationship with many relationTos', async () => {
465
- const relationshipBTitle = 'lawleifjawelifjew';
466
- const relationshipB = await fetch(`${url}/api/relationship-b?depth=0`, {
467
- body: JSON.stringify({
468
- title: relationshipBTitle,
469
- }),
470
- headers,
471
- method: 'post',
472
- }).then((res) => res.json());
473
- expect(relationshipB.doc.id).toBeDefined();
474
- const res = await fetch(`${url}/api/relationship-a`, {
475
- body: JSON.stringify({
476
- postManyRelationships: {
477
- value: relationshipB.doc.id,
478
- relationTo: 'relationship-b',
479
- },
480
- }),
481
- headers,
482
- method: 'post',
483
- });
484
- expect(res.status).toBe(201);
485
- const queryRes = await fetch(`${url}/api/relationship-a?where[postManyRelationships.value][equals]=${relationshipB.doc.id}`);
486
- const data = await queryRes.json();
487
- expect(data.docs).toHaveLength(1);
488
- });
489
- it('should allow querying by a non-localized relationship with many relationTos', async () => {
490
- const relationshipB = await fetch(`${url}/api/relationship-b?depth=0`, {
491
- body: JSON.stringify({
492
- title: 'awefjlaiwejfalweiijfaew',
493
- nonLocalizedRelationToMany: {
494
- relationTo: 'localized-posts',
495
- value: localizedPost.id,
496
- },
497
- }),
498
- headers,
499
- method: 'post',
500
- }).then((res) => res.json());
501
- expect(relationshipB.doc.id).toBeDefined();
502
- relationshipBID = relationshipB.doc.id;
503
- const queryRes = await fetch(`${url}/api/relationship-b?where[nonLocalizedRelationToMany.value][equals]=${localizedPost.id}`);
504
- const data = await queryRes.json();
505
- expect(data.docs).toHaveLength(1);
506
- });
507
- it('should propagate locale through populated documents', async () => {
508
- const relationshipB = await fetch(`${url}/api/relationship-b/${relationshipBID}?locale=es`, {
509
- headers,
510
- });
511
- const data = await relationshipB.json();
512
- expect(data.nonLocalizedRelationToMany.value.description).toBe(spanishPostDesc);
513
- });
514
- it('should allow querying by a numeric custom ID', async () => {
515
- const customID = 1988;
516
- const customIDResult = await fetch(`${url}/api/custom-id?depth=0`, {
517
- body: JSON.stringify({
518
- id: customID,
519
- name: 'woohoo',
520
- }),
521
- headers,
522
- method: 'post',
523
- }).then((res) => res.json());
524
- expect(customIDResult.doc.id).toStrictEqual(customID);
525
- await fetch(`${url}/api/custom-id?depth=0`, {
526
- body: JSON.stringify({
527
- id: 2343452,
528
- name: 'another post',
529
- }),
530
- headers,
531
- method: 'post',
532
- }).then((res) => res.json());
533
- const queryRes1 = await fetch(`${url}/api/custom-id?where[id][equals]=${customID}`, {
534
- headers,
535
- });
536
- const data1 = await queryRes1.json();
537
- expect(data1.docs).toHaveLength(1);
538
- const queryByIDRes = await fetch(`${url}/api/custom-id/${customID}`, {
539
- headers,
540
- });
541
- const queryByIDData = await queryByIDRes.json();
542
- expect(queryByIDData.id).toStrictEqual(customID);
543
- });
544
- it('should allow querying by a field within a group', async () => {
545
- const text = 'laiwjefliajwe';
546
- await fetch(`${url}/api/localized-posts`, {
547
- body: JSON.stringify({
548
- title: 'super great title',
549
- description: 'desc',
550
- priority: 1,
551
- nonLocalizedGroup: {
552
- text,
553
- },
554
- localizedGroup: {
555
- text,
556
- },
557
- }),
558
- headers,
559
- method: 'post',
560
- });
561
- const queryRes1 = await fetch(`${url}/api/localized-posts?where[nonLocalizedGroup.text][equals]=${text}`);
562
- const data1 = await queryRes1.json();
563
- expect(data1.docs).toHaveLength(1);
564
- const queryRes2 = await fetch(`${url}/api/localized-posts?where[localizedGroup.text][equals]=${text}`);
565
- const data2 = await queryRes2.json();
566
- expect(queryRes2.status).toBe(200);
567
- expect(data2.docs).toHaveLength(1);
568
- });
569
- });
570
- describe('Delete', () => {
571
- it('should allow a post to be deleted', async () => {
572
- const response = await fetch(`${url}/api/localized-posts`, {
573
- body: JSON.stringify({
574
- title: 'title to be deleted',
575
- description: englishPostDesc,
576
- priority: 1,
577
- }),
578
- headers,
579
- method: 'post',
580
- });
581
- const data = await response.json();
582
- const docId = data.doc.id;
583
- expect(response.status).toBe(201);
584
- expect(docId).toBeDefined();
585
- const deleteResponse = await fetch(`${url}/api/localized-posts/${docId}`, {
586
- headers,
587
- method: 'delete',
588
- });
589
- const deleteData = await deleteResponse.json();
590
- expect(deleteResponse.status).toBe(200);
591
- expect(deleteData.id).toBe(docId);
592
- });
593
- });
594
- describe('Metadata', () => {
595
- async function createPost(title, description) {
596
- await fetch(`${url}/api/localized-posts`, {
597
- body: JSON.stringify({
598
- title: title || (0, uuid_1.v4)(),
599
- description,
600
- priority: 1,
601
- }),
602
- headers,
603
- method: 'post',
604
- });
605
- }
606
- it('should include metadata', async () => {
607
- const desc = 'metadataDesc';
608
- for (let i = 0; i < 12; i += 1) {
609
- // eslint-disable-next-line no-await-in-loop
610
- await createPost(null, desc);
611
- }
612
- const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}`);
613
- const data = await getResponse.json();
614
- expect(getResponse.status).toBe(200);
615
- // TODO: Assert exact length once query bug is fixed
616
- expect(data.docs.length).toBeGreaterThan(0);
617
- expect(data.totalDocs).toBeGreaterThan(0);
618
- expect(data.limit).toBe(10);
619
- expect(data.page).toBe(1);
620
- expect(data.pagingCounter).toBe(1);
621
- expect(data.hasPrevPage).toBe(false);
622
- expect(data.hasNextPage).toBe(true);
623
- expect(data.prevPage).toBeNull();
624
- expect(data.nextPage).toBe(2);
625
- });
626
- it('should sort the results', async () => {
627
- const desc = 'sort';
628
- // Create 2 posts with different titles, same desc
629
- const req1 = await fetch(`${url}/api/localized-posts`, {
630
- body: JSON.stringify({
631
- title: 'aaa',
632
- description: desc,
633
- priority: 1,
634
- }),
635
- headers,
636
- method: 'post',
637
- });
638
- const req2 = await fetch(`${url}/api/localized-posts`, {
639
- body: JSON.stringify({
640
- title: 'zzz',
641
- description: desc,
642
- priority: 1,
643
- }),
644
- headers,
645
- method: 'post',
646
- });
647
- const req1data = await req1.json();
648
- const req2data = await req2.json();
649
- const id1 = req1data.doc.id;
650
- const id2 = req2data.doc.id;
651
- // Query on shared desc and sort ascending
652
- const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}&sort=title`);
653
- const data = await getResponse.json();
654
- expect(getResponse.status).toBe(200);
655
- expect(data.docs).toHaveLength(2);
656
- expect(data.docs[0].id).toStrictEqual(id1);
657
- expect(data.docs[1].id).toStrictEqual(id2);
658
- // Query on shared desc and sort descending
659
- const getResponseSorted = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}&sort=-title`);
660
- const sortedData = await getResponseSorted.json();
661
- expect(getResponse.status).toBe(200);
662
- expect(sortedData.docs).toHaveLength(2);
663
- // Opposite order from first request
664
- expect(sortedData.docs[0].id).toStrictEqual(id2);
665
- expect(sortedData.docs[1].id).toStrictEqual(id1);
666
- });
667
- });
668
- describe('Field Access', () => {
669
- it('should properly prevent / allow public users from reading a restricted field', async () => {
670
- const firstArrayText1 = 'test 1';
671
- const firstArrayText2 = 'test 2';
672
- const response = await fetch(`${url}/api/localized-arrays`, {
673
- body: JSON.stringify({
674
- array: [
675
- {
676
- arrayText1: firstArrayText1,
677
- arrayText2: 'test 2',
678
- arrayText3: 'test 3',
679
- allowPublicReadability: true,
680
- },
681
- {
682
- arrayText1: firstArrayText2,
683
- arrayText2: 'test 2',
684
- arrayText3: 'test 3',
685
- allowPublicReadability: false,
686
- },
687
- ],
688
- }),
689
- headers,
690
- method: 'post',
691
- });
692
- const data = await response.json();
693
- const docId = data.doc.id;
694
- expect(response.status).toBe(201);
695
- expect(data.doc.array[1].arrayText1).toStrictEqual(firstArrayText2);
696
- const unauthenticatedResponse = await fetch(`${url}/api/localized-arrays/${docId}`, {
697
- headers: {
698
- 'Content-Type': 'application/json',
699
- },
700
- });
701
- expect(unauthenticatedResponse.status).toBe(200);
702
- const unauthenticatedData = await unauthenticatedResponse.json();
703
- // This string should be allowed to come back
704
- expect(unauthenticatedData.array[0].arrayText1).toBe(firstArrayText1);
705
- // This string should be prevented from coming back
706
- expect(unauthenticatedData.array[1].arrayText1).toBeUndefined();
707
- const authenticatedResponse = await fetch(`${url}/api/localized-arrays/${docId}`, {
708
- headers,
709
- });
710
- const authenticatedData = await authenticatedResponse.json();
711
- // If logged in, we should get this field back
712
- expect(authenticatedData.array[1].arrayText1).toStrictEqual(firstArrayText2);
713
- });
714
- });
715
- describe('Unique', () => {
716
- it('should prevent unique fields from duplicating data', async () => {
717
- const nonUniqueTitle = 'title';
718
- const response = await fetch(`${url}/api/uniques`, {
719
- body: JSON.stringify({
720
- title: nonUniqueTitle,
721
- }),
722
- headers,
723
- method: 'post',
724
- });
725
- const data = await response.json();
726
- expect(response.status).toBe(201);
727
- expect(data.doc.title).toStrictEqual(nonUniqueTitle);
728
- const failedResponse = await fetch(`${url}/api/uniques`, {
729
- body: JSON.stringify({
730
- title: nonUniqueTitle,
731
- }),
732
- headers,
733
- method: 'post',
734
- });
735
- expect(failedResponse.status).toStrictEqual(500);
736
- });
737
- });
738
- describe('Custom ID', () => {
739
- const document = {
740
- id: 1,
741
- name: 'name',
742
- };
743
- let data;
744
- beforeAll(async (done) => {
745
- // create document
746
- const create = await fetch(`${url}/api/custom-id`, {
747
- body: JSON.stringify(document),
748
- headers,
749
- method: 'post',
750
- });
751
- data = await create.json();
752
- done();
753
- });
754
- it('should create collections with custom ID', async () => {
755
- expect(data.doc.id).toBe(document.id);
756
- });
757
- it('should read collections by custom ID', async () => {
758
- const response = await fetch(`${url}/api/custom-id/${document.id}`, {
759
- headers,
760
- method: 'get',
761
- });
762
- const result = await response.json();
763
- expect(result.id).toStrictEqual(document.id);
764
- expect(result.name).toStrictEqual(document.name);
765
- });
766
- it('should update collection by custom ID', async () => {
767
- const updatedDoc = { id: 'cannot-update-id', name: 'updated' };
768
- const response = await fetch(`${url}/api/custom-id/${document.id}`, {
769
- headers,
770
- body: JSON.stringify(updatedDoc),
771
- method: 'put',
772
- });
773
- const result = await response.json();
774
- expect(result.doc.id).not.toStrictEqual(updatedDoc.id);
775
- expect(result.doc.name).not.toStrictEqual(document.name);
776
- expect(result.doc.name).toStrictEqual(updatedDoc.name);
777
- });
778
- it('should delete collection by custom ID', async () => {
779
- const doc = {
780
- id: 2,
781
- name: 'delete me',
782
- };
783
- const createResponse = await fetch(`${url}/api/custom-id`, {
784
- body: JSON.stringify(doc),
785
- headers,
786
- method: 'post',
787
- });
788
- const result = await createResponse.json();
789
- const response = await fetch(`${url}/api/custom-id/${result.doc.id}`, {
790
- headers,
791
- method: 'delete',
792
- });
793
- expect(response.status).toBe(200);
794
- const deleteData = await response.json();
795
- expect(deleteData.id).toBe(doc.id);
796
- });
797
- it('should allow querying by custom ID', async () => {
798
- const response = await fetch(`${url}/api/custom-id?where[id][equals]=${document.id}`, {
799
- headers,
800
- method: 'get',
801
- });
802
- const emptyResponse = await fetch(`${url}/api/custom-id?where[id][equals]=900`, {
803
- headers,
804
- method: 'get',
805
- });
806
- const result = await response.json();
807
- const emptyResult = await emptyResponse.json();
808
- expect(result.docs).toHaveLength(1);
809
- expect(emptyResult.docs).toHaveLength(0);
810
- });
811
- });
812
- });
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const uuid_1 = require("uuid");
7
+ const load_1 = __importDefault(require("../../config/load"));
8
+ const testCredentials_1 = require("../../mongoose/testCredentials");
9
+ require('isomorphic-fetch');
10
+ const { serverURL: url } = (0, load_1.default)();
11
+ let token = null;
12
+ let headers = {};
13
+ let localizedPost;
14
+ let relationshipBID;
15
+ const localizedPostTitle = 'title';
16
+ const englishPostDesc = 'english description';
17
+ const spanishPostDesc = 'spanish description';
18
+ describe('Collections - REST', () => {
19
+ beforeAll(async (done) => {
20
+ const response = await fetch(`${url}/api/admins/login`, {
21
+ body: JSON.stringify({
22
+ email: testCredentials_1.email,
23
+ password: testCredentials_1.password,
24
+ }),
25
+ headers: {
26
+ 'Content-Type': 'application/json',
27
+ },
28
+ method: 'post',
29
+ });
30
+ const data = await response.json();
31
+ ({ token } = data);
32
+ headers = {
33
+ Authorization: `JWT ${token}`,
34
+ 'Content-Type': 'application/json',
35
+ };
36
+ done();
37
+ });
38
+ describe('Create', () => {
39
+ let response;
40
+ let data;
41
+ beforeAll(async () => {
42
+ response = await fetch(`${url}/api/localized-posts`, {
43
+ body: JSON.stringify({
44
+ title: localizedPostTitle,
45
+ description: englishPostDesc,
46
+ priority: 1,
47
+ nonLocalizedGroup: {
48
+ text: 'english',
49
+ },
50
+ localizedGroup: {
51
+ text: 'english',
52
+ },
53
+ nonLocalizedArray: [
54
+ {
55
+ localizedEmbeddedText: 'english',
56
+ },
57
+ ],
58
+ richTextBlocks: [
59
+ {
60
+ blockType: 'richTextBlock',
61
+ blockName: 'Test Block Name',
62
+ content: [
63
+ {
64
+ children: [{ text: 'english' }],
65
+ },
66
+ ],
67
+ },
68
+ ],
69
+ }),
70
+ headers,
71
+ method: 'post',
72
+ });
73
+ data = await response.json();
74
+ });
75
+ it('should allow a localized post to be created', async () => {
76
+ expect(response.status).toBe(201);
77
+ expect(data.doc.title).toBeDefined();
78
+ expect(data.doc.id).toBeDefined();
79
+ expect(data.doc.nonLocalizedGroup.text).toStrictEqual('english');
80
+ expect(data.doc.localizedGroup.text).toStrictEqual('english');
81
+ expect(data.doc.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
82
+ expect(data.doc.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
83
+ const timestampRegex = /^(\d{4})(?:-?W(\d+)(?:-?(\d+)D?)?|(?:-(\d+))?-(\d+))(?:[T ](\d+):(\d+)(?::(\d+)(?:\.(\d+))?)?)?(?:Z(-?\d*))?$/;
84
+ expect(data.doc.createdAt).toStrictEqual(expect.stringMatching(timestampRegex));
85
+ expect(data.doc.updatedAt).toStrictEqual(expect.stringMatching(timestampRegex));
86
+ localizedPost = data.doc;
87
+ });
88
+ it('should add id to array items', async () => {
89
+ expect(data.doc.nonLocalizedArray[0].id).toBeDefined();
90
+ });
91
+ it('should add id to block items', async () => {
92
+ expect(data.doc.richTextBlocks[0].id).toBeDefined();
93
+ });
94
+ });
95
+ describe('Update', () => {
96
+ it('should allow updating an existing post', async () => {
97
+ const createResponse = await fetch(`${url}/api/localized-posts`, {
98
+ body: JSON.stringify({
99
+ title: 'newTitle',
100
+ description: 'original description',
101
+ richText: [
102
+ {
103
+ children: [{ text: 'english' }],
104
+ },
105
+ ],
106
+ priority: 1,
107
+ }),
108
+ headers,
109
+ method: 'post',
110
+ });
111
+ expect(createResponse.status).toBe(201);
112
+ const createData = await createResponse.json();
113
+ const { id } = createData.doc;
114
+ const updatedDesc = 'updated description';
115
+ const updatedRichText = [
116
+ {
117
+ children: [{ text: 'english update' }],
118
+ },
119
+ ];
120
+ const updatedNonLocalizedArray = [
121
+ {
122
+ localizedEmbeddedText: 'english',
123
+ },
124
+ {
125
+ localizedEmbeddedText: 'english update',
126
+ },
127
+ ];
128
+ const response = await fetch(`${url}/api/localized-posts/${id}`, {
129
+ body: JSON.stringify({
130
+ title: 'newTitle',
131
+ description: updatedDesc,
132
+ richText: updatedRichText,
133
+ nonLocalizedArray: updatedNonLocalizedArray,
134
+ priority: '',
135
+ }),
136
+ headers,
137
+ method: 'put',
138
+ });
139
+ const data = await response.json();
140
+ expect(response.status).toBe(200);
141
+ expect(data.doc.description).toBe(updatedDesc);
142
+ expect(data.doc.priority).not.toStrictEqual(1);
143
+ expect(data.doc.nonLocalizedArray).toHaveLength(2);
144
+ expect(data.doc.richText[0].children[0].text).toBe('english update');
145
+ // make certain the stored object is exactly the same as the returned object
146
+ const stored = await (await fetch(`${url}/api/localized-posts/${id}`, {
147
+ method: 'get',
148
+ headers,
149
+ })).json();
150
+ expect(data.doc).toMatchObject(stored);
151
+ });
152
+ it('should allow a Spanish locale to be added to an existing post', async () => {
153
+ const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=es`, {
154
+ body: JSON.stringify({
155
+ title: 'title in spanish',
156
+ description: spanishPostDesc,
157
+ priority: 1,
158
+ nonLocalizedGroup: {
159
+ text: 'spanish',
160
+ },
161
+ localizedGroup: {
162
+ text: 'spanish',
163
+ },
164
+ nonLocalizedArray: [
165
+ {
166
+ id: localizedPost.nonLocalizedArray[0].id,
167
+ localizedEmbeddedText: 'spanish',
168
+ },
169
+ ],
170
+ richTextBlocks: [
171
+ {
172
+ id: localizedPost.richTextBlocks[0].id,
173
+ blockType: 'richTextBlock',
174
+ blockName: 'Test Block Name',
175
+ content: [
176
+ {
177
+ children: [{ text: 'spanish' }],
178
+ },
179
+ ],
180
+ },
181
+ ],
182
+ }),
183
+ headers,
184
+ method: 'put',
185
+ });
186
+ const data = await response.json();
187
+ expect(response.status).toBe(200);
188
+ expect(data.doc.description).toBe(spanishPostDesc);
189
+ expect(data.doc.nonLocalizedGroup.text).toStrictEqual('spanish');
190
+ expect(data.doc.localizedGroup.text).toStrictEqual('spanish');
191
+ expect(data.doc.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('spanish');
192
+ expect(data.doc.richTextBlocks[0].content[0].children[0].text).toStrictEqual('spanish');
193
+ });
194
+ it('should persist existing array-based data while updating and passing row ID', async () => {
195
+ const originalText = 'some optional text';
196
+ const { doc } = await fetch(`${url}/api/arrays`, {
197
+ headers,
198
+ method: 'post',
199
+ body: JSON.stringify({
200
+ array: [
201
+ {
202
+ required: 'a required field here',
203
+ optional: originalText,
204
+ },
205
+ {
206
+ required: 'another required field here',
207
+ optional: 'this is cool',
208
+ },
209
+ ],
210
+ }),
211
+ }).then((res) => res.json());
212
+ const arrayWithExistingValues = [
213
+ ...doc.array,
214
+ ];
215
+ const updatedText = 'this is some new text for the first item in array';
216
+ arrayWithExistingValues[0] = {
217
+ id: arrayWithExistingValues[0].id,
218
+ required: updatedText,
219
+ };
220
+ const { doc: updatedDoc } = await fetch(`${url}/api/arrays/${doc.id}`, {
221
+ headers,
222
+ method: 'put',
223
+ body: JSON.stringify({
224
+ array: arrayWithExistingValues,
225
+ }),
226
+ }).then((res) => res.json());
227
+ expect(updatedDoc.array[0].required).toStrictEqual(updatedText);
228
+ expect(updatedDoc.array[0].optional).toStrictEqual(originalText);
229
+ });
230
+ it('should disregard existing array-based data while updating and NOT passing row ID', async () => {
231
+ const updatedText = 'here is some new text';
232
+ const secondArrayItem = {
233
+ required: 'test',
234
+ optional: 'optional test',
235
+ };
236
+ const { doc } = await fetch(`${url}/api/arrays`, {
237
+ headers,
238
+ method: 'post',
239
+ body: JSON.stringify({
240
+ array: [
241
+ {
242
+ required: 'a required field here',
243
+ optional: 'some optional text',
244
+ },
245
+ secondArrayItem,
246
+ ],
247
+ }),
248
+ }).then((res) => res.json());
249
+ const { doc: updatedDoc } = await fetch(`${url}/api/arrays/${doc.id}`, {
250
+ headers,
251
+ method: 'put',
252
+ body: JSON.stringify({
253
+ array: [
254
+ {
255
+ required: updatedText,
256
+ },
257
+ {
258
+ id: doc.array[1].id,
259
+ required: doc.array[1].required,
260
+ // NOTE - not passing optional field. It should persist
261
+ // because we're passing ID
262
+ },
263
+ ],
264
+ }),
265
+ }).then((res) => res.json());
266
+ expect(updatedDoc.array[0].required).toStrictEqual(updatedText);
267
+ expect(updatedDoc.array[0].optional).toBeUndefined();
268
+ expect(updatedDoc.array[1].required).toStrictEqual(secondArrayItem.required);
269
+ expect(updatedDoc.array[1].optional).toStrictEqual(secondArrayItem.optional);
270
+ });
271
+ });
272
+ describe('Read', () => {
273
+ describe('Localized', () => {
274
+ it('should allow a localized post to be retrieved in unspecified locale, defaulting to English', async () => {
275
+ const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}`);
276
+ const data = await response.json();
277
+ expect(response.status).toBe(200);
278
+ expect(data.description).toBe(englishPostDesc);
279
+ expect(data.nonLocalizedGroup.text).toStrictEqual('english');
280
+ expect(data.localizedGroup.text).toStrictEqual('english');
281
+ expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
282
+ expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
283
+ });
284
+ it('should allow a localized post to be retrieved in specified English locale', async () => {
285
+ const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=en`);
286
+ const data = await response.json();
287
+ expect(response.status).toBe(200);
288
+ expect(data.description).toBe(englishPostDesc);
289
+ expect(data.nonLocalizedGroup.text).toStrictEqual('english');
290
+ expect(data.localizedGroup.text).toStrictEqual('english');
291
+ expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('english');
292
+ expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('english');
293
+ });
294
+ it('should allow a localized post to be retrieved in Spanish', async () => {
295
+ const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=es`);
296
+ const data = await response.json();
297
+ expect(response.status).toBe(200);
298
+ expect(data.description).toBe(spanishPostDesc);
299
+ expect(data.nonLocalizedGroup.text).toStrictEqual('spanish');
300
+ expect(data.localizedGroup.text).toStrictEqual('spanish');
301
+ expect(data.nonLocalizedArray[0].localizedEmbeddedText).toStrictEqual('spanish');
302
+ expect(data.richTextBlocks[0].content[0].children[0].text).toStrictEqual('spanish');
303
+ });
304
+ it('should allow a localized post to be retrieved in all locales', async () => {
305
+ const response = await fetch(`${url}/api/localized-posts/${localizedPost.id}?locale=all`);
306
+ const data = await response.json();
307
+ expect(response.status).toBe(200);
308
+ expect(data.description.es).toBe(spanishPostDesc);
309
+ expect(data.description.en).toBe(englishPostDesc);
310
+ });
311
+ });
312
+ it('should allow querying by id', async () => {
313
+ const response = await fetch(`${url}/api/localized-posts`, {
314
+ body: JSON.stringify({
315
+ title: 'another title',
316
+ description: 'description',
317
+ priority: 1,
318
+ }),
319
+ headers,
320
+ method: 'post',
321
+ });
322
+ expect(response.status).toBe(201);
323
+ const data = await response.json();
324
+ const getResponse = await fetch(`${url}/api/localized-posts/${data.doc.id}`);
325
+ expect(getResponse.status).toBe(200);
326
+ const getData = await getResponse.json();
327
+ expect(getData.id).toBeDefined();
328
+ });
329
+ it('should allow querying on a field', async () => {
330
+ const desc = 'query test';
331
+ const response = await fetch(`${url}/api/localized-posts`, {
332
+ body: JSON.stringify({
333
+ title: 'unique title here',
334
+ description: desc,
335
+ priority: 1,
336
+ nonLocalizedGroup: {
337
+ text: 'sample content',
338
+ },
339
+ }),
340
+ headers,
341
+ method: 'post',
342
+ });
343
+ expect(response.status).toBe(201);
344
+ const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}`);
345
+ const data = await getResponse.json();
346
+ expect(getResponse.status).toBe(200);
347
+ expect(data.docs[0].description).toBe(desc);
348
+ expect(data.docs).toHaveLength(1);
349
+ const getResponse2 = await fetch(`${url}/api/localized-posts?where[nonLocalizedGroup.text][equals]=sample content`);
350
+ const data2 = await getResponse2.json();
351
+ expect(getResponse2.status).toBe(200);
352
+ expect(data2.docs[0].description).toBe(desc);
353
+ expect(data2.docs).toHaveLength(1);
354
+ });
355
+ it('should allow querying with OR', async () => {
356
+ const title1 = 'Or1';
357
+ const title2 = 'Or2';
358
+ const response = await fetch(`${url}/api/localized-posts`, {
359
+ body: JSON.stringify({
360
+ title: title1,
361
+ description: 'desc',
362
+ priority: 1,
363
+ }),
364
+ headers,
365
+ method: 'post',
366
+ });
367
+ const response2 = await fetch(`${url}/api/localized-posts`, {
368
+ body: JSON.stringify({
369
+ title: title2,
370
+ description: 'desc',
371
+ priority: 1,
372
+ }),
373
+ headers,
374
+ method: 'post',
375
+ });
376
+ expect(response.status).toBe(201);
377
+ expect(response2.status).toBe(201);
378
+ const queryResponse = await fetch(`${url}/api/localized-posts?where[or][0][title][equals]=${title1}&where[or][1][title][equals]=${title2}`);
379
+ const data = await queryResponse.json();
380
+ expect(queryResponse.status).toBe(200);
381
+ expect(data.docs).toHaveLength(2);
382
+ expect(data.docs).toContainEqual(expect.objectContaining({ title: title1 }));
383
+ expect(data.docs).toContainEqual(expect.objectContaining({ title: title2 }));
384
+ });
385
+ it('should allow querying with OR, 1 result', async () => {
386
+ const title1 = 'OrNegative1';
387
+ const title2 = 'OrNegative2';
388
+ const response = await fetch(`${url}/api/localized-posts`, {
389
+ body: JSON.stringify({
390
+ title: title1,
391
+ description: 'desc',
392
+ priority: 1,
393
+ }),
394
+ headers,
395
+ method: 'post',
396
+ });
397
+ const response2 = await fetch(`${url}/api/localized-posts`, {
398
+ body: JSON.stringify({
399
+ title: title2,
400
+ description: 'desc',
401
+ priority: 1,
402
+ }),
403
+ headers,
404
+ method: 'post',
405
+ });
406
+ expect(response.status).toBe(201);
407
+ expect(response2.status).toBe(201);
408
+ const queryResponse = await fetch(`${url}/api/localized-posts?where[or][0][title][equals]=${title1}&where[or][1][title][equals]=nonexistent`);
409
+ const data = await queryResponse.json();
410
+ expect(queryResponse.status).toBe(200);
411
+ expect(data.docs).toHaveLength(1);
412
+ expect(data.docs[0].title).toBe(title1);
413
+ });
414
+ it('should allow querying by a non-localized nested relationship property', async () => {
415
+ const relationshipBTitle = 'test';
416
+ const relationshipBRes = await fetch(`${url}/api/relationship-b?depth=0`, {
417
+ body: JSON.stringify({
418
+ title: relationshipBTitle,
419
+ }),
420
+ headers,
421
+ method: 'post',
422
+ });
423
+ const relationshipBData = await relationshipBRes.json();
424
+ const res = await fetch(`${url}/api/relationship-a?depth=0`, {
425
+ body: JSON.stringify({
426
+ post: relationshipBData.doc.id,
427
+ }),
428
+ headers,
429
+ method: 'post',
430
+ });
431
+ const additionalRelationshipARes = await fetch(`${url}/api/relationship-a?depth=0`, {
432
+ body: JSON.stringify({
433
+ postLocalizedMultiple: [
434
+ {
435
+ relationTo: 'localized-posts',
436
+ value: localizedPost.id,
437
+ },
438
+ ],
439
+ }),
440
+ headers,
441
+ method: 'post',
442
+ });
443
+ const relationshipAData = await res.json();
444
+ expect(res.status).toBe(201);
445
+ expect(additionalRelationshipARes.status).toBe(201);
446
+ expect(relationshipAData.doc.post).toBe(relationshipBData.doc.id);
447
+ const queryRes = await fetch(`${url}/api/relationship-a?where[post.title][equals]=${relationshipBTitle}`);
448
+ const data = await queryRes.json();
449
+ expect(data.docs).toHaveLength(1);
450
+ });
451
+ it('should allow querying by a localized nested relationship property', async () => {
452
+ const res = await fetch(`${url}/api/relationship-a`, {
453
+ body: JSON.stringify({
454
+ LocalizedPost: [localizedPost.id],
455
+ }),
456
+ headers,
457
+ method: 'post',
458
+ });
459
+ expect(res.status).toBe(201);
460
+ const queryRes1 = await fetch(`${url}/api/relationship-a?where[LocalizedPost.title][in]=${localizedPostTitle}`);
461
+ const data1 = await queryRes1.json();
462
+ expect(data1.docs).toHaveLength(1);
463
+ });
464
+ it('should allow querying by a localized nested relationship with many relationTos', async () => {
465
+ const relationshipBTitle = 'lawleifjawelifjew';
466
+ const relationshipB = await fetch(`${url}/api/relationship-b?depth=0`, {
467
+ body: JSON.stringify({
468
+ title: relationshipBTitle,
469
+ }),
470
+ headers,
471
+ method: 'post',
472
+ }).then((res) => res.json());
473
+ expect(relationshipB.doc.id).toBeDefined();
474
+ const res = await fetch(`${url}/api/relationship-a`, {
475
+ body: JSON.stringify({
476
+ postManyRelationships: {
477
+ value: relationshipB.doc.id,
478
+ relationTo: 'relationship-b',
479
+ },
480
+ }),
481
+ headers,
482
+ method: 'post',
483
+ });
484
+ expect(res.status).toBe(201);
485
+ const queryRes = await fetch(`${url}/api/relationship-a?where[postManyRelationships.value][equals]=${relationshipB.doc.id}`);
486
+ const data = await queryRes.json();
487
+ expect(data.docs).toHaveLength(1);
488
+ });
489
+ it('should allow querying by a non-localized relationship with many relationTos', async () => {
490
+ const relationshipB = await fetch(`${url}/api/relationship-b?depth=0`, {
491
+ body: JSON.stringify({
492
+ title: 'awefjlaiwejfalweiijfaew',
493
+ nonLocalizedRelationToMany: {
494
+ relationTo: 'localized-posts',
495
+ value: localizedPost.id,
496
+ },
497
+ }),
498
+ headers,
499
+ method: 'post',
500
+ }).then((res) => res.json());
501
+ expect(relationshipB.doc.id).toBeDefined();
502
+ relationshipBID = relationshipB.doc.id;
503
+ const queryRes = await fetch(`${url}/api/relationship-b?where[nonLocalizedRelationToMany.value][equals]=${localizedPost.id}`);
504
+ const data = await queryRes.json();
505
+ expect(data.docs).toHaveLength(1);
506
+ });
507
+ it('should propagate locale through populated documents', async () => {
508
+ const relationshipB = await fetch(`${url}/api/relationship-b/${relationshipBID}?locale=es`, {
509
+ headers,
510
+ });
511
+ const data = await relationshipB.json();
512
+ expect(data.nonLocalizedRelationToMany.value.description).toBe(spanishPostDesc);
513
+ });
514
+ it('should allow querying by a numeric custom ID', async () => {
515
+ const customID = 1988;
516
+ const customIDResult = await fetch(`${url}/api/custom-id?depth=0`, {
517
+ body: JSON.stringify({
518
+ id: customID,
519
+ name: 'woohoo',
520
+ }),
521
+ headers,
522
+ method: 'post',
523
+ }).then((res) => res.json());
524
+ expect(customIDResult.doc.id).toStrictEqual(customID);
525
+ await fetch(`${url}/api/custom-id?depth=0`, {
526
+ body: JSON.stringify({
527
+ id: 2343452,
528
+ name: 'another post',
529
+ }),
530
+ headers,
531
+ method: 'post',
532
+ }).then((res) => res.json());
533
+ const queryRes1 = await fetch(`${url}/api/custom-id?where[id][equals]=${customID}`, {
534
+ headers,
535
+ });
536
+ const data1 = await queryRes1.json();
537
+ expect(data1.docs).toHaveLength(1);
538
+ const queryByIDRes = await fetch(`${url}/api/custom-id/${customID}`, {
539
+ headers,
540
+ });
541
+ const queryByIDData = await queryByIDRes.json();
542
+ expect(queryByIDData.id).toStrictEqual(customID);
543
+ });
544
+ it('should allow querying by a field within a group', async () => {
545
+ const text = 'laiwjefliajwe';
546
+ await fetch(`${url}/api/localized-posts`, {
547
+ body: JSON.stringify({
548
+ title: 'super great title',
549
+ description: 'desc',
550
+ priority: 1,
551
+ nonLocalizedGroup: {
552
+ text,
553
+ },
554
+ localizedGroup: {
555
+ text,
556
+ },
557
+ }),
558
+ headers,
559
+ method: 'post',
560
+ });
561
+ const queryRes1 = await fetch(`${url}/api/localized-posts?where[nonLocalizedGroup.text][equals]=${text}`);
562
+ const data1 = await queryRes1.json();
563
+ expect(data1.docs).toHaveLength(1);
564
+ const queryRes2 = await fetch(`${url}/api/localized-posts?where[localizedGroup.text][equals]=${text}`);
565
+ const data2 = await queryRes2.json();
566
+ expect(queryRes2.status).toBe(200);
567
+ expect(data2.docs).toHaveLength(1);
568
+ });
569
+ });
570
+ describe('Delete', () => {
571
+ it('should allow a post to be deleted', async () => {
572
+ const response = await fetch(`${url}/api/localized-posts`, {
573
+ body: JSON.stringify({
574
+ title: 'title to be deleted',
575
+ description: englishPostDesc,
576
+ priority: 1,
577
+ }),
578
+ headers,
579
+ method: 'post',
580
+ });
581
+ const data = await response.json();
582
+ const docId = data.doc.id;
583
+ expect(response.status).toBe(201);
584
+ expect(docId).toBeDefined();
585
+ const deleteResponse = await fetch(`${url}/api/localized-posts/${docId}`, {
586
+ headers,
587
+ method: 'delete',
588
+ });
589
+ const deleteData = await deleteResponse.json();
590
+ expect(deleteResponse.status).toBe(200);
591
+ expect(deleteData.id).toBe(docId);
592
+ });
593
+ });
594
+ describe('Metadata', () => {
595
+ async function createPost(title, description) {
596
+ await fetch(`${url}/api/localized-posts`, {
597
+ body: JSON.stringify({
598
+ title: title || (0, uuid_1.v4)(),
599
+ description,
600
+ priority: 1,
601
+ }),
602
+ headers,
603
+ method: 'post',
604
+ });
605
+ }
606
+ it('should include metadata', async () => {
607
+ const desc = 'metadataDesc';
608
+ for (let i = 0; i < 12; i += 1) {
609
+ // eslint-disable-next-line no-await-in-loop
610
+ await createPost(null, desc);
611
+ }
612
+ const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}`);
613
+ const data = await getResponse.json();
614
+ expect(getResponse.status).toBe(200);
615
+ // TODO: Assert exact length once query bug is fixed
616
+ expect(data.docs.length).toBeGreaterThan(0);
617
+ expect(data.totalDocs).toBeGreaterThan(0);
618
+ expect(data.limit).toBe(10);
619
+ expect(data.page).toBe(1);
620
+ expect(data.pagingCounter).toBe(1);
621
+ expect(data.hasPrevPage).toBe(false);
622
+ expect(data.hasNextPage).toBe(true);
623
+ expect(data.prevPage).toBeNull();
624
+ expect(data.nextPage).toBe(2);
625
+ });
626
+ it('should sort the results', async () => {
627
+ const desc = 'sort';
628
+ // Create 2 posts with different titles, same desc
629
+ const req1 = await fetch(`${url}/api/localized-posts`, {
630
+ body: JSON.stringify({
631
+ title: 'aaa',
632
+ description: desc,
633
+ priority: 1,
634
+ }),
635
+ headers,
636
+ method: 'post',
637
+ });
638
+ const req2 = await fetch(`${url}/api/localized-posts`, {
639
+ body: JSON.stringify({
640
+ title: 'zzz',
641
+ description: desc,
642
+ priority: 1,
643
+ }),
644
+ headers,
645
+ method: 'post',
646
+ });
647
+ const req1data = await req1.json();
648
+ const req2data = await req2.json();
649
+ const id1 = req1data.doc.id;
650
+ const id2 = req2data.doc.id;
651
+ // Query on shared desc and sort ascending
652
+ const getResponse = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}&sort=title`);
653
+ const data = await getResponse.json();
654
+ expect(getResponse.status).toBe(200);
655
+ expect(data.docs).toHaveLength(2);
656
+ expect(data.docs[0].id).toStrictEqual(id1);
657
+ expect(data.docs[1].id).toStrictEqual(id2);
658
+ // Query on shared desc and sort descending
659
+ const getResponseSorted = await fetch(`${url}/api/localized-posts?where[description][equals]=${desc}&sort=-title`);
660
+ const sortedData = await getResponseSorted.json();
661
+ expect(getResponse.status).toBe(200);
662
+ expect(sortedData.docs).toHaveLength(2);
663
+ // Opposite order from first request
664
+ expect(sortedData.docs[0].id).toStrictEqual(id2);
665
+ expect(sortedData.docs[1].id).toStrictEqual(id1);
666
+ });
667
+ });
668
+ describe('Field Access', () => {
669
+ it('should properly prevent / allow public users from reading a restricted field', async () => {
670
+ const firstArrayText1 = 'test 1';
671
+ const firstArrayText2 = 'test 2';
672
+ const response = await fetch(`${url}/api/localized-arrays`, {
673
+ body: JSON.stringify({
674
+ array: [
675
+ {
676
+ arrayText1: firstArrayText1,
677
+ arrayText2: 'test 2',
678
+ arrayText3: 'test 3',
679
+ allowPublicReadability: true,
680
+ },
681
+ {
682
+ arrayText1: firstArrayText2,
683
+ arrayText2: 'test 2',
684
+ arrayText3: 'test 3',
685
+ allowPublicReadability: false,
686
+ },
687
+ ],
688
+ }),
689
+ headers,
690
+ method: 'post',
691
+ });
692
+ const data = await response.json();
693
+ const docId = data.doc.id;
694
+ expect(response.status).toBe(201);
695
+ expect(data.doc.array[1].arrayText1).toStrictEqual(firstArrayText2);
696
+ const unauthenticatedResponse = await fetch(`${url}/api/localized-arrays/${docId}`, {
697
+ headers: {
698
+ 'Content-Type': 'application/json',
699
+ },
700
+ });
701
+ expect(unauthenticatedResponse.status).toBe(200);
702
+ const unauthenticatedData = await unauthenticatedResponse.json();
703
+ // This string should be allowed to come back
704
+ expect(unauthenticatedData.array[0].arrayText1).toBe(firstArrayText1);
705
+ // This string should be prevented from coming back
706
+ expect(unauthenticatedData.array[1].arrayText1).toBeUndefined();
707
+ const authenticatedResponse = await fetch(`${url}/api/localized-arrays/${docId}`, {
708
+ headers,
709
+ });
710
+ const authenticatedData = await authenticatedResponse.json();
711
+ // If logged in, we should get this field back
712
+ expect(authenticatedData.array[1].arrayText1).toStrictEqual(firstArrayText2);
713
+ });
714
+ });
715
+ describe('Unique', () => {
716
+ it('should prevent unique fields from duplicating data', async () => {
717
+ const nonUniqueTitle = 'title';
718
+ const response = await fetch(`${url}/api/uniques`, {
719
+ body: JSON.stringify({
720
+ title: nonUniqueTitle,
721
+ }),
722
+ headers,
723
+ method: 'post',
724
+ });
725
+ const data = await response.json();
726
+ expect(response.status).toBe(201);
727
+ expect(data.doc.title).toStrictEqual(nonUniqueTitle);
728
+ const failedResponse = await fetch(`${url}/api/uniques`, {
729
+ body: JSON.stringify({
730
+ title: nonUniqueTitle,
731
+ }),
732
+ headers,
733
+ method: 'post',
734
+ });
735
+ expect(failedResponse.status).toStrictEqual(500);
736
+ });
737
+ });
738
+ describe('Custom ID', () => {
739
+ const document = {
740
+ id: 1,
741
+ name: 'name',
742
+ };
743
+ let data;
744
+ beforeAll(async (done) => {
745
+ // create document
746
+ const create = await fetch(`${url}/api/custom-id`, {
747
+ body: JSON.stringify(document),
748
+ headers,
749
+ method: 'post',
750
+ });
751
+ data = await create.json();
752
+ done();
753
+ });
754
+ it('should create collections with custom ID', async () => {
755
+ expect(data.doc.id).toBe(document.id);
756
+ });
757
+ it('should read collections by custom ID', async () => {
758
+ const response = await fetch(`${url}/api/custom-id/${document.id}`, {
759
+ headers,
760
+ method: 'get',
761
+ });
762
+ const result = await response.json();
763
+ expect(result.id).toStrictEqual(document.id);
764
+ expect(result.name).toStrictEqual(document.name);
765
+ });
766
+ it('should update collection by custom ID', async () => {
767
+ const updatedDoc = { id: 'cannot-update-id', name: 'updated' };
768
+ const response = await fetch(`${url}/api/custom-id/${document.id}`, {
769
+ headers,
770
+ body: JSON.stringify(updatedDoc),
771
+ method: 'put',
772
+ });
773
+ const result = await response.json();
774
+ expect(result.doc.id).not.toStrictEqual(updatedDoc.id);
775
+ expect(result.doc.name).not.toStrictEqual(document.name);
776
+ expect(result.doc.name).toStrictEqual(updatedDoc.name);
777
+ });
778
+ it('should delete collection by custom ID', async () => {
779
+ const doc = {
780
+ id: 2,
781
+ name: 'delete me',
782
+ };
783
+ const createResponse = await fetch(`${url}/api/custom-id`, {
784
+ body: JSON.stringify(doc),
785
+ headers,
786
+ method: 'post',
787
+ });
788
+ const result = await createResponse.json();
789
+ const response = await fetch(`${url}/api/custom-id/${result.doc.id}`, {
790
+ headers,
791
+ method: 'delete',
792
+ });
793
+ expect(response.status).toBe(200);
794
+ const deleteData = await response.json();
795
+ expect(deleteData.id).toBe(doc.id);
796
+ });
797
+ it('should allow querying by custom ID', async () => {
798
+ const response = await fetch(`${url}/api/custom-id?where[id][equals]=${document.id}`, {
799
+ headers,
800
+ method: 'get',
801
+ });
802
+ const emptyResponse = await fetch(`${url}/api/custom-id?where[id][equals]=900`, {
803
+ headers,
804
+ method: 'get',
805
+ });
806
+ const result = await response.json();
807
+ const emptyResult = await emptyResponse.json();
808
+ expect(result.docs).toHaveLength(1);
809
+ expect(emptyResult.docs).toHaveLength(0);
810
+ });
811
+ });
812
+ });
813
813
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy90ZXN0cy9jb2xsZWN0aW9ucy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQWtDO0FBQ2xDLDZEQUEwQztBQUMxQyxvRUFBaUU7QUFFakUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFNUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFBLGNBQVMsR0FBRSxDQUFDO0FBRXZDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFFakIsSUFBSSxhQUFhLENBQUM7QUFDbEIsSUFBSSxlQUFlLENBQUM7QUFDcEIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFDOUMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFFOUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsS0FBSyxFQUFMLHVCQUFLO2dCQUNMLFFBQVEsRUFBUiwwQkFBUTthQUNULENBQUM7WUFDRixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjthQUNuQztZQUNELE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25CLE9BQU8s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