studiokit-scaffolding-js 7.0.14-alpha.1 → 7.1.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 (374) hide show
  1. package/lib/components/ActionList.d.ts +2 -2
  2. package/lib/components/ActionList.js +166 -87
  3. package/lib/components/AlertDialog.d.ts +3 -3
  4. package/lib/components/AlertDialog.js +133 -18
  5. package/lib/components/AlertWithIcon.js +93 -52
  6. package/lib/components/ConnectedModal.d.ts +1 -2
  7. package/lib/components/ConnectedModal.js +41 -35
  8. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  9. package/lib/components/Dropdowns/GroupsDropdown.js +69 -82
  10. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  11. package/lib/components/Dropdowns/ManagedNavDropdown.js +96 -108
  12. package/lib/components/Dropdowns/UserDropdown.js +109 -70
  13. package/lib/components/Dropdowns/index.js +27 -11
  14. package/lib/components/EntityOwnerList.d.ts +3 -3
  15. package/lib/components/EntityOwnerList.js +52 -60
  16. package/lib/components/Error.js +107 -27
  17. package/lib/components/ErrorBoundary.js +133 -94
  18. package/lib/components/ErrorMessage.d.ts +2 -2
  19. package/lib/components/ErrorMessage.js +44 -14
  20. package/lib/components/Forms/DateField.d.ts +2 -2
  21. package/lib/components/Forms/DateField.js +63 -95
  22. package/lib/components/Forms/TimeField.d.ts +2 -2
  23. package/lib/components/Forms/TimeField.js +84 -108
  24. package/lib/components/Forms/index.js +27 -13
  25. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  26. package/lib/components/Groups/CreateEditCopySaveButtons.js +102 -14
  27. package/lib/components/Groups/ExternalGroups/Attach.d.ts +6 -7
  28. package/lib/components/Groups/ExternalGroups/Attach.js +213 -188
  29. package/lib/components/Groups/ExternalGroups/Table.js +183 -76
  30. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  31. package/lib/components/Groups/RosterSyncInfo.js +140 -49
  32. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  33. package/lib/components/HOC/AccessibleAppComponent.js +96 -119
  34. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  35. package/lib/components/HOC/ActivityRequiredComponent.js +72 -86
  36. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  37. package/lib/components/HOC/AsyncComponent.js +53 -129
  38. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  39. package/lib/components/HOC/AuthenticatedComponent.js +59 -96
  40. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  41. package/lib/components/HOC/CollectionComponent.js +161 -161
  42. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  43. package/lib/components/HOC/CollectionFirstItemComponent.js +49 -91
  44. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  45. package/lib/components/HOC/CollectionItemComponent.js +159 -158
  46. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  47. package/lib/components/HOC/ConnectedModalComponent.js +96 -126
  48. package/lib/components/HOC/DataDependentComponent.d.ts +3 -55
  49. package/lib/components/HOC/DataDependentComponent.js +30 -79
  50. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  51. package/lib/components/HOC/EntityComponent.js +63 -101
  52. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  53. package/lib/components/HOC/FullscreenModalComponent.js +145 -165
  54. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  55. package/lib/components/HOC/GroupActivityRequiredComponent.js +32 -31
  56. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  57. package/lib/components/HOC/GuidComponent.js +25 -64
  58. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +28 -29
  59. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +36 -59
  60. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  61. package/lib/components/HOC/ModelErrorRedirectComponent.js +40 -83
  62. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  63. package/lib/components/HOC/SearchPersistorComponent.js +243 -216
  64. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  65. package/lib/components/HOC/UnauthenticatedComponent.js +37 -82
  66. package/lib/components/HOC/UserComponent.d.ts +1 -1
  67. package/lib/components/HOC/UserComponent.js +12 -11
  68. package/lib/components/Icons/IconAlphaList.js +34 -20
  69. package/lib/components/Icons/IconExternalUser.js +34 -20
  70. package/lib/components/Icons/IconImpersonation.js +34 -20
  71. package/lib/components/Icons/IconStopImpersonating.js +34 -20
  72. package/lib/components/Icons/IconTable.js +35 -21
  73. package/lib/components/Icons/IconTableDeleteCol.js +34 -20
  74. package/lib/components/Icons/IconTableDeleteRow.js +34 -20
  75. package/lib/components/Icons/IconTableInsertCol.js +34 -20
  76. package/lib/components/Icons/IconTableInsertRow.js +34 -20
  77. package/lib/components/Impersonation/Button.d.ts +2 -2
  78. package/lib/components/Impersonation/Button.js +76 -56
  79. package/lib/components/Impersonation/Link.d.ts +2 -2
  80. package/lib/components/Impersonation/Link.js +76 -53
  81. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  82. package/lib/components/Impersonation/UserDetail.js +64 -15
  83. package/lib/components/Loading.js +27 -21
  84. package/lib/components/LockDownBrowser/Check.js +194 -107
  85. package/lib/components/LockDownBrowser/ExitButton.js +27 -14
  86. package/lib/components/LockDownBrowser/Launch.js +70 -85
  87. package/lib/components/Lti/Confirm.js +152 -33
  88. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +4 -2
  89. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -78
  90. package/lib/components/Lti/Launch.js +105 -49
  91. package/lib/components/Lti/LaunchGroup.js +85 -39
  92. package/lib/components/ManageTable.d.ts +1 -2
  93. package/lib/components/ManageTable.js +309 -104
  94. package/lib/components/ManageTableNoDataComponent.js +42 -22
  95. package/lib/components/NewVersionAlert.d.ts +2 -2
  96. package/lib/components/NewVersionAlert.js +82 -91
  97. package/lib/components/NotFound.js +87 -28
  98. package/lib/components/Notifications.d.ts +4 -4
  99. package/lib/components/Notifications.js +187 -169
  100. package/lib/components/PaginationNextButton.js +33 -21
  101. package/lib/components/PaginationPreviousButton.js +33 -21
  102. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  103. package/lib/components/Quill/CustomToolbar.js +432 -257
  104. package/lib/components/Quill/Formats/Image.d.ts +10 -25
  105. package/lib/components/Quill/Formats/Image.js +76 -82
  106. package/lib/components/Quill/Formats/List.d.ts +6 -3
  107. package/lib/components/Quill/Formats/List.js +50 -72
  108. package/lib/components/Quill/Formats/Video.d.ts +2 -1
  109. package/lib/components/Quill/Formats/Video.js +29 -43
  110. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  111. package/lib/components/Quill/ImageDropModule.js +142 -115
  112. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  113. package/lib/components/Quill/ImageWarning.js +45 -32
  114. package/lib/components/Quill/ImageWithAltTextModal.d.ts +0 -1
  115. package/lib/components/Quill/ImageWithAltTextModal.js +425 -141
  116. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  117. package/lib/components/Quill/Specs/CustomImageSpec.js +37 -45
  118. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  119. package/lib/components/Quill/Specs/CustomVideoSpec.js +27 -36
  120. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +2 -1
  121. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +100 -116
  122. package/lib/components/Quill/TableModule/Blots/TableBlot.js +53 -66
  123. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +54 -67
  124. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  125. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +225 -241
  126. package/lib/components/Quill/TableModule/Blots/TableContainer.js +82 -99
  127. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +76 -87
  128. package/lib/components/Quill/TableModule/constants.js +45 -41
  129. package/lib/components/Quill/TableModule/index.css +25 -25
  130. package/lib/components/Quill/TableModule/index.d.ts +14 -5
  131. package/lib/components/Quill/TableModule/index.js +373 -313
  132. package/lib/components/Quill/TableModule/utils.js +45 -45
  133. package/lib/components/Quill/accessibilityFix.d.ts +0 -1
  134. package/lib/components/Quill/accessibilityFix.js +222 -238
  135. package/lib/components/Quill/index.js +36 -32
  136. package/lib/components/RefreshIndicator/Bordered.js +48 -32
  137. package/lib/components/RefreshIndicator/Inline.js +48 -33
  138. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  139. package/lib/components/RefreshIndicator/index.js +263 -113
  140. package/lib/components/SearchControls.js +216 -31
  141. package/lib/components/SentryRoute.js +10 -23
  142. package/lib/components/Tables/RoleFilter.d.ts +3 -4
  143. package/lib/components/Tables/RoleFilter.js +71 -46
  144. package/lib/components/Tables/TextFilter.d.ts +2 -3
  145. package/lib/components/Tables/TextFilter.js +62 -20
  146. package/lib/components/UserRoles/Add.d.ts +3 -3
  147. package/lib/components/UserRoles/Add.js +199 -161
  148. package/lib/components/UserRoles/Context.js +8 -6
  149. package/lib/components/UserRoles/RoleCell.js +181 -100
  150. package/lib/components/UserRoles/Select.js +168 -54
  151. package/lib/components/UserRoles/Table.js +221 -102
  152. package/lib/components/UserRoles/index.d.ts +6 -6
  153. package/lib/components/UserRoles/index.js +535 -464
  154. package/lib/config/eslint/index.d.ts +2 -0
  155. package/lib/config/eslint/index.js +36 -0
  156. package/lib/config/eslint/lib/order.d.ts +3 -0
  157. package/lib/config/eslint/lib/order.js +30 -0
  158. package/lib/config/eslint/lib/prettier.d.ts +3 -0
  159. package/lib/config/eslint/lib/prettier.js +23 -0
  160. package/lib/config/eslint/lib/typescript.d.ts +2 -0
  161. package/lib/config/eslint/lib/typescript.js +98 -0
  162. package/lib/config/eslint/react.d.ts +2 -0
  163. package/lib/config/eslint/react.js +30 -0
  164. package/lib/constants/baseActivity.js +30 -26
  165. package/lib/constants/baseRole.js +14 -10
  166. package/lib/constants/configuration.d.ts +1 -1
  167. package/lib/constants/configuration.js +43 -39
  168. package/lib/constants/externalProviderType.js +10 -6
  169. package/lib/constants/fetchErrorData.js +15 -11
  170. package/lib/constants/index.js +137 -23
  171. package/lib/constants/lockDownBrowser.js +28 -24
  172. package/lib/constants/mockData.d.ts +4 -6
  173. package/lib/constants/mockData.js +383 -324
  174. package/lib/constants/modelStatus.js +15 -11
  175. package/lib/constants/notificationType.js +12 -8
  176. package/lib/constants/operatingSystem.js +12 -8
  177. package/lib/constants/shard.js +11 -7
  178. package/lib/constants/table.js +21 -21
  179. package/lib/constants/tier.js +12 -8
  180. package/lib/constants/userRole.d.ts +1 -2
  181. package/lib/constants/userRole.js +15 -17
  182. package/lib/css/components/_buttons.css +11 -3
  183. package/lib/css/components/_quill.css +3 -3
  184. package/lib/css/components/_tables.css +6 -5
  185. package/lib/css/utils/_display.css +12 -19
  186. package/lib/css/utils/_general.css +1 -1
  187. package/lib/css/utils/_text.css +2 -1
  188. package/lib/css/variables.css +0 -4
  189. package/lib/endpointMappings.js +197 -193
  190. package/lib/hooks/useCollection.js +83 -65
  191. package/lib/hooks/useCollectionConfiguration.d.ts +0 -1
  192. package/lib/hooks/useCollectionConfiguration.js +179 -82
  193. package/lib/hooks/useCollectionItem.js +155 -58
  194. package/lib/hooks/useEventCalback.d.ts +14 -0
  195. package/lib/hooks/useEventCalback.js +51 -0
  196. package/lib/hooks/useGuid.js +19 -8
  197. package/lib/hooks/usePrevious.d.ts +24 -1
  198. package/lib/hooks/usePrevious.js +82 -12
  199. package/lib/index.js +156 -36
  200. package/lib/redux/actionCreator.d.ts +6 -6
  201. package/lib/redux/actionCreator.js +51 -40
  202. package/lib/redux/actions/AuthAction.js +44 -31
  203. package/lib/redux/actions/ModalAction.d.ts +1 -1
  204. package/lib/redux/actions/ModalAction.js +10 -6
  205. package/lib/redux/actions/ModelAction.d.ts +1 -1
  206. package/lib/redux/actions/ModelAction.js +77 -49
  207. package/lib/redux/actions/NotificationAction.js +10 -6
  208. package/lib/redux/actions/SearchAction.js +9 -5
  209. package/lib/redux/actions/index.js +60 -16
  210. package/lib/redux/configureReducers.d.ts +2 -5
  211. package/lib/redux/configureReducers.js +61 -72
  212. package/lib/redux/configureStore.d.ts +2 -2
  213. package/lib/redux/configureStore.js +83 -115
  214. package/lib/redux/helpers.js +7 -2
  215. package/lib/redux/reducers/authReducer.js +50 -44
  216. package/lib/redux/reducers/index.js +41 -15
  217. package/lib/redux/reducers/modalsReducer.js +49 -52
  218. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  219. package/lib/redux/reducers/modelsReducer.js +136 -135
  220. package/lib/redux/reducers/notificationsReducer.js +26 -21
  221. package/lib/redux/reducers/searchReducer.js +18 -12
  222. package/lib/redux/sagas/appInsightsSaga.js +24 -62
  223. package/lib/redux/sagas/authSaga.js +287 -414
  224. package/lib/redux/sagas/caliperSaga.js +154 -248
  225. package/lib/redux/sagas/clockOffsetSaga.js +35 -76
  226. package/lib/redux/sagas/configurationSaga.js +13 -46
  227. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +0 -1
  228. package/lib/redux/sagas/downtimeApiErrorSaga.js +23 -64
  229. package/lib/redux/sagas/errorSaga.d.ts +0 -1
  230. package/lib/redux/sagas/errorSaga.js +29 -63
  231. package/lib/redux/sagas/googleAnalyticsSaga.js +29 -69
  232. package/lib/redux/sagas/identityProviderSaga.js +24 -69
  233. package/lib/redux/sagas/initialDataLoadSaga.js +38 -29
  234. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +0 -1
  235. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +32 -81
  236. package/lib/redux/sagas/modelFetchSaga.js +331 -411
  237. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  238. package/lib/redux/sagas/noStoreSaga.js +68 -101
  239. package/lib/redux/sagas/postLoginDataSaga.js +42 -74
  240. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -68
  241. package/lib/redux/sagas/rootSaga.js +85 -137
  242. package/lib/redux/sagas/sentrySaga.js +29 -85
  243. package/lib/redux/sagas/userIdSaga.js +18 -54
  244. package/lib/services/codeProviderService.js +25 -29
  245. package/lib/services/dateService.js +12 -10
  246. package/lib/services/documentService.js +15 -10
  247. package/lib/services/fetchService.js +110 -144
  248. package/lib/services/persistenceService.d.ts +4 -4
  249. package/lib/services/persistenceService.js +45 -43
  250. package/lib/services/ticketProviderService.js +29 -33
  251. package/lib/services/tokenPersistenceService.js +13 -9
  252. package/lib/services/windowService.js +21 -17
  253. package/lib/startup.d.ts +1 -1
  254. package/lib/startup.js +115 -118
  255. package/lib/types/AppConfiguration.js +5 -1
  256. package/lib/types/Artifact.js +11 -7
  257. package/lib/types/BaseReduxState.js +5 -1
  258. package/lib/types/Client.js +5 -1
  259. package/lib/types/Collection.d.ts +3 -3
  260. package/lib/types/Collection.js +5 -1
  261. package/lib/types/Configuration.js +5 -1
  262. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  263. package/lib/types/DeletableModel.js +5 -1
  264. package/lib/types/Event.js +5 -1
  265. package/lib/types/ExternalGroup.js +5 -1
  266. package/lib/types/ExternalProvider.js +5 -1
  267. package/lib/types/ExternalTerm.js +5 -1
  268. package/lib/types/Group.js +5 -1
  269. package/lib/types/IdentityProvider.js +5 -1
  270. package/lib/types/LtiLaunch.js +5 -1
  271. package/lib/types/NameOnlyEntity.js +5 -1
  272. package/lib/types/Notification.d.ts +2 -2
  273. package/lib/types/Notification.js +5 -1
  274. package/lib/types/OptionalRecord.d.ts +1 -1
  275. package/lib/types/OptionalRecord.js +5 -1
  276. package/lib/types/OwnerSchedule.d.ts +3 -1
  277. package/lib/types/OwnerSchedule.js +5 -1
  278. package/lib/types/PropertyOfType.d.ts +3 -3
  279. package/lib/types/PropertyOfType.js +5 -1
  280. package/lib/types/Quill.js +5 -1
  281. package/lib/types/RoleDescription.d.ts +0 -1
  282. package/lib/types/RoleDescription.js +5 -1
  283. package/lib/types/Search.js +5 -1
  284. package/lib/types/SimpleLocation.js +5 -1
  285. package/lib/types/UniTime.js +5 -1
  286. package/lib/types/User.js +5 -1
  287. package/lib/types/UserRole.js +5 -1
  288. package/lib/types/auth/AuthState.js +5 -1
  289. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  290. package/lib/types/auth/ClientCredentials.js +5 -1
  291. package/lib/types/auth/CodeProviderService.js +5 -1
  292. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  293. package/lib/types/auth/TicketProviderService.js +5 -1
  294. package/lib/types/auth/TokenPersistenceService.js +5 -1
  295. package/lib/types/auth/index.js +82 -18
  296. package/lib/types/externals.d.js +2 -0
  297. package/lib/types/index.js +313 -39
  298. package/lib/types/net/EndpointConfig.js +5 -1
  299. package/lib/types/net/EndpointMapping.js +5 -1
  300. package/lib/types/net/EndpointMappings.js +5 -1
  301. package/lib/types/net/ErrorHandler.d.ts +1 -1
  302. package/lib/types/net/ErrorHandler.js +5 -1
  303. package/lib/types/net/FetchConfig.d.ts +1 -1
  304. package/lib/types/net/FetchConfig.js +5 -1
  305. package/lib/types/net/FetchErrorData.js +10 -6
  306. package/lib/types/net/FetchResult.d.ts +2 -2
  307. package/lib/types/net/FetchResult.js +5 -1
  308. package/lib/types/net/HTTPMethod.d.ts +1 -1
  309. package/lib/types/net/HTTPMethod.js +5 -1
  310. package/lib/types/net/HTTPStatusCode.js +16 -12
  311. package/lib/types/net/Metadata.js +5 -1
  312. package/lib/types/net/Model.js +5 -1
  313. package/lib/types/net/ModelCollection.js +5 -1
  314. package/lib/types/net/ModelsState.js +5 -1
  315. package/lib/types/net/OAuthToken.js +5 -1
  316. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  317. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  318. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  319. package/lib/types/net/TokenAccessFunction.js +5 -1
  320. package/lib/types/net/index.js +181 -27
  321. package/lib/utils/baseActivity.d.ts +2 -2
  322. package/lib/utils/baseActivity.js +93 -91
  323. package/lib/utils/baseRole.js +37 -33
  324. package/lib/utils/collection.js +413 -291
  325. package/lib/utils/cookies.js +22 -37
  326. package/lib/utils/date.js +210 -210
  327. package/lib/utils/dom.js +145 -133
  328. package/lib/utils/domainIdentifier.js +9 -9
  329. package/lib/utils/entityUserRole.js +6 -2
  330. package/lib/utils/error.d.ts +1 -1
  331. package/lib/utils/error.js +18 -16
  332. package/lib/utils/events.js +37 -30
  333. package/lib/utils/externalGroup.js +25 -21
  334. package/lib/utils/externalProviders.js +8 -4
  335. package/lib/utils/externalTerms.js +9 -6
  336. package/lib/utils/fetch.d.ts +1 -1
  337. package/lib/utils/fetch.js +179 -176
  338. package/lib/utils/group.js +17 -9
  339. package/lib/utils/groupDates.d.ts +1 -1
  340. package/lib/utils/groupDates.js +43 -39
  341. package/lib/utils/groupRoles.js +28 -28
  342. package/lib/utils/lockDownBrowser.js +16 -12
  343. package/lib/utils/logger.js +30 -25
  344. package/lib/utils/lti.js +10 -5
  345. package/lib/utils/model.d.ts +2 -2
  346. package/lib/utils/model.js +35 -44
  347. package/lib/utils/number.js +13 -16
  348. package/lib/utils/promise.d.ts +6 -1
  349. package/lib/utils/promise.js +34 -15
  350. package/lib/utils/quill.js +60 -71
  351. package/lib/utils/route.d.ts +2 -2
  352. package/lib/utils/route.js +61 -60
  353. package/lib/utils/search.d.ts +1 -1
  354. package/lib/utils/search.js +78 -85
  355. package/lib/utils/shard.js +38 -41
  356. package/lib/utils/sort.d.ts +3 -3
  357. package/lib/utils/sort.js +62 -58
  358. package/lib/utils/string.js +14 -10
  359. package/lib/utils/table.d.ts +3 -3
  360. package/lib/utils/table.js +36 -33
  361. package/lib/utils/timezone.js +12 -26
  362. package/lib/utils/url.d.ts +2 -1
  363. package/lib/utils/url.js +139 -193
  364. package/lib/utils/user.js +59 -61
  365. package/lib/utils/userAgent.js +11 -11
  366. package/lib/utils/userRole.d.ts +3 -3
  367. package/lib/utils/userRole.js +46 -44
  368. package/package.json +90 -73
  369. package/lib/config/eslint/index.cjs +0 -21
  370. package/lib/config/eslint/lib/order.cjs +0 -22
  371. package/lib/config/eslint/lib/prettier.cjs +0 -18
  372. package/lib/config/eslint/lib/typescript.cjs +0 -86
  373. package/lib/config/eslint/react.cjs +0 -9
  374. package/lib/css/utils/_focus.css +0 -4
