@oneblink/apps-react 9.0.0-beta.2 → 9.0.0-beta.4

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 (368) hide show
  1. package/dist/OneBlinkForm.d.ts +6 -10
  2. package/dist/OneBlinkForm.js +0 -4
  3. package/dist/OneBlinkForm.js.map +1 -1
  4. package/dist/OneBlinkFormBase.d.ts +1 -1
  5. package/dist/OneBlinkFormBase.js +2 -1
  6. package/dist/OneBlinkFormBase.js.map +1 -1
  7. package/dist/OneBlinkReadOnlyForm.d.ts +1 -1
  8. package/dist/OneBlinkReadOnlyForm.js +1 -1
  9. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  10. package/dist/PaymentReceipt.d.ts +1 -1
  11. package/dist/PaymentReceipt.js +1 -1
  12. package/dist/PaymentReceipt.js.map +1 -1
  13. package/dist/apps/Sentry.d.ts +7 -0
  14. package/dist/apps/Sentry.js +16 -0
  15. package/dist/apps/Sentry.js.map +1 -0
  16. package/dist/apps/approvals-service.d.ts +390 -0
  17. package/dist/apps/approvals-service.js +987 -0
  18. package/dist/apps/approvals-service.js.map +1 -0
  19. package/dist/apps/attachments-service.d.ts +49 -0
  20. package/dist/apps/attachments-service.js +134 -0
  21. package/dist/apps/attachments-service.js.map +1 -0
  22. package/dist/apps/auth-service.d.ts +114 -0
  23. package/dist/apps/auth-service.js +194 -0
  24. package/dist/apps/auth-service.js.map +1 -0
  25. package/dist/apps/auto-save-service.d.ts +82 -0
  26. package/dist/apps/auto-save-service.js +105 -0
  27. package/dist/apps/auto-save-service.js.map +1 -0
  28. package/dist/apps/draft-service.d.ts +148 -0
  29. package/dist/apps/draft-service.js +583 -0
  30. package/dist/apps/draft-service.js.map +1 -0
  31. package/dist/apps/form-service.d.ts +204 -0
  32. package/dist/apps/form-service.js +718 -0
  33. package/dist/apps/form-service.js.map +1 -0
  34. package/dist/apps/form-store-service.d.ts +141 -0
  35. package/dist/apps/form-store-service.js +114 -0
  36. package/dist/apps/form-store-service.js.map +1 -0
  37. package/dist/apps/forms-app-environment-service.d.ts +19 -0
  38. package/dist/apps/forms-app-environment-service.js +55 -0
  39. package/dist/apps/forms-app-environment-service.js.map +1 -0
  40. package/dist/apps/forms-app-service.d.ts +18 -0
  41. package/dist/apps/forms-app-service.js +53 -0
  42. package/dist/apps/forms-app-service.js.map +1 -0
  43. package/dist/apps/index.d.ts +252 -0
  44. package/dist/apps/index.js +254 -0
  45. package/dist/apps/index.js.map +1 -0
  46. package/dist/apps/job-service.d.ts +20 -0
  47. package/dist/apps/job-service.js +95 -0
  48. package/dist/apps/job-service.js.map +1 -0
  49. package/dist/apps/localisation-service.d.ts +207 -0
  50. package/dist/apps/localisation-service.js +321 -0
  51. package/dist/apps/localisation-service.js.map +1 -0
  52. package/dist/apps/notification-service.d.ts +83 -0
  53. package/dist/apps/notification-service.js +315 -0
  54. package/dist/apps/notification-service.js.map +1 -0
  55. package/dist/apps/offline-service.d.ts +18 -0
  56. package/dist/apps/offline-service.js +25 -0
  57. package/dist/apps/offline-service.js.map +1 -0
  58. package/dist/apps/payment-service.d.ts +110 -0
  59. package/dist/apps/payment-service.js +182 -0
  60. package/dist/apps/payment-service.js.map +1 -0
  61. package/dist/apps/prefill-service.d.ts +14 -0
  62. package/dist/apps/prefill-service.js +19 -0
  63. package/dist/apps/prefill-service.js.map +1 -0
  64. package/dist/apps/scheduled-tasks-service.d.ts +127 -0
  65. package/dist/apps/scheduled-tasks-service.js +240 -0
  66. package/dist/apps/scheduled-tasks-service.js.map +1 -0
  67. package/dist/apps/scheduling-service.d.ts +101 -0
  68. package/dist/apps/scheduling-service.js +171 -0
  69. package/dist/apps/scheduling-service.js.map +1 -0
  70. package/dist/apps/services/AWSCognitoClient.d.ts +55 -0
  71. package/dist/apps/services/AWSCognitoClient.js +436 -0
  72. package/dist/apps/services/AWSCognitoClient.js.map +1 -0
  73. package/dist/apps/services/api/drafts.d.ts +7 -0
  74. package/dist/apps/services/api/drafts.js +236 -0
  75. package/dist/apps/services/api/drafts.js.map +1 -0
  76. package/dist/apps/services/api/notifications.d.ts +3 -0
  77. package/dist/apps/services/api/notifications.js +60 -0
  78. package/dist/apps/services/api/notifications.js.map +1 -0
  79. package/dist/apps/services/api/payment.d.ts +23 -0
  80. package/dist/apps/services/api/payment.js +235 -0
  81. package/dist/apps/services/api/payment.js.map +1 -0
  82. package/dist/apps/services/api/post-submission-attachment-urls.d.ts +7 -0
  83. package/dist/apps/services/api/post-submission-attachment-urls.js +19 -0
  84. package/dist/apps/services/api/post-submission-attachment-urls.js.map +1 -0
  85. package/dist/apps/services/api/prefill.d.ts +1 -0
  86. package/dist/apps/services/api/prefill.js +70 -0
  87. package/dist/apps/services/api/prefill.js.map +1 -0
  88. package/dist/apps/services/api/receipt-id.d.ts +2 -0
  89. package/dist/apps/services/api/receipt-id.js +54 -0
  90. package/dist/apps/services/api/receipt-id.js.map +1 -0
  91. package/dist/apps/services/api/scheduling.d.ts +38 -0
  92. package/dist/apps/services/api/scheduling.js +142 -0
  93. package/dist/apps/services/api/scheduling.js.map +1 -0
  94. package/dist/apps/services/api/submissions.d.ts +18 -0
  95. package/dist/apps/services/api/submissions.js +166 -0
  96. package/dist/apps/services/api/submissions.js.map +1 -0
  97. package/dist/apps/services/cognito.d.ts +302 -0
  98. package/dist/apps/services/cognito.js +441 -0
  99. package/dist/apps/services/cognito.js.map +1 -0
  100. package/dist/apps/services/draft-data-store.d.ts +16 -0
  101. package/dist/apps/services/draft-data-store.js +115 -0
  102. package/dist/apps/services/draft-data-store.js.map +1 -0
  103. package/dist/apps/services/errors/oneBlinkAppsError.d.ts +35 -0
  104. package/dist/apps/services/errors/oneBlinkAppsError.js +32 -0
  105. package/dist/apps/services/errors/oneBlinkAppsError.js.map +1 -0
  106. package/dist/apps/services/external-id-generation.d.ts +4 -0
  107. package/dist/apps/services/external-id-generation.js +59 -0
  108. package/dist/apps/services/external-id-generation.js.map +1 -0
  109. package/dist/apps/services/fetch.d.ts +12 -0
  110. package/dist/apps/services/fetch.js +95 -0
  111. package/dist/apps/services/fetch.js.map +1 -0
  112. package/dist/apps/services/forms-key.d.ts +51 -0
  113. package/dist/apps/services/forms-key.js +83 -0
  114. package/dist/apps/services/forms-key.js.map +1 -0
  115. package/dist/apps/services/generate-generic-error.d.ts +3 -0
  116. package/dist/apps/services/generate-generic-error.js +52 -0
  117. package/dist/apps/services/generate-generic-error.js.map +1 -0
  118. package/dist/apps/services/generateOneBlinkDownloader.d.ts +2 -0
  119. package/dist/apps/services/generateOneBlinkDownloader.js +11 -0
  120. package/dist/apps/services/generateOneBlinkDownloader.js.map +1 -0
  121. package/dist/apps/services/generateOneBlinkUploader.d.ts +2 -0
  122. package/dist/apps/services/generateOneBlinkUploader.js +11 -0
  123. package/dist/apps/services/generateOneBlinkUploader.js.map +1 -0
  124. package/dist/apps/services/getDeviceInformation.d.ts +17 -0
  125. package/dist/apps/services/getDeviceInformation.js +38 -0
  126. package/dist/apps/services/getDeviceInformation.js.map +1 -0
  127. package/dist/apps/services/integration-elements.d.ts +383 -0
  128. package/dist/apps/services/integration-elements.js +761 -0
  129. package/dist/apps/services/integration-elements.js.map +1 -0
  130. package/dist/apps/services/job-prefill.d.ts +40 -0
  131. package/dist/apps/services/job-prefill.js +78 -0
  132. package/dist/apps/services/job-prefill.js.map +1 -0
  133. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.d.ts +29 -0
  134. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js +59 -0
  135. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js.map +1 -0
  136. package/dist/apps/services/payment-providers/CPPayPaymentProvider.d.ts +27 -0
  137. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js +63 -0
  138. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js.map +1 -0
  139. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.d.ts +30 -0
  140. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js +116 -0
  141. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js.map +1 -0
  142. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.d.ts +49 -0
  143. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js +116 -0
  144. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js.map +1 -0
  145. package/dist/apps/services/payment-providers/receipt-items.d.ts +8 -0
  146. package/dist/apps/services/payment-providers/receipt-items.js +58 -0
  147. package/dist/apps/services/payment-providers/receipt-items.js.map +1 -0
  148. package/dist/apps/services/pending-queue.d.ts +150 -0
  149. package/dist/apps/services/pending-queue.js +316 -0
  150. package/dist/apps/services/pending-queue.js.map +1 -0
  151. package/dist/apps/services/prepareSubmissionData.d.ts +2 -0
  152. package/dist/apps/services/prepareSubmissionData.js +113 -0
  153. package/dist/apps/services/prepareSubmissionData.js.map +1 -0
  154. package/dist/apps/services/query-string.d.ts +1 -0
  155. package/dist/apps/services/query-string.js +16 -0
  156. package/dist/apps/services/query-string.js.map +1 -0
  157. package/dist/apps/services/replaceInjectablesWithSubmissionValues.d.ts +3 -0
  158. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js +18 -0
  159. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js.map +1 -0
  160. package/dist/apps/services/schedulingHandlers.d.ts +36 -0
  161. package/dist/apps/services/schedulingHandlers.js +76 -0
  162. package/dist/apps/services/schedulingHandlers.js.map +1 -0
  163. package/dist/apps/services/server-validation.d.ts +2 -0
  164. package/dist/apps/services/server-validation.js +36 -0
  165. package/dist/apps/services/server-validation.js.map +1 -0
  166. package/dist/apps/services/serverRequest.d.ts +5 -0
  167. package/dist/apps/services/serverRequest.js +24 -0
  168. package/dist/apps/services/serverRequest.js.map +1 -0
  169. package/dist/apps/services/submit.d.ts +19 -0
  170. package/dist/apps/services/submit.js +219 -0
  171. package/dist/apps/services/submit.js.map +1 -0
  172. package/dist/apps/services/uploadAttachment.d.ts +52 -0
  173. package/dist/apps/services/uploadAttachment.js +73 -0
  174. package/dist/apps/services/uploadAttachment.js.map +1 -0
  175. package/dist/apps/services/user-token.d.ts +27 -0
  176. package/dist/apps/services/user-token.js +33 -0
  177. package/dist/apps/services/user-token.js.map +1 -0
  178. package/dist/apps/services/utils.d.ts +12 -0
  179. package/dist/apps/services/utils.js +100 -0
  180. package/dist/apps/services/utils.js.map +1 -0
  181. package/dist/apps/submission-service.d.ts +226 -0
  182. package/dist/apps/submission-service.js +425 -0
  183. package/dist/apps/submission-service.js.map +1 -0
  184. package/dist/apps/tenants.d.ts +29 -0
  185. package/dist/apps/tenants.js +127 -0
  186. package/dist/apps/tenants.js.map +1 -0
  187. package/dist/apps/types/form.d.ts +4 -0
  188. package/dist/apps/types/form.js +2 -0
  189. package/dist/apps/types/form.js.map +1 -0
  190. package/dist/apps/types/payments.d.ts +45 -0
  191. package/dist/apps/types/payments.js +2 -0
  192. package/dist/apps/types/payments.js.map +1 -0
  193. package/dist/apps/types/scheduling.d.ts +5 -0
  194. package/dist/apps/types/scheduling.js +2 -0
  195. package/dist/apps/types/scheduling.js.map +1 -0
  196. package/dist/apps/types/submissions.d.ts +175 -0
  197. package/dist/apps/types/submissions.js +2 -0
  198. package/dist/apps/types/submissions.js.map +1 -0
  199. package/dist/components/ArcGISWebMap.js +1 -1
  200. package/dist/components/ArcGISWebMap.js.map +1 -1
  201. package/dist/components/CustomAccordion.d.ts +3 -3
  202. package/dist/components/Lists.d.ts +4 -1
  203. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js +1 -1
  204. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js.map +1 -1
  205. package/dist/components/calendar-bookings/CalendarBookingsForm.d.ts +1 -1
  206. package/dist/components/calendar-bookings/CalendarBookingsForm.js +1 -1
  207. package/dist/components/calendar-bookings/CalendarBookingsForm.js.map +1 -1
  208. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js +1 -1
  209. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js.map +1 -1
  210. package/dist/components/calendar-bookings/ErrorModal.d.ts +1 -1
  211. package/dist/components/calendar-bookings/ErrorModal.js +1 -1
  212. package/dist/components/calendar-bookings/ErrorModal.js.map +1 -1
  213. package/dist/components/downloadable-files/index.d.ts +1 -1
  214. package/dist/components/downloadable-files/index.js +1 -1
  215. package/dist/components/downloadable-files/index.js.map +1 -1
  216. package/dist/components/downloadable-files/resource-components.d.ts +1 -1
  217. package/dist/components/downloadable-files/resource-components.js +1 -1
  218. package/dist/components/downloadable-files/resource-components.js.map +1 -1
  219. package/dist/components/formStore/FormStoreTableProvider.js +1 -1
  220. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
  221. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
  222. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +1 -1
  223. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
  224. package/dist/components/formStore/OneBlinkFormStoreProvider.js +1 -1
  225. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
  226. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
  227. package/dist/components/formStore/display/ElementDisplay.js +2 -2
  228. package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
  229. package/dist/components/formStore/table/ColumnFilters.js +1 -1
  230. package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
  231. package/dist/components/formStore/table/FormElementTableCell.js +1 -1
  232. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
  233. package/dist/components/formStore/table/Pickers.js +1 -1
  234. package/dist/components/formStore/table/Pickers.js.map +1 -1
  235. package/dist/components/formStore/table/generateColumns.d.ts +1 -1
  236. package/dist/components/formStore/table/generateColumns.js.map +1 -1
  237. package/dist/components/formStore/table/useFormStoreTable.d.ts +1 -1
  238. package/dist/components/formStore/table/useFormStoreTable.js +1 -1
  239. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
  240. package/dist/components/formStore/useFormStoreTableContext.d.ts +2 -2
  241. package/dist/components/mfa/MfaDialog.d.ts +1 -1
  242. package/dist/components/mfa/MfaDialog.js +1 -1
  243. package/dist/components/mfa/MfaDialog.js.map +1 -1
  244. package/dist/components/mfa/MultiFactorAuthentication.d.ts +1 -1
  245. package/dist/components/payments/PaymentForm.js +1 -1
  246. package/dist/components/payments/PaymentForm.js.map +1 -1
  247. package/dist/components/payments/WestpacQuickStreamPaymentForm.d.ts +1 -1
  248. package/dist/components/payments/WestpacQuickStreamPaymentForm.js +1 -1
  249. package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
  250. package/dist/components/renderer/AutocompleteDropdown.js +1 -1
  251. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
  252. package/dist/components/renderer/LookupNotification.js +2 -2
  253. package/dist/components/renderer/LookupNotification.js.map +1 -1
  254. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js +1 -1
  255. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
  256. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
  257. package/dist/components/renderer/ReverseGeocode.js +1 -1
  258. package/dist/components/renderer/ReverseGeocode.js.map +1 -1
  259. package/dist/form-elements/FormElementAPINSWLiquorLicence.js +1 -1
  260. package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
  261. package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
  262. package/dist/form-elements/FormElementAutocomplete.js +1 -1
  263. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  264. package/dist/form-elements/FormElementBSB.js +1 -1
  265. package/dist/form-elements/FormElementBSB.js.map +1 -1
  266. package/dist/form-elements/FormElementCalculation.js +2 -2
  267. package/dist/form-elements/FormElementCalculation.js.map +1 -1
  268. package/dist/form-elements/FormElementCivicaNameRecord.js +1 -1
  269. package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
  270. package/dist/form-elements/FormElementCivicaStreetName.js +1 -1
  271. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  272. package/dist/form-elements/FormElementCompliance.d.ts +1 -1
  273. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  274. package/dist/form-elements/FormElementDate.js +1 -1
  275. package/dist/form-elements/FormElementDate.js.map +1 -1
  276. package/dist/form-elements/FormElementDateTime.js +1 -1
  277. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  278. package/dist/form-elements/FormElementFile.d.ts +1 -1
  279. package/dist/form-elements/FormElementFile.js.map +1 -1
  280. package/dist/form-elements/FormElementFiles.d.ts +1 -1
  281. package/dist/form-elements/FormElementFiles.js.map +1 -1
  282. package/dist/form-elements/FormElementGeoscapeAddress.js +1 -1
  283. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  284. package/dist/form-elements/FormElementGoogleAddress.js +1 -1
  285. package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
  286. package/dist/form-elements/FormElementLocation.js +1 -1
  287. package/dist/form-elements/FormElementLocation.js.map +1 -1
  288. package/dist/form-elements/FormElementNumber.js +1 -1
  289. package/dist/form-elements/FormElementNumber.js.map +1 -1
  290. package/dist/form-elements/FormElementPointAddress.js +1 -1
  291. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  292. package/dist/form-elements/FormElementPointAddressV3.js +1 -1
  293. package/dist/form-elements/FormElementPointAddressV3.js.map +1 -1
  294. package/dist/form-elements/FormElementPointCadastralParcel.js +1 -1
  295. package/dist/form-elements/FormElementPointCadastralParcel.js.map +1 -1
  296. package/dist/form-elements/FormElementSummary.js +1 -1
  297. package/dist/form-elements/FormElementSummary.js.map +1 -1
  298. package/dist/form-elements/FormElementTime.js +1 -1
  299. package/dist/form-elements/FormElementTime.js.map +1 -1
  300. package/dist/hooks/attachments/useAttachment.d.ts +1 -1
  301. package/dist/hooks/attachments/useAttachment.js +1 -1
  302. package/dist/hooks/attachments/useAttachment.js.map +1 -1
  303. package/dist/hooks/attachments/useAttachments.d.ts +1 -1
  304. package/dist/hooks/attachments/useAttachments.js.map +1 -1
  305. package/dist/hooks/useAuth.js +1 -1
  306. package/dist/hooks/useAuth.js.map +1 -1
  307. package/dist/hooks/useConditionalLogic.js +1 -1
  308. package/dist/hooks/useConditionalLogic.js.map +1 -1
  309. package/dist/hooks/useDrafts.d.ts +1 -1
  310. package/dist/hooks/useDrafts.js +1 -1
  311. package/dist/hooks/useDrafts.js.map +1 -1
  312. package/dist/hooks/useDynamicOptionsLoaderState.d.ts +1 -1
  313. package/dist/hooks/useDynamicOptionsLoaderState.js +1 -1
  314. package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
  315. package/dist/hooks/useFormElementLookups.d.ts +1 -1
  316. package/dist/hooks/useFormElementLookups.js +1 -1
  317. package/dist/hooks/useFormElementLookups.js.map +1 -1
  318. package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -1
  319. package/dist/hooks/useFormSubmissionAutoSaveState.js +1 -1
  320. package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
  321. package/dist/hooks/useIsOffline.js +1 -1
  322. package/dist/hooks/useIsOffline.js.map +1 -1
  323. package/dist/hooks/useLogin.js +1 -1
  324. package/dist/hooks/useLogin.js.map +1 -1
  325. package/dist/hooks/useMfa.d.ts +1 -1
  326. package/dist/hooks/useMfa.js +1 -1
  327. package/dist/hooks/useMfa.js.map +1 -1
  328. package/dist/hooks/useOnUploadAttachment.d.ts +1 -1
  329. package/dist/hooks/useOnUploadAttachment.js +1 -1
  330. package/dist/hooks/useOnUploadAttachment.js.map +1 -1
  331. package/dist/hooks/usePendingSubmissions.d.ts +1 -1
  332. package/dist/hooks/usePendingSubmissions.js +1 -1
  333. package/dist/hooks/usePendingSubmissions.js.map +1 -1
  334. package/dist/hooks/useReplaceableText.js +1 -1
  335. package/dist/hooks/useReplaceableText.js.map +1 -1
  336. package/dist/hooks/useSignUp.js +1 -1
  337. package/dist/hooks/useSignUp.js.map +1 -1
  338. package/dist/index.d.ts +1 -0
  339. package/dist/index.js +2 -0
  340. package/dist/index.js.map +1 -1
  341. package/dist/services/attachments.d.ts +1 -1
  342. package/dist/services/attachments.js +1 -1
  343. package/dist/services/attachments.js.map +1 -1
  344. package/dist/services/blob-utils.js +1 -1
  345. package/dist/services/blob-utils.js.map +1 -1
  346. package/dist/services/checkIfAttachmentsExist.d.ts +1 -1
  347. package/dist/services/checkIfAttachmentsExist.js.map +1 -1
  348. package/dist/services/defaultCoordinates.js +1 -1
  349. package/dist/services/defaultCoordinates.js.map +1 -1
  350. package/dist/services/download-file.d.ts +1 -1
  351. package/dist/services/download-file.js +2 -2
  352. package/dist/services/download-file.js.map +1 -1
  353. package/dist/services/drawTimestampOnCanvas.js +1 -1
  354. package/dist/services/drawTimestampOnCanvas.js.map +1 -1
  355. package/dist/services/form-validation/validateSubmission.js +1 -1
  356. package/dist/services/form-validation/validateSubmission.js.map +1 -1
  357. package/dist/services/form-validation/validators.d.ts +1 -1
  358. package/dist/services/form-validation/validators.js.map +1 -1
  359. package/dist/services/generate-default-data.js +1 -1
  360. package/dist/services/generate-default-data.js.map +1 -1
  361. package/dist/services/injectableOptions.js +1 -1
  362. package/dist/services/injectableOptions.js.map +1 -1
  363. package/dist/styles.css +208 -204
  364. package/dist/types/attachments.d.ts +1 -1
  365. package/dist/types/attachments.js.map +1 -1
  366. package/dist/utils/sendGoogleAnalyticsEvent.js +1 -1
  367. package/dist/utils/sendGoogleAnalyticsEvent.js.map +1 -1
  368. package/package.json +42 -34
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-service.js","sourceRoot":"","sources":["../../src/apps/approvals-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { SubmissionTypes, ApprovalTypes, FormTypes } from '@oneblink/types'\nimport OneBlinkAppsError from './services/errors/oneBlinkAppsError'\nimport { isOffline } from './offline-service'\nimport {\n deleteRequest,\n getRequest,\n putRequest,\n searchRequest,\n postRequest,\n HTTPError,\n} from './services/fetch'\nimport tenants from './tenants'\nimport Sentry from './Sentry'\n\nexport type FormSubmissionApprovalsResponse = {\n approvals: Array<{\n formSubmissionApproval: ApprovalTypes.FormSubmissionApproval\n formApprovalFlowInstance: ApprovalTypes.FormApprovalFlowInstance\n formSubmissionMeta: SubmissionTypes.FormSubmissionMeta\n latestSuccessfulFormSubmissionPayment:\n | SubmissionTypes.FormSubmissionPayment\n | undefined\n }>\n}\n\nexport type FormApprovalFlowInstanceHistory = {\n formApprovalFlowInstance: ApprovalTypes.FormApprovalFlowInstance\n formSubmissionMeta: SubmissionTypes.FormSubmissionMeta\n formSubmissionApprovals: ApprovalTypes.FormSubmissionApproval[]\n successfulFormSubmissionPayment?: SubmissionTypes.FormSubmissionPayment\n}\n\nexport type FormSubmissionApprovalResponse = {\n formSubmissionMeta: SubmissionTypes.FormSubmissionMeta\n formApprovalFlowInstance: ApprovalTypes.FormApprovalFlowInstance\n formSubmissionApproval: ApprovalTypes.FormSubmissionApproval\n form: FormTypes.Form\n successfulFormSubmissionPayment?: SubmissionTypes.FormSubmissionPayment\n history: FormApprovalFlowInstanceHistory[]\n}\n\nexport type FormSubmissionsAdministrationApprovalsResponse = {\n approvals: Array<\n FormApprovalFlowInstanceHistory & {\n history: Array<FormApprovalFlowInstanceHistory>\n }\n >\n meta: {\n limit: number\n offset: number\n nextOffset?: number\n }\n}\n\n/**\n * Get an Object containing FormSubmissionApprovals assigned to the current user\n * and the Form definitions in those approvals.\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const {\n * formSubmissionApprovals,\n * formApprovalFlowInstances,\n * forms,\n * formSubmissionMeta,\n * } = await approvalsService.getFormSubmissionApprovals(formAppId)\n * ```\n *\n * @param formsAppId\n * @param abortSignal\n * @returns\n */\nexport async function getFormSubmissionApprovals(\n formsAppId: number,\n abortSignal?: AbortSignal,\n): Promise<FormSubmissionApprovalsResponse> {\n try {\n return await getRequest<FormSubmissionApprovalsResponse>(\n `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/my-approvals`,\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error retrieving form submission approvals', err)\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local copy of this app available, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot view your pending approvals without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Get a single FormSubmissionApproval belonging to the given id.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApprovalId = 'd27966cc-128d-48a2-b681-6ad52012e113'\n * const {\n * formSubmissionApproval,\n * formApprovalFlowInstance,\n * formSubmissionMeta,\n * form,\n * history,\n * } = await approvalsService.getFormSubmissionApproval(\n * formSubmissionApprovalId,\n * )\n * ```\n *\n * @param formSubmissionApprovalId\n * @param abortSignal\n * @returns\n */\nexport async function getFormSubmissionApproval(\n formSubmissionApprovalId: string,\n abortSignal?: AbortSignal,\n): Promise<FormSubmissionApprovalResponse> {\n try {\n const result = await getRequest<FormSubmissionApprovalResponse>(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApprovalId}`,\n abortSignal,\n )\n return result\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error retrieving form submission approval', err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local copy of this app available, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot action this pending submission without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Update a single FormSubmissionApproval assigned to the current user.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApproval = {\n * id: 'd27966cc-128d-48a2-b681-6ad52012e113',\n * status: 'APPROVED',\n * username: 'email@example.com',\n * formApprovalFlowInstanceId: 1,\n * notificationEmailAddress: 'email@example.com',\n * notes: 'Great work!!!',\n * internalNotes: 'It was not really that great...',\n * cannedResponseKey: 'my_canned_response_key',\n * createdAt: '2021-02-21T22:57:56.257Z',\n * updatedAt: '2021-02-21T22:57:56.257Z',\n * }\n * const updatedFormSubmissionApproval =\n * await approvalsService.updateFormSubmissionApproval(\n * formSubmissionApproval,\n * )\n * ```\n *\n * @param formSubmissionApproval\n * @param abortSignal\n * @returns\n */\nexport async function updateFormSubmissionApproval(\n formSubmissionApproval: ApprovalTypes.FormSubmissionApproval,\n abortSignal?: AbortSignal,\n): Promise<ApprovalTypes.FormSubmissionApproval> {\n try {\n return await putRequest<ApprovalTypes.FormSubmissionApproval>(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApproval.id}`,\n formSubmissionApproval,\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error updating form submission approval', err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot action this pending submission without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404:\n case 409: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * @deprecated Use \"reopenFormApprovalFlowInstance()\" instead\n * @internal\n */\nexport const reopenFormSubmissionApproval = reopenFormApprovalFlowInstance\n\n/**\n * As an administrator, reopen a submission that has been approved or denied.\n *\n * #### Example\n *\n * ```js\n * await approvalsService.reopenFormApprovalFlowInstance({\n * formApprovalFlowInstanceId: 1,\n * notificationEmailAddress: 'email@example.com',\n * notes: 'Great work!!!',\n * internalNotes: 'It was not really that great...',\n * cannedResponseKey: 'my_canned_response_key',\n * })\n * ```\n *\n * @param options\n * @param abortSignal\n * @returns\n */\nexport async function reopenFormApprovalFlowInstance(\n {\n formApprovalFlowInstanceId,\n ...payload\n }: {\n formApprovalFlowInstanceId: number\n notificationEmailAddress: string\n notes: string\n internalNotes?: string\n cannedResponseKey?: string\n },\n abortSignal?: AbortSignal,\n): Promise<ApprovalTypes.FormSubmissionApproval> {\n console.log('Reopening form approval flow instance', {\n formApprovalFlowInstanceId,\n ...payload,\n })\n try {\n return await postRequest<ApprovalTypes.FormSubmissionApproval>(\n `${tenants.current.apiOrigin}/form-approval-flow-instances/${formApprovalFlowInstanceId}/reopen`,\n payload,\n abortSignal,\n )\n } catch (err) {\n console.error('Error reopening form approval flow instance', err)\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot reopen this approval without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this approval. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404:\n case 409: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * As an administrator, close a submission that has been approved.\n *\n * #### Example\n *\n * ```js\n * await approvalsService.closeFormApprovalFlowInstance({\n * formApprovalFlowInstanceId: 1,\n * notificationEmailAddress: ['email@example.com'],\n * notes: 'Great work!!!',\n * internalNotes: 'It was not really that great...',\n * cannedResponseKey: 'my_canned_response_key',\n * })\n * ```\n *\n * @param options\n * @param abortSignal\n * @returns\n */\nexport async function closeFormApprovalFlowInstance(\n {\n formApprovalFlowInstanceId,\n ...payload\n }: {\n formApprovalFlowInstanceId: number\n notificationEmailAddress?: string[]\n notes?: string\n internalNotes?: string\n cannedResponseKey?: string\n },\n abortSignal?: AbortSignal,\n): Promise<ApprovalTypes.FormSubmissionApproval> {\n console.log('Closing form approval flow instance', {\n formApprovalFlowInstanceId,\n ...payload,\n })\n try {\n return await postRequest<ApprovalTypes.FormSubmissionApproval>(\n `${tenants.current.apiOrigin}/form-approval-flow-instances/${formApprovalFlowInstanceId}/close`,\n payload,\n abortSignal,\n )\n } catch (err) {\n console.log('Error closing form approval flow instance', err)\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot close this approval without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this approval. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404:\n case 409: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\nexport type FormApprovalFlowResponse = {\n forms: FormTypes.Form[]\n}\n\nexport async function getFormApprovalFlows(\n formsAppId: number,\n abortSignal?: AbortSignal,\n): Promise<FormApprovalFlowResponse> {\n try {\n return await getRequest<FormApprovalFlowResponse>(\n `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/form-approval-flows`,\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error retrieving form approval flows', err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot access form approval flows without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Get an Object containing approvals for the app regardless of approval groups\n * and meta for paging. Must be an Approvals Administrator.\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const limit = 50\n * const offset = 0\n * const { approvals, meta } =\n * await approvalsService.getFormSubmissionAdministrationApprovals({\n * formAppId,\n * limit,\n * offset,\n * })\n * ```\n *\n * @param options\n * @param abortSignal\n * @returns\n */\nexport async function getFormSubmissionAdministrationApprovals(\n {\n formsAppId,\n ...rest\n }: {\n formsAppId: number\n formId?: number\n externalId?: string\n submissionId?: string\n formApprovalFlowInstanceId?: number\n submittedAfterDateTime?: string\n submittedBeforeDateTime?: string\n limit: number\n offset: number\n statuses?: string[]\n updatedAfterDateTime?: string\n updatedBeforeDateTime?: string\n lastUpdatedBy?: string[]\n submissionTitle?: string\n },\n abortSignal?: AbortSignal,\n): Promise<FormSubmissionsAdministrationApprovalsResponse> {\n try {\n return await searchRequest<FormSubmissionsAdministrationApprovalsResponse>(\n `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/approvals`,\n {\n ...rest,\n },\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n console.error(\n 'Error retrieving administrator form submission approvals',\n err,\n )\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local copy of this app available, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot view approvals without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\nexport type FormApprovalUsernamesResponse = {\n usernames: Array<{ username: string }>\n}\n/**\n * Get an array containing usernames that have updated approvals in the within\n * the formsAppId associated with the passed `formsAppId`. Must be an Approvals\n * Administrator.\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const { usernames } =\n * await approvalsService.getFormApprovalUsernames(formsAppId)\n * ```\n *\n * @param formsAppId\n * @param abortSignal\n * @returns\n */\nexport async function getFormApprovalUsernames(\n formsAppId: number,\n abortSignal?: AbortSignal,\n): Promise<FormApprovalUsernamesResponse> {\n try {\n return await getRequest<FormApprovalUsernamesResponse>(\n `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/approvals/usernames`,\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error retrieving form approval usernames', err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot access form approval usernames without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Create an additional note for a form submission approval.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApprovalId = 'd96ff812-f263-4a66-868d-e259a1fe4157'\n * const newFormSubmissionApprovalNote = {\n * note: 'this is my note',\n * }\n * const createdFormSubmissionApprovalNote =\n * await approvalsService.createApprovalAdditionalNote({\n * formSubmissionApprovalId,\n * newFormSubmissionApprovalNote,\n * })\n * ```\n *\n * @param options\n * @returns\n */\nexport async function createApprovalAdditionalNote({\n formSubmissionApprovalId,\n newFormSubmissionApprovalNote,\n abortSignal,\n}: {\n formSubmissionApprovalId: string\n newFormSubmissionApprovalNote: ApprovalTypes.NewFormSubmissionApprovalNote\n abortSignal?: AbortSignal\n}): Promise<ApprovalTypes.FormSubmissionApprovalNote> {\n try {\n return await postRequest<ApprovalTypes.FormSubmissionApprovalNote>(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApprovalId}/additional-notes`,\n newFormSubmissionApprovalNote,\n abortSignal,\n )\n } catch (err) {\n console.error('Error creating form submission approval note', err)\n if (abortSignal?.aborted) {\n throw err\n }\n\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot create additional notes without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Update an additional note for a form submission approval.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApprovalId = 'd96ff812-f263-4a66-868d-e259a1fe4157'\n * const formSubmissionApprovalNote = {\n * id: '1e84dee3-0dc0-4abe-b2cf-d15d62fd9d0b',\n * note: 'this is my note',\n * createdAt: '2022-06-24T03:16:34.696Z',\n * createdBy: {\n * username: 'user@domain.com',\n * },\n * updatedAt: '2022-06-24T03:16:34.696Z',\n * lastUpdatedBy: {\n * username: 'user@domain.com',\n * },\n * }\n * const updatedFormSubmissionApprovalNote =\n * await approvalsService.updateApprovalAdditionalNote({\n * formSubmissionApprovalId,\n * formSubmissionApprovalNote,\n * })\n * ```\n *\n * @param options\n * @returns\n */\nexport async function updateApprovalAdditionalNote({\n formSubmissionApprovalId,\n formSubmissionApprovalNote,\n abortSignal,\n}: {\n formSubmissionApprovalId: string\n formSubmissionApprovalNote: ApprovalTypes.FormSubmissionApprovalNote\n abortSignal?: AbortSignal\n}): Promise<ApprovalTypes.FormSubmissionApprovalNote> {\n try {\n return await putRequest<ApprovalTypes.FormSubmissionApprovalNote>(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApprovalId}/additional-notes/${formSubmissionApprovalNote.id}`,\n formSubmissionApprovalNote,\n abortSignal,\n )\n } catch (err) {\n console.error('Error updating form submission approval note', err)\n if (abortSignal?.aborted) {\n throw err\n }\n\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot update additional notes without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Delete an additional note for a form submission approval.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApprovalId = 'd96ff812-f263-4a66-868d-e259a1fe4157'\n * const formSubmissionApprovalNoteId = '1e84dee3-0dc0-4abe-b2cf-d15d62fd9d0b',\n * const updatedFormSubmissionApprovalNote =\n * await approvalsService.deleteApprovalAdditionalNote({\n * formSubmissionApprovalId,\n * formSubmissionApprovalNoteId,\n * })\n * ```\n *\n * @param options\n * @returns\n */\nexport async function deleteApprovalAdditionalNote({\n formSubmissionApprovalId,\n formSubmissionApprovalNoteId,\n abortSignal,\n}: {\n formSubmissionApprovalId: string\n formSubmissionApprovalNoteId: string\n abortSignal?: AbortSignal\n}): Promise<void> {\n try {\n return await deleteRequest(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApprovalId}/additional-notes/${formSubmissionApprovalNoteId}`,\n abortSignal,\n )\n } catch (err) {\n console.error('Error updating form submission approval note', err)\n if (abortSignal?.aborted) {\n throw err\n }\n\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot delete additional notes without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Get the status of a single FormSubmissionApproval for the given id.\n *\n * #### Example\n *\n * ```js\n * const formSubmissionApprovalId = 'd27966cc-128d-48a2-b681-6ad52012e113'\n * const { status } =\n * await approvalsService.getFormSubmissionApprovalStatus(\n * formSubmissionApprovalId,\n * )\n * ```\n *\n * @param formSubmissionApprovalId\n * @param abortSignal\n * @returns\n */\nexport async function getFormSubmissionApprovalStatus(\n formSubmissionApprovalId: string,\n abortSignal?: AbortSignal,\n): Promise<{ status: ApprovalTypes.NewFormSubmissionApproval['status'] }> {\n try {\n const result = await getRequest<{\n status: ApprovalTypes.NewFormSubmissionApproval['status']\n }>(\n `${tenants.current.apiOrigin}/form-submission-approvals/${formSubmissionApprovalId}/status`,\n abortSignal,\n )\n return result\n } catch (err) {\n Sentry.captureException(err)\n console.error('Error retrieving form submission approval status', err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local copy of this app available, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 401: {\n throw new OneBlinkAppsError(\n 'You cannot action this pending submission without first logging in. Please login and try again.',\n {\n originalError: error,\n requiresLogin: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to this application. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\nconst possibleStatuses = [\n {\n label: 'Awaiting Approval',\n value: 'PENDING',\n },\n {\n label: 'Approved',\n value: 'APPROVED',\n },\n {\n label: 'Clarification Requested',\n value: 'CLARIFICATION_REQUIRED',\n },\n {\n label: 'Clarification Received',\n value: 'CLARIFICATION_RECEIVED',\n },\n {\n label: 'Denied',\n value: 'CLOSED',\n },\n]\n\nfunction findLatestFormSubmissionApproval(\n flowInstanceNode: ReturnType<typeof getFormApprovalFlowInstanceNodes>[0],\n formSubmissionApprovals: ApprovalTypes.FormSubmissionApproval[],\n) {\n return formSubmissionApprovals.reduce<\n ApprovalTypes.FormSubmissionApproval | undefined\n >((lastUpdatedFormSubmissionApproval, formSubmissionApproval) => {\n if (\n formSubmissionApproval.stepLabel === flowInstanceNode.label &&\n (!lastUpdatedFormSubmissionApproval ||\n lastUpdatedFormSubmissionApproval.updatedAt <\n formSubmissionApproval.updatedAt)\n ) {\n return formSubmissionApproval\n }\n return lastUpdatedFormSubmissionApproval\n }, undefined)\n}\n\nfunction getFormApprovalFlowInstanceNodes(\n steps: ApprovalTypes.FormApprovalFlowInstanceStep[],\n) {\n return steps.reduce<\n Array<\n ApprovalTypes.FormApprovalFlowInstanceNode &\n Pick<\n ApprovalTypes.FlowInstanceNodeMeta,\n | 'parentStepLabelsId'\n | 'isConcurrentWithPrevious'\n | 'isConcurrentWithNext'\n >\n >\n >((memo, step) => {\n switch (step.type) {\n case 'CONCURRENT': {\n const parentStepLabelsId = step.nodes\n .map(({ label }) => label)\n .join('_')\n for (const node of step.nodes) {\n const index = step.nodes.indexOf(node)\n memo.push({\n ...node,\n parentStepLabelsId,\n isConcurrentWithPrevious: index !== 0,\n isConcurrentWithNext: index < step.nodes.length - 1,\n })\n }\n break\n }\n case 'STANDARD':\n default: {\n memo.push({\n ...step,\n isConcurrentWithPrevious: false,\n isConcurrentWithNext: false,\n parentStepLabelsId: step.label,\n })\n break\n }\n }\n return memo\n }, [])\n}\n\n/**\n * Inputs a form approval flow instance and set of form submission approvals and\n * returns a flattened array of nodes/steps with inlcuded metadata.\n *\n * #### Example\n *\n * ```js\n * const formApprovalFlowInstance = {\n * steps: [\n * {\n * type: 'STANDARD',\n * group: 'oneblink:administrator',\n * isSkipped: false,\n * label: 'Manager Approval',\n * approvalFormId: '1234',\n * },\n * {\n * type: 'CONCURRENT',\n * nodes: [\n * {\n * label: 'HR Review',\n * group: 'oneblink:administrator',\n * isSkipped: false,\n * approvalFormId: '1234',\n * },\n * {\n * label: 'Finance Review',\n * group: 'oneblink:administrator',\n * isSkipped: false,\n * approvalFormId: '1234',\n * },\n * ],\n * },\n * ],\n * }\n *\n * const formSubmissionApprovals = [\n * {\n * id: 'approval1',\n * stepLabel: 'Manager Approval',\n * status: 'APPROVED',\n * createdAt: '2024-03-20T10:00:00Z',\n * updatedAt: '2024-03-20T10:00:00Z',\n * updatedBy: 'fake@fake.com',\n * group: 'oneblink:administrator',\n * approvalFormId: '1234',\n * },\n * ]\n *\n * const nodesWithMeta = getFlowInstanceNodesWithMeta(\n * formApprovalFlowInstance,\n * formSubmissionApprovals,\n * )\n * ```\n *\n * @param formApprovalFlowInstance\n * @param formSubmissionApprovals\n * @returns ApprovalTypes.FlowInstanceNodeWithMeta[]\n */\nexport function getFlowInstanceNodesWithMeta(\n formApprovalFlowInstance: ApprovalTypes.FormApprovalFlowInstance,\n formSubmissionApprovals: ApprovalTypes.FormSubmissionApproval[],\n): ApprovalTypes.FlowInstanceNodeWithMeta[] {\n const formApprovalFlowInstanceNodes = getFormApprovalFlowInstanceNodes(\n formApprovalFlowInstance.steps,\n )\n let isDenied = false\n let isClarificationRequired = false\n return formApprovalFlowInstanceNodes.map((step) => {\n const associatedApproval = findLatestFormSubmissionApproval(\n step,\n formSubmissionApprovals,\n )\n const status = possibleStatuses.find(\n ({ value }) => value === associatedApproval?.status,\n )\n\n let isDeniedInConcurrentStep = false\n let isClarificationRequiredInConcurrentStep = false\n if (status?.value === 'PENDING') {\n const siblingNodes = formApprovalFlowInstanceNodes.filter(\n ({ parentStepLabelsId, label }) =>\n parentStepLabelsId === step.parentStepLabelsId &&\n label !== step.label,\n )\n for (const siblingNode of siblingNodes) {\n const formSubmissionApproval = findLatestFormSubmissionApproval(\n siblingNode,\n formSubmissionApprovals,\n )\n if (formSubmissionApproval?.status === 'CLOSED') {\n isDeniedInConcurrentStep = true\n }\n if (formSubmissionApproval?.status === 'CLARIFICATION_REQUIRED') {\n isClarificationRequiredInConcurrentStep = true\n }\n }\n }\n\n const isAfterDeniedStep = isDenied\n if (status?.value === 'CLOSED') {\n isDenied = true\n }\n\n const isAfterClarificationRequiredStep = isClarificationRequired\n if (status?.value === 'CLARIFICATION_REQUIRED') {\n isClarificationRequired = true\n }\n\n let description = 'Awaiting previous approvals'\n if (step.isSkipped) {\n description = 'Skipped based on form submission'\n } else if (status) {\n const updatedByText = associatedApproval?.updatedBy\n ? ` by ${associatedApproval.updatedBy}`\n : ''\n description = `${status.label}${updatedByText}`\n } else if (isAfterDeniedStep) {\n description = 'Denied in a previous step'\n } else if (isAfterClarificationRequiredStep) {\n description = 'Sent for clarification in a previous step'\n }\n\n return {\n ...step,\n status,\n isDeniedInConcurrentStep,\n isAfterDeniedStep,\n isClarificationRequiredInConcurrentStep,\n isAfterClarificationRequiredStep,\n description,\n }\n })\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { FormTypes } from '@oneblink/types';
2
+ import { FormSubmissionModel, FormElementKey } from './types/form';
3
+ import uploadAttachment, { UploadAttachmentConfiguration } from './services/uploadAttachment';
4
+ type AttachmentSaved = import('@oneblink/types').SubmissionTypes.FormSubmissionAttachment & {
5
+ type?: undefined;
6
+ };
7
+ type AttachmentBase = {
8
+ _id: string;
9
+ data?: Blob;
10
+ fileName: string;
11
+ isPrivate: boolean;
12
+ };
13
+ type AttachmentNew = AttachmentBase & {
14
+ type: 'NEW';
15
+ };
16
+ type AttachmentError = AttachmentBase & {
17
+ type: 'ERROR';
18
+ errorType?: 'EXCEEDS_MAX_SIZE' | 'EMPTY_FILE';
19
+ errorMessage: string;
20
+ };
21
+ type AttachmentUnsaved = AttachmentNew | AttachmentError;
22
+ type Attachment = AttachmentSaved | AttachmentUnsaved;
23
+ export { Attachment, AttachmentBase, AttachmentError, AttachmentNew, AttachmentSaved, AttachmentUnsaved, FormSubmissionModel, FormElementKey, uploadAttachment, UploadAttachmentConfiguration, };
24
+ /**
25
+ * Check if the submission has attachments that are still uploading
26
+ *
27
+ * #### Example
28
+ *
29
+ * ```js
30
+ * const isUploading = attachmentsService.checkIfAttachmentsAreUploading(
31
+ * form,
32
+ * submission,
33
+ * )
34
+ * // handle attachments still in progress
35
+ * ```
36
+ *
37
+ * @param form
38
+ * @param submission
39
+ * @returns
40
+ */
41
+ export declare function checkIfAttachmentsAreUploading(form: FormTypes.Form, submission: FormSubmissionModel): boolean;
42
+ export type SubmissionAttachmentDetail = {
43
+ needsToUpload: true;
44
+ value: AttachmentUnsaved;
45
+ } | {
46
+ needsToUpload: false;
47
+ value: AttachmentSaved;
48
+ };
49
+ export declare function getSubmissionAttachmentDetails(formElements: FormTypes.FormElement[], submission: FormSubmissionModel): Array<SubmissionAttachmentDetail>;
@@ -0,0 +1,134 @@
1
+ import uploadAttachment from './services/uploadAttachment';
2
+ export { uploadAttachment, };
3
+ /**
4
+ * Check if the submission has attachments that are still uploading
5
+ *
6
+ * #### Example
7
+ *
8
+ * ```js
9
+ * const isUploading = attachmentsService.checkIfAttachmentsAreUploading(
10
+ * form,
11
+ * submission,
12
+ * )
13
+ * // handle attachments still in progress
14
+ * ```
15
+ *
16
+ * @param form
17
+ * @param submission
18
+ * @returns
19
+ */
20
+ export function checkIfAttachmentsAreUploading(form, submission) {
21
+ const submissionAttachments = getSubmissionAttachmentDetails(form.elements, submission);
22
+ return submissionAttachments.some((a) => a.needsToUpload);
23
+ }
24
+ export function getSubmissionAttachmentDetails(formElements, submission) {
25
+ const submissionAttachmentDetails = [];
26
+ for (const formElement of formElements) {
27
+ switch (formElement.type) {
28
+ case 'page':
29
+ case 'section': {
30
+ submissionAttachmentDetails.push(...getSubmissionAttachmentDetails(formElement.elements, submission));
31
+ break;
32
+ }
33
+ case 'form': {
34
+ const nestedSubmission = submission[formElement.name];
35
+ if (!nestedSubmission || typeof nestedSubmission !== 'object') {
36
+ break;
37
+ }
38
+ submissionAttachmentDetails.push(...getSubmissionAttachmentDetails(formElement.elements || [], nestedSubmission));
39
+ break;
40
+ }
41
+ case 'repeatableSet': {
42
+ const entries = submission[formElement.name];
43
+ if (!Array.isArray(entries)) {
44
+ break;
45
+ }
46
+ for (const entry of entries) {
47
+ submissionAttachmentDetails.push(...getSubmissionAttachmentDetails(formElement.elements, entry));
48
+ }
49
+ break;
50
+ }
51
+ case 'arcGISWebMap':
52
+ case 'camera':
53
+ case 'draw':
54
+ case 'compliance':
55
+ case 'files': {
56
+ const value = submission[formElement.name];
57
+ if (!value) {
58
+ break;
59
+ }
60
+ switch (formElement.type) {
61
+ case 'camera':
62
+ case 'draw': {
63
+ const attachment = asSubmissionAttachmentDetail(value);
64
+ if (attachment) {
65
+ submissionAttachmentDetails.push(attachment);
66
+ }
67
+ break;
68
+ }
69
+ case 'arcGISWebMap': {
70
+ const arcGISWebMapElementValue = value;
71
+ const files = arcGISWebMapElementValue.snapshotImages;
72
+ if (Array.isArray(files)) {
73
+ for (let index = 0; index < files.length; index++) {
74
+ const attachment = asSubmissionAttachmentDetail(files[index]);
75
+ if (attachment) {
76
+ submissionAttachmentDetails.push(attachment);
77
+ }
78
+ }
79
+ }
80
+ break;
81
+ }
82
+ case 'compliance': {
83
+ const files = value === null || value === void 0 ? void 0 : value.files;
84
+ if (Array.isArray(files)) {
85
+ for (let index = 0; index < files.length; index++) {
86
+ const attachment = asSubmissionAttachmentDetail(files[index]);
87
+ if (attachment) {
88
+ submissionAttachmentDetails.push(attachment);
89
+ }
90
+ }
91
+ }
92
+ break;
93
+ }
94
+ case 'files': {
95
+ if (Array.isArray(value)) {
96
+ for (let index = 0; index < value.length; index++) {
97
+ const attachment = asSubmissionAttachmentDetail(value[index]);
98
+ if (attachment) {
99
+ submissionAttachmentDetails.push(attachment);
100
+ }
101
+ }
102
+ }
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ return submissionAttachmentDetails;
110
+ }
111
+ const asSubmissionAttachmentDetail = (value) => {
112
+ if (!value || typeof value !== 'object') {
113
+ return null;
114
+ }
115
+ const record = value;
116
+ // If the value matches the properties required for an attachment
117
+ // that was never uploaded, we need to upload it.
118
+ if (typeof record.type === 'string' &&
119
+ typeof record.fileName === 'string' &&
120
+ typeof record._id === 'string') {
121
+ return {
122
+ needsToUpload: true,
123
+ value: record,
124
+ };
125
+ }
126
+ else {
127
+ // Already uploaded
128
+ return {
129
+ needsToUpload: false,
130
+ value: value,
131
+ };
132
+ }
133
+ };
134
+ //# sourceMappingURL=attachments-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-service.js","sourceRoot":"","sources":["../../src/apps/attachments-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, ArcGISTypes } from '@oneblink/types'\nimport { FormSubmissionModel, FormElementKey } from './types/form'\nimport uploadAttachment, {\n UploadAttachmentConfiguration,\n} from './services/uploadAttachment'\n\ntype AttachmentSaved =\n import('@oneblink/types').SubmissionTypes.FormSubmissionAttachment & {\n type?: undefined\n }\n\ntype AttachmentBase = {\n _id: string\n data?: Blob\n fileName: string\n isPrivate: boolean\n}\n\ntype AttachmentNew = AttachmentBase & {\n type: 'NEW'\n}\ntype AttachmentError = AttachmentBase & {\n type: 'ERROR'\n errorType?: 'EXCEEDS_MAX_SIZE' | 'EMPTY_FILE'\n errorMessage: string\n}\n\ntype AttachmentUnsaved = AttachmentNew | AttachmentError\ntype Attachment = AttachmentSaved | AttachmentUnsaved\n\nexport {\n Attachment,\n AttachmentBase,\n AttachmentError,\n AttachmentNew,\n AttachmentSaved,\n AttachmentUnsaved,\n FormSubmissionModel,\n FormElementKey,\n uploadAttachment,\n UploadAttachmentConfiguration,\n}\n\n/**\n * Check if the submission has attachments that are still uploading\n *\n * #### Example\n *\n * ```js\n * const isUploading = attachmentsService.checkIfAttachmentsAreUploading(\n * form,\n * submission,\n * )\n * // handle attachments still in progress\n * ```\n *\n * @param form\n * @param submission\n * @returns\n */\nexport function checkIfAttachmentsAreUploading(\n form: FormTypes.Form,\n submission: FormSubmissionModel,\n): boolean {\n const submissionAttachments = getSubmissionAttachmentDetails(\n form.elements,\n submission,\n )\n return submissionAttachments.some((a) => a.needsToUpload)\n}\n\nexport type SubmissionAttachmentDetail =\n | {\n needsToUpload: true\n value: AttachmentUnsaved\n }\n | {\n needsToUpload: false\n value: AttachmentSaved\n }\n\nexport function getSubmissionAttachmentDetails(\n formElements: FormTypes.FormElement[],\n submission: FormSubmissionModel,\n): Array<SubmissionAttachmentDetail> {\n const submissionAttachmentDetails: SubmissionAttachmentDetail[] = []\n\n for (const formElement of formElements) {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n submissionAttachmentDetails.push(\n ...getSubmissionAttachmentDetails(formElement.elements, submission),\n )\n break\n }\n case 'form': {\n const nestedSubmission = submission[formElement.name]\n if (!nestedSubmission || typeof nestedSubmission !== 'object') {\n break\n }\n submissionAttachmentDetails.push(\n ...getSubmissionAttachmentDetails(\n formElement.elements || [],\n nestedSubmission as FormSubmissionModel,\n ),\n )\n\n break\n }\n case 'repeatableSet': {\n const entries = submission[formElement.name]\n if (!Array.isArray(entries)) {\n break\n }\n for (const entry of entries) {\n submissionAttachmentDetails.push(\n ...getSubmissionAttachmentDetails(formElement.elements, entry),\n )\n }\n break\n }\n case 'arcGISWebMap':\n case 'camera':\n case 'draw':\n case 'compliance':\n case 'files': {\n const value = submission[formElement.name]\n if (!value) {\n break\n }\n\n switch (formElement.type) {\n case 'camera':\n case 'draw': {\n const attachment = asSubmissionAttachmentDetail(value)\n if (attachment) {\n submissionAttachmentDetails.push(attachment)\n }\n break\n }\n case 'arcGISWebMap': {\n const arcGISWebMapElementValue =\n value as ArcGISTypes.ArcGISWebMapElementValue\n const files = arcGISWebMapElementValue.snapshotImages\n if (Array.isArray(files)) {\n for (let index = 0; index < files.length; index++) {\n const attachment = asSubmissionAttachmentDetail(files[index])\n if (attachment) {\n submissionAttachmentDetails.push(attachment)\n }\n }\n }\n break\n }\n case 'compliance': {\n const files = (value as Record<string, unknown> | undefined)?.files\n if (Array.isArray(files)) {\n for (let index = 0; index < files.length; index++) {\n const attachment = asSubmissionAttachmentDetail(files[index])\n if (attachment) {\n submissionAttachmentDetails.push(attachment)\n }\n }\n }\n break\n }\n case 'files': {\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n const attachment = asSubmissionAttachmentDetail(value[index])\n if (attachment) {\n submissionAttachmentDetails.push(attachment)\n }\n }\n }\n break\n }\n }\n }\n }\n }\n\n return submissionAttachmentDetails\n}\n\nconst asSubmissionAttachmentDetail = (\n value: unknown,\n): null | SubmissionAttachmentDetail => {\n if (!value || typeof value !== 'object') {\n return null\n }\n const record = value as Record<string, unknown>\n // If the value matches the properties required for an attachment\n // that was never uploaded, we need to upload it.\n if (\n typeof record.type === 'string' &&\n typeof record.fileName === 'string' &&\n typeof record._id === 'string'\n ) {\n return {\n needsToUpload: true,\n value: record as unknown as AttachmentUnsaved,\n }\n } else {\n // Already uploaded\n return {\n needsToUpload: false,\n value: value as AttachmentSaved,\n }\n }\n}\n"]}
@@ -0,0 +1,114 @@
1
+ import { MiscTypes } from '@oneblink/types';
2
+ import { getIdToken, getFormsKeyId, setFormsKeyToken } from './services/forms-key';
3
+ import { registerAuthListener, isLoggedIn, loginHostedUI, loginUsernamePassword, changePassword, forgotPassword, handleAuthentication, logoutHostedUI, getUserProfile, getUserFriendlyName, LoginAttemptResponse, checkIsMfaEnabled, disableMfa, setupMfa, generateMfaQrCodeUrl } from './services/cognito';
4
+ import { getUserToken, setUserToken } from './services/user-token';
5
+ export { registerAuthListener, loginHostedUI, loginUsernamePassword, handleAuthentication, logoutHostedUI, changePassword, forgotPassword, isLoggedIn, getIdToken, getUserProfile, getFormsKeyId, setFormsKeyToken, getUserToken, setUserToken, getUserFriendlyName, LoginAttemptResponse, checkIsMfaEnabled, disableMfa, setupMfa, generateMfaQrCodeUrl, };
6
+ /**
7
+ * Log the current user out and remove an data stored locally by the user e.g.
8
+ * drafts.
9
+ *
10
+ * #### Example
11
+ *
12
+ * ```js
13
+ * await authService.logout()
14
+ * ```
15
+ */
16
+ export declare function logout(): Promise<void>;
17
+ /**
18
+ * Initialize the service with required configuration. **This must be done
19
+ * before using before some of the function in this service.**
20
+ *
21
+ * #### Example
22
+ *
23
+ * ```js
24
+ * authService.init({
25
+ * oAuthClientId: 'YOUR_OAUTH_CLIENT_ID',
26
+ * })
27
+ * ```
28
+ *
29
+ * @param options
30
+ */
31
+ export declare function init({ oAuthClientId }: {
32
+ oAuthClientId: string;
33
+ }): void;
34
+ /**
35
+ * Determine if the current user is a OneBlink App User for a OneBlink Forms
36
+ * App. Returns `false` if the current user is not logged in.
37
+ *
38
+ * #### Example
39
+ *
40
+ * ```js
41
+ * const formsAppId = 1
42
+ * const isAuthorised = await authService.isAuthorised(formsAppId)
43
+ * if (!isAuthorised) {
44
+ * // handle unauthorised user
45
+ * }
46
+ * ```
47
+ *
48
+ * @param formsAppId
49
+ * @param abortSignal
50
+ * @returns
51
+ */
52
+ export declare function isAuthorised(formsAppId: number, abortSignal?: AbortSignal): Promise<boolean>;
53
+ /**
54
+ * Get the current user's App User details for a OneBlink Forms App. Returns
55
+ * `undefined` if the current user is not logged in.
56
+ *
57
+ * #### Example
58
+ *
59
+ * ```js
60
+ * const formsAppId = 1
61
+ * const formsAppUserDetails =
62
+ * await authService.getCurrentFormsAppUser(formsAppId)
63
+ * if (!formsAppUserDetails) {
64
+ * // handle unauthorised user
65
+ * }
66
+ * ```
67
+ *
68
+ * @param formsAppId
69
+ * @returns
70
+ */
71
+ export declare function getCurrentFormsAppUser(formsAppId: number, abortSignal?: AbortSignal): Promise<{
72
+ userProfile?: MiscTypes.UserProfile;
73
+ formsAppId: number;
74
+ groups: string[];
75
+ } | undefined>;
76
+ /**
77
+ * If the current user is not a Forms App User, this function will send a
78
+ * request on behalf of the current user to the OneBlink Forms App
79
+ * administrators to request access.
80
+ *
81
+ * #### Example
82
+ *
83
+ * ```js
84
+ * const formsAppId = 1
85
+ * await authService.requestAccess(formsAppId)
86
+ * // Display a message to user indicating a request has been sent to the application administrators
87
+ * ```
88
+ *
89
+ * @param formsAppId
90
+ */
91
+ export declare function requestAccess(formsAppId: number): Promise<void>;
92
+ /**
93
+ * Allow a user to sign up to a forms app.
94
+ *
95
+ * #### Example
96
+ *
97
+ * ```js
98
+ * await authService.signUp({
99
+ * formsAppId: 1,
100
+ * email: 'test@oneblink.io',
101
+ * firstName: 'first',
102
+ * lastName: 'last',
103
+ * })
104
+ * ```
105
+ *
106
+ * @param {formsAppId, email, generatePassword, firstName, lastName}
107
+ * @returns
108
+ */
109
+ export declare function signUp({ formsAppId, email, firstName, lastName, }: {
110
+ formsAppId: number;
111
+ email: string;
112
+ firstName?: string;
113
+ lastName?: string;
114
+ }): Promise<void>;
@@ -0,0 +1,194 @@
1
+ import OneBlinkAppsError from './services/errors/oneBlinkAppsError';
2
+ import { getIdToken, getFormsKeyId, setFormsKeyToken, } from './services/forms-key';
3
+ import { init as initCognito, registerAuthListener, isLoggedIn, loginHostedUI, loginUsernamePassword, changePassword, forgotPassword, handleAuthentication, logoutHostedUI, logout as logoutCognito, getUserProfile, getUsername, getUserFriendlyName, checkIsMfaEnabled, disableMfa, setupMfa, generateMfaQrCodeUrl, } from './services/cognito';
4
+ import { getRequest, postRequest } from './services/fetch';
5
+ import tenants from './tenants';
6
+ import { getUserToken, setUserToken } from './services/user-token';
7
+ import utilsService from './services/utils';
8
+ export { registerAuthListener, loginHostedUI, loginUsernamePassword, handleAuthentication, logoutHostedUI, changePassword, forgotPassword, isLoggedIn, getIdToken, getUserProfile, getFormsKeyId, setFormsKeyToken, getUserToken, setUserToken, getUserFriendlyName, checkIsMfaEnabled, disableMfa, setupMfa, generateMfaQrCodeUrl, };
9
+ import Sentry from './Sentry';
10
+ /**
11
+ * Log the current user out and remove an data stored locally by the user e.g.
12
+ * drafts.
13
+ *
14
+ * #### Example
15
+ *
16
+ * ```js
17
+ * await authService.logout()
18
+ * ```
19
+ */
20
+ export async function logout() {
21
+ console.log('Logging out...');
22
+ try {
23
+ await utilsService.localForage.clear();
24
+ }
25
+ catch (error) {
26
+ Sentry.captureException(error);
27
+ console.warn('Could not clear localForage before logging out', error);
28
+ }
29
+ await logoutCognito();
30
+ }
31
+ /**
32
+ * Initialize the service with required configuration. **This must be done
33
+ * before using before some of the function in this service.**
34
+ *
35
+ * #### Example
36
+ *
37
+ * ```js
38
+ * authService.init({
39
+ * oAuthClientId: 'YOUR_OAUTH_CLIENT_ID',
40
+ * })
41
+ * ```
42
+ *
43
+ * @param options
44
+ */
45
+ export function init({ oAuthClientId }) {
46
+ initCognito({
47
+ region: tenants.current.awsRegion,
48
+ loginDomain: tenants.current.loginDomain,
49
+ oAuthClientId,
50
+ redirectUri: window.location.origin + '/callback',
51
+ logoutUri: window.location.origin + '/logout',
52
+ });
53
+ const listener = () => {
54
+ Sentry.setTag('username', getUsername() || undefined);
55
+ };
56
+ listener();
57
+ registerAuthListener(listener);
58
+ }
59
+ /**
60
+ * Determine if the current user is a OneBlink App User for a OneBlink Forms
61
+ * App. Returns `false` if the current user is not logged in.
62
+ *
63
+ * #### Example
64
+ *
65
+ * ```js
66
+ * const formsAppId = 1
67
+ * const isAuthorised = await authService.isAuthorised(formsAppId)
68
+ * if (!isAuthorised) {
69
+ * // handle unauthorised user
70
+ * }
71
+ * ```
72
+ *
73
+ * @param formsAppId
74
+ * @param abortSignal
75
+ * @returns
76
+ */
77
+ export async function isAuthorised(formsAppId, abortSignal) {
78
+ return getCurrentFormsAppUser(formsAppId, abortSignal)
79
+ .then(() => true)
80
+ .catch((error) => {
81
+ if (error.status >= 400 && error.status < 500) {
82
+ return false;
83
+ }
84
+ else {
85
+ Sentry.captureException(error);
86
+ console.log('Could not determine if the current user has access to this forms app', error);
87
+ return false;
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Get the current user's App User details for a OneBlink Forms App. Returns
93
+ * `undefined` if the current user is not logged in.
94
+ *
95
+ * #### Example
96
+ *
97
+ * ```js
98
+ * const formsAppId = 1
99
+ * const formsAppUserDetails =
100
+ * await authService.getCurrentFormsAppUser(formsAppId)
101
+ * if (!formsAppUserDetails) {
102
+ * // handle unauthorised user
103
+ * }
104
+ * ```
105
+ *
106
+ * @param formsAppId
107
+ * @returns
108
+ */
109
+ export async function getCurrentFormsAppUser(formsAppId, abortSignal) {
110
+ if (getFormsKeyId()) {
111
+ return {
112
+ formsAppId,
113
+ groups: [],
114
+ };
115
+ }
116
+ const userProfile = getUserProfile();
117
+ if (!userProfile) {
118
+ return undefined;
119
+ }
120
+ const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/my-forms-app-user`;
121
+ return await getRequest(url, abortSignal);
122
+ }
123
+ /**
124
+ * If the current user is not a Forms App User, this function will send a
125
+ * request on behalf of the current user to the OneBlink Forms App
126
+ * administrators to request access.
127
+ *
128
+ * #### Example
129
+ *
130
+ * ```js
131
+ * const formsAppId = 1
132
+ * await authService.requestAccess(formsAppId)
133
+ * // Display a message to user indicating a request has been sent to the application administrators
134
+ * ```
135
+ *
136
+ * @param formsAppId
137
+ */
138
+ export async function requestAccess(formsAppId) {
139
+ if (!isLoggedIn()) {
140
+ throw new OneBlinkAppsError('You must login before requesting access to this application', {
141
+ requiresLogin: true,
142
+ });
143
+ }
144
+ try {
145
+ const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/request-access`;
146
+ await postRequest(url);
147
+ }
148
+ catch (error) {
149
+ Sentry.captureException(error);
150
+ console.warn('Error while requesting access to forms app', error);
151
+ throw new OneBlinkAppsError('Sorry, we could not request access automatically right now, please try again. If the problem persists, please contact your administrator yourself.', {
152
+ originalError: error,
153
+ title: 'Error Requesting Access',
154
+ httpStatusCode: error.status,
155
+ });
156
+ }
157
+ }
158
+ /**
159
+ * Allow a user to sign up to a forms app.
160
+ *
161
+ * #### Example
162
+ *
163
+ * ```js
164
+ * await authService.signUp({
165
+ * formsAppId: 1,
166
+ * email: 'test@oneblink.io',
167
+ * firstName: 'first',
168
+ * lastName: 'last',
169
+ * })
170
+ * ```
171
+ *
172
+ * @param {formsAppId, email, generatePassword, firstName, lastName}
173
+ * @returns
174
+ */
175
+ export async function signUp({ formsAppId, email, firstName, lastName, }) {
176
+ try {
177
+ const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/sign-up`;
178
+ return await postRequest(url, {
179
+ email,
180
+ firstName,
181
+ lastName,
182
+ });
183
+ }
184
+ catch (error) {
185
+ Sentry.captureException(error);
186
+ console.warn('Error while calling sign-up to forms app', error);
187
+ throw new OneBlinkAppsError('Sorry, we could not create you a account right now, please try again. If the problem persists, please contact your administrator yourself.', {
188
+ originalError: error,
189
+ title: 'Error Signing up',
190
+ httpStatusCode: error.status,
191
+ });
192
+ }
193
+ }
194
+ //# sourceMappingURL=auth-service.js.map