@wise/dynamic-flow-client 3.5.0-experimental-6654c72 → 3.5.0-experimental-63c768d

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 (296) hide show
  1. package/build/common/makeHttpClient/makeHttpClient.spec.js +141 -0
  2. package/build/i18n/de.json +46 -46
  3. package/build/i18n/en.json +46 -46
  4. package/build/i18n/es.json +46 -46
  5. package/build/i18n/fr.json +46 -46
  6. package/build/i18n/hu.json +46 -46
  7. package/build/i18n/id.json +46 -46
  8. package/build/i18n/it.json +46 -46
  9. package/build/i18n/ja.json +46 -46
  10. package/build/i18n/pl.json +46 -46
  11. package/build/i18n/pt.json +46 -46
  12. package/build/i18n/ro.json +46 -46
  13. package/build/i18n/ru.json +46 -46
  14. package/build/i18n/th.json +46 -46
  15. package/build/i18n/tr.json +46 -46
  16. package/build/i18n/zh_CN.json +46 -46
  17. package/build/i18n/zh_HK.json +46 -46
  18. package/build/index.js +10 -0
  19. package/build/legacy/common/contexts/eventsContext/EventsContext.spec.js +58 -0
  20. package/build/legacy/common/contexts/featureContext/FeatureContext.spec.js +41 -0
  21. package/build/legacy/common/contexts/logContext/LogContext.spec.js +54 -0
  22. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.spec.js +59 -0
  23. package/build/legacy/common/hooks/useExternal/useExternal.spec.js +236 -0
  24. package/build/legacy/common/hooks/useStepPolling/useStepPolling.spec.js +288 -0
  25. package/build/legacy/common/utils/debounce.spec.js +72 -0
  26. package/build/legacy/common/utils/file-utils.spec.js +69 -0
  27. package/build/legacy/common/utils/id-utils.spec.js +12 -0
  28. package/build/legacy/common/utils/is-equal.spec.js +88 -0
  29. package/build/legacy/common/utils/mobile-utils.spec.js +71 -0
  30. package/build/legacy/common/validators/models/model-utils.spec.js +45 -0
  31. package/build/legacy/common/validators/models/model-validators.spec.js +647 -0
  32. package/build/legacy/common/validators/schemas/schema-validators.spec.js +157 -0
  33. package/build/legacy/common/validators/types/type-validators.spec.js +147 -0
  34. package/build/legacy/common/validators/validationFailures/validation-failures.spec.js +198 -0
  35. package/build/legacy/common/validators/validationFailures/validation-failures.utils.spec.js +145 -0
  36. package/build/legacy/common/validators/values/value-validators.spec.js +22 -0
  37. package/build/legacy/dynamicFlow/stories/dev-tools/DynamicFlow.story.js +78 -0
  38. package/build/legacy/dynamicFlow/stories/dev-tools/ErrorResponses.story.js +124 -0
  39. package/build/legacy/dynamicFlow/stories/dev-tools/Examples.story.js +25 -0
  40. package/build/legacy/dynamicFlow/stories/dev-tools/Features.story.js +33 -0
  41. package/build/legacy/dynamicFlow/stories/dev-tools/JsonSchemaForm.story.js +31 -0
  42. package/build/legacy/dynamicFlow/stories/dev-tools/RefreshOnChange.story.js +194 -0
  43. package/build/legacy/dynamicFlow/stories/dev-tools/SearchFeature.story.js +114 -0
  44. package/build/legacy/dynamicFlow/stories/dev-tools/ServerTest.story.js +44 -0
  45. package/build/legacy/dynamicFlow/stories/dev-tools/Upload.story.js +212 -0
  46. package/build/legacy/dynamicFlow/stories/dev-tools/ValidationAsync.story.js +156 -0
  47. package/build/legacy/dynamicFlow/stories/examples/ObjectConst.story.js +150 -0
  48. package/build/legacy/dynamicFlow/stories/fixtureHttpClient.js +117 -0
  49. package/build/legacy/dynamicFlow/stories/visual-tests/VisualTests.story.js +43 -0
  50. package/build/legacy/dynamicFlow/tests/Actions.spec.js +185 -0
  51. package/build/legacy/dynamicFlow/tests/AllOfSchema.spec.js +196 -0
  52. package/build/legacy/dynamicFlow/tests/AutocompleteHints.spec.js +59 -0
  53. package/build/legacy/dynamicFlow/tests/DynamicFlow.BackButton.spec.js +179 -0
  54. package/build/legacy/dynamicFlow/tests/DynamicFlow.search.spec.js +475 -0
  55. package/build/legacy/dynamicFlow/tests/DynamicFlow.spec.js +559 -0
  56. package/build/legacy/dynamicFlow/tests/DynamicImage.spec.js +287 -0
  57. package/build/legacy/dynamicFlow/tests/DynamicInstructions.spec.js +49 -0
  58. package/build/legacy/dynamicFlow/tests/HiddenSchemas.spec.js +307 -0
  59. package/build/legacy/dynamicFlow/tests/ModalLayout.spec.js +252 -0
  60. package/build/legacy/dynamicFlow/tests/MultiSelect.spec.js +327 -0
  61. package/build/legacy/dynamicFlow/tests/MultipleFileUploadSchema.spec.js +401 -0
  62. package/build/legacy/dynamicFlow/tests/ObjectSchema.spec.js +295 -0
  63. package/build/legacy/dynamicFlow/tests/OneOfSchema.spec.js +773 -0
  64. package/build/legacy/dynamicFlow/tests/PersistAsync.blob-schema.spec.js +331 -0
  65. package/build/legacy/dynamicFlow/tests/PersistAsync.string-schema.spec.js +389 -0
  66. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.debouncing.spec.js +273 -0
  67. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.spec.js +567 -0
  68. package/build/legacy/dynamicFlow/tests/RepeatableSchema.spec.js +977 -0
  69. package/build/legacy/dynamicFlow/tests/StepModel.spec.js +119 -0
  70. package/build/legacy/dynamicFlow/tests/ValidationAsync.spec.js +484 -0
  71. package/build/legacy/dynamicFlow/tests/ssr.spec.js +47 -0
  72. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.spec.js +463 -0
  73. package/build/legacy/formControl/Select.spec.js +104 -0
  74. package/build/legacy/formControl/utils/getAutocompleteString.spec.js +30 -0
  75. package/build/legacy/formControl/utils/value-utils.spec.js +158 -0
  76. package/build/legacy/jsonSchemaForm/JsonSchemaForm.end-to-end.spec.js +563 -0
  77. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/index.js +1 -0
  78. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.spec.js +909 -0
  79. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.rtl.spec.js +55 -0
  80. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.spec.js +312 -0
  81. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.spec.js +231 -0
  82. package/build/legacy/layout/button/DynamicButton.spec.js +152 -0
  83. package/build/legacy/layout/button/utils.spec.js +50 -0
  84. package/build/legacy/layout/icon/DynamicIcon.spec.js +20 -0
  85. package/build/legacy/layout/list/DynamicStatusList.spec.js +111 -0
  86. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.spec.js +25 -0
  87. package/build/legacy/layout/markdown/DynamicMarkdown.spec.js +58 -0
  88. package/build/legacy/layout/review/DynamicReview.spec.js +152 -0
  89. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.spec.js +432 -0
  90. package/build/legacy/test-utils/DynamicFlowProviders.js +19 -0
  91. package/build/legacy/test-utils/index.js +4 -0
  92. package/build/legacy/test-utils/legacy-utils.js +69 -0
  93. package/build/legacy/test-utils/log-utils.js +9 -0
  94. package/build/main.js +20 -20
  95. package/build/main.min.js +1 -1
  96. package/build/main.mjs +20 -20
  97. package/build/revamp/DynamicFlowCore.js +299 -0
  98. package/build/revamp/DynamicFlowWise.js +69 -0
  99. package/build/revamp/DynamicFlowWise.spec.js +105 -0
  100. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.spec.js +145 -0
  101. package/build/revamp/domain/components/searchComponent/SearchComponent.spec.js +327 -0
  102. package/build/revamp/domain/components/utils/debounce.spec.js +72 -0
  103. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.spec.js +108 -0
  104. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.spec.js +199 -0
  105. package/build/revamp/domain/features/persistAsync/getInitialPersistedState.js +6 -0
  106. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.spec.js +280 -0
  107. package/build/revamp/domain/features/search/getPerformSearchFunction.js +104 -0
  108. package/build/revamp/domain/features/search/getPerformSearchFunction.spec.js +260 -0
  109. package/build/revamp/domain/features/summary/summary-utils.spec.js +110 -0
  110. package/build/revamp/domain/features/validation/spec-utils.js +16 -0
  111. package/build/revamp/domain/features/validation/validation-functions.spec.js +110 -0
  112. package/build/revamp/domain/features/validation/value-checks.spec.js +204 -0
  113. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.spec.js +177 -0
  114. package/build/revamp/domain/features/validationAsync/getInitialValidationState.js +5 -0
  115. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.spec.js +266 -0
  116. package/build/revamp/domain/mappers/layout/alertLayoutToComponent.js +12 -0
  117. package/build/revamp/domain/mappers/layout/boxLayoutToComponents.js +15 -0
  118. package/build/revamp/domain/mappers/layout/buttonLayoutToComponent.js +64 -0
  119. package/build/revamp/domain/mappers/layout/columnsLayoutToComponent.js +18 -0
  120. package/build/revamp/domain/mappers/layout/decisionLayoutToComponent.js +36 -0
  121. package/build/revamp/domain/mappers/layout/dividerLayoutToComponent.js +5 -0
  122. package/build/revamp/domain/mappers/layout/formLayoutToComponent.js +27 -0
  123. package/build/revamp/domain/mappers/layout/headingLayoutToComponent.js +13 -0
  124. package/build/revamp/domain/mappers/layout/imageLayoutToComponent.js +12 -0
  125. package/build/revamp/domain/mappers/layout/infoLayoutToComponent.js +12 -0
  126. package/build/revamp/domain/mappers/layout/instructionsLayoutToComponent.js +18 -0
  127. package/build/revamp/domain/mappers/layout/listLayoutToComponent.js +30 -0
  128. package/build/revamp/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +5 -0
  129. package/build/revamp/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
  130. package/build/revamp/domain/mappers/layout/modalLayoutToComponent.js +17 -0
  131. package/build/revamp/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
  132. package/build/revamp/domain/mappers/layout/reviewLayoutToComponent.js +51 -0
  133. package/build/revamp/domain/mappers/layout/searchLayoutToComponent.js +14 -0
  134. package/build/revamp/domain/mappers/layout/statusListLayoutToComponent.js +11 -0
  135. package/build/revamp/domain/mappers/mapLayoutToComponent.js +63 -0
  136. package/build/revamp/domain/mappers/mapSchemaToComponent.js +84 -0
  137. package/build/revamp/domain/mappers/mapSchemaToComponent.spec.js +197 -0
  138. package/build/revamp/domain/mappers/mapStepToComponent.js +143 -0
  139. package/build/revamp/domain/mappers/mapStepToComponent.spec.js +184 -0
  140. package/build/revamp/domain/mappers/schema/allOfSchemaToComponent.js +29 -0
  141. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +35 -0
  142. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +63 -0
  143. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +65 -0
  144. package/build/revamp/domain/mappers/schema/blobSchemaToComponent.js +30 -0
  145. package/build/revamp/domain/mappers/schema/booleanSchemaToComponent.js +38 -0
  146. package/build/revamp/domain/mappers/schema/constSchemaToComponent.js +14 -0
  147. package/build/revamp/domain/mappers/schema/integerSchemaToComponent.js +36 -0
  148. package/build/revamp/domain/mappers/schema/numberSchemaToComponent.js +35 -0
  149. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.js +41 -0
  150. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.spec.js +165 -0
  151. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +67 -0
  152. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.spec.js +316 -0
  153. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +14 -0
  154. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.spec.js +220 -0
  155. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +37 -0
  156. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +45 -0
  157. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +32 -0
  158. package/build/revamp/domain/mappers/schema/tests/test-utils.js +27 -0
  159. package/build/revamp/domain/mappers/schema/types.js +1 -0
  160. package/build/revamp/domain/mappers/schema/utils/getPersistAsyncInitialState.js +35 -0
  161. package/build/revamp/domain/mappers/schema/utils/getValidationAsyncInitialState.js +25 -0
  162. package/build/revamp/domain/mappers/schema/utils/mapCommonSchemaProps.js +28 -0
  163. package/build/revamp/domain/mappers/utils/getAutocompleteString.js +76 -0
  164. package/build/revamp/domain/mappers/utils/getAutocompleteString.spec.js +21 -0
  165. package/build/revamp/domain/mappers/utils/getRandomId.js +2 -0
  166. package/build/revamp/domain/mappers/utils/legacy-utils.js +53 -0
  167. package/build/revamp/flow/executeRefresh.js +97 -0
  168. package/build/revamp/flow/executeSubmission.js +152 -0
  169. package/build/revamp/flow/getResponseType.js +76 -0
  170. package/build/revamp/flow/response-utils.js +1 -1
  171. package/build/revamp/renderers/getRenderFunction.js +55 -0
  172. package/build/revamp/renderers/getSchemaErrorMessageFunction.js +90 -0
  173. package/build/revamp/renderers/mappers/alertComponentToProps.js +4 -0
  174. package/build/revamp/renderers/mappers/allOfComponentToProps.js +11 -0
  175. package/build/revamp/renderers/mappers/booleanInputComponentToProps.js +16 -0
  176. package/build/revamp/renderers/mappers/boxComponentToProps.js +4 -0
  177. package/build/revamp/renderers/mappers/buttonComponentToProps.js +14 -0
  178. package/build/revamp/renderers/mappers/columnsComponentToProps.js +4 -0
  179. package/build/revamp/renderers/mappers/componentToRendererProps.js +105 -0
  180. package/build/revamp/renderers/mappers/containerComponentToProps.js +4 -0
  181. package/build/revamp/renderers/mappers/dateInputComponentToProps.js +13 -0
  182. package/build/revamp/renderers/mappers/decisionComponentToProps.js +4 -0
  183. package/build/revamp/renderers/mappers/dividerComponentToProps.js +4 -0
  184. package/build/revamp/renderers/mappers/formComponentToProps.js +4 -0
  185. package/build/revamp/renderers/mappers/headingComponentToProps.js +11 -0
  186. package/build/revamp/renderers/mappers/hiddenComponentToProps.js +3 -0
  187. package/build/revamp/renderers/mappers/imageComponentToProps.js +11 -0
  188. package/build/revamp/renderers/mappers/instructionsComponentToProps.js +10 -0
  189. package/build/revamp/renderers/mappers/integerInputComponentToProps.js +13 -0
  190. package/build/revamp/renderers/mappers/loadingIndicatorComponentToProps.js +9 -0
  191. package/build/revamp/renderers/mappers/markdownComponentToProps.js +10 -0
  192. package/build/revamp/renderers/mappers/modalComponentToProps.js +10 -0
  193. package/build/revamp/renderers/mappers/multiUploadInputComponentToProps.js +24 -0
  194. package/build/revamp/renderers/mappers/numberInputComponentToProps.js +13 -0
  195. package/build/revamp/renderers/mappers/objectComponentToProps.js +11 -0
  196. package/build/revamp/renderers/mappers/paragraphComponentToProps.js +10 -0
  197. package/build/revamp/renderers/mappers/repeatableComponentToProps.js +40 -0
  198. package/build/revamp/renderers/mappers/reviewComponentToProps.js +11 -0
  199. package/build/revamp/renderers/mappers/searchComponentToProps.js +49 -0
  200. package/build/revamp/renderers/mappers/selectInputComponentToProps.js +29 -0
  201. package/build/revamp/renderers/mappers/statusListComponentToProps.js +10 -0
  202. package/build/revamp/renderers/mappers/textInputComponentToProps.js +13 -0
  203. package/build/revamp/renderers/mappers/uploadInputComponentToProps.js +16 -0
  204. package/build/revamp/renderers/mappers/utils/inputComponentToProps.js +27 -0
  205. package/build/revamp/renderers/step/ExternalConfirmationDialog.js +31 -0
  206. package/build/revamp/renderers/step/StepRenderer.js +29 -0
  207. package/build/revamp/renderers/step/useExternal.js +15 -0
  208. package/build/revamp/renderers/stepComponentToProps.js +9 -0
  209. package/build/revamp/stories/dev-tools/DynamicFlowRevamp.story.js +304 -0
  210. package/build/revamp/stories/dev-tools/EditableStep.story.js +71 -0
  211. package/build/revamp/stories/dev-tools/ErrorHandling.story.js +149 -0
  212. package/build/revamp/stories/dev-tools/External.story.js +83 -0
  213. package/build/revamp/stories/dev-tools/OneOf.Inititalisation.story.js +123 -0
  214. package/build/revamp/stories/dev-tools/PersistAsync.story.js +168 -0
  215. package/build/revamp/stories/dev-tools/RefreshOnChange.story.js +309 -0
  216. package/build/revamp/stories/dev-tools/RefreshOnChange.with.PersistAsync.story.js +1004 -0
  217. package/build/revamp/stories/dev-tools/ServerTest.story.js +81 -0
  218. package/build/revamp/stories/dev-tools/Upload.story.js +221 -0
  219. package/build/revamp/stories/dev-tools/ValidationAsync.story.js +161 -0
  220. package/build/revamp/stories/examples/ObjectConst.story.js +153 -0
  221. package/build/revamp/stories/examples/OneOfInitialisation.story.js +102 -0
  222. package/build/revamp/stories/utils/fixtureHttpClient.js +130 -0
  223. package/build/revamp/stories/utils/mockSearchHandler.js +125 -0
  224. package/build/revamp/stories/visual-tests/VisualTests.story.js +111 -0
  225. package/build/revamp/test-utils/component-utils.js +19 -0
  226. package/build/revamp/test-utils/step-utils.js +6 -0
  227. package/build/revamp/tests/ImageRenderer.spec.js +108 -0
  228. package/build/revamp/tests/InitialAction.spec.js +281 -0
  229. package/build/revamp/tests/InitialStep.spec.js +104 -0
  230. package/build/revamp/tests/Logging.spec.js +112 -0
  231. package/build/revamp/tests/OneOfInitialisation.spec.js +654 -0
  232. package/build/revamp/tests/RefreshOnChange.ResponseHandling.spec.js +322 -0
  233. package/build/revamp/tests/RefreshOnChange.with.Tabs.spec.js +390 -0
  234. package/build/revamp/tests/RefreshOnChangePreserve.spec.js +218 -0
  235. package/build/revamp/tests/Submission.ResponseHandling.spec.js +697 -0
  236. package/build/revamp/tests/Submission.spec.js +399 -0
  237. package/build/revamp/tests/legacy/HiddenSchemas.spec.js +312 -0
  238. package/build/revamp/tests/legacy/MultipleFileUploadSchema.spec.js +447 -0
  239. package/build/revamp/tests/legacy/PersistAsync.blob-schema.spec.js +339 -0
  240. package/build/revamp/tests/legacy/PersistAsync.string-schema.spec.js +385 -0
  241. package/build/revamp/tests/legacy/RefreshStepOnChange.debouncing.spec.js +235 -0
  242. package/build/revamp/tests/legacy/RefreshStepOnChange.spec.js +623 -0
  243. package/build/revamp/tests/legacy/ValidationAsync.spec.js +452 -0
  244. package/build/revamp/tests/legacy/useExternal.spec.js +235 -0
  245. package/build/revamp/utils/component-utils.spec.js +385 -0
  246. package/build/revamp/utils/findComponent.js +29 -0
  247. package/build/revamp/utils/findComponent.spec.js +92 -0
  248. package/build/revamp/utils/type-validators.spec.js +163 -0
  249. package/build/revamp/utils/useStableCallback.js +21 -0
  250. package/build/revamp/wise/renderers/DateInputRenderer.js +35 -0
  251. package/build/revamp/wise/renderers/DecisionRenderer.js +29 -0
  252. package/build/revamp/wise/renderers/DividerRenderer.js +10 -0
  253. package/build/revamp/wise/renderers/FormRenderer.js +21 -0
  254. package/build/revamp/wise/renderers/FormSectionRenderer.js +16 -0
  255. package/build/revamp/wise/renderers/HeadingRenderer.js +57 -0
  256. package/build/revamp/wise/renderers/ImageRenderer.js +111 -0
  257. package/build/revamp/wise/renderers/InstructionsRenderer.js +34 -0
  258. package/build/revamp/wise/renderers/IntegerInputRenderer.js +38 -0
  259. package/build/revamp/wise/renderers/LoadingIndicatorRenderer.js +11 -0
  260. package/build/revamp/wise/renderers/MarkdownRenderer.js +22 -0
  261. package/build/revamp/wise/renderers/ModalRenderer.js +25 -0
  262. package/build/revamp/wise/renderers/MultiUploadInputRenderer.js +74 -0
  263. package/build/revamp/wise/renderers/NumberInputRenderer.js +38 -0
  264. package/build/revamp/wise/renderers/ParagraphRenderer.js +44 -0
  265. package/build/revamp/wise/renderers/RepeatableRenderer.js +58 -0
  266. package/build/revamp/wise/renderers/ReviewRenderer.js +46 -0
  267. package/build/revamp/wise/renderers/SearchRenderer.js +63 -0
  268. package/build/revamp/wise/renderers/SelectInputRenderer/OptionMedia.js +27 -0
  269. package/build/revamp/wise/renderers/SelectInputRenderer/RadioInputRendererComponent.js +25 -0
  270. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRenderer.js +30 -0
  271. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRendererComponent.js +56 -0
  272. package/build/revamp/wise/renderers/SelectInputRenderer/SelectTriggerMedia.js +27 -0
  273. package/build/revamp/wise/renderers/SelectInputRenderer/TabInputRendererComponent.js +33 -0
  274. package/build/revamp/wise/renderers/StatusListRenderer.js +32 -0
  275. package/build/revamp/wise/renderers/TextInputRenderer.js +35 -0
  276. package/build/revamp/wise/renderers/UploadInputRenderer.js +136 -0
  277. package/build/revamp/wise/renderers/components/UploadFieldInput.js +25 -0
  278. package/build/revamp/wise/renderers/components/VariableDateInput.js +30 -0
  279. package/build/revamp/wise/renderers/components/VariableTextInput.js +69 -0
  280. package/build/revamp/wise/renderers/components/icon/DynamicIcon.js +17 -0
  281. package/build/revamp/wise/renderers/components/icon/FlagIcon.js +198 -0
  282. package/build/revamp/wise/renderers/components/icon/NamedIcon.js +19 -0
  283. package/build/revamp/wise/renderers/components/icon/NavigationOptionMedia.js +31 -0
  284. package/build/revamp/wise/renderers/getWiseRenderers.js +57 -0
  285. package/build/revamp/wise/renderers/hooks/useSnackBarIfAvailable.js +6 -0
  286. package/build/revamp/wise/renderers/utils/file-utils.js +70 -0
  287. package/build/revamp/wise/renderers/utils/getRandomId.js +2 -0
  288. package/build/revamp/wise/renderers/utils/input-utils.js +6 -0
  289. package/build/revamp/wise/renderers/utils/value-utils.js +23 -0
  290. package/build/revamp/wise/renderers/utils/value-utils.spec.js +33 -0
  291. package/build/revamp/wise/renderers/validators/type-validators.js +15 -0
  292. package/build/test-utils/NeptuneProviders.js +23 -0
  293. package/build/test-utils/fetch-utils.js +104 -0
  294. package/build/test-utils/index.js +2 -0
  295. package/build/test-utils/rtl-utils.js +20 -0
  296. package/package.json +3 -2
