@legalplace/wizardx-core 2.6.4 → 2.7.0

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 (346) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/App.js +13 -4
  3. package/dist/PluginLoader.d.ts +3 -1
  4. package/dist/PluginLoader.js +12 -0
  5. package/dist/ThemeLoader.d.ts +2 -2
  6. package/dist/componentsConnectors/connectBox.d.ts +3 -1
  7. package/dist/componentsConnectors/connectDocument.d.ts +3 -1
  8. package/dist/componentsConnectors/connectHeader.d.ts +3 -1
  9. package/dist/componentsConnectors/connectMetaTitle.d.ts +3 -1
  10. package/dist/componentsConnectors/connectOption.d.ts +6 -2
  11. package/dist/componentsConnectors/connectOption.js +1 -1
  12. package/dist/componentsConnectors/connectPagination.d.ts +3 -1
  13. package/dist/componentsConnectors/connectPreview.d.ts +3 -1
  14. package/dist/componentsConnectors/connectProgress.d.ts +3 -1
  15. package/dist/componentsConnectors/connectRootOption.d.ts +3 -1
  16. package/dist/componentsConnectors/connectSection.d.ts +3 -1
  17. package/dist/componentsConnectors/connectSection.js +7 -10
  18. package/dist/componentsConnectors/connectSummary.d.ts +3 -1
  19. package/dist/componentsConnectors/connectSummaryItem.d.ts +3 -1
  20. package/dist/componentsConnectors/connectVariable.d.ts +6 -2
  21. package/dist/componentsConnectors/connectVariable.js +1 -1
  22. package/dist/componentsConnectors/connectWizardWrapper.d.ts +3 -1
  23. package/dist/componentsConnectors/connector/componentConnector.d.ts +5 -1
  24. package/dist/componentsConnectors/connector/componentConnector.js +44 -4
  25. package/dist/componentsConnectors/connector/index.d.ts +1 -0
  26. package/dist/componentsConnectors/connector/index.js +1 -0
  27. package/dist/componentsConnectors/index.d.ts +17 -0
  28. package/dist/componentsConnectors/index.js +17 -0
  29. package/dist/componentsConnectors/library.d.ts +43 -15
  30. package/dist/helpers/apiEndpoint.d.ts +1 -0
  31. package/dist/helpers/apiEndpoint.js +4 -0
  32. package/dist/helpers/index.d.ts +4 -0
  33. package/dist/helpers/index.js +4 -0
  34. package/dist/helpers/propsEqualityCheck.d.ts +1 -0
  35. package/dist/helpers/propsEqualityCheck.js +9 -0
  36. package/dist/hooks/index.d.ts +4 -0
  37. package/dist/hooks/index.js +4 -0
  38. package/dist/hooks/useActions.d.ts +2 -0
  39. package/dist/hooks/useActions.js +4 -0
  40. package/dist/hooks/useDispatch.d.ts +1 -0
  41. package/dist/hooks/useDispatch.js +4 -0
  42. package/dist/hooks/useSelectors.d.ts +2 -0
  43. package/dist/hooks/useSelectors.js +4 -0
  44. package/dist/index.d.ts +13 -0
  45. package/dist/index.js +13 -0
  46. package/dist/libs/PathReader.d.ts +10 -6
  47. package/dist/libs/PathReader.js +47 -28
  48. package/dist/libs/index.d.ts +5 -0
  49. package/dist/libs/index.js +5 -0
  50. package/dist/redux/actions/index.d.ts +9 -0
  51. package/dist/redux/actions/index.js +9 -0
  52. package/dist/redux/actions/library.d.ts +59 -63
  53. package/dist/redux/actions/sagas/index.d.ts +3 -0
  54. package/dist/redux/actions/sagas/index.js +3 -0
  55. package/dist/redux/actions/sagas/model.d.ts +1 -5
  56. package/dist/redux/constants/app.d.ts +2 -0
  57. package/dist/redux/constants/app.js +2 -0
  58. package/dist/redux/constants/index.d.ts +8 -0
  59. package/dist/redux/constants/index.js +8 -0
  60. package/dist/redux/constants/sagas/index.d.ts +3 -0
  61. package/dist/redux/constants/sagas/index.js +3 -0
  62. package/dist/redux/index.d.ts +5 -0
  63. package/dist/redux/index.js +5 -0
  64. package/dist/redux/middlewares/conditionsWatcherMiddleware.js +11 -5
  65. package/dist/redux/middlewares/conditionsWatcherMiddleware.test.js +120 -113
  66. package/dist/redux/middlewares/paginationWatcherMiddleware.js +2 -2
  67. package/dist/redux/middlewares/smartscriptMiddleware.js +8 -0
  68. package/dist/redux/reducers/pluginsStore.d.ts +3 -0
  69. package/dist/redux/reducers/pluginsStore.js +12 -0
  70. package/dist/redux/routerHistory.js +2 -2
  71. package/dist/redux/sagas/fetchModel.js +22 -6
  72. package/dist/redux/sagas/initInputs.js +6 -7
  73. package/dist/redux/sagas/saveData.js +2 -0
  74. package/dist/redux/selectors/app.js +13 -18
  75. package/dist/redux/selectors/cache.d.ts +17 -0
  76. package/dist/redux/selectors/cache.js +35 -0
  77. package/dist/redux/selectors/conditions.js +7 -7
  78. package/dist/redux/selectors/index.d.ts +8 -0
  79. package/dist/redux/selectors/index.js +8 -0
  80. package/dist/redux/selectors/inputs.js +3 -3
  81. package/dist/redux/selectors/library.d.ts +2 -2
  82. package/dist/redux/selectors/references.js +26 -26
  83. package/dist/redux/selectors/selectors.d.ts +2 -2
  84. package/dist/redux/selectors/selectors.js +19 -8
  85. package/dist/redux/selectors/selectors.test.js +6 -6
  86. package/dist/redux/selectors/user.js +5 -5
  87. package/dist/redux/store.d.ts +1 -1
  88. package/dist/redux/store.js +12 -4
  89. package/dist/service/api.manager.d.ts +1 -6
  90. package/dist/service/index.d.ts +3 -0
  91. package/dist/service/index.js +3 -0
  92. package/dist/types/PluginConfig.type.d.ts +57 -0
  93. package/dist/types/PluginConfig.type.js +1 -0
  94. package/dist/types/State.type.d.ts +6 -0
  95. package/dist/types/config.type.d.ts +3 -1
  96. package/dist/types/index.d.ts +11 -0
  97. package/dist/types/index.js +11 -0
  98. package/package.json +11 -11
  99. package/.depcheckrc +0 -1
  100. package/.eslintignore +0 -2
  101. package/.eslintrc +0 -5
  102. package/__mocks__/fileMock.js +0 -1
  103. package/babel.config.json +0 -3
  104. package/jest.config.ts +0 -193
  105. package/setupJest.ts +0 -8
  106. package/src/App.test.tsx +0 -41
  107. package/src/App.tsx +0 -152
  108. package/src/Globals.ts +0 -69
  109. package/src/Loader.tsx +0 -8
  110. package/src/PluginLoader.test.tsx +0 -70
  111. package/src/PluginLoader.tsx +0 -407
  112. package/src/Shimmer.tsx +0 -108
  113. package/src/ThemeLoader.test.tsx +0 -82
  114. package/src/ThemeLoader.tsx +0 -95
  115. package/src/components/PluginRoute.tsx +0 -48
  116. package/src/components/SmartScript.tsx +0 -166
  117. package/src/components/UserLocked/UserLockedComponent.tsx +0 -33
  118. package/src/components/View.test.tsx +0 -110
  119. package/src/components/View.tsx +0 -114
  120. package/src/componentsConnectors/connectBox.test.tsx +0 -226
  121. package/src/componentsConnectors/connectBox.tsx +0 -70
  122. package/src/componentsConnectors/connectDocument.test.tsx +0 -108
  123. package/src/componentsConnectors/connectDocument.tsx +0 -64
  124. package/src/componentsConnectors/connectHeader.tsx +0 -21
  125. package/src/componentsConnectors/connectMetaTitle.test.tsx +0 -40
  126. package/src/componentsConnectors/connectMetaTitle.tsx +0 -8
  127. package/src/componentsConnectors/connectOption.tsx +0 -222
  128. package/src/componentsConnectors/connectPagination.tsx +0 -102
  129. package/src/componentsConnectors/connectPreview.tsx +0 -5
  130. package/src/componentsConnectors/connectProgress.tsx +0 -59
  131. package/src/componentsConnectors/connectRootOption.tsx +0 -95
  132. package/src/componentsConnectors/connectSection.tsx +0 -79
  133. package/src/componentsConnectors/connectSummary.tsx +0 -21
  134. package/src/componentsConnectors/connectSummaryItem.tsx +0 -102
  135. package/src/componentsConnectors/connectTermsheet.tsx +0 -359
  136. package/src/componentsConnectors/connectVariable.tsx +0 -191
  137. package/src/componentsConnectors/connectWizardWrapper.tsx +0 -30
  138. package/src/componentsConnectors/connector/componentConnector.tsx +0 -219
  139. package/src/componentsConnectors/library.ts +0 -35
  140. package/src/config.test.ts +0 -63
  141. package/src/config.ts +0 -11
  142. package/src/constants/emailValidation.ts +0 -2
  143. package/src/constants/phoneValidation.ts +0 -4
  144. package/src/definitions/path.join.d.ts +0 -4
  145. package/src/helpers/outputsParsing.ts +0 -412
  146. package/src/helpers/preloadTheme.ts +0 -17
  147. package/src/helpers/scriptsLoader.ts +0 -20
  148. package/src/hooks/usePrevious.ts +0 -9
  149. package/src/libs/ConditionsInitiator.ts +0 -164
  150. package/src/libs/ConditionsRunner/DataPopulator.ts +0 -266
  151. package/src/libs/ConditionsRunner.ts +0 -454
  152. package/src/libs/DocumentsOutputs.ts +0 -171
  153. package/src/libs/Eval/EvalBase.ts +0 -116
  154. package/src/libs/Eval/EvalFunctions.ts +0 -724
  155. package/src/libs/Eval/NumbersToLetters.ts +0 -185
  156. package/src/libs/EvalVariable.ts +0 -265
  157. package/src/libs/EventsTracking.ts +0 -250
  158. package/src/libs/InputsInitiator.ts +0 -136
  159. package/src/libs/NumAuto.test.ts +0 -55
  160. package/src/libs/NumAuto.ts +0 -56
  161. package/src/libs/OvcConverter.ts +0 -285
  162. package/src/libs/PathReader.ts +0 -272
  163. package/src/libs/SectionValidity.test.ts +0 -146
  164. package/src/libs/SectionValidity.ts +0 -110
  165. package/src/libs/SmartScriptStore.ts +0 -492
  166. package/src/misc/test_model.ts +0 -14603
  167. package/src/misc/test_models/connectDocumen.testmodel.json +0 -178
  168. package/src/misc/test_models/setDefaults.testmodel.json +0 -279
  169. package/src/misc/test_models/testmodel.json +0 -1
  170. package/src/polyfills/index.ts +0 -5
  171. package/src/polyfills/objectValues.ts +0 -4
  172. package/src/polyfills/prepend.ts +0 -31
  173. package/src/polyfills/stringRepeat.ts +0 -44
  174. package/src/redux/actions/app.test.ts +0 -123
  175. package/src/redux/actions/app.ts +0 -249
  176. package/src/redux/actions/conditions.test.ts +0 -84
  177. package/src/redux/actions/conditions.ts +0 -135
  178. package/src/redux/actions/inputs.test.ts +0 -85
  179. package/src/redux/actions/inputs.ts +0 -111
  180. package/src/redux/actions/library.ts +0 -23
  181. package/src/redux/actions/mandatories.ts +0 -98
  182. package/src/redux/actions/references.test.ts +0 -48
  183. package/src/redux/actions/references.ts +0 -37
  184. package/src/redux/actions/sagas/data.test.ts +0 -11
  185. package/src/redux/actions/sagas/data.ts +0 -18
  186. package/src/redux/actions/sagas/model.test.ts +0 -14
  187. package/src/redux/actions/sagas/model.ts +0 -48
  188. package/src/redux/actions/sagas/user.ts +0 -25
  189. package/src/redux/actions/smartscript.ts +0 -55
  190. package/src/redux/actions/user.test.ts +0 -18
  191. package/src/redux/actions/user.ts +0 -41
  192. package/src/redux/constants/app.ts +0 -36
  193. package/src/redux/constants/conditions.ts +0 -25
  194. package/src/redux/constants/inputs.ts +0 -15
  195. package/src/redux/constants/mandatories.ts +0 -11
  196. package/src/redux/constants/references.ts +0 -7
  197. package/src/redux/constants/sagas/data.ts +0 -1
  198. package/src/redux/constants/sagas/model.ts +0 -2
  199. package/src/redux/constants/sagas/user.ts +0 -2
  200. package/src/redux/constants/smartscript.ts +0 -9
  201. package/src/redux/constants/user.ts +0 -6
  202. package/src/redux/listeners/subscriber.test.ts +0 -45
  203. package/src/redux/listeners/subscriber.ts +0 -29
  204. package/src/redux/middlewares/conditionsWatcherMiddleware.test.ts +0 -370
  205. package/src/redux/middlewares/conditionsWatcherMiddleware.ts +0 -321
  206. package/src/redux/middlewares/evaluationsWatcherMiddleware.test.ts +0 -323
  207. package/src/redux/middlewares/evaluationsWatcherMiddleware.ts +0 -250
  208. package/src/redux/middlewares/mandatoriesWatcherMiddleware.ts +0 -473
  209. package/src/redux/middlewares/multiplesActionsMiddleware.test.ts +0 -230
  210. package/src/redux/middlewares/multiplesActionsMiddleware.ts +0 -121
  211. package/src/redux/middlewares/paginationWatcherMiddleware.ts +0 -251
  212. package/src/redux/middlewares/pluginsHookMiddleware.ts +0 -24
  213. package/src/redux/middlewares/prefillerWatcherMiddleware.test.ts +0 -118
  214. package/src/redux/middlewares/prefillerWatcherMiddleware.ts +0 -462
  215. package/src/redux/middlewares/smartscriptMiddleware.ts +0 -228
  216. package/src/redux/middlewares/thirdpartyScriptsMiddleware.ts +0 -41
  217. package/src/redux/reducers/app/customizations/initCustomizationAutoDefault.ts +0 -16
  218. package/src/redux/reducers/app/customizations/initCustomizationMeta.ts +0 -16
  219. package/src/redux/reducers/app/instance/initInstance.ts +0 -29
  220. package/src/redux/reducers/app/instance/setDataStatus.ts +0 -16
  221. package/src/redux/reducers/app/instance/updateInstance.ts +0 -30
  222. package/src/redux/reducers/app/instance/updateInstancePaid.ts +0 -20
  223. package/src/redux/reducers/app/instance.test.ts +0 -106
  224. package/src/redux/reducers/app/meta/fetchModelFailed.ts +0 -11
  225. package/src/redux/reducers/app/meta/fetchModelNonBlocking.ts +0 -11
  226. package/src/redux/reducers/app/meta/fetchModelSucceeded.ts +0 -11
  227. package/src/redux/reducers/app/meta/fetchModelUnhealthy.ts +0 -18
  228. package/src/redux/reducers/app/meta/fetchModelUserLocked.ts +0 -11
  229. package/src/redux/reducers/app/meta/initMeta.ts +0 -22
  230. package/src/redux/reducers/app/meta/setModelUuid.ts +0 -17
  231. package/src/redux/reducers/app/meta.test.ts +0 -90
  232. package/src/redux/reducers/app/pagination/goNextPage.ts +0 -69
  233. package/src/redux/reducers/app/pagination/goPage.ts +0 -81
  234. package/src/redux/reducers/app/pagination/goPreviousPage.ts +0 -60
  235. package/src/redux/reducers/app/pagination/initPagination.ts +0 -46
  236. package/src/redux/reducers/app/pagination/updateAvailableAppStates.ts +0 -77
  237. package/src/redux/reducers/app/pagination.test.ts +0 -363
  238. package/src/redux/reducers/app/wizard/updateAvailableSections.ts +0 -40
  239. package/src/redux/reducers/app/wizard.test.ts +0 -84
  240. package/src/redux/reducers/app.test.ts +0 -336
  241. package/src/redux/reducers/app.ts +0 -150
  242. package/src/redux/reducers/conditions/addMultipleOccurency.test.ts +0 -131
  243. package/src/redux/reducers/conditions/addMultipleOccurency.ts +0 -155
  244. package/src/redux/reducers/conditions/deleteMultipleOccurency.test.ts +0 -95
  245. package/src/redux/reducers/conditions/deleteMultipleOccurency.ts +0 -141
  246. package/src/redux/reducers/conditions/initConditions.ts +0 -18
  247. package/src/redux/reducers/conditions/updateDocumentConditions.test.ts +0 -47
  248. package/src/redux/reducers/conditions/updateDocumentConditions.ts +0 -21
  249. package/src/redux/reducers/conditions/updateOptionConditions.ts +0 -24
  250. package/src/redux/reducers/conditions/updateOptionValidatorCondition.test.ts +0 -50
  251. package/src/redux/reducers/conditions/updateOptionValidatorCondition.ts +0 -28
  252. package/src/redux/reducers/conditions/updatePrefillerConditions.ts +0 -29
  253. package/src/redux/reducers/conditions/updateSectionConditions.ts +0 -28
  254. package/src/redux/reducers/conditions/updateVariableConditions.ts +0 -25
  255. package/src/redux/reducers/conditions/updateVariableValidatorCondition.test.ts +0 -50
  256. package/src/redux/reducers/conditions/updateVariableValidatorCondition.ts +0 -28
  257. package/src/redux/reducers/conditions.test.ts +0 -241
  258. package/src/redux/reducers/conditions.ts +0 -68
  259. package/src/redux/reducers/inputs/addMultipleOccurency.test.ts +0 -117
  260. package/src/redux/reducers/inputs/addMultipleOccurency.ts +0 -50
  261. package/src/redux/reducers/inputs/deleteMultipleOccurency.test.ts +0 -70
  262. package/src/redux/reducers/inputs/deleteMultipleOccurency.ts +0 -50
  263. package/src/redux/reducers/inputs/initOption.ts +0 -16
  264. package/src/redux/reducers/inputs/initVariable.ts +0 -16
  265. package/src/redux/reducers/inputs/updateOptionInput.ts +0 -24
  266. package/src/redux/reducers/inputs/updateVariableInput.ts +0 -24
  267. package/src/redux/reducers/inputs.test.ts +0 -221
  268. package/src/redux/reducers/inputs.ts +0 -51
  269. package/src/redux/reducers/mandatories/addMultipleOccurency.ts +0 -52
  270. package/src/redux/reducers/mandatories/deleteMultipleOccurency.ts +0 -55
  271. package/src/redux/reducers/mandatories/initMandatoryOption.ts +0 -17
  272. package/src/redux/reducers/mandatories/initMandatoryVariable.ts +0 -17
  273. package/src/redux/reducers/mandatories/setMandatoryIgnore.ts +0 -17
  274. package/src/redux/reducers/mandatories/setMandatoryOption.ts +0 -25
  275. package/src/redux/reducers/mandatories/setMandatorySection.ts +0 -20
  276. package/src/redux/reducers/mandatories/setMandatoryVariable.ts +0 -24
  277. package/src/redux/reducers/mandatories.ts +0 -56
  278. package/src/redux/reducers/references/initReferences.ts +0 -37
  279. package/src/redux/reducers/references/updateOptionMeta.ts +0 -73
  280. package/src/redux/reducers/references/updateVariableMeta.ts +0 -72
  281. package/src/redux/reducers/references.ts +0 -59
  282. package/src/redux/reducers/smartscript/enableSmartScript.ts +0 -13
  283. package/src/redux/reducers/smartscript/initSmartScriptTriggers.ts +0 -14
  284. package/src/redux/reducers/smartscript/updateSmartscriptOptionHidden.ts +0 -30
  285. package/src/redux/reducers/smartscript/updateSmartscriptVariableHidden.ts +0 -30
  286. package/src/redux/reducers/smartscript.ts +0 -47
  287. package/src/redux/reducers/user/initUser.ts +0 -15
  288. package/src/redux/reducers/user/setUserStatus.ts +0 -13
  289. package/src/redux/reducers/user/setUserValidToken.ts +0 -13
  290. package/src/redux/reducers/user.test.ts +0 -51
  291. package/src/redux/reducers/user.ts +0 -40
  292. package/src/redux/routerHistore.test.ts +0 -19
  293. package/src/redux/routerHistory.ts +0 -26
  294. package/src/redux/sagas/fetchModel.test.ts +0 -76
  295. package/src/redux/sagas/fetchModel.ts +0 -683
  296. package/src/redux/sagas/homogeneousRadioInputsSaga.ts +0 -42
  297. package/src/redux/sagas/initInputs.ts +0 -110
  298. package/src/redux/sagas/runner.test.ts +0 -12
  299. package/src/redux/sagas/runner.ts +0 -26
  300. package/src/redux/sagas/saveData.test.ts +0 -125
  301. package/src/redux/sagas/saveData.ts +0 -55
  302. package/src/redux/sagas/setDefaults.test.ts +0 -100
  303. package/src/redux/sagas/setDefaults.ts +0 -167
  304. package/src/redux/sagas/setUserEmail.ts +0 -175
  305. package/src/redux/selectors/app.test.ts +0 -162
  306. package/src/redux/selectors/app.ts +0 -331
  307. package/src/redux/selectors/conditions.test.ts +0 -92
  308. package/src/redux/selectors/conditions.ts +0 -293
  309. package/src/redux/selectors/inputs.test.ts +0 -72
  310. package/src/redux/selectors/inputs.ts +0 -76
  311. package/src/redux/selectors/library.ts +0 -17
  312. package/src/redux/selectors/mandatories.ts +0 -83
  313. package/src/redux/selectors/references.test.ts +0 -660
  314. package/src/redux/selectors/references.ts +0 -413
  315. package/src/redux/selectors/selectors.test.ts +0 -21
  316. package/src/redux/selectors/selectors.ts +0 -87
  317. package/src/redux/selectors/smartscript.ts +0 -30
  318. package/src/redux/selectors/user.test.ts +0 -39
  319. package/src/redux/selectors/user.ts +0 -45
  320. package/src/redux/store.test.ts +0 -22
  321. package/src/redux/store.ts +0 -100
  322. package/src/service/api.manager.ts +0 -261
  323. package/src/service/auth.service.ts +0 -5
  324. package/src/service/pardot.service.ts +0 -10
  325. package/src/tests-misc/plugins/jestTestPlugin/after.tsx +0 -5
  326. package/src/tests-misc/plugins/jestTestPlugin/before.tsx +0 -11
  327. package/src/tests-misc/plugins/jestTestPlugin/index.ts +0 -11
  328. package/src/tests-misc/plugins/jestTestPlugin/title.tsx +0 -8
  329. package/src/tests-misc/themes/jestTestTheme/components/EmailComponent.tsx +0 -5
  330. package/src/tests-misc/themes/jestTestTheme/components/TermsheetComponent.tsx +0 -5
  331. package/src/tests-misc/themes/jestTestTheme/components/WizardComponent.tsx +0 -5
  332. package/src/tests-misc/themes/jestTestTheme/faltyIndex.ts +0 -3
  333. package/src/tests-misc/themes/jestTestTheme/faltyIndexLoader.ts +0 -1
  334. package/src/tests-misc/themes/jestTestTheme/index.ts +0 -13
  335. package/src/types/Actions.type.ts +0 -612
  336. package/src/types/Components.type.ts +0 -181
  337. package/src/types/State.type.ts +0 -323
  338. package/src/types/Termsheet.type.ts +0 -28
  339. package/src/types/api.type.ts +0 -37
  340. package/src/types/config.type.ts +0 -55
  341. package/src/types/env.type.ts +0 -5
  342. package/src/types/getActions.type.ts +0 -3
  343. package/src/types/getConnectors.type.ts +0 -5
  344. package/src/types/getSelectors.type.ts +0 -3
  345. package/src/wizard-params.ts +0 -56
  346. package/tsconfig.json +0 -43
