studiokit-scaffolding-js 7.0.12-next.2.9 → 7.0.13-alpha.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 (390) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +137 -137
  3. package/lib/components/ActionList.d.ts +2 -2
  4. package/lib/components/ActionList.js +87 -166
  5. package/lib/components/AlertDialog.d.ts +3 -3
  6. package/lib/components/AlertDialog.js +18 -133
  7. package/lib/components/AlertWithIcon.js +52 -93
  8. package/lib/components/ConnectedModal.d.ts +2 -1
  9. package/lib/components/ConnectedModal.js +37 -43
  10. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  11. package/lib/components/Dropdowns/GroupsDropdown.js +82 -69
  12. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  13. package/lib/components/Dropdowns/ManagedNavDropdown.js +111 -99
  14. package/lib/components/Dropdowns/UserDropdown.js +70 -109
  15. package/lib/components/Dropdowns/index.js +11 -27
  16. package/lib/components/EntityOwnerList.d.ts +3 -3
  17. package/lib/components/EntityOwnerList.js +60 -52
  18. package/lib/components/Error.js +27 -107
  19. package/lib/components/ErrorBoundary.js +94 -133
  20. package/lib/components/ErrorMessage.d.ts +2 -2
  21. package/lib/components/ErrorMessage.js +14 -44
  22. package/lib/components/Forms/DateField.d.ts +2 -2
  23. package/lib/components/Forms/DateField.js +95 -63
  24. package/lib/components/Forms/TimeField.d.ts +2 -2
  25. package/lib/components/Forms/TimeField.js +108 -84
  26. package/lib/components/Forms/index.js +13 -27
  27. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  28. package/lib/components/Groups/CreateEditCopySaveButtons.js +14 -102
  29. package/lib/components/Groups/ExternalGroups/Attach.d.ts +7 -6
  30. package/lib/components/Groups/ExternalGroups/Attach.js +188 -213
  31. package/lib/components/Groups/ExternalGroups/Table.js +76 -183
  32. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +1 -5
  33. package/lib/components/Groups/RosterSyncInfo.js +49 -140
  34. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  35. package/lib/components/HOC/AccessibleAppComponent.js +124 -101
  36. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  37. package/lib/components/HOC/ActivityRequiredComponent.js +107 -93
  38. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  39. package/lib/components/HOC/AsyncComponent.js +129 -53
  40. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  41. package/lib/components/HOC/AuthenticatedComponent.js +96 -59
  42. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  43. package/lib/components/HOC/CollectionComponent.js +171 -171
  44. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  45. package/lib/components/HOC/CollectionFirstItemComponent.js +94 -52
  46. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  47. package/lib/components/HOC/CollectionItemComponent.js +168 -169
  48. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  49. package/lib/components/HOC/ConnectedModalComponent.js +140 -110
  50. package/lib/components/HOC/DataDependentComponent.d.ts +55 -3
  51. package/lib/components/HOC/DataDependentComponent.js +79 -30
  52. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  53. package/lib/components/HOC/EntityComponent.js +112 -74
  54. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  55. package/lib/components/HOC/FullscreenModalComponent.js +185 -165
  56. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  57. package/lib/components/HOC/GroupActivityRequiredComponent.js +47 -48
  58. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  59. package/lib/components/HOC/GuidComponent.js +68 -29
  60. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +29 -28
  61. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +65 -42
  62. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  63. package/lib/components/HOC/ModelErrorRedirectComponent.js +94 -51
  64. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  65. package/lib/components/HOC/SearchPersistorComponent.js +216 -243
  66. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  67. package/lib/components/HOC/UnauthenticatedComponent.js +82 -37
  68. package/lib/components/HOC/UserComponent.d.ts +1 -1
  69. package/lib/components/HOC/UserComponent.js +11 -12
  70. package/lib/components/Icons/IconAlphaList.js +20 -34
  71. package/lib/components/Icons/IconExternalUser.js +20 -34
  72. package/lib/components/Icons/IconImpersonation.js +20 -34
  73. package/lib/components/Icons/IconStopImpersonating.js +20 -34
  74. package/lib/components/Icons/IconTable.js +21 -35
  75. package/lib/components/Icons/IconTableDeleteCol.js +20 -34
  76. package/lib/components/Icons/IconTableDeleteRow.js +20 -34
  77. package/lib/components/Icons/IconTableInsertCol.js +20 -34
  78. package/lib/components/Icons/IconTableInsertRow.js +20 -34
  79. package/lib/components/Impersonation/Button.d.ts +2 -2
  80. package/lib/components/Impersonation/Button.js +56 -76
  81. package/lib/components/Impersonation/Link.d.ts +2 -2
  82. package/lib/components/Impersonation/Link.js +53 -76
  83. package/lib/components/Impersonation/UserDetail.css +22 -22
  84. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  85. package/lib/components/Impersonation/UserDetail.js +17 -66
  86. package/lib/components/Loading.js +21 -27
  87. package/lib/components/LockDownBrowser/Check.js +107 -194
  88. package/lib/components/LockDownBrowser/ExitButton.js +14 -27
  89. package/lib/components/LockDownBrowser/Launch.js +85 -70
  90. package/lib/components/Lti/Confirm.js +33 -152
  91. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +2 -4
  92. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +78 -170
  93. package/lib/components/Lti/Launch.js +49 -105
  94. package/lib/components/Lti/LaunchGroup.js +39 -85
  95. package/lib/components/ManageTable.d.ts +2 -1
  96. package/lib/components/ManageTable.js +104 -309
  97. package/lib/components/ManageTableNoDataComponent.js +22 -42
  98. package/lib/components/NewVersionAlert.d.ts +2 -2
  99. package/lib/components/NewVersionAlert.js +91 -82
  100. package/lib/components/NotFound.js +28 -87
  101. package/lib/components/Notifications.d.ts +4 -4
  102. package/lib/components/Notifications.js +169 -187
  103. package/lib/components/PaginationNextButton.js +21 -33
  104. package/lib/components/PaginationPreviousButton.js +21 -33
  105. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  106. package/lib/components/Quill/CustomToolbar.js +257 -432
  107. package/lib/components/Quill/Formats/Image.d.ts +25 -10
  108. package/lib/components/Quill/Formats/Image.js +86 -80
  109. package/lib/components/Quill/Formats/List.d.ts +3 -6
  110. package/lib/components/Quill/Formats/List.js +74 -52
  111. package/lib/components/Quill/Formats/Video.d.ts +1 -2
  112. package/lib/components/Quill/Formats/Video.js +45 -31
  113. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  114. package/lib/components/Quill/ImageDropModule.js +122 -149
  115. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  116. package/lib/components/Quill/ImageWarning.js +32 -45
  117. package/lib/components/Quill/ImageWithAltTextModal.d.ts +1 -0
  118. package/lib/components/Quill/ImageWithAltTextModal.js +141 -425
  119. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  120. package/lib/components/Quill/Specs/CustomImageSpec.js +51 -43
  121. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  122. package/lib/components/Quill/Specs/CustomVideoSpec.js +44 -35
  123. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +1 -2
  124. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +121 -105
  125. package/lib/components/Quill/TableModule/Blots/TableBlot.js +66 -53
  126. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +67 -54
  127. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  128. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +241 -225
  129. package/lib/components/Quill/TableModule/Blots/TableContainer.js +99 -82
  130. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +87 -76
  131. package/lib/components/Quill/TableModule/constants.js +41 -45
  132. package/lib/components/Quill/TableModule/index.css +171 -171
  133. package/lib/components/Quill/TableModule/index.d.ts +5 -14
  134. package/lib/components/Quill/TableModule/index.js +313 -373
  135. package/lib/components/Quill/TableModule/utils.js +45 -45
  136. package/lib/components/Quill/accessibilityFix.d.ts +1 -0
  137. package/lib/components/Quill/accessibilityFix.js +251 -235
  138. package/lib/components/Quill/index.js +32 -36
  139. package/lib/components/RefreshIndicator/Bordered.js +32 -48
  140. package/lib/components/RefreshIndicator/Inline.js +33 -48
  141. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  142. package/lib/components/RefreshIndicator/index.js +113 -263
  143. package/lib/components/SearchControls.js +31 -216
  144. package/lib/components/SentryRoute.js +23 -10
  145. package/lib/components/Tables/RoleFilter.d.ts +4 -3
  146. package/lib/components/Tables/RoleFilter.js +46 -71
  147. package/lib/components/Tables/TextFilter.d.ts +3 -2
  148. package/lib/components/Tables/TextFilter.js +20 -62
  149. package/lib/components/UserRoles/Add.d.ts +3 -3
  150. package/lib/components/UserRoles/Add.js +161 -199
  151. package/lib/components/UserRoles/Context.js +9 -11
  152. package/lib/components/UserRoles/RoleCell.js +100 -180
  153. package/lib/components/UserRoles/Select.js +54 -157
  154. package/lib/components/UserRoles/Table.js +102 -221
  155. package/lib/components/UserRoles/index.d.ts +6 -6
  156. package/lib/components/UserRoles/index.js +466 -537
  157. package/lib/config/eslint/index.cjs +21 -0
  158. package/lib/config/eslint/lib/order.cjs +22 -0
  159. package/lib/config/eslint/lib/prettier.cjs +18 -0
  160. package/lib/config/eslint/lib/typescript.cjs +86 -0
  161. package/lib/config/eslint/react.cjs +9 -0
  162. package/lib/constants/baseActivity.js +26 -30
  163. package/lib/constants/baseRole.js +10 -14
  164. package/lib/constants/configuration.d.ts +1 -1
  165. package/lib/constants/configuration.js +39 -43
  166. package/lib/constants/externalProviderType.js +6 -10
  167. package/lib/constants/fetchErrorData.js +11 -15
  168. package/lib/constants/index.js +23 -137
  169. package/lib/constants/lockDownBrowser.js +24 -28
  170. package/lib/constants/mockData.d.ts +6 -4
  171. package/lib/constants/mockData.js +326 -385
  172. package/lib/constants/modelStatus.js +11 -15
  173. package/lib/constants/notificationType.js +8 -12
  174. package/lib/constants/operatingSystem.js +8 -12
  175. package/lib/constants/shard.js +7 -11
  176. package/lib/constants/table.js +21 -21
  177. package/lib/constants/tier.js +8 -12
  178. package/lib/constants/userRole.d.ts +2 -1
  179. package/lib/constants/userRole.js +17 -15
  180. package/lib/css/base/_base.css +98 -98
  181. package/lib/css/base/_typography.css +130 -130
  182. package/lib/css/components/_alert.css +86 -86
  183. package/lib/css/components/_bootstrap-grid.css +28 -28
  184. package/lib/css/components/_buttons.css +397 -397
  185. package/lib/css/components/_forms.css +101 -101
  186. package/lib/css/components/_menu.css +56 -56
  187. package/lib/css/components/_modals.css +46 -46
  188. package/lib/css/components/_quill.css +315 -315
  189. package/lib/css/components/_tables.css +497 -497
  190. package/lib/css/components/_tags.css +12 -12
  191. package/lib/css/index-with-variables.css +15 -15
  192. package/lib/css/index.css +14 -14
  193. package/lib/css/utils/_border.css +463 -463
  194. package/lib/css/utils/_color.css +317 -317
  195. package/lib/css/utils/_display.css +312 -305
  196. package/lib/css/utils/_general.css +48 -48
  197. package/lib/css/utils/_icon.css +16 -16
  198. package/lib/css/utils/_text.css +24 -25
  199. package/lib/css/utils/_width.css +60 -60
  200. package/lib/css/variables.css +84 -84
  201. package/lib/endpointMappings.js +193 -197
  202. package/lib/hooks/useCollection.js +65 -83
  203. package/lib/hooks/useCollectionConfiguration.d.ts +1 -0
  204. package/lib/hooks/useCollectionConfiguration.js +88 -185
  205. package/lib/hooks/useCollectionItem.js +58 -155
  206. package/lib/hooks/useGuid.js +10 -21
  207. package/lib/hooks/usePrevious.d.ts +1 -24
  208. package/lib/hooks/usePrevious.js +14 -84
  209. package/lib/index.js +36 -156
  210. package/lib/redux/actionCreator.d.ts +6 -6
  211. package/lib/redux/actionCreator.js +40 -51
  212. package/lib/redux/actions/AuthAction.js +31 -44
  213. package/lib/redux/actions/ModalAction.d.ts +1 -1
  214. package/lib/redux/actions/ModalAction.js +6 -10
  215. package/lib/redux/actions/ModelAction.d.ts +1 -1
  216. package/lib/redux/actions/ModelAction.js +49 -77
  217. package/lib/redux/actions/NotificationAction.js +6 -10
  218. package/lib/redux/actions/SearchAction.js +5 -9
  219. package/lib/redux/actions/index.js +16 -60
  220. package/lib/redux/configureReducers.d.ts +5 -2
  221. package/lib/redux/configureReducers.js +78 -67
  222. package/lib/redux/configureStore.d.ts +2 -2
  223. package/lib/redux/configureStore.js +115 -83
  224. package/lib/redux/helpers.js +2 -7
  225. package/lib/redux/reducers/authReducer.js +46 -52
  226. package/lib/redux/reducers/index.js +15 -41
  227. package/lib/redux/reducers/modalsReducer.js +52 -49
  228. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  229. package/lib/redux/reducers/modelsReducer.js +182 -183
  230. package/lib/redux/reducers/notificationsReducer.js +21 -26
  231. package/lib/redux/reducers/searchReducer.js +20 -26
  232. package/lib/redux/sagas/appInsightsSaga.js +62 -24
  233. package/lib/redux/sagas/authSaga.js +414 -287
  234. package/lib/redux/sagas/caliperSaga.js +263 -169
  235. package/lib/redux/sagas/clockOffsetSaga.js +77 -36
  236. package/lib/redux/sagas/configurationSaga.js +46 -13
  237. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +1 -0
  238. package/lib/redux/sagas/downtimeApiErrorSaga.js +64 -23
  239. package/lib/redux/sagas/errorSaga.d.ts +1 -0
  240. package/lib/redux/sagas/errorSaga.js +63 -29
  241. package/lib/redux/sagas/googleAnalyticsSaga.js +69 -29
  242. package/lib/redux/sagas/identityProviderSaga.js +69 -24
  243. package/lib/redux/sagas/initialDataLoadSaga.js +29 -38
  244. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +1 -0
  245. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +81 -32
  246. package/lib/redux/sagas/modelFetchSaga.js +459 -379
  247. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  248. package/lib/redux/sagas/noStoreSaga.js +101 -68
  249. package/lib/redux/sagas/postLoginDataSaga.js +79 -47
  250. package/lib/redux/sagas/postLoginRedirectSaga.js +71 -30
  251. package/lib/redux/sagas/rootSaga.js +137 -85
  252. package/lib/redux/sagas/sentrySaga.js +85 -29
  253. package/lib/redux/sagas/userIdSaga.js +54 -18
  254. package/lib/services/codeProviderService.js +29 -25
  255. package/lib/services/dateService.js +12 -14
  256. package/lib/services/documentService.js +13 -18
  257. package/lib/services/fetchService.js +168 -134
  258. package/lib/services/persistenceService.d.ts +4 -4
  259. package/lib/services/persistenceService.js +43 -45
  260. package/lib/services/ticketProviderService.js +33 -29
  261. package/lib/services/tokenPersistenceService.js +9 -13
  262. package/lib/services/windowService.js +17 -21
  263. package/lib/startup.d.ts +1 -1
  264. package/lib/startup.js +135 -132
  265. package/lib/types/AppConfiguration.js +1 -5
  266. package/lib/types/Artifact.js +7 -11
  267. package/lib/types/BaseReduxState.js +1 -5
  268. package/lib/types/Client.js +1 -5
  269. package/lib/types/Collection.d.ts +3 -3
  270. package/lib/types/Collection.js +1 -5
  271. package/lib/types/Configuration.js +1 -5
  272. package/lib/types/DeepLinkingResponseRequest.js +1 -5
  273. package/lib/types/DeletableModel.js +1 -5
  274. package/lib/types/Event.js +1 -5
  275. package/lib/types/ExternalGroup.js +1 -5
  276. package/lib/types/ExternalProvider.js +1 -5
  277. package/lib/types/ExternalTerm.js +1 -5
  278. package/lib/types/Group.js +1 -5
  279. package/lib/types/IdentityProvider.js +1 -5
  280. package/lib/types/LtiLaunch.js +1 -5
  281. package/lib/types/NameOnlyEntity.js +1 -5
  282. package/lib/types/Notification.d.ts +2 -2
  283. package/lib/types/Notification.js +1 -5
  284. package/lib/types/OptionalRecord.d.ts +1 -1
  285. package/lib/types/OptionalRecord.js +1 -5
  286. package/lib/types/OwnerSchedule.d.ts +1 -3
  287. package/lib/types/OwnerSchedule.js +1 -5
  288. package/lib/types/PropertyOfType.d.ts +3 -3
  289. package/lib/types/PropertyOfType.js +1 -5
  290. package/lib/types/Quill.js +1 -5
  291. package/lib/types/RoleDescription.d.ts +1 -0
  292. package/lib/types/RoleDescription.js +1 -5
  293. package/lib/types/Search.js +1 -5
  294. package/lib/types/SimpleLocation.js +1 -5
  295. package/lib/types/UniTime.js +1 -5
  296. package/lib/types/User.js +1 -5
  297. package/lib/types/UserRole.js +1 -5
  298. package/lib/types/auth/AuthState.js +1 -5
  299. package/lib/types/auth/CasV1LoginRequestBody.js +1 -5
  300. package/lib/types/auth/ClientCredentials.js +1 -5
  301. package/lib/types/auth/CodeProviderService.js +1 -5
  302. package/lib/types/auth/LocalLoginRequestBody.js +1 -5
  303. package/lib/types/auth/TicketProviderService.js +1 -5
  304. package/lib/types/auth/TokenPersistenceService.js +1 -5
  305. package/lib/types/auth/index.js +18 -82
  306. package/lib/types/index.js +39 -313
  307. package/lib/types/net/EndpointConfig.js +1 -5
  308. package/lib/types/net/EndpointMapping.js +1 -5
  309. package/lib/types/net/EndpointMappings.js +1 -5
  310. package/lib/types/net/ErrorHandler.d.ts +1 -1
  311. package/lib/types/net/ErrorHandler.js +1 -5
  312. package/lib/types/net/FetchConfig.d.ts +1 -1
  313. package/lib/types/net/FetchConfig.js +1 -5
  314. package/lib/types/net/FetchErrorData.js +6 -10
  315. package/lib/types/net/FetchResult.d.ts +2 -2
  316. package/lib/types/net/FetchResult.js +1 -5
  317. package/lib/types/net/HTTPMethod.d.ts +1 -1
  318. package/lib/types/net/HTTPMethod.js +1 -5
  319. package/lib/types/net/HTTPStatusCode.js +12 -16
  320. package/lib/types/net/Metadata.js +1 -5
  321. package/lib/types/net/Model.js +1 -5
  322. package/lib/types/net/ModelCollection.js +1 -5
  323. package/lib/types/net/ModelsState.js +1 -5
  324. package/lib/types/net/OAuthToken.js +1 -5
  325. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  326. package/lib/types/net/OAuthTokenOrNull.js +1 -5
  327. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  328. package/lib/types/net/TokenAccessFunction.js +1 -5
  329. package/lib/types/net/index.js +27 -181
  330. package/lib/utils/baseActivity.d.ts +2 -2
  331. package/lib/utils/baseActivity.js +136 -138
  332. package/lib/utils/baseRole.js +33 -37
  333. package/lib/utils/collection.js +310 -432
  334. package/lib/utils/cookies.js +37 -22
  335. package/lib/utils/date.js +320 -320
  336. package/lib/utils/dom.js +174 -186
  337. package/lib/utils/domainIdentifier.js +9 -9
  338. package/lib/utils/entityUserRole.js +2 -6
  339. package/lib/utils/error.d.ts +1 -1
  340. package/lib/utils/error.js +16 -18
  341. package/lib/utils/events.js +33 -40
  342. package/lib/utils/externalGroup.js +21 -25
  343. package/lib/utils/externalProviders.js +4 -8
  344. package/lib/utils/externalTerms.js +6 -9
  345. package/lib/utils/fetch.d.ts +1 -1
  346. package/lib/utils/fetch.js +185 -188
  347. package/lib/utils/group.js +9 -17
  348. package/lib/utils/groupDates.d.ts +1 -1
  349. package/lib/utils/groupDates.js +39 -43
  350. package/lib/utils/groupRoles.js +28 -28
  351. package/lib/utils/lockDownBrowser.js +12 -16
  352. package/lib/utils/logger.js +25 -30
  353. package/lib/utils/lti.js +5 -10
  354. package/lib/utils/model.d.ts +2 -2
  355. package/lib/utils/model.js +48 -39
  356. package/lib/utils/number.js +26 -23
  357. package/lib/utils/promise.d.ts +1 -6
  358. package/lib/utils/promise.js +15 -34
  359. package/lib/utils/quill.js +77 -66
  360. package/lib/utils/route.d.ts +2 -2
  361. package/lib/utils/route.js +60 -61
  362. package/lib/utils/search.d.ts +1 -1
  363. package/lib/utils/search.js +85 -78
  364. package/lib/utils/shard.js +41 -38
  365. package/lib/utils/sort.d.ts +3 -3
  366. package/lib/utils/sort.js +58 -62
  367. package/lib/utils/string.js +10 -14
  368. package/lib/utils/table.d.ts +3 -3
  369. package/lib/utils/table.js +36 -39
  370. package/lib/utils/timezone.js +26 -12
  371. package/lib/utils/url.d.ts +1 -2
  372. package/lib/utils/url.js +201 -146
  373. package/lib/utils/user.js +61 -59
  374. package/lib/utils/userAgent.js +11 -11
  375. package/lib/utils/userRole.d.ts +3 -3
  376. package/lib/utils/userRole.js +56 -58
  377. package/package.json +207 -226
  378. package/lib/config/eslint/index.d.ts +0 -2
  379. package/lib/config/eslint/index.js +0 -36
  380. package/lib/config/eslint/lib/order.d.ts +0 -3
  381. package/lib/config/eslint/lib/order.js +0 -30
  382. package/lib/config/eslint/lib/prettier.d.ts +0 -3
  383. package/lib/config/eslint/lib/prettier.js +0 -23
  384. package/lib/config/eslint/lib/typescript.d.ts +0 -2
  385. package/lib/config/eslint/lib/typescript.js +0 -98
  386. package/lib/config/eslint/react.d.ts +0 -2
  387. package/lib/config/eslint/react.js +0 -30
  388. package/lib/hooks/useEventCalback.d.ts +0 -14
  389. package/lib/hooks/useEventCalback.js +0 -51
  390. package/lib/types/externals.d.js +0 -2
