studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.2

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 (258) hide show
  1. package/lib/components/ActionList.js +170 -34
  2. package/lib/components/AlertDialog.js +133 -9
  3. package/lib/components/AlertWithIcon.js +92 -25
  4. package/lib/components/ConnectedModal.js +43 -13
  5. package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +111 -21
  8. package/lib/components/Dropdowns/index.js +27 -9
  9. package/lib/components/EntityOwnerList.js +52 -18
  10. package/lib/components/Error.js +106 -11
  11. package/lib/components/ErrorBoundary.js +134 -35
  12. package/lib/components/ErrorMessage.js +44 -9
  13. package/lib/components/Forms/DateField.js +61 -42
  14. package/lib/components/Forms/TimeField.js +81 -42
  15. package/lib/components/Forms/index.js +27 -4
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
  17. package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
  18. package/lib/components/Groups/ExternalGroups/Table.js +181 -45
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  20. package/lib/components/Groups/RosterSyncInfo.js +147 -20
  21. package/lib/components/HOC/AccessibleAppComponent.js +98 -73
  22. package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
  23. package/lib/components/HOC/AsyncComponent.js +54 -39
  24. package/lib/components/HOC/AuthenticatedComponent.js +58 -38
  25. package/lib/components/HOC/CollectionComponent.js +170 -110
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
  27. package/lib/components/HOC/CollectionItemComponent.js +168 -106
  28. package/lib/components/HOC/ConnectedModalComponent.js +109 -80
  29. package/lib/components/HOC/DataDependentComponent.js +29 -21
  30. package/lib/components/HOC/EntityComponent.js +71 -57
  31. package/lib/components/HOC/FullscreenModalComponent.js +163 -123
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
  33. package/lib/components/HOC/GuidComponent.js +29 -22
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
  36. package/lib/components/HOC/SearchPersistorComponent.js +240 -166
  37. package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
  38. package/lib/components/HOC/UserComponent.js +12 -7
  39. package/lib/components/Icons/IconAlphaList.js +33 -5
  40. package/lib/components/Icons/IconExternalUser.js +33 -5
  41. package/lib/components/Icons/IconImpersonation.js +33 -5
  42. package/lib/components/Icons/IconStopImpersonating.js +33 -5
  43. package/lib/components/Icons/IconTable.js +35 -7
  44. package/lib/components/Icons/IconTableDeleteCol.js +33 -5
  45. package/lib/components/Icons/IconTableDeleteRow.js +33 -5
  46. package/lib/components/Icons/IconTableInsertCol.js +33 -5
  47. package/lib/components/Icons/IconTableInsertRow.js +33 -5
  48. package/lib/components/Impersonation/Button.js +77 -13
  49. package/lib/components/Impersonation/Link.js +77 -13
  50. package/lib/components/Impersonation/UserDetail.js +66 -9
  51. package/lib/components/Loading.js +26 -4
  52. package/lib/components/LockDownBrowser/Check.js +194 -49
  53. package/lib/components/LockDownBrowser/ExitButton.js +26 -9
  54. package/lib/components/LockDownBrowser/Launch.js +70 -62
  55. package/lib/components/Lti/Confirm.js +152 -11
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
  57. package/lib/components/Lti/Launch.js +105 -24
  58. package/lib/components/Lti/LaunchGroup.js +85 -13
  59. package/lib/components/ManageTable.js +309 -87
  60. package/lib/components/ManageTableNoDataComponent.js +42 -4
  61. package/lib/components/NewVersionAlert.js +82 -46
  62. package/lib/components/NotFound.js +86 -10
  63. package/lib/components/Notifications.js +185 -126
  64. package/lib/components/PaginationNextButton.js +33 -6
  65. package/lib/components/PaginationPreviousButton.js +33 -6
  66. package/lib/components/Quill/CustomToolbar.js +432 -218
  67. package/lib/components/Quill/Formats/Image.js +73 -63
  68. package/lib/components/Quill/Formats/List.js +45 -45
  69. package/lib/components/Quill/Formats/Video.js +28 -24
  70. package/lib/components/Quill/ImageDropModule.js +147 -117
  71. package/lib/components/Quill/ImageWarning.js +47 -9
  72. package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
  81. package/lib/components/Quill/TableModule/constants.js +45 -41
  82. package/lib/components/Quill/TableModule/index.js +362 -301
  83. package/lib/components/Quill/TableModule/utils.js +42 -38
  84. package/lib/components/Quill/accessibilityFix.js +234 -232
  85. package/lib/components/Quill/index.js +34 -28
  86. package/lib/components/RefreshIndicator/Bordered.js +47 -6
  87. package/lib/components/RefreshIndicator/Inline.js +47 -8
  88. package/lib/components/RefreshIndicator/index.js +263 -59
  89. package/lib/components/SearchControls.js +216 -11
  90. package/lib/components/SentryRoute.js +11 -6
  91. package/lib/components/Tables/RoleFilter.js +69 -32
  92. package/lib/components/Tables/TextFilter.js +62 -13
  93. package/lib/components/UserRoles/Add.js +199 -96
  94. package/lib/components/UserRoles/Context.js +11 -7
  95. package/lib/components/UserRoles/RoleCell.js +181 -72
  96. package/lib/components/UserRoles/Select.js +157 -17
  97. package/lib/components/UserRoles/Table.js +221 -80
  98. package/lib/components/UserRoles/index.js +534 -384
  99. package/lib/config/eslint/index.js +32 -28
  100. package/lib/config/eslint/lib/order.js +26 -27
  101. package/lib/config/eslint/lib/prettier.js +20 -18
  102. package/lib/config/eslint/lib/typescript.js +93 -112
  103. package/lib/config/eslint/react.js +24 -14
  104. package/lib/constants/baseActivity.js +30 -26
  105. package/lib/constants/baseRole.js +14 -10
  106. package/lib/constants/configuration.js +33 -29
  107. package/lib/constants/externalProviderType.js +10 -6
  108. package/lib/constants/fetchErrorData.js +15 -11
  109. package/lib/constants/index.js +137 -14
  110. package/lib/constants/lockDownBrowser.js +28 -24
  111. package/lib/constants/mockData.js +382 -297
  112. package/lib/constants/modelStatus.js +15 -11
  113. package/lib/constants/notificationType.js +12 -8
  114. package/lib/constants/operatingSystem.js +12 -8
  115. package/lib/constants/shard.js +11 -7
  116. package/lib/constants/table.js +21 -21
  117. package/lib/constants/tier.js +12 -8
  118. package/lib/constants/userRole.js +15 -5
  119. package/lib/endpointMappings.js +197 -181
  120. package/lib/hooks/useCollection.js +82 -62
  121. package/lib/hooks/useCollectionConfiguration.js +228 -83
  122. package/lib/hooks/useCollectionItem.js +154 -54
  123. package/lib/hooks/useGuid.js +20 -8
  124. package/lib/hooks/usePrevious.js +19 -13
  125. package/lib/index.js +157 -25
  126. package/lib/redux/actionCreator.js +50 -28
  127. package/lib/redux/actions/AuthAction.js +44 -31
  128. package/lib/redux/actions/ModalAction.js +10 -6
  129. package/lib/redux/actions/ModelAction.js +77 -39
  130. package/lib/redux/actions/NotificationAction.js +10 -6
  131. package/lib/redux/actions/SearchAction.js +9 -5
  132. package/lib/redux/actions/index.js +60 -7
  133. package/lib/redux/configureReducers.js +60 -49
  134. package/lib/redux/configureStore.js +83 -87
  135. package/lib/redux/helpers.js +6 -2
  136. package/lib/redux/reducers/authReducer.js +50 -43
  137. package/lib/redux/reducers/index.js +41 -13
  138. package/lib/redux/reducers/modalsReducer.js +47 -29
  139. package/lib/redux/reducers/modelsReducer.js +178 -173
  140. package/lib/redux/reducers/notificationsReducer.js +24 -18
  141. package/lib/redux/reducers/searchReducer.js +25 -19
  142. package/lib/redux/sagas/appInsightsSaga.js +22 -18
  143. package/lib/redux/sagas/authSaga.js +253 -218
  144. package/lib/redux/sagas/caliperSaga.js +159 -143
  145. package/lib/redux/sagas/clockOffsetSaga.js +34 -31
  146. package/lib/redux/sagas/configurationSaga.js +11 -7
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
  148. package/lib/redux/sagas/errorSaga.js +27 -21
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
  150. package/lib/redux/sagas/identityProviderSaga.js +22 -18
  151. package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
  153. package/lib/redux/sagas/modelFetchSaga.js +355 -322
  154. package/lib/redux/sagas/noStoreSaga.js +61 -48
  155. package/lib/redux/sagas/postLoginDataSaga.js +45 -34
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
  157. package/lib/redux/sagas/rootSaga.js +82 -57
  158. package/lib/redux/sagas/sentrySaga.js +29 -25
  159. package/lib/redux/sagas/userIdSaga.js +16 -12
  160. package/lib/services/codeProviderService.js +25 -19
  161. package/lib/services/dateService.js +12 -7
  162. package/lib/services/documentService.js +17 -12
  163. package/lib/services/fetchService.js +129 -112
  164. package/lib/services/persistenceService.js +33 -29
  165. package/lib/services/ticketProviderService.js +29 -23
  166. package/lib/services/tokenPersistenceService.js +12 -8
  167. package/lib/services/windowService.js +18 -14
  168. package/lib/startup.js +132 -114
  169. package/lib/types/AppConfiguration.js +5 -1
  170. package/lib/types/Artifact.js +11 -7
  171. package/lib/types/BaseReduxState.js +5 -1
  172. package/lib/types/Client.js +5 -1
  173. package/lib/types/Collection.js +5 -1
  174. package/lib/types/Configuration.js +5 -1
  175. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  176. package/lib/types/DeletableModel.js +5 -1
  177. package/lib/types/Event.js +5 -1
  178. package/lib/types/ExternalGroup.js +5 -1
  179. package/lib/types/ExternalProvider.js +5 -1
  180. package/lib/types/ExternalTerm.js +5 -1
  181. package/lib/types/Group.js +5 -1
  182. package/lib/types/IdentityProvider.js +5 -1
  183. package/lib/types/LtiLaunch.js +5 -1
  184. package/lib/types/NameOnlyEntity.js +5 -1
  185. package/lib/types/Notification.js +5 -1
  186. package/lib/types/OptionalRecord.js +5 -1
  187. package/lib/types/OwnerSchedule.js +5 -1
  188. package/lib/types/PropertyOfType.js +5 -1
  189. package/lib/types/Quill.js +5 -1
  190. package/lib/types/RoleDescription.js +5 -1
  191. package/lib/types/Search.js +5 -1
  192. package/lib/types/SimpleLocation.js +5 -1
  193. package/lib/types/UniTime.js +5 -1
  194. package/lib/types/User.js +5 -1
  195. package/lib/types/UserRole.js +5 -1
  196. package/lib/types/auth/AuthState.js +5 -1
  197. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  198. package/lib/types/auth/ClientCredentials.js +5 -1
  199. package/lib/types/auth/CodeProviderService.js +5 -1
  200. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  201. package/lib/types/auth/TicketProviderService.js +5 -1
  202. package/lib/types/auth/TokenPersistenceService.js +5 -1
  203. package/lib/types/auth/index.js +82 -9
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +313 -30
  206. package/lib/types/net/EndpointConfig.js +5 -1
  207. package/lib/types/net/EndpointMapping.js +5 -1
  208. package/lib/types/net/EndpointMappings.js +5 -1
  209. package/lib/types/net/ErrorHandler.js +5 -1
  210. package/lib/types/net/FetchConfig.js +5 -1
  211. package/lib/types/net/FetchErrorData.js +10 -6
  212. package/lib/types/net/FetchResult.js +5 -1
  213. package/lib/types/net/HTTPMethod.js +5 -1
  214. package/lib/types/net/HTTPStatusCode.js +16 -12
  215. package/lib/types/net/Metadata.js +5 -1
  216. package/lib/types/net/Model.js +5 -1
  217. package/lib/types/net/ModelCollection.js +5 -1
  218. package/lib/types/net/ModelsState.js +5 -1
  219. package/lib/types/net/OAuthToken.js +5 -1
  220. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  221. package/lib/types/net/TokenAccessFunction.js +5 -1
  222. package/lib/types/net/index.js +181 -18
  223. package/lib/utils/baseActivity.js +133 -123
  224. package/lib/utils/baseRole.js +37 -33
  225. package/lib/utils/collection.js +425 -298
  226. package/lib/utils/cookies.js +22 -19
  227. package/lib/utils/date.js +303 -279
  228. package/lib/utils/dom.js +176 -165
  229. package/lib/utils/domainIdentifier.js +9 -5
  230. package/lib/utils/entityUserRole.js +6 -2
  231. package/lib/utils/error.js +17 -15
  232. package/lib/utils/events.js +40 -31
  233. package/lib/utils/externalGroup.js +22 -18
  234. package/lib/utils/externalProviders.js +8 -4
  235. package/lib/utils/externalTerms.js +10 -3
  236. package/lib/utils/fetch.js +179 -180
  237. package/lib/utils/group.js +18 -7
  238. package/lib/utils/groupDates.js +37 -33
  239. package/lib/utils/groupRoles.js +25 -21
  240. package/lib/utils/lockDownBrowser.js +15 -11
  241. package/lib/utils/logger.js +26 -22
  242. package/lib/utils/lti.js +9 -4
  243. package/lib/utils/model.js +36 -41
  244. package/lib/utils/number.js +21 -18
  245. package/lib/utils/promise.js +28 -21
  246. package/lib/utils/quill.js +65 -62
  247. package/lib/utils/route.js +58 -55
  248. package/lib/utils/search.js +76 -80
  249. package/lib/utils/shard.js +37 -37
  250. package/lib/utils/sort.js +50 -42
  251. package/lib/utils/string.js +13 -8
  252. package/lib/utils/table.js +38 -33
  253. package/lib/utils/timezone.js +10 -6
  254. package/lib/utils/url.js +142 -142
  255. package/lib/utils/user.js +58 -55
  256. package/lib/utils/userAgent.js +10 -10
  257. package/lib/utils/userRole.js +57 -49
  258. package/package.json +17 -3
