@explorer02/cfm-survey-sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/dist/analytics/analyticsTracker.d.ts +3 -0
  2. package/dist/analytics/analyticsTracker.d.ts.map +1 -0
  3. package/dist/analytics/analyticsTracker.js +34 -0
  4. package/dist/analytics/analyticsTracker.js.map +1 -0
  5. package/dist/analytics/types.d.ts +76 -0
  6. package/dist/analytics/types.d.ts.map +1 -0
  7. package/dist/analytics/types.js +3 -0
  8. package/dist/analytics/types.js.map +1 -0
  9. package/dist/cli/deploy.d.ts +2 -0
  10. package/dist/cli/deploy.d.ts.map +1 -0
  11. package/dist/cli/deploy.js +200 -0
  12. package/dist/cli/deploy.js.map +1 -0
  13. package/dist/cli/index.d.ts +3 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +33 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/fetchSurvey/internalTypes.d.ts +60 -0
  18. package/dist/fetchSurvey/internalTypes.d.ts.map +1 -0
  19. package/dist/fetchSurvey/internalTypes.js +3 -0
  20. package/dist/fetchSurvey/internalTypes.js.map +1 -0
  21. package/dist/fetchSurvey/logger/fetchLogger.d.ts +6 -0
  22. package/dist/fetchSurvey/logger/fetchLogger.d.ts.map +1 -0
  23. package/dist/fetchSurvey/logger/fetchLogger.js +37 -0
  24. package/dist/fetchSurvey/logger/fetchLogger.js.map +1 -0
  25. package/dist/fetchSurvey/logger/mapperLogger.d.ts +4 -0
  26. package/dist/fetchSurvey/logger/mapperLogger.d.ts.map +1 -0
  27. package/dist/fetchSurvey/logger/mapperLogger.js +16 -0
  28. package/dist/fetchSurvey/logger/mapperLogger.js.map +1 -0
  29. package/dist/fetchSurvey/telemetry/fetchTelemetry.d.ts +3 -0
  30. package/dist/fetchSurvey/telemetry/fetchTelemetry.d.ts.map +1 -0
  31. package/dist/fetchSurvey/telemetry/fetchTelemetry.js +29 -0
  32. package/dist/fetchSurvey/telemetry/fetchTelemetry.js.map +1 -0
  33. package/dist/fetchSurvey/types.d.ts +54 -0
  34. package/dist/fetchSurvey/types.d.ts.map +1 -0
  35. package/dist/fetchSurvey/types.js +3 -0
  36. package/dist/fetchSurvey/types.js.map +1 -0
  37. package/dist/fetchSurvey/useFetchSurvey.d.ts +24 -0
  38. package/dist/fetchSurvey/useFetchSurvey.d.ts.map +1 -0
  39. package/dist/fetchSurvey/useFetchSurvey.js +115 -0
  40. package/dist/fetchSurvey/useFetchSurvey.js.map +1 -0
  41. package/dist/fetchSurvey/utils/cleaner.d.ts +7 -0
  42. package/dist/fetchSurvey/utils/cleaner.d.ts.map +1 -0
  43. package/dist/fetchSurvey/utils/cleaner.js +35 -0
  44. package/dist/fetchSurvey/utils/cleaner.js.map +1 -0
  45. package/dist/fetchSurvey/utils/constants.d.ts +10 -0
  46. package/dist/fetchSurvey/utils/constants.d.ts.map +1 -0
  47. package/dist/fetchSurvey/utils/constants.js +13 -0
  48. package/dist/fetchSurvey/utils/constants.js.map +1 -0
  49. package/dist/fetchSurvey/utils/extractSurveyLanguages.d.ts +17 -0
  50. package/dist/fetchSurvey/utils/extractSurveyLanguages.d.ts.map +1 -0
  51. package/dist/fetchSurvey/utils/extractSurveyLanguages.js +61 -0
  52. package/dist/fetchSurvey/utils/extractSurveyLanguages.js.map +1 -0
  53. package/dist/fetchSurvey/utils/index.d.ts +6 -0
  54. package/dist/fetchSurvey/utils/index.d.ts.map +1 -0
  55. package/dist/fetchSurvey/utils/index.js +22 -0
  56. package/dist/fetchSurvey/utils/index.js.map +1 -0
  57. package/dist/fetchSurvey/utils/mapSurveyPages.d.ts +12 -0
  58. package/dist/fetchSurvey/utils/mapSurveyPages.d.ts.map +1 -0
  59. package/dist/fetchSurvey/utils/mapSurveyPages.js +30 -0
  60. package/dist/fetchSurvey/utils/mapSurveyPages.js.map +1 -0
  61. package/dist/fetchSurvey/utils/mappers/index.d.ts +3 -0
  62. package/dist/fetchSurvey/utils/mappers/index.d.ts.map +1 -0
  63. package/dist/fetchSurvey/utils/mappers/index.js +19 -0
  64. package/dist/fetchSurvey/utils/mappers/index.js.map +1 -0
  65. package/dist/fetchSurvey/utils/mappers/questionMapper.d.ts +42 -0
  66. package/dist/fetchSurvey/utils/mappers/questionMapper.d.ts.map +1 -0
  67. package/dist/fetchSurvey/utils/mappers/questionMapper.js +183 -0
  68. package/dist/fetchSurvey/utils/mappers/questionMapper.js.map +1 -0
  69. package/dist/fetchSurvey/utils/mappers/surveyMapper.d.ts +36 -0
  70. package/dist/fetchSurvey/utils/mappers/surveyMapper.d.ts.map +1 -0
  71. package/dist/fetchSurvey/utils/mappers/surveyMapper.js +65 -0
  72. package/dist/fetchSurvey/utils/mappers/surveyMapper.js.map +1 -0
  73. package/dist/fetchSurvey/utils/url.d.ts +14 -0
  74. package/dist/fetchSurvey/utils/url.d.ts.map +1 -0
  75. package/dist/fetchSurvey/utils/url.js +23 -0
  76. package/dist/fetchSurvey/utils/url.js.map +1 -0
  77. package/dist/fetchSurvey/utils/validation.d.ts +15 -0
  78. package/dist/fetchSurvey/utils/validation.d.ts.map +1 -0
  79. package/dist/fetchSurvey/utils/validation.js +36 -0
  80. package/dist/fetchSurvey/utils/validation.js.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +6 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/logger/logger.d.ts +26 -0
  86. package/dist/logger/logger.d.ts.map +1 -0
  87. package/dist/logger/logger.js +57 -0
  88. package/dist/logger/logger.js.map +1 -0
  89. package/dist/queryClient.d.ts +3 -0
  90. package/dist/queryClient.d.ts.map +1 -0
  91. package/dist/queryClient.js +64 -0
  92. package/dist/queryClient.js.map +1 -0
  93. package/dist/submitSurvey/logger/resolutionLogger.d.ts +4 -0
  94. package/dist/submitSurvey/logger/resolutionLogger.d.ts.map +1 -0
  95. package/dist/submitSurvey/logger/resolutionLogger.js +16 -0
  96. package/dist/submitSurvey/logger/resolutionLogger.js.map +1 -0
  97. package/dist/submitSurvey/logger/submitLogger.d.ts +7 -0
  98. package/dist/submitSurvey/logger/submitLogger.d.ts.map +1 -0
  99. package/dist/submitSurvey/logger/submitLogger.js +43 -0
  100. package/dist/submitSurvey/logger/submitLogger.js.map +1 -0
  101. package/dist/submitSurvey/telemetry/submitTelemetry.d.ts +3 -0
  102. package/dist/submitSurvey/telemetry/submitTelemetry.d.ts.map +1 -0
  103. package/dist/submitSurvey/telemetry/submitTelemetry.js +30 -0
  104. package/dist/submitSurvey/telemetry/submitTelemetry.js.map +1 -0
  105. package/dist/submitSurvey/types.d.ts +37 -0
  106. package/dist/submitSurvey/types.d.ts.map +1 -0
  107. package/dist/submitSurvey/types.js +3 -0
  108. package/dist/submitSurvey/types.js.map +1 -0
  109. package/dist/submitSurvey/useSubmitResponse.d.ts +18 -0
  110. package/dist/submitSurvey/useSubmitResponse.d.ts.map +1 -0
  111. package/dist/submitSurvey/useSubmitResponse.js +101 -0
  112. package/dist/submitSurvey/useSubmitResponse.js.map +1 -0
  113. package/dist/submitSurvey/useSurveyPagination.d.ts +0 -0
  114. package/dist/submitSurvey/useSurveyPagination.js +1 -0
  115. package/dist/submitSurvey/utils/constants.d.ts +5 -0
  116. package/dist/submitSurvey/utils/constants.d.ts.map +1 -0
  117. package/dist/submitSurvey/utils/constants.js +8 -0
  118. package/dist/submitSurvey/utils/constants.js.map +1 -0
  119. package/dist/submitSurvey/utils/formatters.d.ts +12 -0
  120. package/dist/submitSurvey/utils/formatters.d.ts.map +1 -0
  121. package/dist/submitSurvey/utils/formatters.js +29 -0
  122. package/dist/submitSurvey/utils/formatters.js.map +1 -0
  123. package/dist/submitSurvey/utils/index.d.ts +5 -0
  124. package/dist/submitSurvey/utils/index.d.ts.map +1 -0
  125. package/dist/submitSurvey/utils/index.js +21 -0
  126. package/dist/submitSurvey/utils/index.js.map +1 -0
  127. package/dist/submitSurvey/utils/url.d.ts +9 -0
  128. package/dist/submitSurvey/utils/url.d.ts.map +1 -0
  129. package/dist/submitSurvey/utils/url.js +20 -0
  130. package/dist/submitSurvey/utils/url.js.map +1 -0
  131. package/dist/submitSurvey/utils/validation.d.ts +20 -0
  132. package/dist/submitSurvey/utils/validation.d.ts.map +1 -0
  133. package/dist/submitSurvey/utils/validation.js +43 -0
  134. package/dist/submitSurvey/utils/validation.js.map +1 -0
  135. package/dist/surveyPagination/actions/index.d.ts +5 -0
  136. package/dist/surveyPagination/actions/index.d.ts.map +1 -0
  137. package/dist/surveyPagination/actions/index.js +12 -0
  138. package/dist/surveyPagination/actions/index.js.map +1 -0
  139. package/dist/surveyPagination/actions/useOnBack.d.ts +3 -0
  140. package/dist/surveyPagination/actions/useOnBack.d.ts.map +1 -0
  141. package/dist/surveyPagination/actions/useOnBack.js +33 -0
  142. package/dist/surveyPagination/actions/useOnBack.js.map +1 -0
  143. package/dist/surveyPagination/actions/useOnChange.d.ts +3 -0
  144. package/dist/surveyPagination/actions/useOnChange.d.ts.map +1 -0
  145. package/dist/surveyPagination/actions/useOnChange.js +14 -0
  146. package/dist/surveyPagination/actions/useOnChange.js.map +1 -0
  147. package/dist/surveyPagination/actions/useOnNext.d.ts +3 -0
  148. package/dist/surveyPagination/actions/useOnNext.d.ts.map +1 -0
  149. package/dist/surveyPagination/actions/useOnNext.js +82 -0
  150. package/dist/surveyPagination/actions/useOnNext.js.map +1 -0
  151. package/dist/surveyPagination/actions/useOnSubmit.d.ts +3 -0
  152. package/dist/surveyPagination/actions/useOnSubmit.d.ts.map +1 -0
  153. package/dist/surveyPagination/actions/useOnSubmit.js +102 -0
  154. package/dist/surveyPagination/actions/useOnSubmit.js.map +1 -0
  155. package/dist/surveyPagination/dispatchers/index.d.ts +4 -0
  156. package/dist/surveyPagination/dispatchers/index.d.ts.map +1 -0
  157. package/dist/surveyPagination/dispatchers/index.js +10 -0
  158. package/dist/surveyPagination/dispatchers/index.js.map +1 -0
  159. package/dist/surveyPagination/dispatchers/useCheckBacktrackChanges.d.ts +6 -0
  160. package/dist/surveyPagination/dispatchers/useCheckBacktrackChanges.d.ts.map +1 -0
  161. package/dist/surveyPagination/dispatchers/useCheckBacktrackChanges.js +28 -0
  162. package/dist/surveyPagination/dispatchers/useCheckBacktrackChanges.js.map +1 -0
  163. package/dist/surveyPagination/dispatchers/useTrackOptionalSkips.d.ts +4 -0
  164. package/dist/surveyPagination/dispatchers/useTrackOptionalSkips.d.ts.map +1 -0
  165. package/dist/surveyPagination/dispatchers/useTrackOptionalSkips.js +19 -0
  166. package/dist/surveyPagination/dispatchers/useTrackOptionalSkips.js.map +1 -0
  167. package/dist/surveyPagination/dispatchers/useTrackPageTime.d.ts +4 -0
  168. package/dist/surveyPagination/dispatchers/useTrackPageTime.d.ts.map +1 -0
  169. package/dist/surveyPagination/dispatchers/useTrackPageTime.js +12 -0
  170. package/dist/surveyPagination/dispatchers/useTrackPageTime.js.map +1 -0
  171. package/dist/surveyPagination/effects/index.d.ts +3 -0
  172. package/dist/surveyPagination/effects/index.d.ts.map +1 -0
  173. package/dist/surveyPagination/effects/index.js +8 -0
  174. package/dist/surveyPagination/effects/index.js.map +1 -0
  175. package/dist/surveyPagination/effects/useResetPageStartTime.d.ts +3 -0
  176. package/dist/surveyPagination/effects/useResetPageStartTime.d.ts.map +1 -0
  177. package/dist/surveyPagination/effects/useResetPageStartTime.js +11 -0
  178. package/dist/surveyPagination/effects/useResetPageStartTime.js.map +1 -0
  179. package/dist/surveyPagination/effects/useSessionUnmountSummary.d.ts +2 -0
  180. package/dist/surveyPagination/effects/useSessionUnmountSummary.d.ts.map +1 -0
  181. package/dist/surveyPagination/effects/useSessionUnmountSummary.js +32 -0
  182. package/dist/surveyPagination/effects/useSessionUnmountSummary.js.map +1 -0
  183. package/dist/surveyPagination/effects/useTrackMaxVisitedPage.d.ts +3 -0
  184. package/dist/surveyPagination/effects/useTrackMaxVisitedPage.d.ts.map +1 -0
  185. package/dist/surveyPagination/effects/useTrackMaxVisitedPage.js +13 -0
  186. package/dist/surveyPagination/effects/useTrackMaxVisitedPage.js.map +1 -0
  187. package/dist/surveyPagination/effects/useUpdateAnalyticsContext.d.ts +2 -0
  188. package/dist/surveyPagination/effects/useUpdateAnalyticsContext.d.ts.map +1 -0
  189. package/dist/surveyPagination/effects/useUpdateAnalyticsContext.js +15 -0
  190. package/dist/surveyPagination/effects/useUpdateAnalyticsContext.js.map +1 -0
  191. package/dist/surveyPagination/logger/navigationLogger.d.ts +7 -0
  192. package/dist/surveyPagination/logger/navigationLogger.d.ts.map +1 -0
  193. package/dist/surveyPagination/logger/navigationLogger.js +28 -0
  194. package/dist/surveyPagination/logger/navigationLogger.js.map +1 -0
  195. package/dist/surveyPagination/logger/validationLogger.d.ts +5 -0
  196. package/dist/surveyPagination/logger/validationLogger.d.ts.map +1 -0
  197. package/dist/surveyPagination/logger/validationLogger.js +20 -0
  198. package/dist/surveyPagination/logger/validationLogger.js.map +1 -0
  199. package/dist/surveyPagination/telemetry/pageTelemetry.d.ts +3 -0
  200. package/dist/surveyPagination/telemetry/pageTelemetry.d.ts.map +1 -0
  201. package/dist/surveyPagination/telemetry/pageTelemetry.js +25 -0
  202. package/dist/surveyPagination/telemetry/pageTelemetry.js.map +1 -0
  203. package/dist/surveyPagination/telemetry/sessionTelemetry.d.ts +8 -0
  204. package/dist/surveyPagination/telemetry/sessionTelemetry.d.ts.map +1 -0
  205. package/dist/surveyPagination/telemetry/sessionTelemetry.js +43 -0
  206. package/dist/surveyPagination/telemetry/sessionTelemetry.js.map +1 -0
  207. package/dist/surveyPagination/types.d.ts +43 -0
  208. package/dist/surveyPagination/types.d.ts.map +1 -0
  209. package/dist/surveyPagination/types.js +3 -0
  210. package/dist/surveyPagination/types.js.map +1 -0
  211. package/dist/surveyPagination/useSurveyPagination.d.ts +28 -0
  212. package/dist/surveyPagination/useSurveyPagination.d.ts.map +1 -0
  213. package/dist/surveyPagination/useSurveyPagination.js +93 -0
  214. package/dist/surveyPagination/useSurveyPagination.js.map +1 -0
  215. package/dist/surveyPagination/utils/index.d.ts +3 -0
  216. package/dist/surveyPagination/utils/index.d.ts.map +1 -0
  217. package/dist/surveyPagination/utils/index.js +19 -0
  218. package/dist/surveyPagination/utils/index.js.map +1 -0
  219. package/dist/surveyPagination/utils/scroll.d.ts +25 -0
  220. package/dist/surveyPagination/utils/scroll.d.ts.map +1 -0
  221. package/dist/surveyPagination/utils/scroll.js +67 -0
  222. package/dist/surveyPagination/utils/scroll.js.map +1 -0
  223. package/dist/surveyPagination/utils/validation.d.ts +24 -0
  224. package/dist/surveyPagination/utils/validation.d.ts.map +1 -0
  225. package/dist/surveyPagination/utils/validation.js +53 -0
  226. package/dist/surveyPagination/utils/validation.js.map +1 -0
  227. package/dist/surveyProgress/useSurveyProgress.d.ts +21 -0
  228. package/dist/surveyProgress/useSurveyProgress.d.ts.map +1 -0
  229. package/dist/surveyProgress/useSurveyProgress.js +34 -0
  230. package/dist/surveyProgress/useSurveyProgress.js.map +1 -0
  231. package/dist/surveyProgress/utils/index.d.ts +2 -0
  232. package/dist/surveyProgress/utils/index.d.ts.map +1 -0
  233. package/dist/surveyProgress/utils/index.js +18 -0
  234. package/dist/surveyProgress/utils/index.js.map +1 -0
  235. package/dist/surveyProgress/utils/progress.d.ts +27 -0
  236. package/dist/surveyProgress/utils/progress.d.ts.map +1 -0
  237. package/dist/surveyProgress/utils/progress.js +60 -0
  238. package/dist/surveyProgress/utils/progress.js.map +1 -0
  239. package/dist/surveySDK/constants.d.ts +10 -0
  240. package/dist/surveySDK/constants.d.ts.map +1 -0
  241. package/dist/surveySDK/constants.js +14 -0
  242. package/dist/surveySDK/constants.js.map +1 -0
  243. package/dist/surveySDK/types.d.ts +28 -0
  244. package/dist/surveySDK/types.d.ts.map +1 -0
  245. package/dist/surveySDK/types.js +3 -0
  246. package/dist/surveySDK/types.js.map +1 -0
  247. package/dist/surveySDK/useSurveySDK.d.ts +32 -0
  248. package/dist/surveySDK/useSurveySDK.d.ts.map +1 -0
  249. package/dist/surveySDK/useSurveySDK.js +85 -0
  250. package/dist/surveySDK/useSurveySDK.js.map +1 -0
  251. package/dist/useFetchSurvey.d.ts +73 -0
  252. package/dist/useFetchSurvey.d.ts.map +1 -0
  253. package/dist/useFetchSurvey.js +202 -0
  254. package/dist/useFetchSurvey.js.map +1 -0
  255. package/dist/useSubmitResponse.d.ts +40 -0
  256. package/dist/useSubmitResponse.d.ts.map +1 -0
  257. package/dist/useSubmitResponse.js +146 -0
  258. package/dist/useSubmitResponse.js.map +1 -0
  259. package/package.json +24 -0
  260. package/src/analytics/analyticsTracker.ts +48 -0
  261. package/src/analytics/types.ts +80 -0
  262. package/src/cli/deploy.ts +205 -0
  263. package/src/cli/index.ts +33 -0
  264. package/src/fetchSurvey/internalTypes.ts +80 -0
  265. package/src/fetchSurvey/logger/fetchLogger.ts +34 -0
  266. package/src/fetchSurvey/logger/mapperLogger.ts +13 -0
  267. package/src/fetchSurvey/telemetry/fetchTelemetry.ts +26 -0
  268. package/src/fetchSurvey/types.ts +82 -0
  269. package/src/fetchSurvey/useFetchSurvey.ts +126 -0
  270. package/src/fetchSurvey/utils/constants.ts +11 -0
  271. package/src/fetchSurvey/utils/extractSurveyLanguages.ts +63 -0
  272. package/src/fetchSurvey/utils/index.ts +7 -0
  273. package/src/fetchSurvey/utils/mapSurveyPages.ts +35 -0
  274. package/src/fetchSurvey/utils/mappers/index.ts +2 -0
  275. package/src/fetchSurvey/utils/mappers/questionMapper.ts +213 -0
  276. package/src/fetchSurvey/utils/mappers/surveyMapper.ts +69 -0
  277. package/src/fetchSurvey/utils/url.ts +21 -0
  278. package/src/index.ts +6 -0
  279. package/src/logger/logger.ts +71 -0
  280. package/src/queryClient.ts +67 -0
  281. package/src/submitSurvey/logger/resolutionLogger.ts +13 -0
  282. package/src/submitSurvey/logger/submitLogger.ts +51 -0
  283. package/src/submitSurvey/telemetry/submitTelemetry.ts +33 -0
  284. package/src/submitSurvey/types.ts +51 -0
  285. package/src/submitSurvey/useSubmitResponse.ts +111 -0
  286. package/src/submitSurvey/utils/constants.ts +4 -0
  287. package/src/submitSurvey/utils/formatters.ts +33 -0
  288. package/src/submitSurvey/utils/index.ts +4 -0
  289. package/src/submitSurvey/utils/url.ts +17 -0
  290. package/src/submitSurvey/utils/validation.ts +48 -0
  291. package/src/surveyPagination/actions/index.ts +4 -0
  292. package/src/surveyPagination/actions/useOnBack.ts +37 -0
  293. package/src/surveyPagination/actions/useOnChange.ts +16 -0
  294. package/src/surveyPagination/actions/useOnNext.ts +99 -0
  295. package/src/surveyPagination/actions/useOnSubmit.ts +137 -0
  296. package/src/surveyPagination/dispatchers/index.ts +3 -0
  297. package/src/surveyPagination/dispatchers/useCheckBacktrackChanges.ts +35 -0
  298. package/src/surveyPagination/dispatchers/useTrackOptionalSkips.ts +21 -0
  299. package/src/surveyPagination/dispatchers/useTrackPageTime.ts +13 -0
  300. package/src/surveyPagination/effects/index.ts +2 -0
  301. package/src/surveyPagination/effects/useResetPageStartTime.ts +10 -0
  302. package/src/surveyPagination/effects/useTrackMaxVisitedPage.ts +12 -0
  303. package/src/surveyPagination/logger/navigationLogger.ts +25 -0
  304. package/src/surveyPagination/logger/validationLogger.ts +17 -0
  305. package/src/surveyPagination/telemetry/pageTelemetry.ts +22 -0
  306. package/src/surveyPagination/telemetry/sessionTelemetry.ts +55 -0
  307. package/src/surveyPagination/types.ts +42 -0
  308. package/src/surveyPagination/useSurveyPagination.ts +109 -0
  309. package/src/surveyPagination/utils/index.ts +2 -0
  310. package/src/surveyPagination/utils/scroll.ts +62 -0
  311. package/src/surveyPagination/utils/validation.ts +62 -0
  312. package/src/surveyProgress/useSurveyProgress.ts +42 -0
  313. package/src/surveyProgress/utils/index.ts +1 -0
  314. package/src/surveyProgress/utils/progress.ts +61 -0
  315. package/src/surveySDK/constants.ts +9 -0
  316. package/src/surveySDK/types.ts +22 -0
  317. package/src/surveySDK/useSurveySDK.ts +109 -0
  318. package/tsconfig.json +13 -0
