payload 0.18.4 → 0.19.1

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