@wise/dynamic-flow-client 5.28.0 → 5.29.0-experimental-f7c2300

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 (485) hide show
  1. package/build/main.css +24 -0
  2. package/build/main.js +299 -167
  3. package/build/main.mjs +299 -167
  4. package/build/tsconfig.types.tsbuildinfo +1 -1
  5. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts +5 -5
  6. package/build/types/domain/components/collectionComponent/CollectionComponent.d.ts.map +1 -1
  7. package/build/types/domain/components/collectionComponent/CollectionState.d.ts +19 -0
  8. package/build/types/domain/components/collectionComponent/CollectionState.d.ts.map +1 -0
  9. package/build/types/domain/components/collectionComponent/mergeSections.d.ts +3 -0
  10. package/build/types/domain/components/collectionComponent/mergeSections.d.ts.map +1 -0
  11. package/build/types/domain/components/collectionComponent/types.d.ts +42 -14
  12. package/build/types/domain/components/collectionComponent/types.d.ts.map +1 -1
  13. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts +2 -2
  14. package/build/types/domain/features/collection/getPerformCollectionQuery.d.ts.map +1 -1
  15. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts +3 -3
  16. package/build/types/domain/mappers/layout/collectionLayoutToComponent.d.ts.map +1 -1
  17. package/build/types/renderers/mappers/collectionComponentToProps.d.ts.map +1 -1
  18. package/package.json +6 -5
  19. package/build/DynamicFlowCore.js +0 -5
  20. package/build/common/capabilities/getHttpClientWithCapabilities.js +0 -41
  21. package/build/common/capabilities/getHttpClientWithCapabilities.test.js +0 -106
  22. package/build/common/capabilities/index.js +0 -1
  23. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  24. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  25. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  26. package/build/common/makeHttpClient/api-utils.js +0 -3
  27. package/build/common/makeHttpClient/index.js +0 -1
  28. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  29. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  30. package/build/common/messages/download.messages.js +0 -18
  31. package/build/common/messages/external-confirmation.messages.js +0 -23
  32. package/build/common/messages/file-upload.messages.js +0 -13
  33. package/build/common/messages/generic-error.messages.js +0 -18
  34. package/build/common/messages/help.messages.js +0 -8
  35. package/build/common/messages/multi-file-upload.messages.js +0 -18
  36. package/build/common/messages/multi-select.messages.js +0 -8
  37. package/build/common/messages/paragraph.messages.js +0 -13
  38. package/build/common/messages/repeatable.messages.js +0 -23
  39. package/build/common/messages/search.messages.js +0 -8
  40. package/build/common/messages/validation.array.messages.js +0 -13
  41. package/build/common/messages/validation.messages.js +0 -53
  42. package/build/controller/FlowController.js +0 -400
  43. package/build/controller/executeDownload.js +0 -86
  44. package/build/controller/executePoll.js +0 -65
  45. package/build/controller/executeRefresh.js +0 -45
  46. package/build/controller/executeRequest.js +0 -93
  47. package/build/controller/executeSubflow.js +0 -71
  48. package/build/controller/executeSubmission.js +0 -68
  49. package/build/controller/getErrorMessage.js +0 -7
  50. package/build/controller/getFilenameFromContentDisposition.js +0 -47
  51. package/build/controller/getFilenameFromContentDisposition.test.js +0 -47
  52. package/build/controller/getRequestAbortController.js +0 -13
  53. package/build/controller/getResponseType.js +0 -35
  54. package/build/controller/getSafeHttpClient.js +0 -8
  55. package/build/controller/getStepCounter.js +0 -16
  56. package/build/controller/handleErrorResponse.js +0 -26
  57. package/build/controller/makeSafeHttpClient.js +0 -8
  58. package/build/controller/response-utils.js +0 -72
  59. package/build/controller/response-utils.test.js +0 -52
  60. package/build/domain/components/AlertComponent.js +0 -2
  61. package/build/domain/components/AllOfComponent.js +0 -47
  62. package/build/domain/components/BooleanInputComponent.js +0 -48
  63. package/build/domain/components/BoxComponent.js +0 -12
  64. package/build/domain/components/ButtonComponent.js +0 -2
  65. package/build/domain/components/ColumnsComponent.js +0 -12
  66. package/build/domain/components/ConstComponent.js +0 -20
  67. package/build/domain/components/ContainerComponent.js +0 -12
  68. package/build/domain/components/DateInputComponent.js +0 -73
  69. package/build/domain/components/DecisionComponent.js +0 -2
  70. package/build/domain/components/DividerComponent.js +0 -2
  71. package/build/domain/components/FormComponent.js +0 -12
  72. package/build/domain/components/FormattedValueComponent.js +0 -47
  73. package/build/domain/components/HeadingComponent.js +0 -2
  74. package/build/domain/components/ImageComponent.js +0 -2
  75. package/build/domain/components/InstructionsComponent.js +0 -2
  76. package/build/domain/components/IntegerInputComponent.js +0 -75
  77. package/build/domain/components/ListComponent.js +0 -2
  78. package/build/domain/components/LoadingIndicatorComponent.js +0 -2
  79. package/build/domain/components/MarkdownComponent.js +0 -2
  80. package/build/domain/components/MediaComponent.js +0 -2
  81. package/build/domain/components/ModalComponent.js +0 -20
  82. package/build/domain/components/ModalLayoutComponent.js +0 -12
  83. package/build/domain/components/MoneyInputComponent.js +0 -56
  84. package/build/domain/components/MultiSelectInputComponent.js +0 -86
  85. package/build/domain/components/MultiUploadInputComponent.js +0 -86
  86. package/build/domain/components/NumberInputComponent.js +0 -74
  87. package/build/domain/components/ObjectComponent.js +0 -54
  88. package/build/domain/components/ParagraphComponent.js +0 -2
  89. package/build/domain/components/PersistAsyncComponent.js +0 -96
  90. package/build/domain/components/ProgressComponent.js +0 -2
  91. package/build/domain/components/RepeatableComponent.js +0 -106
  92. package/build/domain/components/ReviewComponent.js +0 -2
  93. package/build/domain/components/RootDomainComponent.js +0 -193
  94. package/build/domain/components/SectionComponent.js +0 -12
  95. package/build/domain/components/SelectInputComponent.js +0 -96
  96. package/build/domain/components/StatusListComponent.js +0 -2
  97. package/build/domain/components/SubflowComponent.js +0 -19
  98. package/build/domain/components/TabsComponent.js +0 -2
  99. package/build/domain/components/TextInputComponent.js +0 -77
  100. package/build/domain/components/TupleComponent.js +0 -48
  101. package/build/domain/components/UpdatableComponent.js +0 -46
  102. package/build/domain/components/UploadInputComponent.js +0 -78
  103. package/build/domain/components/UpsellComponent.js +0 -26
  104. package/build/domain/components/collectionComponent/CollectionComponent.js +0 -174
  105. package/build/domain/components/collectionComponent/CollectionComponent.test.js +0 -286
  106. package/build/domain/components/collectionComponent/types.js +0 -1
  107. package/build/domain/components/searchComponent/SearchComponent.js +0 -91
  108. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  109. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -27
  110. package/build/domain/components/step/StepDomainComponent.js +0 -153
  111. package/build/domain/components/step/ToolbarComponent.js +0 -1
  112. package/build/domain/components/utils/component-utils.js +0 -12
  113. package/build/domain/components/utils/debounce.js +0 -34
  114. package/build/domain/components/utils/debounce.test.js +0 -67
  115. package/build/domain/components/utils/file-utils.js +0 -21
  116. package/build/domain/components/utils/file-utils.test.js +0 -27
  117. package/build/domain/components/utils/getRandomId.js +0 -1
  118. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  119. package/build/domain/components/utils/isOrWasValid.js +0 -5
  120. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  121. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  122. package/build/domain/features/collection/getPerformCollectionQuery.js +0 -80
  123. package/build/domain/features/collection/getPerformCollectionQuery.test.js +0 -223
  124. package/build/domain/features/delay/getStepDelays.js +0 -37
  125. package/build/domain/features/delay/getStepDelays.test.js +0 -69
  126. package/build/domain/features/domain-event-bus/DomainEventBus.js +0 -24
  127. package/build/domain/features/domain-event-bus/index.js +0 -1
  128. package/build/domain/features/domain-event-bus/types.js +0 -1
  129. package/build/domain/features/eventNames.js +0 -41
  130. package/build/domain/features/events.js +0 -5
  131. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  132. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  133. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  134. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  135. package/build/domain/features/polling/getStepPolling.js +0 -50
  136. package/build/domain/features/polling/getStepPolling.test.js +0 -115
  137. package/build/domain/features/prefetch/getStepPrefetch.js +0 -56
  138. package/build/domain/features/prefetch/request-cache.js +0 -49
  139. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  140. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  141. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  142. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  143. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -38
  144. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  145. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  146. package/build/domain/features/summary/summary-utils.js +0 -37
  147. package/build/domain/features/summary/summary-utils.test.js +0 -125
  148. package/build/domain/features/updatable/getPerformUpdateQuery.js +0 -52
  149. package/build/domain/features/utils/http-utils.js +0 -21
  150. package/build/domain/features/utils/response-utils.js +0 -9
  151. package/build/domain/features/validation/date-availability.js +0 -54
  152. package/build/domain/features/validation/date-availability.test.js +0 -54
  153. package/build/domain/features/validation/getPatternRegExp.js +0 -25
  154. package/build/domain/features/validation/spec-utils.js +0 -23
  155. package/build/domain/features/validation/validation-functions.js +0 -6
  156. package/build/domain/features/validation/validation-functions.test.js +0 -108
  157. package/build/domain/features/validation/value-checks.js +0 -130
  158. package/build/domain/features/validation/value-checks.test.js +0 -297
  159. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -57
  160. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  161. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -6
  162. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -46
  163. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -162
  164. package/build/domain/handlers/dismissHandler.js +0 -11
  165. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -18
  166. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  167. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  168. package/build/domain/mappers/layout/collectionLayoutToComponent.js +0 -49
  169. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  170. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -24
  171. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  172. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  173. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  174. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  175. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -17
  176. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  177. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  178. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  179. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  180. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  181. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  182. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  183. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  184. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  185. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  186. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -49
  187. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  188. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -16
  189. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  190. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  191. package/build/domain/mappers/layout/updatableLayoutToComponent.js +0 -39
  192. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -18
  193. package/build/domain/mappers/mapLayoutToComponent.js +0 -87
  194. package/build/domain/mappers/mapSchemaToComponent.js +0 -65
  195. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -116
  196. package/build/domain/mappers/mapStepSchemas.js +0 -14
  197. package/build/domain/mappers/mapStepToComponent.js +0 -145
  198. package/build/domain/mappers/mapStepToComponent.test.js +0 -319
  199. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  200. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -17
  201. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  202. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -56
  203. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -66
  204. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -58
  205. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -18
  206. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  207. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  208. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  209. package/build/domain/mappers/schema/dateSchemaToComponent.js +0 -56
  210. package/build/domain/mappers/schema/dateSchemaToComponent.test.js +0 -112
  211. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  212. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  213. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  214. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  215. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  216. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -97
  217. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -32
  218. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  219. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -67
  220. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -225
  221. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  222. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  223. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  224. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -38
  225. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  226. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  227. package/build/domain/mappers/schema/types.js +0 -1
  228. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  229. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  230. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  231. package/build/domain/mappers/types.js +0 -1
  232. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  233. package/build/domain/mappers/utils/behavior-utils.js +0 -52
  234. package/build/domain/mappers/utils/call-to-action-utils.js +0 -24
  235. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  236. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  237. package/build/domain/mappers/utils/getHrefWithTracking.js +0 -16
  238. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  239. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  240. package/build/domain/mappers/utils/image.js +0 -6
  241. package/build/domain/mappers/utils/layout-utils.js +0 -11
  242. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  243. package/build/domain/mappers/utils/media-utils.js +0 -14
  244. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  245. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  246. package/build/domain/mappers/utils/tags-utils.js +0 -1
  247. package/build/domain/mappers/utils/utils.js +0 -45
  248. package/build/domain/types.js +0 -1
  249. package/build/i18n/index.js +0 -40
  250. package/build/index.js +0 -9
  251. package/build/renderers/CoreContainerRenderer.js +0 -5
  252. package/build/renderers/CoreRootRenderer.js +0 -12
  253. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  254. package/build/renderers/getRenderFunction.js +0 -24
  255. package/build/renderers/getSchemaErrorMessageFunction.js +0 -111
  256. package/build/renderers/mappers/alertComponentToProps.js +0 -3
  257. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  258. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -3
  259. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  260. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  261. package/build/renderers/mappers/collectionComponentToProps.js +0 -11
  262. package/build/renderers/mappers/columnsComponentToProps.js +0 -8
  263. package/build/renderers/mappers/componentToRendererProps.js +0 -168
  264. package/build/renderers/mappers/constComponentToProps.js +0 -5
  265. package/build/renderers/mappers/containerComponentToProps.js +0 -8
  266. package/build/renderers/mappers/dateInputComponentToProps.js +0 -3
  267. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  268. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  269. package/build/renderers/mappers/externalComponentToProps.js +0 -4
  270. package/build/renderers/mappers/formComponentToProps.js +0 -8
  271. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  272. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  273. package/build/renderers/mappers/hiddenComponentToProps.js +0 -1
  274. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  275. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  276. package/build/renderers/mappers/integerInputComponentToProps.js +0 -3
  277. package/build/renderers/mappers/listComponentToProps.js +0 -3
  278. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  279. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  280. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  281. package/build/renderers/mappers/modalComponentToProps.js +0 -8
  282. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -13
  283. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  284. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -19
  285. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -7
  286. package/build/renderers/mappers/numberInputComponentToProps.js +0 -3
  287. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  288. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  289. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -7
  290. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  291. package/build/renderers/mappers/repeatableComponentToProps.js +0 -22
  292. package/build/renderers/mappers/reviewComponentToProps.js +0 -3
  293. package/build/renderers/mappers/rootComponentToProps.js +0 -20
  294. package/build/renderers/mappers/searchComponentToProps.js +0 -45
  295. package/build/renderers/mappers/sectionComponentToProps.js +0 -7
  296. package/build/renderers/mappers/selectInputComponentToProps.js +0 -34
  297. package/build/renderers/mappers/statusListComponentToProps.js +0 -3
  298. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -26
  299. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  300. package/build/renderers/mappers/textInputComponentToProps.js +0 -3
  301. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  302. package/build/renderers/mappers/updatableComponentToProps.js +0 -6
  303. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -5
  304. package/build/renderers/mappers/upsellComponentToProps.js +0 -3
  305. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  306. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -17
  307. package/build/renderers/mappers/utils/mapCallToAction.js +0 -23
  308. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  309. package/build/renderers/mappers/utils/mapRendererLoadingState.js +0 -1
  310. package/build/renderers/mappers/utils/pick.js +0 -8
  311. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  312. package/build/renderers/stepComponentToProps.js +0 -32
  313. package/build/renderers/subflow/getDynamicSubflowRenderer.js +0 -13
  314. package/build/renderers/subflow/getNativeSubflowRenderer.js +0 -26
  315. package/build/renderers/utils.js +0 -72
  316. package/build/renderers/utils.test.js +0 -70
  317. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  318. package/build/stories/dev-tools/Debugger.story.js +0 -107
  319. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  320. package/build/stories/dev-tools/TestServer.story.js +0 -118
  321. package/build/stories/examples/NativeFlow.story.js +0 -80
  322. package/build/stories/examples/Recipients.story.js +0 -568
  323. package/build/stories/spec/behavior/Copy.story.js +0 -71
  324. package/build/stories/spec/behavior/Download.story.js +0 -254
  325. package/build/stories/spec/behavior/DynamicSubflow.story.js +0 -272
  326. package/build/stories/spec/behavior/Link.story.js +0 -40
  327. package/build/stories/spec/behavior/Modal.story.js +0 -79
  328. package/build/stories/spec/behavior/NativeSubflow.story.js +0 -249
  329. package/build/stories/spec/layouts/Alert.story.js +0 -107
  330. package/build/stories/spec/layouts/Box.Container-Widths.3-sizes.story.js +0 -59
  331. package/build/stories/spec/layouts/Box.Container-Widths.story.js +0 -57
  332. package/build/stories/spec/layouts/Box.Viewport-Widths.story.js +0 -64
  333. package/build/stories/spec/layouts/Collection.story.js +0 -294
  334. package/build/stories/spec/layouts/Decision.story.js +0 -241
  335. package/build/stories/spec/layouts/Image.Illustrations.Animated.story.js +0 -37
  336. package/build/stories/spec/layouts/Image.Sizes.story.js +0 -58
  337. package/build/stories/spec/layouts/Modal.story.js +0 -81
  338. package/build/stories/spec/layouts/Search.story.js +0 -325
  339. package/build/stories/spec/layouts/Updatable.story.js +0 -135
  340. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  341. package/build/stories/spec/layouts/button/Button.story.js +0 -111
  342. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  343. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  344. package/build/stories/spec/schemas/InlineAlert.story.js +0 -134
  345. package/build/stories/spec/schemas/MultiSelect.story.js +0 -206
  346. package/build/stories/spec/schemas/Upload.story.js +0 -168
  347. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  348. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  349. package/build/stories/spec/schemas/date/DateSchema.story.js +0 -59
  350. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -230
  351. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -137
  352. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  353. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  354. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  355. package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +0 -114
  356. package/build/stories/spec/step/Controls.story.js +0 -110
  357. package/build/stories/spec/step/DFModal.story.js +0 -58
  358. package/build/stories/spec/step/Footer.story.js +0 -90
  359. package/build/stories/spec/step/Navigation.story.js +0 -46
  360. package/build/stories/spec/step/ScrollToBottom.story.js +0 -103
  361. package/build/stories/spec/step/Tags.story.js +0 -39
  362. package/build/stories/spec/step/ToolBar.story.js +0 -60
  363. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  364. package/build/stories/spec/step/features/External.story.js +0 -91
  365. package/build/stories/spec/step/features/LongFormError.story.js +0 -88
  366. package/build/stories/spec/step/features/Polling.story.js +0 -108
  367. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  368. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -260
  369. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  370. package/build/stories/types.js +0 -1
  371. package/build/stories/utils/fixtureHttpClient.js +0 -70
  372. package/build/stories/utils/getBasicStep.js +0 -223
  373. package/build/stories/utils/mockSearchHandler.js +0 -71
  374. package/build/stories/utils/render-utils.js +0 -59
  375. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  376. package/build/test-utils/DynamicFlowWise.js +0 -41
  377. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  378. package/build/test-utils/NeptuneProviders.js +0 -11
  379. package/build/test-utils/component-utils.js +0 -5
  380. package/build/test-utils/dummy-native-subflows-handlers/dummySubflowHandlers.js +0 -45
  381. package/build/test-utils/dummy-native-subflows-handlers/geolocationSubflowHandler.js +0 -30
  382. package/build/test-utils/dummy-native-subflows-handlers/index.js +0 -9
  383. package/build/test-utils/dummy-native-subflows-handlers/notificationPermissionSubflowHandler.js +0 -17
  384. package/build/test-utils/fetch-utils.js +0 -47
  385. package/build/test-utils/getMergedTestRenderers.js +0 -36
  386. package/build/test-utils/getRandomId.js +0 -1
  387. package/build/test-utils/index.js +0 -3
  388. package/build/test-utils/mockIntersectionObserver.js +0 -23
  389. package/build/test-utils/openLinkInNewTab.js +0 -15
  390. package/build/test-utils/rtl-utils.js +0 -7
  391. package/build/test-utils/step-utils.js +0 -6
  392. package/build/test-utils/useSnackBar.js +0 -4
  393. package/build/test-utils/wait.js +0 -3
  394. package/build/tests/AlertLayout.test.js +0 -228
  395. package/build/tests/ArrayTuple.test.js +0 -118
  396. package/build/tests/ButtonLayout.test.js +0 -356
  397. package/build/tests/CollectionLayout.test.js +0 -516
  398. package/build/tests/ConstLayout.test.js +0 -95
  399. package/build/tests/DateInput.test.js +0 -190
  400. package/build/tests/DateSchema.test.js +0 -84
  401. package/build/tests/DecisionLayout.test.js +0 -146
  402. package/build/tests/DelayBehavior.test.js +0 -186
  403. package/build/tests/Download.test.js +0 -201
  404. package/build/tests/DynamicFlow.test.js +0 -147
  405. package/build/tests/External.test.js +0 -169
  406. package/build/tests/Flow.test.js +0 -328
  407. package/build/tests/FormLayout.test.js +0 -28
  408. package/build/tests/FormattedValue.test.js +0 -107
  409. package/build/tests/ImageRenderer.test.js +0 -78
  410. package/build/tests/InitialAction.test.js +0 -235
  411. package/build/tests/InitialStep.test.js +0 -168
  412. package/build/tests/InstructionsLayout.test.js +0 -45
  413. package/build/tests/ListLayout.test.js +0 -165
  414. package/build/tests/Logging.test.js +0 -53
  415. package/build/tests/ModalBehavior.test.js +0 -149
  416. package/build/tests/MoneyInput.test.js +0 -313
  417. package/build/tests/MultiUpload.test.js +0 -293
  418. package/build/tests/NativeBack.test.js +0 -267
  419. package/build/tests/NoOp.test.js +0 -194
  420. package/build/tests/OnLoad.test.js +0 -153
  421. package/build/tests/OneOfInitialisation.test.js +0 -571
  422. package/build/tests/PersistAsync.test.js +0 -687
  423. package/build/tests/Polling.test.js +0 -708
  424. package/build/tests/Prefetching.test.js +0 -229
  425. package/build/tests/RefreshAfter.test.js +0 -63
  426. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -199
  427. package/build/tests/RefreshOnChange.test.js +0 -233
  428. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -351
  429. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -359
  430. package/build/tests/RefreshOnChangePreserve.test.js +0 -221
  431. package/build/tests/RendererProps.test.js +0 -372
  432. package/build/tests/Repeatable.test.js +0 -104
  433. package/build/tests/Rerendering.test.js +0 -67
  434. package/build/tests/ReviewLayout.test.js +0 -271
  435. package/build/tests/SchemaOnChange.test.js +0 -133
  436. package/build/tests/SchemaReferences.test.js +0 -88
  437. package/build/tests/ScrollToBottom.test.js +0 -101
  438. package/build/tests/ScrollToError.test.js +0 -359
  439. package/build/tests/ScrollToTop.test.js +0 -95
  440. package/build/tests/SegmentedControl.test.js +0 -49
  441. package/build/tests/SingleFileUpload.test.js +0 -168
  442. package/build/tests/StatusList.test.js +0 -85
  443. package/build/tests/Subflow.dynamic.test.js +0 -887
  444. package/build/tests/Subflow.native.test.js +0 -448
  445. package/build/tests/Submission.Const.test.js +0 -70
  446. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  447. package/build/tests/Submission.merging.test.js +0 -202
  448. package/build/tests/Submission.test.js +0 -821
  449. package/build/tests/Tags.test.js +0 -466
  450. package/build/tests/UpdatableLayout.test.js +0 -343
  451. package/build/tests/Upsell.test.js +0 -154
  452. package/build/tests/ValidationAsync.test.js +0 -295
  453. package/build/tests/behavior/events.test.js +0 -348
  454. package/build/tests/legacy/Actions.test.js +0 -158
  455. package/build/tests/legacy/BackButton.test.js +0 -114
  456. package/build/tests/legacy/HiddenSchemas.test.js +0 -250
  457. package/build/tests/legacy/MultiSelect.test.js +0 -546
  458. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -350
  459. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  460. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  461. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  462. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -421
  463. package/build/tests/legacy/Search.test.js +0 -439
  464. package/build/tests/renderers/InlineAlertInSchemas.test.js +0 -82
  465. package/build/tests/renderers/MediaRenderer.test.js +0 -74
  466. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  467. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -43
  468. package/build/tests/renderers/TextInputRenderer.test.js +0 -48
  469. package/build/types.js +0 -1
  470. package/build/useDynamicFlow.js +0 -110
  471. package/build/useDynamicFlowModal.js +0 -58
  472. package/build/utils/analyse-step.js +0 -14
  473. package/build/utils/component-utils.js +0 -8
  474. package/build/utils/component-utils.test.js +0 -113
  475. package/build/utils/getScrollToTop.js +0 -12
  476. package/build/utils/normalise-flow-id.js +0 -1
  477. package/build/utils/normalise-flow-id.test.js +0 -24
  478. package/build/utils/recursiveMerge.js +0 -40
  479. package/build/utils/recursiveMerge.test.js +0 -93
  480. package/build/utils/safe-parse-link.js +0 -14
  481. package/build/utils/safe-parse-link.test.js +0 -19
  482. package/build/utils/type-utils.js +0 -22
  483. package/build/utils/type-validators.js +0 -11
  484. package/build/utils/type-validators.test.js +0 -180
  485. package/build/utils/useStableCallback.js +0 -15