@@ -0,0 +1,42 @@
1
+ import { useState, useEffect, useMemo } from 'react';
2
+ import type { Survey } from '../fetchSurvey/types';
3
+ import type { SubmitAnswers } from '../submitSurvey/types';
4
+ import { countTotalQuestions, countAnsweredQuestions, calculateProgressPercentage } from './utils';
5
+
6
+ export interface UseSurveyProgressProps {
7
+ survey?: Survey | null;
8
+ values?: SubmitAnswers | null;
9
+ currentPageIndex?: number;
10
+ }
11
+
12
+ /**
13
+ * A custom React hook that tracks progress within a survey.
14
+ * Computes completed question counts, total questions, and percentage completion.
15
+ *
16
+ * @param props Configurations holding active survey definition and answer values.
17
+ * @returns Real-time calculated progress tracking indices.
18
+ */
19
+ export function useSurveyProgress({ survey, values, currentPageIndex = 0 }: UseSurveyProgressProps) {
20
+ const [maxVisitedPageIndex, setMaxVisitedPageIndex] = useState(0);
21
+
22
+ // Track the highest page index reached so far
23
+ useEffect(() => {
24
+ if (currentPageIndex > maxVisitedPageIndex) {
25
+ setMaxVisitedPageIndex(currentPageIndex);
26
+ }
27
+ }, [currentPageIndex, maxVisitedPageIndex]);
28
+
29
+ return useMemo(() => {
30
+ const totalQuestionsCount = countTotalQuestions(survey);
31
+ const answeredQuestionsCount = countAnsweredQuestions(survey, values, maxVisitedPageIndex);
32
+ const progressPercentage = calculateProgressPercentage(answeredQuestionsCount, totalQuestionsCount);
33
+ const isComplete = totalQuestionsCount > 0 && answeredQuestionsCount === totalQuestionsCount;
34
+
35
+ return {
36
+ totalQuestionsCount,
37
+ answeredQuestionsCount,
38
+ progressPercentage,
39
+ isComplete,
40
+ };
41
+ }, [survey, values, maxVisitedPageIndex]);
42
+ }
@@ -0,0 +1 @@
1
+ export * from './progress';
@@ -0,0 +1,61 @@
1
+ import type { Survey } from '../../fetchSurvey/types';
2
+ import type { SubmitAnswers } from '../../submitSurvey/types';
3
+
4
+ /**
5
+ * Counts the total number of questions present across all pages of the survey.
6
+ *
7
+ * @param survey Fully mapped survey data structure.
8
+ * @returns Total number of questions.
9
+ */
10
+ export function countTotalQuestions(survey?: Survey | null): number {
11
+ if (!survey || !Array.isArray(survey.pages)) return 0;
12
+ return survey.pages.reduce((acc, page) => acc + (page.questions?.length ?? 0), 0);
13
+ }
14
+
15
+ /**
16
+ * Counts the number of questions that have been answered by the user.
17
+ * Only questions that exist in the active survey configuration are counted.
18
+ *
19
+ * @param survey Fully mapped survey data structure.
20
+ * @param values Values map containing active user answers.
21
+ * @returns Count of completed questions.
22
+ */
23
+ export function countAnsweredQuestions(
24
+ survey?: Survey | null,
25
+ values?: SubmitAnswers | null,
26
+ maxVisitedPageIndex: number = 0
27
+ ): number {
28
+ if (!survey || !values || !Array.isArray(survey.pages)) return 0;
29
+
30
+ let answeredCount = 0;
31
+ survey.pages.forEach((page, index) => {
32
+ if (Array.isArray(page.questions)) {
33
+ if (index < maxVisitedPageIndex) {
34
+ // All questions on past pages count as completed (required or optional)
35
+ answeredCount += page.questions.length;
36
+ } else {
37
+ // Questions on current or future pages only count if they have been explicitly answered
38
+ page.questions.forEach(question => {
39
+ const value = values[question.id];
40
+ if (value !== undefined && value !== null && value !== '') {
41
+ answeredCount++;
42
+ }
43
+ });
44
+ }
45
+ }
46
+ });
47
+
48
+ return answeredCount;
49
+ }
50
+
51
+ /**
52
+ * Computes progress percentage as an integer between 0 and 100.
53
+ *
54
+ * @param answered Count of answered questions.
55
+ * @param total Count of total questions.
56
+ * @returns Progress percentage rounded to the nearest integer.
57
+ */
58
+ export function calculateProgressPercentage(answered: number, total: number): number {
59
+ if (total <= 0) return 0;
60
+ return Math.min(100, Math.max(0, Math.round((answered / total) * 100)));
61
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Enum representing all action types supported by the survey SDK dispatcher.
3
+ */
4
+ export enum ACTIONS {
5
+ NEXT = 'NEXT',
6
+ PREVIOUS = 'PREVIOUS',
7
+ SUBMIT = 'SUBMIT',
8
+ CHANGE = 'CHANGE',
9
+ }
@@ -0,0 +1,22 @@
1
+ import { ACTIONS } from './constants';
2
+
3
+ /**
4
+ * Union type representing all dispatch actions for the survey SDK.
5
+ */
6
+ export type SurveyAction =
7
+ | { type: ACTIONS.NEXT | 'NEXT' }
8
+ | { type: ACTIONS.PREVIOUS | 'PREVIOUS' }
9
+ | { type: ACTIONS.SUBMIT | 'SUBMIT' }
10
+ | { type: ACTIONS.CHANGE | 'CHANGE'; payload: { questionId: string; value: string | number } };
11
+
12
+ /**
13
+ * Configuration settings for useSurveySDK hook behavior and layout parameters.
14
+ */
15
+ export type UseSurveySDKProps = {
16
+ options?: {
17
+ language?: string;
18
+ placeholders?: Record<string, string>;
19
+ debug?: boolean;
20
+ };
21
+ };
22
+
@@ -0,0 +1,109 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useFetchSurvey } from '../fetchSurvey/useFetchSurvey';
3
+ import { useSurveyPagination } from '../surveyPagination/useSurveyPagination';
4
+ // remove unused imports eventhough they are used in the code
5
+ import type { Survey, SurveySession } from '../fetchSurvey/useFetchSurvey';
6
+ import type { SubmitAnswers, SubmitResult } from '../submitSurvey/types';
7
+ import { sdkLogger } from '../logger/logger';
8
+ import { ACTIONS } from './constants';
9
+ import type { SurveyAction, UseSurveySDKProps } from './types';
10
+
11
+ /**
12
+ * The main entry-point custom React hook for the survey SDK.
13
+ * Handles fetching survey configurations, active session state, validation,
14
+ * page pagination, response submission, and user progress tracking.
15
+ *
16
+ * @param props Configuration settings for hook behavior and layout parameters.
17
+ * @returns Unified state structures, submission indicators, and action triggers.
18
+ */
19
+ export function useSurveySDK({ options }: UseSurveySDKProps = {}) {
20
+ // Synchronize debug setting
21
+ sdkLogger.setEnabled(options?.debug ?? false);
22
+
23
+ // 1. Fetch survey layout
24
+ const { survey, session, fetching, fetchError } = useFetchSurvey({
25
+ language: options?.language,
26
+ placeholders: options?.placeholders,
27
+ });
28
+
29
+ // 2. Control navigation, validation, and submission
30
+ const {
31
+ currentPageIndex,
32
+ values,
33
+ validationErrors,
34
+ currentQuestions,
35
+ onBack,
36
+ onNext,
37
+ onSubmit,
38
+ onChange,
39
+ progressPercentage,
40
+ submitting,
41
+ submitError,
42
+ submitData,
43
+ } = useSurveyPagination({ survey, session });
44
+
45
+ // 3. Define the dispatcher
46
+ const onAction = useCallback(
47
+ (action: SurveyAction) => {
48
+ if (action.type === ACTIONS.NEXT && survey && currentPageIndex === survey.pages.length - 1) {
49
+ action = { type: ACTIONS.SUBMIT };
50
+ }
51
+
52
+ sdkLogger.info(`Action dispatched: ${action.type}`, action);
53
+ try {
54
+ switch (action.type) {
55
+ // constants and types
56
+ case ACTIONS.NEXT:
57
+ onNext();
58
+ break;
59
+ case ACTIONS.PREVIOUS:
60
+ onBack();
61
+ break;
62
+ case ACTIONS.SUBMIT:
63
+ onSubmit();
64
+ break;
65
+ case ACTIONS.CHANGE:
66
+ onChange(action.payload.questionId, action.payload.value);
67
+ break;
68
+ default:
69
+ break;
70
+ }
71
+ } catch (err) {
72
+ sdkLogger.error(`Error executing action: ${action.type}`, err);
73
+ }
74
+ },
75
+ [onNext, onBack, onSubmit, onChange, survey, currentPageIndex]
76
+ );
77
+
78
+ // surveyQueryResults
79
+ // submitSurveyResults
80
+ // state
81
+ // onAction
82
+ return {
83
+ // 1. Survey Query Namespace
84
+ surveyQueryResults: {
85
+ data: survey,
86
+ error: fetchError,
87
+ isLoading: fetching,
88
+ },
89
+
90
+ // 2. Response Submission Namespace
91
+ submitSurveyResults: {
92
+ data: submitData,
93
+ error: submitError,
94
+ isLoading: submitting,
95
+ },
96
+
97
+ // 3. Client-Interactive State Namespace
98
+ state: {
99
+ currentPageIndex,
100
+ currentQuestions,
101
+ values,
102
+ validationErrors,
103
+ progressPercentage,
104
+ },
105
+
106
+ // 4. Action Dispatcher
107
+ onAction,
108
+ };
109
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src",
6
+ "module": "CommonJS",
7
+ "moduleResolution": "Node",
8
+ "jsx": "react-jsx",
9
+ "lib": ["ES2022", "DOM"]
10
+ },
11
+ "include": ["src/**/*"],
12
+ "exclude": ["node_modules", "dist"]
13
+ }