package/lib/utils/url.js CHANGED
@@ -1,166 +1,221 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.X_FRAME_OPTIONS = void 0;
7
- exports.fetchText = fetchText;
8
- exports.getApiBaseUrl = getApiBaseUrl;
9
- exports.getStorageUrl = getStorageUrl;
10
- exports.hasHttpProtocol = hasHttpProtocol;
11
- exports.isUrlValid = isUrlValid;
12
- exports.parseLocation = exports.parseHeadersResponse = void 0;
13
- var _lodash = require("lodash");
14
- var _shard = require("../constants/shard");
15
- var _tier = require("../constants/tier");
16
- var _windowService = require("../services/windowService");
17
- var _logger = require("./logger");
18
- var _shard2 = require("./shard");
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.parseLocation = exports.parseHeadersResponse = exports.X_FRAME_OPTIONS = exports.fetchText = exports.isUrlValid = exports.hasHttpProtocol = exports.getStorageUrl = exports.getApiBaseUrl = void 0;
40
+ var lodash_1 = require("lodash");
41
+ var shard_1 = require("../constants/shard");
42
+ var tier_1 = require("../constants/tier");
43
+ var windowService_1 = require("../services/windowService");
44
+ var logger_1 = require("./logger");
45
+ var shard_2 = require("./shard");
19
46
  function getApiBaseUrl(tier, apiUrlString) {
20
- // skip shard logic on LOCAL or if not using a custom domain (e.g. staging)
21
- if (tier === _tier.TIER.LOCAL || apiUrlString.includes('azurewebsites.net')) {
22
- return apiUrlString;
23
- }
24
- let shardKey = (0, _shard2.getShardKey)();
25
-
26
- // TODO: default ROOT to point to Purdue, until we have a landing marketing page
27
- if (shardKey === _shard.SHARD.ROOT) {
28
- shardKey = _shard.SHARD.PURDUE;
29
- }
30
- const protocol = apiUrlString.substring(0, apiUrlString.indexOf('//'));
31
- const host = apiUrlString.substring(apiUrlString.indexOf('://') + 3);
32
- let tierSubdomainPart = '';
33
- switch (tier) {
34
- case _tier.TIER.DEV:
35
- tierSubdomainPart = '.dev';
36
- break;
37
- case _tier.TIER.QA:
38
- tierSubdomainPart = '.qa';
39
- break;
40
- }
41
- return `${protocol}//${shardKey}${tierSubdomainPart}.${host}`;
47
+ // skip shard logic on LOCAL or if not using a custom domain (e.g. staging)
48
+ if (tier === tier_1.TIER.LOCAL || apiUrlString.includes('azurewebsites.net')) {
49
+ return apiUrlString;
50
+ }
51
+ var shardKey = shard_2.getShardKey();
52
+ // TODO: default ROOT to point to Purdue, until we have a landing marketing page
53
+ if (shardKey === shard_1.SHARD.ROOT) {
54
+ shardKey = shard_1.SHARD.PURDUE;
55
+ }
56
+ var protocol = apiUrlString.substring(0, apiUrlString.indexOf('//'));
57
+ var host = apiUrlString.substring(apiUrlString.indexOf('://') + 3);
58
+ var tierSubdomainPart = '';
59
+ switch (tier) {
60
+ case tier_1.TIER.DEV:
61
+ tierSubdomainPart = '.dev';
62
+ break;
63
+ case tier_1.TIER.QA:
64
+ tierSubdomainPart = '.qa';
65
+ break;
66
+ }
67
+ return protocol + "//" + shardKey + tierSubdomainPart + "." + host;
42
68
  }