@@ -1,26 +1,17 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
17
7
  exports.checkForNonPublicImages = void 0;
18
- var quill_1 = __importDefault(require("quill"));
19
- var uuid_1 = require("uuid");
20
- var actionCreator_1 = require("../redux/actionCreator");
21
- var noStoreSaga_1 = require("../redux/sagas/noStoreSaga");
22
- var fetch_1 = require("./fetch");
23
- var Delta = quill_1.default.import('delta');
8
+ var _quill = _interopRequireDefault(require("quill"));
9
+ var _uuid = require("uuid");
10
+ var _actionCreator = require("../redux/actionCreator");
11
+ var _noStoreSaga = require("../redux/sagas/noStoreSaga");
12
+ var _fetch = require("./fetch");
13
+ const Delta = _quill.default.import('delta');
14
+
24
15
  /**
25
16
  * Check for non-public in the provided quill contents. Update the ImageValue of an op if an image is found to be
26
17
  * non-public.
@@ -28,57 +19,55 @@ var Delta = quill_1.default.import('delta');
28
19
  * @param checkedImages A list of all images we have already processed in previous calls to this function.
29
20
  * list of processed images
30
21
  */
31
- var checkForNonPublicImages = function (quill, checkedImages) {
32
- var _a, _b;
33
- (_b = (_a = quill
34
- .getContents()) === null || _a === void 0 ? void 0 : _a.ops // Is the op an image and have we not seen it before?
35
- ) === null || _b === void 0 ? void 0 : _b.filter(function (op) {
36
- return op.insert.image &&
37
- !checkedImages.find(function (image) { return image.src === op.insert.image.src; }) &&
38
- op.insert.image.src.startsWith('http');
39
- }).forEach(function (op) {
40
- // Check if the image is public. Do not check data:image urls
41
- // Use the backend to check if the image is public
42
- // Due to CSP and other security measures, we can't check this in the frontend
43
- // uuidv5 is a deterministic uuid generator based on a namespace and a name
44
- // uuidv5.URL is the namespace for urls
45
- var hookId = uuid_1.v5(op.insert.image.src, uuid_1.v5.URL);
46
- noStoreSaga_1.noStoreHooks.registerNoStoreActionHook(hookId, function (data) {
47
- noStoreSaga_1.noStoreHooks.unregisterNoStoreActionHook(hookId);
48
- var contentTypeKey;
49
- /**
50
- * API fetches the URL, and `noStoreSaga` returns either the result or error
51
- * * `data` is `null` when the API could not fetch the URL with a successful status code, and returns `null` => `nonPublic`
52
- * * `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
53
- * * `data` is a dictionary of headers when the API does fetch the URL
54
- * * if there is no `Content-Type` header, we don't know if the image is public => do not update
55
- * * if there is a `Content-Type` header, but is NOT an image type (i.e. it was a 302 that, when followed returned HTML)
56
- * (I'm looking at you, Brightspace) => `nonPublic`
57
- * * if there is a `Content-Type` header, and it is an image type, then the image is public => do not update
58
- */
59
- if (!data ||
60
- (!fetch_1.isFetchErrorData(data) &&
61
- (contentTypeKey = Object.keys(data).find(function (k) { return k.toLowerCase() === 'content-type'; })) &&
62
- !data[contentTypeKey][0].startsWith('image'))) {
63
- var contents = quill.getContents();
64
- var ops = contents.map(function (o) {
65
- var _a;
66
- 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
67
- ? __assign(__assign({}, o), { insert: __assign(__assign({}, o.insert), { image: __assign(__assign({}, o.insert.image), { nonPublic: true }) }) }) : o;
68
- });
69
- var updatedContents = contents.diff(new Delta(ops));
70
- quill.updateContents(updatedContents);
22
+ const checkForNonPublicImages = (quill, checkedImages) => {
23
+ quill.getContents().ops // Is the op an image and have we not seen it before?
24
+ ?.filter(op => op.insert.image && !checkedImages.find(image => image.src === op.insert.image.src) && op.insert.image.src.startsWith('http')).forEach(op => {
25
+ // Check if the image is public. Do not check data:image urls
26
+ // Use the backend to check if the image is public
27
+ // Due to CSP and other security measures, we can't check this in the frontend
28
+
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.v5)(op.insert.image.src, _uuid.v5.URL);
32
+ _noStoreSaga.noStoreHooks.registerNoStoreActionHook(hookId, data => {
33
+ _noStoreSaga.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 || !(0, _fetch.isFetchErrorData)(data) && (contentTypeKey = Object.keys(data).find(k => k.toLowerCase() === 'content-type')) && !data[contentTypeKey][0].startsWith('image')) {
46
+ const contents = quill.getContents();
47
+ const ops = contents.map(o => o.insert.image?.src && op.insert.image.src && o.insert.image.src === op.insert.image.src ? {
48
+ ...o,
49
+ insert: {
50
+ ...o.insert,
51
+ image: {
52
+ ...o.insert.image,
53
+ nonPublic: true
71
54
  }
72
- });
73
- // This endpoint returns headers for a url. If the url is nonexistent, it will return null
74
- actionCreator_1.dispatchModelFetchRequest({
75
- modelName: 'urlChecker',
76
- guid: hookId,
77
- noStore: true,
78
- queryParams: {
79
- url: op.insert.image.src
80
- }
81
- });
55
+ }
56
+ } : o);
57
+ const updatedContents = contents.diff(new Delta(ops));
58
+ quill.updateContents(updatedContents);
59
+ }
60
+ });
61
+ // This endpoint returns headers for a url. If the url is nonexistent, it will return null
62
+ (0, _actionCreator.dispatchModelFetchRequest)({
63
+ modelName: 'urlChecker',
64
+ guid: hookId,
65
+ noStore: true,
66
+ queryParams: {
67
+ url: op.insert.image.src
68
+ }
82
69
  });
70
+ });
83
71
  };
84
72
  exports.checkForNonPublicImages = checkForNonPublicImages;
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcXVpbGwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl91dWlkIiwiX2FjdGlvbkNyZWF0b3IiLCJfbm9TdG9yZVNhZ2EiLCJfZmV0Y2giLCJEZWx0YSIsIlF1aWxsIiwiaW1wb3J0IiwiY2hlY2tGb3JOb25QdWJsaWNJbWFnZXMiLCJxdWlsbCIsImNoZWNrZWRJbWFnZXMiLCJnZXRDb250ZW50cyIsIm9wcyIsImZpbHRlciIsIm9wIiwiaW5zZXJ0IiwiaW1hZ2UiLCJmaW5kIiwic3JjIiwic3RhcnRzV2l0aCIsImZvckVhY2giLCJob29rSWQiLCJ1dWlkdjUiLCJVUkwiLCJub1N0b3JlSG9va3MiLCJyZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rIiwiZGF0YSIsInVucmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImNvbnRlbnRUeXBlS2V5IiwiaXNGZXRjaEVycm9yRGF0YSIsIk9iamVjdCIsImtleXMiLCJrIiwidG9Mb3dlckNhc2UiLCJjb250ZW50cyIsIm1hcCIsIm8iLCJub25QdWJsaWMiLCJ1cGRhdGVkQ29udGVudHMiLCJkaWZmIiwidXBkYXRlQ29udGVudHMiLCJkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0IiwibW9kZWxOYW1lIiwiZ3VpZCIsIm5vU3RvcmUiLCJxdWVyeVBhcmFtcyIsInVybCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcXVpbGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1aWxsLCB7IERlbHRhT3BlcmF0aW9uIH0gZnJvbSAncXVpbGwnXG5pbXBvcnQgeyB2NSBhcyB1dWlkdjUgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgSW1hZ2VWYWx1ZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvUXVpbGwvRm9ybWF0cy9JbWFnZSdcbmltcG9ydCB7IGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3QgfSBmcm9tICcuLi9yZWR1eC9hY3Rpb25DcmVhdG9yJ1xuaW1wb3J0IHsgbm9TdG9yZUhvb2tzIH0gZnJvbSAnLi4vcmVkdXgvc2FnYXMvbm9TdG9yZVNhZ2EnXG5pbXBvcnQgeyBGZXRjaEVycm9yRGF0YSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgaXNGZXRjaEVycm9yRGF0YSB9IGZyb20gJy4vZmV0Y2gnXG5cbmNvbnN0IERlbHRhID0gUXVpbGwuaW1wb3J0KCdkZWx0YScpXG5cbi8qKlxuICogQ2hlY2sgZm9yIG5vbi1wdWJsaWMgaW4gdGhlIHByb3ZpZGVkIHF1aWxsIGNvbnRlbnRzLiBVcGRhdGUgdGhlIEltYWdlVmFsdWUgb2YgYW4gb3AgaWYgYW4gaW1hZ2UgaXMgZm91bmQgdG8gYmVcbiAqIG5vbi1wdWJsaWMuXG4gKiBAcGFyYW0gcXVpbGwgVGhlIFF1aWxsIGluc3RhbmNlXG4gKiBAcGFyYW0gY2hlY2tlZEltYWdlcyBBIGxpc3Qgb2YgYWxsIGltYWdlcyB3ZSBoYXZlIGFscmVhZHkgcHJvY2Vzc2VkIGluIHByZXZpb3VzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uXG4gKiBsaXN0IG9mIHByb2Nlc3NlZCBpbWFnZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9yTm9uUHVibGljSW1hZ2VzID0gKHF1aWxsOiBRdWlsbCwgY2hlY2tlZEltYWdlczogSW1hZ2VWYWx1ZVtdKSA9PiB7XG5cdHF1aWxsXG5cdFx0LmdldENvbnRlbnRzKClcblx0XHQub3BzIC8vIElzIHRoZSBvcCBhbiBpbWFnZSBhbmQgaGF2ZSB3ZSBub3Qgc2VlbiBpdCBiZWZvcmU/XG5cdFx0Py5maWx0ZXIoXG5cdFx0XHRvcCA9PlxuXHRcdFx0XHRvcC5pbnNlcnQuaW1hZ2UgJiZcblx0XHRcdFx0IWNoZWNrZWRJbWFnZXMuZmluZChpbWFnZSA9PiBpbWFnZS5zcmMgPT09IG9wLmluc2VydC5pbWFnZS5zcmMpICYmXG5cdFx0XHRcdG9wLmluc2VydC5pbWFnZS5zcmMuc3RhcnRzV2l0aCgnaHR0cCcpXG5cdFx0KVxuXHRcdC5mb3JFYWNoKG9wID0+IHtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBpbWFnZSBpcyBwdWJsaWMuIERvIG5vdCBjaGVjayBkYXRhOmltYWdlIHVybHNcblx0XHRcdC8vIFVzZSB0aGUgYmFja2VuZCB0byBjaGVjayBpZiB0aGUgaW1hZ2UgaXMgcHVibGljXG5cdFx0XHQvLyBEdWUgdG8gQ1NQIGFuZCBvdGhlciBzZWN1cml0eSBtZWFzdXJlcywgd2UgY2FuJ3QgY2hlY2sgdGhpcyBpbiB0aGUgZnJvbnRlbmRcblxuXHRcdFx0Ly8gdXVpZHY1IGlzIGEgZGV0ZXJtaW5pc3RpYyB1dWlkIGdlbmVyYXRvciBiYXNlZCBvbiBhIG5hbWVzcGFjZSBhbmQgYSBuYW1lXG5cdFx0XHQvLyB1dWlkdjUuVVJMIGlzIHRoZSBuYW1lc3BhY2UgZm9yIHVybHNcblx0XHRcdGNvbnN0IGhvb2tJZCA9IHV1aWR2NShvcC5pbnNlcnQuaW1hZ2Uuc3JjLCB1dWlkdjUuVVJMKVxuXHRcdFx0bm9TdG9yZUhvb2tzLnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soaG9va0lkLCAoZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+IHwgRmV0Y2hFcnJvckRhdGEgfCBudWxsKSA9PiB7XG5cdFx0XHRcdG5vU3RvcmVIb29rcy51bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2soaG9va0lkKVxuXHRcdFx0XHRsZXQgY29udGVudFR5cGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuXHRcdFx0XHQvKipcblx0XHRcdFx0ICogQVBJIGZldGNoZXMgdGhlIFVSTCwgYW5kIGBub1N0b3JlU2FnYWAgcmV0dXJucyBlaXRoZXIgdGhlIHJlc3VsdCBvciBlcnJvclxuXHRcdFx0XHQgKiAqIGBkYXRhYCBpcyBgbnVsbGAgd2hlbiB0aGUgQVBJIGNvdWxkIG5vdCBmZXRjaCB0aGUgVVJMIHdpdGggYSBzdWNjZXNzZnVsIHN0YXR1cyBjb2RlLCBhbmQgcmV0dXJucyBgbnVsbGAgPT4gYG5vblB1YmxpY2Bcblx0XHRcdFx0ICogKiBgZGF0YWAgaXMgYEZldGNoRXJyb3JEYXRhYCBpZiB0aGUgQVBJIHJlcXVlc3QgaXRzZWxmIGZhaWxlZCwgZS5nLiBmcm9tIHNvbWUgdW5rbm93biBlcnJvciwgd2UgZG9uJ3Qga25vdyBpZiB0aGUgaW1hZ2UgaXMgcHVibGljID0+IGRvIG5vdCB1cGRhdGVcblx0XHRcdFx0ICogKiBgZGF0YWAgaXMgYSBkaWN0aW9uYXJ5IG9mIGhlYWRlcnMgd2hlbiB0aGUgQVBJIGRvZXMgZmV0Y2ggdGhlIFVSTFxuXHRcdFx0XHQgKiAgICogaWYgdGhlcmUgaXMgbm8gYENvbnRlbnQtVHlwZWAgaGVhZGVyLCB3ZSBkb24ndCBrbm93IGlmIHRoZSBpbWFnZSBpcyBwdWJsaWMgPT4gZG8gbm90IHVwZGF0ZVxuXHRcdFx0XHQgKiAgICogaWYgdGhlcmUgaXMgYSBgQ29udGVudC1UeXBlYCBoZWFkZXIsIGJ1dCBpcyBOT1QgYW4gaW1hZ2UgdHlwZSAoaS5lLiBpdCB3YXMgYSAzMDIgdGhhdCwgd2hlbiBmb2xsb3dlZCByZXR1cm5lZCBIVE1MKVxuXHRcdFx0XHQgKiAgICAgKEknbSBsb29raW5nIGF0IHlvdSwgQnJpZ2h0c3BhY2UpID0+IGBub25QdWJsaWNgXG5cdFx0XHRcdCAqICAgKiBpZiB0aGVyZSBpcyBhIGBDb250ZW50LVR5cGVgIGhlYWRlciwgYW5kIGl0IGlzIGFuIGltYWdlIHR5cGUsIHRoZW4gdGhlIGltYWdlIGlzIHB1YmxpYyA9PiBkbyBub3QgdXBkYXRlXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IWRhdGEgfHxcblx0XHRcdFx0XHQoIWlzRmV0Y2hFcnJvckRhdGEoZGF0YSkgJiZcblx0XHRcdFx0XHRcdChjb250ZW50VHlwZUtleSA9IE9iamVjdC5rZXlzKGRhdGEpLmZpbmQoayA9PiBrLnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSkgJiZcblx0XHRcdFx0XHRcdCFkYXRhW2NvbnRlbnRUeXBlS2V5XVswXS5zdGFydHNXaXRoKCdpbWFnZScpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCBjb250ZW50cyA9IHF1aWxsLmdldENvbnRlbnRzKClcblx0XHRcdFx0XHRjb25zdCBvcHMgPSBjb250ZW50cy5tYXAoKG86IERlbHRhT3BlcmF0aW9uKSA9PlxuXHRcdFx0XHRcdFx0by5pbnNlcnQuaW1hZ2U/LnNyYyAmJiBvcC5pbnNlcnQuaW1hZ2Uuc3JjICYmIG8uaW5zZXJ0LmltYWdlLnNyYyA9PT0gb3AuaW5zZXJ0LmltYWdlLnNyY1xuXHRcdFx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0XHRcdC4uLm8sXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uby5pbnNlcnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGltYWdlOiB7IC4uLm8uaW5zZXJ0LmltYWdlLCBub25QdWJsaWM6IHRydWUgfVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBvXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdGNvbnN0IHVwZGF0ZWRDb250ZW50cyA9IGNvbnRlbnRzLmRpZmYobmV3IERlbHRhKG9wcykpXG5cdFx0XHRcdFx0cXVpbGwudXBkYXRlQ29udGVudHModXBkYXRlZENvbnRlbnRzKVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Ly8gVGhpcyBlbmRwb2ludCByZXR1cm5zIGhlYWRlcnMgZm9yIGEgdXJsLiBJZiB0aGUgdXJsIGlzIG5vbmV4aXN0ZW50LCBpdCB3aWxsIHJldHVybiBudWxsXG5cdFx0XHRkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0KHtcblx0XHRcdFx0bW9kZWxOYW1lOiAndXJsQ2hlY2tlcicsXG5cdFx0XHRcdGd1aWQ6IGhvb2tJZCxcblx0XHRcdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHRcdFx0cXVlcnlQYXJhbXM6IHtcblx0XHRcdFx0XHR1cmw6IG9wLmluc2VydC5pbWFnZS5zcmNcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBRUEsTUFBTUssS0FBSyxHQUFHQyxjQUFLLENBQUNDLE1BQU0sQ0FBQyxPQUFPLENBQUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsdUJBQXVCLEdBQUdBLENBQUNDLEtBQVksRUFBRUMsYUFBMkIsS0FBSztFQUNyRkQsS0FBSyxDQUNIRSxXQUFXLENBQUMsQ0FBQyxDQUNiQyxHQUFHLENBQUM7RUFBQSxFQUNIQyxNQUFNLENBQ1BDLEVBQUUsSUFDREEsRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssSUFDZixDQUFDTixhQUFhLENBQUNPLElBQUksQ0FBQ0QsS0FBSyxJQUFJQSxLQUFLLENBQUNFLEdBQUcsS0FBS0osRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0UsR0FBRyxDQUFDLElBQy9ESixFQUFFLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDRSxHQUFHLENBQUNDLFVBQVUsQ0FBQyxNQUFNLENBQ3ZDLENBQUMsQ0FDQUMsT0FBTyxDQUFDTixFQUFFLElBQUk7SUFDZDtJQUNBO0lBQ0E7O0lBRUE7SUFDQTtJQUNBLE1BQU1PLE1BQU0sR0FBRyxJQUFBQyxRQUFNLEVBQUNSLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsRUFBRUksUUFBTSxDQUFDQyxHQUFHLENBQUM7SUFDdERDLHlCQUFZLENBQUNDLHlCQUF5QixDQUFDSixNQUFNLEVBQUdLLElBQXNELElBQUs7TUFDMUdGLHlCQUFZLENBQUNHLDJCQUEyQixDQUFDTixNQUFNLENBQUM7TUFDaEQsSUFBSU8sY0FBa0M7TUFDdEM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFDSSxJQUNDLENBQUNGLElBQUksSUFDSixDQUFDLElBQUFHLHVCQUFnQixFQUFDSCxJQUFJLENBQUMsS0FDdEJFLGNBQWMsR0FBR0UsTUFBTSxDQUFDQyxJQUFJLENBQUNMLElBQUksQ0FBQyxDQUFDVCxJQUFJLENBQUNlLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLElBQ2xGLENBQUNQLElBQUksQ0FBQ0UsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNULFVBQVUsQ0FBQyxPQUFPLENBQUUsRUFDN0M7UUFDRCxNQUFNZSxRQUFRLEdBQUd6QixLQUFLLENBQUNFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU1DLEdBQUcsR0FBR3NCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFFQyxDQUFpQixJQUMxQ0EsQ0FBQyxDQUFDckIsTUFBTSxDQUFDQyxLQUFLLEVBQUVFLEdBQUcsSUFBSUosRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0UsR0FBRyxJQUFJa0IsQ0FBQyxDQUFDckIsTUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsS0FBS0osRUFBRSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0UsR0FBRyxHQUNyRjtVQUNBLEdBQUdrQixDQUFDO1VBQ0pyQixNQUFNLEVBQUU7WUFDUCxHQUFHcUIsQ0FBQyxDQUFDckIsTUFBTTtZQUNYQyxLQUFLLEVBQUU7Y0FBRSxHQUFHb0IsQ0FBQyxDQUFDckIsTUFBTSxDQUFDQyxLQUFLO2NBQUVxQixTQUFTLEVBQUU7WUFBSztVQUM3QztRQUNELENBQUMsR0FDQUQsQ0FDSixDQUFDO1FBQ0QsTUFBTUUsZUFBZSxHQUFHSixRQUFRLENBQUNLLElBQUksQ0FBQyxJQUFJbEMsS0FBSyxDQUFDTyxHQUFHLENBQUMsQ0FBQztRQUNyREgsS0FBSyxDQUFDK0IsY0FBYyxDQUFDRixlQUFlLENBQUM7TUFDdEM7SUFDRCxDQUFDLENBQUM7SUFDRjtJQUNBLElBQUFHLHdDQUF5QixFQUFDO01BQ3pCQyxTQUFTLEVBQUUsWUFBWTtNQUN2QkMsSUFBSSxFQUFFdEIsTUFBTTtNQUNadUIsT0FBTyxFQUFFLElBQUk7TUFDYkMsV0FBVyxFQUFFO1FBQ1pDLEdBQUcsRUFBRWhDLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNFO01BQ3RCO0lBQ0QsQ0FBQyxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFBNkIsT0FBQSxDQUFBdkMsdUJBQUEsR0FBQUEsdUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,5 +1,5 @@
1
1
  import { Dictionary } from 'lodash';
2
- export declare const getModelIdFromRouteMatchParams: (routeMatchParams: Dictionary<any>, modelName: string) => string | number | undefined;
3
- export declare const getPathParamsFromRouteMatchParams: (routeMatchParams: Dictionary<any>, modelName: string) => any[];
2
+ export declare const getModelIdFromRouteMatchParams: (routeMatchParams: Dictionary<string>, modelName: string) => string | number | undefined;
3
+ export declare const getPathParamsFromRouteMatchParams: (routeMatchParams: Dictionary<string>, modelName: string) => any[];
4
4
  export declare const getMinRequiredPathParamsCount: (modelName: string) => number;
5
5
  export declare const getReduxModelName: (pathParams: any[], modelName: string) => string;
@@ -1,69 +1,70 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getReduxModelName = exports.getMinRequiredPathParamsCount = exports.getPathParamsFromRouteMatchParams = exports.getModelIdFromRouteMatchParams = void 0;
7
- var lodash_1 = __importDefault(require("lodash"));
8
- var pluralize_1 = __importDefault(require("pluralize"));
9
- var configuration_1 = require("../constants/configuration");
10
- var getModelIdFromRouteMatchParams = function (routeMatchParams, modelName) {
11
- var singularModelName = pluralize_1.default.singular(modelName);
12
- var id = routeMatchParams[singularModelName + "Id"];
13
- if (isNaN(id)) {
14
- return id;
15
- }
16
- return parseInt(id, 10);
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getReduxModelName = exports.getPathParamsFromRouteMatchParams = exports.getModelIdFromRouteMatchParams = exports.getMinRequiredPathParamsCount = void 0;
8
+ var _lodash = _interopRequireDefault(require("lodash"));
9
+ var _pluralize = _interopRequireDefault(require("pluralize"));
10
+ var _configuration = require("../constants/configuration");
11
+ const getModelIdFromRouteMatchParams = (routeMatchParams, modelName) => {
12
+ const singularModelName = _pluralize.default.singular(modelName);
13
+ const id = routeMatchParams[`${singularModelName}Id`];
14
+ if (!id || isNaN(Number(id))) {
15
+ return id;
16
+ }
17
+ return parseInt(id, 10);
17
18
  };
18
19
  exports.getModelIdFromRouteMatchParams = getModelIdFromRouteMatchParams;
19
- var getPathParamsFromRouteMatchParams = function (routeMatchParams, modelName) {
20
- var pathParams = modelName.split('.').reduce(function (retval, levelName) {
21
- var levelId = exports.getModelIdFromRouteMatchParams(routeMatchParams, levelName);
22
- if (levelId) {
23
- retval.push(levelId);
24
- }
25
- return retval;
26
- }, []);
27
- return pathParams;
20
+ const getPathParamsFromRouteMatchParams = (routeMatchParams, modelName) => {
21
+ const pathParams = modelName.split('.').reduce((retval, levelName) => {
22
+ const levelId = getModelIdFromRouteMatchParams(routeMatchParams, levelName);
23
+ if (levelId) {
24
+ retval.push(levelId);
25
+ }
26
+ return retval;
27
+ }, []);
28
+ return pathParams;
28
29
  };
29
30
  exports.getPathParamsFromRouteMatchParams = getPathParamsFromRouteMatchParams;
30
- var getMinRequiredPathParamsCount = function (modelName) {
31
- var endpointMappings = configuration_1.getEndpointMappings();
32
- var pathParamCount = 0;
33
- var modelLevelNames = modelName.split('.');
34
- modelLevelNames.forEach(function (levelName, index) {
35
- var modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
36
- var modelLevel = modelLevelName ? lodash_1.default.get(endpointMappings, modelLevelName) : {};
37
- var modelConfig = lodash_1.default.merge({}, modelLevel._config);
38
- if (modelConfig.isCollection && index + 1 < modelLevelNames.length) {
39
- pathParamCount++;
40
- }
41
- });
42
- return pathParamCount;
31
+ const getMinRequiredPathParamsCount = modelName => {
32
+ const endpointMappings = (0, _configuration.getEndpointMappings)();
33
+ let pathParamCount = 0;
34
+ const modelLevelNames = modelName.split('.');
35
+ modelLevelNames.forEach((levelName, index) => {
36
+ const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
37
+ const modelLevel = modelLevelName ? _lodash.default.get(endpointMappings, modelLevelName) : {};
38
+ const modelConfig = _lodash.default.merge({}, modelLevel._config);
39
+ if (modelConfig.isCollection && index + 1 < modelLevelNames.length) {
40
+ pathParamCount++;
41
+ }
42
+ });
43
+ return pathParamCount;
43
44
  };
44
45
  exports.getMinRequiredPathParamsCount = getMinRequiredPathParamsCount;
45
- var getReduxModelName = function (pathParams, modelName) {
46
- var endpointMappings = configuration_1.getEndpointMappings();
47
- var reduxModelName = modelName;
48
- if (pathParams.length > 0) {
49
- var pathParamIndex_1 = 0;
50
- var modelLevelNames_1 = modelName.split('.');
51
- modelLevelNames_1.forEach(function (levelName, index) {
52
- var modelLevelName = modelLevelNames_1.slice(0, index + 1).join('.');
53
- var modelLevel = modelLevelName ? lodash_1.default.get(endpointMappings, modelLevelName) : {};
54
- var modelConfig = lodash_1.default.merge({}, modelLevel._config);
55
- if (index === 0) {
56
- reduxModelName = levelName;
57
- }
58
- else {
59
- reduxModelName = reduxModelName + "." + levelName;
60
- }
61
- if (pathParams.length - 1 >= pathParamIndex_1 && modelConfig.isCollection) {
62
- reduxModelName = reduxModelName + "." + pathParams[pathParamIndex_1];
63
- pathParamIndex_1++;
64
- }
65
- });
66
- }
67
- return reduxModelName;
46
+ const getReduxModelName = (pathParams, modelName) => {
47
+ const endpointMappings = (0, _configuration.getEndpointMappings)();
48
+ let reduxModelName = modelName;
49
+ if (pathParams.length > 0) {
50
+ let pathParamIndex = 0;
51
+ const modelLevelNames = modelName.split('.');
52
+ modelLevelNames.forEach((levelName, index) => {
53
+ const modelLevelName = modelLevelNames.slice(0, index + 1).join('.');
54
+ const modelLevel = modelLevelName ? _lodash.default.get(endpointMappings, modelLevelName) : {};
55
+ const modelConfig = _lodash.default.merge({}, modelLevel._config);
56
+ if (index === 0) {
57
+ reduxModelName = levelName;
58
+ } else {
59
+ reduxModelName = `${reduxModelName}.${levelName}`;
60
+ }
61
+ if (pathParams.length - 1 >= pathParamIndex && modelConfig.isCollection) {
62
+ reduxModelName = `${reduxModelName}.${pathParams[pathParamIndex]}`;
63
+ pathParamIndex++;
64
+ }
65
+ });
66
+ }
67
+ return reduxModelName;
68
68
  };
69
69
  exports.getReduxModelName = getReduxModelName;
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGx1cmFsaXplIiwiX2NvbmZpZ3VyYXRpb24iLCJnZXRNb2RlbElkRnJvbVJvdXRlTWF0Y2hQYXJhbXMiLCJyb3V0ZU1hdGNoUGFyYW1zIiwibW9kZWxOYW1lIiwic2luZ3VsYXJNb2RlbE5hbWUiLCJwbHVyYWxpemUiLCJzaW5ndWxhciIsImlkIiwiaXNOYU4iLCJOdW1iZXIiLCJwYXJzZUludCIsImV4cG9ydHMiLCJnZXRQYXRoUGFyYW1zRnJvbVJvdXRlTWF0Y2hQYXJhbXMiLCJwYXRoUGFyYW1zIiwic3BsaXQiLCJyZWR1Y2UiLCJyZXR2YWwiLCJsZXZlbE5hbWUiLCJsZXZlbElkIiwicHVzaCIsImdldE1pblJlcXVpcmVkUGF0aFBhcmFtc0NvdW50IiwiZW5kcG9pbnRNYXBwaW5ncyIsImdldEVuZHBvaW50TWFwcGluZ3MiLCJwYXRoUGFyYW1Db3VudCIsIm1vZGVsTGV2ZWxOYW1lcyIsImZvckVhY2giLCJpbmRleCIsIm1vZGVsTGV2ZWxOYW1lIiwic2xpY2UiLCJqb2luIiwibW9kZWxMZXZlbCIsIl8iLCJnZXQiLCJtb2RlbENvbmZpZyIsIm1lcmdlIiwiX2NvbmZpZyIsImlzQ29sbGVjdGlvbiIsImxlbmd0aCIsImdldFJlZHV4TW9kZWxOYW1lIiwicmVkdXhNb2RlbE5hbWUiLCJwYXRoUGFyYW1JbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yb3V0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXywgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHBsdXJhbGl6ZSBmcm9tICdwbHVyYWxpemUnXG5pbXBvcnQgeyBnZXRFbmRwb2ludE1hcHBpbmdzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZ3VyYXRpb24nXG5cbmV4cG9ydCBjb25zdCBnZXRNb2RlbElkRnJvbVJvdXRlTWF0Y2hQYXJhbXMgPSAocm91dGVNYXRjaFBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+LCBtb2RlbE5hbWU6IHN0cmluZykgPT4ge1xuXHRjb25zdCBzaW5ndWxhck1vZGVsTmFtZSA9IHBsdXJhbGl6ZS5zaW5ndWxhcihtb2RlbE5hbWUpXG5cdGNvbnN0IGlkID0gcm91dGVNYXRjaFBhcmFtc1tgJHtzaW5ndWxhck1vZGVsTmFtZX1JZGBdIGFzIHN0cmluZyB8IHVuZGVmaW5lZFxuXHRpZiAoIWlkIHx8IGlzTmFOKE51bWJlcihpZCkpKSB7XG5cdFx0cmV0dXJuIGlkXG5cdH1cblx0cmV0dXJuIHBhcnNlSW50KGlkLCAxMClcbn1cblxuZXhwb3J0IGNvbnN0IGdldFBhdGhQYXJhbXNGcm9tUm91dGVNYXRjaFBhcmFtcyA9IChyb3V0ZU1hdGNoUGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4sIG1vZGVsTmFtZTogc3RyaW5nKSA9PiB7XG5cdGNvbnN0IHBhdGhQYXJhbXMgPSBtb2RlbE5hbWUuc3BsaXQoJy4nKS5yZWR1Y2UoKHJldHZhbDogYW55W10sIGxldmVsTmFtZSkgPT4ge1xuXHRcdGNvbnN0IGxldmVsSWQgPSBnZXRNb2RlbElkRnJvbVJvdXRlTWF0Y2hQYXJhbXMocm91dGVNYXRjaFBhcmFtcywgbGV2ZWxOYW1lKVxuXHRcdGlmIChsZXZlbElkKSB7XG5cdFx0XHRyZXR2YWwucHVzaChsZXZlbElkKVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dmFsXG5cdH0sIFtdKVxuXHRyZXR1cm4gcGF0aFBhcmFtc1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TWluUmVxdWlyZWRQYXRoUGFyYW1zQ291bnQgPSAobW9kZWxOYW1lOiBzdHJpbmcpID0+IHtcblx0Y29uc3QgZW5kcG9pbnRNYXBwaW5ncyA9IGdldEVuZHBvaW50TWFwcGluZ3MoKVxuXHRsZXQgcGF0aFBhcmFtQ291bnQgPSAwXG5cdGNvbnN0IG1vZGVsTGV2ZWxOYW1lcyA9IG1vZGVsTmFtZS5zcGxpdCgnLicpXG5cdG1vZGVsTGV2ZWxOYW1lcy5mb3JFYWNoKChsZXZlbE5hbWUsIGluZGV4KSA9PiB7XG5cdFx0Y29uc3QgbW9kZWxMZXZlbE5hbWUgPSBtb2RlbExldmVsTmFtZXMuc2xpY2UoMCwgaW5kZXggKyAxKS5qb2luKCcuJylcblx0XHRjb25zdCBtb2RlbExldmVsID0gbW9kZWxMZXZlbE5hbWUgPyBfLmdldChlbmRwb2ludE1hcHBpbmdzLCBtb2RlbExldmVsTmFtZSkgOiB7fVxuXHRcdGNvbnN0IG1vZGVsQ29uZmlnID0gXy5tZXJnZSh7fSwgbW9kZWxMZXZlbC5fY29uZmlnKVxuXHRcdGlmIChtb2RlbENvbmZpZy5pc0NvbGxlY3Rpb24gJiYgaW5kZXggKyAxIDwgbW9kZWxMZXZlbE5hbWVzLmxlbmd0aCkge1xuXHRcdFx0cGF0aFBhcmFtQ291bnQrK1xuXHRcdH1cblx0fSlcblx0cmV0dXJuIHBhdGhQYXJhbUNvdW50XG59XG5cbmV4cG9ydCBjb25zdCBnZXRSZWR1eE1vZGVsTmFtZSA9IChwYXRoUGFyYW1zOiBhbnlbXSwgbW9kZWxOYW1lOiBzdHJpbmcpID0+IHtcblx0Y29uc3QgZW5kcG9pbnRNYXBwaW5ncyA9IGdldEVuZHBvaW50TWFwcGluZ3MoKVxuXHRsZXQgcmVkdXhNb2RlbE5hbWUgPSBtb2RlbE5hbWVcblx0aWYgKHBhdGhQYXJhbXMubGVuZ3RoID4gMCkge1xuXHRcdGxldCBwYXRoUGFyYW1JbmRleCA9IDBcblx0XHRjb25zdCBtb2RlbExldmVsTmFtZXMgPSBtb2RlbE5hbWUuc3BsaXQoJy4nKVxuXHRcdG1vZGVsTGV2ZWxOYW1lcy5mb3JFYWNoKChsZXZlbE5hbWUsIGluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCBtb2RlbExldmVsTmFtZSA9IG1vZGVsTGV2ZWxOYW1lcy5zbGljZSgwLCBpbmRleCArIDEpLmpvaW4oJy4nKVxuXHRcdFx0Y29uc3QgbW9kZWxMZXZlbCA9IG1vZGVsTGV2ZWxOYW1lID8gXy5nZXQoZW5kcG9pbnRNYXBwaW5ncywgbW9kZWxMZXZlbE5hbWUpIDoge31cblx0XHRcdGNvbnN0IG1vZGVsQ29uZmlnID0gXy5tZXJnZSh7fSwgbW9kZWxMZXZlbC5fY29uZmlnKVxuXHRcdFx0aWYgKGluZGV4ID09PSAwKSB7XG5cdFx0XHRcdHJlZHV4TW9kZWxOYW1lID0gbGV2ZWxOYW1lXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWR1eE1vZGVsTmFtZSA9IGAke3JlZHV4TW9kZWxOYW1lfS4ke2xldmVsTmFtZX1gXG5cdFx0XHR9XG5cdFx0XHRpZiAocGF0aFBhcmFtcy5sZW5ndGggLSAxID49IHBhdGhQYXJhbUluZGV4ICYmIG1vZGVsQ29uZmlnLmlzQ29sbGVjdGlvbikge1xuXHRcdFx0XHRyZWR1eE1vZGVsTmFtZSA9IGAke3JlZHV4TW9kZWxOYW1lfS4ke3BhdGhQYXJhbXNbcGF0aFBhcmFtSW5kZXhdfWBcblx0XHRcdFx0cGF0aFBhcmFtSW5kZXgrK1xuXHRcdFx0fVxuXHRcdH0pXG5cdH1cblx0cmV0dXJuIHJlZHV4TW9kZWxOYW1lXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFFTyxNQUFNRyw4QkFBOEIsR0FBR0EsQ0FBQ0MsZ0JBQW9DLEVBQUVDLFNBQWlCLEtBQUs7RUFDMUcsTUFBTUMsaUJBQWlCLEdBQUdDLGtCQUFTLENBQUNDLFFBQVEsQ0FBQ0gsU0FBUyxDQUFDO0VBQ3ZELE1BQU1JLEVBQUUsR0FBR0wsZ0JBQWdCLENBQUMsR0FBR0UsaUJBQWlCLElBQUksQ0FBdUI7RUFDM0UsSUFBSSxDQUFDRyxFQUFFLElBQUlDLEtBQUssQ0FBQ0MsTUFBTSxDQUFDRixFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzdCLE9BQU9BLEVBQUU7RUFDVjtFQUNBLE9BQU9HLFFBQVEsQ0FBQ0gsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBQUFJLE9BQUEsQ0FBQVYsOEJBQUEsR0FBQUEsOEJBQUE7QUFFTSxNQUFNVyxpQ0FBaUMsR0FBR0EsQ0FBQ1YsZ0JBQW9DLEVBQUVDLFNBQWlCLEtBQUs7RUFDN0csTUFBTVUsVUFBVSxHQUFHVixTQUFTLENBQUNXLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLE1BQWEsRUFBRUMsU0FBUyxLQUFLO0lBQzVFLE1BQU1DLE9BQU8sR0FBR2pCLDhCQUE4QixDQUFDQyxnQkFBZ0IsRUFBRWUsU0FBUyxDQUFDO0lBQzNFLElBQUlDLE9BQU8sRUFBRTtNQUNaRixNQUFNLENBQUNHLElBQUksQ0FBQ0QsT0FBTyxDQUFDO0lBQ3JCO0lBQ0EsT0FBT0YsTUFBTTtFQUNkLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDTixPQUFPSCxVQUFVO0FBQ2xCLENBQUM7QUFBQUYsT0FBQSxDQUFBQyxpQ0FBQSxHQUFBQSxpQ0FBQTtBQUVNLE1BQU1RLDZCQUE2QixHQUFJakIsU0FBaUIsSUFBSztFQUNuRSxNQUFNa0IsZ0JBQWdCLEdBQUcsSUFBQUMsa0NBQW1CLEVBQUMsQ0FBQztFQUM5QyxJQUFJQyxjQUFjLEdBQUcsQ0FBQztFQUN0QixNQUFNQyxlQUFlLEdBQUdyQixTQUFTLENBQUNXLEtBQUssQ0FBQyxHQUFHLENBQUM7RUFDNUNVLGVBQWUsQ0FBQ0MsT0FBTyxDQUFDLENBQUNSLFNBQVMsRUFBRVMsS0FBSyxLQUFLO0lBQzdDLE1BQU1DLGNBQWMsR0FBR0gsZUFBZSxDQUFDSSxLQUFLLENBQUMsQ0FBQyxFQUFFRixLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEUsTUFBTUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdJLGVBQUMsQ0FBQ0MsR0FBRyxDQUFDWCxnQkFBZ0IsRUFBRU0sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hGLE1BQU1NLFdBQVcsR0FBR0YsZUFBQyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUVKLFVBQVUsQ0FBQ0ssT0FBTyxDQUFDO0lBQ25ELElBQUlGLFdBQVcsQ0FBQ0csWUFBWSxJQUFJVixLQUFLLEdBQUcsQ0FBQyxHQUFHRixlQUFlLENBQUNhLE1BQU0sRUFBRTtNQUNuRWQsY0FBYyxFQUFFO0lBQ2pCO0VBQ0QsQ0FBQyxDQUFDO0VBQ0YsT0FBT0EsY0FBYztBQUN0QixDQUFDO0FBQUFaLE9BQUEsQ0FBQVMsNkJBQUEsR0FBQUEsNkJBQUE7QUFFTSxNQUFNa0IsaUJBQWlCLEdBQUdBLENBQUN6QixVQUFpQixFQUFFVixTQUFpQixLQUFLO0VBQzFFLE1BQU1rQixnQkFBZ0IsR0FBRyxJQUFBQyxrQ0FBbUIsRUFBQyxDQUFDO0VBQzlDLElBQUlpQixjQUFjLEdBQUdwQyxTQUFTO0VBQzlCLElBQUlVLFVBQVUsQ0FBQ3dCLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDMUIsSUFBSUcsY0FBYyxHQUFHLENBQUM7SUFDdEIsTUFBTWhCLGVBQWUsR0FBR3JCLFNBQVMsQ0FBQ1csS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM1Q1UsZUFBZSxDQUFDQyxPQUFPLENBQUMsQ0FBQ1IsU0FBUyxFQUFFUyxLQUFLLEtBQUs7TUFDN0MsTUFBTUMsY0FBYyxHQUFHSCxlQUFlLENBQUNJLEtBQUssQ0FBQyxDQUFDLEVBQUVGLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUNwRSxNQUFNQyxVQUFVLEdBQUdILGNBQWMsR0FBR0ksZUFBQyxDQUFDQyxHQUFHLENBQUNYLGdCQUFnQixFQUFFTSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDaEYsTUFBTU0sV0FBVyxHQUFHRixlQUFDLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRUosVUFBVSxDQUFDSyxPQUFPLENBQUM7TUFDbkQsSUFBSVQsS0FBSyxLQUFLLENBQUMsRUFBRTtRQUNoQmEsY0FBYyxHQUFHdEIsU0FBUztNQUMzQixDQUFDLE1BQU07UUFDTnNCLGNBQWMsR0FBRyxHQUFHQSxjQUFjLElBQUl0QixTQUFTLEVBQUU7TUFDbEQ7TUFDQSxJQUFJSixVQUFVLENBQUN3QixNQUFNLEdBQUcsQ0FBQyxJQUFJRyxjQUFjLElBQUlQLFdBQVcsQ0FBQ0csWUFBWSxFQUFFO1FBQ3hFRyxjQUFjLEdBQUcsR0FBR0EsY0FBYyxJQUFJMUIsVUFBVSxDQUFDMkIsY0FBYyxDQUFDLEVBQUU7UUFDbEVBLGNBQWMsRUFBRTtNQUNqQjtJQUNELENBQUMsQ0FBQztFQUNIO0VBQ0EsT0FBT0QsY0FBYztBQUN0QixDQUFDO0FBQUE1QixPQUFBLENBQUEyQixpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -14,7 +14,7 @@ export declare const isEntityMatchedByKeywords: (entity: {
14
14
  export declare const searchEntities: <T extends {
15
15
  isDeleted: boolean;
16
16
  activities: string[];
17
- }>(entityArray: T[], entityMatchFunction: (entity: T, keywordsList: string[]) => boolean, readActivity: string, canReadAnyGlobally?: boolean | undefined, keywords?: string | undefined) => Record<number, T[]>;
17
+ }>(entityArray: T[], entityMatchFunction: (entity: T, keywordsList: string[]) => boolean, readActivity: string, canReadAnyGlobally?: boolean, keywords?: string) => Record<number, T[]>;
18
18
  export interface SearchModelArrayParams<TModel> {
19
19
  modelArray: TModel[];
20
20
  canReadyAnyGlobally?: boolean;
@@ -1,96 +1,89 @@
1
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
- var table_1 = require("../constants/table");
5
- var date_1 = require("./date");
6
- var groupDates_1 = require("./groupDates");
7
- var groupRoles_1 = require("./groupRoles");
8
- var getKeywordsList = function (keywords) {
9
- if (!keywords)
10
- return [];
11
- return keywords
12
- .trim()
13
- .toLowerCase()
14
- .split(' ')
15
- .filter(function (k) { return !!k; });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.searchGroups = exports.searchEntities = exports.isEntityUserMatchedByKeyword = exports.isEntityMatchedByKeywords = exports.isEntityMatchedByKeyword = exports.getKeywordsList = void 0;
7
+ var _table = require("../constants/table");
8
+ var _date = require("./date");
9
+ var _groupDates = require("./groupDates");
10
+ var _groupRoles = require("./groupRoles");
11
+ const getKeywordsList = keywords => {
12
+ if (!keywords) return [];
13
+ return keywords.trim().toLowerCase().split(' ').filter(k => !!k);
16
14
  };
17
15
  exports.getKeywordsList = getKeywordsList;
18
- var isEntityUserMatchedByKeyword = function (owner, keyword) {
19
- var _a, _b, _c, _d;
20
- return owner.id.toString().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));
25
- };
16
+ 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);
26
17
  exports.isEntityUserMatchedByKeyword = isEntityUserMatchedByKeyword;
27
- var isEntityMatchedByKeyword = function (entity, keyword) {
28
- return entity.id.toString().toLowerCase().includes(keyword) ||
29
- entity.name.toLowerCase().includes(keyword) ||
30
- entity.owners.some(function (owner) { return exports.isEntityUserMatchedByKeyword(owner, keyword); });
31
- };
18
+ const isEntityMatchedByKeyword = (entity, keyword) => entity.id.toString().toLowerCase().includes(keyword) || entity.name.toLowerCase().includes(keyword) || entity.owners.some(owner => isEntityUserMatchedByKeyword(owner, keyword));
32
19
  exports.isEntityMatchedByKeyword = isEntityMatchedByKeyword;
33
- var isEntityMatchedByKeywords = function (entity, keywordsList) { return !keywordsList || keywordsList.length === 0 || keywordsList.every(function (k) { return exports.isEntityMatchedByKeyword(entity, k); }); };
20
+ const isEntityMatchedByKeywords = (entity, keywordsList) => keywordsList.length === 0 || keywordsList.every(k => isEntityMatchedByKeyword(entity, k));
34
21
  exports.isEntityMatchedByKeywords = isEntityMatchedByKeywords;
35
- var searchEntities = function (entityArray, entityMatchFunction, readActivity, canReadAnyGlobally, keywords) {
36
- var _a;
37
- var keywordsList = exports.getKeywordsList(keywords);
38
- var filteredEntities = entityArray.reduce(function (acc, e) {
39
- var _a;
40
- // exclude if cannot read any entity and does not have the read activity
41
- if (!canReadAnyGlobally && !e.activities.includes(readActivity))
42
- return acc;
43
- // exclude if does not match, if any
44
- if (!entityMatchFunction(e, keywordsList))
45
- return acc;
46
- // add entity to the corresponding tab filtered array
47
- var tab = e.isDeleted ? table_1.MANAGE_TABLE_TAB.DELETED : table_1.MANAGE_TABLE_TAB.AVAILABLE;
48
- var tabArray = (_a = acc[tab]) !== null && _a !== void 0 ? _a : [];
49
- tabArray.push(e);
50
- acc[tab] = tabArray;
51
- return acc;
52
- }, (_a = {}, _a[table_1.MANAGE_TABLE_TAB.AVAILABLE] = [], _a[table_1.MANAGE_TABLE_TAB.DELETED] = [], _a));
53
- return filteredEntities;
22
+ const searchEntities = (entityArray, entityMatchFunction, readActivity, canReadAnyGlobally, keywords) => {
23
+ const keywordsList = getKeywordsList(keywords);
24
+ const filteredEntities = entityArray.reduce((acc, e) => {
25
+ // exclude if cannot read any entity and does not have the read activity
26
+ if (!canReadAnyGlobally && !e.activities.includes(readActivity)) return acc;
27
+ // exclude if does not match, if any
28
+ if (!entityMatchFunction(e, keywordsList)) return acc;
29
+ // add entity to the corresponding tab filtered array
30
+ const tab = e.isDeleted ? _table.MANAGE_TABLE_TAB.DELETED : _table.MANAGE_TABLE_TAB.AVAILABLE;
31
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
32
+ const tabArray = acc[tab] ?? [];
33
+ tabArray.push(e);
34
+ acc[tab] = tabArray;
35
+ return acc;
36
+ }, {
37
+ [_table.MANAGE_TABLE_TAB.AVAILABLE]: [],
38
+ [_table.MANAGE_TABLE_TAB.DELETED]: []
39
+ });
40
+ return filteredEntities;
54
41
  };
42
+
43
+ //#region Groups
55
44
  exports.searchEntities = searchEntities;
56
- var getGroupTab = function (group, endDate) {
57
- if (group.isDeleted) {
58
- return table_1.GROUP_MANAGE_TABLE_TAB.DELETED;
59
- }
60
- else if (!!group.id && date_1.isNowBeforeDate(endDate)) {
61
- return table_1.GROUP_MANAGE_TABLE_TAB.CURRENT;
62
- }
63
- return table_1.GROUP_MANAGE_TABLE_TAB.PAST;
45
+ const getGroupTab = (group, endDate) => {
46
+ if (group.isDeleted) {
47
+ return _table.GROUP_MANAGE_TABLE_TAB.DELETED;
48
+ } else if (!!group.id && (0, _date.isNowBeforeDate)(endDate)) {
49
+ return _table.GROUP_MANAGE_TABLE_TAB.CURRENT;
50
+ }
51
+ return _table.GROUP_MANAGE_TABLE_TAB.PAST;
64
52
  };
65
- var searchGroups = function (_a) {
66
- var _b;
67
- var groups = _a.groups, groupsArray = _a.modelArray, externalTerms = _a.externalTerms, canReadyAnyGlobally = _a.canReadyAnyGlobally, keywords = _a.keywords, dateString = _a.dateString;
68
- var keywordsList = exports.getKeywordsList(keywords);
69
- var visibleGroups = canReadyAnyGlobally ? groupsArray : groupRoles_1.groupsAsAnythingButLearner(groups);
70
- var filteredGroups = visibleGroups.reduce(function (acc, g) {
71
- var _a;
72
- // exclude if does not match keywords, if any
73
- if (!exports.isEntityMatchedByKeywords(g, keywordsList))
74
- return acc;
75
- var startDate = groupDates_1.getStartDate(externalTerms, g);
76
- var endDate = groupDates_1.getEndDate(externalTerms, g);
77
- // exclude if search dateString is not between group start and end dates
78
- if (!!dateString &&
79
- (date_1.getLocalMomentFromUtc(dateString) < date_1.getLocalMomentFromUtc(startDate) ||
80
- date_1.getLocalMomentFromUtc(dateString) > date_1.getLocalMomentFromUtc(endDate))) {
81
- return acc;
82
- }
83
- var tab = getGroupTab(g, endDate);
84
- var tabArray = (_a = acc[tab]) !== null && _a !== void 0 ? _a : [];
85
- tabArray.push(g);
86
- acc[tab] = tabArray;
87
- return acc;
88
- }, (_b = {},
89
- _b[table_1.GROUP_MANAGE_TABLE_TAB.CURRENT] = [],
90
- _b[table_1.GROUP_MANAGE_TABLE_TAB.PAST] = [],
91
- _b[table_1.GROUP_MANAGE_TABLE_TAB.DELETED] = [],
92
- _b));
93
- return filteredGroups;
53
+ const searchGroups = _ref => {
54
+ let {
55
+ groups,
56
+ modelArray: groupsArray,
57
+ externalTerms,
58
+ canReadyAnyGlobally,
59
+ keywords,
60
+ dateString
61
+ } = _ref;
62
+ const keywordsList = getKeywordsList(keywords);
63
+ const visibleGroups = canReadyAnyGlobally ? groupsArray : (0, _groupRoles.groupsAsAnythingButLearner)(groups);
64
+ const filteredGroups = visibleGroups.reduce((acc, g) => {
65
+ // exclude if does not match keywords, if any
66
+ if (!isEntityMatchedByKeywords(g, keywordsList)) return acc;
67
+ const startDate = (0, _groupDates.getStartDate)(externalTerms, g);
68
+ const endDate = (0, _groupDates.getEndDate)(externalTerms, g);
69
+ // exclude if search dateString is not between group start and end dates
70
+ if (!!dateString && ((0, _date.getLocalMomentFromUtc)(dateString) < (0, _date.getLocalMomentFromUtc)(startDate) || (0, _date.getLocalMomentFromUtc)(dateString) > (0, _date.getLocalMomentFromUtc)(endDate))) {
71
+ return acc;
72
+ }
73
+ const tab = getGroupTab(g, endDate);
74
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
75
+ const tabArray = acc[tab] ?? [];
76
+ tabArray.push(g);
77
+ acc[tab] = tabArray;
78
+ return acc;
79
+ }, {
80
+ [_table.GROUP_MANAGE_TABLE_TAB.CURRENT]: [],
81
+ [_table.GROUP_MANAGE_TABLE_TAB.PAST]: [],
82
+ [_table.GROUP_MANAGE_TABLE_TAB.DELETED]: []
83
+ });
84
+ return filteredGroups;
94
85
  };
95
- exports.searchGroups = searchGroups;
86
+
96
87
  //#endregion Groups
88
+ exports.searchGroups = searchGroups;
89
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFibGUiLCJyZXF1aXJlIiwiX2RhdGUiLCJfZ3JvdXBEYXRlcyIsIl9ncm91cFJvbGVzIiwiZ2V0S2V5d29yZHNMaXN0Iiwia2V5d29yZHMiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJzcGxpdCIsImZpbHRlciIsImsiLCJleHBvcnRzIiwiaXNFbnRpdHlVc2VyTWF0Y2hlZEJ5S2V5d29yZCIsIm93bmVyIiwia2V5d29yZCIsImlkIiwiaW5jbHVkZXMiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInRvU3RyaW5nIiwiZW1haWwiLCJ1aWQiLCJpc0VudGl0eU1hdGNoZWRCeUtleXdvcmQiLCJlbnRpdHkiLCJuYW1lIiwib3duZXJzIiwic29tZSIsImlzRW50aXR5TWF0Y2hlZEJ5S2V5d29yZHMiLCJrZXl3b3Jkc0xpc3QiLCJsZW5ndGgiLCJldmVyeSIsInNlYXJjaEVudGl0aWVzIiwiZW50aXR5QXJyYXkiLCJlbnRpdHlNYXRjaEZ1bmN0aW9uIiwicmVhZEFjdGl2aXR5IiwiY2FuUmVhZEFueUdsb2JhbGx5IiwiZmlsdGVyZWRFbnRpdGllcyIsInJlZHVjZSIsImFjYyIsImUiLCJhY3Rpdml0aWVzIiwidGFiIiwiaXNEZWxldGVkIiwiTUFOQUdFX1RBQkxFX1RBQiIsIkRFTEVURUQiLCJBVkFJTEFCTEUiLCJ0YWJBcnJheSIsInB1c2giLCJnZXRHcm91cFRhYiIsImdyb3VwIiwiZW5kRGF0ZSIsIkdST1VQX01BTkFHRV9UQUJMRV9UQUIiLCJpc05vd0JlZm9yZURhdGUiLCJDVVJSRU5UIiwiUEFTVCIsInNlYXJjaEdyb3VwcyIsIl9yZWYiLCJncm91cHMiLCJtb2RlbEFycmF5IiwiZ3JvdXBzQXJyYXkiLCJleHRlcm5hbFRlcm1zIiwiY2FuUmVhZHlBbnlHbG9iYWxseSIsImRhdGVTdHJpbmciLCJ2aXNpYmxlR3JvdXBzIiwiZ3JvdXBzQXNBbnl0aGluZ0J1dExlYXJuZXIiLCJmaWx0ZXJlZEdyb3VwcyIsImciLCJzdGFydERhdGUiLCJnZXRTdGFydERhdGUiLCJnZXRFbmREYXRlIiwiZ2V0TG9jYWxNb21lbnRGcm9tVXRjIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHUk9VUF9NQU5BR0VfVEFCTEVfVEFCLCBNQU5BR0VfVEFCTEVfVEFCIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RhYmxlJ1xuaW1wb3J0IHsgRW50aXR5VXNlciwgRXh0ZXJuYWxUZXJtLCBHcm91cCwgTW9kZWxDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRMb2NhbE1vbWVudEZyb21VdGMsIGlzTm93QmVmb3JlRGF0ZSB9IGZyb20gJy4vZGF0ZSdcbmltcG9ydCB7IGdldEVuZERhdGUsIGdldFN0YXJ0RGF0ZSB9IGZyb20gJy4vZ3JvdXBEYXRlcydcbmltcG9ydCB7IGdyb3Vwc0FzQW55dGhpbmdCdXRMZWFybmVyIH0gZnJvbSAnLi9ncm91cFJvbGVzJ1xuXG5leHBvcnQgY29uc3QgZ2V0S2V5d29yZHNMaXN0ID0gKGtleXdvcmRzOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0aWYgKCFrZXl3b3JkcykgcmV0dXJuIFtdXG5cdHJldHVybiBrZXl3b3Jkc1xuXHRcdC50cmltKClcblx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdC5zcGxpdCgnICcpXG5cdFx0LmZpbHRlcihrID0+ICEhaylcbn1cblxuZXhwb3J0IGNvbnN0IGlzRW50aXR5VXNlck1hdGNoZWRCeUtleXdvcmQgPSAob3duZXI6IEVudGl0eVVzZXIsIGtleXdvcmQ6IHN0cmluZykgPT5cblx0b3duZXIuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkKSB8fFxuXHQhIW93bmVyLmZpcnN0TmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkKSB8fFxuXHQhIW93bmVyLmxhc3ROYW1lPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZCkgfHxcblx0ISFvd25lci5lbWFpbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleXdvcmQpIHx8XG5cdCEhb3duZXIudWlkPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZClcblxuZXhwb3J0IGNvbnN0IGlzRW50aXR5TWF0Y2hlZEJ5S2V5d29yZCA9IChlbnRpdHk6IHsgaWQ6IG51bWJlcjsgbmFtZTogc3RyaW5nOyBvd25lcnM6IEVudGl0eVVzZXJbXSB9LCBrZXl3b3JkOiBzdHJpbmcpID0+XG5cdGVudGl0eS5pZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5d29yZCkgfHxcblx0ZW50aXR5Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXl3b3JkKSB8fFxuXHRlbnRpdHkub3duZXJzLnNvbWUob3duZXIgPT4gaXNFbnRpdHlVc2VyTWF0Y2hlZEJ5S2V5d29yZChvd25lciwga2V5d29yZCkpXG5cbmV4cG9ydCBjb25zdCBpc0VudGl0eU1hdGNoZWRCeUtleXdvcmRzID0gKFxuXHRlbnRpdHk6IHsgaWQ6IG51bWJlcjsgbmFtZTogc3RyaW5nOyBvd25lcnM6IEVudGl0eVVzZXJbXSB9LFxuXHRrZXl3b3Jkc0xpc3Q6IHN0cmluZ1tdXG4pID0+IGtleXdvcmRzTGlzdC5sZW5ndGggPT09IDAgfHwga2V5d29yZHNMaXN0LmV2ZXJ5KGsgPT4gaXNFbnRpdHlNYXRjaGVkQnlLZXl3b3JkKGVudGl0eSwgaykpXG5cbmV4cG9ydCBjb25zdCBzZWFyY2hFbnRpdGllcyA9IDxUIGV4dGVuZHMgeyBpc0RlbGV0ZWQ6IGJvb2xlYW47IGFjdGl2aXRpZXM6IHN0cmluZ1tdIH0+KFxuXHRlbnRpdHlBcnJheTogVFtdLFxuXHRlbnRpdHlNYXRjaEZ1bmN0aW9uOiAoZW50aXR5OiBULCBrZXl3b3Jkc0xpc3Q6IHN0cmluZ1tdKSA9PiBib29sZWFuLFxuXHRyZWFkQWN0aXZpdHk6IHN0cmluZyxcblx0Y2FuUmVhZEFueUdsb2JhbGx5PzogYm9vbGVhbixcblx0a2V5d29yZHM/OiBzdHJpbmdcbikgPT4ge1xuXHRjb25zdCBrZXl3b3Jkc0xpc3QgPSBnZXRLZXl3b3Jkc0xpc3Qoa2V5d29yZHMpXG5cdGNvbnN0IGZpbHRlcmVkRW50aXRpZXMgPSBlbnRpdHlBcnJheS5yZWR1Y2U8UmVjb3JkPG51bWJlciwgVFtdPj4oXG5cdFx0KGFjYywgZSkgPT4ge1xuXHRcdFx0Ly8gZXhjbHVkZSBpZiBjYW5ub3QgcmVhZCBhbnkgZW50aXR5IGFuZCBkb2VzIG5vdCBoYXZlIHRoZSByZWFkIGFjdGl2aXR5XG5cdFx0XHRpZiAoIWNhblJlYWRBbnlHbG9iYWxseSAmJiAhZS5hY3Rpdml0aWVzLmluY2x1ZGVzKHJlYWRBY3Rpdml0eSkpIHJldHVybiBhY2Ncblx0XHRcdC8vIGV4Y2x1ZGUgaWYgZG9lcyBub3QgbWF0Y2gsIGlmIGFueVxuXHRcdFx0aWYgKCFlbnRpdHlNYXRjaEZ1bmN0aW9uKGUsIGtleXdvcmRzTGlzdCkpIHJldHVybiBhY2Ncblx0XHRcdC8vIGFkZCBlbnRpdHkgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFiIGZpbHRlcmVkIGFycmF5XG5cdFx0XHRjb25zdCB0YWIgPSBlLmlzRGVsZXRlZCA/IE1BTkFHRV9UQUJMRV9UQUIuREVMRVRFRCA6IE1BTkFHRV9UQUJMRV9UQUIuQVZBSUxBQkxFXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuXHRcdFx0Y29uc3QgdGFiQXJyYXk6IFRbXSA9IGFjY1t0YWJdID8/IFtdXG5cdFx0XHR0YWJBcnJheS5wdXNoKGUpXG5cdFx0XHRhY2NbdGFiXSA9IHRhYkFycmF5XG5cdFx0XHRyZXR1cm4gYWNjXG5cdFx0fSxcblx0XHR7IFtNQU5BR0VfVEFCTEVfVEFCLkFWQUlMQUJMRV06IFtdLCBbTUFOQUdFX1RBQkxFX1RBQi5ERUxFVEVEXTogW10gfVxuXHQpXG5cdHJldHVybiBmaWx0ZXJlZEVudGl0aWVzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoTW9kZWxBcnJheVBhcmFtczxUTW9kZWw+IHtcblx0bW9kZWxBcnJheTogVE1vZGVsW11cblx0Y2FuUmVhZHlBbnlHbG9iYWxseT86IGJvb2xlYW5cblx0a2V5d29yZHM/OiBzdHJpbmdcbn1cblxuLy8jcmVnaW9uIEdyb3Vwc1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEdyb3Vwc1BhcmFtcyBleHRlbmRzIFNlYXJjaE1vZGVsQXJyYXlQYXJhbXM8R3JvdXA+IHtcblx0Z3JvdXBzOiBNb2RlbENvbGxlY3Rpb248R3JvdXA+XG5cdGV4dGVybmFsVGVybXM6IE1vZGVsQ29sbGVjdGlvbjxFeHRlcm5hbFRlcm0+XG5cdGRhdGVTdHJpbmc/OiBzdHJpbmdcbn1cblxuY29uc3QgZ2V0R3JvdXBUYWIgPSAoZ3JvdXA6IEdyb3VwLCBlbmREYXRlOiBzdHJpbmcpID0+IHtcblx0aWYgKGdyb3VwLmlzRGVsZXRlZCkge1xuXHRcdHJldHVybiBHUk9VUF9NQU5BR0VfVEFCTEVfVEFCLkRFTEVURURcblx0fSBlbHNlIGlmICghIWdyb3VwLmlkICYmIGlzTm93QmVmb3JlRGF0ZShlbmREYXRlKSkge1xuXHRcdHJldHVybiBHUk9VUF9NQU5BR0VfVEFCTEVfVEFCLkNVUlJFTlRcblx0fVxuXHRyZXR1cm4gR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5QQVNUXG59XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hHcm91cHMgPSAoe1xuXHRncm91cHMsXG5cdG1vZGVsQXJyYXk6IGdyb3Vwc0FycmF5LFxuXHRleHRlcm5hbFRlcm1zLFxuXHRjYW5SZWFkeUFueUdsb2JhbGx5LFxuXHRrZXl3b3Jkcyxcblx0ZGF0ZVN0cmluZ1xufTogU2VhcmNoR3JvdXBzUGFyYW1zKSA9PiB7XG5cdGNvbnN0IGtleXdvcmRzTGlzdCA9IGdldEtleXdvcmRzTGlzdChrZXl3b3Jkcylcblx0Y29uc3QgdmlzaWJsZUdyb3VwcyA9IGNhblJlYWR5QW55R2xvYmFsbHkgPyBncm91cHNBcnJheSA6IGdyb3Vwc0FzQW55dGhpbmdCdXRMZWFybmVyKGdyb3Vwcylcblx0Y29uc3QgZmlsdGVyZWRHcm91cHMgPSB2aXNpYmxlR3JvdXBzLnJlZHVjZTxSZWNvcmQ8bnVtYmVyLCBHcm91cFtdPj4oXG5cdFx0KGFjYywgZykgPT4ge1xuXHRcdFx0Ly8gZXhjbHVkZSBpZiBkb2VzIG5vdCBtYXRjaCBrZXl3b3JkcywgaWYgYW55XG5cdFx0XHRpZiAoIWlzRW50aXR5TWF0Y2hlZEJ5S2V5d29yZHMoZywga2V5d29yZHNMaXN0KSkgcmV0dXJuIGFjY1xuXHRcdFx0Y29uc3Qgc3RhcnREYXRlID0gZ2V0U3RhcnREYXRlKGV4dGVybmFsVGVybXMsIGcpXG5cdFx0XHRjb25zdCBlbmREYXRlID0gZ2V0RW5kRGF0ZShleHRlcm5hbFRlcm1zLCBnKVxuXHRcdFx0Ly8gZXhjbHVkZSBpZiBzZWFyY2ggZGF0ZVN0cmluZyBpcyBub3QgYmV0d2VlbiBncm91cCBzdGFydCBhbmQgZW5kIGRhdGVzXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCEhZGF0ZVN0cmluZyAmJlxuXHRcdFx0XHQoZ2V0TG9jYWxNb21lbnRGcm9tVXRjKGRhdGVTdHJpbmcpIDwgZ2V0TG9jYWxNb21lbnRGcm9tVXRjKHN0YXJ0RGF0ZSkgfHxcblx0XHRcdFx0XHRnZXRMb2NhbE1vbWVudEZyb21VdGMoZGF0ZVN0cmluZykgPiBnZXRMb2NhbE1vbWVudEZyb21VdGMoZW5kRGF0ZSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGFjY1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdGFiID0gZ2V0R3JvdXBUYWIoZywgZW5kRGF0ZSlcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG5cdFx0XHRjb25zdCB0YWJBcnJheTogR3JvdXBbXSA9IGFjY1t0YWJdID8/IFtdXG5cdFx0XHR0YWJBcnJheS5wdXNoKGcpXG5cdFx0XHRhY2NbdGFiXSA9IHRhYkFycmF5XG5cdFx0XHRyZXR1cm4gYWNjXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRbR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5DVVJSRU5UXTogW10sXG5cdFx0XHRbR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5QQVNUXTogW10sXG5cdFx0XHRbR1JPVVBfTUFOQUdFX1RBQkxFX1RBQi5ERUxFVEVEXTogW11cblx0XHR9XG5cdClcblx0cmV0dXJuIGZpbHRlcmVkR3JvdXBzXG59XG5cbi8vI2VuZHJlZ2lvbiBHcm91cHNcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBRU8sTUFBTUksZUFBZSxHQUFJQyxRQUE0QixJQUFLO0VBQ2hFLElBQUksQ0FBQ0EsUUFBUSxFQUFFLE9BQU8sRUFBRTtFQUN4QixPQUFPQSxRQUFRLENBQ2JDLElBQUksQ0FBQyxDQUFDLENBQ05DLFdBQVcsQ0FBQyxDQUFDLENBQ2JDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDVkMsTUFBTSxDQUFDQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUFBQyxPQUFBLENBQUFQLGVBQUEsR0FBQUEsZUFBQTtBQUVNLE1BQU1RLDRCQUE0QixHQUFHQSxDQUFDQyxLQUFpQixFQUFFQyxPQUFlLEtBQzlFRCxLQUFLLENBQUNFLEVBQUUsQ0FBQ1IsV0FBVyxDQUFDLENBQUMsQ0FBQ1MsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDeEMsQ0FBQyxDQUFDRCxLQUFLLENBQUNJLFNBQVMsRUFBRVYsV0FBVyxDQUFDLENBQUMsQ0FBQ1MsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDbEQsQ0FBQyxDQUFDRCxLQUFLLENBQUNLLFFBQVEsRUFBRUMsUUFBUSxDQUFDLENBQUMsQ0FBQ1osV0FBVyxDQUFDLENBQUMsQ0FBQ1MsUUFBUSxDQUFDRixPQUFPLENBQUMsSUFDNUQsQ0FBQyxDQUFDRCxLQUFL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