studiokit-scaffolding-js 4.3.20 → 4.3.21

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 (334) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +127 -127
  3. package/lib/components/ActionList.d.ts +20 -20
  4. package/lib/components/ActionList.js +94 -94
  5. package/lib/components/AlertDialog.d.ts +18 -18
  6. package/lib/components/AlertDialog.js +21 -21
  7. package/lib/components/AlertWithIcon.d.ts +7 -7
  8. package/lib/components/AlertWithIcon.js +57 -57
  9. package/lib/components/Blots/CustomImageSpec.d.ts +14 -14
  10. package/lib/components/Blots/CustomImageSpec.js +45 -45
  11. package/lib/components/Blots/CustomVideoSpec.d.ts +16 -16
  12. package/lib/components/Blots/CustomVideoSpec.js +47 -47
  13. package/lib/components/ConnectedModal.d.ts +6 -6
  14. package/lib/components/ConnectedModal.js +11 -11
  15. package/lib/components/Dropdowns/GroupsDropdown.d.ts +18 -18
  16. package/lib/components/Dropdowns/GroupsDropdown.js +90 -90
  17. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +32 -32
  18. package/lib/components/Dropdowns/ManagedNavDropdown.js +118 -118
  19. package/lib/components/Dropdowns/UserDropdown.d.ts +6 -6
  20. package/lib/components/Dropdowns/UserDropdown.js +76 -76
  21. package/lib/components/Dropdowns/index.d.ts +3 -3
  22. package/lib/components/Dropdowns/index.js +12 -12
  23. package/lib/components/EntityOwnerList.d.ts +11 -11
  24. package/lib/components/EntityOwnerList.js +63 -63
  25. package/lib/components/ErrorBoundary.d.ts +11 -11
  26. package/lib/components/ErrorBoundary.js +74 -74
  27. package/lib/components/Forms/DateField.d.ts +13 -13
  28. package/lib/components/Forms/DateField.js +99 -99
  29. package/lib/components/Forms/TimeField.d.ts +11 -11
  30. package/lib/components/Forms/TimeField.js +112 -112
  31. package/lib/components/Forms/index.d.ts +2 -2
  32. package/lib/components/Forms/index.js +14 -14
  33. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +10 -10
  34. package/lib/components/Groups/CreateEditCopySaveButtons.js +18 -18
  35. package/lib/components/Groups/GroupCreateOrEditCommonProps.d.ts +6 -6
  36. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
  37. package/lib/components/Groups/RosterSyncInfo.d.ts +5 -5
  38. package/lib/components/Groups/RosterSyncInfo.js +54 -54
  39. package/lib/components/HOC/AccessibleAppComponent.d.ts +15 -15
  40. package/lib/components/HOC/AccessibleAppComponent.js +135 -135
  41. package/lib/components/HOC/ActivityRequiredComponent.d.ts +105 -105
  42. package/lib/components/HOC/ActivityRequiredComponent.js +101 -101
  43. package/lib/components/HOC/AsyncComponent.d.ts +37 -37
  44. package/lib/components/HOC/AsyncComponent.js +136 -136
  45. package/lib/components/HOC/AuthenticatedComponent.d.ts +10 -10
  46. package/lib/components/HOC/AuthenticatedComponent.js +104 -104
  47. package/lib/components/HOC/CollectionComponent.d.ts +61 -61
  48. package/lib/components/HOC/CollectionComponent.js +175 -175
  49. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +67 -67
  50. package/lib/components/HOC/CollectionFirstItemComponent.js +94 -94
  51. package/lib/components/HOC/CollectionItemComponent.d.ts +61 -61
  52. package/lib/components/HOC/CollectionItemComponent.js +172 -172
  53. package/lib/components/HOC/ConnectedModalComponent.d.ts +26 -26
  54. package/lib/components/HOC/ConnectedModalComponent.js +110 -110
  55. package/lib/components/HOC/DataDependentComponent.d.ts +61 -61
  56. package/lib/components/HOC/DataDependentComponent.js +90 -90
  57. package/lib/components/HOC/EntityComponent.d.ts +83 -83
  58. package/lib/components/HOC/EntityComponent.js +120 -120
  59. package/lib/components/HOC/FullscreenModalComponent.d.ts +74 -74
  60. package/lib/components/HOC/FullscreenModalComponent.js +173 -173
  61. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +29 -29
  62. package/lib/components/HOC/GroupActivityRequiredComponent.js +49 -49
  63. package/lib/components/HOC/GuidComponent.d.ts +14 -14
  64. package/lib/components/HOC/GuidComponent.js +72 -72
  65. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +172 -172
  66. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +72 -72
  67. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +69 -69
  68. package/lib/components/HOC/ModelErrorRedirectComponent.js +101 -101
  69. package/lib/components/HOC/SearchPersistorComponent.d.ts +85 -85
  70. package/lib/components/HOC/SearchPersistorComponent.js +198 -198
  71. package/lib/components/HOC/UnauthenticatedComponent.d.ts +62 -62
  72. package/lib/components/HOC/UnauthenticatedComponent.js +90 -90
  73. package/lib/components/HOC/UserComponent.d.ts +3 -3
  74. package/lib/components/HOC/UserComponent.js +12 -12
  75. package/lib/components/Icons/IconExternalUser.d.ts +3 -3
  76. package/lib/components/Icons/IconExternalUser.js +24 -24
  77. package/lib/components/Icons/IconImpersonation.d.ts +3 -3
  78. package/lib/components/Icons/IconImpersonation.js +24 -24
  79. package/lib/components/Icons/IconStopImpersonating.d.ts +3 -3
  80. package/lib/components/Icons/IconStopImpersonating.js +24 -24
  81. package/lib/components/Impersonation/Button.d.ts +7 -7
  82. package/lib/components/Impersonation/Button.js +61 -61
  83. package/lib/components/Impersonation/Link.d.ts +7 -7
  84. package/lib/components/Impersonation/Link.js +58 -58
  85. package/lib/components/Impersonation/UserDetail.css +22 -22
  86. package/lib/components/Impersonation/UserDetail.d.ts +22 -22
  87. package/lib/components/Impersonation/UserDetail.js +23 -23
  88. package/lib/components/Loading.d.ts +4 -4
  89. package/lib/components/Loading.js +24 -24
  90. package/lib/components/Lti/Confirm.d.ts +8 -8
  91. package/lib/components/Lti/Confirm.js +37 -37
  92. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +15 -15
  93. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +83 -83
  94. package/lib/components/Lti/Launch.d.ts +21 -21
  95. package/lib/components/Lti/Launch.js +52 -52
  96. package/lib/components/Lti/LaunchGroup.d.ts +9 -9
  97. package/lib/components/Lti/LaunchGroup.js +45 -45
  98. package/lib/components/NewVersionAlert.d.ts +18 -18
  99. package/lib/components/NewVersionAlert.js +97 -97
  100. package/lib/components/NotFound.d.ts +3 -3
  101. package/lib/components/NotFound.js +28 -28
  102. package/lib/components/Notifications.d.ts +39 -39
  103. package/lib/components/Notifications.js +175 -175
  104. package/lib/components/RefreshIndicator/Bordered.d.ts +7 -7
  105. package/lib/components/RefreshIndicator/Bordered.js +35 -35
  106. package/lib/components/RefreshIndicator/Inline.d.ts +4 -4
  107. package/lib/components/RefreshIndicator/Inline.js +36 -36
  108. package/lib/components/RefreshIndicator/index.d.ts +21 -21
  109. package/lib/components/RefreshIndicator/index.js +116 -116
  110. package/lib/components/SearchControls.d.ts +14 -14
  111. package/lib/components/SearchControls.js +34 -34
  112. package/lib/components/SentryRoute.d.ts +3 -3
  113. package/lib/components/SentryRoute.js +25 -25
  114. package/lib/components/Tables/RoleFilter.d.ts +14 -14
  115. package/lib/components/Tables/RoleFilter.js +53 -53
  116. package/lib/components/Tables/TextFilter.d.ts +7 -7
  117. package/lib/components/Tables/TextFilter.js +26 -26
  118. package/lib/components/UserRoles/Add.d.ts +31 -31
  119. package/lib/components/UserRoles/Add.js +165 -165
  120. package/lib/components/UserRoles/RoleCell.d.ts +21 -21
  121. package/lib/components/UserRoles/RoleCell.js +53 -53
  122. package/lib/components/UserRoles/Select.d.ts +27 -27
  123. package/lib/components/UserRoles/Select.js +44 -44
  124. package/lib/components/UserRoles/Table.d.ts +16 -16
  125. package/lib/components/UserRoles/Table.js +99 -99
  126. package/lib/components/UserRoles/index.d.ts +76 -76
  127. package/lib/components/UserRoles/index.js +361 -361
  128. package/lib/constants/baseActivity.d.ts +25 -25
  129. package/lib/constants/baseActivity.js +29 -29
  130. package/lib/constants/baseRole.d.ts +9 -9
  131. package/lib/constants/baseRole.js +13 -13
  132. package/lib/constants/configuration.d.ts +8 -8
  133. package/lib/constants/configuration.js +39 -39
  134. package/lib/constants/externalProviderType.d.ts +5 -5
  135. package/lib/constants/externalProviderType.js +9 -9
  136. package/lib/constants/index.d.ts +8 -8
  137. package/lib/constants/index.js +20 -20
  138. package/lib/constants/mockData.d.ts +82 -84
  139. package/lib/constants/mockData.js +379 -379
  140. package/lib/constants/modelStatus.d.ts +10 -10
  141. package/lib/constants/modelStatus.js +14 -14
  142. package/lib/constants/notificationType.d.ts +7 -7
  143. package/lib/constants/notificationType.js +11 -11
  144. package/lib/constants/shard.d.ts +6 -6
  145. package/lib/constants/shard.js +10 -10
  146. package/lib/constants/tier.d.ts +6 -6
  147. package/lib/constants/tier.js +10 -10
  148. package/lib/constants/userRole.d.ts +2 -2
  149. package/lib/constants/userRole.js +21 -21
  150. package/lib/css/base/_base.css +98 -98
  151. package/lib/css/base/_typography.css +130 -130
  152. package/lib/css/components/_alert.css +85 -85
  153. package/lib/css/components/_bootstrap-grid.css +28 -28
  154. package/lib/css/components/_buttons.css +325 -325
  155. package/lib/css/components/_forms.css +91 -91
  156. package/lib/css/components/_menu.css +56 -56
  157. package/lib/css/components/_modals.css +41 -41
  158. package/lib/css/components/_tables.css +426 -426
  159. package/lib/css/components/_tags.css +12 -12
  160. package/lib/css/index-with-variables.css +14 -14
  161. package/lib/css/index.css +13 -13
  162. package/lib/css/utils/_border.css +463 -463
  163. package/lib/css/utils/_color.css +271 -271
  164. package/lib/css/utils/_display.css +312 -312
  165. package/lib/css/utils/_general.css +48 -48
  166. package/lib/css/utils/_icon.css +16 -16
  167. package/lib/css/utils/_text.css +24 -24
  168. package/lib/css/utils/_width.css +60 -60
  169. package/lib/css/variables.css +70 -70
  170. package/lib/endpointMappings.d.ts +4 -4
  171. package/lib/endpointMappings.js +173 -173
  172. package/lib/hooks/useCollection.d.ts +6 -6
  173. package/lib/hooks/useCollection.js +61 -61
  174. package/lib/hooks/useCollectionConfiguration.d.ts +27 -27
  175. package/lib/hooks/useCollectionConfiguration.js +67 -67
  176. package/lib/hooks/useCollectionItem.d.ts +6 -6
  177. package/lib/hooks/useCollectionItem.js +54 -54
  178. package/lib/hooks/useGuid.d.ts +4 -4
  179. package/lib/hooks/useGuid.js +14 -14
  180. package/lib/hooks/usePrevious.d.ts +5 -5
  181. package/lib/hooks/usePrevious.js +18 -18
  182. package/lib/index.d.ts +8 -8
  183. package/lib/index.js +30 -30
  184. package/lib/redux/actionCreator.d.ts +5 -5
  185. package/lib/redux/actionCreator.js +16 -16
  186. package/lib/redux/actions.d.ts +12 -12
  187. package/lib/redux/actions.js +30 -30
  188. package/lib/redux/configureReducers.d.ts +22 -22
  189. package/lib/redux/configureReducers.js +94 -94
  190. package/lib/redux/configureStore.d.ts +14 -14
  191. package/lib/redux/configureStore.js +118 -118
  192. package/lib/redux/helpers.d.ts +2 -2
  193. package/lib/redux/helpers.js +7 -7
  194. package/lib/redux/reducers/index.d.ts +4 -4
  195. package/lib/redux/reducers/index.js +12 -12
  196. package/lib/redux/reducers/modalsReducer.d.ts +8 -8
  197. package/lib/redux/reducers/modalsReducer.js +54 -54
  198. package/lib/redux/reducers/notificationsReducer.d.ts +9 -9
  199. package/lib/redux/reducers/notificationsReducer.js +27 -27
  200. package/lib/redux/reducers/searchReducer.d.ts +17 -17
  201. package/lib/redux/reducers/searchReducer.js +26 -26
  202. package/lib/redux/sagas/caliperSaga.d.ts +2 -2
  203. package/lib/redux/sagas/caliperSaga.js +296 -296
  204. package/lib/redux/sagas/clockOffsetSaga.d.ts +10 -10
  205. package/lib/redux/sagas/clockOffsetSaga.js +81 -81
  206. package/lib/redux/sagas/configurationSaga.d.ts +1 -1
  207. package/lib/redux/sagas/configurationSaga.js +48 -48
  208. package/lib/redux/sagas/errorSaga.d.ts +2 -2
  209. package/lib/redux/sagas/errorSaga.js +66 -66
  210. package/lib/redux/sagas/identityProviderSaga.d.ts +2 -2
  211. package/lib/redux/sagas/identityProviderSaga.js +91 -91
  212. package/lib/redux/sagas/initialDataLoadSaga.d.ts +1 -1
  213. package/lib/redux/sagas/initialDataLoadSaga.js +33 -33
  214. package/lib/redux/sagas/postLoginDataSaga.d.ts +9 -9
  215. package/lib/redux/sagas/postLoginDataSaga.js +87 -87
  216. package/lib/redux/sagas/postLoginRedirectSaga.d.ts +6 -6
  217. package/lib/redux/sagas/postLoginRedirectSaga.js +96 -96
  218. package/lib/redux/sagas/rootSaga.d.ts +5 -5
  219. package/lib/redux/sagas/rootSaga.js +144 -144
  220. package/lib/redux/sagas/sentrySaga.d.ts +1 -1
  221. package/lib/redux/sagas/sentrySaga.js +103 -103
  222. package/lib/services/codeProviderService.d.ts +3 -3
  223. package/lib/services/codeProviderService.js +36 -36
  224. package/lib/services/documentService.d.ts +10 -10
  225. package/lib/services/documentService.js +17 -17
  226. package/lib/services/persistenceService.d.ts +13 -13
  227. package/lib/services/persistenceService.js +45 -45
  228. package/lib/services/ticketProviderService.d.ts +3 -3
  229. package/lib/services/ticketProviderService.js +40 -40
  230. package/lib/services/windowService.d.ts +9 -9
  231. package/lib/services/windowService.js +15 -15
  232. package/lib/setupTests.d.ts +1 -1
  233. package/lib/setupTests.js +25 -25
  234. package/lib/startup.d.ts +29 -29
  235. package/lib/startup.js +128 -128
  236. package/lib/types/AppConfiguration.d.ts +32 -32
  237. package/lib/types/AppConfiguration.js +2 -2
  238. package/lib/types/Artifact.d.ts +14 -14
  239. package/lib/types/Artifact.js +9 -9
  240. package/lib/types/BaseReduxState.d.ts +57 -57
  241. package/lib/types/BaseReduxState.js +2 -2
  242. package/lib/types/Client.d.ts +6 -6
  243. package/lib/types/Client.js +2 -2
  244. package/lib/types/Collection.d.ts +175 -175
  245. package/lib/types/Collection.js +2 -2
  246. package/lib/types/Configuration.d.ts +12 -12
  247. package/lib/types/Configuration.js +2 -2
  248. package/lib/types/DeepLinkingResponseRequest.d.ts +4 -4
  249. package/lib/types/DeepLinkingResponseRequest.js +2 -2
  250. package/lib/types/DeletableModel.d.ts +4 -4
  251. package/lib/types/DeletableModel.js +2 -2
  252. package/lib/types/External.d.ts +31 -31
  253. package/lib/types/External.js +2 -2
  254. package/lib/types/Group.d.ts +19 -19
  255. package/lib/types/Group.js +2 -2
  256. package/lib/types/IdentityProvider.d.ts +11 -11
  257. package/lib/types/IdentityProvider.js +2 -2
  258. package/lib/types/LtiLaunch.d.ts +20 -20
  259. package/lib/types/LtiLaunch.js +2 -2
  260. package/lib/types/NameOnlyEntity.d.ts +3 -3
  261. package/lib/types/NameOnlyEntity.js +2 -2
  262. package/lib/types/Notification.d.ts +15 -15
  263. package/lib/types/Notification.js +2 -2
  264. package/lib/types/OptionalRecord.d.ts +4 -4
  265. package/lib/types/OptionalRecord.js +2 -2
  266. package/lib/types/OwnerSchedule.d.ts +9 -9
  267. package/lib/types/OwnerSchedule.js +2 -2
  268. package/lib/types/PropertyOfType.d.ts +12 -12
  269. package/lib/types/PropertyOfType.js +2 -2
  270. package/lib/types/RoleDescription.d.ts +4 -4
  271. package/lib/types/RoleDescription.js +2 -2
  272. package/lib/types/Search.d.ts +11 -11
  273. package/lib/types/Search.js +2 -2
  274. package/lib/types/SimpleLocation.d.ts +46 -46
  275. package/lib/types/SimpleLocation.js +2 -2
  276. package/lib/types/UniTime.d.ts +17 -17
  277. package/lib/types/UniTime.js +2 -2
  278. package/lib/types/User.d.ts +68 -68
  279. package/lib/types/User.js +2 -2
  280. package/lib/types/UserRole.d.ts +19 -19
  281. package/lib/types/UserRole.js +2 -2
  282. package/lib/types/index.d.ts +21 -21
  283. package/lib/types/index.js +33 -33
  284. package/lib/utils/baseActivity.d.ts +63 -63
  285. package/lib/utils/baseActivity.js +155 -155
  286. package/lib/utils/baseRole.d.ts +2 -2
  287. package/lib/utils/baseRole.js +38 -38
  288. package/lib/utils/collection.d.ts +43 -43
  289. package/lib/utils/collection.js +337 -337
  290. package/lib/utils/date.d.ts +162 -162
  291. package/lib/utils/date.js +401 -401
  292. package/lib/utils/domainIdentifier.d.ts +2 -2
  293. package/lib/utils/domainIdentifier.js +12 -12
  294. package/lib/utils/entityUserRole.d.ts +3 -3
  295. package/lib/utils/entityUserRole.js +7 -7
  296. package/lib/utils/externalGroup.d.ts +4 -4
  297. package/lib/utils/externalGroup.js +32 -32
  298. package/lib/utils/externalProviders.d.ts +2 -2
  299. package/lib/utils/externalProviders.js +11 -11
  300. package/lib/utils/externalTerms.d.ts +2 -2
  301. package/lib/utils/externalTerms.js +10 -10
  302. package/lib/utils/group.d.ts +15 -15
  303. package/lib/utils/group.js +15 -15
  304. package/lib/utils/groupDates.d.ts +9 -9
  305. package/lib/utils/groupDates.js +52 -52
  306. package/lib/utils/groupRoles.d.ts +8 -8
  307. package/lib/utils/groupRoles.js +42 -42
  308. package/lib/utils/logger.d.ts +10 -10
  309. package/lib/utils/logger.js +34 -34
  310. package/lib/utils/lti.d.ts +3 -3
  311. package/lib/utils/lti.js +9 -9
  312. package/lib/utils/model.d.ts +15 -15
  313. package/lib/utils/model.js +58 -58
  314. package/lib/utils/number.d.ts +13 -13
  315. package/lib/utils/number.js +32 -32
  316. package/lib/utils/promise.d.ts +5 -5
  317. package/lib/utils/promise.js +17 -17
  318. package/lib/utils/route.d.ts +5 -5
  319. package/lib/utils/route.js +69 -69
  320. package/lib/utils/shard.d.ts +3 -3
  321. package/lib/utils/shard.js +45 -45
  322. package/lib/utils/sort.d.ts +11 -11
  323. package/lib/utils/sort.js +69 -69
  324. package/lib/utils/string.d.ts +2 -2
  325. package/lib/utils/string.js +16 -16
  326. package/lib/utils/timezone.d.ts +2 -2
  327. package/lib/utils/timezone.js +32 -32
  328. package/lib/utils/url.d.ts +23 -23
  329. package/lib/utils/url.js +163 -163
  330. package/lib/utils/user.d.ts +8 -8
  331. package/lib/utils/user.js +73 -73
  332. package/lib/utils/userRole.d.ts +21 -21
  333. package/lib/utils/userRole.js +48 -48
  334. package/package.json +192 -192