@@ -1,183 +1,199 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = caliperSaga;
4
- const effects_1 = require("redux-saga/effects");
5
- const studiokit_caliper_js_1 = require("studiokit-caliper-js");
6
- const configuration_1 = require("../../constants/configuration");
7
- const persistenceService_1 = require("../../services/persistenceService");
8
- const date_1 = require("../../utils/date");
9
- const actionCreator_1 = require("../actionCreator");
10
- const actions_1 = require("../actions");
7
+ var _effects = require("redux-saga/effects");
8
+ var _studiokitCaliperJs = require("studiokit-caliper-js");
9
+ var _configuration = require("../../constants/configuration");
10
+ var _persistenceService = require("../../services/persistenceService");
11
+ var _date = require("../../utils/date");
12
+ var _actionCreator = require("../actionCreator");
13
+ var _actions = require("../actions");
11
14
  //#region Local Variables
15
+
12
16
  let service;
13
17
  let caliperToken;
18
+
14
19
  //#endregion Local Variables
20
+
15
21
  //#region CaliperService Helpers
22
+
16
23
  function initializeCaliperService(shardConfig) {
17
- const appConfig = (0, configuration_1.getAppConfig)();
18
- if (!shardConfig.caliperEventStoreHostname) {
19
- return;
20
- }
21
- const sensorOptions = Object.assign({}, appConfig.CALIPER_EVENT_STORE_OPTIONS, {
22
- hostname: shardConfig.caliperEventStoreHostname
23
- });
24
- const options = {
25
- sensorId: appConfig.CALIPER_SENSOR_ID,
26
- sensorOptions,
27
- appId: appConfig.CALIPER_SENSOR_APP_ID,
28
- appName: appConfig.CALIPER_SENSOR_APP_NAME,
29
- getToken: function () {
30
- return new Promise((resolve, reject) => {
31
- if (caliperToken) {
32
- resolve(caliperToken);
33
- }
34
- else {
35
- reject(new Error('`caliperToken` is undefined'));
36
- }
37
- });
38
- },
39
- // disable auto send, the saga will handle this
40
- autoSend: false
41
- };
42
- const service = new studiokit_caliper_js_1.BrowserCaliperService(options);
43
- return service;
24
+ const appConfig = (0, _configuration.getAppConfig)();
25
+ if (!shardConfig.caliperEventStoreHostname) {
26
+ return;
27
+ }
28
+ const sensorOptions = Object.assign({}, appConfig.CALIPER_EVENT_STORE_OPTIONS, {
29
+ hostname: shardConfig.caliperEventStoreHostname
30
+ });
31
+ const options = {
32
+ sensorId: appConfig.CALIPER_SENSOR_ID,
33
+ sensorOptions,
34
+ appId: appConfig.CALIPER_SENSOR_APP_ID,
35
+ appName: appConfig.CALIPER_SENSOR_APP_NAME,
36
+ getToken: function () {
37
+ return new Promise((resolve, reject) => {
38
+ if (caliperToken) {
39
+ resolve(caliperToken);
40
+ } else {
41
+ reject(new Error('`caliperToken` is undefined'));
42
+ }
43
+ });
44
+ },
45
+ // disable auto send, the saga will handle this
46
+ autoSend: false
47
+ };
48
+ const service = new _studiokitCaliperJs.BrowserCaliperService(options);
49
+ return service;
44
50
  }
45
51
  function setCaliperPerson(userData) {
46
- var _a, _b;
47
- const appConfig = (0, configuration_1.getAppConfig)();
48
- const shardConfig = (0, configuration_1.getShardConfig)();
49
- const personNamespace = shardConfig.caliperPersonNamespace;
50
- const id = `${personNamespace}${userData.puid}`;
51
- const extensions = {};
52
- extensions[`${appConfig.CALIPER_EXTENSIONS_NAMESPACE}.userId`] = userData.id;
53
- service.setPerson(id, (_a = userData.firstName) !== null && _a !== void 0 ? _a : undefined, (_b = userData.lastName) !== null && _b !== void 0 ? _b : undefined, extensions);
54
- return Promise.resolve();
52
+ const appConfig = (0, _configuration.getAppConfig)();
53
+ const shardConfig = (0, _configuration.getShardConfig)();
54
+ const personNamespace = shardConfig.caliperPersonNamespace;
55
+ const id = `${personNamespace}${userData.puid}`;
56
+ const extensions = {};
57
+ extensions[`${appConfig.CALIPER_EXTENSIONS_NAMESPACE}.userId`] = userData.id;
58
+ service.setPerson(id, userData.firstName ?? undefined, userData.lastName ?? undefined, extensions);
59
+ return Promise.resolve();
55
60
  }
56
61
  function startCaliperSession() {
57
- const appConfig = (0, configuration_1.getAppConfig)();
58
- const extensions = {};
59
- extensions[`${appConfig.CALIPER_EXTENSIONS_NAMESPACE}.userAgent`] = navigator.userAgent;
60
- service.startSession(extensions);
61
- return Promise.resolve();
62
+ const appConfig = (0, _configuration.getAppConfig)();
63
+ const extensions = {};
64
+ extensions[`${appConfig.CALIPER_EXTENSIONS_NAMESPACE}.userAgent`] = navigator.userAgent;
65
+ service.startSession(extensions);
66
+ return Promise.resolve();
62
67
  }
63
68
  function endCaliperSession() {
64
- service.endSession();
65
- return Promise.resolve();
69
+ service.endSession();
70
+ return Promise.resolve();
66
71
  }
67
72
  function setPersonAndStartCaliperSession(userData) {
68
- void setCaliperPerson(userData);
69
- void startCaliperSession();
73
+ void setCaliperPerson(userData);
74
+ void startCaliperSession();
70
75
  }
71
76
  function isTokenExpired(caliperToken) {
72
- return new Date(caliperToken.expires) <= (0, date_1.getServerNowUtc)();
77
+ return new Date(caliperToken.expires) <= (0, _date.getServerNowUtc)();
73
78
  }
79
+
74
80
  //#endregion CaliperService Helpers