69
+ exports.getApiBaseUrl = getApiBaseUrl;
43
70
  function getStorageUrl(config, url) {
44
- return config.TIER === _tier.TIER.LOCAL && !!config.STORAGE_URL ? url.replace('http://127.0.0.1:10000', config.STORAGE_URL) : url;
71
+ return config.TIER === tier_1.TIER.LOCAL && !!config.STORAGE_URL
72
+ ? url.replace('http://127.0.0.1:10000', config.STORAGE_URL)
73
+ : url;
45
74
  }
75
+ exports.getStorageUrl = getStorageUrl;
46
76
  function hasHttpProtocol(url) {
47
- return /^(http|https):\/\//.test(url);
77
+ return /^(http|https):\/\//.test(url);
48
78
  }
79
+ exports.hasHttpProtocol = hasHttpProtocol;
49
80
  function isUrlValid(url) {
50
- return /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#[\]@!$&'()*+,;=]+$/.test(url);
81
+ // modified from https://stackoverflow.com/a/3809435
82
+ return /^(https?:\/\/)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&/[\]!$&'*+,;=]*)$/.test(url);
51
83
  }
52
-
84
+ exports.isUrlValid = isUrlValid;
53
85
  /** The total number of tries for `fetchText`, including the initial request. */
54
- const TRY_LIMIT = 5;
86
+ var TRY_LIMIT = 5;
55
87
  function wait(time) {
56
- return new Promise(resolve => {
57
- setTimeout(resolve, time);
58
- });
88
+ return new Promise(function (resolve) {
89
+ setTimeout(resolve, time);
90
+ });
59
91
  }
