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,67 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReduxModelName = exports.getMinRequiredPathParamsCount = exports.getPathParamsFromRouteMatchParams = exports.getModelIdFromRouteMatchParams = void 0;
4
- const tslib_1 = require("tslib");
5
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
- const pluralize_1 = tslib_1.__importDefault(require("pluralize"));
7
- const configuration_1 = require("../constants/configuration");
8
- const getModelIdFromRouteMatchParams = (routeMatchParams, modelName) => {
9
- const singularModelName = pluralize_1.default.singular(modelName);
10
- const id = routeMatchParams[`${singularModelName}Id`];
11
- if (!id || isNaN(Number(id))) {
12
- return id;
1
+ import _ from 'lodash';
2
+ import pluralize from 'pluralize';
3
+ import { getEndpointMappings } from '../constants/configuration';
4
+ export const getModelIdFromRouteMatchParams = (routeMatchParams, modelName) => {
5
+ const singularModelName = pluralize.singular(modelName);
6
+ const id = routeMatchParams[`${singularModelName}Id`];
7
+ if (!id || isNaN(Number(id))) {
8
+ return id;
9
+ }
10
+ return parseInt(id, 10);
11
+ };
12
+ export const getPathParamsFromRouteMatchParams = (routeMatchParams, modelName) => {
13
+ const pathParams = modelName.split('.').reduce((retval, levelName) => {
14
+ const levelId = getModelIdFromRouteMatchParams(routeMatchParams, levelName);
15
+ if (levelId) {
16
+ retval.push(levelId);
13
17
  }
14
- return parseInt(id, 10);
18
+ return retval;
19
+ }, []);
20
+ return pathParams;
15
21
  };
16
- exports.getModelIdFromRouteMatchParams = getModelIdFromRouteMatchParams;
17
- const getPathParamsFromRouteMatchParams = (routeMatchParams, modelName) => {
18
- const pathParams = modelName.split('.').reduce((retval, levelName) => {
19
- const levelId = (0, exports.getModelIdFromRouteMatchParams)(routeMatchParams, levelName);
20
- if (levelId) {
21
- retval.push(levelId);
22
- }
23
- return retval;
24
- }, []);
25
- return pathParams;
22
+ export const getMinRequiredPathParamsCount = modelName => {
23
+ const endpointMappings = getEndpointMappings();
24
+ let pathParamCount = 0;
25
+ const modelLevelNames = modelName.split('.');
26
+ modelLevelNames.forEach((levelName, index) => {
27
+ const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
28
+ const modelLevel = modelLevelName ? _.get(endpointMappings, modelLevelName) : {};
29
+ const modelConfig = _.merge({}, modelLevel._config);
30
+ if (modelConfig.isCollection && index + 1 < modelLevelNames.length) {
31
+ pathParamCount++;
32
+ }
33
+ });
34
+ return pathParamCount;
26
35
  };
27
- exports.getPathParamsFromRouteMatchParams = getPathParamsFromRouteMatchParams;
28
- const getMinRequiredPathParamsCount = (modelName) => {
29
- const endpointMappings = (0, configuration_1.getEndpointMappings)();
30
- let pathParamCount = 0;
36
+ export const getReduxModelName = (pathParams, modelName) => {
37
+ const endpointMappings = getEndpointMappings();
38
+ let reduxModelName = modelName;
39
+ if (pathParams.length > 0) {
40
+ let pathParamIndex = 0;
31
41
  const modelLevelNames = modelName.split('.');
32
42
  modelLevelNames.forEach((levelName, index) => {
33
- const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
34
- const modelLevel = modelLevelName ? lodash_1.default.get(endpointMappings, modelLevelName) : {};
35
- const modelConfig = lodash_1.default.merge({}, modelLevel._config);
36
- if (modelConfig.isCollection && index + 1 < modelLevelNames.length) {
37
- pathParamCount++;
38
- }
43
+ const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
44
+ const modelLevel = modelLevelName ? _.get(endpointMappings, modelLevelName) : {};
45
+ const modelConfig = _.merge({}, modelLevel._config);
46
+ if (index === 0) {
47
+ reduxModelName = levelName;
48
+ } else {
49
+ reduxModelName = `${reduxModelName}.${levelName}`;
50
+ }
51
+ if (pathParams.length - 1 >= pathParamIndex && modelConfig.isCollection) {
52
+ reduxModelName = `${reduxModelName}.${pathParams[pathParamIndex]}`;
53
+ pathParamIndex++;
54
+ }
39
55
  });
40
- return pathParamCount;
41
- };
42
- exports.getMinRequiredPathParamsCount = getMinRequiredPathParamsCount;
43
- const getReduxModelName = (pathParams, modelName) => {
44
- const endpointMappings = (0, configuration_1.getEndpointMappings)();
45
- let reduxModelName = modelName;
46
- if (pathParams.length > 0) {
47
- let pathParamIndex = 0;
48
- const modelLevelNames = modelName.split('.');
49
- modelLevelNames.forEach((levelName, index) => {
50
- const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
51
- const modelLevel = modelLevelName ? lodash_1.default.get(endpointMappings, modelLevelName) : {};
52
- const modelConfig = lodash_1.default.merge({}, modelLevel._config);
53
- if (index === 0) {
54
- reduxModelName = levelName;
55
- }
56
- else {
57
- reduxModelName = `${reduxModelName}.${levelName}`;
58
- }
59
- if (pathParams.length - 1 >= pathParamIndex && modelConfig.isCollection) {
60
- reduxModelName = `${reduxModelName}.${pathParams[pathParamIndex]}`;
61
- pathParamIndex++;
62
- }
63
- });
64
- }
65
- return reduxModelName;
56
+ }
57
+ return reduxModelName;
66
58
  };
67
- exports.getReduxModelName = getReduxModelName;
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfIiwicGx1cmFsaXplIiwiZ2V0RW5kcG9pbnRNYXBwaW5ncyIsImdldE1vZGVsSWRGcm9tUm91dGVNYXRjaFBhcmFtcyIsInJvdXRlTWF0Y2hQYXJhbXMiLCJtb2RlbE5hbWUiLCJzaW5ndWxhck1vZGVsTmFtZSIsInNpbmd1bGFyIiwiaWQiLCJpc05hTiIsIk51bWJlciIsInBhcnNlSW50IiwiZ2V0UGF0aFBhcmFtc0Zyb21Sb3V0ZU1hdGNoUGFyYW1zIiwicGF0aFBhcmFtcyIsInNwbGl0IiwicmVkdWNlIiwicmV0dmFsIiwibGV2ZWxOYW1lIiwibGV2ZWxJZCIsInB1c2giLCJnZXRNaW5SZXF1aXJlZFBhdGhQYXJhbXNDb3VudCIsImVuZHBvaW50TWFwcGluZ3MiLCJwYXRoUGFyYW1Db3VudCIsIm1vZGVsTGV2ZWxOYW1lcyIsImZvckVhY2giLCJpbmRleCIsIm1vZGVsTGV2ZWxOYW1lIiwic2xpY2UiLCJqb2luIiwibW9kZWxMZXZlbCIsImdldCIsIm1vZGVsQ29uZmlnIiwibWVyZ2UiLCJfY29uZmlnIiwiaXNDb2xsZWN0aW9uIiwibGVuZ3RoIiwiZ2V0UmVkdXhNb2RlbE5hbWUiLCJyZWR1eE1vZGVsTmFtZSIsInBhdGhQYXJhbUluZGV4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JvdXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfLCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgcGx1cmFsaXplIGZyb20gJ3BsdXJhbGl6ZSdcbmltcG9ydCB7IGdldEVuZHBvaW50TWFwcGluZ3MgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlndXJhdGlvbidcblxuZXhwb3J0IGNvbnN0IGdldE1vZGVsSWRGcm9tUm91dGVNYXRjaFBhcmFtcyA9IChyb3V0ZU1hdGNoUGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4sIG1vZGVsTmFtZTogc3RyaW5nKSA9PiB7XG5cdGNvbnN0IHNpbmd1bGFyTW9kZWxOYW1lID0gcGx1cmFsaXplLnNpbmd1bGFyKG1vZGVsTmFtZSlcblx0Y29uc3QgaWQgPSByb3V0ZU1hdGNoUGFyYW1zW2Ake3Npbmd1bGFyTW9kZWxOYW1lfUlkYF0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG5cdGlmICghaWQgfHwgaXNOYU4oTnVtYmVyKGlkKSkpIHtcblx0XHRyZXR1cm4gaWRcblx0fVxuXHRyZXR1cm4gcGFyc2VJbnQoaWQsIDEwKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0UGF0aFBhcmFtc0Zyb21Sb3V0ZU1hdGNoUGFyYW1zID0gKHJvdXRlTWF0Y2hQYXJhbXM6IERpY3Rpb25hcnk8c3RyaW5nPiwgbW9kZWxOYW1lOiBzdHJpbmcpID0+IHtcblx0Y29uc3QgcGF0aFBhcmFtcyA9IG1vZGVsTmFtZS5zcGxpdCgnLicpLnJlZHVjZSgocmV0dmFsOiBhbnlbXSwgbGV2ZWxOYW1lKSA9PiB7XG5cdFx0Y29uc3QgbGV2ZWxJZCA9IGdldE1vZGVsSWRGcm9tUm91dGVNYXRjaFBhcmFtcyhyb3V0ZU1hdGNoUGFyYW1zLCBsZXZlbE5hbWUpXG5cdFx0aWYgKGxldmVsSWQpIHtcblx0XHRcdHJldHZhbC5wdXNoKGxldmVsSWQpXG5cdFx0fVxuXHRcdHJldHVybiByZXR2YWxcblx0fSwgW10pXG5cdHJldHVybiBwYXRoUGFyYW1zXG59XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5SZXF1aXJlZFBhdGhQYXJhbXNDb3VudCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4ge1xuXHRjb25zdCBlbmRwb2ludE1hcHBpbmdzID0gZ2V0RW5kcG9pbnRNYXBwaW5ncygpXG5cdGxldCBwYXRoUGFyYW1Db3VudCA9IDBcblx0Y29uc3QgbW9kZWxMZXZlbE5hbWVzID0gbW9kZWxOYW1lLnNwbGl0KCcuJylcblx0bW9kZWxMZXZlbE5hbWVzLmZvckVhY2goKGxldmVsTmFtZSwgaW5kZXgpID0+IHtcblx0XHRjb25zdCBtb2RlbExldmVsTmFtZSA9IG1vZGVsTGV2ZWxOYW1lcy5zbGljZSgwLCBpbmRleCArIDEpLmpvaW4oJy4nKVxuXHRcdGNvbnN0IG1vZGVsTGV2ZWwgPSBtb2RlbExldmVsTmFtZSA/IF8uZ2V0KGVuZHBvaW50TWFwcGluZ3MsIG1vZGVsTGV2ZWxOYW1lKSA6IHt9XG5cdFx0Y29uc3QgbW9kZWxDb25maWcgPSBfLm1lcmdlKHt9LCBtb2RlbExldmVsLl9jb25maWcpXG5cdFx0aWYgKG1vZGVsQ29uZmlnLmlzQ29sbGVjdGlvbiAmJiBpbmRleCArIDEgPCBtb2RlbExldmVsTmFtZXMubGVuZ3RoKSB7XG5cdFx0XHRwYXRoUGFyYW1Db3VudCsrXG5cdFx0fVxuXHR9KVxuXHRyZXR1cm4gcGF0aFBhcmFtQ291bnRcbn1cblxuZXhwb3J0IGNvbnN0IGdldFJlZHV4TW9kZWxOYW1lID0gKHBhdGhQYXJhbXM6IGFueVtdLCBtb2RlbE5hbWU6IHN0cmluZykgPT4ge1xuXHRjb25zdCBlbmRwb2ludE1hcHBpbmdzID0gZ2V0RW5kcG9pbnRNYXBwaW5ncygpXG5cdGxldCByZWR1eE1vZGVsTmFtZSA9IG1vZGVsTmFtZVxuXHRpZiAocGF0aFBhcmFtcy5sZW5ndGggPiAwKSB7XG5cdFx0bGV0IHBhdGhQYXJhbUluZGV4ID0gMFxuXHRcdGNvbnN0IG1vZGVsTGV2ZWxOYW1lcyA9IG1vZGVsTmFtZS5zcGxpdCgnLicpXG5cdFx0bW9kZWxMZXZlbE5hbWVzLmZvckVhY2goKGxldmVsTmFtZSwgaW5kZXgpID0+IHtcblx0XHRcdGNvbnN0IG1vZGVsTGV2ZWxOYW1lID0gbW9kZWxMZXZlbE5hbWVzLnNsaWNlKDAsIGluZGV4ICsgMSkuam9pbignLicpXG5cdFx0XHRjb25zdCBtb2RlbExldmVsID0gbW9kZWxMZXZlbE5hbWUgPyBfLmdldChlbmRwb2ludE1hcHBpbmdzLCBtb2RlbExldmVsTmFtZSkgOiB7fVxuXHRcdFx0Y29uc3QgbW9kZWxDb25maWcgPSBfLm1lcmdlKHt9LCBtb2RlbExldmVsLl9jb25maWcpXG5cdFx0XHRpZiAoaW5kZXggPT09IDApIHtcblx0XHRcdFx0cmVkdXhNb2RlbE5hbWUgPSBsZXZlbE5hbWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlZHV4TW9kZWxOYW1lID0gYCR7cmVkdXhNb2RlbE5hbWV9LiR7bGV2ZWxOYW1lfWBcblx0XHRcdH1cblx0XHRcdGlmIChwYXRoUGFyYW1zLmxlbmd0aCAtIDEgPj0gcGF0aFBhcmFtSW5kZXggJiYgbW9kZWxDb25maWcuaXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRcdHJlZHV4TW9kZWxOYW1lID0gYCR7cmVkdXhNb2RlbE5hbWV9LiR7cGF0aFBhcmFtc1twYXRoUGFyYW1JbmRleF19YFxuXHRcdFx0XHRwYXRoUGFyYW1JbmRleCsrXG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHRyZXR1cm4gcmVkdXhNb2RlbE5hbWVcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsQ0FBQyxNQUFzQixRQUFRO0FBQ3RDLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLFNBQVNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUVoRSxPQUFPLE1BQU1DLDhCQUE4QixHQUFHQSxDQUFDQyxnQkFBb0MsRUFBRUMsU0FBaUIsS0FBSztFQUMxRyxNQUFNQyxpQkFBaUIsR0FBR0wsU0FBUyxDQUFDTSxRQUFRLENBQUNGLFNBQVMsQ0FBQztFQUN2RCxNQUFNRyxFQUFFLEdBQUdKLGdCQUFnQixDQUFDLEdBQUdFLGlCQUFpQixJQUFJLENBQXVCO0VBQzNFLElBQUksQ0FBQ0UsRUFBRSxJQUFJQyxLQUFLLENBQUNDLE1BQU0sQ0FBQ0YsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM3QixPQUFPQSxFQUFFO0VBQ1Y7RUFDQSxPQUFPRyxRQUFRLENBQUNILEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVELE9BQU8sTUFBTUksaUNBQWlDLEdBQUdBLENBQUNSLGdCQUFvQyxFQUFFQyxTQUFpQixLQUFLO0VBQzdHLE1BQU1RLFVBQVUsR0FBR1IsU0FBUyxDQUFDUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxNQUFhLEVBQUVDLFNBQVMsS0FBSztJQUM1RSxNQUFN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
@@ -1,93 +1,78 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.searchGroups = exports.searchEntities = exports.isEntityMatchedByKeywords = exports.isEntityMatchedByKeyword = exports.isEntityUserMatchedByKeyword = exports.getKeywordsList = void 0;
4
- const table_1 = require("../constants/table");
5
- const date_1 = require("./date");
6
- const groupDates_1 = require("./groupDates");
7
- const groupRoles_1 = require("./groupRoles");
8
- const getKeywordsList = (keywords) => {
9
- if (!keywords)
10
- return [];
11
- return keywords
12
- .trim()
13
- .toLowerCase()
14
- .split(' ')
15
- .filter(k => !!k);
1
+ import { GROUP_MANAGE_TABLE_TAB, MANAGE_TABLE_TAB } from '../constants/table';
2
+ import { getLocalMomentFromUtc, isNowBeforeDate } from './date';
3
+ import { getEndDate, getStartDate } from './groupDates';
4
+ import { groupsAsAnythingButLearner } from './groupRoles';
5
+ export const getKeywordsList = keywords => {
6
+ if (!keywords) return [];
7
+ return keywords.trim().toLowerCase().split(' ').filter(k => !!k);
16
8
  };
17
- exports.getKeywordsList = getKeywordsList;
18
- const isEntityUserMatchedByKeyword = (owner, keyword) => {
19
- var _a, _b, _c, _d;
20
- return owner.id.toLowerCase().includes(keyword) ||
21
- !!((_a = owner.firstName) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(keyword)) ||
22
- !!((_b = owner.lastName) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase().includes(keyword)) ||
23
- !!((_c = owner.email) === null || _c === void 0 ? void 0 : _c.toString().toLowerCase().includes(keyword)) ||
24
- !!((_d = owner.uid) === null || _d === void 0 ? void 0 : _d.toString().toLowerCase().includes(keyword));
9
+ export const isEntityUserMatchedByKeyword = (owner, keyword) => owner.id.toLowerCase().includes(keyword) || !!owner.firstName?.toLowerCase().includes(keyword) || !!owner.lastName?.toString().toLowerCase().includes(keyword) || !!owner.email?.toString().toLowerCase().includes(keyword) || !!owner.uid?.toString().toLowerCase().includes(keyword);
10
+ export const isEntityMatchedByKeyword = (entity, keyword) => entity.id.toString().toLowerCase().includes(keyword) || entity.name.toLowerCase().includes(keyword) || entity.owners.some(owner => isEntityUserMatchedByKeyword(owner, keyword));
11
+ export const isEntityMatchedByKeywords = (entity, keywordsList) => keywordsList.length === 0 || keywordsList.every(k => isEntityMatchedByKeyword(entity, k));
12
+ export const searchEntities = (entityArray, entityMatchFunction, readActivity, canReadAnyGlobally, keywords) => {
13
+ const keywordsList = getKeywordsList(keywords);
14
+ const filteredEntities = entityArray.reduce((acc, e) => {
15
+ // exclude if cannot read any entity and does not have the read activity
16
+ if (!canReadAnyGlobally && !e.activities.includes(readActivity)) return acc;
17
+ // exclude if does not match, if any
18
+ if (!entityMatchFunction(e, keywordsList)) return acc;
19
+ // add entity to the corresponding tab filtered array
20
+ const tab = e.isDeleted ? MANAGE_TABLE_TAB.DELETED : MANAGE_TABLE_TAB.AVAILABLE;
21
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
22
+ const tabArray = acc[tab] ?? [];
23
+ tabArray.push(e);
24
+ acc[tab] = tabArray;
25
+ return acc;
26
+ }, {
27
+ [MANAGE_TABLE_TAB.AVAILABLE]: [],
28
+ [MANAGE_TABLE_TAB.DELETED]: []
29
+ });
30
+ return filteredEntities;
25
31
  };
26
- exports.isEntityUserMatchedByKeyword = isEntityUserMatchedByKeyword;
27
- const isEntityMatchedByKeyword = (entity, keyword) => entity.id.toString().toLowerCase().includes(keyword) ||
28
- entity.name.toLowerCase().includes(keyword) ||
29
- entity.owners.some(owner => (0, exports.isEntityUserMatchedByKeyword)(owner, keyword));
30
- exports.isEntityMatchedByKeyword = isEntityMatchedByKeyword;
31
- const isEntityMatchedByKeywords = (entity, keywordsList) => keywordsList.length === 0 || keywordsList.every(k => (0, exports.isEntityMatchedByKeyword)(entity, k));
32
- exports.isEntityMatchedByKeywords = isEntityMatchedByKeywords;
33
- const searchEntities = (entityArray, entityMatchFunction, readActivity, canReadAnyGlobally, keywords) => {
34
- const keywordsList = (0, exports.getKeywordsList)(keywords);
35
- const filteredEntities = entityArray.reduce((acc, e) => {
36
- var _a;
37
- // exclude if cannot read any entity and does not have the read activity
38
- if (!canReadAnyGlobally && !e.activities.includes(readActivity))
39
- return acc;
40
- // exclude if does not match, if any
41
- if (!entityMatchFunction(e, keywordsList))
42
- return acc;
43
- // add entity to the corresponding tab filtered array
44
- const tab = e.isDeleted ? table_1.MANAGE_TABLE_TAB.DELETED : table_1.MANAGE_TABLE_TAB.AVAILABLE;
45
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
46
- const tabArray = (_a = acc[tab]) !== null && _a !== void 0 ? _a : [];
47
- tabArray.push(e);
48
- acc[tab] = tabArray;
49
- return acc;
50
- }, { [table_1.MANAGE_TABLE_TAB.AVAILABLE]: [], [table_1.MANAGE_TABLE_TAB.DELETED]: [] });
51
- return filteredEntities;
52
- };
53
- exports.searchEntities = searchEntities;
32
+
33
+ //#region Groups
34
+
54
35
  const getGroupTab = (group, endDate) => {
55
- if (group.isDeleted) {
56
- return table_1.GROUP_MANAGE_TABLE_TAB.DELETED;
57
- }
58
- else if (!!group.id && (0, date_1.isNowBeforeDate)(endDate)) {
59
- return table_1.GROUP_MANAGE_TABLE_TAB.CURRENT;
60
- }
61
- return table_1.GROUP_MANAGE_TABLE_TAB.PAST;
36
+ if (group.isDeleted) {
37
+ return GROUP_MANAGE_TABLE_TAB.DELETED;
38
+ } else if (!!group.id && isNowBeforeDate(endDate)) {
39
+ return GROUP_MANAGE_TABLE_TAB.CURRENT;
40
+ }
41
+ return GROUP_MANAGE_TABLE_TAB.PAST;
62
42
  };
63
- const searchGroups = ({ groups, modelArray: groupsArray, externalTerms, canReadyAnyGlobally, keywords, dateString }) => {
64
- const keywordsList = (0, exports.getKeywordsList)(keywords);
65
- const visibleGroups = canReadyAnyGlobally ? groupsArray : (0, groupRoles_1.groupsAsAnythingButLearner)(groups);
66
- const filteredGroups = visibleGroups.reduce((acc, g) => {
67
- var _a;
68
- // exclude if does not match keywords, if any
69
- if (!(0, exports.isEntityMatchedByKeywords)(g, keywordsList))
70
- return acc;
71
- const startDate = (0, groupDates_1.getStartDate)(externalTerms, g);
72
- const endDate = (0, groupDates_1.getEndDate)(externalTerms, g);
73
- // exclude if search dateString is not between group start and end dates
74
- if (!!dateString &&
75
- ((0, date_1.getLocalMomentFromUtc)(dateString) < (0, date_1.getLocalMomentFromUtc)(startDate) ||
76
- (0, date_1.getLocalMomentFromUtc)(dateString) > (0, date_1.getLocalMomentFromUtc)(endDate))) {
77
- return acc;
78
- }
79
- const tab = getGroupTab(g, endDate);
80
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
81
- const tabArray = (_a = acc[tab]) !== null && _a !== void 0 ? _a : [];
82
- tabArray.push(g);
83
- acc[tab] = tabArray;
84
- return acc;
85
- }, {
86
- [table_1.GROUP_MANAGE_TABLE_TAB.CURRENT]: [],
87
- [table_1.GROUP_MANAGE_TABLE_TAB.PAST]: [],
88
- [table_1.GROUP_MANAGE_TABLE_TAB.DELETED]: []
89
- });
90
- return filteredGroups;
43
+ export const searchGroups = _ref => {
44
+ let {
45
+ groups,
46
+ modelArray: groupsArray,
47
+ externalTerms,
48
+ canReadyAnyGlobally,
49
+ keywords,
50
+ dateString
51
+ } = _ref;
52
+ const keywordsList = getKeywordsList(keywords);
53
+ const visibleGroups = canReadyAnyGlobally ? groupsArray : groupsAsAnythingButLearner(groups);
54
+ const filteredGroups = visibleGroups.reduce((acc, g) => {
55
+ // exclude if does not match keywords, if any
56
+ if (!isEntityMatchedByKeywords(g, keywordsList)) return acc;
57
+ const startDate = getStartDate(externalTerms, g);
58
+ const endDate = getEndDate(externalTerms, g);
59
+ // exclude if search dateString is not between group start and end dates
60
+ if (!!dateString && (getLocalMomentFromUtc(dateString) < getLocalMomentFromUtc(startDate) || getLocalMomentFromUtc(dateString) > getLocalMomentFromUtc(endDate))) {
61
+ return acc;
62
+ }
63
+ const tab = getGroupTab(g, endDate);
64
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
65
+ const tabArray = acc[tab] ?? [];
66
+ tabArray.push(g);
67
+ acc[tab] = tabArray;
68
+ return acc;
69
+ }, {
70
+ [GROUP_MANAGE_TABLE_TAB.CURRENT]: [],
71
+ [GROUP_MANAGE_TABLE_TAB.PAST]: [],
72
+ [GROUP_MANAGE_TABLE_TAB.DELETED]: []
73
+ });
74
+ return filteredGroups;
91
75
  };
92
- exports.searchGroups = searchGroups;
76
+
93
77
  //#endregion Groups
78
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHUk9VUF9NQU5BR0VfVEFCTEVfVEFCIiwiTUFOQUdFX1RBQkxFX1RBQiIsImdldExvY2FsTW9tZW50RnJvbVV0YyIsImlzTm93QmVmb3JlRGF0ZSIsImdldEVuZERhdGUiLCJnZXRTdGFydERhdGUiLCJncm91cHNBc0FueXRoaW5nQnV0TGVhcm5lciIsImdldEtleXdvcmRzTGlzdCIsImtleXdvcmRzIiwidHJpbSIsInRvTG93ZXJDYXNlIiwic3BsaXQiLCJmaWx0ZXIiLCJrIiwiaXNFbnRpdHlVc2VyTWF0Y2hlZEJ5S2V5d29yZCIsIm93bmVyIiwia2V5d29yZCIsImlkIiwiaW5jbHVkZXMiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInRvU3RyaW5nIiwiZW1haWwiLCJ1aWQiLCJpc0VudGl0eU1hdGNoZWRCeUtleXdvcmQiLCJlbnRpdHkiLCJuYW1lIiwib3duZXJzIiwic29tZSIsImlzRW50aXR5TWF0Y2hlZEJ5S2V5d29yZHMiLCJrZXl3b3Jkc0xpc3QiLCJsZW5ndGgiLCJldmVyeSIsInNlYXJjaEVudGl0aWVzIiwiZW50aXR5QXJyYXkiLCJlbnRpdHlNYXRjaEZ1bmN0aW9uIiwicmVhZEFjdGl2aXR5IiwiY2FuUmVhZEFueUdsb2JhbGx5IiwiZmlsdGVyZWRFbnRpdGllcyIsInJlZHVjZSIsImFjYyIsImUiLCJhY3Rpdml0aWVzIiwidGFiIiwiaXNEZWxldGVkIiwiREVMRVRFRCIsIkFWQUlMQUJMRSIsInRhYkFycmF5IiwicHVzaCIsImdldEdyb3VwVGFiIiwiZ3JvdXAiLCJlbmREYXRlIiwiQ1VSUkVOVCIsIlBBU1QiLCJzZWFyY2hHcm91cHMiLCJfcmVmIiwiZ3JvdXBzIiwibW9kZWxBcnJheSIsImdyb3Vwc0FycmF5IiwiZXh0ZXJuYWxUZXJtcyIsImNhblJlYWR5QW55R2xvYmFsbHkiLCJkYXRlU3RyaW5nIiwidmlzaWJsZUdyb3VwcyIsImZpbHRlcmVkR3JvdXBzIiwiZyIsInN0YXJ0RGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR1JPVVBfTUFOQUdFX1RBQkxFX1RBQiwgTUFOQUdFX1RBQkxFX1RBQiB9IGZyb20gJy4uL2NvbnN0YW50cy90YWJsZSdcbmltcG9ydCB7IEVudGl0eVVzZXIsIEV4dGVybmFsVGVybSwgR3JvdXAsIE1vZGVsQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0TG9jYWxNb21lbnRGcm9tVXRjLCBpc05vd0JlZm9yZURhdGUgfSBmcm9tICcuL2RhdGUnXG5pbXBvcnQgeyBnZXRFbmREYXRlLCBnZXRTdGFydERhdGUgfSBmcm9tICcuL2dyb3VwRGF0ZXMnXG5pbXBvcnQgeyBncm91cHNBc0FueXRoaW5nQnV0TGVhcm5lciB9IGZyb20gJy4vZ3JvdXBSb2xlcydcblxuZXhwb3J0IGNvbnN0IGdldEtleXdvcmRzTGlzdCA9IChrZXl3b3Jkczogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG5cdGlmICgha2V5d29yZHMpIHJldHVybiBbXVxuXHRyZXR1cm4ga2V5d29yZHNcblx0XHQudHJpbSgpXG5cdFx0LnRvTG93ZXJDYXNlKClcblx0XHQuc3BsaXQoJyAnKVxuXHRcdC5maWx0ZXIoayA9PiAhIWspXG59XG5cbmV4cG9ydCBjb25zdCBpc0VudGl0eVVzZXJNYXRjaGVkQnlLZXl3b3JkID0gKG93bmVyOiBFbnRpdHlVc2VyLCBrZXl3b3JkOiBzdHJpbmcpID0+XG5cdG93bmVyLmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZCkgfHxcblx0ISFvd25lci5maXJzdE5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZCkgfHxcblx0ISFvd25lci5sYXN0TmFtZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmQpIHx8XG5cdCEhb3duZXIuZW1haWw/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkKSB8fFxuXHQhIW93bmVyLnVpZD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmQpXG5cbmV4cG9ydCBjb25zdCBpc0VudGl0eU1hdGNoZWRCeUtleXdvcmQgPSAoZW50aXR5OiB7IGlkOiBudW1iZXI7IG5hbWU6IHN0cmluZzsgb3duZXJzOiBFbnRpdHlVc2VyW10gfSwga2V5d29yZDogc3RyaW5nKSA9PlxuXHRlbnRpdHkuaWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmQpIHx8XG5cdGVudGl0eS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZCkgfHxcblx0ZW50aXR5Lm93bmVycy5zb21lKG93bmVyID0+IGlzRW50aXR5VXNlck1hdGNoZWRCeUtleXdvcmQob3duZXIsIGtleXdvcmQpKVxuXG5leHBvcnQgY29uc3QgaXNFbnRpdHlNYXRjaGVkQnlLZXl3b3JkcyA9IChcblx0ZW50aXR5OiB7IGlkOiBudW1iZXI7IG5hbWU6IHN0cmluZzsgb3duZXJzOiBFbnRpdHlVc2VyW10gfSxcblx0a2V5d29yZHNMaXN0OiBzdHJpbmdbXVxuKSA9PiBrZXl3b3Jkc0xpc3QubGVuZ3RoID09PSAwIHx8IGtleXdvcmRzTGlzdC5ldmVyeShrID0+IGlzRW50aXR5TWF0Y2hlZEJ5S2V5d29yZChlbnRpdHksIGspKVxuXG5leHBvcnQgY29uc3Qgc2VhcmNoRW50aXRpZXMgPSA8VCBleHRlbmRzIHsgaXNEZWxldGVkOiBib29sZWFuOyBhY3Rpdml0aWVzOiBzdHJpbmdbXSB9Pihcblx0ZW50aXR5QXJyYXk6IFRbXSxcblx0ZW50aXR5TWF0Y2hGdW5jdGlvbjogKGVudGl0eTogVCwga2V5d29yZHNMaXN0OiBzdHJpbmdbXSkgPT4gYm9vbGVhbixcblx0cmVhZEFjdGl2aXR5OiBzdHJpbmcsXG5cdGNhblJlYWRBbnlHbG9iYWxseT86IGJvb2xlYW4sXG5cdGtleXdvcmRzPzogc3RyaW5nXG4pID0+IHtcblx0Y29uc3Qga2V5d29yZHNMaXN0ID0gZ2V0S2V5d29yZHNMaXN0KGtleXdvcmRzKVxuXHRjb25zdCBmaWx0ZXJlZEVudGl0aWVzID0gZW50aXR5QXJyYXkucmVkdWNlPFJlY29yZDxudW1iZXIsIFRbXT4+KFxuXHRcdChhY2MsIGUpID0+IHtcblx0XHRcdC8vIGV4Y2x1ZGUgaWYgY2Fubm90IHJlYWQgYW55IGVudGl0eSBhbmQgZG9lcyBub3QgaGF2ZSB0aGUgcmVhZCBhY3Rpdml0eVxuXHRcdFx0aWYgKCFjYW5SZWFkQW55R2xvYmFsbHkgJiYgIWUuYWN0aXZpdGllcy5pbmNsdWRlcyhyZWFkQWN0aXZpdHkpKSByZXR1cm4gYWNjXG5cdFx0XHQvLyBleGNsdWRlIGlmIGRvZXMgbm90IG1hdGNoLCBpZiBhbnlcblx0XHRcdGlmICghZW50aXR5TWF0Y2hGdW5jdGlvbihlLCBrZXl3b3Jkc0xpc3QpKSByZXR1cm4gYWNjXG5cdFx0XHQvLyBhZGQgZW50aXR5IHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhYiBmaWx0ZXJlZCBhcnJheVxuXHRcdFx0Y29uc3QgdGFiID0gZS5pc0RlbGV0ZWQgPyBNQU5BR0VfVEFCTEVfVEFCLkRFTEVURUQgOiBNQU5BR0VfVEFCTEVfVEFCLkFWQUlMQUJMRVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cblx0XHRcdGNvbnN0IHRhYkFycmF5OiBUW10gPSBhY2NbdGFiXSA/PyBbXVxuXHRcdFx0dGFiQXJyYXkucHVzaChlKVxuXHRcdFx0YWNjW3RhYl0gPSB0YWJBcnJheVxuXHRcdFx0cmV0dXJuIGFjY1xuXHRcdH0sXG5cdFx0eyBbTUFOQUdFX1RBQkxFX1RBQi5BVkFJTEFCTEVdOiBbXSwgW01BTkFHRV9UQUJMRV9UQUIuREVMRVRFRF06IFtdIH1cblx0KVxuXHRyZXR1cm4gZmlsdGVyZWRFbnRpdGllc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaE1vZGVsQXJyYXlQYXJhbXM8VE1vZGVsPiB7XG5cdG1vZGVsQXJyYXk6IFRNb2RlbFtdXG5cdGNhblJlYWR5QW55R2xvYmFsbHk/OiBib29sZWFuXG5cdGtleXdvcmRzPzogc3RyaW5nXG59XG5cbi8vI3JlZ2lvbiBHcm91cHNcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hHcm91cHNQYXJhbXMgZXh0ZW5kcyBTZWFyY2hNb2RlbEFycmF5UGFyYW1zPEdyb3VwPiB7XG5cdGdyb3VwczogTW9kZWxDb2xsZWN0aW9uPEdyb3VwPlxuXHRleHRlcm5hbFRlcm1zOiBNb2RlbENvbGxlY3Rpb248RXh0ZXJuYWxUZXJtPlxuXHRkYXRlU3RyaW5nPzogc3RyaW5nXG59XG5cbmNvbnN0IGdldEdyb3VwVGFiID0gKGdyb3VwOiBHcm91cCwgZW5kRGF0ZTogc3RyaW5nKSA9PiB7XG5cdGlmIChncm91cC5pc0RlbGV0ZWQpIHtcblx0XHRyZXR1cm4gR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5ERUxFVEVEXG5cdH0gZWxzZSBpZiAoISFncm91cC5pZCAmJiBpc05vd0JlZm9yZURhdGUoZW5kRGF0ZSkpIHtcblx0XHRyZXR1cm4gR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5DVVJSRU5UXG5cdH1cblx0cmV0dXJuIEdST1VQX01BTkFHRV9UQUJMRV9UQUIuUEFTVFxufVxuXG5leHBvcnQgY29uc3Qgc2VhcmNoR3JvdXBzID0gKHtcblx0Z3JvdXBzLFxuXHRtb2RlbEFycmF5OiBncm91cHNBcnJheSxcblx0ZXh0ZXJuYWxUZXJtcyxcblx0Y2FuUmVhZHlBbnlHbG9iYWxseSxcblx0a2V5d29yZHMsXG5cdGRhdGVTdHJpbmdcbn06IFNlYXJjaEdyb3Vwc1BhcmFtcykgPT4ge1xuXHRjb25zdCBrZXl3b3Jkc0xpc3QgPSBnZXRLZXl3b3Jkc0xpc3Qoa2V5d29yZHMpXG5cdGNvbnN0IHZpc2libGVHcm91cHMgPSBjYW5SZWFkeUFueUdsb2JhbGx5ID8gZ3JvdXBzQXJyYXkgOiBncm91cHNBc0FueXRoaW5nQnV0TGVhcm5lcihncm91cHMpXG5cdGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gdmlzaWJsZUdyb3Vwcy5yZWR1Y2U8UmVjb3JkPG51bWJlciwgR3JvdXBbXT4+KFxuXHRcdChhY2MsIGcpID0+IHtcblx0XHRcdC8vIGV4Y2x1ZGUgaWYgZG9lcyBub3QgbWF0Y2gga2V5d29yZHMsIGlmIGFueVxuXHRcdFx0aWYgKCFpc0VudGl0eU1hdGNoZWRCeUtleXdvcmRzKGcsIGtleXdvcmRzTGlzdCkpIHJldHVybiBhY2Ncblx0XHRcdGNvbnN0IHN0YXJ0RGF0ZSA9IGdldFN0YXJ0RGF0ZShleHRlcm5hbFRlcm1zLCBnKVxuXHRcdFx0Y29uc3QgZW5kRGF0ZSA9IGdldEVuZERhdGUoZXh0ZXJuYWxUZXJtcywgZylcblx0XHRcdC8vIGV4Y2x1ZGUgaWYgc2VhcmNoIGRhdGVTdHJpbmcgaXMgbm90IGJldHdlZW4gZ3JvdXAgc3RhcnQgYW5kIGVuZCBkYXRlc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhIWRhdGVTdHJpbmcgJiZcblx0XHRcdFx0KGdldExvY2FsTW9tZW50RnJvbVV0YyhkYXRlU3RyaW5nKSA8IGdldExvY2FsTW9tZW50RnJvbVV0YyhzdGFydERhdGUpIHx8XG5cdFx0XHRcdFx0Z2V0TG9jYWxNb21lbnRGcm9tVXRjKGRhdGVTdHJpbmcpID4gZ2V0TG9jYWxNb21lbnRGcm9tVXRjKGVuZERhdGUpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBhY2Ncblx0XHRcdH1cblx0XHRcdGNvbnN0IHRhYiA9IGdldEdyb3VwVGFiKGcsIGVuZERhdGUpXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuXHRcdFx0Y29uc3QgdGFiQXJyYXk6IEdyb3VwW10gPSBhY2NbdGFiXSA/PyBbXVxuXHRcdFx0dGFiQXJyYXkucHVzaChnKVxuXHRcdFx0YWNjW3RhYl0gPSB0YWJBcnJheVxuXHRcdFx0cmV0dXJuIGFjY1xuXHRcdH0sXG5cdFx0e1xuXHRcdFx0W0dST1VQX01BTkFHRV9UQUJMRV9UQUIuQ1VSUkVOVF06IFtdLFxuXHRcdFx0W0dST1VQX01BTkFHRV9UQUJMRV9UQUIuUEFTVF06IFtdLFxuXHRcdFx0W0dST1VQX01BTkFHRV9UQUJMRV9UQUIuREVMRVRFRF06IFtdXG5cdFx0fVxuXHQpXG5cdHJldHVybiBmaWx0ZXJlZEdyb3Vwc1xufVxuXG4vLyNlbmRyZWdpb24gR3JvdXBzXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLHNCQUFzQixFQUFFQyxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFFN0UsU0FBU0MscUJBQXFCLEVBQUVDLGVBQWUsUUFBUSxRQUFRO0FBQy9ELFNBQVNDLFVBQVUsRUFBRUMsWUFBWSxRQUFRLGNBQWM7QUFDdkQsU0FBU0MsMEJBQTBCLFFBQVEsY0FBYztBQUV6RCxPQUFPLE1BQU1DLGVBQWUsR0FBSUMsUUFBNEIsSUFBSztFQUNoRSxJQUFJLENBQUNBLFFBQVEsRUFBRSxPQUFPLEVBQUU7RUFDeEIsT0FBT0EsUUFBUSxDQUNiQyxJQUFJLENBQUMsQ0FBQyxDQUNOQyxXQUFXLENBQUMsQ0FBQyxDQUNiQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ1ZDLE1BQU0sQ0FBQ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxPQUFPLE1BQU1DLDRCQUE0QixHQUFHQSxDQUFDQyxLQUFpQixFQUFFQyxPQUFlLEtBQzlFRCxLQUFLLENBQUNFLEVBQUUsQ0FBQ1AsV0FBVyxDQUFDLENBQUMsQ0FBQ1EsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDeEMsQ0FBQyxDQUFDRCxLQUFLLENBQUNJLFNBQVMsRUFBRVQsV0FBVyxDQUFDLENBQUMsQ0FBQ1EsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDbEQsQ0FBQyxDQUFDRCxLQUFLLENBQUNLLFFBQVEsRUFBRUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1gsV0FBVyxDQUFDLENBQUMsQ0FBQ1EsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDNUQsQ0FBQyxDQUFDRCxLQUFLLENBQUNPLEtBQUssRUFBRUQsUUFBUSxDQUFDLENBQUMsQ0FBQ1gsV0FBVyxDQUFDLENB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
@@ -1,45 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPurdueShard = isPurdueShard;
4
- exports.isDemoShard = isDemoShard;
5
- exports.getShardKey = getShardKey;
6
- const tslib_1 = require("tslib");
7
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
8
- const configuration_1 = require("../constants/configuration");
9
- const shard_1 = require("../constants/shard");
10
- const windowService_1 = require("../services/windowService");
11
- function isPurdueShard() {
12
- return getShardKey() === shard_1.SHARD.PURDUE;
1
+ import _ from 'lodash';
2
+ import { getAppConfig } from '../constants/configuration';
3
+ import { SHARD } from '../constants/shard';
4
+ import { windowService } from '../services/windowService';
5
+ export function isPurdueShard() {
6
+ return getShardKey() === SHARD.PURDUE;
13
7
  }
14
- function isDemoShard() {
15
- return getShardKey() === shard_1.SHARD.DEMO;
8
+ export function isDemoShard() {
9
+ return getShardKey() === SHARD.DEMO;
16
10
  }
17
- function getShardKey(host, localhostShardKey) {
18
- const appConfig = (0, configuration_1.getAppConfig)();
19
- const location = windowService_1.windowService.getLocation();
20
- const finalHost = host || location.host;
21
- const finalLocalhostShardKey = localhostShardKey || appConfig.LOCALHOST_SHARD_KEY;
22
- const rootDomain = appConfig.ROOT_DOMAIN;
23
- if (lodash_1.default.startsWith(finalHost, 'localhost') && !!finalLocalhostShardKey) {
24
- return finalLocalhostShardKey;
25
- }
26
- if (lodash_1.default.startsWith(finalHost, 'localhost') ||
27
- lodash_1.default.includes(finalHost, 'azurewebsites.net') ||
28
- lodash_1.default.includes(finalHost, 'web.core.windows.net') ||
29
- lodash_1.default.includes(finalHost, 'azureedge.net') ||
30
- lodash_1.default.includes(finalHost, 'z01.azurefd.net') ||
31
- lodash_1.default.includes(finalHost, 'ngrok.io')) {
32
- return shard_1.SHARD.PURDUE;
33
- }
34
- const urlParts = finalHost.split('.');
35
- if (urlParts[0] === 'www' || urlParts[0] === 'dev' || (!!rootDomain && urlParts[0] === rootDomain.split('.')[0])) {
36
- return shard_1.SHARD.ROOT;
37
- }
38
- // get subdomain by removing root domain parts
39
- let shardKey = finalHost.replace(`.${rootDomain}`, '');
40
- // exclude `.dev` from shardKey
41
- if (shardKey.indexOf('.dev') === shardKey.length - 4) {
42
- shardKey = shardKey.replace('.dev', '');
43
- }
44
- return shardKey;
11
+ export function getShardKey(host, localhostShardKey) {
12
+ const appConfig = getAppConfig();
13
+ const location = windowService.getLocation();
14
+ const finalHost = host || location.host;
15
+ const finalLocalhostShardKey = localhostShardKey || appConfig.LOCALHOST_SHARD_KEY;
16
+ const rootDomain = appConfig.ROOT_DOMAIN;
17
+ if (_.startsWith(finalHost, 'localhost') && !!finalLocalhostShardKey) {
18
+ return finalLocalhostShardKey;
19
+ }
20
+ if (_.startsWith(finalHost, 'localhost') || _.includes(finalHost, 'azurewebsites.net') || _.includes(finalHost, 'web.core.windows.net') || _.includes(finalHost, 'azureedge.net') || _.includes(finalHost, 'z01.azurefd.net') || _.includes(finalHost, 'ngrok.io')) {
21
+ return SHARD.PURDUE;
22
+ }
23
+ const urlParts = finalHost.split('.');
24
+ if (urlParts[0] === 'www' || urlParts[0] === 'dev' || !!rootDomain && urlParts[0] === rootDomain.split('.')[0]) {
25
+ return SHARD.ROOT;
26
+ }
27
+
28
+ // get subdomain by removing root domain parts
29
+ let shardKey = finalHost.replace(`.${rootDomain}`, '');
30
+ // exclude `.dev` from shardKey
31
+ if (shardKey.indexOf('.dev') === shardKey.length - 4) {
32
+ shardKey = shardKey.replace('.dev', '');
33
+ }
34
+ return shardKey;
45
35
  }
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfIiwiZ2V0QXBwQ29uZmlnIiwiU0hBUkQiLCJ3aW5kb3dTZXJ2aWNlIiwiaXNQdXJkdWVTaGFyZCIsImdldFNoYXJkS2V5IiwiUFVSRFVFIiwiaXNEZW1vU2hhcmQiLCJERU1PIiwiaG9zdCIsImxvY2FsaG9zdFNoYXJkS2V5IiwiYXBwQ29uZmlnIiwibG9jYXRpb24iLCJnZXRMb2NhdGlvbiIsImZpbmFsSG9zdCIsImZpbmFsTG9jYWxob3N0U2hhcmRLZXkiLCJMT0NBTEhPU1RfU0hBUkRfS0VZIiwicm9vdERvbWFpbiIsIlJPT1RfRE9NQUlOIiwic3RhcnRzV2l0aCIsImluY2x1ZGVzIiwidXJsUGFydHMiLCJzcGxpdCIsIlJPT1QiLCJzaGFyZEtleSIsInJlcGxhY2UiLCJpbmRleE9mIiwibGVuZ3RoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NoYXJkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWd1cmF0aW9uJ1xuaW1wb3J0IHsgU0hBUkQgfSBmcm9tICcuLi9jb25zdGFudHMvc2hhcmQnXG5pbXBvcnQgeyB3aW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2luZG93U2VydmljZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVyZHVlU2hhcmQoKSB7XG5cdHJldHVybiBnZXRTaGFyZEtleSgpID09PSBTSEFSRC5QVVJEVUVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVtb1NoYXJkKCkge1xuXHRyZXR1cm4gZ2V0U2hhcmRLZXkoKSA9PT0gU0hBUkQuREVNT1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmRLZXkoaG9zdD86IHN0cmluZywgbG9jYWxob3N0U2hhcmRLZXk/OiBzdHJpbmcpIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0Y29uc3QgbG9jYXRpb24gPSB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKClcblx0Y29uc3QgZmluYWxIb3N0ID0gaG9zdCB8fCBsb2NhdGlvbi5ob3N0XG5cdGNvbnN0IGZpbmFsTG9jYWxob3N0U2hhcmRLZXkgPSBsb2NhbGhvc3RTaGFyZEtleSB8fCBhcHBDb25maWcuTE9DQUxIT1NUX1NIQVJEX0tFWVxuXHRjb25zdCByb290RG9tYWluID0gYXBwQ29uZmlnLlJPT1RfRE9NQUlOXG5cblx0aWYgKF8uc3RhcnRzV2l0aChmaW5hbEhvc3QsICdsb2NhbGhvc3QnKSAmJiAhIWZpbmFsTG9jYWxob3N0U2hhcmRLZXkpIHtcblx0XHRyZXR1cm4gZmluYWxMb2NhbGhvc3RTaGFyZEtleVxuXHR9XG5cblx0aWYgKFxuXHRcdF8uc3RhcnRzV2l0aChmaW5hbEhvc3QsICdsb2NhbGhvc3QnKSB8fFxuXHRcdF8uaW5jbHVkZXMoZmluYWxIb3N0LCAnYXp1cmV3ZWJzaXRlcy5uZXQnKSB8fFxuXHRcdF8uaW5jbHVkZXMoZmluYWxIb3N0LCAnd2ViLmNvcmUud2luZG93cy5uZXQnKSB8fFxuXHRcdF8uaW5jbHVkZXMoZmluYWxIb3N0LCAnYXp1cmVlZGdlLm5ldCcpIHx8XG5cdFx0Xy5pbmNsdWRlcyhmaW5hbEhvc3QsICd6MDEuYXp1cmVmZC5uZXQnKSB8fFxuXHRcdF8uaW5jbHVkZXMoZmluYWxIb3N0LCAnbmdyb2suaW8nKVxuXHQpIHtcblx0XHRyZXR1cm4gU0hBUkQuUFVSRFVFXG5cdH1cblxuXHRjb25zdCB1cmxQYXJ0cyA9IGZpbmFsSG9zdC5zcGxpdCgnLicpXG5cdGlmICh1cmxQYXJ0c1swXSA9PT0gJ3d3dycgfHwgdXJsUGFydHNbMF0gPT09ICdkZXYnIHx8ICghIXJvb3REb21haW4gJiYgdXJsUGFydHNbMF0gPT09IHJvb3REb21haW4uc3BsaXQoJy4nKVswXSkpIHtcblx0XHRyZXR1cm4gU0hBUkQuUk9PVFxuXHR9XG5cblx0Ly8gZ2V0IHN1YmRvbWFpbiBieSByZW1vdmluZyByb290IGRvbWFpbiBwYXJ0c1xuXHRsZXQgc2hhcmRLZXkgPSBmaW5hbEhvc3QucmVwbGFjZShgLiR7cm9vdERvbWFpbn1gLCAnJylcblx0Ly8gZXhjbHVkZSBgLmRldmAgZnJvbSBzaGFyZEtleVxuXHRpZiAoc2hhcmRLZXkuaW5kZXhPZignLmRldicpID09PSBzaGFyZEtleS5sZW5ndGggLSA0KSB7XG5cdFx0c2hhcmRLZXkgPSBzaGFyZEtleS5yZXBsYWNlKCcuZGV2JywgJycpXG5cdH1cblx0cmV0dXJuIHNoYXJkS2V5XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLENBQUMsTUFBTSxRQUFRO0FBQ3RCLFNBQVNDLFlBQVksUUFBUSw0QkFBNEI7QUFDekQsU0FBU0MsS0FBSyxRQUFRLG9CQUFvQjtBQUMxQyxTQUFTQyxhQUFhLFFBQVEsMkJBQTJCO0FBRXpELE9BQU8sU0FBU0MsYUFBYUEsQ0FBQSxFQUFHO0VBQy9CLE9BQU9DLFdBQVcsQ0FBQyxDQUFDLEtBQUtILEtBQUssQ0FBQ0ksTUFBTTtBQUN0QztBQUVBLE9BQU8sU0FBU0MsV0FBV0EsQ0FBQSxFQUFHO0VBQzdCLE9BQU9GLFdBQVcsQ0FBQyxDQUFDLEtBQUtILEtBQUssQ0FBQ00sSUFBSTtBQUNwQztBQUVBLE9BQU8sU0FBU0gsV0FBV0EsQ0FBQ0ksSUFBYSxFQUFFQyxpQkFBMEIsRUFBRTtFQUN0RSxNQUFNQyxTQUFTLEdBQUdWLFlBQVksQ0FBQyxDQUFDO0VBQ2hDLE1BQU1XLFFBQVEsR0FBR1QsYUFBYSxDQUFDVSxXQUFXLENBQUMsQ0FBQztFQUM1QyxNQUFNQyxTQUFTLEdBQUdMLElBQUksSUFBSUcsUUFBUSxDQUFDSCxJQUFJO0VBQ3ZDLE1BQU1NLHNCQUFzQixHQUFHTCxpQkFBaUIsSUFBSUMsU0FBUyxDQUFDSyxtQkFBbUI7RUFDakYsTUFBTUMsVUFBVSxHQUFHTixTQUFTLENBQUNPLFdBQVc7RUFFeEMsSUFBSWxCLENBQUMsQ0FBQ21CLFVBQVUsQ0FBQ0wsU0FBUyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0Msc0JBQXNCLEVBQUU7SUFDckUsT0FBT0Esc0JBQXNCO0VBQzlCO0VBRUEsSUFDQ2YsQ0FBQyxDQUFDbUIsVUFBVSxDQUFDTCxTQUFTLEVBQUUsV0FBVyxDQUFDLElBQ3BDZCxDQUFDLENBQUNvQixRQUFRLENBQUNOLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxJQUMxQ2QsQ0FBQyxDQUFDb0IsUUFBUSxDQUFDTixTQUFTLEVBQUUsc0JBQXNCLENBQUMsSUFDN0NkLENBQUMsQ0FBQ29CLFFBQVEsQ0FBQ04sU0FBUyxFQUFFLGVBQWUsQ0FBQyxJQUN0Q2QsQ0FBQyxDQUFDb0IsUUFBUSxDQUFDTixTQUFTLEVBQUUsaUJBQWlCLENBQUMsSUFDeENkLENBQUMsQ0FBQ29CLFFBQVEsQ0FBQ04sU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUNoQztJQUNELE9BQU9aLEtBQUssQ0FBQ0ksTUFBTTtFQUNwQjtFQUVBLE1BQU1lLFFBQVEsR0FBR1AsU0FBUyxDQUFDUSxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQ3JDLElBQUlELFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUlBLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUssQ0FBQyxDQUFDSixVQUFVLElBQUlJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBS0osVUFBVSxDQUFDSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFFLEVBQUU7SUFDakgsT0FBT3BCLEtBQUssQ0FBQ3FCLElBQUk7RUFDbEI7O0VBRUE7RUFDQSxJQUFJQyxRQUFRLEdBQUdWLFNBQVMsQ0FBQ1csT0FBTyxDQUFDLElBQUlSLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztFQUN0RDtFQUNBLElBQUlPLFFBQVEsQ0FBQ0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLRixRQUFRLENBQUNHLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDckRILFFBQVEsR0FBR0EsUUFBUSxDQUFDQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztFQUN4QztFQUNBLE9BQU9ELFFBQVE7QUFDaEIiLCJpZ25vcmVMaXN0IjpbXX0=
package/lib/utils/sort.js CHANGED
@@ -1,65 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sort = exports.sortByNameNatural = exports.sortByNames = exports.sortByAttributeNumeric = exports.sortByAttribute = void 0;
4
- const sortByAttribute = (attributeName, shouldSortAscending = true) => (a, b) => {
1
+ export const sortByAttribute = function (attributeName) {
2
+ let shouldSortAscending = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
3
+ return (a, b) => {
5
4
  const attrA = a[attributeName] ? a[attributeName].toUpperCase() : '';
6
5
  const attrB = b[attributeName] ? b[attributeName].toUpperCase() : '';
7
6
  let sortResult = 0;
8
7
  if (attrA === '') {
9
- sortResult = 1;
10
- }
11
- else if (attrB === '') {
12
- sortResult = -1;
13
- }
14
- else if (attrA === attrB) {
15
- return 0;
8
+ sortResult = 1;
9
+ } else if (attrB === '') {
10
+ sortResult = -1;
11
+ } else if (attrA === attrB) {
12
+ return 0;
16
13
  }
17
14
  if (attrA < attrB) {
18
- sortResult = -1;
19
- }
20
- else if (attrA > attrB) {
21
- sortResult = 1;
15
+ sortResult = -1;
16
+ } else if (attrA > attrB) {
17
+ sortResult = 1;
22
18
  }
23
19
  return shouldSortAscending ? sortResult : -1 * sortResult;
20
+ };
24
21
  };
25
- exports.sortByAttribute = sortByAttribute;
26
- const sortByAttributeNumeric = (attribute) => (a, b) => {
27
- if (a[attribute] === b[attribute]) {
28
- return 0;
29
- }
30
- if (a[attribute] > b[attribute]) {
31
- return 1;
32
- }
33
- if (a[attribute] < b[attribute]) {
34
- return -1;
35
- }
22
+ export const sortByAttributeNumeric = attribute => (a, b) => {
23
+ if (a[attribute] === b[attribute]) {
36
24
  return 0;
25
+ }
26
+ if (a[attribute] > b[attribute]) {
27
+ return 1;
28
+ }
29
+ if (a[attribute] < b[attribute]) {
30
+ return -1;
31
+ }
32
+ return 0;
37
33
  };
38
- exports.sortByAttributeNumeric = sortByAttributeNumeric;
34
+
39
35
  // Requires at least last name or email address for each user
40
- const sortByNames = (a, b) => {
41
- if ((!a.lastName && !a.email) || (!b.lastName && !b.email)) {
42
- throw new Error('Last name or email required');
43
- }
44
- // (last name or email) => first name
45
- const lastNameA = a.lastName ? a.lastName.toLowerCase() : a.email ? a.email : '';
46
- const lastNameB = b.lastName ? b.lastName.toLowerCase() : b.email ? b.email : '';
47
- if (lastNameA !== lastNameB) {
48
- return lastNameA > lastNameB ? 1 : -1;
49
- }
50
- const firstNameA = a.firstName ? a.firstName.toLowerCase() : '';
51
- const firstNameB = b.firstName ? b.firstName.toLowerCase() : '';
52
- if (firstNameA !== firstNameB) {
53
- return firstNameA > firstNameB ? 1 : -1;
54
- }
55
- return 0;
36
+ export const sortByNames = (a, b) => {
37
+ if (!a.lastName && !a.email || !b.lastName && !b.email) {
38
+ throw new Error('Last name or email required');
39
+ }
40
+ // (last name or email) => first name
41
+ const lastNameA = a.lastName ? a.lastName.toLowerCase() : a.email ? a.email : '';
42
+ const lastNameB = b.lastName ? b.lastName.toLowerCase() : b.email ? b.email : '';
43
+ if (lastNameA !== lastNameB) {
44
+ return lastNameA > lastNameB ? 1 : -1;
45
+ }
46
+ const firstNameA = a.firstName ? a.firstName.toLowerCase() : '';
47
+ const firstNameB = b.firstName ? b.firstName.toLowerCase() : '';
48
+ if (firstNameA !== firstNameB) {
49
+ return firstNameA > firstNameB ? 1 : -1;
50
+ }
51
+ return 0;
56
52
  };
57
- exports.sortByNames = sortByNames;
58
- const sortByNameNatural = (a, b) => {
59
- return a.name.trim().localeCompare(b.name.trim(), undefined, { numeric: true, sensitivity: 'base' });
53
+ export const sortByNameNatural = (a, b) => {
54
+ return a.name.trim().localeCompare(b.name.trim(), undefined, {
55
+ numeric: true,
56
+ sensitivity: 'base'
57
+ });
60
58
  };
61
- exports.sortByNameNatural = sortByNameNatural;
62
- const sort = (array, attributeName, shouldSortAscending) => {
63
- return array.slice().sort((0, exports.sortByAttribute)(attributeName, shouldSortAscending));
59
+ export const sort = (array, attributeName, shouldSortAscending) => {
60
+ return array.slice().sort(sortByAttribute(attributeName, shouldSortAscending));
64
61
  };
65
- exports.sort = sort;
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzb3J0QnlBdHRyaWJ1dGUiLCJhdHRyaWJ1dGVOYW1lIiwic2hvdWxkU29ydEFzY2VuZGluZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImEiLCJiIiwiYXR0ckEiLCJ0b1VwcGVyQ2FzZSIsImF0dHJCIiwic29ydFJlc3VsdCIsInNvcnRCeUF0dHJpYnV0ZU51bWVyaWMiLCJhdHRyaWJ1dGUiLCJzb3J0QnlOYW1lcyIsImxhc3ROYW1lIiwiZW1haWwiLCJFcnJvciIsImxhc3ROYW1lQSIsInRvTG93ZXJDYXNlIiwibGFzdE5hbWVCIiwiZmlyc3ROYW1lQSIsImZpcnN0TmFtZSIsImZpcnN0TmFtZUIiLCJzb3J0QnlOYW1lTmF0dXJhbCIsIm5hbWUiLCJ0cmltIiwibG9jYWxlQ29tcGFyZSIsIm51bWVyaWMiLCJzZW5zaXRpdml0eSIsInNvcnQiLCJhcnJheSIsInNsaWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NvcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWxSZWNvcmQgfSBmcm9tICcuLi90eXBlcy9PcHRpb25hbFJlY29yZCdcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi90eXBlcy9Vc2VyJ1xuXG5leHBvcnQgY29uc3Qgc29ydEJ5QXR0cmlidXRlID1cblx0PEsgZXh0ZW5kcyBrZXlvZiBULCBUIGV4dGVuZHMgT3B0aW9uYWxSZWNvcmQ8Sywgc3RyaW5nPj4oYXR0cmlidXRlTmFtZTogSywgc2hvdWxkU29ydEFzY2VuZGluZyA9IHRydWUpID0+XG5cdChhOiBULCBiOiBUKSA9PiB7XG5cdFx0Y29uc3QgYXR0ckEgPSBhW2F0dHJpYnV0ZU5hbWVdID8gYVthdHRyaWJ1dGVOYW1lXS50b1VwcGVyQ2FzZSgpIDogJydcblx0XHRjb25zdCBhdHRyQiA9IGJbYXR0cmlidXRlTmFtZV0gPyBiW2F0dHJpYnV0ZU5hbWVdLnRvVXBwZXJDYXNlKCkgOiAnJ1xuXHRcdGxldCBzb3J0UmVzdWx0ID0gMFxuXHRcdGlmIChhdHRyQSA9PT0gJycpIHtcblx0XHRcdHNvcnRSZXN1bHQgPSAxXG5cdFx0fSBlbHNlIGlmIChhdHRyQiA9PT0gJycpIHtcblx0XHRcdHNvcnRSZXN1bHQgPSAtMVxuXHRcdH0gZWxzZSBpZiAoYXR0ckEgPT09IGF0dHJCKSB7XG5cdFx0XHRyZXR1cm4gMFxuXHRcdH1cblx0XHRpZiAoYXR0ckEgPCBhdHRyQikge1xuXHRcdFx0c29ydFJlc3VsdCA9IC0xXG5cdFx0fSBlbHNlIGlmIChhdHRyQSA+IGF0dHJCKSB7XG5cdFx0XHRzb3J0UmVzdWx0ID0gMVxuXHRcdH1cblx0XHRyZXR1cm4gc2hvdWxkU29ydEFzY2VuZGluZyA/IHNvcnRSZXN1bHQgOiAtMSAqIHNvcnRSZXN1bHRcblx0fVxuXG5leHBvcnQgY29uc3Qgc29ydEJ5QXR0cmlidXRlTnVtZXJpYyA9XG5cdDxUPihhdHRyaWJ1dGU6IGtleW9mIFQpID0+XG5cdChhOiBULCBiOiBUKSA9PiB7XG5cdFx0aWYgKGFbYXR0cmlidXRlXSA9PT0gYlthdHRyaWJ1dGVdKSB7XG5cdFx0XHRyZXR1cm4gMFxuXHRcdH1cblx0XHRpZiAoYVthdHRyaWJ1dGVdID4gYlthdHRyaWJ1dGVdKSB7XG5cdFx0XHRyZXR1cm4gMVxuXHRcdH1cblx0XHRpZiAoYVthdHRyaWJ1dGVdIDwgYlthdHRyaWJ1dGVdKSB7XG5cdFx0XHRyZXR1cm4gLTFcblx0XHR9XG5cdFx0cmV0dXJuIDBcblx0fVxuXG4vLyBSZXF1aXJlcyBhdCBsZWFzdCBsYXN0IG5hbWUgb3IgZW1haWwgYWRkcmVzcyBmb3IgZWFjaCB1c2VyXG5leHBvcnQgY29uc3Qgc29ydEJ5TmFtZXMgPSAoYTogVXNlciwgYjogVXNlcikgPT4ge1xuXHRpZiAoKCFhLmxhc3ROYW1lICYmICFhLmVtYWlsKSB8fCAoIWIubGFzdE5hbWUgJiYgIWIuZW1haWwpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdMYXN0IG5hbWUgb3IgZW1haWwgcmVxdWlyZWQnKVxuXHR9XG5cdC8vIChsYXN0IG5hbWUgb3IgZW1haWwpID0+IGZpcnN0IG5hbWVcblx0Y29uc3QgbGFzdE5hbWVBID0gYS5sYXN0TmFtZSA/IGEubGFzdE5hbWUudG9Mb3dlckNhc2UoKSA6IGEuZW1haWwgPyBhLmVtYWlsIDogJydcblx0Y29uc3QgbGFzdE5hbWVCID0gYi5sYXN0TmFtZSA/IGIubGFzdE5hbWUudG9Mb3dlckNhc2UoKSA6IGIuZW1haWwgPyBiLmVtYWlsIDogJydcblx0aWYgKGxhc3ROYW1lQSAhPT0gbGFzdE5hbWVCKSB7XG5cdFx0cmV0dXJuIGxhc3ROYW1lQSA+IGxhc3ROYW1lQiA/IDEgOiAtMVxuXHR9XG5cdGNvbnN0IGZpcnN0TmFtZUEgPSBhLmZpcnN0TmFtZSA/IGEuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgOiAnJ1xuXHRjb25zdCBmaXJzdE5hbWVCID0gYi5maXJzdE5hbWUgPyBiLmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpIDogJydcblx0aWYgKGZpcnN0TmFtZUEgIT09IGZpcnN0TmFtZUIpIHtcblx0XHRyZXR1cm4gZmlyc3ROYW1lQSA+IGZpcnN0TmFtZUIgPyAxIDogLTFcblx0fVxuXHRyZXR1cm4gMFxufVxuXG5leHBvcnQgY29uc3Qgc29ydEJ5TmFtZU5hdHVyYWwgPSAoYTogeyBuYW1lOiBzdHJpbmcgfSwgYjogeyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuXHRyZXR1cm4gYS5uYW1lLnRyaW0oKS5sb2NhbGVDb21wYXJlKGIubmFtZS50cmltKCksIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlLCBzZW5zaXRpdml0eTogJ2Jhc2UnIH0pXG59XG5cbmV4cG9ydCBjb25zdCBzb3J0ID0gKGFycmF5OiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBzaG91bGRTb3J0QXNjZW5kaW5nOiBib29sZWFuKSA9PiB7XG5cdHJldHVybiBhcnJheS5zbGljZSgpLnNvcnQoc29ydEJ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHNob3VsZFNvcnRBc2NlbmRpbmcpKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFH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
@@ -1,15 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPurdueAliasOrPuid = isPurdueAliasOrPuid;
4
- exports.isEmail = isEmail;
5
- function isPurdueAliasOrPuid(aliasOrPuid) {
6
- const isPuid = /^\d{10}$/.test(aliasOrPuid);
7
- const isAlias = /^[a-z0-9]{2,8}$/i.test(aliasOrPuid);
8
- return isPuid || isAlias;
1
+ export function isPurdueAliasOrPuid(aliasOrPuid) {
2
+ const isPuid = /^\d{10}$/.test(aliasOrPuid);
3
+ const isAlias = /^[a-z0-9]{2,8}$/i.test(aliasOrPuid);
4
+ return isPuid || isAlias;
9
5
  }
6
+
10
7
  // https://stackoverflow.com/a/1373724
11
- function isEmail(email) {
12
- // eslint-disable-next-line
13
- const regexEmail = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
14
- return regexEmail.test(email);
8
+ export function isEmail(email) {
9
+ // eslint-disable-next-line
10
+ const regexEmail = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
11
+ return regexEmail.test(email);
15
12
  }
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1B1cmR1ZUFsaWFzT3JQdWlkIiwiYWxpYXNPclB1aWQiLCJpc1B1aWQiLCJ0ZXN0IiwiaXNBbGlhcyIsImlzRW1haWwiLCJlbWFpbCIsInJlZ2V4RW1haWwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1B1cmR1ZUFsaWFzT3JQdWlkKGFsaWFzT3JQdWlkOiBzdHJpbmcpIHtcblx0Y29uc3QgaXNQdWlkID0gL15cXGR7MTB9JC8udGVzdChhbGlhc09yUHVpZClcblx0Y29uc3QgaXNBbGlhcyA9IC9eW2EtejAtOV17Miw4fSQvaS50ZXN0KGFsaWFzT3JQdWlkKVxuXHRyZXR1cm4gaXNQdWlkIHx8IGlzQWxpYXNcbn1cblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNzM3MjRcbmV4cG9ydCBmdW5jdGlvbiBpc0VtYWlsKGVtYWlsOiBzdHJpbmcpIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cdGNvbnN0IHJlZ2V4RW1haWwgPSAvKD86W2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKnxcIig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3Zl18XFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZS1cXHg3Zl0pKlwiKUAoPzooPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/fFxcWyg/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/fFthLXowLTktXSpbYS16MC05XTooPzpbXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHgyMS1cXHg1YVxceDUzLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkrKVxcXSkvXG5cdHJldHVybiByZWdleEVtYWlsLnRlc3QoZW1haWwpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBU0EsbUJBQW1CQSxDQUFDQyxXQUFtQixFQUFFO0VBQ3hELE1BQU1DLE1BQU0sR0FBRyxVQUFVLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxDQUFDO0VBQzNDLE1BQU1HLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQ0QsSUFBSSxDQUFDRixXQUFXLENBQUM7RUFDcEQsT0FBT0MsTUFBTSxJQUFJRSxPQUFPO0FBQ3pCOztBQUVBO0FBQ0EsT0FBTyxTQUFTQyxPQUFPQSxDQUFDQyxLQUFhLEVBQUU7RUFDdEM7RUFDQSxNQUFNQyxVQUFVLEdBQUcsNGFBQTRhO0VBQy9iLE9BQU9BLFVBQVUsQ0FBQ0osSUFBSSxDQUFDRyxLQUFLLENBQUM7QUFDOUIiLCJpZ25vcmVMaXN0IjpbXX0=