studiokit-scaffolding-js 7.0.12-next.1.3 → 7.0.12-next.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/lib/components/ActionList.js +164 -37
  2. package/lib/components/AlertDialog.js +128 -12
  3. package/lib/components/AlertWithIcon.js +88 -29
  4. package/lib/components/ConnectedModal.js +35 -12
  5. package/lib/components/Dropdowns/GroupsDropdown.js +63 -45
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +92 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +105 -24
  8. package/lib/components/Dropdowns/index.js +4 -10
  9. package/lib/components/EntityOwnerList.js +47 -21
  10. package/lib/components/Error.js +101 -12
  11. package/lib/components/ErrorBoundary.js +127 -38
  12. package/lib/components/ErrorMessage.js +39 -12
  13. package/lib/components/Forms/DateField.js +56 -45
  14. package/lib/components/Forms/TimeField.js +76 -45
  15. package/lib/components/Forms/index.js +3 -5
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +109 -14
  17. package/lib/components/Groups/ExternalGroups/Attach.js +206 -151
  18. package/lib/components/Groups/ExternalGroups/Table.js +176 -48
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
  20. package/lib/components/Groups/RosterSyncInfo.js +142 -23
  21. package/lib/components/HOC/AccessibleAppComponent.js +88 -72
  22. package/lib/components/HOC/ActivityRequiredComponent.js +68 -33
  23. package/lib/components/HOC/AsyncComponent.js +49 -41
  24. package/lib/components/HOC/AuthenticatedComponent.js +55 -44
  25. package/lib/components/HOC/CollectionComponent.js +154 -104
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +45 -40
  27. package/lib/components/HOC/CollectionItemComponent.js +152 -100
  28. package/lib/components/HOC/ConnectedModalComponent.js +87 -69
  29. package/lib/components/HOC/DataDependentComponent.js +26 -27
  30. package/lib/components/HOC/EntityComponent.js +57 -53
  31. package/lib/components/HOC/FullscreenModalComponent.js +139 -108
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +27 -20
  33. package/lib/components/HOC/GuidComponent.js +20 -20
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +32 -29
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +37 -39
  36. package/lib/components/HOC/SearchPersistorComponent.js +237 -173
  37. package/lib/components/HOC/UnauthenticatedComponent.js +32 -30
  38. package/lib/components/HOC/UserComponent.js +6 -8
  39. package/lib/components/Icons/IconAlphaList.js +28 -8
  40. package/lib/components/Icons/IconExternalUser.js +28 -8
  41. package/lib/components/Icons/IconImpersonation.js +28 -8
  42. package/lib/components/Icons/IconStopImpersonating.js +28 -8
  43. package/lib/components/Icons/IconTable.js +29 -9
  44. package/lib/components/Icons/IconTableDeleteCol.js +28 -8
  45. package/lib/components/Icons/IconTableDeleteRow.js +28 -8
  46. package/lib/components/Icons/IconTableInsertCol.js +28 -8
  47. package/lib/components/Icons/IconTableInsertRow.js +28 -8
  48. package/lib/components/Impersonation/Button.js +71 -16
  49. package/lib/components/Impersonation/Link.js +72 -16
  50. package/lib/components/Impersonation/UserDetail.js +60 -11
  51. package/lib/components/Loading.js +23 -8
  52. package/lib/components/LockDownBrowser/Check.js +188 -51
  53. package/lib/components/LockDownBrowser/ExitButton.js +22 -13
  54. package/lib/components/LockDownBrowser/Launch.js +64 -64
  55. package/lib/components/Lti/Confirm.js +147 -14
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +165 -36
  57. package/lib/components/Lti/Launch.js +99 -25
  58. package/lib/components/Lti/LaunchGroup.js +81 -16
  59. package/lib/components/ManageTable.js +304 -90
  60. package/lib/components/ManageTableNoDataComponent.js +38 -7
  61. package/lib/components/NewVersionAlert.js +76 -49
  62. package/lib/components/NotFound.js +81 -11
  63. package/lib/components/Notifications.js +179 -129
  64. package/lib/components/PaginationNextButton.js +28 -9
  65. package/lib/components/PaginationPreviousButton.js +28 -9
  66. package/lib/components/Quill/CustomToolbar.js +427 -222
  67. package/lib/components/Quill/Formats/Image.js +67 -67
  68. package/lib/components/Quill/Formats/List.js +38 -47
  69. package/lib/components/Quill/Formats/Video.js +23 -26
  70. package/lib/components/Quill/ImageDropModule.js +136 -114
  71. package/lib/components/Quill/ImageWarning.js +41 -12
  72. package/lib/components/Quill/ImageWithAltTextModal.js +420 -89
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +32 -31
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +22 -23
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +89 -97
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +47 -50
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +48 -51
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +219 -224
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +75 -86
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +70 -73
  81. package/lib/components/Quill/TableModule/constants.js +40 -42
  82. package/lib/components/Quill/TableModule/index.js +357 -305
  83. package/lib/components/Quill/TableModule/utils.js +39 -48
  84. package/lib/components/Quill/accessibilityFix.js +219 -223
  85. package/lib/components/Quill/index.js +30 -33
  86. package/lib/components/RefreshIndicator/Bordered.js +44 -10
  87. package/lib/components/RefreshIndicator/Inline.js +43 -12
  88. package/lib/components/RefreshIndicator/index.js +257 -62
  89. package/lib/components/SearchControls.js +211 -14
  90. package/lib/components/SentryRoute.js +5 -7
  91. package/lib/components/Tables/RoleFilter.js +66 -38
  92. package/lib/components/Tables/TextFilter.js +58 -18
  93. package/lib/components/UserRoles/Add.js +193 -99
  94. package/lib/components/UserRoles/Context.js +3 -6
  95. package/lib/components/UserRoles/RoleCell.js +176 -75
  96. package/lib/components/UserRoles/Select.js +151 -20
  97. package/lib/components/UserRoles/Table.js +215 -82
  98. package/lib/components/UserRoles/index.js +526 -386
  99. package/lib/config/eslint/index.js +26 -29
  100. package/lib/config/eslint/lib/order.js +21 -28
  101. package/lib/config/eslint/lib/prettier.js +15 -19
  102. package/lib/config/eslint/lib/typescript.js +87 -113
  103. package/lib/config/eslint/react.js +18 -15
  104. package/lib/constants/baseActivity.js +26 -28
  105. package/lib/constants/baseRole.js +10 -12
  106. package/lib/constants/configuration.js +43 -55
  107. package/lib/constants/externalProviderType.js +6 -8
  108. package/lib/constants/fetchErrorData.js +10 -12
  109. package/lib/constants/index.js +13 -15
  110. package/lib/constants/lockDownBrowser.js +23 -25
  111. package/lib/constants/mockData.js +370 -300
  112. package/lib/constants/modelStatus.js +11 -13
  113. package/lib/constants/notificationType.js +8 -10
  114. package/lib/constants/operatingSystem.js +8 -10
  115. package/lib/constants/shard.js +7 -9
  116. package/lib/constants/table.js +18 -22
  117. package/lib/constants/tier.js +8 -10
  118. package/lib/constants/userRole.js +11 -8
  119. package/lib/endpointMappings.js +191 -182
  120. package/lib/hooks/useCollection.js +79 -65
  121. package/lib/hooks/useCollectionConfiguration.js +220 -80
  122. package/lib/hooks/useCollectionItem.js +151 -57
  123. package/lib/hooks/useGuid.js +16 -9
  124. package/lib/hooks/usePrevious.js +14 -13
  125. package/lib/index.js +11 -26
  126. package/lib/redux/actionCreator.js +44 -35
  127. package/lib/redux/actions/AuthAction.js +45 -32
  128. package/lib/redux/actions/ModalAction.js +6 -8
  129. package/lib/redux/actions/ModelAction.js +95 -43
  130. package/lib/redux/actions/NotificationAction.js +6 -8
  131. package/lib/redux/actions/SearchAction.js +5 -7
  132. package/lib/redux/actions/index.js +6 -8
  133. package/lib/redux/configureReducers.js +48 -46
  134. package/lib/redux/configureStore.js +77 -91
  135. package/lib/redux/helpers.js +2 -5
  136. package/lib/redux/reducers/authReducer.js +44 -43
  137. package/lib/redux/reducers/index.js +7 -14
  138. package/lib/redux/reducers/modalsReducer.js +43 -31
  139. package/lib/redux/reducers/modelsReducer.js +131 -137
  140. package/lib/redux/reducers/notificationsReducer.js +20 -20
  141. package/lib/redux/reducers/searchReducer.js +13 -13
  142. package/lib/redux/sagas/appInsightsSaga.js +19 -21
  143. package/lib/redux/sagas/authSaga.js +248 -234
  144. package/lib/redux/sagas/caliperSaga.js +142 -131
  145. package/lib/redux/sagas/clockOffsetSaga.js +29 -32
  146. package/lib/redux/sagas/configurationSaga.js +8 -10
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +16 -19
  148. package/lib/redux/sagas/errorSaga.js +23 -24
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +24 -27
  150. package/lib/redux/sagas/identityProviderSaga.js +19 -21
  151. package/lib/redux/sagas/initialDataLoadSaga.js +34 -31
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +25 -22
  153. package/lib/redux/sagas/modelFetchSaga.js +302 -286
  154. package/lib/redux/sagas/noStoreSaga.js +60 -61
  155. package/lib/redux/sagas/postLoginDataSaga.js +37 -32
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +22 -27
  157. package/lib/redux/sagas/rootSaga.js +77 -60
  158. package/lib/redux/sagas/sentrySaga.js +25 -28
  159. package/lib/redux/sagas/userIdSaga.js +13 -15
  160. package/lib/services/codeProviderService.js +21 -21
  161. package/lib/services/dateService.js +6 -8
  162. package/lib/services/documentService.js +10 -11
  163. package/lib/services/fetchService.js +103 -95
  164. package/lib/services/persistenceService.js +27 -30
  165. package/lib/services/ticketProviderService.js +25 -25
  166. package/lib/services/tokenPersistenceService.js +8 -10
  167. package/lib/services/windowService.js +14 -16
  168. package/lib/startup.js +110 -101
  169. package/lib/types/AppConfiguration.js +2 -2
  170. package/lib/types/Artifact.js +7 -9
  171. package/lib/types/BaseReduxState.js +2 -2
  172. package/lib/types/Client.js +2 -2
  173. package/lib/types/Collection.js +2 -2
  174. package/lib/types/Configuration.js +2 -2
  175. package/lib/types/DeepLinkingResponseRequest.js +2 -2
  176. package/lib/types/DeletableModel.js +2 -2
  177. package/lib/types/Event.js +2 -2
  178. package/lib/types/ExternalGroup.js +2 -2
  179. package/lib/types/ExternalProvider.js +2 -2
  180. package/lib/types/ExternalTerm.js +2 -2
  181. package/lib/types/Group.js +2 -2
  182. package/lib/types/IdentityProvider.js +2 -2
  183. package/lib/types/LtiLaunch.js +2 -2
  184. package/lib/types/NameOnlyEntity.js +2 -2
  185. package/lib/types/Notification.js +2 -2
  186. package/lib/types/OptionalRecord.js +2 -2
  187. package/lib/types/OwnerSchedule.js +2 -2
  188. package/lib/types/PropertyOfType.js +2 -2
  189. package/lib/types/Quill.js +2 -2
  190. package/lib/types/RoleDescription.js +2 -2
  191. package/lib/types/Search.js +2 -2
  192. package/lib/types/SimpleLocation.js +2 -2
  193. package/lib/types/UniTime.js +2 -2
  194. package/lib/types/User.js +2 -2
  195. package/lib/types/UserRole.js +2 -2
  196. package/lib/types/auth/AuthState.js +2 -2
  197. package/lib/types/auth/CasV1LoginRequestBody.js +2 -2
  198. package/lib/types/auth/ClientCredentials.js +2 -2
  199. package/lib/types/auth/CodeProviderService.js +2 -2
  200. package/lib/types/auth/LocalLoginRequestBody.js +2 -2
  201. package/lib/types/auth/TicketProviderService.js +2 -2
  202. package/lib/types/auth/TokenPersistenceService.js +2 -2
  203. package/lib/types/auth/index.js +8 -10
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +29 -31
  206. package/lib/types/net/EndpointConfig.js +2 -2
  207. package/lib/types/net/EndpointMapping.js +2 -2
  208. package/lib/types/net/EndpointMappings.js +2 -2
  209. package/lib/types/net/ErrorHandler.js +2 -2
  210. package/lib/types/net/FetchConfig.js +2 -2
  211. package/lib/types/net/FetchErrorData.js +6 -8
  212. package/lib/types/net/FetchResult.js +2 -2
  213. package/lib/types/net/HTTPMethod.js +2 -2
  214. package/lib/types/net/HTTPStatusCode.js +12 -14
  215. package/lib/types/net/Metadata.js +2 -2
  216. package/lib/types/net/Model.js +2 -2
  217. package/lib/types/net/ModelCollection.js +2 -2
  218. package/lib/types/net/ModelsState.js +2 -2
  219. package/lib/types/net/OAuthToken.js +2 -2
  220. package/lib/types/net/OAuthTokenOrNull.js +2 -2
  221. package/lib/types/net/TokenAccessFunction.js +2 -2
  222. package/lib/types/net/index.js +17 -19
  223. package/lib/utils/baseActivity.js +83 -85
  224. package/lib/utils/baseRole.js +32 -36
  225. package/lib/utils/collection.js +403 -297
  226. package/lib/utils/cookies.js +19 -23
  227. package/lib/utils/date.js +188 -205
  228. package/lib/utils/dom.js +130 -131
  229. package/lib/utils/domainIdentifier.js +4 -8
  230. package/lib/utils/entityUserRole.js +2 -5
  231. package/lib/utils/error.js +14 -19
  232. package/lib/utils/events.js +32 -31
  233. package/lib/utils/externalGroup.js +20 -25
  234. package/lib/utils/externalProviders.js +4 -7
  235. package/lib/utils/externalTerms.js +6 -6
  236. package/lib/utils/fetch.js +168 -176
  237. package/lib/utils/group.js +14 -11
  238. package/lib/utils/groupDates.js +38 -46
  239. package/lib/utils/groupRoles.js +23 -32
  240. package/lib/utils/lockDownBrowser.js +12 -15
  241. package/lib/utils/logger.js +23 -28
  242. package/lib/utils/lti.js +4 -7
  243. package/lib/utils/model.js +28 -43
  244. package/lib/utils/number.js +9 -13
  245. package/lib/utils/promise.js +23 -26
  246. package/lib/utils/quill.js +55 -60
  247. package/lib/utils/route.js +52 -60
  248. package/lib/utils/search.js +72 -87
  249. package/lib/utils/shard.js +33 -42
  250. package/lib/utils/sort.js +47 -50
  251. package/lib/utils/string.js +10 -12
  252. package/lib/utils/table.js +29 -33
  253. package/lib/utils/timezone.js +7 -12
  254. package/lib/utils/url.js +130 -144
  255. package/lib/utils/user.js +54 -64
  256. package/lib/utils/userAgent.js +7 -14
  257. package/lib/utils/userRole.js +36 -39
  258. package/package.json +17 -3