75
- /**
76
- * Load the persisted `caliperToken`, if any. This token is persisted by the CaliperService,
77
- * but we load it in order to check expiry.
81
+
82
+ /**
83
+ * Load the persisted `caliperToken`, if any. This token is persisted by the CaliperService,
84
+ * but we load it in order to check expiry.
78
85
  */
79
86
  function* loadToken() {
80
- const caliperToken = yield (0, effects_1.call)(persistenceService_1.persistenceService.getPersistedCaliperToken);
81
- if (caliperToken)
82
- return caliperToken;
83
- return undefined;
87
+ const caliperToken = yield (0, _effects.call)(_persistenceService.persistenceService.getPersistedCaliperToken);
88
+ if (caliperToken) return caliperToken;
89
+ return undefined;
84
90
  }
85
- /**
86
- * Load a new `caliperToken` from the API. Returns `undefined` if the data request fails.
91
+
92
+ /**
93
+ * Load a new `caliperToken` from the API. Returns `undefined` if the data request fails.
87
94
  */
88
95
  function* getToken() {
89
- (0, actionCreator_1.dispatchModelFetchRequest)({
90
- modelName: 'caliperToken',
91
- noStore: true
92
- });
93
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
94
- const { receivedResult, failedResult } = yield (0, effects_1.race)({
95
- receivedResult: (0, effects_1.take)((action) => (0, actions_1.isTransientModelFetchResultAction)(action) && action.modelPath === 'caliperToken'),
96
- failedResult: (0, effects_1.take)((action) => (0, actions_1.isTransientModelFetchErrorAction)(action) && action.modelPath === 'caliperToken')
97
- });
98
- if (receivedResult && receivedResult.data) {
99
- // convert to CaliperToken from OAuthToken
100
- const caliperToken = {
101
- accessToken: receivedResult.data.access_token,
102
- expires: receivedResult.data['.expires']
103
- };
104
- return caliperToken;
105
- }
106
- return undefined;
96
+ (0, _actionCreator.dispatchModelFetchRequest)({
97
+ modelName: 'caliperToken',
98
+ noStore: true
99
+ });
100
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
101
+ const {
102
+ receivedResult,
103
+ failedResult
104
+ } = yield (0, _effects.race)({
105
+ receivedResult: (0, _effects.take)(action => (0, _actions.isTransientModelFetchResultAction)(action) && action.modelPath === 'caliperToken'),
106
+ failedResult: (0, _effects.take)(action => (0, _actions.isTransientModelFetchErrorAction)(action) && action.modelPath === 'caliperToken')
107
+ });
108
+ if (receivedResult && receivedResult.data) {
109
+ // convert to CaliperToken from OAuthToken
110
+ const caliperToken = {
111
+ accessToken: receivedResult.data.access_token,
112
+ expires: receivedResult.data['.expires']
113
+ };
114
+ return caliperToken;
115
+ }
116
+ return undefined;
107
117
  }
108
- /**
109
- * Calls `getToken`, but keeps retrying until a token is successfully loaded, using a back-off delay strategy.
118
+
119
+ /**
120
+ * Calls `getToken`, but keeps retrying until a token is successfully loaded, using a back-off delay strategy.
110
121
  */
111
122
  function* getTokenWithRetry() {
112
- // get token
113
- let caliperToken = yield (0, effects_1.call)(getToken);
114
- // handle failing to load token
115
- let tryCount = 1;
116
- while (!caliperToken) {
117
- // back-off delay
118
- yield (0, effects_1.delay)(Math.min(1000 * 60, 2 ^ (tryCount * 100))); // 100, 200, 400...
119
- caliperToken = yield (0, effects_1.call)(getToken);
120
- tryCount++;
121
- }
122
- return caliperToken;
123
+ // get token
124
+ let caliperToken = yield (0, _effects.call)(getToken);
125
+ // handle failing to load token
126
+ let tryCount = 1;
127
+ while (!caliperToken) {
128
+ // back-off delay
129
+ yield (0, _effects.delay)(Math.min(1000 * 60, 2 ^ tryCount * 100)); // 100, 200, 400...
130
+ caliperToken = yield (0, _effects.call)(getToken);
131
+ tryCount++;
132
+ }
133
+ return caliperToken;
123
134
  }
124
- /**
125
- * Saga decorator for the `CaliperService.send` method
135
+
136
+ /**
137
+ * Saga decorator for the `CaliperService.send` method
126
138
  */
127
139
  function* send() {
128
- try {
129
- yield (0, effects_1.call)(service.send);
130
- }
131
- catch (_a) {
132
- // catch error to avoid breaking the saga
133
- // ignore error since `CaliperService` already tracks send errors
134
- }
140
+ try {
141
+ yield (0, _effects.call)(service.send);
142
+ } catch {
143
+ // catch error to avoid breaking the saga
144
+ // ignore error since `CaliperService` already tracks send errors
145
+ }
135
146
  }
136
- /**
137
- * Saga decorator for the `CaliperService.send` method,
138
- * which will refresh the `caliperToken` if needed before calling `send`
147
+
148
+ /**
149
+ * Saga decorator for the `CaliperService.send` method,
150
+ * which will refresh the `caliperToken` if needed before calling `send`
139
151
  */
140
152
  function* sendWithTokenRefreshIfNeeded() {
141
- // refresh token, if needed
142
- if (!caliperToken || isTokenExpired(caliperToken)) {
143
- caliperToken = yield (0, effects_1.call)(getTokenWithRetry);
144
- }
145
- // send
146
- yield (0, effects_1.call)(send);
153
+ // refresh token, if needed
154
+ if (!caliperToken || isTokenExpired(caliperToken)) {
155
+ caliperToken = yield (0, _effects.call)(getTokenWithRetry);
156
+ }
157
+ // send
158
+ yield (0, _effects.call)(send);
147
159
  }
148
- /**
149
- * Saga fork implementing the "auto send" functionality from `CaliperService.
150
- * Calls `send` every 10 seconds.
160
+
161
+ /**
162
+ * Saga fork implementing the "auto send" functionality from `CaliperService.
163
+ * Calls `send` every 10 seconds.
151
164
  */
152
165
  function* autoSend() {
153
- while (true) {
154
- // try to send every 10 seconds
155
- yield (0, effects_1.delay)(10 * 1000);
156
- yield (0, effects_1.call)(sendWithTokenRefreshIfNeeded);
157
- }
166
+ while (true) {
167
+ // try to send every 10 seconds
168
+ yield (0, _effects.delay)(10 * 1000);
169
+ yield (0, _effects.call)(sendWithTokenRefreshIfNeeded);
170
+ }
158
171
  }
159
172
  function* caliperSaga() {
160
- // on app start, get the configuration
161
- const configurationResult = yield (0, effects_1.take)((action) => (0, actions_1.isModelFetchResultAction)(action) && action.modelPath === 'configuration');
162
- const configuration = configurationResult.data;
163
- // do not proceed if caliper is not enabled or is missing hostname
164
- if (!configuration.caliperEnabled || !configuration.caliperEventStoreHostname) {
165
- return;
166
- }
167
- // load persisted token, if any
168
- caliperToken = yield (0, effects_1.call)(loadToken);
169
- // initialize caliper service
170
- service = yield (0, effects_1.call)(initializeCaliperService, configuration);
171
- while (true) {
172
- // user is loaded and authenticated => can get token and can start session
173
- const userInfo = yield (0, effects_1.take)((action) => (0, actions_1.isModelFetchResultAction)(action) && action.modelPath === 'user.userInfo');
174
- const autoSendTask = yield (0, effects_1.fork)(autoSend);
175
- setPersonAndStartCaliperSession(userInfo.data);
176
- // user logs out => stop auto-send and end session
177
- yield (0, effects_1.take)(actions_1.AUTH_ACTION_TYPE.LOG_OUT_REQUESTED);
178
- yield (0, effects_1.cancel)(autoSendTask);
179
- void endCaliperSession();
180
- // attempt to send the session end event once, w/ no token refresh since logged out
181
- yield (0, effects_1.call)(send);
182
- }
173
+ // on app start, get the configuration
174
+ const configurationResult = yield (0, _effects.take)(action => (0, _actions.isModelFetchResultAction)(action) && action.modelPath === 'configuration');
175
+ const configuration = configurationResult.data;
176
+ // do not proceed if caliper is not enabled or is missing hostname
177
+ if (!configuration.caliperEnabled || !configuration.caliperEventStoreHostname) {
178
+ return;
179
+ }
180
+
181
+ // load persisted token, if any
182
+ caliperToken = yield (0, _effects.call)(loadToken);
183
+ // initialize caliper service
184
+ service = yield (0, _effects.call)(initializeCaliperService, configuration);
185
+ while (true) {
186
+ // user is loaded and authenticated => can get token and can start session
187
+ const userInfo = yield (0, _effects.take)(action => (0, _actions.isModelFetchResultAction)(action) && action.modelPath === 'user.userInfo');
188
+ const autoSendTask = yield (0, _effects.fork)(autoSend);
189
+ setPersonAndStartCaliperSession(userInfo.data);
190
+
191
+ // user logs out => stop auto-send and end session
192
+ yield (0, _effects.take)(_actions.AUTH_ACTION_TYPE.LOG_OUT_REQUESTED);
193
+ yield (0, _effects.cancel)(autoSendTask);
194
+ void endCaliperSession();
195
+ // attempt to send the session end event once, w/ no token refresh since logged out
196
+ yield (0, _effects.call)(send);
197
+ }
183
198
  }