@@ -1,50 +0,0 @@
1
- import { getDomainLayerBehavior } from '../../mappers/utils/behavior-utils';
2
- export const getStepPolling = ({ pollingConfig, logEvent, onBehavior, onPoll, registerSubmissionBehavior, }) => {
3
- const { interval, delay = interval, maxAttempts, url, onError } = pollingConfig;
4
- let abortController = new AbortController();
5
- let intervalRef = null;
6
- let hasCompleted = false;
7
- if (delay == null) {
8
- throw new Error('Polling configuration must include delay or interval');
9
- }
10
- const onErrorBehavior = getDomainLayerBehavior(onError, [], registerSubmissionBehavior);
11
- let attempts = 0;
12
- const poll = () => {
13
- attempts += 1;
14
- abortController.abort();
15
- abortController = new AbortController();
16
- const { signal } = abortController;
17
- onPoll(url, onErrorBehavior, signal)
18
- .then((result) => {
19
- if (result) {
20
- complete();
21
- return;
22
- }
23
- if (attempts >= maxAttempts && !signal.aborted) {
24
- complete();
25
- void onBehavior(onErrorBehavior);
26
- }
27
- })
28
- .catch(() => { });
29
- };
30
- const complete = () => {
31
- hasCompleted = true;
32
- stop();
33
- };
34
- const start = () => {
35
- if (hasCompleted) {
36
- return;
37
- }
38
- intervalRef = setInterval(poll, delay * 1000);
39
- poll();
40
- };
41
- const stop = () => {
42
- if (!intervalRef) {
43
- logEvent('warning', 'Attempted to stop polling but it was not started');
44
- return;
45
- }
46
- clearInterval(intervalRef);
47
- abortController.abort();
48
- };
49
- return { start, stop };
50
- };
@@ -1,115 +0,0 @@
1
- import { getStepPolling } from './getStepPolling';
2
- import { vi } from 'vitest';
3
- describe('getStepPolling', () => {
4
- it('when called will start polling', async () => {
5
- const onPoll = vi.fn().mockImplementation(async () => Promise.resolve());
6
- getStepPolling({
7
- pollingConfig: {
8
- url: '/polling',
9
- maxAttempts: 5,
10
- interval: 1,
11
- onError: { action: { url: '/failure' } },
12
- },
13
- logEvent: vi.fn(),
14
- onBehavior: vi.fn(),
15
- onPoll,
16
- registerSubmissionBehavior: vi.fn(),
17
- }).start();
18
- expect(onPoll).toHaveBeenCalledTimes(1);
19
- await vi.advanceTimersByTimeAsync(1000);
20
- expect(onPoll).toHaveBeenCalledTimes(2);
21
- await vi.advanceTimersByTimeAsync(1000);
22
- expect(onPoll).toHaveBeenCalledTimes(3);
23
- });
24
- it('the interval between polls is defined by the pollingConfig', async () => {
25
- const onPoll = vi.fn().mockImplementation(async () => Promise.resolve());
26
- const interval = 4;
27
- getStepPolling({
28
- pollingConfig: {
29
- url: '/polling',
30
- maxAttempts: 5,
31
- interval,
32
- onError: { action: { url: '/failure' } },
33
- },
34
- logEvent: vi.fn(),
35
- onBehavior: vi.fn(),
36
- onPoll,
37
- registerSubmissionBehavior: vi.fn(),
38
- }).start();
39
- expect(onPoll).toHaveBeenCalledTimes(1);
40
- await vi.advanceTimersByTimeAsync(interval * 1000);
41
- expect(onPoll).toHaveBeenCalledTimes(2);
42
- await vi.advanceTimersByTimeAsync(interval * 1000);
43
- expect(onPoll).toHaveBeenCalledTimes(3);
44
- });
45
- it('will only poll a number of times defined by maxAttempts - and will trigger the onError action if it reaches this without a valid response', async () => {
46
- const onPoll = vi.fn().mockImplementation(async () => Promise.resolve(false));
47
- const onBehavior = vi.fn();
48
- getStepPolling({
49
- pollingConfig: {
50
- url: '/polling',
51
- maxAttempts: 5,
52
- interval: 1,
53
- onError: { action: { url: '/failure' } },
54
- },
55
- logEvent: vi.fn(),
56
- onBehavior,
57
- onPoll,
58
- registerSubmissionBehavior: vi.fn(),
59
- }).start();
60
- await vi.advanceTimersByTimeAsync(5000);
61
- expect(onPoll).toHaveBeenCalledTimes(5);
62
- expect(onBehavior).toHaveBeenCalledTimes(1);
63
- expect(onBehavior).toHaveBeenCalledWith(expect.objectContaining({
64
- type: 'action',
65
- action: expect.objectContaining({ url: '/failure' }),
66
- }));
67
- });
68
- it('will stop polling once a flow response is received, and it will not restart polling if start is called again', async () => {
69
- const onPoll = vi.fn().mockImplementation(async () => {
70
- // Simulate receiving a flow response, which should stop polling and resolve to true
71
- return Promise.resolve(true);
72
- });
73
- const polling = getStepPolling({
74
- pollingConfig: {
75
- url: '/polling',
76
- maxAttempts: 5,
77
- interval: 1,
78
- onError: { action: { url: '/failure' } },
79
- },
80
- logEvent: vi.fn(),
81
- onBehavior: vi.fn(),
82
- onPoll,
83
- registerSubmissionBehavior: vi.fn(),
84
- });
85
- polling.start();
86
- expect(onPoll).toHaveBeenCalledTimes(1);
87
- await vi.advanceTimersByTimeAsync(1000);
88
- expect(onPoll).toHaveBeenCalledTimes(1);
89
- polling.start();
90
- await vi.advanceTimersByTimeAsync(1000);
91
- expect(onPoll).toHaveBeenCalledTimes(1);
92
- });
93
- it('returns an object with a function that stops polling', async () => {
94
- const onPoll = vi.fn().mockImplementation(async () => Promise.resolve());
95
- const { start, stop } = getStepPolling({
96
- pollingConfig: {
97
- url: '/polling',
98
- maxAttempts: 5,
99
- interval: 1,
100
- onError: { action: { url: '/failure' } },
101
- },
102
- logEvent: vi.fn(),
103
- onBehavior: vi.fn(),
104
- onPoll,
105
- registerSubmissionBehavior: vi.fn(),
106
- });
107
- start();
108
- expect(onPoll).toHaveBeenCalledTimes(1);
109
- await vi.advanceTimersByTimeAsync(2000);
110
- expect(onPoll).toHaveBeenCalledTimes(3);
111
- stop();
112
- await vi.advanceTimersByTimeAsync(2000);
113
- expect(onPoll).toHaveBeenCalledTimes(3);
114
- });
115
- });
@@ -1,56 +0,0 @@
1
- import { createRequestFromAction } from '../../../controller/executeSubmission';
2
- import { makeRequestCacheKey, makeRequestCacheWithParent } from './request-cache';
3
- export const getStepPrefetch = (httpClient, flowRequestCache, submissionBehaviors) => {
4
- const requestCache = makeRequestCacheWithParent(flowRequestCache);
5
- // keep track of all prefetched actions in this step so duplicate requests are not made
6
- const keys = new Set();
7
- const start = (model) => {
8
- if (keys.size > 0) {
9
- return;
10
- }
11
- submissionBehaviors.forEach((behavior) => {
12
- const request = getPrefetchableRequest(behavior, model);
13
- if (request) {
14
- const requestParams = [
15
- request.url,
16
- {
17
- body: JSON.stringify(request.body),
18
- method: request.method,
19
- headers: { 'Content-Type': 'application/json' },
20
- },
21
- ];
22
- try {
23
- const key = makeRequestCacheKey(requestParams);
24
- if (keys.has(key)) {
25
- return;
26
- }
27
- const responsePromise = httpClient(...requestParams).catch(() => null);
28
- requestCache.set(requestParams, responsePromise);
29
- // eslint-disable-next-line functional/immutable-data
30
- keys.add(key);
31
- }
32
- catch (_a) {
33
- // if fetch fails synchronously, we do not cache the request
34
- }
35
- }
36
- });
37
- };
38
- const stop = () => {
39
- // no-op for now
40
- };
41
- return { requestCache, start, stop };
42
- };
43
- export const createRequestFromSubflowLaunchConfig = (launchConfig) => {
44
- return launchConfig.type === 'dynamic' ? launchConfig.request : undefined;
45
- };
46
- const getPrefetchableRequest = (behavior, model) => {
47
- if (behavior.type === 'action' && behavior.action.prefetch) {
48
- return createRequestFromAction(behavior.action, model);
49
- }
50
- if (behavior.type === 'subflow' &&
51
- behavior.launchConfig.type === 'dynamic' &&
52
- behavior.launchConfig.request.prefetch) {
53
- return behavior.launchConfig.request;
54
- }
55
- return null;
56
- };
@@ -1,49 +0,0 @@
1
- /* we can disable this rule here because a cache is inherently mutable */
2
- /* eslint-disable functional/immutable-data */
3
- export const makeRequestCacheWithParent = (parent) => {
4
- const map = new Map();
5
- const cache = {
6
- get: (requestParams) => {
7
- var _a;
8
- const key = makeRequestCacheKey(requestParams);
9
- const promise = (_a = map.get(key)) !== null && _a !== void 0 ? _a : parent === null || parent === void 0 ? void 0 : parent.get(requestParams);
10
- map.delete(key);
11
- return promise;
12
- },
13
- set: (requestParams, responsePromise) => {
14
- return map.set(makeRequestCacheKey(requestParams), responsePromise);
15
- },
16
- };
17
- return cache;
18
- };
19
- export const makeRequestCache = (initialValues = []) => {
20
- const cache = makeRequestCacheWithParent(undefined);
21
- initialValues.forEach(([requestParams, responsePromise]) => {
22
- cache.set(requestParams, responsePromise);
23
- });
24
- return cache;
25
- };
26
- export const normaliseRequestCache = (cache) => {
27
- if (cache === undefined) {
28
- return makeRequestCache();
29
- }
30
- if (isRequestCacheInstance(cache)) {
31
- return cache;
32
- }
33
- return makeRequestCache(cache);
34
- };
35
- const isRequestCacheInstance = (cache) => {
36
- return !cache || !Array.isArray(cache);
37
- };
38
- export const makeRequestCacheKey = (requestParams) => {
39
- var _a, _b;
40
- const [input, init] = requestParams;
41
- const url = typeof input === 'string' || input instanceof URL ? input.toString() : input.url;
42
- const key = JSON.stringify({
43
- url,
44
- method: (_a = init === null || init === void 0 ? void 0 : init.method) !== null && _a !== void 0 ? _a : 'GET',
45
- headers: (init === null || init === void 0 ? void 0 : init.headers) ? Array.from(new Headers(init.headers).entries()) : [],
46
- body: (_b = init === null || init === void 0 ? void 0 : init.body) !== null && _b !== void 0 ? _b : null,
47
- });
48
- return key;
49
- };
@@ -1,70 +0,0 @@
1
- import { makeRequestCache, makeRequestCacheWithParent } from './request-cache';
2
- describe('RequestCache', () => {
3
- it('should.set and.get requests correctly, discriminating by URL and method', async () => {
4
- var _a, _b, _c, _d;
5
- const cache = makeRequestCache();
6
- cache.set(['/request-a', { method: 'GET' }], Promise.resolve(new Response('cached response: a GET')));
7
- cache.set(['/request-a', { method: 'POST' }], Promise.resolve(new Response('cached response: a POST')));
8
- cache.set(['/request-b', { method: 'GET' }], Promise.resolve(new Response('cached response: b GET')));
9
- cache.set(['/request-b', { method: 'POST' }], Promise.resolve(new Response('cached response: b POST')));
10
- const promiseAget = cache.get(['/request-a', { method: 'GET' }]);
11
- expect(promiseAget).toBeDefined();
12
- expect(promiseAget && (await ((_a = (await promiseAget)) === null || _a === void 0 ? void 0 : _a.text()))).toBe('cached response: a GET');
13
- const nonCachedPromise = cache.get(['/request-c', { method: 'GET' }]);
14
- expect(nonCachedPromise).toBeUndefined();
15
- const promiseApost = cache.get(['/request-a', { method: 'POST' }]);
16
- expect(promiseApost).toBeDefined();
17
- expect(promiseApost && (await ((_b = (await promiseApost)) === null || _b === void 0 ? void 0 : _b.text()))).toBe('cached response: a POST');
18
- const promiseBget = cache.get(['/request-b', { method: 'GET' }]);
19
- expect(promiseBget).toBeDefined();
20
- expect(promiseBget && (await ((_c = (await promiseBget)) === null || _c === void 0 ? void 0 : _c.text()))).toBe('cached response: b GET');
21
- const promiseBpost = cache.get(['/request-b', { method: 'POST' }]);
22
- expect(promiseBpost).toBeDefined();
23
- expect(promiseBpost && (await ((_d = (await promiseBpost)) === null || _d === void 0 ? void 0 : _d.text()))).toBe('cached response: b POST');
24
- });
25
- it('should also discriminate when headers are different', async () => {
26
- var _a, _b;
27
- const cache = makeRequestCache();
28
- cache.set(['/request-a', { headers: { 'X-Custom-Header': 'Value1' } }], Promise.resolve(new Response('cached response: header Value1')));
29
- cache.set(['/request-a', { headers: { 'X-Custom-Header': 'Value2' } }], Promise.resolve(new Response('cached response: header Value2')));
30
- const promiseHeader1 = cache.get(['/request-a', { headers: { 'X-Custom-Header': 'Value1' } }]);
31
- expect(promiseHeader1).toBeDefined();
32
- expect(promiseHeader1 && (await ((_a = (await promiseHeader1)) === null || _a === void 0 ? void 0 : _a.text()))).toBe('cached response: header Value1');
33
- const promiseHeader2 = cache.get(['/request-a', { headers: { 'X-Custom-Header': 'Value2' } }]);
34
- expect(promiseHeader2).toBeDefined();
35
- expect(promiseHeader2 && (await ((_b = (await promiseHeader2)) === null || _b === void 0 ? void 0 : _b.text()))).toBe('cached response: header Value2');
36
- });
37
- it('should also discriminate when bodies are different', async () => {
38
- var _a, _b;
39
- const cache = makeRequestCache();
40
- cache.set(['/request-a', { method: 'POST', body: 'body1' }], Promise.resolve(new Response('cached response: body1')));
41
- cache.set(['/request-a', { method: 'POST', body: 'body2' }], Promise.resolve(new Response('cached response: body2')));
42
- const promiseBody1 = cache.get(['/request-a', { method: 'POST', body: 'body1' }]);
43
- expect(promiseBody1).toBeDefined();
44
- expect(promiseBody1 && (await ((_a = (await promiseBody1)) === null || _a === void 0 ? void 0 : _a.text()))).toBe('cached response: body1');
45
- const promiseBody2 = cache.get(['/request-a', { method: 'POST', body: 'body2' }]);
46
- expect(promiseBody2).toBeDefined();
47
- expect(promiseBody2 && (await ((_b = (await promiseBody2)) === null || _b === void 0 ? void 0 : _b.text()))).toBe('cached response: body2');
48
- });
49
- describe('when given a parent cache', () => {
50
- it('gets from the child cache first if present', async () => {
51
- var _a;
52
- const parent = makeRequestCache();
53
- parent.set(['/abc', { method: 'POST', body: 'abc' }], Promise.resolve(new Response('cached response: abc')));
54
- const child = makeRequestCacheWithParent(parent);
55
- child.set(['/abc', { method: 'POST', body: 'abc' }], Promise.resolve(new Response('cached response: def')));
56
- const promiseBody = child.get(['/abc', { method: 'POST', body: 'abc' }]);
57
- expect(promiseBody).toBeDefined();
58
- expect(promiseBody && (await ((_a = (await promiseBody)) === null || _a === void 0 ? void 0 : _a.text()))).toBe('cached response: def');
59
- });
60
- it('gets from the parent cache if not present in the child', async () => {
61
- var _a;
62
- const parent = makeRequestCache();
63
- parent.set(['/abc', { method: 'POST', body: 'abc' }], Promise.resolve(new Response('cached response: abc')));
64
- const child = makeRequestCacheWithParent(parent);
65
- const promiseBody1 = child.get(['/abc', { method: 'POST', body: 'abc' }]);
66
- expect(promiseBody1).toBeDefined();
67
- expect(promiseBody1 && (await ((_a = (await promiseBody1)) === null || _a === void 0 ? void 0 : _a.text()))).toBe('cached response: abc');
68
- });
69
- });
70
- });
@@ -1,24 +0,0 @@
1
- const ONE_SECOND = 1000;
2
- export const getStepRefreshAfter = ({ refreshAfter, logEvent, onBehavior, }) => {
3
- let timeout = null;
4
- const targetTime = new Date(refreshAfter).getTime();
5
- if (typeof refreshAfter !== 'string' || Number.isNaN(targetTime)) {
6
- throw new Error(`Invalid refreshAfter value: ${String(refreshAfter)}`);
7
- }
8
- const start = () => {
9
- const timeLeft = Math.max(targetTime - Date.now(), ONE_SECOND);
10
- timeout = setTimeout(() => {
11
- void onBehavior({ type: 'refresh', analytics: { schema: 'refreshAfter' }, track: false });
12
- }, timeLeft);
13
- };
14
- return {
15
- start,
16
- stop: () => {
17
- if (!timeout) {
18
- logEvent('warning', 'Attempted to stop refreshAfter but it was not started');
19
- return;
20
- }
21
- clearTimeout(timeout);
22
- },
23
- };
24
- };
@@ -1,40 +0,0 @@
1
- import { vi } from 'vitest';
2
- import { getStepRefreshAfter } from './getStepRefreshAfter';
3
- describe('getStepRefreshAfter', () => {
4
- describe('valid ISO 8601 strings (and supported by JS Date)', () => {
5
- const validIso8601Strings = [
6
- ['date, hours, minutes, seconds, no timezone', '2025-03-12T12:00:00'],
7
- ['date, hours, minutes, seconds, timezone Z', '2025-03-12T12:00:00Z'],
8
- ['date, hours, minutes, seconds, timezone +01:00', '2025-03-12T12:00:00+01:00'],
9
- ['date, hours, minutes, seconds, timezone -01:00', '2025-03-12T12:00:00-01:00'],
10
- ['date, hours, minutes, seconds.milliseconds, timezone Z', '2025-03-12T12:00:00.000Z'],
11
- [
12
- 'date, hours, minutes, seconds.milliseconds, timezone +HH:mm',
13
- '2025-03-12T12:00:00.000+01:00',
14
- ],
15
- [
16
- 'date, hours, minutes, seconds.milliseconds, timezone +HHmm',
17
- '2025-03-12T12:00:00.000+0100',
18
- ],
19
- ];
20
- describe.each(validIso8601Strings)('%s', (_, refreshAfter) => {
21
- it(`it returns a StepRefreshAfter object for "${refreshAfter}"`, () => {
22
- expect(getStepRefreshAfter({ refreshAfter, logEvent: vi.fn(), onBehavior: vi.fn() })).toBeDefined();
23
- });
24
- });
25
- });
26
- describe('invalid ISO 8601 strings (or not supported by JS Date)', () => {
27
- const invalidIso8601Strings = [
28
- ['random word', 'banana'],
29
- ['random word', 'now'],
30
- ['unix timestamp', '1741780800'],
31
- ['basic date string: missing dashes and colons', '20250312T120000'],
32
- ['two-digit timezone +HH', '2025-03-12T12:00:00.000+01'],
33
- ];
34
- describe.each(invalidIso8601Strings)('%s', (_, refreshAfter) => {
35
- it(`it should throw for "${refreshAfter}"`, () => {
36
- expect(() => getStepRefreshAfter({ refreshAfter, logEvent: vi.fn(), onBehavior: vi.fn() })).toThrow(`Invalid refreshAfter value: ${refreshAfter}`);
37
- });
38
- });
39
- });
40
- });
@@ -1,50 +0,0 @@
1
- /* eslint-disable functional/immutable-data */
2
- import { debounce } from '../../components/utils/debounce';
3
- import { isOrWasValid } from '../../components/utils/isOrWasValid';
4
- const debounceDelay = 1000;
5
- export const getDebouncedSchemaOnChange = (onChange, getValidationErrors) => {
6
- if (!onChange) {
7
- return undefined;
8
- }
9
- const performOnChange = onChange.behaviorType === 'refresh'
10
- ? getSelectiveDebouncedSchemaOnChange(onChange, getValidationErrors)
11
- : debounce(onChange, debounceDelay);
12
- return performOnChange;
13
- };
14
- const getSelectiveDebouncedSchemaOnChange = (onChange, getValidationErrors) => {
15
- let behaviorControl = { abort: () => { } };
16
- let timeoutId = null;
17
- const clearTimer = () => {
18
- if (timeoutId) {
19
- clearTimeout(timeoutId);
20
- }
21
- timeoutId = null;
22
- };
23
- const flush = () => {
24
- if (timeoutId !== null) {
25
- void onChange().then((bc) => {
26
- behaviorControl = bc;
27
- });
28
- clearTimer();
29
- }
30
- };
31
- const debouncedOnChange = (prevValue, updatedValue) => {
32
- var _a;
33
- const valid = isOrWasValid(getValidationErrors, prevValue, updatedValue);
34
- const isPending = timeoutId !== null;
35
- if (valid || isPending) {
36
- (_a = behaviorControl.abort) === null || _a === void 0 ? void 0 : _a.call(behaviorControl);
37
- clearTimer();
38
- timeoutId = setTimeout(() => flush(), debounceDelay);
39
- }
40
- };
41
- debouncedOnChange.cancel = () => {
42
- var _a;
43
- clearTimer();
44
- (_a = behaviorControl.abort) === null || _a === void 0 ? void 0 : _a.call(behaviorControl);
45
- };
46
- debouncedOnChange.flush = () => {
47
- flush();
48
- };
49
- return debouncedOnChange;
50
- };
@@ -1,38 +0,0 @@
1
- import { normaliseBehavior } from '../../mappers/utils/behavior-utils';
2
- export const getSchemaOnChange = (schema, onBehavior) => {
3
- var _a, _b;
4
- const behavior = (_b = (_a = getBehaviorFromSchemaOnChange(schema)) !== null && _a !== void 0 ? _a : getBehaviorFromSchemaRefreshStepOnChange(schema)) !== null && _b !== void 0 ? _b : undefined;
5
- if (behavior) {
6
- const onChange = async () => onBehavior(behavior);
7
- // eslint-disable-next-line functional/immutable-data
8
- onChange.behaviorType = behavior.type;
9
- return onChange;
10
- }
11
- return undefined;
12
- };
13
- const getBehaviorFromSchemaOnChange = (schema) => {
14
- var _a;
15
- if ('onChange' in schema && schema.onChange) {
16
- const { $id, analyticsId, onChange } = schema;
17
- const behavior = Object.assign(Object.assign({}, normaliseBehavior(onChange, [])), { analytics: { schema: (_a = analyticsId !== null && analyticsId !== void 0 ? analyticsId : $id) !== null && _a !== void 0 ? _a : '' } });
18
- return behavior;
19
- }
20
- return undefined;
21
- };
22
- const getBehaviorFromSchemaRefreshStepOnChange = (schema) => {
23
- var _a, _b, _c;
24
- if (('refreshStepOnChange' in schema && ((_a = schema.refreshStepOnChange) !== null && _a !== void 0 ? _a : false)) ||
25
- ('refreshFormOnChange' in schema && ((_b = schema.refreshFormOnChange) !== null && _b !== void 0 ? _b : false))) {
26
- const { $id, analyticsId } = schema;
27
- const refreshUrl = 'refreshUrl' in schema ? schema.refreshUrl : undefined;
28
- const refreshFormUrl = 'refreshFormUrl' in schema ? schema.refreshFormUrl : undefined;
29
- const behavior = {
30
- type: 'refresh',
31
- analytics: { schema: (_c = analyticsId !== null && analyticsId !== void 0 ? analyticsId : $id) !== null && _c !== void 0 ? _c : '' },
32
- url: refreshUrl !== null && refreshUrl !== void 0 ? refreshUrl : refreshFormUrl,
33
- track: false,
34
- };
35
- return behavior;
36
- }
37
- return undefined;
38
- };
@@ -1,75 +0,0 @@
1
- import { isArray, isObject } from '../../../utils/type-validators';
2
- export const getPerformSearchFunction = (httpClient, mapLayoutToDomainComponent, defaultConfig) => {
3
- let latestSuccessfulRequestHash = hashRequest('', defaultConfig);
4
- let latestSuccessfulResults = null;
5
- return async ({ config = defaultConfig, query, signal }) => {
6
- const requestHash = hashRequest(query, config);
7
- if (requestHash !== latestSuccessfulRequestHash) {
8
- const { method, param, url } = config;
9
- const headers = { 'Content-Type': 'application/json' };
10
- const response = await (method === 'GET'
11
- ? httpClient(addQueryParameter(url, param, query), {
12
- method,
13
- headers,
14
- signal,
15
- })
16
- : httpClient(url, {
17
- method,
18
- headers,
19
- signal,
20
- body: JSON.stringify({ [param]: query }),
21
- }));
22
- const results = await parseResponse(response);
23
- // eslint-disable-next-line require-atomic-updates
24
- latestSuccessfulRequestHash = requestHash;
25
- if (results.type === 'layout') {
26
- const mappedLayoutResult = {
27
- type: 'layout',
28
- content: results.content.map(mapLayoutToDomainComponent),
29
- };
30
- latestSuccessfulResults = mappedLayoutResult;
31
- return mappedLayoutResult;
32
- }
33
- latestSuccessfulResults = results;
34
- return results;
35
- }
36
- return latestSuccessfulResults;
37
- };
38
- };
39
- const parseResponse = async (response) => {
40
- if (response.ok) {
41
- const body = await response.json().catch(() => null);
42
- if (isValidResponseBody(body)) {
43
- if (body.type === 'layout') {
44
- return body;
45
- }
46
- if (body.results) {
47
- return {
48
- type: 'results',
49
- results: body.results,
50
- };
51
- }
52
- }
53
- }
54
- throw Error('error response');
55
- };
56
- const addQueryParameter = (url, key, value) => {
57
- const [urlBase, urlQuery] = url.split('?');
58
- const urlQueryParams = new URLSearchParams(urlQuery);
59
- urlQueryParams.set(key, value);
60
- return `${urlBase}?${urlQueryParams.toString()}`;
61
- };
62
- const isValidResponseBody = (body) => {
63
- if (!isObject(body)) {
64
- return false;
65
- }
66
- if ('results' in body) {
67
- return (isArray(body.results) &&
68
- body.results.every((result) => isObject(result) && 'title' in result && 'type' in result && 'value' in result));
69
- }
70
- if ('type' in body && body.type === 'layout' && 'content' in body) {
71
- return isArray(body.content);
72
- }
73
- return false;
74
- };
75
- const hashRequest = (query, config) => JSON.stringify({ query, config });