@@ -1,39 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.filterSyncedGroupUsers = exports.filterManualGroupUsers = exports.groupsAsAnythingButLearner = exports.groupsAsGrader = exports.groupsAsOwner = exports.groupsAsLearner = void 0;
4
- const tslib_1 = require("tslib");
5
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
- const baseRole_1 = require("../constants/baseRole");
7
- const model_1 = require("./model");
8
- const userRole_1 = require("./userRole");
9
- const groupsAsLearner = (groups) => {
10
- return filterGroupsByRole(groups, baseRole_1.BASE_ROLE.GROUP_LEARNER);
11
- };
12
- exports.groupsAsLearner = groupsAsLearner;
13
- const groupsAsOwner = (groups) => {
14
- return filterGroupsByRole(groups, baseRole_1.BASE_ROLE.GROUP_OWNER);
15
- };
16
- exports.groupsAsOwner = groupsAsOwner;
17
- const groupsAsGrader = (groups) => {
18
- return filterGroupsByRole(groups, baseRole_1.BASE_ROLE.GROUP_GRADER);
19
- };
20
- exports.groupsAsGrader = groupsAsGrader;
21
- const groupsAsAnythingButLearner = (groups) => {
22
- return filterGroupsByRoleOtherThanRole(groups, baseRole_1.BASE_ROLE.GROUP_LEARNER);
23
- };
24
- exports.groupsAsAnythingButLearner = groupsAsAnythingButLearner;
1
+ import _ from 'lodash';
2
+ import { BASE_ROLE } from '../constants/baseRole';
3
+ import { getModelArray } from './model';
4
+ import { isExternal } from './userRole';
5
+ export const groupsAsLearner = groups => {
6
+ return filterGroupsByRole(groups, BASE_ROLE.GROUP_LEARNER);
7
+ };
8
+ export const groupsAsOwner = groups => {
9
+ return filterGroupsByRole(groups, BASE_ROLE.GROUP_OWNER);
10
+ };
11
+ export const groupsAsGrader = groups => {
12
+ return filterGroupsByRole(groups, BASE_ROLE.GROUP_GRADER);
13
+ };
14
+ export const groupsAsAnythingButLearner = groups => {
15
+ return filterGroupsByRoleOtherThanRole(groups, BASE_ROLE.GROUP_LEARNER);
16
+ };
25
17
  const groupHasRole = (value, key) => key !== '_metadata' && !!value && !!value.id && !!value.roles;
26
18
  const filterGroupsByRole = (groups, role) => {
27
- return lodash_1.default.values(lodash_1.default.omitBy((0, model_1.getModelArray)(groups), (value, key) => !groupHasRole(value, key) || !lodash_1.default.includes(value.roles, role)));
19
+ return _.values(_.omitBy(getModelArray(groups), (value, key) => !groupHasRole(value, key) || !_.includes(value.roles, role)));
28
20
  };
29
21
  const filterGroupsByRoleOtherThanRole = (groups, role) => {
30
- return lodash_1.default.values(lodash_1.default.omitBy((0, model_1.getModelArray)(groups), (value, key) => !groupHasRole(value, key) || lodash_1.default.every(value.roles, r => r === role)));
22
+ return _.values(_.omitBy(getModelArray(groups), (value, key) => !groupHasRole(value, key) || _.every(value.roles, r => r === role)));
31
23
  };