60
- async function fetchText(url, options) {
61
- let tryCount = 0;
62
- do {
63
- tryCount++;
64
- try {
65
- const resp = await fetch(url, options);
66
- const text = await resp.text();
67
- return text;
68
- } catch (error) {
69
- (0, _logger.getLogger)().error(`Failed to fetch ${url}. attempt: ${tryCount}, error: ${error}`);
70
- if (tryCount < TRY_LIMIT) {
71
- await wait(2 ** (tryCount - 1) * 100); // 100, 200, 400, 800
72
- }
73
- }
74
- } while (tryCount < TRY_LIMIT);
75
- throw new Error(`Failed to fetch ${url} after ${TRY_LIMIT} attempts.`);
92
+ function fetchText(url, options) {
93
+ return __awaiter(this, void 0, void 0, function () {
94
+ var tryCount, resp, text, error_1;
95
+ return __generator(this, function (_a) {
96
+ switch (_a.label) {
97
+ case 0:
98
+ tryCount = 0;
99
+ _a.label = 1;
100
+ case 1:
101
+ tryCount++;
102
+ _a.label = 2;
103
+ case 2:
104
+ _a.trys.push([2, 5, , 8]);
105
+ return [4 /*yield*/, fetch(url, options)];
106
+ case 3:
107
+ resp = _a.sent();
108
+ return [4 /*yield*/, resp.text()];
109
+ case 4:
110
+ text = _a.sent();
111
+ return [2 /*return*/, text];
112
+ case 5:
113
+ error_1 = _a.sent();
114
+ logger_1.getLogger().error("Failed to fetch " + url + ". attempt: " + tryCount + ", error: " + error_1);
115
+ if (!(tryCount < TRY_LIMIT)) return [3 /*break*/, 7];
116
+ return [4 /*yield*/, wait(Math.pow(2, (tryCount - 1)) * 100)]; // 100, 200, 400, 800
117
+ case 6:
118
+ _a.sent(); // 100, 200, 400, 800
119
+ _a.label = 7;
120
+ case 7: return [3 /*break*/, 8];
121
+ case 8:
122
+ if (tryCount < TRY_LIMIT) return [3 /*break*/, 1];
123
+ _a.label = 9;
124
+ case 9: throw new Error("Failed to fetch " + url + " after " + TRY_LIMIT + " attempts.");
125
+ }
126
+ });
127
+ });
76
128
  }
77
- let X_FRAME_OPTIONS = exports.X_FRAME_OPTIONS = /*#__PURE__*/function (X_FRAME_OPTIONS) {
78
- X_FRAME_OPTIONS["DENY"] = "DENY";
79
- X_FRAME_OPTIONS["SAMEORIGIN"] = "SAMEORIGIN";
80
- X_FRAME_OPTIONS["ALLOW_FROM"] = "ALLOW-FROM";
81
- return X_FRAME_OPTIONS;
82
- }({});
83
- /**
84
- * Using the given headers, determine if a url is allowed to be displayed in an iFrame.
85
- * @param headers An array of request headers.
86
- * @returns The parsed result
129
+ exports.fetchText = fetchText;
130
+ var X_FRAME_OPTIONS;
131
+ (function (X_FRAME_OPTIONS) {
132
+ X_FRAME_OPTIONS["DENY"] = "DENY";
133
+ X_FRAME_OPTIONS["SAMEORIGIN"] = "SAMEORIGIN";
134
+ X_FRAME_OPTIONS["ALLOW_FROM"] = "ALLOW-FROM";
135
+ })(X_FRAME_OPTIONS = exports.X_FRAME_OPTIONS || (exports.X_FRAME_OPTIONS = {}));
136
+ /**
137
+ * Using the given headers, determine if a url is allowed to be displayed in an iFrame.
138
+ * @param headers An array of request headers.
139
+ * @returns The parsed result
87
140
  */
88
- const parseHeadersResponse = headers => {
89
- // default result
90
- const result = {
91
- isValid: false,
92
- iFrameAllowed: undefined
93
- };
94
- if (!headers) {
95
- return result;
96
- }
97
- result.isValid = true;
98
- result.iFrameAllowed = true;
99
- const location = _windowService.windowService.getLocation();
100
-
101
- // content-security-policy / x-content-security-policy
102
- // can contain 'frame-ancestors <source> <source>' with one or many sources
103
- // iFrameAllowed if it does not contain 'frame-ancestors' or if it does with an acceptable source
104
- const xContentSecurityPolicy = (0, _lodash.find)(headers, (value, key) => key.toLowerCase() === 'content-security-policy' || key.toLowerCase() === 'x-content-security-policy');
105
- if (xContentSecurityPolicy && (0, _lodash.isArray)(xContentSecurityPolicy)) {
106
- // define all acceptable frame-ancestors sources
107
- // protocol, full location host, host, and all wildcard permutations
108
- const acceptableSources = [location.protocol, `${location.protocol}//${location.host}`, location.host];
109
- const hostParts = location.host.split('.');
110
- while (hostParts.length > 2) {
111
- hostParts.shift();
112
- const tempHost = `*.${hostParts.join('.')}`;
113
- acceptableSources.push(tempHost);
114
- acceptableSources.push(`${location.protocol}//${tempHost}`);
141
+ var parseHeadersResponse = function (headers) {
142
+ // default result
143
+ var result = {
144
+ isValid: false,
145
+ iFrameAllowed: undefined
146
+ };
147
+ if (!headers) {
148
+ return result;
115
149
  }
116
- result.iFrameAllowed = !xContentSecurityPolicy.some(x => x.indexOf('frame-ancestors ') >= 0) || xContentSecurityPolicy.some(x => {
117
- /**
118
- * Matches
119
- * * the string `frame-ancestors `
120
- * * one or many of the following, followed by a space, semicolon, or end of string
121
- * * `http:`
122
- * * `https:`
123
- * * `'self'`
124
- * * `'none'`
125
- * * url with optional scheme and optional asterisk wildcards
126
- */
127
- const frameAncestorsRegex = /frame-ancestors ((?:(?:(?:http:)|(?:https:)|(?:'self')|(?:'none')|(?:(?:https?:\/\/)?[\w*.-]+(?:\.[\w*.-]+)+[\w-._~:/?#[\]@!$&'()*+,=]+))(?:[ ;]|$))+)/g;
128
- const results = frameAncestorsRegex.exec(x);
129
- if (!results) {
130
- return false;
131
- }
132
- const sources = results[1].split(' ');
133
- return sources.some(source => acceptableSources.some(acceptableSource => acceptableSource === source));
150
+ result.isValid = true;
151
+ result.iFrameAllowed = true;
152
+ var location = windowService_1.windowService.getLocation();
153
+ // content-security-policy / x-content-security-policy
154
+ // can contain 'frame-ancestors <source> <source>' with one or many sources
155
+ // iFrameAllowed if it does not contain 'frame-ancestors' or if it does with an acceptable source
156
+ var xContentSecurityPolicy = lodash_1.find(headers, function (value, key) {
157
+ return key.toLowerCase() === 'content-security-policy' || key.toLowerCase() === 'x-content-security-policy';
134
158
  });
135
- }
136
-
137
- // x-frame-options can be ['SAMEORIGIN', 'DENY', 'ALLOW-FROM...']
138
- // iFrameAllowed if the the x-frame-options is 'ALLOW-FROM {app web url}'
139
- const xFrameOptions = (0, _lodash.find)(headers, (value, key) => key.toLowerCase() === 'x-frame-options');
140
- if (xFrameOptions && (0, _lodash.isArray)(xFrameOptions)) {
141
- result.iFrameAllowed = !xFrameOptions.some(x => x === X_FRAME_OPTIONS.DENY || x === X_FRAME_OPTIONS.SAMEORIGIN) && xFrameOptions.some(x => x === `${X_FRAME_OPTIONS.ALLOW_FROM} ${location.protocol}//${location.host}`);
142
- }
143
- return result;
159
+ if (xContentSecurityPolicy) {
160
+ // define all acceptable frame-ancestors sources
161
+ // protocol, full location host, host, and all wildcard permutations
162
+ var acceptableSources_1 = [location.protocol, location.protocol + "//" + location.host, location.host];
163
+ var hostParts = location.host.split('.');
164
+ while (hostParts.length > 2) {
165
+ hostParts.shift();
166
+ var tempHost = "*." + hostParts.join('.');
167
+ acceptableSources_1.push(tempHost);
168
+ acceptableSources_1.push(location.protocol + "//" + tempHost);
169
+ }
170
+ result.iFrameAllowed =
171
+ !xContentSecurityPolicy.some(function (x) { return x.indexOf('frame-ancestors ') >= 0; }) ||
172
+ xContentSecurityPolicy.some(function (x) {
173
+ /**
174
+ * Matches
175
+ * * the string `frame-ancestors `
176
+ * * one or many of the following, followed by a space, semicolon, or end of string
177
+ * * `http:`
178
+ * * `https:`
179
+ * * `'self'`
180
+ * * `'none'`
181
+ * * url with optional scheme and optional asterisk wildcards
182
+ */
183
+ var frameAncestorsRegex = /frame-ancestors ((?:(?:(?:http:)|(?:https:)|(?:'self')|(?:'none')|(?:(?:https?:\/\/)?[\w*.-]+(?:\.[\w*.-]+)+[\w-._~:/?#[\]@!$&'()*+,=]+))(?:[ ;]|$))+)/g;
184
+ var results = frameAncestorsRegex.exec(x);
185
+ if (!results) {
186
+ return false;
187
+ }
188
+ var sources = results[1].split(' ');
189
+ return sources.some(function (source) { return acceptableSources_1.some(function (acceptableSource) { return acceptableSource === source; }); });
190
+ });
191
+ }
192
+ // x-frame-options can be ['SAMEORIGIN', 'DENY', 'ALLOW-FROM...']
193
+ // iFrameAllowed if the the x-frame-options is 'ALLOW-FROM {app web url}'
194
+ var xFrameOptions = lodash_1.find(headers, function (value, key) { return key.toLowerCase() === 'x-frame-options'; });
195
+ if (xFrameOptions) {
196
+ result.iFrameAllowed =
197
+ !xFrameOptions.some(function (x) { return x === X_FRAME_OPTIONS.DENY || x === X_FRAME_OPTIONS.SAMEORIGIN; }) &&
198
+ xFrameOptions.some(function (x) { return x === X_FRAME_OPTIONS.ALLOW_FROM + " " + location.protocol + "//" + location.host; });
199
+ }
200
+ return result;
144
201
  };
145
-
146
- /**
147
- * Parse a path string into a location with separate pathname, search, and hash components.
148
- * @param path A path string
149
- * @returns The parsed result
150
- */
151
202
  exports.parseHeadersResponse = parseHeadersResponse;
152
- const parseLocation = path => {
153
- const searchStart = path.indexOf('?');
154
- const hashStart = path.indexOf('#');
155
- const searchEnd = hashStart > -1 ? hashStart : undefined;
156
- const pathname = searchStart > -1 ? path.substring(0, searchStart) : hashStart > -1 ? path.substring(0, hashStart) : path;
157
- const search = searchStart > -1 ? path.substring(searchStart, searchEnd) : undefined;
158
- const hash = hashStart > -1 ? path.substring(hashStart) : undefined;
159
- return {
160
- pathname: pathname || '/',
161
- search: search,
162
- hash: hash
163
- };
203
+ /**
204
+ * Parse a path string into a location with separate pathname, search, and hash components.
205
+ * @param path A path string
206
+ * @returns The parsed result
207
+ */
208
+ var parseLocation = function (path) {
209
+ var searchStart = path.indexOf('?');
210
+ var hashStart = path.indexOf('#');
211
+ var searchEnd = hashStart > -1 ? hashStart : undefined;
212
+ var pathname = searchStart > -1 ? path.substring(0, searchStart) : hashStart > -1 ? path.substring(0, hashStart) : path;
213
+ var search = searchStart > -1 ? path.substring(searchStart, searchEnd) : undefined;
214
+ var hash = hashStart > -1 ? path.substring(hashStart) : undefined;
215
+ return {
216
+ pathname: pathname || '/',
217
+ search: search,
218
+ hash: hash
219
+ };
164
220
  };
165
221
  exports.parseLocation = parseLocation;
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9zaGFyZCIsIl90aWVyIiwiX3dpbmRvd1NlcnZpY2UiLCJfbG9nZ2VyIiwiX3NoYXJkMiIsImdldEFwaUJhc2VVcmwiLCJ0aWVyIiwiYXBpVXJsU3RyaW5nIiwiVElFUiIsIkxPQ0FMIiwiaW5jbHVkZXMiLCJzaGFyZEtleSIsImdldFNoYXJkS2V5IiwiU0hBUkQiLCJST09UIiwiUFVSRFVFIiwicHJvdG9jb2wiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwiaG9zdCIsInRpZXJTdWJkb21haW5QYXJ0IiwiREVWIiwiUUEiLCJnZXRTdG9yYWdlVXJsIiwiY29uZmlnIiwidXJsIiwiU1RPUkFHRV9VUkwiLCJyZXBsYWNlIiwiaGFzSHR0cFByb3RvY29sIiwidGVzdCIsImlzVXJsVmFsaWQiLCJUUllfTElNSVQiLCJ3YWl0IiwidGltZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImZldGNoVGV4dCIsIm9wdGlvbnMiLCJ0cnlDb3VudCIsInJlc3AiLCJmZXRjaCIsInRleHQiLCJlcnJvciIsImdldExvZ2dlciIsIkVycm9yIiwiWF9GUkFNRV9PUFRJT05TIiwiZXhwb3J0cyIsInBhcnNlSGVhZGVyc1Jlc3BvbnNlIiwiaGVhZGVycyIsInJlc3VsdCIsImlzVmFsaWQiLCJpRnJhbWVBbGxvd2VkIiwidW5kZWZpbmVkIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJ4Q29udGVudFNlY3VyaXR5UG9saWN5IiwiZmluZCIsInZhbHVlIiwia2V5IiwidG9Mb3dlckNhc2UiLCJpc0FycmF5IiwiYWNjZXB0YWJsZVNvdXJjZXMiLCJob3N0UGFydHMiLCJzcGxpdCIsImxlbmd0aCIsInNoaWZ0IiwidGVtcEhvc3QiLCJqb2luIiwicHVzaCIsInNvbWUiLCJ4IiwiZnJhbWVBbmNlc3RvcnNSZWdleCIsInJlc3VsdHMiLCJleGVjIiwic291cmNlcyIsInNvdXJjZSIsImFjY2VwdGFibGVTb3VyY2UiLCJ4RnJhbWVPcHRpb25zIiwiREVOWSIsIlNBTUVPUklHSU4iLCJBTExPV19GUk9NIiwicGFyc2VMb2NhdGlvbiIsInBhdGgiLCJzZWFyY2hTdGFydCIsImhhc2hTdGFydCIsInNlYXJjaEVuZCIsInBhdGhuYW1lIiwic2VhcmNoIiwiaGFzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb25EZXNjcmlwdG9yIH0gZnJvbSAnaGlzdG9yeSdcclxuaW1wb3J0IHsgRGljdGlvbmFyeSwgZmluZCwgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgU0hBUkQgfSBmcm9tICcuLi9jb25zdGFudHMvc2hhcmQnXHJcbmltcG9ydCB7IFRJRVIgfSBmcm9tICcuLi9jb25zdGFudHMvdGllcidcclxuaW1wb3J0IHsgd2luZG93U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dpbmRvd1NlcnZpY2UnXHJcbmltcG9ydCB7IEFwcENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi90eXBlcydcclxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXHJcbmltcG9ydCB7IGdldFNoYXJkS2V5IH0gZnJvbSAnLi9zaGFyZCdcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBcGlCYXNlVXJsKHRpZXI6IFRJRVIsIGFwaVVybFN0cmluZzogc3RyaW5nKSB7XHJcblx0Ly8gc2tpcCBzaGFyZCBsb2dpYyBvbiBMT0NBTCBvciBpZiBub3QgdXNpbmcgYSBjdXN0b20gZG9tYWluIChlLmcuIHN0YWdpbmcpXHJcblx0aWYgKHRpZXIgPT09IFRJRVIuTE9DQUwgfHwgYXBpVXJsU3RyaW5nLmluY2x1ZGVzKCdhenVyZXdlYnNpdGVzLm5ldCcpKSB7XHJcblx0XHRyZXR1cm4gYXBpVXJsU3RyaW5nXHJcblx0fVxyXG5cdGxldCBzaGFyZEtleSA9IGdldFNoYXJkS2V5KClcclxuXHJcblx0Ly8gVE9ETzogZGVmYXVsdCBST09UIHRvIHBvaW50IHRvIFB1cmR1ZSwgdW50aWwgd2UgaGF2ZSBhIGxhbmRpbmcgbWFya2V0aW5nIHBhZ2VcclxuXHRpZiAoc2hhcmRLZXkgPT09IFNIQVJELlJPT1QpIHtcclxuXHRcdHNoYXJkS2V5ID0gU0hBUkQuUFVSRFVFXHJcblx0fVxyXG5cclxuXHRjb25zdCBwcm90b2NvbCA9IGFwaVVybFN0cmluZy5zdWJzdHJpbmcoMCwgYXBpVXJsU3RyaW5nLmluZGV4T2YoJy8vJykpXHJcblx0Y29uc3QgaG9zdCA9IGFwaVVybFN0cmluZy5zdWJzdHJpbmcoYXBpVXJsU3RyaW5nLmluZGV4T2YoJzovLycpICsgMylcclxuXHRsZXQgdGllclN1YmRvbWFpblBhcnQgPSAnJ1xyXG5cdHN3aXRjaCAodGllcikge1xyXG5cdFx0Y2FzZSBUSUVSLkRFVjpcclxuXHRcdFx0dGllclN1YmRvbWFpblBhcnQgPSAnLmRldidcclxuXHRcdFx0YnJlYWtcclxuXHRcdGNhc2UgVElFUi5RQTpcclxuXHRcdFx0dGllclN1YmRvbWFpblBhcnQgPSAnLnFhJ1xyXG5cdFx0XHRicmVha1xyXG5cdH1cclxuXHRyZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke3NoYXJkS2V5fSR7dGllclN1YmRvbWFpblBhcnR9LiR7aG9zdH1gXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlVXJsKGNvbmZpZzogQXBwQ29uZmlndXJhdGlvbiwgdXJsOiBzdHJpbmcpIHtcclxuXHRyZXR1cm4gY29uZmlnLlRJRVIgPT09IFRJRVIuTE9DQUwgJiYgISFjb25maWcuU1RPUkFHRV9VUkxcclxuXHRcdD8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8xMjcuMC4wLjE6MTAwMDAnLCBjb25maWcuU1RPUkFHRV9VUkwpXHJcblx0XHQ6IHVybFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFzSHR0cFByb3RvY29sKHVybDogc3RyaW5nKSB7XHJcblx0cmV0dXJuIC9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdCh1cmwpXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VybFZhbGlkKHVybDogc3RyaW5nKSB7XHJcblx0cmV0dXJuIC9eKD86aHR0cChzKT86XFwvXFwvKT9bXFx3Li1dKyg/OlxcLltcXHcuLV0rKStbXFx3XFwtLl9+Oi8/I1tcXF1AISQmJygpKissOz1dKyQvLnRlc3QodXJsKVxyXG59XHJcblxyXG4vKiogVGhlIHRvdGFsIG51bWJlciBvZiB0cmllcyBmb3IgYGZldGNoVGV4dGAsIGluY2x1ZGluZyB0aGUgaW5pdGlhbCByZXF1ZXN0LiAqL1xyXG5jb25zdCBUUllfTElNSVQgPSA1XHJcblxyXG5mdW5jdGlvbiB3YWl0KHRpbWU6IG51bWJlcikge1xyXG5cdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuXHRcdHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSlcclxuXHR9KVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hUZXh0KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdEluaXQpIHtcclxuXHRsZXQgdHJ5Q291bnQgPSAwXHJcblx0ZG8ge1xyXG5cdFx0dHJ5Q291bnQrK1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVybCwgb3B0aW9ucylcclxuXHRcdFx0Y29uc3QgdGV4dCA9IGF3YWl0IHJlc3AudGV4dCgpXHJcblx0XHRcdHJldHVybiB0ZXh0XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRnZXRMb2dnZXIoKS5lcnJvcihgRmFpbGVkIHRvIGZldGNoICR7dXJsfS4gYXR0ZW1wdDogJHt0cnlDb3VudH0sIGVycm9yOiAke2Vycm9yfWApXHJcblx0XHRcdGlmICh0cnlDb3VudCA8IFRSWV9MSU1JVCkge1xyXG5cdFx0XHRcdGF3YWl0IHdhaXQoMiAqKiAodHJ5Q291bnQgLSAxKSAqIDEwMCkgLy8gMTAwLCAyMDAsIDQwMCwgODAwXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9IHdoaWxlICh0cnlDb3VudCA8IFRSWV9MSU1JVClcclxuXHJcblx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7VFJZX0xJTUlUfSBhdHRlbXB0cy5gKVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBYX0ZSQU1FX09QVElPTlMge1xyXG5cdERFTlkgPSAnREVOWScsXHJcblx0U0FNRU9SSUdJTiA9ICdTQU1FT1JJR0lOJyxcclxuXHRBTExPV19GUk9NID0gJ0FMTE9XLUZST00nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkSGVhZGVyc1Jlc3BvbnNlIHtcclxuXHRpc1ZhbGlkOiBib29sZWFuXHJcblx0aUZyYW1lQWxsb3dlZD86IGJvb2xlYW5cclxufVxyXG5cclxuLyoqXHJcbiAqIFVzaW5nIHRoZSBnaXZlbiBoZWFkZXJzLCBkZXRlcm1pbmUgaWYgYSB1cmwgaXMgYWxsb3dlZCB0byBiZSBkaXNwbGF5ZWQgaW4gYW4gaUZyYW1lLlxyXG4gKiBAcGFyYW0gaGVhZGVycyBBbiBhcnJheSBvZiByZXF1ZXN0IGhlYWRlcnMuXHJcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcmVzdWx0XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcGFyc2VIZWFkZXJzUmVzcG9uc2UgPSAoaGVhZGVycz86IERpY3Rpb25hcnk8c3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ+KSA9PiB7XHJcblx0Ly8gZGVmYXVsdCByZXN1bHRcclxuXHRjb25zdCByZXN1bHQ6IFBhcnNlZEhlYWRlcnNSZXNwb25zZSA9IHtcclxuXHRcdGlzVmFsaWQ6IGZhbHNlLFxyXG5cdFx0aUZyYW1lQWxsb3dlZDogdW5kZWZpbmVkXHJcblx0fVxyXG5cclxuXHRpZiAoIWhlYWRlcnMpIHtcclxuXHRcdHJldHVybiByZXN1bHRcclxuXHR9XHJcblxyXG5cdHJlc3VsdC5pc1ZhbGlkID0gdHJ1ZVxyXG5cdHJlc3VsdC5pRnJhbWVBbGxvd2VkID0gdHJ1ZVxyXG5cclxuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxyXG5cclxuXHQvLyBjb250ZW50LXNlY3VyaXR5LXBvbGljeSAvIHgtY29udGVudC1zZWN1cml0eS1wb2xpY3lcclxuXHQvLyBjYW4gY29udGFpbiAnZnJhbWUtYW5jZXN0b3JzIDxzb3VyY2U+IDxzb3VyY2U+JyB3aXRoIG9uZSBvciBtYW55IHNvdXJjZXNcclxuXHQvLyBpRnJhbWVBbGxvd2VkIGlmIGl0IGRvZXMgbm90IGNvbnRhaW4gJ2ZyYW1lLWFuY2VzdG9ycycgb3IgaWYgaXQgZG9lcyB3aXRoIGFuIGFjY2VwdGFibGUgc291cmNlXHJcblx0Y29uc3QgeENvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZpbmQoXHJcblx0XHRoZWFkZXJzLFxyXG5cdFx0KHZhbHVlLCBrZXkpID0+XHJcblx0XHRcdGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC1zZWN1cml0eS1wb2xpY3knIHx8IGtleS50b0xvd2VyQ2FzZSgpID09PSAneC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSdcclxuXHQpXHJcblx0aWYgKHhDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgaXNBcnJheSh4Q29udGVudFNlY3VyaXR5UG9saWN5KSkge1xyXG5cdFx0Ly8gZGVmaW5lIGFsbCBhY2NlcHRhYmxlIGZyYW1lLWFuY2VzdG9ycyBzb3VyY2VzXHJcblx0XHQvLyBwcm90b2NvbCwgZnVsbCBsb2NhdGlvbiBob3N0LCBob3N0LCBhbmQgYWxsIHdpbGRjYXJkIHBlcm11dGF0aW9uc1xyXG5cdFx0Y29uc3QgYWNjZXB0YWJsZVNvdXJjZXMgPSBbbG9jYXRpb24ucHJvdG9jb2wsIGAke2xvY2F0aW9uLnByb3RvY29sfS8vJHtsb2NhdGlvbi5ob3N0fWAsIGxvY2F0aW9uLmhvc3RdXHJcblx0XHRjb25zdCBob3N0UGFydHMgPSBsb2NhdGlvbi5ob3N0LnNwbGl0KCcuJylcclxuXHRcdHdoaWxlIChob3N0UGFydHMubGVuZ3RoID4gMikge1xyXG5cdFx0XHRob3N0UGFydHMuc2hpZnQoKVxyXG5cdFx0XHRjb25zdCB0ZW1wSG9zdCA9IGAqLiR7aG9zdFBhcnRzLmpvaW4oJy4nKX1gXHJcblx0XHRcdGFjY2VwdGFibGVTb3VyY2VzLnB1c2godGVtcEhvc3QpXHJcblx0XHRcdGFjY2VwdGFibGVTb3VyY2VzLnB1c2goYCR7bG9jYXRpb24ucHJvdG9jb2x9Ly8ke3RlbXBIb3N0fWApXHJcblx0XHR9XHJcblx0XHRyZXN1bHQuaUZyYW1lQWxsb3dlZCA9XHJcblx0XHRcdCF4Q29udGVudFNlY3VyaXR5UG9saWN5LnNvbWUoeCA9PiB4LmluZGV4T2YoJ2ZyYW1lLWFuY2VzdG9ycyAnKSA+PSAwKSB8fFxyXG5cdFx0XHR4Q29udGVudFNlY3VyaXR5UG9saWN5LnNvbWUoeCA9PiB7XHJcblx0XHRcdFx0LyoqXHJcblx0XHRcdFx0ICogTWF0Y2hlc1xyXG5cdFx0XHRcdCAqICogdGhlIHN0cmluZyBgZnJhbWUtYW5jZXN0b3JzIGBcclxuXHRcdFx0XHQgKiAqIG9uZSBvciBtYW55IG9mIHRoZSBmb2xsb3dpbmcsIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIHNlbWljb2xvbiwgb3IgZW5kIG9mIHN0cmluZ1xyXG5cdFx0XHRcdCAqICAgICAqIGBodHRwOmBcclxuXHRcdFx0XHQgKiAgICAgKiBgaHR0cHM6YFxyXG5cdFx0XHRcdCAqICAgICAqIGAnc2VsZidgXHJcblx0XHRcdFx0ICogICAgICogYCdub25lJ2BcclxuXHRcdFx0XHQgKiAgICAgKiB1cmwgd2l0aCBvcHRpb25hbCBzY2hlbWUgYW5kIG9wdGlvbmFsIGFzdGVyaXNrIHdpbGRjYXJkc1xyXG5cdFx0XHRcdCAqL1xyXG5cdFx0XHRcdGNvbnN0IGZyYW1lQW5jZXN0b3JzUmVnZXggPVxyXG5cdFx0XHRcdFx0L2ZyYW1lLWFuY2VzdG9ycyAoKD86KD86KD86aHR0cDopfCg/Omh0dHBzOil8KD86J3NlbGYnKXwoPzonbm9uZScpfCg/Oig/Omh0dHBzPzpcXC9cXC8pP1tcXHcqLi1dKyg/OlxcLltcXHcqLi1dKykrW1xcdy0uX346Lz8jW1xcXUAhJCYnKCkqKyw9XSspKSg/OlsgO118JCkpKykvZ1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdHMgPSBmcmFtZUFuY2VzdG9yc1JlZ2V4LmV4ZWMoeClcclxuXHRcdFx0XHRpZiAoIXJlc3VsdHMpIHtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBzb3VyY2VzID0gcmVzdWx0c1sxXS5zcGxpdCgnICcpXHJcblx0XHRcdFx0cmV0dXJuIHNvdXJjZXMuc29tZShzb3VyY2UgPT4gYWNjZXB0YWJsZVNvdXJjZXMuc29tZShhY2NlcHRhYmxlU291cmNlID0+IGFjY2VwdGFibGVTb3VyY2UgPT09IHNvdXJjZSkpXHJcblx0XHRcdH0pXHJcblx0fVxyXG5cclxuXHQvLyB4LWZyYW1lLW9wdGlvbnMgY2FuIGJlIFsnU0FNRU9SSUdJTicsICdERU5ZJywgJ0FMTE9XLUZST00uLi4nXVxyXG5cdC8vIGlGcmFtZUFsbG93ZWQgaWYgdGhlIHRoZSB4LWZyYW1lLW9wdGlvbnMgaXMgJ0FMTE9XLUZST00ge2FwcCB3ZWIgdXJsfSdcclxuXHRjb25zdCB4RnJhbWVPcHRpb25zID0gZmluZChoZWFkZXJzLCAodmFsdWUsIGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4LWZyYW1lLW9wdGlvbnMnKVxyXG5cdGlmICh4RnJhbWVPcHRpb25zICYmIGlzQXJyYXkoeEZyYW1lT3B0aW9ucykpIHtcclxuXHRcdHJlc3VsdC5pRnJhbWVBbGxvd2VkID1cclxuXHRcdFx0IXhGcmFtZU9wdGlvbnMuc29tZSh4ID0+IHggPT09IFhfRlJBTUVfT1BUSU9OUy5ERU5ZIHx8IHggPT09IFhfRlJBTUVfT1BUSU9OUy5TQU1FT1JJR0lOKSAmJlxyXG5cdFx0XHR4RnJhbWVPcHRpb25zLnNvbWUoeCA9PiB4ID09PSBgJHtYX0ZSQU1FX09QVElPTlMuQUxMT1dfRlJPTX0gJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdH1gKVxyXG5cdH1cclxuXHRyZXR1cm4gcmVzdWx0XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYXJzZSBhIHBhdGggc3RyaW5nIGludG8gYSBsb2NhdGlvbiB3aXRoIHNlcGFyYXRlIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoIGNvbXBvbmVudHMuXHJcbiAqIEBwYXJhbSBwYXRoIEEgcGF0aCBzdHJpbmdcclxuICogQHJldHVybnMgVGhlIHBhcnNlZCByZXN1bHRcclxuICovXHJcbmV4cG9ydCBjb25zdCBwYXJzZUxvY2F0aW9uID0gKHBhdGg6IHN0cmluZyk6IExvY2F0aW9uRGVzY3JpcHRvciA9PiB7XHJcblx0Y29uc3Qgc2VhcmNoU3RhcnQgPSBwYXRoLmluZGV4T2YoJz8nKVxyXG5cdGNvbnN0IGhhc2hTdGFydCA9IHBhdGguaW5kZXhPZignIycpXHJcblx0Y29uc3Qgc2VhcmNoRW5kID0gaGFzaFN0YXJ0ID4gLTEgPyBoYXNoU3RhcnQgOiB1bmRlZmluZWRcclxuXHRjb25zdCBwYXRobmFtZSA9XHJcblx0XHRzZWFyY2hTdGFydCA+IC0xID8gcGF0aC5zdWJzdHJpbmcoMCwgc2VhcmNoU3RhcnQpIDogaGFzaFN0YXJ0ID4gLTEgPyBwYXRoLnN1YnN0cmluZygwLCBoYXNoU3RhcnQpIDogcGF0aFxyXG5cdGNvbnN0IHNlYXJjaCA9IHNlYXJjaFN0YXJ0ID4gLTEgPyBwYXRoLnN1YnN0cmluZyhzZWFyY2hTdGFydCwgc2VhcmNoRW5kKSA6IHVuZGVmaW5lZFxyXG5cdGNvbnN0IGhhc2ggPSBoYXNoU3RhcnQgPiAtMSA/IHBhdGguc3Vic3RyaW5nKGhhc2hTdGFydCkgOiB1bmRlZmluZWRcclxuXHRyZXR1cm4ge1xyXG5cdFx0cGF0aG5hbWU6IHBhdGhuYW1lIHx8ICcvJyxcclxuXHRcdHNlYXJjaDogc2VhcmNoLFxyXG5cdFx0aGFzaDogaGFzaFxyXG5cdH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FB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
package/lib/utils/user.js CHANGED
@@ -1,70 +1,72 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.stopImpersonation = exports.startImpersonation = exports.filterUsersByRole = exports.displayNamePossessive = exports.displayName = exports.displayFirstNamePossessive = exports.displayFirstName = void 0;
7
- var _constants = require("../constants");
8
- var _actionCreator = require("../redux/actionCreator");
9
- var _noStoreSaga = require("../redux/sagas/noStoreSaga");
10
- var _fetch = require("./fetch");
11
- const makePossessive = word => word.endsWith('s') ? `${word}’` : `${word}’s`;
12
- const displayName = function (u) {
13
- let shouldReverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
14
- return !!u.firstName && !!u.lastName ? shouldReverse ? `${u.lastName}, ${u.firstName}` : `${u.firstName} ${u.lastName}` : u.email;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stopImpersonation = exports.startImpersonation = exports.filterUsersByRole = exports.displayFirstNamePossessive = exports.displayFirstName = exports.displayNamePossessive = exports.displayName = void 0;
4
+ var constants_1 = require("../constants");
5
+ var actionCreator_1 = require("../redux/actionCreator");
6
+ var noStoreSaga_1 = require("../redux/sagas/noStoreSaga");
7
+ var fetch_1 = require("./fetch");
8
+ var makePossessive = function (word) { return (word.endsWith('s') ? word + "\u2019" : word + "\u2019s"); };
9
+ var displayName = function (u, shouldReverse) {
10
+ if (shouldReverse === void 0) { shouldReverse = false; }
11
+ return !!u.firstName && !!u.lastName
12
+ ? shouldReverse
13
+ ? u.lastName + ", " + u.firstName
14
+ : u.firstName + " " + u.lastName
15
+ : u.email;
15
16
  };
16
17
  exports.displayName = displayName;
17
- const displayNamePossessive = u => !!u.firstName && !!u.lastName ? `${u.firstName} ${makePossessive(u.lastName)}` : `${u.email}’s`;
18
+ var displayNamePossessive = function (u) {
19
+ return !!u.firstName && !!u.lastName ? u.firstName + " " + makePossessive(u.lastName) : u.email + "\u2019s";
20
+ };
18
21
  exports.displayNamePossessive = displayNamePossessive;
19
- const displayFirstName = u => u.firstName ? u.firstName : u.email;
22
+ var displayFirstName = function (u) { return (u.firstName ? u.firstName : u.email); };
20
23
  exports.displayFirstName = displayFirstName;
21
- const displayFirstNamePossessive = u => u.firstName ? makePossessive(u.firstName) : `${u.email}’s`;
24
+ var displayFirstNamePossessive = function (u) { return (u.firstName ? makePossessive(u.firstName) : u.email + "\u2019s"); };
22
25
  exports.displayFirstNamePossessive = displayFirstNamePossessive;
23
- const filterUsersByRole = role => userRoles => {
24
- return userRoles.filter(userRole => userRole.roles.some(r => r.role === role));
25
- };
26
+ var filterUsersByRole = function (role) { return function (userRoles) {
27
+ return userRoles.filter(function (userRole) { return userRole.roles.some(function (r) { return r.role === role; }); });
28
+ }; };
26
29
  exports.filterUsersByRole = filterUsersByRole;
27
- const startImpersonation = (guid, userId) => {
28
- (0, _noStoreSaga.registerNoStoreActionHook)(guid, data => {
29
- (0, _noStoreSaga.unregisterNoStoreActionHook)(guid);
30
- if (!data || (0, _fetch.isFetchErrorData)(data)) {
31
- (0, _actionCreator.addNotification)({
32
- text: data?.detail || 'Could not start impersonation',
33
- type: _constants.NOTIFICATION_TYPE.ERROR
34
- });
35
- } else {
36
- const response = data;
37
- window.location.href = `/?code=${encodeURIComponent(response.code)}`;
38
- }
39
- });
40
- (0, _actionCreator.dispatchModelFetchRequest)({
41
- modelName: 'startImpersonation',
42
- noStore: true,
43
- guid,
44
- queryParams: {
45
- userId
46
- }
47
- });
30
+ var startImpersonation = function (guid, userId) {
31
+ noStoreSaga_1.registerNoStoreActionHook(guid, function (data) {
32
+ noStoreSaga_1.unregisterNoStoreActionHook(guid);
33
+ if (!data || fetch_1.isFetchErrorData(data)) {
34
+ actionCreator_1.addNotification({
35
+ text: (data === null || data === void 0 ? void 0 : data.detail) || 'Could not start impersonation',
36
+ type: constants_1.NOTIFICATION_TYPE.ERROR
37
+ });
38
+ }
39
+ else {
40
+ var response = data;
41
+ window.location.href = "/?code=" + encodeURIComponent(response.code);
42
+ }
43
+ });
44
+ actionCreator_1.dispatchModelFetchRequest({
45
+ modelName: 'startImpersonation',
46
+ noStore: true,
47
+ guid: guid,
48
+ queryParams: { userId: userId }
49
+ });
48
50
  };
49
51
  exports.startImpersonation = startImpersonation;
50
- const stopImpersonation = guid => {
51
- (0, _noStoreSaga.registerNoStoreActionHook)(guid, data => {
52
- (0, _noStoreSaga.unregisterNoStoreActionHook)(guid);
53
- if (!data || (0, _fetch.isFetchErrorData)(data)) {
54
- (0, _actionCreator.addNotification)({
55
- text: data?.detail || 'Could not stop impersonation',
56
- type: _constants.NOTIFICATION_TYPE.ERROR
57
- });
58
- } else {
59
- const response = data;
60
- window.location.href = `/?code=${encodeURIComponent(response.code)}`;
61
- }
62
- });
63
- (0, _actionCreator.dispatchModelFetchRequest)({
64
- modelName: 'stopImpersonation',
65
- noStore: true,
66
- guid
67
- });
52
+ var stopImpersonation = function (guid) {
53
+ noStoreSaga_1.registerNoStoreActionHook(guid, function (data) {
54
+ noStoreSaga_1.unregisterNoStoreActionHook(guid);
55
+ if (!data || fetch_1.isFetchErrorData(data)) {
56
+ actionCreator_1.addNotification({
57
+ text: (data === null || data === void 0 ? void 0 : data.detail) || 'Could not stop impersonation',
58
+ type: constants_1.NOTIFICATION_TYPE.ERROR
59
+ });
60
+ }
61
+ else {
62
+ var response = data;
63
+ window.location.href = "/?code=" + encodeURIComponent(response.code);
64
+ }
65
+ });
66
+ actionCreator_1.dispatchModelFetchRequest({
67
+ modelName: 'stopImpersonation',
68
+ noStore: true,
69
+ guid: guid
70
+ });
68
71
  };
69
72
  exports.stopImpersonation = stopImpersonation;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9hY3Rpb25DcmVhdG9yIiwiX25vU3RvcmVTYWdhIiwiX2ZldGNoIiwibWFrZVBvc3Nlc3NpdmUiLCJ3b3JkIiwiZW5kc1dpdGgiLCJkaXNwbGF5TmFtZSIsInUiLCJzaG91bGRSZXZlcnNlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsImV4cG9ydHMiLCJkaXNwbGF5TmFtZVBvc3Nlc3NpdmUiLCJkaXNwbGF5Rmlyc3ROYW1lIiwiZGlzcGxheUZpcnN0TmFtZVBvc3Nlc3NpdmUiLCJmaWx0ZXJVc2Vyc0J5Um9sZSIsInJvbGUiLCJ1c2VyUm9sZXMiLCJmaWx0ZXIiLCJ1c2VyUm9sZSIsInJvbGVzIiwic29tZSIsInIiLCJzdGFydEltcGVyc29uYXRpb24iLCJndWlkIiwidXNlcklkIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJpc0ZldGNoRXJyb3JEYXRhIiwiYWRkTm90aWZpY2F0aW9uIiwidGV4dCIsImRldGFpbCIsInR5cGUiLCJOT1RJRklDQVRJT05fVFlQRSIsIkVSUk9SIiwicmVzcG9uc2UiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJlbmNvZGVVUklDb21wb25lbnQiLCJjb2RlIiwiZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCIsIm1vZGVsTmFtZSIsIm5vU3RvcmUiLCJxdWVyeVBhcmFtcyIsInN0b3BJbXBlcnNvbmF0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTk9USUZJQ0FUSU9OX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnXHJcbmltcG9ydCB7IGFkZE5vdGlmaWNhdGlvbiwgZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCB9IGZyb20gJy4uL3JlZHV4L2FjdGlvbkNyZWF0b3InXHJcbmltcG9ydCB7IHJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2ssIHVucmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayB9IGZyb20gJy4uL3JlZHV4L3NhZ2FzL25vU3RvcmVTYWdhJ1xyXG5pbXBvcnQgeyBGZXRjaEVycm9yRGF0YSwgVXNlciwgVXNlcldpdGhSb2xlcyB9IGZyb20gJy4uL3R5cGVzJ1xyXG5pbXBvcnQgeyBpc0ZldGNoRXJyb3JEYXRhIH0gZnJvbSAnLi9mZXRjaCdcclxuXHJcbmNvbnN0IG1ha2VQb3NzZXNzaXZlID0gKHdvcmQ6IHN0cmluZykgPT4gKHdvcmQuZW5kc1dpdGgoJ3MnKSA/IGAke3dvcmR94oCZYCA6IGAke3dvcmR94oCZc2ApXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheU5hbWUgPSAodTogVXNlciwgc2hvdWxkUmV2ZXJzZSA9IGZhbHNlKSA9PlxyXG5cdCEhdS5maXJzdE5hbWUgJiYgISF1Lmxhc3ROYW1lXHJcblx0XHQ/IHNob3VsZFJldmVyc2VcclxuXHRcdFx0PyBgJHt1Lmxhc3ROYW1lfSwgJHt1LmZpcnN0TmFtZX1gXHJcblx0XHRcdDogYCR7dS5maXJzdE5hbWV9ICR7dS5sYXN0TmFtZX1gXHJcblx0XHQ6IHUuZW1haWxcclxuXHJcbmV4cG9ydCBjb25zdCBkaXNwbGF5TmFtZVBvc3Nlc3NpdmUgPSAodTogVXNlcikgPT5cclxuXHQhIXUuZmlyc3ROYW1lICYmICEhdS5sYXN0TmFtZSA/IGAke3UuZmlyc3ROYW1lfSAke21ha2VQb3NzZXNzaXZlKHUubGFzdE5hbWUpfWAgOiBgJHt1LmVtYWlsfeKAmXNgXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheUZpcnN0TmFtZSA9ICh1OiBVc2VyKSA9PiAodS5maXJzdE5hbWUgPyB1LmZpcnN0TmFtZSA6IHUuZW1haWwpXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGxheUZpcnN0TmFtZVBvc3Nlc3NpdmUgPSAodTogVXNlcikgPT4gKHUuZmlyc3ROYW1lID8gbWFrZVBvc3Nlc3NpdmUodS5maXJzdE5hbWUpIDogYCR7dS5lbWFpbH3igJlzYClcclxuXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJVc2Vyc0J5Um9sZSA9IChyb2xlOiBzdHJpbmcpID0+ICh1c2VyUm9sZXM6IFVzZXJXaXRoUm9sZXNbXSkgPT4ge1xyXG5cdHJldHVybiB1c2VyUm9sZXMuZmlsdGVyKHVzZXJSb2xlID0+IHVzZXJSb2xlLnJvbGVzLnNvbWUociA9PiByLnJvbGUgPT09IHJvbGUpKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRJbXBlcnNvbmF0aW9uID0gKGd1aWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpID0+IHtcclxuXHRyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQsIChkYXRhOiB7IGNvZGU6IHN0cmluZyB9IHwgRmV0Y2hFcnJvckRhdGEgfCBudWxsKSA9PiB7XHJcblx0XHR1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soZ3VpZClcclxuXHRcdGlmICghZGF0YSB8fCBpc0ZldGNoRXJyb3JEYXRhKGRhdGEpKSB7XHJcblx0XHRcdGFkZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0dGV4dDogZGF0YT8uZGV0YWlsIHx8ICdDb3VsZCBub3Qgc3RhcnQgaW1wZXJzb25hdGlvbicsXHJcblx0XHRcdFx0dHlwZTogTk9USUZJQ0FUSU9OX1RZUEUuRVJST1JcclxuXHRcdFx0fSlcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gZGF0YSBhcyB7IGNvZGU6IHN0cmluZyB9XHJcblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC8/Y29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZS5jb2RlKX1gXHJcblx0XHR9XHJcblx0fSlcclxuXHJcblx0ZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCh7XHJcblx0XHRtb2RlbE5hbWU6ICdzdGFydEltcGVyc29uYXRpb24nLFxyXG5cdFx0bm9TdG9yZTogdHJ1ZSxcclxuXHRcdGd1aWQsXHJcblx0XHRxdWVyeVBhcmFtczogeyB1c2VySWQgfVxyXG5cdH0pXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBzdG9wSW1wZXJzb25hdGlvbiA9IChndWlkOiBzdHJpbmcpID0+IHtcclxuXHRyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGd1aWQsIChkYXRhOiB7IGNvZGU6IHN0cmluZyB9IHwgRmV0Y2hFcnJvckRhdGEgfCBudWxsKSA9PiB7XHJcblx0XHR1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soZ3VpZClcclxuXHRcdGlmICghZGF0YSB8fCBpc0ZldGNoRXJyb3JEYXRhKGRhdGEpKSB7XHJcblx0XHRcdGFkZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0dGV4dDogZGF0YT8uZGV0YWlsIHx8ICdDb3VsZCBub3Qgc3RvcCBpbXBlcnNvbmF0aW9uJyxcclxuXHRcdFx0XHR0eXBlOiBOT1RJRklDQVRJT05fVFlQRS5FUlJPUlxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBkYXRhIGFzIHsgY29kZTogc3RyaW5nIH1cclxuXHRcdFx0d2luZG93LmxvY2F0aW9uLmhyZWYgPSBgLz9jb2RlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlLmNvZGUpfWBcclxuXHRcdH1cclxuXHR9KVxyXG5cclxuXHRkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0KHtcclxuXHRcdG1vZGVsTmFtZTogJ3N0b3BJbXBlcnNvbmF0aW9uJyxcclxuXHRcdG5vU3RvcmU6IHRydWUsXHJcblx0XHRndWlkXHJcblx0fSlcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLE1BQU1JLGNBQWMsR0FBSUMsSUFBWSxJQUFNQSxJQUFJLENBQUNDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FB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
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getOperatingSystem = void 0;
7
- var _operatingSystem = require("../constants/operatingSystem");
8
- const getOperatingSystem = () => {
9
- const userAgent = window.navigator.userAgent.toLowerCase();
10
- const macOSPlatforms = /(macintosh|macintel|macppc|mac68k|macos)/i;
11
- const windowsPlatforms = /(win32|win64|windows|wince)/i;
12
- return macOSPlatforms.test(userAgent) ? _operatingSystem.OPERATING_SYSTEM.MAC : windowsPlatforms.test(userAgent) ? _operatingSystem.OPERATING_SYSTEM.WINDOWS : _operatingSystem.OPERATING_SYSTEM.UNKNOWN;
4
+ var operatingSystem_1 = require("../constants/operatingSystem");
5
+ var getOperatingSystem = function () {
6
+ var userAgent = window.navigator.userAgent.toLowerCase();
7
+ var macOSPlatforms = /(macintosh|macintel|macppc|mac68k|macos)/i;
8
+ var windowsPlatforms = /(win32|win64|windows|wince)/i;
9
+ return macOSPlatforms.test(userAgent)
10
+ ? operatingSystem_1.OPERATING_SYSTEM.MAC
11
+ : windowsPlatforms.test(userAgent)
12
+ ? operatingSystem_1.OPERATING_SYSTEM.WINDOWS
13
+ : operatingSystem_1.OPERATING_SYSTEM.UNKNOWN;
13
14
  };
14
15
  exports.getOperatingSystem = getOperatingSystem;
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3BlcmF0aW5nU3lzdGVtIiwicmVxdWlyZSIsImdldE9wZXJhdGluZ1N5c3RlbSIsInVzZXJBZ2VudCIsIndpbmRvdyIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwibWFjT1NQbGF0Zm9ybXMiLCJ3aW5kb3dzUGxhdGZvcm1zIiwidGVzdCIsIk9QRVJBVElOR19TWVNURU0iLCJNQUMiLCJXSU5ET1dTIiwiVU5LTk9XTiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXNlckFnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9QRVJBVElOR19TWVNURU0gfSBmcm9tICcuLi9jb25zdGFudHMvb3BlcmF0aW5nU3lzdGVtJ1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE9wZXJhdGluZ1N5c3RlbSA9ICgpID0+IHtcclxuXHRjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpXHJcblx0Y29uc3QgbWFjT1NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pXHJcblx0Y29uc3Qgd2luZG93c1BsYXRmb3JtcyA9IC8od2luMzJ8d2luNjR8d2luZG93c3x3aW5jZSkvaVxyXG5cclxuXHRyZXR1cm4gbWFjT1NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpXHJcblx0XHQ/IE9QRVJBVElOR19TWVNURU0uTUFDXHJcblx0XHQ6IHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpXHJcblx0XHRcdD8gT1BFUkFUSU5HX1NZU1RFTS5XSU5ET1dTXHJcblx0XHRcdDogT1BFUkFUSU5HX1NZU1RFTS5VTktOT1dOXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxPQUFBO0FBRU8sTUFBTUMsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtFQUN2QyxNQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDRixTQUFTLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0VBQzFELE1BQU1DLGNBQWMsR0FBRywyQ0FBMkM7RUFDbEUsTUFBTUMsZ0JBQWdCLEdBQUcsOEJBQThCO0VBRXZELE9BQU9ELGNBQWMsQ0FBQ0UsSUFBSSxDQUFDTixTQUFTLENBQUMsR0FDbENPLGlDQUFnQixDQUFDQyxHQUFHLEdBQ3BCSCxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDTixTQUFTLENBQUMsR0FDL0JPLGlDQUFnQixDQUFDRSxPQUFPLEdBQ3hCRixpQ0FBZ0IsQ0FBQ0csT0FBTztBQUM3QixDQUFDO0FBQUFDLE9BQUEsQ0FBQVosa0JBQUEsR0FBQUEsa0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -13,15 +13,15 @@ export declare const isExternal: (userRole: UserRole) => boolean;
13
13
  * Get the text for the given `userRole.role`. Defaults to using `textForBaseRole`.
14
14
  * @param textForRole Override method for providing role text
15
15
  */
16
- export declare const getRoleText: (textForRole?: (role: string) => string) => (a: UserRole) => string;
16
+ export declare const getRoleText: (textForRole?: ((role: string) => string) | undefined) => (a: UserRole) => string;
17
17
  /**
18
18
  * Sort the userRoles by role, using the provided `roles` order
19
19
  * @param roles Roles ordered in descing access level
20
20
  */
21
- export declare const sortByRole: (roles: string[]) => (a: UserRole, b: UserRole) => 1 | -1 | 0;
21
+ export declare const sortByRole: (roles: string[]) => (a: UserRole, b: UserRole) => 0 | 1 | -1;
22
22
  /**
23
23
  * Sort the users by role, using the provided `roles` order
24
24
  * @param roles Roles ordered in descing access level
25
25
  */
26
- export declare const sortByHighestAccessRole: (roles: string[]) => (a: UserWithRoles, b: UserWithRoles) => 1 | -1 | 0;
26
+ export declare const sortByHighestAccessRole: (roles: string[]) => (a: UserWithRoles, b: UserWithRoles) => 0 | 1 | -1;
27
27
  export declare const convertToUserWithRoles: <TUserRole extends UserRole = UserRole>(userRole: TUserRole) => UserWithRoles<TUserRole>;