199
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfc3R1ZGlva2l0Q2FsaXBlckpzIiwiX2NvbmZpZ3VyYXRpb24iLCJfcGVyc2lzdGVuY2VTZXJ2aWNlIiwiX2RhdGUiLCJfYWN0aW9uQ3JlYXRvciIsIl9hY3Rpb25zIiwic2VydmljZSIsImNhbGlwZXJUb2tlbiIsImluaXRpYWxpemVDYWxpcGVyU2VydmljZSIsInNoYXJkQ29uZmlnIiwiYXBwQ29uZmlnIiwiZ2V0QXBwQ29uZmlnIiwiY2FsaXBlckV2ZW50U3RvcmVIb3N0bmFtZSIsInNlbnNvck9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJDQUxJUEVSX0VWRU5UX1NUT1JFX09QVElPTlMiLCJob3N0bmFtZSIsIm9wdGlvbnMiLCJzZW5zb3JJZCIsIkNBTElQRVJfU0VOU09SX0lEIiwiYXBwSWQiLCJDQUxJUEVSX1NFTlNPUl9BUFBfSUQiLCJhcHBOYW1lIiwiQ0FMSVBFUl9TRU5TT1JfQVBQX05BTUUiLCJnZXRUb2tlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiRXJyb3IiLCJhdXRvU2VuZCIsIkJyb3dzZXJDYWxpcGVyU2VydmljZSIsInNldENhbGlwZXJQZXJzb24iLCJ1c2VyRGF0YSIsImdldFNoYXJkQ29uZmlnIiwicGVyc29uTmFtZXNwYWNlIiwiY2FsaXBlclBlcnNvbk5hbWVzcGFjZSIsImlkIiwicHVpZCIsImV4dGVuc2lvbnMiLCJDQUxJUEVSX0VYVEVOU0lPTlNfTkFNRVNQQUNFIiwic2V0UGVyc29uIiwiZmlyc3ROYW1lIiwidW5kZWZpbmVkIiwibGFzdE5hbWUiLCJzdGFydENhbGlwZXJTZXNzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50Iiwic3RhcnRTZXNzaW9uIiwiZW5kQ2FsaXBlclNlc3Npb24iLCJlbmRTZXNzaW9uIiwic2V0UGVyc29uQW5kU3RhcnRDYWxpcGVyU2Vzc2lvbiIsImlzVG9rZW5FeHBpcmVkIiwiRGF0ZSIsImV4cGlyZXMiLCJnZXRTZXJ2ZXJOb3dVdGMiLCJsb2FkVG9rZW4iLCJjYWxsIiwicGVyc2lzdGVuY2VTZXJ2aWNlIiwiZ2V0UGVyc2lzdGVkQ2FsaXBlclRva2VuIiwiZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCIsIm1vZGVsTmFtZSIsIm5vU3RvcmUiLCJyZWNlaXZlZFJlc3VsdCIsImZhaWxlZFJlc3VsdCIsInJhY2UiLCJ0YWtlIiwiYWN0aW9uIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24iLCJkYXRhIiwiYWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJnZXRUb2tlbldpdGhSZXRyeSIsInRyeUNvdW50IiwiZGVsYXkiLCJNYXRoIiwibWluIiwic2VuZCIsInNlbmRXaXRoVG9rZW5SZWZyZXNoSWZOZWVkZWQiLCJjYWxpcGVyU2FnYSIsImNvbmZpZ3VyYXRpb25SZXN1bHQiLCJpc01vZGVsRmV0Y2hSZXN1bHRBY3Rpb24iLCJjb25maWd1cmF0aW9uIiwiY2FsaXBlckVuYWJsZWQiLCJ1c2VySW5mbyIsImF1dG9TZW5kVGFzayIsImZvcmsiLCJBVVRIX0FDVElPTl9UWVBFIiwiTE9HX09VVF9SRVFVRVNURUQiLCJjYW5jZWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvc2FnYXMvY2FsaXBlclNhZ2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFzayB9IGZyb20gJ0ByZWR1eC1zYWdhL2NvcmUnXHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBTYWdhSXRlcmF0b3IgfSBmcm9tICdyZWR1eC1zYWdhJ1xyXG5pbXBvcnQgeyBjYWxsLCBjYW5jZWwsIGRlbGF5LCBmb3JrLCByYWNlLCB0YWtlIH0gZnJvbSAncmVkdXgtc2FnYS9lZmZlY3RzJ1xyXG5pbXBvcnQgeyBCcm93c2VyQ2FsaXBlclNlcnZpY2UgfSBmcm9tICdzdHVkaW9raXQtY2FsaXBlci1qcydcclxuaW1wb3J0IHtcclxuXHRDYWxpcGVyU2Vuc29yT3B0aW9ucyxcclxuXHRDYWxpcGVyU2VydmljZSxcclxuXHRDYWxpcGVyU2VydmljZU9wdGlvbnMsXHJcblx0Q2FsaXBlclRva2VuXHJcbn0gZnJvbSAnc3R1ZGlva2l0LWNhbGlwZXItanMvbGliL3R5cGVzJ1xyXG5pbXBvcnQgeyBnZXRBcHBDb25maWcsIGdldFNoYXJkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZ3VyYXRpb24nXHJcbmltcG9ydCB7IHBlcnNpc3RlbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BlcnNpc3RlbmNlU2VydmljZSdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgRmV0Y2hSZXN1bHQsIFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7IGdldFNlcnZlck5vd1V0YyB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnXHJcbmltcG9ydCB7IGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3QgfSBmcm9tICcuLi9hY3Rpb25DcmVhdG9yJ1xyXG5pbXBvcnQge1xyXG5cdEFVVEhfQUNUSU9OX1RZUEUsXHJcblx0aXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uLFxyXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uLFxyXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvblxyXG59IGZyb20gJy4uL2FjdGlvbnMnXHJcblxyXG4vLyNyZWdpb24gTG9jYWwgVmFyaWFibGVzXHJcblxyXG5sZXQgc2VydmljZTogQ2FsaXBlclNlcnZpY2VcclxubGV0IGNhbGlwZXJUb2tlbjogQ2FsaXBlclRva2VuIHwgdW5kZWZpbmVkXHJcblxyXG4vLyNlbmRyZWdpb24gTG9jYWwgVmFyaWFibGVzXHJcblxyXG4vLyNyZWdpb24gQ2FsaXBlclNlcnZpY2UgSGVscGVyc1xyXG5cclxuZnVuY3Rpb24gaW5pdGlhbGl6ZUNhbGlwZXJTZXJ2aWNlKHNoYXJkQ29uZmlnOiBDb25maWd1cmF0aW9uKSB7XHJcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcclxuXHRpZiAoIXNoYXJkQ29uZmlnLmNhbGlwZXJFdmVudFN0b3JlSG9zdG5hbWUpIHtcclxuXHRcdHJldHVyblxyXG5cdH1cclxuXHRjb25zdCBzZW5zb3JPcHRpb25zOiBDYWxpcGVyU2Vuc29yT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGFwcENvbmZpZy5DQUxJUEVSX0VWRU5UX1NUT1JFX09QVElPTlMsIHtcclxuXHRcdGhvc3RuYW1lOiBzaGFyZENvbmZpZy5jYWxpcGVyRXZlbnRTdG9yZUhvc3RuYW1lXHJcblx0fSlcclxuXHRjb25zdCBvcHRpb25zOiBQYXJ0aWFsPENhbGlwZXJTZXJ2aWNlT3B0aW9ucz4gPSB7XHJcblx0XHRzZW5zb3JJZDogYXBwQ29uZmlnLkNBTElQRVJfU0VOU09SX0lELFxyXG5cdFx0c2Vuc29yT3B0aW9ucyxcclxuXHRcdGFwcElkOiBhcHBDb25maWcuQ0FMSVBFUl9TRU5TT1JfQVBQX0lELFxyXG5cdFx0YXBwTmFtZTogYXBwQ29uZmlnLkNBTElQRVJfU0VOU09SX0FQUF9OQU1FLFxyXG5cdFx0Z2V0VG9rZW46IGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHRpZiAoY2FsaXBlclRva2VuKSB7XHJcblx0XHRcdFx0XHRyZXNvbHZlKGNhbGlwZXJUb2tlbilcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcignYGNhbGlwZXJUb2tlbmAgaXMgdW5kZWZpbmVkJykpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIGRpc2FibGUgYXV0byBzZW5kLCB0aGUgc2FnYSB3aWxsIGhhbmRsZSB0aGlzXHJcblx0XHRhdXRvU2VuZDogZmFsc2VcclxuXHR9XHJcblx0Y29uc3Qgc2VydmljZTogQ2FsaXBlclNlcnZpY2UgPSBuZXcgQnJvd3NlckNhbGlwZXJTZXJ2aWNlKG9wdGlvbnMpXHJcblx0cmV0dXJuIHNlcnZpY2VcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0Q2FsaXBlclBlcnNvbih1c2VyRGF0YTogVXNlckluZm8pIHtcclxuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxyXG5cdGNvbnN0IHNoYXJkQ29uZmlnID0gZ2V0U2hhcmRDb25maWcoKVxyXG5cdGNvbnN0IHBlcnNvbk5hbWVzcGFjZSA9IHNoYXJkQ29uZmlnLmNhbGlwZXJQZXJzb25OYW1lc3BhY2VcclxuXHRjb25zdCBpZCA9IGAke3BlcnNvbk5hbWVzcGFjZX0ke3VzZXJEYXRhLnB1aWR9YFxyXG5cdGNvbnN0IGV4dGVuc2lvbnM6IERpY3Rpb25hcnk8YW55PiA9IHt9XHJcblx0ZXh0ZW5zaW9uc1tgJHthcHBDb25maWcuQ0FMSVBFUl9FWFRFTlNJT05TX05BTUVTUEFDRX0udXNlcklkYF0gPSB1c2VyRGF0YS5pZFxyXG5cdHNlcnZpY2Uuc2V0UGVyc29uKGlkLCB1c2VyRGF0YS5maXJzdE5hbWUgPz8gdW5kZWZpbmVkLCB1c2VyRGF0YS5sYXN0TmFtZSA/PyB1bmRlZmluZWQsIGV4dGVuc2lvbnMpXHJcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0YXJ0Q2FsaXBlclNlc3Npb24oKSB7XHJcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcclxuXHRjb25zdCBleHRlbnNpb25zOiBEaWN0aW9uYXJ5PGFueT4gPSB7fVxyXG5cdGV4dGVuc2lvbnNbYCR7YXBwQ29uZmlnLkNBTElQRVJfRVhURU5TSU9OU19OQU1FU1BBQ0V9LnVzZXJBZ2VudGBdID0gbmF2aWdhdG9yLnVzZXJBZ2VudFxyXG5cdHNlcnZpY2Uuc3RhcnRTZXNzaW9uKGV4dGVuc2lvbnMpXHJcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVuZENhbGlwZXJTZXNzaW9uKCkge1xyXG5cdHNlcnZpY2UuZW5kU2Vzc2lvbigpXHJcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldFBlcnNvbkFuZFN0YXJ0Q2FsaXBlclNlc3Npb24odXNlckRhdGE6IFVzZXJJbmZvKSB7XHJcblx0dm9pZCBzZXRDYWxpcGVyUGVyc29uKHVzZXJEYXRhKVxyXG5cdHZvaWQgc3RhcnRDYWxpcGVyU2Vzc2lvbigpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzVG9rZW5FeHBpcmVkKGNhbGlwZXJUb2tlbjogQ2FsaXBlclRva2VuKSB7XHJcblx0cmV0dXJuIG5ldyBEYXRlKGNhbGlwZXJUb2tlbi5leHBpcmVzKSA8PSBnZXRTZXJ2ZXJOb3dVdGMoKVxyXG59XHJcblxyXG4vLyNlbmRyZWdpb24gQ2FsaXBlclNlcnZpY2UgSGVscGVyc1xyXG5cclxuLyoqXHJcbiAqIExvYWQgdGhlIHBlcnNpc3RlZCBgY2FsaXBlclRva2VuYCwgaWYgYW55LiBUaGlzIHRva2VuIGlzIHBlcnNpc3RlZCBieSB0aGUgQ2FsaXBlclNlcnZpY2UsXHJcbiAqIGJ1dCB3ZSBsb2FkIGl0IGluIG9yZGVyIHRvIGNoZWNrIGV4cGlyeS5cclxuICovXHJcbmZ1bmN0aW9uKiBsb2FkVG9rZW4oKTogU2FnYUl0ZXJhdG9yPENhbGlwZXJUb2tlbiB8IHVuZGVmaW5lZD4ge1xyXG5cdGNvbnN0IGNhbGlwZXJUb2tlbjogQ2FsaXBlclRva2VuIHwgbnVsbCA9IHlpZWxkIGNhbGwocGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZENhbGlwZXJUb2tlbilcclxuXHRpZiAoY2FsaXBlclRva2VuKSByZXR1cm4gY2FsaXBlclRva2VuXHJcblx0cmV0dXJuIHVuZGVmaW5lZFxyXG59XHJcblxyXG4vKipcclxuICogTG9hZCBhIG5ldyBgY2FsaXBlclRva2VuYCBmcm9tIHRoZSBBUEkuIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGRhdGEgcmVxdWVzdCBmYWlscy5cclxuICovXHJcbmZ1bmN0aW9uKiBnZXRUb2tlbigpOiBTYWdhSXRlcmF0b3I8Q2FsaXBlclRva2VuIHwgdW5kZWZpbmVkPiB7XHJcblx0ZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCh7XHJcblx0XHRtb2RlbE5hbWU6ICdjYWxpcGVyVG9rZW4nLFxyXG5cdFx0bm9TdG9yZTogdHJ1ZVxyXG5cdH0pXHJcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG5cdGNvbnN0IHsgcmVjZWl2ZWRSZXN1bHQsIGZhaWxlZFJlc3VsdCB9ID0geWllbGQgcmFjZSh7XHJcblx0XHRyZWNlaXZlZFJlc3VsdDogdGFrZShcclxuXHRcdFx0KGFjdGlvbjogQW55QWN0aW9uKSA9PiBpc1RyYW5zaWVudE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSAnY2FsaXBlclRva2VuJ1xyXG5cdFx0KSxcclxuXHRcdGZhaWxlZFJlc3VsdDogdGFrZShcclxuXHRcdFx0KGFjdGlvbjogQW55QWN0aW9uKSA9PiBpc1RyYW5zaWVudE1vZGVsRmV0Y2hFcnJvckFjdGlvbihhY3Rpb24pICYmIGFjdGlvbi5tb2RlbFBhdGggPT09ICdjYWxpcGVyVG9rZW4nXHJcblx0XHQpXHJcblx0fSlcclxuXHRpZiAocmVjZWl2ZWRSZXN1bHQgJiYgcmVjZWl2ZWRSZXN1bHQuZGF0YSkge1xyXG5cdFx0Ly8gY29udmVydCB0byBDYWxpcGVyVG9rZW4gZnJvbSBPQXV0aFRva2VuXHJcblx0XHRjb25zdCBjYWxpcGVyVG9rZW46IENhbGlwZXJUb2tlbiA9IHtcclxuXHRcdFx0YWNjZXNzVG9rZW46IHJlY2VpdmVkUmVzdWx0LmRhdGEuYWNjZXNzX3Rva2VuLFxyXG5cdFx0XHRleHBpcmVzOiByZWNlaXZlZFJlc3VsdC5kYXRhWycuZXhwaXJlcyddXHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY2FsaXBlclRva2VuXHJcblx0fVxyXG5cdHJldHVybiB1bmRlZmluZWRcclxufVxyXG5cclxuLyoqXHJcbiAqIENhbGxzIGBnZXRUb2tlbmAsIGJ1dCBrZWVwcyByZXRyeWluZyB1bnRpbCBhIHRva2VuIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWQsIHVzaW5nIGEgYmFjay1vZmYgZGVsYXkgc3RyYXRlZ3kuXHJcbiAqL1xyXG5mdW5jdGlvbiogZ2V0VG9rZW5XaXRoUmV0cnkoKTogU2FnYUl0ZXJhdG9yPENhbGlwZXJUb2tlbj4ge1xyXG5cdC8vIGdldCB0b2tlblxyXG5cdGxldCBjYWxpcGVyVG9rZW4gPSB5aWVsZCBjYWxsKGdldFRva2VuKVxyXG5cdC8vIGhhbmRsZSBmYWlsaW5nIHRvIGxvYWQgdG9rZW5cclxuXHRsZXQgdHJ5Q291bnQgPSAxXHJcblx0d2hpbGUgKCFjYWxpcGVyVG9rZW4pIHtcclxuXHRcdC8vIGJhY2stb2ZmIGRlbGF5XHJcblx0XHR5aWVsZCBkZWxheShNYXRoLm1pbigxMDAwICogNjAsIDIgXiAodHJ5Q291bnQgKiAxMDApKSkgLy8gMTAwLCAyMDAsIDQwMC4uLlxyXG5cdFx0Y2FsaXBlclRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbilcclxuXHRcdHRyeUNvdW50KytcclxuXHR9XHJcblx0cmV0dXJuIGNhbGlwZXJUb2tlblxyXG59XHJcblxyXG4vKipcclxuICogU2FnYSBkZWNvcmF0b3IgZm9yIHRoZSBgQ2FsaXBlclNlcnZpY2Uuc2VuZGAgbWV0aG9kXHJcbiAqL1xyXG5mdW5jdGlvbiogc2VuZCgpIHtcclxuXHR0cnkge1xyXG5cdFx0eWllbGQgY2FsbChzZXJ2aWNlLnNlbmQpXHJcblx0fSBjYXRjaCB7XHJcblx0XHQvLyBjYXRjaCBlcnJvciB0byBhdm9pZCBicmVha2luZyB0aGUgc2FnYVxyXG5cdFx0Ly8gaWdub3JlIGVycm9yIHNpbmNlIGBDYWxpcGVyU2VydmljZWAgYWxyZWFkeSB0cmFja3Mgc2VuZCBlcnJvcnNcclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTYWdhIGRlY29yYXRvciBmb3IgdGhlIGBDYWxpcGVyU2VydmljZS5zZW5kYCBtZXRob2QsXHJcbiAqIHdoaWNoIHdpbGwgcmVmcmVzaCB0aGUgYGNhbGlwZXJUb2tlbmAgaWYgbmVlZGVkIGJlZm9yZSBjYWxsaW5nIGBzZW5kYFxyXG4gKi9cclxuZnVuY3Rpb24qIHNlbmRXaXRoVG9rZW5SZWZyZXNoSWZOZWVkZWQoKSB7XHJcblx0Ly8gcmVmcmVzaCB0b2tlbiwgaWYgbmVlZGVkXHJcblx0aWYgKCFjYWxpcGVyVG9rZW4gfHwgaXNUb2tlbkV4cGlyZWQoY2FsaXBlclRva2VuKSkge1xyXG5cdFx0Y2FsaXBlclRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbldpdGhSZXRyeSlcclxuXHR9XHJcblx0Ly8gc2VuZFxyXG5cdHlpZWxkIGNhbGwoc2VuZClcclxufVxyXG5cclxuLyoqXHJcbiAqIFNhZ2EgZm9yayBpbXBsZW1lbnRpbmcgdGhlIFwiYXV0byBzZW5kXCIgZnVuY3Rpb25hbGl0eSBmcm9tIGBDYWxpcGVyU2VydmljZS5cclxuICogQ2FsbHMgYHNlbmRgIGV2ZXJ5IDEwIHNlY29uZHMuXHJcbiAqL1xyXG5mdW5jdGlvbiogYXV0b1NlbmQoKSB7XHJcblx0d2hpbGUgKHRydWUpIHtcclxuXHRcdC8vIHRyeSB0byBzZW5kIGV2ZXJ5IDEwIHNlY29uZHNcclxuXHRcdHlpZWxkIGRlbGF5KDEwICogMTAwMClcclxuXHRcdHlpZWxkIGNhbGwoc2VuZFdpdGhUb2tlblJlZnJlc2hJZk5lZWRlZClcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBjYWxpcGVyU2FnYSgpOiBTYWdhSXRlcmF0b3Ige1xyXG5cdC8vIG9uIGFwcCBzdGFydCwgZ2V0IHRoZSBjb25maWd1cmF0aW9uXHJcblx0Y29uc3QgY29uZmlndXJhdGlvblJlc3VsdCA9IHlpZWxkIHRha2UoXHJcblx0XHQoYWN0aW9uOiBBbnlBY3Rpb24pID0+IGlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbihhY3Rpb24pICYmIGFjdGlvbi5tb2RlbFBhdGggPT09ICdjb25maWd1cmF0aW9uJ1xyXG5cdClcclxuXHRjb25zdCBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblJlc3VsdC5kYXRhXHJcblx0Ly8gZG8gbm90IHByb2NlZWQgaWYgY2FsaXBlciBpcyBub3QgZW5hYmxlZCBvciBpcyBtaXNzaW5nIGhvc3RuYW1lXHJcblx0aWYgKCFjb25maWd1cmF0aW9uLmNhbGlwZXJFbmFibGVkIHx8ICFjb25maWd1cmF0aW9uLmNhbGlwZXJFdmVudFN0b3JlSG9zdG5hbWUpIHtcclxuXHRcdHJldHVyblxyXG5cdH1cclxuXHJcblx0Ly8gbG9hZCBwZXJzaXN0ZWQgdG9rZW4sIGlmIGFueVxyXG5cdGNhbGlwZXJUb2tlbiA9IHlpZWxkIGNhbGwobG9hZFRva2VuKVxyXG5cdC8vIGluaXRpYWxpemUgY2FsaXBlciBzZXJ2aWNlXHJcblx0c2VydmljZSA9IHlpZWxkIGNhbGwoaW5pdGlhbGl6ZUNhbGlwZXJTZXJ2aWNlLCBjb25maWd1cmF0aW9uKVxyXG5cclxuXHR3aGlsZSAodHJ1ZSkge1xyXG5cdFx0Ly8gdXNlciBpcyBsb2FkZWQgYW5kIGF1dGhlbnRpY2F0ZWQgPT4gY2FuIGdldCB0b2tlbiBhbmQgY2FuIHN0YXJ0IHNlc3Npb25cclxuXHRcdGNvbnN0IHVzZXJJbmZvOiBGZXRjaFJlc3VsdDxVc2VySW5mbz4gPSB5aWVsZCB0YWtlKFxyXG5cdFx0XHQoYWN0aW9uOiBBbnlBY3Rpb24pID0+IGlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbihhY3Rpb24pICYmIGFjdGlvbi5tb2RlbFBhdGggPT09ICd1c2VyLnVzZXJJbmZvJ1xyXG5cdFx0KVxyXG5cdFx0Y29uc3QgYXV0b1NlbmRUYXNrOiBUYXNrID0geWllbGQgZm9yayhhdXRvU2VuZClcclxuXHRcdHNldFBlcnNvbkFuZFN0YXJ0Q2FsaXBlclNlc3Npb24odXNlckluZm8uZGF0YSlcclxuXHJcblx0XHQvLyB1c2VyIGxvZ3Mgb3V0ID0+IHN0b3AgYXV0by1zZW5kIGFuZCBlbmQgc2Vzc2lvblxyXG5cdFx0eWllbGQgdGFrZShBVVRIX0FDVElPTl9UWVBFLkxPR19PVVRfUkVRVUVTVEVEKVxyXG5cdFx0eWllbGQgY2FuY2VsKGF1dG9TZW5kVGFzaylcclxuXHRcdHZvaWQgZW5kQ2FsaXBlclNlc3Npb24oKVxyXG5cdFx0Ly8gYXR0ZW1wdCB0byBzZW5kIHRoZSBzZXNzaW9uIGVuZCBldmVudCBvbmNlLCB3LyBubyB0b2tlbiByZWZyZXNoIHNpbmNlIGxvZ2dlZCBvdXRcclxuXHRcdHlpZWxkIGNhbGwoc2VuZClcclxuXHR9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxtQkFBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQU9BOztBQUVBLElBQUlPLE9BQXVCO0FBQzNCLElBQUlDLFlBQXNDOztBQUUxQzs7QUFFQTs7QUFFQSxTQUFTQyx3QkFBd0JBLENBQUNDLFdBQTBCLEVBQUU7RUFDN0QsTUFBTUMsU0FBUyxHQUFHLElBQUFDLDJCQUFZLEVBQUMsQ0FBQztFQUNoQyxJQUFJLENBQUNGLFdBQVcsQ0FBQ0cseUJBQXlCLEVBQUU7SUFDM0M7RUFDRDtFQUNBLE1BQU1DLGFBQW1DLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFTCxTQUFTLENBQUNNLDJCQUEyQixFQUFFO0lBQ3BHQyxRQUFRLEVBQUVSLFdBQVcsQ0FBQ0c7RUFDdkIsQ0FBQyxDQUFDO0VBQ0YsTUFBTU0sT0FBdUMsR0FBRztJQUMvQ0MsUUFBUSxFQUFFVCxTQUFTLENBQUNVLGlCQUFpQjtJQUNyQ1AsYUFBYTtJQUNiUSxLQUFLLEVBQUVY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
@@ -1,37 +1,40 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = clockOffsetSaga;
4
- const tslib_1 = require("tslib");
5
- const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
6
- const effects_1 = require("redux-saga/effects");
7
- const date_1 = require("../../utils/date");
8
- const logger_1 = require("../../utils/logger");
9
- const actions_1 = require("../actions");
10
- /**
11
- Periodically, we fetch the current UTC server time. To insure against browser clock time being set
12
- incorrectly, we track the difference between server time and browser time by storing that
13
- difference in a module-level variable in the date utilities module. That module provides a method
14
- to get the current UTC time, according to the API server.
15
2
 
16
- If the calculated difference is less than one second, we can assume that's a result of network
17
- latency and will not store that offset.
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = clockOffsetSaga;
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _effects = require("redux-saga/effects");
10
+ var _date = require("../../utils/date");
11
+ var _logger = require("../../utils/logger");
12
+ var _actions = require("../actions");
13
+ /**
14
+ Periodically, we fetch the current UTC server time. To insure against browser clock time being set
15
+ incorrectly, we track the difference between server time and browser time by storing that
16
+ difference in a module-level variable in the date utilities module. That module provides a method
17
+ to get the current UTC time, according to the API server.
18
+
19
+ If the calculated difference is less than one second, we can assume that's a result of network
20
+ latency and will not store that offset.
18
21
  */