@@ -0,0 +1,199 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { abortableDelay } from '../../../../test-utils/fetch-utils';
49
+ import { createTextInputComponent, } from '../../components/TextInputComponent';
50
+ import { getInputUpdateFunction } from '../../components/utils/component-utils';
51
+ import { getUpdateFunctionMock } from '../../mappers/schema/tests/test-utils';
52
+ import { getInitialValidationState } from '../validationAsync/getInitialValidationState';
53
+ import { getComponentPersistAsync } from './getComponentPersistAsync';
54
+ import { getInitialPersistedState } from './getInitialPersistedState';
55
+ var defaultProps = {
56
+ uid: '123',
57
+ checks: [],
58
+ analyticsId: 'analyticsId',
59
+ autoComplete: 'off',
60
+ disabled: true,
61
+ errors: [],
62
+ hidden: false,
63
+ id: 'id',
64
+ required: false,
65
+ persistedState: getInitialPersistedState(),
66
+ validationState: getInitialValidationState(),
67
+ value: '',
68
+ performValidationAsync: undefined,
69
+ performRefresh: undefined,
70
+ summariser: function () { return ({}); }
71
+ };
72
+ describe('getComponentPersistAsync', function () {
73
+ it('should call update function with the correct arguments', function () { return __awaiter(void 0, void 0, void 0, function () {
74
+ var performPersistAsync, mockUpdateFunction, inputComponent, update, onPersistAsync, _a;
75
+ return __generator(this, function (_b) {
76
+ switch (_b.label) {
77
+ case 0:
78
+ performPersistAsync = jest.fn().mockResolvedValue('response');
79
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
80
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performPersistAsync: performPersistAsync, value: 'test' }), mockUpdateFunction);
81
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
82
+ onPersistAsync = getComponentPersistAsync(update, performPersistAsync);
83
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
84
+ expect(performPersistAsync).toHaveBeenCalledWith(expect.objectContaining({ value: 'test' }));
85
+ _a = expect;
86
+ return [4 /*yield*/, inputComponent.getSubmittableValue()];
87
+ case 1:
88
+ _a.apply(void 0, [_b.sent()]).toBe('response');
89
+ return [2 /*return*/];
90
+ }
91
+ });
92
+ }); });
93
+ it('should not perform a persist async if called with the same value twice', function () { return __awaiter(void 0, void 0, void 0, function () {
94
+ var performPersistAsync, mockUpdateFunction, inputComponent, update, onPersistAsync;
95
+ return __generator(this, function (_a) {
96
+ performPersistAsync = jest.fn().mockResolvedValue('response');
97
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
98
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performPersistAsync: performPersistAsync, value: 'test' }), mockUpdateFunction);
99
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
100
+ onPersistAsync = getComponentPersistAsync(update, performPersistAsync);
101
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
102
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
103
+ expect(performPersistAsync).toHaveBeenCalledTimes(1);
104
+ return [2 /*return*/];
105
+ });
106
+ }); });
107
+ it('should clear persisted value if value is cleared', function () { return __awaiter(void 0, void 0, void 0, function () {
108
+ var performPersistAsync, mockUpdateFunction, inputComponent, update, onPersistAsync, _a, _b;
109
+ return __generator(this, function (_c) {
110
+ switch (_c.label) {
111
+ case 0:
112
+ performPersistAsync = jest.fn().mockResolvedValue('response');
113
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
114
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performPersistAsync: performPersistAsync, value: 'test' }), mockUpdateFunction);
115
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
116
+ onPersistAsync = getComponentPersistAsync(update, performPersistAsync);
117
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
118
+ _a = expect;
119
+ return [4 /*yield*/, inputComponent.getSubmittableValue()];
120
+ case 1:
121
+ _a.apply(void 0, [_c.sent()]).toBe('response');
122
+ inputComponent.onChange(null);
123
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
124
+ _b = expect;
125
+ return [4 /*yield*/, inputComponent.getSubmittableValue()];
126
+ case 2:
127
+ _b.apply(void 0, [_c.sent()]).toBeNull();
128
+ return [2 /*return*/];
129
+ }
130
+ });
131
+ }); });
132
+ it('should set component errors if persist async fails', function () { return __awaiter(void 0, void 0, void 0, function () {
133
+ var performPersistAsync, mockUpdateFunction, inputComponent, update, onPersistAsync;
134
+ return __generator(this, function (_a) {
135
+ switch (_a.label) {
136
+ case 0:
137
+ performPersistAsync = jest.fn().mockRejectedValue(new Error('error message'));
138
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
139
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performPersistAsync: performPersistAsync, value: 'test' }), mockUpdateFunction);
140
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
141
+ onPersistAsync = getComponentPersistAsync(update, performPersistAsync);
142
+ return [4 /*yield*/, expect(onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue())).rejects.toThrow('error message')];
143
+ case 1:
144
+ _a.sent();
145
+ expect(inputComponent.errors).toStrictEqual(['error message']);
146
+ return [2 /*return*/];
147
+ }
148
+ });
149
+ }); });
150
+ it('should ignore previous responses if a second persist has been triggered', function () { return __awaiter(void 0, void 0, void 0, function () {
151
+ var performPersistAsync, mockUpdateFunction, inputComponent, update, onPersistAsync, _a, _b;
152
+ return __generator(this, function (_c) {
153
+ switch (_c.label) {
154
+ case 0:
155
+ jest.useFakeTimers();
156
+ performPersistAsync = jest
157
+ .fn()
158
+ .mockImplementationOnce(function (_a) {
159
+ var signal = _a.signal;
160
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_b) {
161
+ return [2 /*return*/, abortableDelay(200, signal).then(function () { return 'response-1'; })];
162
+ }); });
163
+ })
164
+ .mockImplementationOnce(function (_a) {
165
+ var signal = _a.signal;
166
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_b) {
167
+ return [2 /*return*/, abortableDelay(10, signal).then(function () { return 'response-2'; })];
168
+ }); });
169
+ });
170
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
171
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performPersistAsync: performPersistAsync, value: 'test' }), mockUpdateFunction);
172
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
173
+ onPersistAsync = getComponentPersistAsync(update, performPersistAsync);
174
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
175
+ inputComponent.onChange('new-value');
176
+ void onPersistAsync(inputComponent.persistedState, inputComponent.getLocalValue());
177
+ // Second callback has resolved
178
+ return [4 /*yield*/, jest.advanceTimersByTimeAsync(100)];
179
+ case 1:
180
+ // Second callback has resolved
181
+ _c.sent();
182
+ _a = expect;
183
+ return [4 /*yield*/, inputComponent.getSubmittableValue()];
184
+ case 2:
185
+ _a.apply(void 0, [_c.sent()]).toBe('response-2');
186
+ // First callback has resolved, but value is ignored
187
+ return [4 /*yield*/, jest.advanceTimersByTimeAsync(100)];
188
+ case 3:
189
+ // First callback has resolved, but value is ignored
190
+ _c.sent();
191
+ _b = expect;
192
+ return [4 /*yield*/, inputComponent.getSubmittableValue()];
193
+ case 4:
194
+ _b.apply(void 0, [_c.sent()]).toBe('response-2');
195
+ return [2 /*return*/];
196
+ }
197
+ });
198
+ }); });
199
+ });
@@ -0,0 +1,6 @@
1
+ import { isNullish } from '../../../utils/type-validators';
2
+ export var getInitialPersistedState = function (lastSubmitted, model) { return ({
3
+ abortController: new AbortController(),
4
+ lastSubmitted: !isNullish(model) ? lastSubmitted !== null && lastSubmitted !== void 0 ? lastSubmitted : null : null,
5
+ submission: Promise.resolve(model !== null && model !== void 0 ? model : null)
6
+ }); };
@@ -0,0 +1,280 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { getMockHttpClient, respondWith } from '../../../../test-utils';
38
+ import { getPerformPersistAsync } from './getPerformPersistAsync';
39
+ describe('getPerformPersistAsync', function () {
40
+ var genericErrorMessage = 'Error';
41
+ var trackEvent = jest.fn();
42
+ var logEvent = jest.fn();
43
+ var signal = {};
44
+ var persistAsyncConfig = {
45
+ idProperty: 'id',
46
+ method: 'POST',
47
+ param: 'param',
48
+ url: '/persist'
49
+ };
50
+ it('should make the request using the specified parameter', function () { return __awaiter(void 0, void 0, void 0, function () {
51
+ var spyHttpClient, spyTrackEvent, performPersistAsync;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ spyHttpClient = jest.fn().mockResolvedValue(respondWith({ id: 1 }));
56
+ spyTrackEvent = jest.fn();
57
+ performPersistAsync = getPerformPersistAsync({
58
+ httpClient: spyHttpClient,
59
+ trackEvent: spyTrackEvent,
60
+ logEvent: logEvent,
61
+ persistAsyncConfig: persistAsyncConfig,
62
+ genericErrorMessage: genericErrorMessage,
63
+ schemaId: 'schemaId'
64
+ });
65
+ return [4 /*yield*/, performPersistAsync({ value: 'value', signal: signal })];
66
+ case 1:
67
+ _a.sent();
68
+ expect(spyHttpClient).toHaveBeenCalledWith('/persist', {
69
+ body: '{"param":"value"}',
70
+ headers: { 'Content-Type': 'application/json' },
71
+ method: 'POST',
72
+ signal: signal
73
+ });
74
+ expect(spyTrackEvent).toHaveBeenCalledWith('PersistAsync Triggered', expect.objectContaining({ schema: 'schemaId' }));
75
+ return [2 /*return*/];
76
+ }
77
+ });
78
+ }); });
79
+ it('should wrap blobs in form data before submitting', function () { return __awaiter(void 0, void 0, void 0, function () {
80
+ var spyHttpClient, performPersistAsync, file;
81
+ return __generator(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ spyHttpClient = jest.fn().mockResolvedValue(respondWith({ id: 1 }));
85
+ performPersistAsync = getPerformPersistAsync({
86
+ httpClient: spyHttpClient,
87
+ trackEvent: trackEvent,
88
+ logEvent: logEvent,
89
+ persistAsyncConfig: persistAsyncConfig,
90
+ genericErrorMessage: genericErrorMessage
91
+ });
92
+ file = new File(['file'], 'file.txt');
93
+ return [4 /*yield*/, performPersistAsync({ value: file, signal: signal })];
94
+ case 1:
95
+ _a.sent();
96
+ expect(spyHttpClient).toHaveBeenCalledWith('/persist', {
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
98
+ body: expect.any(FormData),
99
+ headers: {},
100
+ method: 'POST',
101
+ signal: signal
102
+ });
103
+ return [2 /*return*/];
104
+ }
105
+ });
106
+ }); });
107
+ describe('when the response is ok', function () {
108
+ it('should read response value from idProperty', function () { return __awaiter(void 0, void 0, void 0, function () {
109
+ var httpClient, spyTrackEvent, performPersistAsync, result;
110
+ return __generator(this, function (_a) {
111
+ switch (_a.label) {
112
+ case 0:
113
+ httpClient = getMockHttpClient({
114
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
115
+ return [2 /*return*/, respondWith({ id: 1 })];
116
+ }); }); }
117
+ });
118
+ spyTrackEvent = jest.fn();
119
+ performPersistAsync = getPerformPersistAsync({
120
+ httpClient: httpClient,
121
+ trackEvent: spyTrackEvent,
122
+ logEvent: logEvent,
123
+ persistAsyncConfig: persistAsyncConfig,
124
+ genericErrorMessage: genericErrorMessage,
125
+ schemaId: 'schemaId'
126
+ });
127
+ return [4 /*yield*/, performPersistAsync({ value: 'value', signal: signal })];
128
+ case 1:
129
+ result = _a.sent();
130
+ expect(result).toBe(1);
131
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Succeeded', expect.objectContaining({ schema: 'schemaId' }));
132
+ return [2 /*return*/];
133
+ }
134
+ });
135
+ }); });
136
+ it('should throw a generic error if the response is not an object', function () { return __awaiter(void 0, void 0, void 0, function () {
137
+ var httpClient, spyTrackEvent, performPersistAsync;
138
+ return __generator(this, function (_a) {
139
+ switch (_a.label) {
140
+ case 0:
141
+ httpClient = getMockHttpClient({
142
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
143
+ return [2 /*return*/, respondWith(1)];
144
+ }); }); }
145
+ });
146
+ spyTrackEvent = jest.fn();
147
+ performPersistAsync = getPerformPersistAsync({
148
+ httpClient: httpClient,
149
+ trackEvent: spyTrackEvent,
150
+ logEvent: logEvent,
151
+ persistAsyncConfig: persistAsyncConfig,
152
+ genericErrorMessage: genericErrorMessage,
153
+ schemaId: 'schemaId'
154
+ });
155
+ return [4 /*yield*/, expect(performPersistAsync({ value: 'value', signal: signal })).rejects.toThrow(genericErrorMessage)];
156
+ case 1:
157
+ _a.sent();
158
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Failed', expect.objectContaining({ schema: 'schemaId' }));
159
+ return [2 /*return*/];
160
+ }
161
+ });
162
+ }); });
163
+ });
164
+ describe('when the response is 422', function () {
165
+ it('should throw if the response includes a validation message', function () { return __awaiter(void 0, void 0, void 0, function () {
166
+ var httpClient, spyTrackEvent, performPersistAsync;
167
+ return __generator(this, function (_a) {
168
+ switch (_a.label) {
169
+ case 0:
170
+ httpClient = getMockHttpClient({
171
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
172
+ return [2 /*return*/, respondWith({ validation: { param: 'error with this field' } }, { status: 422 })];
173
+ }); }); }
174
+ });
175
+ spyTrackEvent = jest.fn();
176
+ performPersistAsync = getPerformPersistAsync({
177
+ httpClient: httpClient,
178
+ trackEvent: spyTrackEvent,
179
+ logEvent: logEvent,
180
+ persistAsyncConfig: persistAsyncConfig,
181
+ genericErrorMessage: genericErrorMessage,
182
+ schemaId: 'schemaId'
183
+ });
184
+ return [4 /*yield*/, expect(performPersistAsync({ value: 'value', signal: signal })).rejects.toThrow('error with this field')];
185
+ case 1:
186
+ _a.sent();
187
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Failed', expect.objectContaining({ schema: 'schemaId' }));
188
+ return [2 /*return*/];
189
+ }
190
+ });
191
+ }); });
192
+ it('should include analytics if passed', function () { return __awaiter(void 0, void 0, void 0, function () {
193
+ var httpClient, spyTrackEvent, performPersistAsync;
194
+ return __generator(this, function (_a) {
195
+ switch (_a.label) {
196
+ case 0:
197
+ httpClient = getMockHttpClient({
198
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () {
199
+ return __generator(this, function (_a) {
200
+ return [2 /*return*/, respondWith({ validation: { param: 'error with this field' }, analytics: { some: 'extras' } }, { status: 422 })];
201
+ });
202
+ }); }
203
+ });
204
+ spyTrackEvent = jest.fn();
205
+ performPersistAsync = getPerformPersistAsync({
206
+ httpClient: httpClient,
207
+ trackEvent: spyTrackEvent,
208
+ logEvent: logEvent,
209
+ persistAsyncConfig: persistAsyncConfig,
210
+ genericErrorMessage: genericErrorMessage,
211
+ schemaId: 'schemaId'
212
+ });
213
+ return [4 /*yield*/, expect(performPersistAsync({ value: 'value', signal: signal })).rejects.toThrow('error with this field')];
214
+ case 1:
215
+ _a.sent();
216
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Failed', expect.objectContaining({ schema: 'schemaId', some: 'extras' }));
217
+ return [2 /*return*/];
218
+ }
219
+ });
220
+ }); });
221
+ });
222
+ describe('when the response is a 500', function () {
223
+ it('should throw if the response includes a validation message', function () { return __awaiter(void 0, void 0, void 0, function () {
224
+ var httpClient, spyTrackEvent, performPersistAsync;
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0:
228
+ httpClient = getMockHttpClient({
229
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () {
230
+ return __generator(this, function (_a) {
231
+ return [2 /*return*/, respondWith({ validation: { param: 'error with this field' }, analytics: { some: 'extras' } }, { status: 500 })];
232
+ });
233
+ }); }
234
+ });
235
+ spyTrackEvent = jest.fn();
236
+ performPersistAsync = getPerformPersistAsync({
237
+ httpClient: httpClient,
238
+ trackEvent: spyTrackEvent,
239
+ logEvent: logEvent,
240
+ persistAsyncConfig: persistAsyncConfig,
241
+ genericErrorMessage: genericErrorMessage,
242
+ schemaId: 'schemaId'
243
+ });
244
+ return [4 /*yield*/, expect(performPersistAsync({ value: 'value', signal: signal })).rejects.toThrow(genericErrorMessage)];
245
+ case 1:
246
+ _a.sent();
247
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Failed', expect.objectContaining({ schema: 'schemaId', some: 'extras' }));
248
+ return [2 /*return*/];
249
+ }
250
+ });
251
+ }); });
252
+ });
253
+ it('should throw a generic error if request fails', function () { return __awaiter(void 0, void 0, void 0, function () {
254
+ var httpClient, spyTrackEvent, performPersistAsync;
255
+ return __generator(this, function (_a) {
256
+ switch (_a.label) {
257
+ case 0:
258
+ httpClient = getMockHttpClient({
259
+ '/persist': function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
260
+ return [2 /*return*/, Promise.reject(new Error())];
261
+ }); }); }
262
+ });
263
+ spyTrackEvent = jest.fn();
264
+ performPersistAsync = getPerformPersistAsync({
265
+ httpClient: httpClient,
266
+ trackEvent: spyTrackEvent,
267
+ logEvent: logEvent,
268
+ persistAsyncConfig: persistAsyncConfig,
269
+ genericErrorMessage: genericErrorMessage,
270
+ schemaId: 'schemaId'
271
+ });
272
+ return [4 /*yield*/, expect(performPersistAsync({ value: 'value', signal: signal })).rejects.toThrow(genericErrorMessage)];
273
+ case 1:
274
+ _a.sent();
275
+ expect(spyTrackEvent).toHaveBeenLastCalledWith('PersistAsync Failed', expect.objectContaining({ schema: 'schemaId' }));
276
+ return [2 /*return*/];
277
+ }
278
+ });
279
+ }); });
280
+ });
@@ -0,0 +1,104 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { isArray, isObject } from '../../../utils/type-validators';
38
+ export var getPerformSearchFunction = function (httpClient, defaultConfig) {
39
+ return function (_a) {
40
+ var _b = _a.config, config = _b === void 0 ? defaultConfig : _b, query = _a.query, signal = _a.signal;
41
+ return __awaiter(void 0, void 0, void 0, function () {
42
+ var method, param, url, headers, request, response;
43
+ var _c;
44
+ return __generator(this, function (_d) {
45
+ switch (_d.label) {
46
+ case 0:
47
+ if (!query) {
48
+ return [2 /*return*/, []];
49
+ }
50
+ method = config.method, param = config.param, url = config.url;
51
+ headers = { 'Content-Type': 'application/json' };
52
+ request = method === 'GET'
53
+ ? httpClient(addQueryParameter(url, param, query), {
54
+ method: method,
55
+ headers: headers,
56
+ signal: signal
57
+ })
58
+ : httpClient(url, {
59
+ method: method,
60
+ headers: headers,
61
+ signal: signal,
62
+ body: JSON.stringify((_c = {}, _c[param] = query, _c))
63
+ });
64
+ return [4 /*yield*/, request];
65
+ case 1:
66
+ response = _d.sent();
67
+ return [2 /*return*/, parseResponse(response)];
68
+ }
69
+ });
70
+ });
71
+ };
72
+ };
73
+ var parseResponse = function (response) { return __awaiter(void 0, void 0, void 0, function () {
74
+ var body;
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0:
78
+ if (!response.ok) return [3 /*break*/, 2];
79
+ return [4 /*yield*/, response.json()["catch"](function () { return null; })];
80
+ case 1:
81
+ body = _a.sent();
82
+ if (isValidResponseBody(body)) {
83
+ if (body.results.length === 0) {
84
+ return [2 /*return*/, []];
85
+ }
86
+ return [2 /*return*/, body.results];
87
+ }
88
+ _a.label = 2;
89
+ case 2: throw Error('error response');
90
+ }
91
+ });
92
+ }); };
93
+ var addQueryParameter = function (url, key, value) {
94
+ var _a = url.split('?'), urlBase = _a[0], urlQuery = _a[1];
95
+ var urlQueryParams = new URLSearchParams(urlQuery);
96
+ urlQueryParams.set(key, value);
97
+ return "".concat(urlBase, "?").concat(urlQueryParams.toString());
98
+ };
99
+ var isValidResponseBody = function (body) {
100
+ return isObject(body) &&
101
+ 'results' in body &&
102
+ isArray(body.results) &&
103
+ body.results.every(function (result) { return isObject(result) && 'title' in result && 'type' in result && 'value' in result; });
104
+ };