32
- const filterManualGroupUsers = (groupUsers) => {
33
- return groupUsers.filter(groupUser => !groupUser.roles.some(r => (0, userRole_1.isExternal)(r)));
24
+ export const filterManualGroupUsers = groupUsers => {
25
+ return groupUsers.filter(groupUser => !groupUser.roles.some(r => isExternal(r)));
34
26
  };
35
- exports.filterManualGroupUsers = filterManualGroupUsers;
36
- const filterSyncedGroupUsers = (groupUsers) => {
37
- return groupUsers.filter(groupUser => groupUser.roles.some(r => (0, userRole_1.isExternal)(r)));
27
+ export const filterSyncedGroupUsers = groupUsers => {
28
+ return groupUsers.filter(groupUser => groupUser.roles.some(r => isExternal(r)));
38
29
  };
39
- exports.filterSyncedGroupUsers = filterSyncedGroupUsers;
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfIiwiQkFTRV9ST0xFIiwiZ2V0TW9kZWxBcnJheSIsImlzRXh0ZXJuYWwiLCJncm91cHNBc0xlYXJuZXIiLCJncm91cHMiLCJmaWx0ZXJHcm91cHNCeVJvbGUiLCJHUk9VUF9MRUFSTkVSIiwiZ3JvdXBzQXNPd25lciIsIkdST1VQX09XTkVSIiwiZ3JvdXBzQXNHcmFkZXIiLCJHUk9VUF9HUkFERVIiLCJncm91cHNBc0FueXRoaW5nQnV0TGVhcm5lciIsImZpbHRlckdyb3Vwc0J5Um9sZU90aGVyVGhhblJvbGUiLCJncm91cEhhc1JvbGUiLCJ2YWx1ZSIsImtleSIsImlkIiwicm9sZXMiLCJyb2xlIiwidmFsdWVzIiwib21pdEJ5IiwiaW5jbHVkZXMiLCJldmVyeSIsInIiLCJmaWx0ZXJNYW51YWxHcm91cFVzZXJzIiwiZ3JvdXBVc2VycyIsImZpbHRlciIsImdyb3VwVXNlciIsInNvbWUiLCJmaWx0ZXJTeW5jZWRHcm91cFVzZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2dyb3VwUm9sZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgQkFTRV9ST0xFIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Jhc2VSb2xlJ1xuaW1wb3J0IHsgR3JvdXAsIE1ldGFkYXRhLCBNb2RlbENvbGxlY3Rpb24sIFVzZXJXaXRoUm9sZXMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldE1vZGVsQXJyYXkgfSBmcm9tICcuL21vZGVsJ1xuaW1wb3J0IHsgaXNFeHRlcm5hbCB9IGZyb20gJy4vdXNlclJvbGUnXG5cbmV4cG9ydCBjb25zdCBncm91cHNBc0xlYXJuZXIgPSAoZ3JvdXBzOiBNb2RlbENvbGxlY3Rpb248R3JvdXA+KSA9PiB7XG5cdHJldHVybiBmaWx0ZXJHcm91cHNCeVJvbGUoZ3JvdXBzLCBCQVNFX1JPTEUuR1JPVVBfTEVBUk5FUilcbn1cblxuZXhwb3J0IGNvbnN0IGdyb3Vwc0FzT3duZXIgPSAoZ3JvdXBzOiBNb2RlbENvbGxlY3Rpb248R3JvdXA+KSA9PiB7XG5cdHJldHVybiBmaWx0ZXJHcm91cHNCeVJvbGUoZ3JvdXBzLCBCQVNFX1JPTEUuR1JPVVBfT1dORVIpXG59XG5cbmV4cG9ydCBjb25zdCBncm91cHNBc0dyYWRlciA9IChncm91cHM6IE1vZGVsQ29sbGVjdGlvbjxHcm91cD4pID0+IHtcblx0cmV0dXJuIGZpbHRlckdyb3Vwc0J5Um9sZShncm91cHMsIEJBU0VfUk9MRS5HUk9VUF9HUkFERVIpXG59XG5cbmV4cG9ydCBjb25zdCBncm91cHNBc0FueXRoaW5nQnV0TGVhcm5lciA9IChncm91cHM6IE1vZGVsQ29sbGVjdGlvbjxHcm91cD4pID0+IHtcblx0cmV0dXJuIGZpbHRlckdyb3Vwc0J5Um9sZU90aGVyVGhhblJvbGUoZ3JvdXBzLCBCQVNFX1JPTEUuR1JPVVBfTEVBUk5FUilcbn1cblxuY29uc3QgZ3JvdXBIYXNSb2xlID0gKHZhbHVlOiBHcm91cCB8IE1ldGFkYXRhIHwgbnVsbCB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpID0+XG5cdGtleSAhPT0gJ19tZXRhZGF0YScgJiYgISF2YWx1ZSAmJiAhISh2YWx1ZSBhcyBHcm91cCkuaWQgJiYgISEodmFsdWUgYXMgR3JvdXApLnJvbGVzXG5cbmNvbnN0IGZpbHRlckdyb3Vwc0J5Um9sZSA9IChncm91cHM6IE1vZGVsQ29sbGVjdGlvbjxHcm91cD4sIHJvbGU6IHN0cmluZykgPT4ge1xuXHRyZXR1cm4gXy52YWx1ZXMoXG5cdFx0Xy5vbWl0QnkoZ2V0TW9kZWxBcnJheShncm91cHMpLCAodmFsdWUsIGtleSkgPT4gIWdyb3VwSGFzUm9sZSh2YWx1ZSwga2V5KSB8fCAhXy5pbmNsdWRlcyh2YWx1ZS5yb2xlcywgcm9sZSkpXG5cdClcbn1cblxuY29uc3QgZmlsdGVyR3JvdXBzQnlSb2xlT3RoZXJUaGFuUm9sZSA9IChncm91cHM6IE1vZGVsQ29sbGVjdGlvbjxHcm91cD4sIHJvbGU6IHN0cmluZykgPT4ge1xuXHRyZXR1cm4gXy52YWx1ZXMoXG5cdFx0Xy5vbWl0QnkoXG5cdFx0XHRnZXRNb2RlbEFycmF5KGdyb3VwcyksXG5cdFx0XHQodmFsdWUsIGtleSkgPT4gIWdyb3VwSGFzUm9sZSh2YWx1ZSwga2V5KSB8fCBfLmV2ZXJ5KHZhbHVlLnJvbGVzLCByID0+IHIgPT09IHJvbGUpXG5cdFx0KVxuXHQpXG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJNYW51YWxHcm91cFVzZXJzID0gKGdyb3VwVXNlcnM6IFVzZXJXaXRoUm9sZXNbXSkgPT4ge1xuXHRyZXR1cm4gZ3JvdXBVc2Vycy5maWx0ZXIoZ3JvdXBVc2VyID0+ICFncm91cFVzZXIucm9sZXMuc29tZShyID0+IGlzRXh0ZXJuYWwocikpKVxufVxuXG5leHBvcnQgY29uc3QgZmlsdGVyU3luY2VkR3JvdXBVc2VycyA9IChncm91cFVzZXJzOiBVc2VyV2l0aFJvbGVzW10pID0+IHtcblx0cmV0dXJuIGdyb3VwVXNlcnMuZmlsdGVyKGdyb3VwVXNlciA9PiBncm91cFVzZXIucm9sZXMuc29tZShyID0+IGlzRXh0ZXJuYWwocikpKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxDQUFDLE1BQU0sUUFBUTtBQUN0QixTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBRWpELFNBQVNDLGFBQWEsUUFBUSxTQUFTO0FBQ3ZDLFNBQVNDLFVBQVUsUUFBUSxZQUFZO0FBRXZDLE9BQU8sTUFBTUMsZUFBZSxHQUFJQyxNQUE4QixJQUFLO0VBQ2xFLE9BQU9DLGtCQUFrQixDQUFDRCxNQUFNLEVBQUVKLFNBQVMsQ0FBQ00sYUFBYSxDQUFDO0FBQzNELENBQUM7QUFFRCxPQUFPLE1BQU1DLGFBQWEsR0FBSUgsTUFBOEIsSUFBSztFQUNoRSxPQUFPQyxrQkFBa0IsQ0FBQ0QsTUFBTSxFQUFFSixTQUFTLENBQUNRLFdBQVcsQ0FBQztBQUN6RCxDQUFDO0FBRUQsT0FBTyxNQUFNQyxjQUFjLEdBQUlMLE1BQThCLElBQUs7RUFDakUsT0FBT0Msa0JBQWtCLENBQUNELE1BQU0sRUFBRUosU0FBUyxDQUFDVSxZQUFZLENBQUM7QUFDMUQsQ0FBQztBQUVELE9BQU8sTUFBTUMsMEJBQTBCLEdBQUlQLE1BQThCLElBQUs7RUFDN0UsT0FBT1EsK0JBQStCLENBQUNSLE1BQU0sRUFBRUosU0FBUyxDQUFDTSxhQUFhLENBQUM7QUFDeEUsQ0FBQztBQUVELE1BQU1PLFlBQVksR0FBR0EsQ0FBQ0MsS0FBMEMsRUFBRUMsR0FBVyxLQUM1RUEsR0FBRyxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUNELEtBQUssSUFBSSxDQUFDLENBQUVBLEtBQUssQ0FBV0UsRUFBRSxJQUFJLENBQUMsQ0FBRUYsS0FBSyxDQUFXRyxLQUFLO0FBRXBGLE1BQU1aLGtCQUFrQixHQUFHQSxDQUFDRCxNQUE4QixFQUFFYyxJQUFZLEtBQUs7RUFDNUUsT0FBT25CLENBQUMsQ0FBQ29CLE1BQU0sQ0FDZHBCLENBQUMsQ0FBQ3FCLE1BQU0sQ0FBQ25CLGFBQWEsQ0FBQ0csTUFBTSxDQUFDLEVBQUUsQ0FBQ1UsS0FBSyxFQUFFQyxHQUFHLEtBQUssQ0FBQ0YsWUFBWSxDQUFDQyxLQUFLLEVBQUVDLEdBQUcsQ0FBQyxJQUFJLENBQUNoQixDQUFDLENBQUNzQixRQUFRLENBQUNQLEtBQUssQ0FBQ0csS0FBSyxFQUFFQyxJQUFJLENBQUMsQ0FDNUcsQ0FBQztBQUNGLENBQUM7QUFFRCxNQUFNTiwrQkFBK0IsR0FBR0EsQ0FBQ1IsTUFBOEIsRUFBRWMsSUFBWSxLQUFLO0VBQ3pGLE9BQU9uQixDQUFDLENBQUNvQixNQUFNLENBQ2RwQixDQUFDLENBQUNxQixNQUFNLENBQ1BuQixhQUFhLENBQUNHLE1BQU0sQ0FBQyxFQUNyQixDQUFDVSxLQUFLLEVBQUVDLEdBQUcsS0FBSyxDQUFDRixZQUFZLENBQUNDLEtBQUssRUFBRUMsR0FBRyxDQUFDLElBQUloQixDQUFDLENBQUN1QixLQUFLLENBQUNSLEtBQUssQ0FBQ0csS0FBSyxFQUFFTSxDQUFDLElBQUlBLENBQUMsS0FBS0wsSUFBSSxDQUNsRixDQUNELENBQUM7QUFDRixDQUFDO0FBRUQsT0FBTyxNQUFNTSxzQkFBc0IsR0FBSUMsVUFBMkIsSUFBSztFQUN0RSxPQUFPQSxVQUFVLENBQUNDLE1BQU0sQ0FBQ0MsU0FBUyxJQUFJLENBQUNBLFNBQVMsQ0FBQ1YsS0FBSyxDQUFDVyxJQUFJLENBQUNMLENBQUMsSUFBSXJCLFVBQVUsQ0FBQ3FCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELE9BQU8sTUFBTU0sc0JBQXNCLEdBQUlKLFVBQTJCLElBQUs7RUFDdEUsT0FBT0EsVUFBVSxDQUFDQyxNQUFNLENBQUNDLFNBQVMsSUFBSUEsU0FBUyxDQUFDVixLQUFLLENBQUNXLElBQUksQ0FBQ0wsQ0FBQyxJQUFJckIsVUFBVSxDQUFDcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLockDownBrowserInfo = void 0;
4
- const lockDownBrowser_1 = require("../constants/lockDownBrowser");
5
- const cookies_1 = require("./cookies");
6
- const getLockDownBrowserInfo = () => {
7
- const cookies = (0, cookies_1.getCookies)();
8
- return {
9
- isClientLockDownBrowser: cookies[lockDownBrowser_1.LOCKDOWN_BROWSER_KEY.CLIENT_IS_LOCK_DOWN_BROWSER] === lockDownBrowser_1.LOCKDOWN_BROWSER_TRUE,
10
- buildId: cookies[lockDownBrowser_1.LOCKDOWN_BROWSER_KEY.BUILD_ID],
11
- buildDateWindows: cookies[lockDownBrowser_1.LOCKDOWN_BROWSER_KEY.BUILD_DATE_WINDOWS],
12
- buildDateMac: cookies[lockDownBrowser_1.LOCKDOWN_BROWSER_KEY.BUILD_DATE_MAC],
13
- buildDateIpad: cookies[lockDownBrowser_1.LOCKDOWN_BROWSER_KEY.BUILD_DATE_IPAD]
14
- };
1
+ import { LOCKDOWN_BROWSER_KEY, LOCKDOWN_BROWSER_TRUE } from '../constants/lockDownBrowser';
2
+ import { getCookies } from './cookies';
3
+ export const getLockDownBrowserInfo = () => {
4
+ const cookies = getCookies();
5
+ return {
6
+ isClientLockDownBrowser: cookies[LOCKDOWN_BROWSER_KEY.CLIENT_IS_LOCK_DOWN_BROWSER] === LOCKDOWN_BROWSER_TRUE,
7
+ buildId: cookies[LOCKDOWN_BROWSER_KEY.BUILD_ID],
8
+ buildDateWindows: cookies[LOCKDOWN_BROWSER_KEY.BUILD_DATE_WINDOWS],
9
+ buildDateMac: cookies[LOCKDOWN_BROWSER_KEY.BUILD_DATE_MAC],
10
+ buildDateIpad: cookies[LOCKDOWN_BROWSER_KEY.BUILD_DATE_IPAD]
11
+ };
15
12
  };
16
- exports.getLockDownBrowserInfo = getLockDownBrowserInfo;
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMT0NLRE9XTl9CUk9XU0VSX0tFWSIsIkxPQ0tET1dOX0JST1dTRVJfVFJVRSIsImdldENvb2tpZXMiLCJnZXRMb2NrRG93bkJyb3dzZXJJbmZvIiwiY29va2llcyIsImlzQ2xpZW50TG9ja0Rvd25Ccm93c2VyIiwiQ0xJRU5UX0lTX0xPQ0tfRE9XTl9CUk9XU0VSIiwiYnVpbGRJZCIsIkJVSUxEX0lEIiwiYnVpbGREYXRlV2luZG93cyIsIkJVSUxEX0RBVEVfV0lORE9XUyIsImJ1aWxkRGF0ZU1hYyIsIkJVSUxEX0RBVEVfTUFDIiwiYnVpbGREYXRlSXBhZCIsIkJVSUxEX0RBVEVfSVBBRCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9sb2NrRG93bkJyb3dzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DS0RPV05fQlJPV1NFUl9LRVksIExPQ0tET1dOX0JST1dTRVJfVFJVRSB9IGZyb20gJy4uL2NvbnN0YW50cy9sb2NrRG93bkJyb3dzZXInXG5pbXBvcnQgeyBnZXRDb29raWVzIH0gZnJvbSAnLi9jb29raWVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2tEb3duQnJvd3NlckluZm8ge1xuXHRpc0NsaWVudExvY2tEb3duQnJvd3NlcjogYm9vbGVhblxuXHRidWlsZElkPzogc3RyaW5nXG5cdGJ1aWxkRGF0ZVdpbmRvd3M/OiBzdHJpbmdcblx0YnVpbGREYXRlTWFjPzogc3RyaW5nXG5cdGJ1aWxkRGF0ZUlwYWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGdldExvY2tEb3duQnJvd3NlckluZm8gPSAoKTogTG9ja0Rvd25Ccm93c2VySW5mbyA9PiB7XG5cdGNvbnN0IGNvb2tpZXMgPSBnZXRDb29raWVzKClcblx0cmV0dXJuIHtcblx0XHRpc0NsaWVudExvY2tEb3duQnJvd3NlcjogY29va2llc1tMT0NLRE9XTl9CUk9XU0VSX0tFWS5DTElFTlRfSVNfTE9DS19ET1dOX0JST1dTRVJdID09PSBMT0NLRE9XTl9CUk9XU0VSX1RSVUUsXG5cdFx0YnVpbGRJZDogY29va2llc1tMT0NLRE9XTl9CUk9XU0VSX0tFWS5CVUlMRF9JRF0sXG5cdFx0YnVpbGREYXRlV2luZG93czogY29va2llc1tMT0NLRE9XTl9CUk9XU0VSX0tFWS5CVUlMRF9EQVRFX1dJTkRPV1NdLFxuXHRcdGJ1aWxkRGF0ZU1hYzogY29va2llc1tMT0NLRE9XTl9CUk9XU0VSX0tFWS5CVUlMRF9EQVRFX01BQ10sXG5cdFx0YnVpbGREYXRlSXBhZDogY29va2llc1tMT0NLRE9XTl9CUk9XU0VSX0tFWS5CVUlMRF9EQVRFX0lQQURdXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQW9CLEVBQUVDLHFCQUFxQixRQUFRLDhCQUE4QjtBQUMxRixTQUFTQyxVQUFVLFFBQVEsV0FBVztBQVV0QyxPQUFPLE1BQU1DLHNCQUFzQixHQUFHQSxDQUFBLEtBQTJCO0VBQ2hFLE1BQU1DLE9BQU8sR0FBR0YsVUFBVSxDQUFDLENBQUM7RUFDNUIsT0FBTztJQUNORyx1QkFBdUIsRUFBRUQsT0FBTyxDQUFDSixvQkFBb0IsQ0FBQ00sMkJBQTJCLENBQUMsS0FBS0wscUJBQXFCO0lBQzVHTSxPQUFPLEVBQUVILE9BQU8sQ0FBQ0osb0JBQW9CLENBQUNRLFFBQVEsQ0FBQztJQUMvQ0MsZ0JBQWdCLEVBQUVMLE9BQU8sQ0FBQ0osb0JBQW9CLENBQUNVLGtCQUFrQixDQUFDO0lBQ2xFQyxZQUFZLEVBQUVQLE9BQU8sQ0FBQ0osb0JBQW9CLENBQUNZLGNBQWMsQ0FBQztJQUMxREMsYUFBYSxFQUFFVCxPQUFPLENBQUNKLG9CQUFvQixDQUFDYyxlQUFlO0VBQzVELENBQUM7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,35 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummyLogger = void 0;
4
- exports.createLogger = createLogger;
5
- exports.setLogger = setLogger;
6
- exports.getLogger = getLogger;
7
- const configuration_1 = require("../constants/configuration");
1
+ import { getAppConfig } from '../constants/configuration';
8
2
  let logger;
9
3
  const falseLog = () => {
10
- return;
4
+ return;
11
5
  };
12
- exports.dummyLogger = {
13
- debug: falseLog,
14
- info: falseLog,
15
- warn: falseLog,
16
- error: falseLog
6
+ export const dummyLogger = {
7
+ debug: falseLog,
8
+ info: falseLog,
9
+ warn: falseLog,
10
+ error: falseLog
17
11
  };
18
- function createLogger() {
19
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
20
- if ((0, configuration_1.getAppConfig)().NODE_ENV === 'production' || !window.console || !console) {
21
- return exports.dummyLogger;
22
- }
23
- return {
24
- debug: console.debug,
25
- info: console.info,
26
- warn: console.warn,
27
- error: console.error
28
- };
12
+ export function createLogger() {
13
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
14
+ if (getAppConfig().NODE_ENV === 'production' || !window.console || !console) {
15
+ return dummyLogger;
16
+ }
17
+ return {
18
+ debug: console.debug,
19
+ info: console.info,
20
+ warn: console.warn,
21
+ error: console.error
22
+ };
29
23
  }
30
- function setLogger(value) {
31
- logger = value;
24
+ export function setLogger(value) {
25
+ logger = value;
32
26
  }
33
- function getLogger() {
34
- return logger;
27
+ export function getLogger() {
28
+ return logger;
35
29
  }
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBcHBDb25maWciLCJsb2dnZXIiLCJmYWxzZUxvZyIsImR1bW15TG9nZ2VyIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwiY3JlYXRlTG9nZ2VyIiwiTk9ERV9FTlYiLCJ3aW5kb3ciLCJjb25zb2xlIiwic2V0TG9nZ2VyIiwidmFsdWUiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbG9nZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWd1cmF0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG5cdGRlYnVnOiAobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB2b2lkXG5cdGluZm86IChtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+IHZvaWRcblx0d2FybjogKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4gdm9pZFxuXHRlcnJvcjogKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkgPT4gdm9pZFxufVxuXG5sZXQgbG9nZ2VyOiBMb2dnZXJcblxuY29uc3QgZmFsc2VMb2cgPSAoKSA9PiB7XG5cdHJldHVyblxufVxuXG5leHBvcnQgY29uc3QgZHVtbXlMb2dnZXI6IExvZ2dlciA9IHtcblx0ZGVidWc6IGZhbHNlTG9nLFxuXHRpbmZvOiBmYWxzZUxvZyxcblx0d2FybjogZmFsc2VMb2csXG5cdGVycm9yOiBmYWxzZUxvZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKCk6IExvZ2dlciB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG5cdGlmIChnZXRBcHBDb25maWcoKS5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nIHx8ICF3aW5kb3cuY29uc29sZSB8fCAhY29uc29sZSkge1xuXHRcdHJldHVybiBkdW1teUxvZ2dlclxuXHR9XG5cdHJldHVybiB7XG5cdFx0ZGVidWc6IGNvbnNvbGUuZGVidWcsXG5cdFx0aW5mbzogY29uc29sZS5pbmZvLFxuXHRcdHdhcm46IGNvbnNvbGUud2Fybixcblx0XHRlcnJvcjogY29uc29sZS5lcnJvclxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2dnZXIodmFsdWU6IExvZ2dlcikge1xuXHRsb2dnZXIgPSB2YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKCkge1xuXHRyZXR1cm4gbG9nZ2VyXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksUUFBUSw0QkFBNEI7QUFTekQsSUFBSUMsTUFBYztBQUVsQixNQUFNQyxRQUFRLEdBQUdBLENBQUEsS0FBTTtFQUN0QjtBQUNELENBQUM7QUFFRCxPQUFPLE1BQU1DLFdBQW1CLEdBQUc7RUFDbENDLEtBQUssRUFBRUYsUUFBUTtFQUNmRyxJQUFJLEVBQUVILFFBQVE7RUFDZEksSUFBSSxFQUFFSixRQUFRO0VBQ2RLLEtBQUssRUFBRUw7QUFDUixDQUFDO0FBRUQsT0FBTyxTQUFTTSxZQUFZQSxDQUFBLEVBQVc7RUFDdEM7RUFDQSxJQUFJUixZQUFZLENBQUMsQ0FBQyxDQUFDUyxRQUFRLEtBQUssWUFBWSxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsT0FBTyxJQUFJLENBQUNBLE9BQU8sRUFBRTtJQUM1RSxPQUFPUixXQUFXO0VBQ25CO0VBQ0EsT0FBTztJQUNOQyxLQUFLLEVBQUVPLE9BQU8sQ0FBQ1AsS0FBSztJQUNwQkMsSUFBSSxFQUFFTSxPQUFPLENBQUNOLElBQUk7SUFDbEJDLElBQUksRUFBRUssT0FBTyxDQUFDTCxJQUFJO0lBQ2xCQyxLQUFLLEVBQUVJLE9BQU8sQ0FBQ0o7RUFDaEIsQ0FBQztBQUNGO0FBRUEsT0FBTyxTQUFTSyxTQUFTQSxDQUFDQyxLQUFhLEVBQUU7RUFDeENaLE1BQU0sR0FBR1ksS0FBSztBQUNmO0FBRUEsT0FBTyxTQUFTQyxTQUFTQSxDQUFBLEVBQUc7RUFDM0IsT0FBT2IsTUFBTTtBQUNkIiwiaWdub3JlTGlzdCI6W119
package/lib/utils/lti.js CHANGED
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBasicLaunch = exports.isInsideIFrame = void 0;
4
1
  // Check if we are inside an iframe
5
- const isInsideIFrame = () => window !== window.parent;
6
- exports.isInsideIFrame = isInsideIFrame;
2
+ export const isInsideIFrame = () => window !== window.parent;
3
+
7
4
  // Check whether this is a regular launch or a Deep Link launch
8
- const isBasicLaunch = (ltiLaunch) => !ltiLaunch.deepLinkingReturnUrl;
9
- exports.isBasicLaunch = isBasicLaunch;
5
+ export const isBasicLaunch = ltiLaunch => !ltiLaunch.deepLinkingReturnUrl;
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0luc2lkZUlGcmFtZSIsIndpbmRvdyIsInBhcmVudCIsImlzQmFzaWNMYXVuY2giLCJsdGlMYXVuY2giLCJkZWVwTGlua2luZ1JldHVyblVybCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9sdGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTHRpTGF1bmNoIH0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vIENoZWNrIGlmIHdlIGFyZSBpbnNpZGUgYW4gaWZyYW1lXG5leHBvcnQgY29uc3QgaXNJbnNpZGVJRnJhbWUgPSAoKSA9PiB3aW5kb3cgIT09IHdpbmRvdy5wYXJlbnRcblxuLy8gQ2hlY2sgd2hldGhlciB0aGlzIGlzIGEgcmVndWxhciBsYXVuY2ggb3IgYSBEZWVwIExpbmsgbGF1bmNoXG5leHBvcnQgY29uc3QgaXNCYXNpY0xhdW5jaCA9IChsdGlMYXVuY2g6IEx0aUxhdW5jaCkgPT4gIWx0aUxhdW5jaC5kZWVwTGlua2luZ1JldHVyblVybFxuIl0sIm1hcHBpbmdzIjoiQUFFQTtBQUNBLE9BQU8sTUFBTUEsY0FBYyxHQUFHQSxDQUFBLEtBQU1DLE1BQU0sS0FBS0EsTUFBTSxDQUFDQyxNQUFNOztBQUU1RDtBQUNBLE9BQU8sTUFBTUMsYUFBYSxHQUFJQyxTQUFvQixJQUFLLENBQUNBLFNBQVMsQ0FBQ0Msb0JBQW9CIiwiaWdub3JlTGlzdCI6W119
@@ -1,51 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModelFetchResult = exports.getModelMinusRelations = exports.getModelArray = void 0;
4
- exports.handleModelFetchFinish = handleModelFetchFinish;
5
- const lodash_1 = require("lodash");
6
- const modelStatus_1 = require("../constants/modelStatus");
7
- const getModelArray = (model, guid) => Object.keys(model)
8
- .filter(key => key !== '_metadata' && key !== guid && !!model[key])
9
- .map(key => model[key]);
10
- exports.getModelArray = getModelArray;
11
- const getModelMinusRelations = (model) => Object.keys(model)
12
- .filter(key => key !== 'guid' && !(0, lodash_1.isPlainObject)(model[key]) && !(0, lodash_1.isArray)(model[key]))
13
- .reduce((retval, key) => {
14
- retval[key] = model[key];
15
- return retval;
1
+ import { isArray, isPlainObject } from 'lodash';
2
+ import { MODEL_STATUS } from '../constants/modelStatus';
3
+ export const getModelArray = (model, guid) => Object.keys(model).filter(key => key !== '_metadata' && key !== guid && !!model[key]).map(key => model[key]);
4
+ export const getModelMinusRelations = model => Object.keys(model).filter(key => key !== 'guid' && !isPlainObject(model[key]) && !isArray(model[key])).reduce((retval, key) => {
5
+ retval[key] = model[key];
6
+ return retval;
16
7
  }, {});
17
- exports.getModelMinusRelations = getModelMinusRelations;
18
- const getModelFetchResult = (model, nextModel) => {
19
- // from (no model, empty model, fetching model) to (fetched model), e.g. GET
20
- const didFetch = (!model || !model._metadata || model._metadata.isFetching) &&
21
- !!nextModel &&
22
- !!nextModel._metadata &&
23
- !nextModel._metadata.isFetching;
24
- // from (fetching model) to (no model), e.g. DELETED
25
- const didDelete = !!model && !!model._metadata && model._metadata.isFetching && !nextModel;
26
- const isFinished = didFetch || didDelete;
27
- const isSuccess = isFinished && (didDelete || (!!nextModel && !!nextModel._metadata && !nextModel._metadata.hasError));
28
- const error = (isFinished && !didDelete && !!nextModel && !!nextModel._metadata && nextModel._metadata.lastFetchErrorData) ||
29
- undefined;
30
- return {
31
- isFinished,
32
- isSuccess,
33
- error
34
- };
8
+ export const getModelFetchResult = (model, nextModel) => {
9
+ // from (no model, empty model, fetching model) to (fetched model), e.g. GET
10
+ const didFetch = (!model || !model._metadata || model._metadata.isFetching) && !!nextModel && !!nextModel._metadata && !nextModel._metadata.isFetching;
11
+ // from (fetching model) to (no model), e.g. DELETED
12
+ const didDelete = !!model && !!model._metadata && model._metadata.isFetching && !nextModel;
13
+ const isFinished = didFetch || didDelete;
14
+ const isSuccess = isFinished && (didDelete || !!nextModel && !!nextModel._metadata && !nextModel._metadata.hasError);
15
+ const error = isFinished && !didDelete && !!nextModel && !!nextModel._metadata && nextModel._metadata.lastFetchErrorData || undefined;
16
+ return {
17
+ isFinished,
18
+ isSuccess,
19
+ error
20
+ };
35
21
  };
36
- exports.getModelFetchResult = getModelFetchResult;
22
+
37
23
  /**
38
24
  * When the model has finished fetching, call `changeModelStatus`.
39
25
  * If `fetchingId` is provided, `model` and `prevModel` are assumed to be `ModelCollection`,
40
26
  * and the model found at `fetchingId` is used.
41
27
  */
42
- function handleModelFetchFinish(model, prevModel, fetchingId, changeModelStatus) {
43
- const fetchingModel = fetchingId ? model[fetchingId] : model;
44
- const prevFetchingModel = fetchingId
45
- ? prevModel[fetchingId]
46
- : prevModel;
47
- const modelFetchResult = (0, exports.getModelFetchResult)(prevFetchingModel, fetchingModel);
48
- if (modelFetchResult.isFinished) {
49
- changeModelStatus(!modelFetchResult.isSuccess ? modelStatus_1.MODEL_STATUS.ERROR : modelStatus_1.MODEL_STATUS.READY, undefined);
50
- }
28
+ export function handleModelFetchFinish(model, prevModel, fetchingId, changeModelStatus) {
29
+ const fetchingModel = fetchingId ? model[fetchingId] : model;
30
+ const prevFetchingModel = fetchingId ? prevModel[fetchingId] : prevModel;
31
+ const modelFetchResult = getModelFetchResult(prevFetchingModel, fetchingModel);
32
+ if (modelFetchResult.isFinished) {
33
+ changeModelStatus(!modelFetchResult.isSuccess ? MODEL_STATUS.ERROR : MODEL_STATUS.READY, undefined);
34
+ }
51
35
  }
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0FycmF5IiwiaXNQbGFpbk9iamVjdCIsIk1PREVMX1NUQVRVUyIsImdldE1vZGVsQXJyYXkiLCJtb2RlbCIsImd1aWQiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwia2V5IiwibWFwIiwiZ2V0TW9kZWxNaW51c1JlbGF0aW9ucyIsInJlZHVjZSIsInJldHZhbCIsImdldE1vZGVsRmV0Y2hSZXN1bHQiLCJuZXh0TW9kZWwiLCJkaWRGZXRjaCIsIl9tZXRhZGF0YSIsImlzRmV0Y2hpbmciLCJkaWREZWxldGUiLCJpc0ZpbmlzaGVkIiwiaXNTdWNjZXNzIiwiaGFzRXJyb3IiLCJlcnJvciIsImxhc3RGZXRjaEVycm9yRGF0YSIsInVuZGVmaW5lZCIsImhhbmRsZU1vZGVsRmV0Y2hGaW5pc2giLCJwcmV2TW9kZWwiLCJmZXRjaGluZ0lkIiwiY2hhbmdlTW9kZWxTdGF0dXMiLCJmZXRjaGluZ01vZGVsIiwicHJldkZldGNoaW5nTW9kZWwiLCJtb2RlbEZldGNoUmVzdWx0IiwiRVJST1IiLCJSRUFEWSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FycmF5LCBpc1BsYWluT2JqZWN0IH0gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgTU9ERUxfU1RBVFVTIH0gZnJvbSAnLi4vY29uc3RhbnRzL21vZGVsU3RhdHVzJ1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZ2V0TW9kZWxBcnJheSA9IDxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNb2RlbENvbGxlY3Rpb248VD4sIGd1aWQ/OiBzdHJpbmcpOiBUW10gPT5cblx0T2JqZWN0LmtleXMobW9kZWwpXG5cdFx0LmZpbHRlcihrZXkgPT4ga2V5ICE9PSAnX21ldGFkYXRhJyAmJiBrZXkgIT09IGd1aWQgJiYgISFtb2RlbFtrZXldKVxuXHRcdC5tYXAoa2V5ID0+IG1vZGVsW2tleV0pIGFzIFRbXVxuXG5leHBvcnQgY29uc3QgZ2V0TW9kZWxNaW51c1JlbGF0aW9ucyA9IDxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBUKSA9PlxuXHQoT2JqZWN0LmtleXMobW9kZWwpIGFzIEFycmF5PGtleW9mIFQ+KVxuXHRcdC5maWx0ZXIoa2V5ID0+IGtleSAhPT0gJ2d1aWQnICYmICFpc1BsYWluT2JqZWN0KG1vZGVsW2tleV0pICYmICFpc0FycmF5KG1vZGVsW2tleV0pKVxuXHRcdC5yZWR1Y2UoKHJldHZhbDogUGFydGlhbDxUPiwga2V5KSA9PiB7XG5cdFx0XHRyZXR2YWxba2V5XSA9IG1vZGVsW2tleV1cblx0XHRcdHJldHVybiByZXR2YWxcblx0XHR9LCB7fSlcblxuZXhwb3J0IGNvbnN0IGdldE1vZGVsRmV0Y2hSZXN1bHQgPSA8VCBleHRlbmRzIE1vZGVsPihtb2RlbD86IFQsIG5leHRNb2RlbD86IFQpID0+IHtcblx0Ly8gZnJvbSAobm8gbW9kZWwsIGVtcHR5IG1vZGVsLCBmZXRjaGluZyBtb2RlbCkgdG8gKGZldGNoZWQgbW9kZWwpLCBlLmcuIEdFVFxuXHRjb25zdCBkaWRGZXRjaCA9XG5cdFx0KCFtb2RlbCB8fCAhbW9kZWwuX21ldGFkYXRhIHx8IG1vZGVsLl9tZXRhZGF0YS5pc0ZldGNoaW5nKSAmJlxuXHRcdCEhbmV4dE1vZGVsICYmXG5cdFx0ISFuZXh0TW9kZWwuX21ldGFkYXRhICYmXG5cdFx0IW5leHRNb2RlbC5fbWV0YWRhdGEuaXNGZXRjaGluZ1xuXHQvLyBmcm9tIChmZXRjaGluZyBtb2RlbCkgdG8gKG5vIG1vZGVsKSwgZS5nLiBERUxFVEVEXG5cdGNvbnN0IGRpZERlbGV0ZSA9ICEhbW9kZWwgJiYgISFtb2RlbC5fbWV0YWRhdGEgJiYgbW9kZWwuX21ldGFkYXRhLmlzRmV0Y2hpbmcgJiYgIW5leHRNb2RlbFxuXHRjb25zdCBpc0ZpbmlzaGVkID0gZGlkRmV0Y2ggfHwgZGlkRGVsZXRlXG5cdGNvbnN0IGlzU3VjY2VzcyA9XG5cdFx0aXNGaW5pc2hlZCAmJiAoZGlkRGVsZXRlIHx8ICghIW5leHRNb2RlbCAmJiAhIW5leHRNb2RlbC5fbWV0YWRhdGEgJiYgIW5leHRNb2RlbC5fbWV0YWRhdGEuaGFzRXJyb3IpKVxuXHRjb25zdCBlcnJvciA9XG5cdFx0KGlzRmluaXNoZWQgJiYgIWRpZERlbGV0ZSAmJiAhIW5leHRNb2RlbCAmJiAhIW5leHRNb2RlbC5fbWV0YWRhdGEgJiYgbmV4dE1vZGVsLl9tZXRhZGF0YS5sYXN0RmV0Y2hFcnJvckRhdGEpIHx8XG5cdFx0dW5kZWZpbmVkXG5cblx0cmV0dXJuIHtcblx0XHRpc0ZpbmlzaGVkLFxuXHRcdGlzU3VjY2Vzcyxcblx0XHRlcnJvclxuXHR9XG59XG5cbi8qKlxuICogV2hlbiB0aGUgbW9kZWwgaGFzIGZpbmlzaGVkIGZldGNoaW5nLCBjYWxsIGBjaGFuZ2VNb2RlbFN0YXR1c2AuXG4gKiBJZiBgZmV0Y2hpbmdJZGAgaXMgcHJvdmlkZWQsIGBtb2RlbGAgYW5kIGBwcmV2TW9kZWxgIGFyZSBhc3N1bWVkIHRvIGJlIGBNb2RlbENvbGxlY3Rpb25gLFxuICogYW5kIHRoZSBtb2RlbCBmb3VuZCBhdCBgZmV0Y2hpbmdJZGAgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU1vZGVsRmV0Y2hGaW5pc2g8VE1vZGVsIGV4dGVuZHMgTW9kZWw+KFxuXHRtb2RlbDogVE1vZGVsIHwgTW9kZWxDb2xsZWN0aW9uPFRNb2RlbD4gfCB1bmRlZmluZWQsXG5cdHByZXZNb2RlbDogVE1vZGVsIHwgTW9kZWxDb2xsZWN0aW9uPFRNb2RlbD4gfCB1bmRlZmluZWQsXG5cdGZldGNoaW5nSWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCxcblx0Y2hhbmdlTW9kZWxTdGF0dXM6IChtb2RlbFN0YXR1czogTU9ERUxfU1RBVFVTLCBmZXRjaGluZ0lkPzogc3RyaW5nKSA9PiB2b2lkXG4pIHtcblx0Y29uc3QgZmV0Y2hpbmdNb2RlbCA9IGZldGNoaW5nSWQgPyAoKG1vZGVsIGFzIE1vZGVsQ29sbGVjdGlvbjxUTW9kZWw+KVtmZXRjaGluZ0lkXSBhcyBUTW9kZWwgfCB1bmRlZmluZWQpIDogbW9kZWxcblx0Y29uc3QgcHJldkZldGNoaW5nTW9kZWwgPSBmZXRjaGluZ0lkXG5cdFx0PyAoKHByZXZNb2RlbCBhcyBNb2RlbENvbGxlY3Rpb248VE1vZGVsPilbZmV0Y2hpbmdJZF0gYXMgVE1vZGVsIHwgdW5kZWZpbmVkKVxuXHRcdDogcHJldk1vZGVsXG5cdGNvbnN0IG1vZGVsRmV0Y2hSZXN1bHQgPSBnZXRNb2RlbEZldGNoUmVzdWx0KHByZXZGZXRjaGluZ01vZGVsLCBmZXRjaGluZ01vZGVsKVxuXHRpZiAobW9kZWxGZXRjaFJlc3VsdC5pc0ZpbmlzaGVkKSB7XG5cdFx0Y2hhbmdlTW9kZWxTdGF0dXMoIW1vZGVsRmV0Y2hSZXN1bHQuaXNTdWNjZXNzID8gTU9ERUxfU1RBVFVTLkVSUk9SIDogTU9ERUxfU1RBVFVTLlJFQURZLCB1bmRlZmluZWQpXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsT0FBTyxFQUFFQyxhQUFhLFFBQVEsUUFBUTtBQUMvQyxTQUFTQyxZQUFZLFFBQVEsMEJBQTBCO0FBR3ZELE9BQU8sTUFBTUMsYUFBYSxHQUFHQSxDQUFrQkMsS0FBeUIsRUFBRUMsSUFBYSxLQUN0RkMsTUFBTSxDQUFDQyxJQUFJLENBQUNILEtBQUssQ0FBQyxDQUNoQkksTUFBTSxDQUFDQyxHQUFHLElBQUlBLEdBQUcsS0FBSyxXQUFXLElBQUlBLEdBQUcsS0FBS0osSUFBSSxJQUFJLENBQUMsQ0FBQ0QsS0FBSyxDQUFDSyxHQUFHLENBQUMsQ0FBQyxDQUNsRUMsR0FBRyxDQUFDRCxHQUFHLElBQUlMLEtBQUssQ0FBQ0ssR0FBRyxDQUFDLENBQVE7QUFFaEMsT0FBTyxNQUFNRSxzQkFBc0IsR0FBcUJQLEtBQVEsSUFDOURFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSCxLQUFLLENBQUMsQ0FDakJJLE1BQU0sQ0FBQ0MsR0FBRyxJQUFJQSxHQUFHLEtBQUssTUFBTSxJQUFJLENBQUNSLGFBQWEsQ0FBQ0csS0FBSyxDQUFDSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNULE9BQU8sQ0FBQ0ksS0FBSyxDQUFDSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ25GRyxNQUFNLENBQUMsQ0FBQ0MsTUFBa0IsRUFBRUosR0FBRyxLQUFLO0VBQ3BDSSxNQUFNLENBQUNKLEdBQUcsQ0FBQyxHQUFHTCxLQUFLLENBQUNLLEdBQUcsQ0FBQztFQUN4QixPQUFPSSxNQUFNO0FBQ2QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRVIsT0FBTyxNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBa0JWLEtBQVMsRUFBRVcsU0FBYSxLQUFLO0VBQ2pGO0VBQ0EsTUFBTUMsUUFBUSxHQUNiLENBQUMsQ0FBQ1osS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQ2EsU0FBUyxJQUFJYixLQUFLLENBQUNhLFNBQVMsQ0FBQ0MsVUFBVSxLQUN6RCxDQUFDLENBQUNILFNBQVMsSUFDWCxDQUFDLENBQUNBLFNBQVMsQ0FBQ0UsU0FBUyxJQUNyQixDQUFDRixTQUFTLENBQUNFLFNBQVMsQ0FBQ0MsVUFBVTtFQUNoQztFQUNBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLENBQUNmLEtBQUssSUFBSSxDQUFDLENBQUNBLEtBQUssQ0FBQ2EsU0FBUyxJQUFJYixLQUFLLENBQUNhLFNBQVMsQ0FBQ0MsVUFBVSxJQUFJLENBQUNILFNBQVM7RUFDMUYsTUFBTUssVUFBVSxHQUFHSixRQUFRLElBQUlHLFNBQVM7RUFDeEMsTUFBTUUsU0FBUyxHQUNkRCxVQUFVLEtBQUtELFNBQVMsSUFBSyxDQUFDLENBQUNKLFNBQVMsSUFBSSxDQUFDLENBQUNBLFNBQVMsQ0FBQ0UsU0FBUyxJQUFJLENBQUNGLFNBQVMsQ0FBQ0UsU0FBUyxDQUFDSyxRQUFTLENBQUM7RUFDckcsTUFBTUMsS0FBSyxHQUNUSCxVQUFVLElBQUksQ0FBQ0QsU0FBUyxJQUFJLENBQUMsQ0FBQ0osU0FBUyxJQUFJLENBQUMsQ0FBQ0EsU0FBUyxDQUFDRSxTQUFTLElBQUlGLFNBQVMsQ0FBQ0UsU0FBUyxDQUFDTyxrQkFBa0IsSUFDM0dDLFNBQVM7RUFFVixPQUFPO0lBQ05MLFVBQVU7SUFDVkMsU0FBUztJQUNURTtFQUNELENBQUM7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNHLHNCQUFzQkEsQ0FDckN0QixLQUFtRCxFQUNuRHVCLFNBQXVELEVBQ3ZEQyxVQUF1QyxFQUN2Q0MsaUJBQTJFLEVBQzFFO0VBQ0QsTUFBTUMsYUFBYSxHQUFHRixVQUFVLEdBQUt4QixLQUFLLENBQTZCd0IsVUFBVSxDQUFDLEdBQTBCeEIsS0FBSztFQUNqSCxNQUFNMkIsaUJBQWlCLEdBQUdILFVBQVUsR0FDL0JELFNBQVMsQ0FBNkJDLFVBQVUsQ0FBQyxHQUNuREQsU0FBUztFQUNaLE1BQU1LLGdCQUFnQixHQUFHbEIsbUJBQW1CLENBQUNpQixpQkFBaUIsRUFBRUQsYUFBYSxDQUFDO0VBQzlFLElBQUlFLGdCQUFnQixDQUFDWixVQUFVLEVBQUU7SUFDaENTLGlCQUFpQixDQUFDLENBQUNHLGdCQUFnQixDQUFDWCxTQUFTLEdBQUduQixZQUFZLENBQUMrQixLQUFLLEdBQUcvQixZQUFZLENBQUNnQyxLQUFLLEVBQUVULFNBQVMsQ0FBQztFQUNwRztBQUNEIiwiaWdub3JlTGlzdCI6W119
@@ -1,7 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasPrecisionAndScale = hasPrecisionAndScale;
4
- exports.modulo = modulo;
5
1
  /**
6
2
  * Validates that the input is a number and that the number falls within
7
3
  * the precision and scale constraints provided.
@@ -13,14 +9,14 @@ exports.modulo = modulo;
13
9
  * @param scale - The number of digits allowed to the right of the decimal point in the value
14
10
  * @returns A boolean indicating whether the number falls within the precision and scale constraints provided
15
11
  */
16
- function hasPrecisionAndScale(decimalString, precision, scale) {
17
- if (isNaN(Number(decimalString)) || isNaN(precision) || isNaN(scale) || precision <= 0 || scale < 0) {
18
- return false;
19
- }
20
- const parts = decimalString.split('.');
21
- return !!(new RegExp(precision === scale ? '^0$' : `^-?\\d{1,${precision - scale}}$`).exec(parts[0]) &&
22
- (parts.length > 1 ? new RegExp(`^\\d{1,${scale}}$`).exec(parts[1]) : true));
12
+ export function hasPrecisionAndScale(decimalString, precision, scale) {
13
+ if (isNaN(Number(decimalString)) || isNaN(precision) || isNaN(scale) || precision <= 0 || scale < 0) {
14
+ return false;
15
+ }
16
+ const parts = decimalString.split('.');
17
+ return !!(new RegExp(precision === scale ? '^0$' : `^-?\\d{1,${precision - scale}}$`).exec(parts[0]) && (parts.length > 1 ? new RegExp(`^\\d{1,${scale}}$`).exec(parts[1]) : true));
23
18
  }
24
- function modulo(n, m) {
25
- return ((n % m) + m) % m;
19
+ export function modulo(n, m) {
20
+ return (n % m + m) % m;
26
21
  }
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYXNQcmVjaXNpb25BbmRTY2FsZSIsImRlY2ltYWxTdHJpbmciLCJwcmVjaXNpb24iLCJzY2FsZSIsImlzTmFOIiwiTnVtYmVyIiwicGFydHMiLCJzcGxpdCIsIlJlZ0V4cCIsImV4ZWMiLCJsZW5ndGgiLCJtb2R1bG8iLCJuIiwibSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9udW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgaW5wdXQgaXMgYSBudW1iZXIgYW5kIHRoYXQgdGhlIG51bWJlciBmYWxscyB3aXRoaW5cbiAqIHRoZSBwcmVjaXNpb24gYW5kIHNjYWxlIGNvbnN0cmFpbnRzIHByb3ZpZGVkLlxuICogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvc3FsL3Qtc3FsL2RhdGEtdHlwZXMvcHJlY2lzaW9uLXNjYWxlLWFuZC1sZW5ndGgtdHJhbnNhY3Qtc3FsP3ZpZXc9c3FsLXNlcnZlci0yMDE3XG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIGRlY2ltYWxTdHJpbmcgLSBUaGUgbnVtYmVyIHRvIHZhbGlkYXRlLiBNdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZyAoaS5lLiBmcm9tIGEgd2ViIGZvcm0pXG4gKiBAcGFyYW0gcHJlY2lzaW9uIC0gVGhlIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgdmFsdWVcbiAqIEBwYXJhbSBzY2FsZSAtIFRoZSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBkZWNpbWFsIHBvaW50IGluIHRoZSB2YWx1ZVxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbnVtYmVyIGZhbGxzIHdpdGhpbiB0aGUgcHJlY2lzaW9uIGFuZCBzY2FsZSBjb25zdHJhaW50cyBwcm92aWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUHJlY2lzaW9uQW5kU2NhbGUoZGVjaW1hbFN0cmluZzogc3RyaW5nLCBwcmVjaXNpb246IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuXHRpZiAoaXNOYU4oTnVtYmVyKGRlY2ltYWxTdHJpbmcpKSB8fCBpc05hTihwcmVjaXNpb24pIHx8IGlzTmFOKHNjYWxlKSB8fCBwcmVjaXNpb24gPD0gMCB8fCBzY2FsZSA8IDApIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXHRjb25zdCBwYXJ0cyA9IGRlY2ltYWxTdHJpbmcuc3BsaXQoJy4nKVxuXHRyZXR1cm4gISEoXG5cdFx0bmV3IFJlZ0V4cChwcmVjaXNpb24gPT09IHNjYWxlID8gJ14wJCcgOiBgXi0/XFxcXGR7MSwke3ByZWNpc2lvbiAtIHNjYWxlfX0kYCkuZXhlYyhwYXJ0c1swXSkgJiZcblx0XHQocGFydHMubGVuZ3RoID4gMSA/IG5ldyBSZWdFeHAoYF5cXFxcZHsxLCR7c2NhbGV9fSRgKS5leGVjKHBhcnRzWzFdKSA6IHRydWUpXG5cdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZHVsbyhuOiBudW1iZXIsIG06IG51bWJlcikge1xuXHRyZXR1cm4gKChuICUgbSkgKyBtKSAlIG1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0Esb0JBQW9CQSxDQUFDQyxhQUFxQixFQUFFQyxTQUFpQixFQUFFQyxLQUFhLEVBQUU7RUFDN0YsSUFBSUMsS0FBSyxDQUFDQyxNQUFNLENBQUNKLGFBQWEsQ0FBQyxDQUFDLElBQUlHLEtBQUssQ0FBQ0YsU0FBUyxDQUFDLElBQUlFLEtBQUssQ0FBQ0QsS0FBSyxDQUFDLElBQUlELFNBQVMsSUFBSSxDQUFDLElBQUlDLEtBQUssR0FBRyxDQUFDLEVBQUU7SUFDcEcsT0FBTyxLQUFLO0VBQ2I7RUFDQSxNQUFNRyxLQUFLLEdBQUdMLGFBQWEsQ0FBQ00sS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUN0QyxPQUFPLENBQUMsRUFDUCxJQUFJQyxNQUFNLENBQUNOLFNBQVMsS0FBS0MsS0FBSyxHQUFHLEtBQUssR0FBRyxZQUFZRCxTQUFTLEdBQUdDLEtBQUssSUFBSSxDQUFDLENBQUNNLElBQUksQ0FBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQ3pGQSxLQUFLLENBQUNJLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSUYsTUFBTSxDQUFDLFVBQVVMLEtBQUssSUFBSSxDQUFDLENBQUNNLElBQUksQ0FBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQzFFO0FBQ0Y7QUFFQSxPQUFPLFNBQVNLLE1BQU1BLENBQUNDLENBQVMsRUFBRUMsQ0FBUyxFQUFFO0VBQzVDLE9BQU8sQ0FBRUQsQ0FBQyxHQUFHQyxDQUFDLEdBQUlBLENBQUMsSUFBSUEsQ0FBQztBQUN6QiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,29 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cancellablePromise = exports.isErrorCancelled = exports.CancelledError = void 0;
4
- class CancelledError extends Error {
5
- constructor() {
6
- super('Promise was cancelled');
7
- this.name = 'CancelledError';
8
- this.isCancelled = true;
9
- }
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ export class CancelledError extends Error {
3
+ constructor() {
4
+ super('Promise was cancelled');
5
+ _defineProperty(this, "isCancelled", void 0);
6
+ this.name = 'CancelledError';
7
+ this.isCancelled = true;
8
+ }
10
9
  }
11
- exports.CancelledError = CancelledError;
12
- const isErrorCancelled = (error) => {
13
- return !!error && error instanceof CancelledError && error.isCancelled;
10
+ export const isErrorCancelled = error => {
11
+ return !!error && error instanceof CancelledError && error.isCancelled;
14
12
  };
15
- exports.isErrorCancelled = isErrorCancelled;
16
- const cancellablePromise = (promise) => {
17
- let isCancelled = false;
18
- const wrappedPromise = new Promise((resolve, reject) => {
19
- promise.then(val => (isCancelled ? reject(new CancelledError()) : resolve(val)), (error) => (isCancelled ? reject(new CancelledError()) : reject(error)));
20
- });
21
- const response = {
22
- promise: wrappedPromise,
23
- cancel() {
24
- isCancelled = true;
25
- }
26
- };
27
- return response;
13
+ export const cancellablePromise = promise => {
14
+ let isCancelled = false;
15
+ const wrappedPromise = new Promise((resolve, reject) => {
16
+ promise.then(val => isCancelled ? reject(new CancelledError()) : resolve(val), error => isCancelled ? reject(new CancelledError()) : reject(error));
17
+ });
18
+ const response = {
19
+ promise: wrappedPromise,
20
+ cancel() {
21
+ isCancelled = true;
22
+ }
23
+ };
24
+ return response;
28
25
  };
29
- exports.cancellablePromise = cancellablePromise;
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYW5jZWxsZWRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydHkiLCJuYW1lIiwiaXNDYW5jZWxsZWQiLCJpc0Vycm9yQ2FuY2VsbGVkIiwiZXJyb3IiLCJjYW5jZWxsYWJsZVByb21pc2UiLCJwcm9taXNlIiwid3JhcHBlZFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRoZW4iLCJ2YWwiLCJyZXNwb25zZSIsImNhbmNlbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9taXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcblx0cHJvbWlzZTogUHJvbWlzZTxUPlxuXHRjYW5jZWwoKTogdm9pZFxufVxuXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdHB1YmxpYyBpc0NhbmNlbGxlZDogYm9vbGVhblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcignUHJvbWlzZSB3YXMgY2FuY2VsbGVkJylcblx0XHR0aGlzLm5hbWUgPSAnQ2FuY2VsbGVkRXJyb3InXG5cdFx0dGhpcy5pc0NhbmNlbGxlZCA9IHRydWVcblx0fVxufVxuXG5leHBvcnQgY29uc3QgaXNFcnJvckNhbmNlbGxlZCA9IChlcnJvcjogdW5rbm93bikgPT4ge1xuXHRyZXR1cm4gISFlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIENhbmNlbGxlZEVycm9yICYmIGVycm9yLmlzQ2FuY2VsbGVkXG59XG5cbmV4cG9ydCBjb25zdCBjYW5jZWxsYWJsZVByb21pc2UgPSA8VD4ocHJvbWlzZTogUHJvbWlzZTxUPikgPT4ge1xuXHRsZXQgaXNDYW5jZWxsZWQgPSBmYWxzZVxuXG5cdGNvbnN0IHdyYXBwZWRQcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdHByb21pc2UudGhlbihcblx0XHRcdHZhbCA9PiAoaXNDYW5jZWxsZWQgPyByZWplY3QobmV3IENhbmNlbGxlZEVycm9yKCkpIDogcmVzb2x2ZSh2YWwpKSxcblx0XHRcdChlcnJvcjogdW5rbm93bikgPT4gKGlzQ2FuY2VsbGVkID8gcmVqZWN0KG5ldyBDYW5jZWxsZWRFcnJvcigpKSA6IHJlamVjdChlcnJvciBhcyBFcnJvcikpXG5cdFx0KVxuXHR9KVxuXG5cdGNvbnN0IHJlc3BvbnNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD4gPSB7XG5cdFx0cHJvbWlzZTogd3JhcHBlZFByb21pc2UsXG5cdFx0Y2FuY2VsKCkge1xuXHRcdFx0aXNDYW5jZWxsZWQgPSB0cnVlXG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXNwb25zZVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxNQUFNQSxjQUFjLFNBQVNDLEtBQUssQ0FBQztFQUV6Q0MsV0FBV0EsQ0FBQSxFQUFHO0lBQ2IsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBQUFDLGVBQUE7SUFDOUIsSUFBSSxDQUFDQyxJQUFJLEdBQUcsZ0JBQWdCO0lBQzVCLElBQUksQ0FBQ0MsV0FBVyxHQUFHLElBQUk7RUFDeEI7QUFDRDtBQUVBLE9BQU8sTUFBTUMsZ0JBQWdCLEdBQUlDLEtBQWMsSUFBSztFQUNuRCxPQUFPLENBQUMsQ0FBQ0EsS0FBSyxJQUFJQSxLQUFLLFlBQVlQLGNBQWMsSUFBSU8sS0FBSyxDQUFDRixXQUFXO0FBQ3ZFLENBQUM7QUFFRCxPQUFPLE1BQU1HLGtCQUFrQixHQUFPQyxPQUFtQixJQUFLO0VBQzdELElBQUlKLFdBQVcsR0FBRyxLQUFLO0VBRXZCLE1BQU1LLGNBQWMsR0FBRyxJQUFJQyxPQUFPLENBQUksQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7SUFDMURKLE9BQU8sQ0FBQ0ssSUFBSSxDQUNYQyxHQUFHLElBQUtWLFdBQVcsR0FBR1EsTUFBTSxDQUFDLElBQUliLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBR1ksT0FBTyxDQUFDRyxHQUFHLENBQUUsRUFDakVSLEtBQWMsSUFBTUYsV0FBVyxHQUFHUSxNQUFNLENBQUMsSUFBSWIsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHYSxNQUFNLENBQUNOLEtBQWMsQ0FDeEYsQ0FBQztFQUNGLENBQUMsQ0FBQztFQUVGLE1BQU1TLFFBQStCLEdBQUc7SUFDdkNQLE9BQU8sRUFBRUMsY0FBYztJQUN2Qk8sTUFBTUEsQ0FBQSxFQUFHO01BQ1JaLFdBQVcsR0FBRyxJQUFJO0lBQ25CO0VBQ0QsQ0FBQztFQUNELE9BQU9XLFFBQVE7QUFDaEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkForNonPublicImages = void 0;
4
- const tslib_1 = require("tslib");
5
- const quill_1 = tslib_1.__importDefault(require("quill"));
6
- const uuid_1 = require("uuid");
7
- const actionCreator_1 = require("../redux/actionCreator");
8
- const noStoreSaga_1 = require("../redux/sagas/noStoreSaga");
9
- const fetch_1 = require("./fetch");
10
- const Delta = quill_1.default.import('delta');
1
+ import Quill from 'quill';
2
+ import { v5 as uuidv5 } from 'uuid';
3
+ import { dispatchModelFetchRequest } from '../redux/actionCreator';
4
+ import { noStoreHooks } from '../redux/sagas/noStoreSaga';
5
+ import { isFetchErrorData } from './fetch';
6
+ const Delta = Quill.import('delta');
7
+
11
8
  /**
12
9
  * Check for non-public in the provided quill contents. Update the ImageValue of an op if an image is found to be
13
10
  * non-public.
@@ -15,56 +12,54 @@ const Delta = quill_1.default.import('delta');
15
12
  * @param checkedImages A list of all images we have already processed in previous calls to this function.
16
13
  * list of processed images
17
14
  */
18
- const checkForNonPublicImages = (quill, checkedImages) => {
19
- var _a;
20
- (_a = quill
21
- .getContents()
22
- .ops // Is the op an image and have we not seen it before?
23
- ) === null || _a === void 0 ? void 0 : _a.filter(op => op.insert.image &&
24
- !checkedImages.find(image => image.src === op.insert.image.src) &&
25
- op.insert.image.src.startsWith('http')).forEach(op => {
26
- // Check if the image is public. Do not check data:image urls
27
- // Use the backend to check if the image is public
28
- // Due to CSP and other security measures, we can't check this in the frontend
29
- // uuidv5 is a deterministic uuid generator based on a namespace and a name
30
- // uuidv5.URL is the namespace for urls
31
- const hookId = (0, uuid_1.v5)(op.insert.image.src, uuid_1.v5.URL);
32
- noStoreSaga_1.noStoreHooks.registerNoStoreActionHook(hookId, (data) => {
33
- noStoreSaga_1.noStoreHooks.unregisterNoStoreActionHook(hookId);
34
- let contentTypeKey;
35
- /**
36
- * API fetches the URL, and `noStoreSaga` returns either the result or error
37
- * * `data` is `null` when the API could not fetch the URL with a successful status code, and returns `null` => `nonPublic`
38
- * * `data` is `FetchErrorData` if the API request itself failed, e.g. from some unknown error, we don't know if the image is public => do not update
39
- * * `data` is a dictionary of headers when the API does fetch the URL
40
- * * if there is no `Content-Type` header, we don't know if the image is public => do not update
41
- * * if there is a `Content-Type` header, but is NOT an image type (i.e. it was a 302 that, when followed returned HTML)
42
- * (I'm looking at you, Brightspace) => `nonPublic`
43
- * * if there is a `Content-Type` header, and it is an image type, then the image is public => do not update
44
- */
45
- if (!data ||
46
- (!(0, fetch_1.isFetchErrorData)(data) &&
47
- (contentTypeKey = Object.keys(data).find(k => k.toLowerCase() === 'content-type')) &&
48
- !data[contentTypeKey][0].startsWith('image'))) {
49
- const contents = quill.getContents();
50
- const ops = contents.map((o) => {
51
- var _a;
52
- return ((_a = o.insert.image) === null || _a === void 0 ? void 0 : _a.src) && op.insert.image.src && o.insert.image.src === op.insert.image.src
53
- ? Object.assign(Object.assign({}, o), { insert: Object.assign(Object.assign({}, o.insert), { image: Object.assign(Object.assign({}, o.insert.image), { nonPublic: true }) }) }) : o;
54
- });
55
- const updatedContents = contents.diff(new Delta(ops));
56
- quill.updateContents(updatedContents);
15
+ export const checkForNonPublicImages = (quill, checkedImages) => {
16
+ quill.getContents().ops // Is the op an image and have we not seen it before?
17
+ ?.filter(op => op.insert.image && !checkedImages.find(image => image.src === op.insert.image.src) && op.insert.image.src.startsWith('http')).forEach(op => {
18
+ // Check if the image is public. Do not check data:image urls
19
+ // Use the backend to check if the image is public
20
+ // Due to CSP and other security measures, we can't check this in the frontend
21
+
22
+ // uuidv5 is a deterministic uuid generator based on a namespace and a name
23
+ // uuidv5.URL is the namespace for urls
24
+ const hookId = uuidv5(op.insert.image.src, uuidv5.URL);
25
+ noStoreHooks.registerNoStoreActionHook(hookId, data => {
26
+ noStoreHooks.unregisterNoStoreActionHook(hookId);
27
+ let contentTypeKey;
28
+ /**
29
+ * API fetches the URL, and `noStoreSaga` returns either the result or error
30
+ * * `data` is `null` when the API could not fetch the URL with a successful status code, and returns `null` => `nonPublic`
31
+ * * `data` is `FetchErrorData` if the API request itself failed, e.g. from some unknown error, we don't know if the image is public => do not update
32
+ * * `data` is a dictionary of headers when the API does fetch the URL
33
+ * * if there is no `Content-Type` header, we don't know if the image is public => do not update
34
+ * * if there is a `Content-Type` header, but is NOT an image type (i.e. it was a 302 that, when followed returned HTML)
35
+ * (I'm looking at you, Brightspace) => `nonPublic`
36
+ * * if there is a `Content-Type` header, and it is an image type, then the image is public => do not update
37
+ */
38
+ if (!data || !isFetchErrorData(data) && (contentTypeKey = Object.keys(data).find(k => k.toLowerCase() === 'content-type')) && !data[contentTypeKey][0].startsWith('image')) {
39
+ const contents = quill.getContents();
40
+ const ops = contents.map(o => o.insert.image?.src && op.insert.image.src && o.insert.image.src === op.insert.image.src ? {
41
+ ...o,
42
+ insert: {
43
+ ...o.insert,
44
+ image: {
45
+ ...o.insert.image,
46
+ nonPublic: true
57
47
  }
58
- });
59
- // This endpoint returns headers for a url. If the url is nonexistent, it will return null
60
- (0, actionCreator_1.dispatchModelFetchRequest)({
61
- modelName: 'urlChecker',
62
- guid: hookId,
63
- noStore: true,
64
- queryParams: {
65
- url: op.insert.image.src
66
- }
67
- });
48
+ }
49
+ } : o);
50
+ const updatedContents = contents.diff(new Delta(ops));
51
+ quill.updateContents(updatedContents);
52
+ }
53
+ });
54
+ // This endpoint returns headers for a url. If the url is nonexistent, it will return null
55
+ dispatchModelFetchRequest({
56
+ modelName: 'urlChecker',
57
+ guid: hookId,
58
+ noStore: true,
59
+ queryParams: {
60
+ url: op.insert.image.src
61
+ }
68
62
  });
63
+ });
69
64
  };
70
- exports.checkForNonPublicImages = checkForNonPublicImages;
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJRdWlsbCIsInY1IiwidXVpZHY1IiwiZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCIsIm5vU3RvcmVIb29rcyIsImlzRmV0Y2hFcnJvckRhdGEiLCJEZWx0YSIsImltcG9ydCIsImNoZWNrRm9yTm9uUHVibGljSW1hZ2VzIiwicXVpbGwiLCJjaGVja2VkSW1hZ2VzIiwiZ2V0Q29udGVudHMiLCJvcHMiLCJmaWx0ZXIiLCJvcCIsImluc2VydCIsImltYWdlIiwiZmluZCIsInNyYyIsInN0YXJ0c1dpdGgiLCJmb3JFYWNoIiwiaG9va0lkIiwiVVJMIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJjb250ZW50VHlwZUtleSIsIk9iamVjdCIsImtleXMiLCJrIiwidG9Mb3dlckNhc2UiLCJjb250ZW50cyIsIm1hcCIsIm8iLCJub25QdWJsaWMiLCJ1cGRhdGVkQ29udGVudHMiLCJkaWZmIiwidXBkYXRlQ29udGVudHMiLCJtb2RlbE5hbWUiLCJndWlkIiwibm9TdG9yZSIsInF1ZXJ5UGFyYW1zIiwidXJsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3F1aWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWlsbCwgeyBEZWx0YU9wZXJhdGlvbiB9IGZyb20gJ3F1aWxsJ1xuaW1wb3J0IHsgdjUgYXMgdXVpZHY1IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IEltYWdlVmFsdWUgfSBmcm9tICcuLi9jb21wb25lbnRzL1F1aWxsL0Zvcm1hdHMvSW1hZ2UnXG5pbXBvcnQgeyBkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IH0gZnJvbSAnLi4vcmVkdXgvYWN0aW9uQ3JlYXRvcidcbmltcG9ydCB7IG5vU3RvcmVIb29rcyB9IGZyb20gJy4uL3JlZHV4L3NhZ2FzL25vU3RvcmVTYWdhJ1xuaW1wb3J0IHsgRmV0Y2hFcnJvckRhdGEgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGlzRmV0Y2hFcnJvckRhdGEgfSBmcm9tICcuL2ZldGNoJ1xuXG5jb25zdCBEZWx0YSA9IFF1aWxsLmltcG9ydCgnZGVsdGEnKVxuXG4vKipcbiAqIENoZWNrIGZvciBub24tcHVibGljIGluIHRoZSBwcm92aWRlZCBxdWlsbCBjb250ZW50cy4gVXBkYXRlIHRoZSBJbWFnZVZhbHVlIG9mIGFuIG9wIGlmIGFuIGltYWdlIGlzIGZvdW5kIHRvIGJlXG4gKiBub24tcHVibGljLlxuICogQHBhcmFtIHF1aWxsIFRoZSBRdWlsbCBpbnN0YW5jZVxuICogQHBhcmFtIGNoZWNrZWRJbWFnZXMgQSBsaXN0IG9mIGFsbCBpbWFnZXMgd2UgaGF2ZSBhbHJlYWR5IHByb2Nlc3NlZCBpbiBwcmV2aW91cyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLlxuICogbGlzdCBvZiBwcm9jZXNzZWQgaW1hZ2VzXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0Zvck5vblB1YmxpY0ltYWdlcyA9IChxdWlsbDogUXVpbGwsIGNoZWNrZWRJbWFnZXM6IEltYWdlVmFsdWVbXSkgPT4ge1xuXHRxdWlsbFxuXHRcdC5nZXRDb250ZW50cygpXG5cdFx0Lm9wcyAvLyBJcyB0aGUgb3AgYW4gaW1hZ2UgYW5kIGhhdmUgd2Ugbm90IHNlZW4gaXQgYmVmb3JlP1xuXHRcdD8uZmlsdGVyKFxuXHRcdFx0b3AgPT5cblx0XHRcdFx0b3AuaW5zZXJ0LmltYWdlICYmXG5cdFx0XHRcdCFjaGVja2VkSW1hZ2VzLmZpbmQoaW1hZ2UgPT4gaW1hZ2Uuc3JjID09PSBvcC5pbnNlcnQuaW1hZ2Uuc3JjKSAmJlxuXHRcdFx0XHRvcC5pbnNlcnQuaW1hZ2Uuc3JjLnN0YXJ0c1dpdGgoJ2h0dHAnKVxuXHRcdClcblx0XHQuZm9yRWFjaChvcCA9PiB7XG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgaW1hZ2UgaXMgcHVibGljLiBEbyBub3QgY2hlY2sgZGF0YTppbWFnZSB1cmxzXG5cdFx0XHQvLyBVc2UgdGhlIGJhY2tlbmQgdG8gY2hlY2sgaWYgdGhlIGltYWdlIGlzIHB1YmxpY1xuXHRcdFx0Ly8gRHVlIHRvIENTUCBhbmQgb3RoZXIgc2VjdXJpdHkgbWVhc3VyZXMsIHdlIGNhbid0IGNoZWNrIHRoaXMgaW4gdGhlIGZyb250ZW5kXG5cblx0XHRcdC8vIHV1aWR2NSBpcyBhIGRldGVybWluaXN0aWMgdXVpZCBnZW5lcmF0b3IgYmFzZWQgb24gYSBuYW1lc3BhY2UgYW5kIGEgbmFtZVxuXHRcdFx0Ly8gdXVpZHY1LlVSTCBpcyB0aGUgbmFtZXNwYWNlIGZvciB1cmxzXG5cdFx0XHRjb25zdCBob29rSWQgPSB1dWlkdjUob3AuaW5zZXJ0LmltYWdlLnNyYywgdXVpZHY1LlVSTClcblx0XHRcdG5vU3RvcmVIb29rcy5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGhvb2tJZCwgKGRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IEZldGNoRXJyb3JEYXRhIHwgbnVsbCkgPT4ge1xuXHRcdFx0XHRub1N0b3JlSG9va3MudW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKGhvb2tJZClcblx0XHRcdFx0bGV0IGNvbnRlbnRUeXBlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIEFQSSBmZXRjaGVzIHRoZSBVUkwsIGFuZCBgbm9TdG9yZVNhZ2FgIHJldHVybnMgZWl0aGVyIHRoZSByZXN1bHQgb3IgZXJyb3Jcblx0XHRcdFx0ICogKiBgZGF0YWAgaXMgYG51bGxgIHdoZW4gdGhlIEFQSSBjb3VsZCBub3QgZmV0Y2ggdGhlIFVSTCB3aXRoIGEgc3VjY2Vzc2Z1bCBzdGF0dXMgY29kZSwgYW5kIHJldHVybnMgYG51bGxgID0+IGBub25QdWJsaWNgXG5cdFx0XHRcdCAqICogYGRhdGFgIGlzIGBGZXRjaEVycm9yRGF0YWAgaWYgdGhlIEFQSSByZXF1ZXN0IGl0c2VsZiBmYWlsZWQsIGUuZy4gZnJvbSBzb21lIHVua25vd24gZXJyb3IsIHdlIGRvbid0IGtub3cgaWYgdGhlIGltYWdlIGlzIHB1YmxpYyA9PiBkbyBub3QgdXBkYXRlXG5cdFx0XHRcdCAqICogYGRhdGFgIGlzIGEgZGljdGlvbmFyeSBvZiBoZWFkZXJzIHdoZW4gdGhlIEFQSSBkb2VzIGZldGNoIHRoZSBVUkxcblx0XHRcdFx0ICogICAqIGlmIHRoZXJlIGlzIG5vIGBDb250ZW50LVR5cGVgIGhlYWRlciwgd2UgZG9uJ3Qga25vdyBpZiB0aGUgaW1hZ2UgaXMgcHVibGljID0+IGRvIG5vdCB1cGRhdGVcblx0XHRcdFx0ICogICAqIGlmIHRoZXJlIGlzIGEgYENvbnRlbnQtVHlwZWAgaGVhZGVyLCBidXQgaXMgTk9UIGFuIGltYWdlIHR5cGUgKGkuZS4gaXQgd2FzIGEgMzAyIHRoYXQsIHdoZW4gZm9sbG93ZWQgcmV0dXJuZWQgSFRNTClcblx0XHRcdFx0ICogICAgIChJJ20gbG9va2luZyBhdCB5b3UsIEJyaWdodHNwYWNlKSA9PiBgbm9uUHVibGljYFxuXHRcdFx0XHQgKiAgICogaWYgdGhlcmUgaXMgYSBgQ29udGVudC1UeXBlYCBoZWFkZXIsIGFuZCBpdCBpcyBhbiBpbWFnZSB0eXBlLCB0aGVuIHRoZSBpbWFnZSBpcyBwdWJsaWMgPT4gZG8gbm90IHVwZGF0ZVxuXHRcdFx0XHQgKi9cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFkYXRhIHx8XG5cdFx0XHRcdFx0KCFpc0ZldGNoRXJyb3JEYXRhKGRhdGEpICYmXG5cdFx0XHRcdFx0XHQoY29udGVudFR5cGVLZXkgPSBPYmplY3Qua2V5cyhkYXRhKS5maW5kKGsgPT4gay50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykpICYmXG5cdFx0XHRcdFx0XHQhZGF0YVtjb250ZW50VHlwZUtleV1bMF0uc3RhcnRzV2l0aCgnaW1hZ2UnKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgY29udGVudHMgPSBxdWlsbC5nZXRDb250ZW50cygpXG5cdFx0XHRcdFx0Y29uc3Qgb3BzID0gY29udGVudHMubWFwKChvOiBEZWx0YU9wZXJhdGlvbikgPT5cblx0XHRcdFx0XHRcdG8uaW5zZXJ0LmltYWdlPy5zcmMgJiYgb3AuaW5zZXJ0LmltYWdlLnNyYyAmJiBvLmluc2VydC5pbWFnZS5zcmMgPT09IG9wLmluc2VydC5pbWFnZS5zcmNcblx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0XHQuLi5vLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC4uLm8uaW5zZXJ0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbWFnZTogeyAuLi5vLmluc2VydC5pbWFnZSwgbm9uUHVibGljOiB0cnVlIH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogb1xuXHRcdFx0XHRcdClcblx0XHRcdFx0XHRjb25zdCB1cGRhdGVkQ29udGVudHMgPSBjb250ZW50cy5kaWZmKG5ldyBEZWx0YShvcHMpKVxuXHRcdFx0XHRcdHF1aWxsLnVwZGF0ZUNvbnRlbnRzKHVwZGF0ZWRDb250ZW50cylcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8vIFRoaXMgZW5kcG9pbnQgcmV0dXJucyBoZWFkZXJzIGZvciBhIHVybC4gSWYgdGhlIHVybCBpcyBub25leGlzdGVudCwgaXQgd2lsbCByZXR1cm4gbnVsbFxuXHRcdFx0ZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCh7XG5cdFx0XHRcdG1vZGVsTmFtZTogJ3VybENoZWNrZXInLFxuXHRcdFx0XHRndWlkOiBob29rSWQsXG5cdFx0XHRcdG5vU3RvcmU6IHRydWUsXG5cdFx0XHRcdHF1ZXJ5UGFyYW1zOiB7XG5cdFx0XHRcdFx0dXJsOiBvcC5pbnNlcnQuaW1hZ2Uuc3JjXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxNQUEwQixPQUFPO0FBQzdDLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFFbkMsU0FBU0MseUJBQXlCLFFBQVEsd0JBQXdCO0FBQ2xFLFNBQVNDLFlBQVksUUFBUSw0QkFBNEI7QUFFekQsU0FBU0MsZ0JBQWdCLFFBQVEsU0FBUztBQUUxQyxNQUFNQyxLQUFLLEdBQUdOLEtBQUssQ0FBQ08sTUFBTSxDQUFDLE9BQU8sQ0FBQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU1DLHVCQUF1QixHQUFHQSxDQUFDQyxLQUFZLEVBQUVDLGFBQTJCLEtBQUs7RUFDckZELEtBQUssQ0FDSEUsV0FBVyxDQUFDLENBQUMsQ0FDYkMsR0FBRyxDQUFDO0VBQUEsRUFDSEMsTUFBTSxDQUNQQyxFQUFFLElBQ0RBLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLElBQ2YsQ0FBQ04sYUFBYSxDQUFDTyxJQUFJLENBQUNELEtBQUssSUFBSUEsS0FBSyxDQUFDRSxHQUFHLEtBQUtKLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsQ0FBQyxJQUMvREosRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0UsR0FBRyxDQUFDQyxVQUFVLENBQUMsTUFBTSxDQUN2QyxDQUFDLENBQ0FDLE9BQU8sQ0FBQ04sRUFBRSxJQUFJO0lBQ2Q7SUFDQTtJQUNBOztJQUVBO0lBQ0E7SUFDQSxNQUFNTyxNQUFNLEdBQUduQixNQUFNLENBQUNZLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsRUFBRWhCLE1BQU0sQ0FBQ29CLEdBQUcsQ0FBQztJQUN0RGxCLFlBQVksQ0FBQ21CLHlCQUF5QixDQUFDRixNQUFNLEVBQUdHLElBQXNELElBQUs7TUFDMUdwQixZQUFZLENBQUNxQiwyQkFBMkIsQ0FBQ0osTUFBTSxDQUFDO01BQ2hELElBQUlLLGNBQWtDO01BQ3RDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BQ0ksSUFDQyxDQUFDRixJQUFJLElBQ0osQ0FBQ25CLGdCQUFnQixDQUFDbUIsSUFBSSxDQUFDLEtBQ3RCRSxjQUFjLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixJQUFJLENBQUMsQ0FBQ1AsSUFBSSxDQUFDWSxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQyxJQUNsRixDQUFDTixJQUFJLENBQUNFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDUCxVQUFVLENBQUMsT0FBTyxDQUFFLEVBQzdDO1FBQ0QsTUFBTVksUUFBUSxHQUFHdEIsS0FBSyxDQUFDRSxXQUFXLENBQUMsQ0FBQztRQUNwQyxNQUFNQyxHQUFHLEdBQUdtQixRQUFRLENBQUNDLEdBQUcsQ0FBRUMsQ0FBaUIsSUFDMUNBLENBQUMsQ0FBQ2xCLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFRSxHQUFHLElBQUlKLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsSUFBSWUsQ0FBQyxDQUFDbEIsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsS0FBS0osRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0UsR0FBRyxHQUNyRjtVQUNBLEdBQUdlLENBQUM7VUFDSmxCLE1BQU0sRUFBRTtZQUNQLEdBQUdrQixDQUFDLENBQUNsQixNQUFNO1lBQ1hDLEtBQUssRUFBRTtjQUFFLEdBQUdpQixDQUFDLENBQUNsQixNQUFNLENBQUNDLEtBQUs7Y0FBRWtCLFNBQVMsRUFBRTtZQUFLO1VBQzdDO1FBQ0QsQ0FBQyxHQUNBRCxDQUNKLENBQUM7UUFDRCxNQUFNRSxlQUFlLEdBQUdKLFFBQVEsQ0FBQ0ssSUFBSSxDQUFDLElBQUk5QixLQUFLLENBQUNNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JESCxLQUFLLENBQUM0QixjQUFjLENBQUNGLGVBQWUsQ0FBQztNQUN0QztJQUNELENBQUMsQ0FBQztJQUNGO0lBQ0FoQyx5QkFBeUIsQ0FBQztNQUN6Qm1DLFNBQVMsRUFBRSxZQUFZO01BQ3ZCQyxJQUFJLEVBQUVsQixNQUFNO01BQ1ptQixPQUFPLEVBQUUsSUFBSTtNQUNiQyxXQUFXLEVBQUU7UUFDWkMsR0FBRyxFQUFFNUIsRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0U7TUFDdEI7SUFDRCxDQUFDLENBQUM7RUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIiwiaWdub3JlTGlzdCI6W119