@@ -1,296 +1,296 @@
1
- "use strict";
2
- var __generator = (this && this.__generator) || function (thisArg, body) {
3
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5
- function verb(n) { return function (v) { return step([n, v]); }; }
6
- function step(op) {
7
- if (f) throw new TypeError("Generator is already executing.");
8
- while (_) try {
9
- 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;
10
- if (y = 0, t) op = [op[0] & 2, t.value];
11
- switch (op[0]) {
12
- case 0: case 1: t = op; break;
13
- case 4: _.label++; return { value: op[1], done: false };
14
- case 5: _.label++; y = op[1]; op = [0]; continue;
15
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
16
- default:
17
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
18
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
19
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
20
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
21
- if (t[2]) _.ops.pop();
22
- _.trys.pop(); continue;
23
- }
24
- op = body.call(thisArg, _);
25
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
26
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
27
- }
28
- };
29
- var __importDefault = (this && this.__importDefault) || function (mod) {
30
- return (mod && mod.__esModule) ? mod : { "default": mod };
31
- };
32
- Object.defineProperty(exports, "__esModule", { value: true });
33
- var effects_1 = require("redux-saga/effects");
34
- var studiokit_auth_js_1 = require("studiokit-auth-js");
35
- var studiokit_caliper_js_1 = require("studiokit-caliper-js");
36
- var studiokit_net_js_1 = require("studiokit-net-js");
37
- var configuration_1 = require("../../constants/configuration");
38
- var persistenceService_1 = __importDefault(require("../../services/persistenceService"));
39
- var date_1 = require("../../utils/date");
40
- var actionCreator_1 = require("../actionCreator");
41
- //#region Local Variables
42
- var service;
43
- var caliperToken;
44
- //#endregion Local Variables
45
- //#region CaliperService Helpers
46
- function initializeCaliperService(shardConfig) {
47
- var appConfig = configuration_1.getAppConfig();
48
- if (!shardConfig.caliperEventStoreHostname) {
49
- return;
50
- }
51
- var sensorOptions = Object.assign({}, appConfig.CALIPER_EVENT_STORE_OPTIONS, {
52
- hostname: shardConfig.caliperEventStoreHostname
53
- });
54
- var options = {
55
- sensorId: appConfig.CALIPER_SENSOR_ID,
56
- sensorOptions: sensorOptions,
57
- appId: appConfig.CALIPER_SENSOR_APP_ID,
58
- appName: appConfig.CALIPER_SENSOR_APP_NAME,
59
- getToken: function () {
60
- return new Promise(function (resolve, reject) {
61
- if (caliperToken) {
62
- resolve(caliperToken);
63
- }
64
- else {
65
- reject(new Error('`caliperToken` is undefined'));
66
- }
67
- });
68
- },
69
- // disable auto send, the saga will handle this
70
- autoSend: false
71
- };
72
- var service = new studiokit_caliper_js_1.BrowserCaliperService(options);
73
- return service;
74
- }
75
- function setCaliperPerson(userData) {
76
- var _a, _b;
77
- var appConfig = configuration_1.getAppConfig();
78
- var shardConfig = configuration_1.getShardConfig();
79
- var personNamespace = shardConfig.caliperPersonNamespace;
80
- var id = "" + personNamespace + userData.puid;
81
- var extensions = {};
82
- extensions[appConfig.CALIPER_EXTENSIONS_NAMESPACE + ".userId"] = userData.id;
83
- service.setPerson(id, (_a = userData.firstName) !== null && _a !== void 0 ? _a : undefined, (_b = userData.lastName) !== null && _b !== void 0 ? _b : undefined, extensions);
84
- return Promise.resolve();
85
- }
86
- function startCaliperSession() {
87
- var appConfig = configuration_1.getAppConfig();
88
- var extensions = {};
89
- extensions[appConfig.CALIPER_EXTENSIONS_NAMESPACE + ".userAgent"] = navigator.userAgent;
90
- service.startSession(extensions);
91
- return Promise.resolve();
92
- }
93
- function endCaliperSession() {
94
- service.endSession();
95
- return Promise.resolve();
96
- }
97
- function setPersonAndStartCaliperSession(userData) {
98
- void setCaliperPerson(userData);
99
- void startCaliperSession();
100
- }
101
- function isTokenExpired(caliperToken) {
102
- return new Date(caliperToken.expires) <= date_1.getServerNowUtc();
103
- }
104
- //#endregion CaliperService Helpers
105
- /**
106
- * Load the persisted `caliperToken`, if any. This token is persisted by the CaliperService,
107
- * but we load it in order to check expiry.
108
- */
109
- function loadToken() {
110
- var caliperToken;
111
- return __generator(this, function (_a) {
112
- switch (_a.label) {
113
- case 0: return [4 /*yield*/, effects_1.call(persistenceService_1.default.getPersistedCaliperToken)];
114
- case 1:
115
- caliperToken = _a.sent();
116
- if (caliperToken)
117
- return [2 /*return*/, caliperToken];
118
- return [2 /*return*/, undefined];
119
- }
120
- });
121
- }
122
- /**
123
- * Load a new `caliperToken` from the API. Returns `undefined` if the data request fails.
124
- */
125
- function getToken() {
126
- var _a, receivedResult, failedResult, caliperToken_1;
127
- return __generator(this, function (_b) {
128
- switch (_b.label) {
129
- case 0:
130
- actionCreator_1.dispatchAction(studiokit_net_js_1.NET_ACTION.DATA_REQUESTED, { modelName: 'caliperToken', noStore: true });
131
- return [4 /*yield*/, effects_1.race({
132
- receivedResult: effects_1.take(function (action) {
133
- return action.type === studiokit_net_js_1.NET_ACTION.TRANSIENT_FETCH_RESULT_RECEIVED && action.modelName === 'caliperToken';
134
- }),
135
- failedResult: effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.TRANSIENT_FETCH_FAILED && action.modelName === 'caliperToken'; })
136
- })];
137
- case 1:
138
- _a = _b.sent(), receivedResult = _a.receivedResult, failedResult = _a.failedResult;
139
- if (receivedResult && receivedResult.data) {
140
- caliperToken_1 = {
141
- accessToken: receivedResult.data.access_token,
142
- expires: receivedResult.data['.expires']
143
- };
144
- return [2 /*return*/, caliperToken_1];
145
- }
146
- return [2 /*return*/, undefined];
147
- }
148
- });
149
- }
150
- /**
151
- * Calls `getToken`, but keeps retrying until a token is successfully loaded, using a back-off delay strategy.
152
- */
153
- function getTokenWithRetry() {
154
- var caliperToken, tryCount;
155
- return __generator(this, function (_a) {
156
- switch (_a.label) {
157
- case 0: return [4 /*yield*/, effects_1.call(getToken)
158
- // handle failing to load token
159
- ];
160
- case 1:
161
- caliperToken = _a.sent();
162
- tryCount = 1;
163
- _a.label = 2;
164
- case 2:
165
- if (!!caliperToken) return [3 /*break*/, 5];
166
- // back-off delay
167
- return [4 /*yield*/, effects_1.delay(Math.min(1000 * 60, 2 ^ (tryCount * 100)))]; // 100, 200, 400...
168
- case 3:
169
- // back-off delay
170
- _a.sent(); // 100, 200, 400...
171
- return [4 /*yield*/, effects_1.call(getToken)];
172
- case 4:
173
- caliperToken = _a.sent();
174
- tryCount++;
175
- return [3 /*break*/, 2];
176
- case 5: return [2 /*return*/, caliperToken];
177
- }
178
- });
179
- }
180
- /**
181
- * Saga decorator for the `CaliperService.send` method
182
- */
183
- function send() {
184
- var _a;
185
- return __generator(this, function (_b) {
186
- switch (_b.label) {
187
- case 0:
188
- _b.trys.push([0, 2, , 3]);
189
- return [4 /*yield*/, effects_1.call(service.send)];
190
- case 1:
191
- _b.sent();
192
- return [3 /*break*/, 3];
193
- case 2:
194
- _a = _b.sent();
195
- return [3 /*break*/, 3];
196
- case 3: return [2 /*return*/];
197
- }
198
- });
199
- }
200
- /**
201
- * Saga decorator for the `CaliperService.send` method,
202
- * which will refresh the `caliperToken` if needed before calling `send`
203
- */
204
- function sendWithTokenRefreshIfNeeded() {
205
- return __generator(this, function (_a) {
206
- switch (_a.label) {
207
- case 0:
208
- if (!(!caliperToken || isTokenExpired(caliperToken))) return [3 /*break*/, 2];
209
- return [4 /*yield*/, effects_1.call(getTokenWithRetry)];
210
- case 1:
211
- caliperToken = _a.sent();
212
- _a.label = 2;
213
- case 2:
214
- // send
215
- return [4 /*yield*/, effects_1.call(send)];
216
- case 3:
217
- // send
218
- _a.sent();
219
- return [2 /*return*/];
220
- }
221
- });
222
- }
223
- /**
224
- * Saga fork implementing the "auto send" functionality from `CaliperService.
225
- * Calls `send` every 10 seconds.
226
- */
227
- function autoSend() {
228
- return __generator(this, function (_a) {
229
- switch (_a.label) {
230
- case 0:
231
- if (!true) return [3 /*break*/, 3];
232
- // try to send every 10 seconds
233
- return [4 /*yield*/, effects_1.delay(10 * 1000)];
234
- case 1:
235
- // try to send every 10 seconds
236
- _a.sent();
237
- return [4 /*yield*/, effects_1.call(sendWithTokenRefreshIfNeeded)];
238
- case 2:
239
- _a.sent();
240
- return [3 /*break*/, 0];
241
- case 3: return [2 /*return*/];
242
- }
243
- });
244
- }
245
- function caliperSaga() {
246
- var configurationResult, configuration, userInfo, autoSendTask;
247
- return __generator(this, function (_a) {
248
- switch (_a.label) {
249
- case 0: return [4 /*yield*/, effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.FETCH_RESULT_RECEIVED && action.modelName === 'configuration'; })];
250
- case 1:
251
- configurationResult = _a.sent();
252
- configuration = configurationResult.data;
253
- // do not proceed if caliper is not enabled or is missing hostname
254
- if (!configuration.caliperEnabled || !configuration.caliperEventStoreHostname) {
255
- return [2 /*return*/];
256
- }
257
- return [4 /*yield*/, effects_1.call(loadToken)
258
- // initialize caliper service
259
- ];
260
- case 2:
261
- // load persisted token, if any
262
- caliperToken = _a.sent();
263
- return [4 /*yield*/, effects_1.call(initializeCaliperService, configuration)];
264
- case 3:
265
- // initialize caliper service
266
- service = _a.sent();
267
- _a.label = 4;
268
- case 4:
269
- if (!true) return [3 /*break*/, 10];
270
- return [4 /*yield*/, effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.FETCH_RESULT_RECEIVED && action.modelName === 'user.userInfo'; })];
271
- case 5:
272
- userInfo = _a.sent();
273
- return [4 /*yield*/, effects_1.fork(autoSend)];
274
- case 6:
275
- autoSendTask = _a.sent();
276
- setPersonAndStartCaliperSession(userInfo.data);
277
- // user logs out => stop auto-send and end session
278
- return [4 /*yield*/, effects_1.take(studiokit_auth_js_1.AUTH_ACTION.LOG_OUT_REQUESTED)];
279
- case 7:
280
- // user logs out => stop auto-send and end session
281
- _a.sent();
282
- return [4 /*yield*/, effects_1.cancel(autoSendTask)];
283
- case 8:
284
- _a.sent();
285
- void endCaliperSession();
286
- // attempt to send the session end event once, w/ no token refresh since logged out
287
- return [4 /*yield*/, effects_1.call(send)];
288
- case 9:
289
- // attempt to send the session end event once, w/ no token refresh since logged out
290
- _a.sent();
291
- return [3 /*break*/, 4];
292
- case 10: return [2 /*return*/];
293
- }
294
- });
295
- }
296
- exports.default = caliperSaga;
1
+ "use strict";
2
+ var __generator = (this && this.__generator) || function (thisArg, body) {
3
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
5
+ function verb(n) { return function (v) { return step([n, v]); }; }
6
+ function step(op) {
7
+ if (f) throw new TypeError("Generator is already executing.");
8
+ while (_) try {
9
+ 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;
10
+ if (y = 0, t) op = [op[0] & 2, t.value];
11
+ switch (op[0]) {
12
+ case 0: case 1: t = op; break;
13
+ case 4: _.label++; return { value: op[1], done: false };
14
+ case 5: _.label++; y = op[1]; op = [0]; continue;
15
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
16
+ default:
17
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
18
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
19
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
20
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
21
+ if (t[2]) _.ops.pop();
22
+ _.trys.pop(); continue;
23
+ }
24
+ op = body.call(thisArg, _);
25
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
26
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
27
+ }
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ var effects_1 = require("redux-saga/effects");
34
+ var studiokit_auth_js_1 = require("studiokit-auth-js");
35
+ var studiokit_caliper_js_1 = require("studiokit-caliper-js");
36
+ var studiokit_net_js_1 = require("studiokit-net-js");
37
+ var configuration_1 = require("../../constants/configuration");
38
+ var persistenceService_1 = __importDefault(require("../../services/persistenceService"));
39
+ var date_1 = require("../../utils/date");
40
+ var actionCreator_1 = require("../actionCreator");
41
+ //#region Local Variables
42
+ var service;
43
+ var caliperToken;
44
+ //#endregion Local Variables
45
+ //#region CaliperService Helpers
46
+ function initializeCaliperService(shardConfig) {
47
+ var appConfig = configuration_1.getAppConfig();
48
+ if (!shardConfig.caliperEventStoreHostname) {
49
+ return;
50
+ }
51
+ var sensorOptions = Object.assign({}, appConfig.CALIPER_EVENT_STORE_OPTIONS, {
52
+ hostname: shardConfig.caliperEventStoreHostname
53
+ });
54
+ var options = {
55
+ sensorId: appConfig.CALIPER_SENSOR_ID,
56
+ sensorOptions: sensorOptions,
57
+ appId: appConfig.CALIPER_SENSOR_APP_ID,
58
+ appName: appConfig.CALIPER_SENSOR_APP_NAME,
59
+ getToken: function () {
60
+ return new Promise(function (resolve, reject) {
61
+ if (caliperToken) {
62
+ resolve(caliperToken);
63
+ }
64
+ else {
65
+ reject(new Error('`caliperToken` is undefined'));
66
+ }
67
+ });
68
+ },
69
+ // disable auto send, the saga will handle this
70
+ autoSend: false
71
+ };
72
+ var service = new studiokit_caliper_js_1.BrowserCaliperService(options);
73
+ return service;
74
+ }
75
+ function setCaliperPerson(userData) {
76
+ var _a, _b;
77
+ var appConfig = configuration_1.getAppConfig();
78
+ var shardConfig = configuration_1.getShardConfig();
79
+ var personNamespace = shardConfig.caliperPersonNamespace;
80
+ var id = "" + personNamespace + userData.puid;
81
+ var extensions = {};
82
+ extensions[appConfig.CALIPER_EXTENSIONS_NAMESPACE + ".userId"] = userData.id;
83
+ service.setPerson(id, (_a = userData.firstName) !== null && _a !== void 0 ? _a : undefined, (_b = userData.lastName) !== null && _b !== void 0 ? _b : undefined, extensions);
84
+ return Promise.resolve();
85
+ }
86
+ function startCaliperSession() {
87
+ var appConfig = configuration_1.getAppConfig();
88
+ var extensions = {};
89
+ extensions[appConfig.CALIPER_EXTENSIONS_NAMESPACE + ".userAgent"] = navigator.userAgent;
90
+ service.startSession(extensions);
91
+ return Promise.resolve();
92
+ }
93
+ function endCaliperSession() {
94
+ service.endSession();
95
+ return Promise.resolve();
96
+ }
97
+ function setPersonAndStartCaliperSession(userData) {
98
+ void setCaliperPerson(userData);
99
+ void startCaliperSession();
100
+ }
101
+ function isTokenExpired(caliperToken) {
102
+ return new Date(caliperToken.expires) <= date_1.getServerNowUtc();
103
+ }
104
+ //#endregion CaliperService Helpers
105
+ /**
106
+ * Load the persisted `caliperToken`, if any. This token is persisted by the CaliperService,
107
+ * but we load it in order to check expiry.
108
+ */
109
+ function loadToken() {
110
+ var caliperToken;
111
+ return __generator(this, function (_a) {
112
+ switch (_a.label) {
113
+ case 0: return [4 /*yield*/, effects_1.call(persistenceService_1.default.getPersistedCaliperToken)];
114
+ case 1:
115
+ caliperToken = _a.sent();
116
+ if (caliperToken)
117
+ return [2 /*return*/, caliperToken];
118
+ return [2 /*return*/, undefined];
119
+ }
120
+ });
121
+ }
122
+ /**
123
+ * Load a new `caliperToken` from the API. Returns `undefined` if the data request fails.
124
+ */
125
+ function getToken() {
126
+ var _a, receivedResult, failedResult, caliperToken_1;
127
+ return __generator(this, function (_b) {
128
+ switch (_b.label) {
129
+ case 0:
130
+ actionCreator_1.dispatchAction(studiokit_net_js_1.NET_ACTION.DATA_REQUESTED, { modelName: 'caliperToken', noStore: true });
131
+ return [4 /*yield*/, effects_1.race({
132
+ receivedResult: effects_1.take(function (action) {
133
+ return action.type === studiokit_net_js_1.NET_ACTION.TRANSIENT_FETCH_RESULT_RECEIVED && action.modelName === 'caliperToken';
134
+ }),
135
+ failedResult: effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.TRANSIENT_FETCH_FAILED && action.modelName === 'caliperToken'; })
136
+ })];
137
+ case 1:
138
+ _a = _b.sent(), receivedResult = _a.receivedResult, failedResult = _a.failedResult;
139
+ if (receivedResult && receivedResult.data) {
140
+ caliperToken_1 = {
141
+ accessToken: receivedResult.data.access_token,
142
+ expires: receivedResult.data['.expires']
143
+ };
144
+ return [2 /*return*/, caliperToken_1];
145
+ }
146
+ return [2 /*return*/, undefined];
147
+ }
148
+ });
149
+ }
150
+ /**
151
+ * Calls `getToken`, but keeps retrying until a token is successfully loaded, using a back-off delay strategy.
152
+ */
153
+ function getTokenWithRetry() {
154
+ var caliperToken, tryCount;
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0: return [4 /*yield*/, effects_1.call(getToken)
158
+ // handle failing to load token
159
+ ];
160
+ case 1:
161
+ caliperToken = _a.sent();
162
+ tryCount = 1;
163
+ _a.label = 2;
164
+ case 2:
165
+ if (!!caliperToken) return [3 /*break*/, 5];
166
+ // back-off delay
167
+ return [4 /*yield*/, effects_1.delay(Math.min(1000 * 60, 2 ^ (tryCount * 100)))]; // 100, 200, 400...
168
+ case 3:
169
+ // back-off delay
170
+ _a.sent(); // 100, 200, 400...
171
+ return [4 /*yield*/, effects_1.call(getToken)];
172
+ case 4:
173
+ caliperToken = _a.sent();
174
+ tryCount++;
175
+ return [3 /*break*/, 2];
176
+ case 5: return [2 /*return*/, caliperToken];
177
+ }
178
+ });
179
+ }
180
+ /**
181
+ * Saga decorator for the `CaliperService.send` method
182
+ */
183
+ function send() {
184
+ var _a;
185
+ return __generator(this, function (_b) {
186
+ switch (_b.label) {
187
+ case 0:
188
+ _b.trys.push([0, 2, , 3]);
189
+ return [4 /*yield*/, effects_1.call(service.send)];
190
+ case 1:
191
+ _b.sent();
192
+ return [3 /*break*/, 3];
193
+ case 2:
194
+ _a = _b.sent();
195
+ return [3 /*break*/, 3];
196
+ case 3: return [2 /*return*/];
197
+ }
198
+ });
199
+ }
200
+ /**
201
+ * Saga decorator for the `CaliperService.send` method,
202
+ * which will refresh the `caliperToken` if needed before calling `send`
203
+ */
204
+ function sendWithTokenRefreshIfNeeded() {
205
+ return __generator(this, function (_a) {
206
+ switch (_a.label) {
207
+ case 0:
208
+ if (!(!caliperToken || isTokenExpired(caliperToken))) return [3 /*break*/, 2];
209
+ return [4 /*yield*/, effects_1.call(getTokenWithRetry)];
210
+ case 1:
211
+ caliperToken = _a.sent();
212
+ _a.label = 2;
213
+ case 2:
214
+ // send
215
+ return [4 /*yield*/, effects_1.call(send)];
216
+ case 3:
217
+ // send
218
+ _a.sent();
219
+ return [2 /*return*/];
220
+ }
221
+ });
222
+ }
223
+ /**
224
+ * Saga fork implementing the "auto send" functionality from `CaliperService.
225
+ * Calls `send` every 10 seconds.
226
+ */
227
+ function autoSend() {
228
+ return __generator(this, function (_a) {
229
+ switch (_a.label) {
230
+ case 0:
231
+ if (!true) return [3 /*break*/, 3];
232
+ // try to send every 10 seconds
233
+ return [4 /*yield*/, effects_1.delay(10 * 1000)];
234
+ case 1:
235
+ // try to send every 10 seconds
236
+ _a.sent();
237
+ return [4 /*yield*/, effects_1.call(sendWithTokenRefreshIfNeeded)];
238
+ case 2:
239
+ _a.sent();
240
+ return [3 /*break*/, 0];
241
+ case 3: return [2 /*return*/];
242
+ }
243
+ });
244
+ }
245
+ function caliperSaga() {
246
+ var configurationResult, configuration, userInfo, autoSendTask;
247
+ return __generator(this, function (_a) {
248
+ switch (_a.label) {
249
+ case 0: return [4 /*yield*/, effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.FETCH_RESULT_RECEIVED && action.modelName === 'configuration'; })];
250
+ case 1:
251
+ configurationResult = _a.sent();
252
+ configuration = configurationResult.data;
253
+ // do not proceed if caliper is not enabled or is missing hostname
254
+ if (!configuration.caliperEnabled || !configuration.caliperEventStoreHostname) {
255
+ return [2 /*return*/];
256
+ }
257
+ return [4 /*yield*/, effects_1.call(loadToken)
258
+ // initialize caliper service
259
+ ];
260
+ case 2:
261
+ // load persisted token, if any
262
+ caliperToken = _a.sent();
263
+ return [4 /*yield*/, effects_1.call(initializeCaliperService, configuration)];
264
+ case 3:
265
+ // initialize caliper service
266
+ service = _a.sent();
267
+ _a.label = 4;
268
+ case 4:
269
+ if (!true) return [3 /*break*/, 10];
270
+ return [4 /*yield*/, effects_1.take(function (action) { return action.type === studiokit_net_js_1.NET_ACTION.FETCH_RESULT_RECEIVED && action.modelName === 'user.userInfo'; })];
271
+ case 5:
272
+ userInfo = _a.sent();
273
+ return [4 /*yield*/, effects_1.fork(autoSend)];
274
+ case 6:
275
+ autoSendTask = _a.sent();
276
+ setPersonAndStartCaliperSession(userInfo.data);
277
+ // user logs out => stop auto-send and end session
278
+ return [4 /*yield*/, effects_1.take(studiokit_auth_js_1.AUTH_ACTION.LOG_OUT_REQUESTED)];
279
+ case 7:
280
+ // user logs out => stop auto-send and end session
281
+ _a.sent();
282
+ return [4 /*yield*/, effects_1.cancel(autoSendTask)];
283
+ case 8:
284
+ _a.sent();
285
+ void endCaliperSession();
286
+ // attempt to send the session end event once, w/ no token refresh since logged out
287
+ return [4 /*yield*/, effects_1.call(send)];
288
+ case 9:
289
+ // attempt to send the session end event once, w/ no token refresh since logged out
290
+ _a.sent();
291
+ return [3 /*break*/, 4];
292
+ case 10: return [2 /*return*/];
293
+ }
294
+ });
295
+ }
296
+ exports.default = caliperSaga;
@@ -1,10 +1,10 @@
1
- /**
2
- Periodically, we fetch the current UTC server time. To insure against browser clock time being set
3
- incorrectly, we track the difference between server time and browser time by storing that
4
- difference in a module-level variable in the date utilities module. That module provides a method
5
- to get the current UTC time, according to the API server.
6
-
7
- If the calculated difference is less than one second, we can assume that's a result of network
8
- latency and will not store that offset.
9
- */
10
- export default function clockOffsetSaga(): Generator<import("redux-saga/effects").TakeEffect | import("redux-saga/effects").CallEffect<void>, void, unknown>;
1
+ /**
2
+ Periodically, we fetch the current UTC server time. To insure against browser clock time being set
3
+ incorrectly, we track the difference between server time and browser time by storing that
4
+ difference in a module-level variable in the date utilities module. That module provides a method
5
+ to get the current UTC time, according to the API server.
6
+
7
+ If the calculated difference is less than one second, we can assume that's a result of network
8
+ latency and will not store that offset.
9
+ */
10
+ export default function clockOffsetSaga(): Generator<import("redux-saga/effects").TakeEffect | import("redux-saga/effects").CallEffect<void>, void, unknown>;