19
22
  function* clockOffsetSaga() {
20
- const logger = (0, logger_1.getLogger)();
21
- while (true) {
22
- const timeResult = yield (0, effects_1.take)((action) => (0, actions_1.isTransientModelFetchResultAction)(action) && action.modelPath === 'time');
23
- const time = timeResult.data;
24
- const offset = moment_timezone_1.default.utc(time).diff(moment_timezone_1.default.utc());
25
- if (Math.abs(offset) > 1000) {
26
- logger.debug('> 1 second server <-> browser time difference');
27
- logger.debug('server', time);
28
- logger.debug('browser', new Date().toISOString());
29
- logger.debug('calculated', new Date(Date.now() + offset).toISOString());
30
- yield (0, effects_1.call)(date_1.setClockOffset, offset);
31
- }
32
- else {
33
- logger.debug('clear clock offset');
34
- yield (0, effects_1.call)(date_1.setClockOffset, 0);
35
- }
23
+ const logger = (0, _logger.getLogger)();
24
+ while (true) {
25
+ const timeResult = yield (0, _effects.take)(action => (0, _actions.isTransientModelFetchResultAction)(action) && action.modelPath === 'time');
26
+ const time = timeResult.data;
27
+ const offset = _momentTimezone.default.utc(time).diff(_momentTimezone.default.utc());
28
+ if (Math.abs(offset) > 1000) {
29
+ logger.debug('> 1 second server <-> browser time difference');
30
+ logger.debug('server', time);
31
+ logger.debug('browser', new Date().toISOString());
32
+ logger.debug('calculated', new Date(Date.now() + offset).toISOString());
33
+ yield (0, _effects.call)(_date.setClockOffset, offset);
34
+ } else {
35
+ logger.debug('clear clock offset');
36
+ yield (0, _effects.call)(_date.setClockOffset, 0);
36
37
  }
38
+ }
37
39
  }
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX2RhdGUiLCJfbG9nZ2VyIiwiX2FjdGlvbnMiLCJjbG9ja09mZnNldFNhZ2EiLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJ0aW1lUmVzdWx0IiwidGFrZSIsImFjdGlvbiIsImlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbiIsIm1vZGVsUGF0aCIsInRpbWUiLCJkYXRhIiwib2Zmc2V0IiwibW9tZW50IiwidXRjIiwiZGlmZiIsIk1hdGgiLCJhYnMiLCJkZWJ1ZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsIm5vdyIsImNhbGwiLCJzZXRDbG9ja09mZnNldCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9zYWdhcy9jbG9ja09mZnNldFNhZ2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnXHJcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBTYWdhSXRlcmF0b3IgfSBmcm9tICdyZWR1eC1zYWdhJ1xyXG5pbXBvcnQgeyBjYWxsLCB0YWtlIH0gZnJvbSAncmVkdXgtc2FnYS9lZmZlY3RzJ1xyXG5pbXBvcnQgeyBzZXRDbG9ja09mZnNldCB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnXHJcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvZ2dlcidcclxuaW1wb3J0IHsgaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucydcclxuXHJcbi8qKlxyXG5cdFBlcmlvZGljYWxseSwgd2UgZmV0Y2ggdGhlIGN1cnJlbnQgVVRDIHNlcnZlciB0aW1lLiBUbyBpbnN1cmUgYWdhaW5zdCBicm93c2VyIGNsb2NrIHRpbWUgYmVpbmcgc2V0XHJcblx0aW5jb3JyZWN0bHksIHdlIHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2VydmVyIHRpbWUgYW5kIGJyb3dzZXIgdGltZSBieSBzdG9yaW5nIHRoYXRcclxuXHRkaWZmZXJlbmNlIGluIGEgbW9kdWxlLWxldmVsIHZhcmlhYmxlIGluIHRoZSBkYXRlIHV0aWxpdGllcyBtb2R1bGUuIFRoYXQgbW9kdWxlIHByb3ZpZGVzIGEgbWV0aG9kXHJcblx0dG8gZ2V0IHRoZSBjdXJyZW50IFVUQyB0aW1lLCBhY2NvcmRpbmcgdG8gdGhlIEFQSSBzZXJ2ZXIuXHJcblxyXG5cdElmIHRoZSBjYWxjdWxhdGVkIGRpZmZlcmVuY2UgaXMgbGVzcyB0aGFuIG9uZSBzZWNvbmQsIHdlIGNhbiBhc3N1bWUgdGhhdCdzIGEgcmVzdWx0IG9mIG5ldHdvcmtcclxuXHRsYXRlbmN5IGFuZCB3aWxsIG5vdCBzdG9yZSB0aGF0IG9mZnNldC5cclxuKi9cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGNsb2NrT2Zmc2V0U2FnYSgpOiBTYWdhSXRlcmF0b3Ige1xyXG5cdGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcigpXHJcblxyXG5cdHdoaWxlICh0cnVlKSB7XHJcblx0XHRjb25zdCB0aW1lUmVzdWx0ID0geWllbGQgdGFrZShcclxuXHRcdFx0KGFjdGlvbjogQW55QWN0aW9uKSA9PiBpc1RyYW5zaWVudE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSAndGltZSdcclxuXHRcdClcclxuXHRcdGNvbnN0IHRpbWU6IHN0cmluZyA9IHRpbWVSZXN1bHQuZGF0YVxyXG5cdFx0Y29uc3Qgb2Zmc2V0ID0gbW9tZW50LnV0Yyh0aW1lKS5kaWZmKG1vbWVudC51dGMoKSlcclxuXHRcdGlmIChNYXRoLmFicyhvZmZzZXQpID4gMTAwMCkge1xyXG5cdFx0XHRsb2dnZXIuZGVidWcoJz4gMSBzZWNvbmQgc2VydmVyIDwtPiBicm93c2VyIHRpbWUgZGlmZmVyZW5jZScpXHJcblx0XHRcdGxvZ2dlci5kZWJ1Zygnc2VydmVyJywgdGltZSlcclxuXHRcdFx0bG9nZ2VyLmRlYnVnKCdicm93c2VyJywgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKVxyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ2NhbGN1bGF0ZWQnLCBuZXcgRGF0ZShEYXRlLm5vdygpICsgb2Zmc2V0KS50b0lTT1N0cmluZygpKVxyXG5cdFx0XHR5aWVsZCBjYWxsKHNldENsb2NrT2Zmc2V0LCBvZmZzZXQpXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsb2dnZXIuZGVidWcoJ2NsZWFyIGNsb2NrIG9mZnNldCcpXHJcblx0XHRcdHlpZWxkIGNhbGwoc2V0Q2xvY2tPZmZzZXQsIDApXHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLFVBQVVLLGVBQWVBLENBQUEsRUFBaUI7RUFDeEQsTUFBTUMsTUFBTSxHQUFHLElBQUFDLGlCQUFTLEVBQUMsQ0FBQztFQUUxQixPQUFPLElBQUksRUFBRTtJQUNaLE1BQU1DLFVBQVUsR0FBRyxNQUFNLElBQUFDLGFBQUksRUFDM0JDLE1BQWlCLElBQUssSUFBQUMsMENBQWlDLEVBQUNELE1BQU0sQ0FBQyxJQUFJQSxNQUFNLENBQUNFLFNBQVMsS0FBSyxNQUMxRixDQUFDO0lBQ0QsTUFBTUMsSUFBWSxHQUFHTCxVQUFVLENBQUNNLElBQUk7SUFDcEMsTUFBTUMsTUFBTSxHQUFHQyx1QkFBTSxDQUFDQyxHQUFHLENBQUNKLElBQUksQ0FBQyxDQUFDSyxJQUFJLENBQUNGLHVCQUFNLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSUUsSUFBSSxDQUFDQyxHQUFHLENBQUNMLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRTtNQUM1QlQsTUFBTSxDQUFDZSxLQUFLLENBQUMsK0NBQStDLENBQUM7TUFDN0RmLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLFFBQVEsRUFBRVIsSUFBSSxDQUFDO01BQzVCUCxNQUFNLENBQUNlLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQztNQUNqRGpCLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJQyxJQUFJLENBQUNBLElBQUksQ0FBQ0UsR0FBRyxDQUFDLENBQUMsR0FBR1QsTUFBTSxDQUFDLENBQUNRLFdBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkUsTUFBTSxJQUFBRSxhQUFJLEVBQUNDLG9CQUFjLEVBQUVYLE1BQU0sQ0FBQztJQUNuQyxDQUFDLE1BQU07TUFDTlQsTUFBTSxDQUFDZSxLQUFLLENBQUMsb0JBQW9CLENBQUM7TUFDbEMsTUFBTSxJQUFBSSxhQUFJLEVBQUNDLG9CQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzlCO0VBQ0Q7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = configurationSaga;
4
- const effects_1 = require("redux-saga/effects");
5
- const configuration_1 = require("../../constants/configuration");
6
- const actions_1 = require("../actions");
7
+ var _effects = require("redux-saga/effects");
8
+ var _configuration = require("../../constants/configuration");
9
+ var _actions = require("../actions");
7
10
  function* configurationSaga() {
8
- const configurationResult = yield (0, effects_1.take)((action) => (0, actions_1.isModelFetchResultAction)(action) && action.modelPath === 'configuration');
9
- const configuration = configurationResult.data;
10
- yield (0, effects_1.call)(configuration_1.setShardConfig, configuration);
11
+ const configurationResult = yield (0, _effects.take)(action => (0, _actions.isModelFetchResultAction)(action) && action.modelPath === 'configuration');
12
+ const configuration = configurationResult.data;
13
+ yield (0, _effects.call)(_configuration.setShardConfig, configuration);
11
14
  }
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfY29uZmlndXJhdGlvbiIsIl9hY3Rpb25zIiwiY29uZmlndXJhdGlvblNhZ2EiLCJjb25maWd1cmF0aW9uUmVzdWx0IiwidGFrZSIsImFjdGlvbiIsImlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiIsIm1vZGVsUGF0aCIsImNvbmZpZ3VyYXRpb24iLCJkYXRhIiwiY2FsbCIsInNldFNoYXJkQ29uZmlnIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2NvbmZpZ3VyYXRpb25TYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBTYWdhSXRlcmF0b3IgfSBmcm9tICdyZWR1eC1zYWdhJ1xyXG5pbXBvcnQgeyBjYWxsLCB0YWtlIH0gZnJvbSAncmVkdXgtc2FnYS9lZmZlY3RzJ1xyXG5pbXBvcnQgeyBzZXRTaGFyZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWd1cmF0aW9uJ1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7IGlzTW9kZWxGZXRjaFJlc3VsdEFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogY29uZmlndXJhdGlvblNhZ2EoKTogU2FnYUl0ZXJhdG9yIHtcclxuXHRjb25zdCBjb25maWd1cmF0aW9uUmVzdWx0ID0geWllbGQgdGFrZShcclxuXHRcdChhY3Rpb246IEFueUFjdGlvbikgPT4gaXNNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gJ2NvbmZpZ3VyYXRpb24nXHJcblx0KVxyXG5cdGNvbnN0IGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uUmVzdWx0LmRhdGFcclxuXHR5aWVsZCBjYWxsKHNldFNoYXJkQ29uZmlnLCBjb25maWd1cmF0aW9uKVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBRWUsVUFBVUcsaUJBQWlCQSxDQUFBLEVBQWlCO0VBQzFELE1BQU1DLG1CQUFtQixHQUFHLE1BQU0sSUFBQUMsYUFBSSxFQUNwQ0MsTUFBaUIsSUFBSyxJQUFBQyxpQ0FBd0IsRUFBQ0QsTUFBTSxDQUFDLElBQUlBLE1BQU0sQ0FBQ0UsU0FBUyxLQUFLLGVBQ2pGLENBQUM7RUFDRCxNQUFNQyxhQUE0QixHQUFHTCxtQkFBbUIsQ0FBQ00sSUFBSTtFQUM3RCxNQUFNLElBQUFDLGFBQUksRUFBQ0MsNkJBQWMsRUFBRUgsYUFBYSxDQUFDO0FBQzFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,22 +1,25 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.default = downtimeApiErrorSaga;
4
- const connected_react_router_1 = require("connected-react-router");
5
- const effects_1 = require("redux-saga/effects");
6
- const types_1 = require("../../types");
7
- const actions_1 = require("../actions");
8
- function* downtimeApiErrorSaga(runIndefinitely = true) {
7
+ var _connectedReactRouter = require("connected-react-router");
8
+ var _effects = require("redux-saga/effects");
9
+ var _types = require("../../types");
10
+ var _actions = require("../actions");
11
+ function downtimeApiErrorSaga() {
12
+ let runIndefinitely = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
13
+ return function* () {
9
14
  do {
10
- // wait for any downtime error response
11
- yield (0, effects_1.take)((action) => {
12
- var _a;
13
- return (0, actions_1.isModelTryFetchErrorAction)(action) &&
14
- ((_a = action.errorData) === null || _a === void 0 ? void 0 : _a.status) === types_1.HTTP_STATUS_CODE.FORBIDDEN &&
15
- action.errorData.title.includes("We'll be right back!");
16
- });
17
- // redirect to downtime route
18
- yield (0, effects_1.put)((0, connected_react_router_1.push)({
19
- pathname: '/downtime'
20
- }));
15
+ // wait for any downtime error response
16
+ yield (0, _effects.take)(action => (0, _actions.isModelTryFetchErrorAction)(action) && action.errorData?.status === _types.HTTP_STATUS_CODE.FORBIDDEN && action.errorData.title.includes("We'll be right back!"));
17
+
18
+ // redirect to downtime route
19
+ yield (0, _effects.put)((0, _connectedReactRouter.push)({
20
+ pathname: '/downtime'
21
+ }));
21
22
  } while (runIndefinitely);
23
+ }();
22
24
  }
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ubmVjdGVkUmVhY3RSb3V0ZXIiLCJyZXF1aXJlIiwiX2VmZmVjdHMiLCJfdHlwZXMiLCJfYWN0aW9ucyIsImRvd250aW1lQXBpRXJyb3JTYWdhIiwicnVuSW5kZWZpbml0ZWx5IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwidGFrZSIsImFjdGlvbiIsImlzTW9kZWxUcnlGZXRjaEVycm9yQWN0aW9uIiwiZXJyb3JEYXRhIiwic3RhdHVzIiwiSFRUUF9TVEFUVVNfQ09ERSIsIkZPUkJJRERFTiIsInRpdGxlIiwiaW5jbHVkZXMiLCJwdXQiLCJwdXNoIiwicGF0aG5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkdXgvc2FnYXMvZG93bnRpbWVBcGlFcnJvclNhZ2EudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVzaCB9IGZyb20gJ2Nvbm5lY3RlZC1yZWFjdC1yb3V0ZXInXHJcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBwdXQsIHRha2UgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnXHJcbmltcG9ydCB7IEhUVFBfU1RBVFVTX0NPREUgfSBmcm9tICcuLi8uLi90eXBlcydcclxuaW1wb3J0IHsgaXNNb2RlbFRyeUZldGNoRXJyb3JBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGRvd250aW1lQXBpRXJyb3JTYWdhKHJ1bkluZGVmaW5pdGVseSA9IHRydWUpIHtcclxuXHRkbyB7XHJcblx0XHQvLyB3YWl0IGZvciBhbnkgZG93bnRpbWUgZXJyb3IgcmVzcG9uc2VcclxuXHRcdHlpZWxkIHRha2UoXHJcblx0XHRcdChhY3Rpb246IEFueUFjdGlvbikgPT5cclxuXHRcdFx0XHRpc01vZGVsVHJ5RmV0Y2hFcnJvckFjdGlvbihhY3Rpb24pICYmXHJcblx0XHRcdFx0YWN0aW9uLmVycm9yRGF0YT8uc3RhdHVzID09PSBIVFRQX1NUQVRVU19DT0RFLkZPUkJJRERFTiAmJlxyXG5cdFx0XHRcdGFjdGlvbi5lcnJvckRhdGEudGl0bGUuaW5jbHVkZXMoXCJXZSdsbCBiZSByaWdodCBiYWNrIVwiKVxyXG5cdFx0KVxyXG5cclxuXHRcdC8vIHJlZGlyZWN0IHRvIGRvd250aW1lIHJvdXRlXHJcblx0XHR5aWVsZCBwdXQoXHJcblx0XHRcdHB1c2goe1xyXG5cdFx0XHRcdHBhdGhuYW1lOiAnL2Rvd250aW1lJ1xyXG5cdFx0XHR9KVxyXG5cdFx0KVxyXG5cdH0gd2hpbGUgKHJ1bkluZGVmaW5pdGVseSlcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHFCQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFZSxTQUFVSSxvQkFBb0JBLENBQUE7RUFBQSxJQUFDQyxlQUFlLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLElBQUk7RUFBQSxvQkFBRTtJQUNyRSxHQUFHO01BQ0Y7TUFDQSxNQUFNLElBQUFHLGFBQUksRUFDUkMsTUFBaUIsSUFDakIsSUFBQUMsbUNBQTBCLEVBQUNELE1BQU0sQ0FBQyxJQUNsQ0EsTUFBTSxDQUFDRSxTQUFTLEVBQUVDLE1BQU0sS0FBS0MsdUJBQWdCLENBQUNDLFNBQVMsSUFDdkRMLE1BQU0sQ0FBQ0UsU0FBUyxDQUFDSSxLQUFLLENBQUNDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FDeEQsQ0FBQzs7TUFFRDtNQUNBLE1BQU0sSUFBQUMsWUFBRyxFQUNSLElBQUFDLDBCQUFJLEVBQUM7UUFDSkMsUUFBUSxFQUFFO01BQ1gsQ0FBQyxDQUNGLENBQUM7SUFDRixDQUFDLFFBQVFmLGVBQWU7RUFDekIsQ0FBQztBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -1,26 +1,32 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
3
7
  exports.default = errorSaga;
4
- const tslib_1 = require("tslib");
5
- const connected_react_router_1 = require("connected-react-router");
6
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
7
- const query_string_1 = require("query-string");
8
- const effects_1 = require("redux-saga/effects");
9
- const windowService_1 = require("../../services/windowService");
8
+ var _connectedReactRouter = require("connected-react-router");
9
+ var _lodash = _interopRequireDefault(require("lodash"));
10
+ var _queryString = require("query-string");
11
+ var _effects = require("redux-saga/effects");
12
+ var _windowService = require("../../services/windowService");
10
13
  function* errorSaga() {
11
- while (true) {
12
- // check for error messages immediately at app startup
13
- const location = windowService_1.windowService.getLocation();
14
- const parsedSearch = (0, query_string_1.parse)(location.search);
15
- // check possible error message keys
16
- const message = parsedSearch._ltierrormsg || parsedSearch.error;
17
- if (!lodash_1.default.isNil(message)) {
18
- yield (0, effects_1.put)((0, connected_react_router_1.push)({
19
- pathname: '/error',
20
- search: (0, query_string_1.stringify)({ message })
21
- }));
22
- }
23
- // check for error messages on location changes
24
- yield (0, effects_1.take)((action) => action.type === connected_react_router_1.LOCATION_CHANGE);
14
+ while (true) {
15
+ // check for error messages immediately at app startup
16
+ const location = _windowService.windowService.getLocation();
17
+ const parsedSearch = (0, _queryString.parse)(location.search);
18
+ // check possible error message keys
19
+ const message = parsedSearch._ltierrormsg || parsedSearch.error;
20
+ if (!_lodash.default.isNil(message)) {
21
+ yield (0, _effects.put)((0, _connectedReactRouter.push)({
22
+ pathname: '/error',
23
+ search: (0, _queryString.stringify)({
24
+ message
25
+ })
26
+ }));
25
27
  }
28
+ // check for error messages on location changes
29
+ yield (0, _effects.take)(action => action.type === _connectedReactRouter.LOCATION_CHANGE);
30
+ }
26
31
  }
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ubmVjdGVkUmVhY3RSb3V0ZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcXVlcnlTdHJpbmciLCJfZWZmZWN0cyIsIl93aW5kb3dTZXJ2aWNlIiwiZXJyb3JTYWdhIiwibG9jYXRpb24iLCJ3aW5kb3dTZXJ2aWNlIiwiZ2V0TG9jYXRpb24iLCJwYXJzZWRTZWFyY2giLCJwYXJzZSIsInNlYXJjaCIsIm1lc3NhZ2UiLCJfbHRpZXJyb3Jtc2ciLCJlcnJvciIsIl8iLCJpc05pbCIsInB1dCIsInB1c2giLCJwYXRobmFtZSIsInN0cmluZ2lmeSIsInRha2UiLCJhY3Rpb24iLCJ0eXBlIiwiTE9DQVRJT05fQ0hBTkdFIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2Vycm9yU2FnYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMT0NBVElPTl9DSEFOR0UsIHB1c2ggfSBmcm9tICdjb25uZWN0ZWQtcmVhY3Qtcm91dGVyJ1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCB7IHBhcnNlLCBzdHJpbmdpZnkgfSBmcm9tICdxdWVyeS1zdHJpbmcnXHJcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xyXG5pbXBvcnQgeyBwdXQsIHRha2UgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnXHJcbmltcG9ydCB7IHdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3dTZXJ2aWNlJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGVycm9yU2FnYSgpIHtcclxuXHR3aGlsZSAodHJ1ZSkge1xyXG5cdFx0Ly8gY2hlY2sgZm9yIGVycm9yIG1lc3NhZ2VzIGltbWVkaWF0ZWx5IGF0IGFwcCBzdGFydHVwXHJcblx0XHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxyXG5cdFx0Y29uc3QgcGFyc2VkU2VhcmNoID0gcGFyc2UobG9jYXRpb24uc2VhcmNoKVxyXG5cdFx0Ly8gY2hlY2sgcG9zc2libGUgZXJyb3IgbWVzc2FnZSBrZXlzXHJcblx0XHRjb25zdCBtZXNzYWdlID0gcGFyc2VkU2VhcmNoLl9sdGllcnJvcm1zZyB8fCBwYXJzZWRTZWFyY2guZXJyb3JcclxuXHRcdGlmICghXy5pc05pbChtZXNzYWdlKSkge1xyXG5cdFx0XHR5aWVsZCBwdXQoXHJcblx0XHRcdFx0cHVzaCh7XHJcblx0XHRcdFx0XHRwYXRobmFtZTogJy9lcnJvcicsXHJcblx0XHRcdFx0XHRzZWFyY2g6IHN0cmluZ2lmeSh7IG1lc3NhZ2UgfSlcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpXHJcblx0XHR9XHJcblx0XHQvLyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZXMgb24gbG9jYXRpb24gY2hhbmdlc1xyXG5cdFx0eWllbGQgdGFrZSgoYWN0aW9uOiBBbnlBY3Rpb24pID0+IGFjdGlvbi50eXBlID09PSBMT0NBVElPTl9DSEFOR0UpXHJcblx0fVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLHFCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFFZSxVQUFVTSxTQUFTQSxDQUFBLEVBQUc7RUFDcEMsT0FBTyxJQUFJLEVBQUU7SUFDWjtJQUNBLE1BQU1DLFFBQVEsR0FBR0MsNEJBQWEsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDNUMsTUFBTUMsWUFBWSxHQUFHLElBQUFDLGtCQUFLLEVBQUNKLFFBQVEsQ0FBQ0ssTUFBTSxDQUFDO0lBQzNDO0lBQ0EsTUFBTUMsT0FBTyxHQUFHSCxZQUFZLENBQUNJLFlBQVksSUFBSUosWUFBWSxDQUFDSyxLQUFLO0lBQy9ELElBQUksQ0FBQ0MsZUFBQyxDQUFDQyxLQUFLLENBQUNKLE9BQU8sQ0FBQyxFQUFFO01BQ3RCLE1BQU0sSUFBQUssWUFBRyxFQUNSLElBQUFDLDBCQUFJLEVBQUM7UUFDSkMsUUFBUSxFQUFFLFFBQVE7UUFDbEJSLE1BQU0sRUFBRSxJQUFBUyxzQkFBUyxFQUFDO1VBQUVSO1FBQVEsQ0FBQztNQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNGO0lBQ0E7SUFDQSxNQUFNLElBQUFTLGFBQUksRUFBRUMsTUFBaUIsSUFBS0EsTUFBTSxDQUFDQyxJQUFJLEtBQUtDLHFDQUFlLENBQUM7RUFDbkU7QUFDRCIsImlnbm9yZUxpc3QiOltdfQ==