@@ -1,272 +0,0 @@
1
- import { createMatchSelector, RouterState } from "connected-react-router";
2
- import queryString from "query-string";
3
- import { getConfig } from "../config";
4
- import { StateType } from "../types/State.type";
5
- import { getPluginsPageAppStates } from "../PluginLoader";
6
- import {
7
- selectAvailableSections,
8
- selectAvailableAppStates,
9
- } from "../redux/selectors/app";
10
- import Globals from "../Globals";
11
-
12
- export class PathReader {
13
- currentPage = 1;
14
-
15
- currentSectionId = 1;
16
-
17
- currentAppState = "";
18
-
19
- currentPermalink = "";
20
-
21
- currentView = "";
22
-
23
- prefix = "";
24
-
25
- currentUniqid: string | undefined = undefined;
26
-
27
- modelVersion: string | undefined = undefined;
28
-
29
- constructor(state: StateType) {
30
- this.matchWithUniqId(state);
31
- this.matchWithoutUniqId(state);
32
-
33
- // Setting current id from state
34
- if (state.app.instance.uniqid !== "") {
35
- this.currentUniqid = state.app.instance.uniqid;
36
- }
37
- }
38
-
39
- /**
40
- * Matches paths without uniqid
41
- *
42
- * @param state Redux State
43
- */
44
- matchWithoutUniqId(state: StateType): void {
45
- type RouteType = {
46
- permalink: string;
47
- page: string;
48
- view: string;
49
- prefix: string;
50
- modelVersion: string;
51
- };
52
- const matchSelector = createMatchSelector<
53
- { router: RouterState },
54
- RouteType
55
- >(getConfig().router.wizardPath);
56
- const match = matchSelector(state);
57
-
58
- if (match) {
59
- const { permalink, page, view, prefix } = match.params;
60
- const modelVersion = queryString.parse(window.location.search).version;
61
- this.prefix = prefix || "";
62
- this.currentPermalink = Globals.permalink || permalink;
63
- this.currentPage = this.getPageNumber(page);
64
- this.currentSectionId = this.getSectionId();
65
- this.currentAppState = this.getAppState(page);
66
- this.currentView = view;
67
- this.modelVersion =
68
- typeof modelVersion === "string" ? modelVersion : undefined;
69
- }
70
- }
71
-
72
- /**
73
- * Matches paths with uniqid
74
- *
75
- * @param state Redux State
76
- */
77
- matchWithUniqId(state: StateType): void {
78
- type RouteType = {
79
- permalink: string;
80
- prefix: string;
81
- page: string;
82
- uniqid: string;
83
- view: string;
84
- modelVersion: string;
85
- };
86
- const matchSelector = createMatchSelector<
87
- { router: RouterState },
88
- RouteType
89
- >(getConfig().router.wizardInstancePath);
90
- const match = matchSelector(state);
91
-
92
- if (match) {
93
- const { permalink, page, uniqid, view, prefix } = match.params;
94
- const modelVersion = queryString.parse(window.location.search).version;
95
- this.currentPermalink = Globals.permalink || permalink;
96
- this.prefix = prefix || "";
97
- this.currentPage = this.getPageNumber(page);
98
- this.currentSectionId = this.getSectionId();
99
- this.currentUniqid = uniqid;
100
- this.currentAppState = this.getAppState(page);
101
- this.currentView = view;
102
- this.modelVersion =
103
- typeof modelVersion === "string" ? modelVersion : undefined;
104
- }
105
- }
106
-
107
- /**
108
- * Returns given pages app state name
109
- * @param page Page
110
- */
111
- getAppState(page: string) {
112
- const appStatesPages = this.getAppStatesPages();
113
-
114
- // Initiating current app State with wizard
115
- // so that we always fall back to it in case
116
- // we don't find the app state
117
- let currentAppState = "wizard";
118
-
119
- // Looking for the app state
120
- Object.keys(appStatesPages).forEach((appState) => {
121
- if (appStatesPages[appState] === page) currentAppState = appState;
122
- });
123
-
124
- return currentAppState;
125
- }
126
-
127
- /**
128
- * Recieves a page number and returns its according page name
129
- * Example: email, termsheet etc...
130
- * @param page
131
- */
132
- getPageUrlName(page: number): string {
133
- const pagesArray = this.getPagination().pages;
134
- if (page > pagesArray.length) return `${pagesArray[pagesArray.length - 1]}`;
135
- return `${pagesArray[page - 1]}`;
136
- }
137
-
138
- /**
139
- * Returns current page number from page slug
140
- * @param page Page
141
- */
142
- getPageNumber(page: string) {
143
- const { pages } = this.getPagination();
144
- const parsedPage = Number.isNaN(parseInt(page, 10))
145
- ? page
146
- : parseInt(page, 10);
147
-
148
- return pages.indexOf(parsedPage) + 1 || 1;
149
- }
150
-
151
- /**
152
- * Returns currentSectionId
153
- * @param page Page number
154
- */
155
- getSectionId(page: number = this.currentPage) {
156
- const availableSections = selectAvailableSections();
157
- const { appStates } = this.getPagination();
158
- const pageIndex = page - 1;
159
-
160
- let availableSectionsIndex = 0;
161
-
162
- if (appStates[pageIndex] === "wizard")
163
- availableSectionsIndex = pageIndex - appStates.indexOf("wizard");
164
-
165
- return availableSections[availableSectionsIndex];
166
- }
167
-
168
- /**
169
- * Returns an array containing pages names in
170
- * the correct order of pagination
171
- */
172
- getPagination() {
173
- const availableAppStates = selectAvailableAppStates();
174
-
175
- let pages: (string | number)[] = [];
176
- let appStates: string[] = [];
177
- availableAppStates.forEach((currentAppState) => {
178
- if (currentAppState === "wizard")
179
- selectAvailableSections().forEach(() => {
180
- pages = [...pages, pages.length + 1];
181
- appStates = [...appStates, "wizard"];
182
- });
183
- else if (
184
- Object.prototype.hasOwnProperty.call(
185
- this.getAppStatesPages(),
186
- currentAppState
187
- )
188
- ) {
189
- pages = [...pages, this.getAppStatesPages()[currentAppState]];
190
- appStates = [...appStates, currentAppState];
191
- } else {
192
- pages = [...pages, pages.length + 1];
193
- appStates = [...appStates, currentAppState];
194
- }
195
- });
196
-
197
- return {
198
- pages,
199
- appStates,
200
- };
201
- }
202
-
203
- /**
204
- * Returns all liste of appStates with their
205
- * corresponding page name
206
- */
207
- getAppStatesPages() {
208
- // Default Global AppStates pages
209
- const globalAppStates: Record<string, string> =
210
- getConfig().router.appStatesPages || {};
211
-
212
- // Plugins AppStates pages
213
- const pluginsAppStates = getPluginsPageAppStates();
214
-
215
- return {
216
- ...globalAppStates,
217
- ...pluginsAppStates,
218
- };
219
- }
220
-
221
- /**
222
- * Recieves page number, uniqid & modelVersion & parses the right path
223
- * according to those
224
- * @param page Page Number
225
- * @param uniqid Document's uniqid
226
- * @param modelVersion Model's version
227
- */
228
- parsePath(
229
- page: number = this.currentPage,
230
- uniqid = this.currentUniqid,
231
- modelVersion = this.modelVersion
232
- ): string {
233
- let path =
234
- uniqid === undefined
235
- ? getConfig().router.wizardPath
236
- : getConfig().router.wizardInstancePath;
237
-
238
- // Replacing Permalink
239
- path = path.replace(/:permalink(\(([^/]*)\))?/gi, this.currentPermalink);
240
-
241
- // Replacing Permalink
242
- if (this.prefix)
243
- path = path.replace(/:prefix\?(\(([^/]*)\))?/gi, this.prefix);
244
- else path = path.replace(/\/:prefix\?(\(([^/]*)\))?/gi, "");
245
- // Replacing page
246
- path = path.replace(/:page(\(([^/]*)\))?\??/gi, this.getPageUrlName(page));
247
-
248
- if (uniqid !== undefined) {
249
- // Replacing Uniqid
250
- path = path.replace(/:uniqid(\(([^/]*)\))?/gi, uniqid);
251
- }
252
-
253
- if (modelVersion !== undefined) {
254
- // Replacing Uniqid
255
- path += `?version=${modelVersion}`;
256
- }
257
-
258
- // Replacing view
259
- path = path.replace(/:view(\(([^/]*)\))?/gi, this.currentView);
260
-
261
- // Adding other additionnal query params
262
- const queryParams = queryString.parse(window.location.search);
263
- if (queryParams.version !== undefined) delete queryParams.version;
264
- const cleanQueryString = queryString.stringify(queryParams);
265
- if (cleanQueryString.length > 0) {
266
- path += modelVersion === undefined ? "?" : "&";
267
- path += cleanQueryString;
268
- }
269
-
270
- return path;
271
- }
272
- }
@@ -1,146 +0,0 @@
1
- import { SectionValidity } from './SectionValidity';
2
- import { StateType } from '../types/State.type';
3
-
4
- const mockInputs: StateType.Inputs = {
5
- options: {
6
- 1: [true],
7
- 2: [true],
8
- 3: [true],
9
- 1032: [true],
10
- },
11
- variables: {},
12
- };
13
-
14
- const mockReferences: {
15
- sections: StateType.References.Sections;
16
- options: StateType.References.Options;
17
- } = {
18
- sections: {
19
- main: {
20
- 1: {
21
- id: 1,
22
- label: 'Section 1 - Valid Section',
23
- options: [1],
24
- },
25
- 2: {
26
- id: 2,
27
- label: 'Section 2 - Unvalid Section',
28
- options: [2],
29
- },
30
- 3: {
31
- id: 3,
32
- label: 'Section 3 - Has inexistant child',
33
- options: [1032],
34
- },
35
- },
36
- },
37
- options: {
38
- 1: {
39
- meta: {
40
- type: 'checkbox',
41
- id: 1,
42
- label: 'Option 1',
43
- step: '*',
44
- },
45
- options: [],
46
- variables: [1],
47
- },
48
- 2: {
49
- meta: {
50
- type: 'checkbox',
51
- id: 2,
52
- label: 'Option 2',
53
- step: '*',
54
- },
55
- options: [3],
56
- variables: [2],
57
- },
58
- 3: {
59
- meta: {
60
- type: 'checkbox',
61
- id: 3,
62
- label: 'Option 3',
63
- step: '*',
64
- },
65
- options: [],
66
- variables: [],
67
- },
68
- },
69
- };
70
-
71
- const mockConditions: {
72
- options: StateType.Conditions.Options;
73
- variables: StateType.Conditions.Variables;
74
- validators: StateType.Conditions.Validators;
75
- } = {
76
- options: {
77
- 1: [true],
78
- 2: [true],
79
- 3: [true],
80
- },
81
- variables: {
82
- 1: [true],
83
- 2: [true],
84
- },
85
- validators: {
86
- options: {
87
- 1: [true],
88
- 2: [true],
89
- 3: [false],
90
- },
91
- variables: {
92
- 1: [true],
93
- 2: [false],
94
- },
95
- },
96
- };
97
-
98
- // ../redux/selectors/inputs.ts
99
- jest.mock('../redux/selectors/inputs', () => ({
100
- __esModule: true,
101
- selectOptionInput: (id: number) => mockInputs.options[id],
102
- selectOptionInputByIndex: (id: number, index: number) =>
103
- mockInputs.options[id][index],
104
- }));
105
-
106
- // ../redux/selectors/references.ts
107
- jest.mock('../redux/selectors/references', () => ({
108
- __esModule: true,
109
- selectSectionReference: (id: number) => mockReferences.sections.main[id],
110
- selectOptionReference: (id: number) => mockReferences.options[id],
111
- }));
112
-
113
- // ../redux/selectors/conditions.ts
114
- jest.mock('../redux/selectors/conditions', () => ({
115
- __esModule: true,
116
- selectOptionConditionValue: (id: number, index: number) =>
117
- mockConditions.options[id][index],
118
- selectOptionValidatorConditionValue: (id: number, index: number) =>
119
- mockConditions.validators.options[id][index],
120
- selectVariableConditionValue: (id: number, index: number) =>
121
- mockConditions.variables[id][index],
122
- selectVariableValidatorConditionValue: (id: number, index: number) =>
123
- mockConditions.validators.variables[id][index],
124
- }));
125
-
126
- describe('SectionValidity library test suit', () => {
127
- it('Checks valid section', () => {
128
- expect(new SectionValidity(1).validity).toBeTruthy();
129
- });
130
-
131
- it('Checks unvalid section', () => {
132
- expect(new SectionValidity(2).validity).toBeFalsy();
133
- });
134
-
135
- it('Should throw an error if option reference does not exist', () => {
136
- expect(() => new SectionValidity(3).validity).toThrowError(
137
- 'Option 1032 does not exist'
138
- );
139
- });
140
-
141
- it('Should throw an error if section does not exist', () => {
142
- expect(() => new SectionValidity(4).validity).toThrowError(
143
- 'Section 4 does not exist'
144
- );
145
- });
146
- });
@@ -1,110 +0,0 @@
1
- import {
2
- selectSectionReference,
3
- selectOptionReference,
4
- } from "../redux/selectors/references";
5
- import {
6
- selectOptionConditionValue,
7
- selectOptionValidatorConditionValue,
8
- selectVariableConditionValue,
9
- selectVariableValidatorConditionValue,
10
- } from "../redux/selectors/conditions";
11
- import {
12
- selectOptionInput,
13
- selectOptionInputByIndex,
14
- } from "../redux/selectors/inputs";
15
-
16
- export class SectionValidity {
17
- validity = true;
18
-
19
- sectionId: number;
20
-
21
- constructor(sectionId: number) {
22
- this.sectionId = sectionId;
23
- this.checkSection();
24
- }
25
-
26
- /**
27
- * Checks if current section is valid
28
- */
29
- private checkSection() {
30
- const sectionReference = selectSectionReference(this.sectionId);
31
- if (sectionReference === undefined)
32
- throw new Error(`Section ${this.sectionId} does not exist`);
33
-
34
- // Checking options
35
- sectionReference.options.forEach((optionId) => {
36
- // Getting option inputs
37
- const optionInputs = selectOptionInput(optionId);
38
-
39
- optionInputs.forEach((value, index) => {
40
- // No need to keep running if we find a false
41
- if (this.validity === false) return;
42
-
43
- // Checking options
44
- this.checkOption(optionId, index);
45
- });
46
- });
47
- }
48
-
49
- /**
50
- * Checks whether a given option is valid or not
51
- * @param optionId Option's id
52
- * @param index Option's index
53
- */
54
- private checkOption(optionId: number, index: number) {
55
- const optionReference = selectOptionReference(optionId);
56
- if (optionReference === undefined)
57
- throw new Error(`Option ${optionId} does not exist`);
58
-
59
- const optionValue = selectOptionInputByIndex(optionId, index);
60
- const optionCondition = selectOptionConditionValue(optionId, index);
61
-
62
- if (optionValue === false || optionCondition === false) return;
63
-
64
- // Checking option validity
65
- const validatorValue = selectOptionValidatorConditionValue(optionId, index);
66
- const optionValidity =
67
- validatorValue === true || validatorValue === undefined;
68
-
69
- // Checking all validity
70
- this.validity = this.validity && optionValidity;
71
-
72
- // No need to keep running if we find a false
73
- if (this.validity === false) return;
74
-
75
- // Checking children
76
- optionReference.options.forEach((childrenId) => {
77
- this.checkOption(childrenId, index);
78
- });
79
-
80
- // Checking variables
81
- optionReference.variables.forEach((variableId) => {
82
- // No need to keep running if we find a false
83
- if (this.validity === false) return;
84
-
85
- this.checkVariable(variableId, index);
86
- });
87
- }
88
-
89
- /**
90
- * Checks whether a given variable is valid or not
91
- * @param variableId Variable's id
92
- * @param index Variable's index
93
- */
94
- private checkVariable(variableId: number, index: number) {
95
- const variableCondition = selectVariableConditionValue(variableId, index);
96
-
97
- if (variableCondition === false) return;
98
-
99
- // Checking variable validity
100
- const validatorValue = selectVariableValidatorConditionValue(
101
- variableId,
102
- index
103
- );
104
- const variableValidity =
105
- validatorValue === true || validatorValue === undefined;
106
-
107
- // Checking all validity
108
- this.validity = this.validity && variableValidity;
109
- }
110
- }