monkey-front-core 0.0.468 → 0.0.469

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 (376) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/alerts/alerts.component.mjs +45 -45
  3. package/esm2020/lib/components/alerts/alerts.module.mjs +21 -21
  4. package/esm2020/lib/components/alerts/index.mjs +3 -3
  5. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +29 -29
  6. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +43 -43
  7. package/esm2020/lib/components/closed-to-maintenance/index.mjs +3 -3
  8. package/esm2020/lib/components/currency-config/currency-config.component.mjs +39 -39
  9. package/esm2020/lib/components/currency-config/currency-config.module.mjs +39 -39
  10. package/esm2020/lib/components/currency-config/index.mjs +3 -3
  11. package/esm2020/lib/components/index.mjs +6 -6
  12. package/esm2020/lib/components/progress-bar/index.mjs +4 -4
  13. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +23 -23
  14. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +18 -18
  15. package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +50 -50
  16. package/esm2020/lib/components/version-changed/index.mjs +3 -3
  17. package/esm2020/lib/components/version-changed/version-changed.component.mjs +24 -24
  18. package/esm2020/lib/components/version-changed/version-changed.module.mjs +39 -39
  19. package/esm2020/lib/core/decorators/index.mjs +5 -5
  20. package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +40 -40
  21. package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +111 -111
  22. package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +26 -26
  23. package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +26 -26
  24. package/esm2020/lib/core/directives/index.mjs +13 -13
  25. package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +73 -73
  26. package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +57 -57
  27. package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +54 -54
  28. package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +68 -68
  29. package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +44 -44
  30. package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +67 -67
  31. package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +28 -28
  32. package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +28 -28
  33. package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +39 -39
  34. package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +212 -212
  35. package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +75 -75
  36. package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +123 -123
  37. package/esm2020/lib/core/index.mjs +10 -10
  38. package/esm2020/lib/core/interceptors/index.mjs +6 -6
  39. package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +49 -49
  40. package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +59 -59
  41. package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +47 -47
  42. package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +43 -43
  43. package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +37 -37
  44. package/esm2020/lib/core/interfaces/index.mjs +35 -35
  45. package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +2 -2
  46. package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +2 -2
  47. package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +2 -2
  48. package/esm2020/lib/core/interfaces/monkeyecx-config-bootstrap.mjs +1 -1
  49. package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +2 -2
  50. package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +2 -2
  51. package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +2 -2
  52. package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +2 -2
  53. package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +2 -2
  54. package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +2 -2
  55. package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +2 -2
  56. package/esm2020/lib/core/interfaces/monkeyecx-interface.mjs +1 -1
  57. package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +2 -2
  58. package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +2 -2
  59. package/esm2020/lib/core/interfaces/monkeyecx-pagination.mjs +2 -2
  60. package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +2 -2
  61. package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +2 -2
  62. package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +2 -2
  63. package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +2 -2
  64. package/esm2020/lib/core/interfaces/monkeyecx-resolver.mjs +2 -2
  65. package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +2 -2
  66. package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +2 -2
  67. package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +2 -2
  68. package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +2 -2
  69. package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +2 -2
  70. package/esm2020/lib/core/interfaces/monkeyecx-storage.mjs +2 -2
  71. package/esm2020/lib/core/interfaces/monkeyecx-store.mjs +2 -2
  72. package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +2 -2
  73. package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +1 -1
  74. package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +2 -2
  75. package/esm2020/lib/core/interfaces/request-download/index.mjs +4 -4
  76. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +2 -2
  77. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +2 -2
  78. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +2 -2
  79. package/esm2020/lib/core/interfaces/request-queue/index.mjs +4 -4
  80. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +2 -2
  81. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +2 -2
  82. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +2 -2
  83. package/esm2020/lib/core/interfaces/request-upload/index.mjs +3 -3
  84. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +2 -2
  85. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +2 -2
  86. package/esm2020/lib/core/interfaces/schedules/index.mjs +2 -2
  87. package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +2 -2
  88. package/esm2020/lib/core/model/index.mjs +3 -3
  89. package/esm2020/lib/core/model/monkeyecx-links.model.mjs +8 -8
  90. package/esm2020/lib/core/model/monkeyecx-model.mjs +25 -25
  91. package/esm2020/lib/core/pipes/index.mjs +22 -22
  92. package/esm2020/lib/core/pipes/monkeyecx-blob-secure.mjs +26 -26
  93. package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +19 -19
  94. package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +21 -21
  95. package/esm2020/lib/core/pipes/monkeyecx-display-support-phone.mjs +33 -33
  96. package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +20 -20
  97. package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +38 -38
  98. package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +27 -27
  99. package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +45 -45
  100. package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +32 -32
  101. package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +36 -36
  102. package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +20 -20
  103. package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +20 -20
  104. package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +42 -42
  105. package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +20 -20
  106. package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +23 -23
  107. package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +19 -19
  108. package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +19 -19
  109. package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +19 -19
  110. package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +117 -117
  111. package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +23 -23
  112. package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +16 -16
  113. package/esm2020/lib/core/services/alerts/index.mjs +2 -2
  114. package/esm2020/lib/core/services/alerts/monkeyecx-alerts.service.mjs +42 -42
  115. package/esm2020/lib/core/services/auth/index.mjs +6 -6
  116. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +28 -28
  117. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +27 -27
  118. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-role.service.mjs +79 -79
  119. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +26 -26
  120. package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +78 -78
  121. package/esm2020/lib/core/services/commons/index.mjs +3 -3
  122. package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve.service.mjs +127 -126
  123. package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +362 -362
  124. package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +42 -42
  125. package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +28 -28
  126. package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +107 -107
  127. package/esm2020/lib/core/services/config/monkeyecx-currency-config.service.mjs +84 -84
  128. package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +85 -85
  129. package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +76 -76
  130. package/esm2020/lib/core/services/config/monkeyecx-gtm-config.service.mjs +50 -50
  131. package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +152 -152
  132. package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +34 -34
  133. package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +37 -37
  134. package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +47 -47
  135. package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +53 -53
  136. package/esm2020/lib/core/services/error/index.mjs +5 -5
  137. package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +27 -27
  138. package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +37 -37
  139. package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +138 -138
  140. package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +29 -29
  141. package/esm2020/lib/core/services/index.mjs +26 -26
  142. package/esm2020/lib/core/services/logged/index.mjs +2 -2
  143. package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +40 -40
  144. package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +50 -50
  145. package/esm2020/lib/core/services/monkeyecx-service.service.mjs +104 -104
  146. package/esm2020/lib/core/services/pagination/index.mjs +2 -2
  147. package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +29 -29
  148. package/esm2020/lib/core/services/request-download/index.mjs +3 -3
  149. package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +93 -93
  150. package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +61 -61
  151. package/esm2020/lib/core/services/request-paged/index.mjs +2 -2
  152. package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +42 -42
  153. package/esm2020/lib/core/services/request-queue/index.mjs +3 -3
  154. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +114 -114
  155. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +119 -119
  156. package/esm2020/lib/core/services/routes/index.mjs +2 -2
  157. package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +54 -54
  158. package/esm2020/lib/core/services/schedules/index.mjs +2 -2
  159. package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +188 -188
  160. package/esm2020/lib/core/services/storage/index.mjs +3 -3
  161. package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +32 -32
  162. package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +236 -236
  163. package/esm2020/lib/core/services/store/index.mjs +3 -3
  164. package/esm2020/lib/core/services/store/monkeyecx-store.actions.mjs +25 -25
  165. package/esm2020/lib/core/services/store/monkeyecx-store.selector.mjs +75 -75
  166. package/esm2020/lib/core/services/store/monkeyecx-store.service.mjs +189 -189
  167. package/esm2020/lib/core/specification-search/index.mjs +2 -2
  168. package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +108 -108
  169. package/esm2020/lib/core/utils/decorators-utils.mjs +40 -40
  170. package/esm2020/lib/core/utils/index.mjs +8 -8
  171. package/esm2020/lib/core/utils/statics.mjs +45 -45
  172. package/esm2020/lib/core/utils/utils.mjs +267 -267
  173. package/esm2020/lib/core/utils/validate-utils.mjs +205 -205
  174. package/esm2020/lib/core/utils/validators.mjs +268 -268
  175. package/esm2020/lib/monkey-front-core.module.mjs +71 -71
  176. package/esm2020/lib/store/actions/index.mjs +2 -2
  177. package/esm2020/lib/store/actions/monkeyecx-storage.actions.mjs +8 -8
  178. package/esm2020/lib/store/index.mjs +4 -4
  179. package/esm2020/lib/store/reducers/index.mjs +3 -3
  180. package/esm2020/lib/store/reducers/monkeyecx-seeder.reducer.mjs +53 -53
  181. package/esm2020/lib/store/reducers/monkeyecx-storage.reducer.mjs +40 -40
  182. package/esm2020/lib/store/selectors/index.mjs +2 -2
  183. package/esm2020/lib/store/selectors/monkeyecx-storage.selector.mjs +17 -17
  184. package/esm2020/monkey-front-core.mjs +4 -4
  185. package/esm2020/public-api.mjs +8 -8
  186. package/fesm2015/monkey-front-core.mjs +5963 -5962
  187. package/fesm2015/monkey-front-core.mjs.map +1 -1
  188. package/fesm2020/monkey-front-core.mjs +6021 -6020
  189. package/fesm2020/monkey-front-core.mjs.map +1 -1
  190. package/lib/components/alerts/alerts.component.d.ts +22 -22
  191. package/lib/components/alerts/alerts.module.d.ts +10 -10
  192. package/lib/components/alerts/index.d.ts +2 -2
  193. package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +13 -13
  194. package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +11 -11
  195. package/lib/components/closed-to-maintenance/index.d.ts +2 -2
  196. package/lib/components/currency-config/currency-config.component.d.ts +17 -17
  197. package/lib/components/currency-config/currency-config.module.d.ts +10 -10
  198. package/lib/components/currency-config/index.d.ts +2 -2
  199. package/lib/components/index.d.ts +5 -5
  200. package/lib/components/progress-bar/index.d.ts +3 -3
  201. package/lib/components/progress-bar/progress-bar.component.d.ts +11 -11
  202. package/lib/components/progress-bar/progress-bar.module.d.ts +8 -8
  203. package/lib/components/progress-bar/progress-bar.service.d.ts +14 -14
  204. package/lib/components/version-changed/index.d.ts +2 -2
  205. package/lib/components/version-changed/version-changed.component.d.ts +9 -9
  206. package/lib/components/version-changed/version-changed.module.d.ts +10 -10
  207. package/lib/core/decorators/index.d.ts +4 -4
  208. package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +1 -1
  209. package/lib/core/decorators/monkeyecx-decorators.d.ts +7 -7
  210. package/lib/core/decorators/monkeyecx-download-decorators.d.ts +2 -2
  211. package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +2 -2
  212. package/lib/core/directives/index.d.ts +12 -12
  213. package/lib/core/directives/monkeyecx-directives-module.d.ts +19 -19
  214. package/lib/core/directives/monkeyecx-drag-drop.d.ts +12 -12
  215. package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +16 -16
  216. package/lib/core/directives/monkeyecx-feature-directive.d.ts +17 -17
  217. package/lib/core/directives/monkeyecx-format-currency.d.ts +16 -16
  218. package/lib/core/directives/monkeyecx-format-upper.d.ts +18 -18
  219. package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +9 -9
  220. package/lib/core/directives/monkeyecx-only-number-directive.d.ts +9 -9
  221. package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +19 -19
  222. package/lib/core/directives/monkeyecx-popover.directive.d.ts +43 -43
  223. package/lib/core/directives/monkeyecx-security-directive.d.ts +18 -18
  224. package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +23 -23
  225. package/lib/core/index.d.ts +9 -9
  226. package/lib/core/interceptors/index.d.ts +5 -5
  227. package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +18 -18
  228. package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +16 -16
  229. package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +9 -9
  230. package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +12 -12
  231. package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +14 -14
  232. package/lib/core/interfaces/index.d.ts +34 -34
  233. package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +15 -15
  234. package/lib/core/interfaces/monkeyecx-company-pendencies.d.ts +14 -14
  235. package/lib/core/interfaces/monkeyecx-company.d.ts +10 -10
  236. package/lib/core/interfaces/monkeyecx-config-bootstrap.d.ts +14 -14
  237. package/lib/core/interfaces/monkeyecx-config.d.ts +132 -132
  238. package/lib/core/interfaces/monkeyecx-country-security.d.ts +4 -4
  239. package/lib/core/interfaces/monkeyecx-error-response.d.ts +5 -5
  240. package/lib/core/interfaces/monkeyecx-filter.d.ts +42 -42
  241. package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +10 -10
  242. package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +4 -4
  243. package/lib/core/interfaces/monkeyecx-intercom-options.d.ts +4 -4
  244. package/lib/core/interfaces/monkeyecx-interface.d.ts +11 -11
  245. package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +22 -22
  246. package/lib/core/interfaces/monkeyecx-navigation.d.ts +27 -27
  247. package/lib/core/interfaces/monkeyecx-pagination.d.ts +26 -26
  248. package/lib/core/interfaces/monkeyecx-program.d.ts +10 -10
  249. package/lib/core/interfaces/monkeyecx-releases.d.ts +9 -9
  250. package/lib/core/interfaces/monkeyecx-request-in-progress.d.ts +3 -3
  251. package/lib/core/interfaces/monkeyecx-request-paged.d.ts +23 -23
  252. package/lib/core/interfaces/monkeyecx-resolver.d.ts +39 -39
  253. package/lib/core/interfaces/monkeyecx-response-links.d.ts +11 -11
  254. package/lib/core/interfaces/monkeyecx-response-paged.d.ts +6 -6
  255. package/lib/core/interfaces/monkeyecx-saved-state.d.ts +5 -5
  256. package/lib/core/interfaces/monkeyecx-scroll-options.d.ts +5 -5
  257. package/lib/core/interfaces/monkeyecx-service-credentials.d.ts +12 -12
  258. package/lib/core/interfaces/monkeyecx-storage.d.ts +38 -38
  259. package/lib/core/interfaces/monkeyecx-store.d.ts +35 -35
  260. package/lib/core/interfaces/monkeyecx-support-options.d.ts +4 -4
  261. package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +21 -21
  262. package/lib/core/interfaces/monkeyecx-translate-options.d.ts +4 -4
  263. package/lib/core/interfaces/request-download/index.d.ts +3 -3
  264. package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +10 -10
  265. package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +7 -7
  266. package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +7 -7
  267. package/lib/core/interfaces/request-queue/index.d.ts +3 -3
  268. package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +7 -7
  269. package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +6 -6
  270. package/lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts +8 -8
  271. package/lib/core/interfaces/request-upload/index.d.ts +2 -2
  272. package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +5 -5
  273. package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +10 -10
  274. package/lib/core/interfaces/schedules/index.d.ts +1 -1
  275. package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +13 -13
  276. package/lib/core/model/index.d.ts +2 -2
  277. package/lib/core/model/monkeyecx-links.model.d.ts +4 -4
  278. package/lib/core/model/monkeyecx-model.d.ts +13 -13
  279. package/lib/core/pipes/index.d.ts +21 -21
  280. package/lib/core/pipes/monkeyecx-blob-secure.d.ts +13 -13
  281. package/lib/core/pipes/monkeyecx-display-first-name.d.ts +7 -7
  282. package/lib/core/pipes/monkeyecx-display-initials.d.ts +7 -7
  283. package/lib/core/pipes/monkeyecx-display-support-phone.d.ts +18 -18
  284. package/lib/core/pipes/monkeyecx-format-address.d.ts +14 -14
  285. package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +8 -8
  286. package/lib/core/pipes/monkeyecx-format-currency.d.ts +11 -11
  287. package/lib/core/pipes/monkeyecx-format-date-group.d.ts +11 -11
  288. package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +7 -7
  289. package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +7 -7
  290. package/lib/core/pipes/monkeyecx-format-document.d.ts +7 -7
  291. package/lib/core/pipes/monkeyecx-format-number.d.ts +7 -7
  292. package/lib/core/pipes/monkeyecx-format-phone.d.ts +7 -7
  293. package/lib/core/pipes/monkeyecx-format-size.d.ts +7 -7
  294. package/lib/core/pipes/monkeyecx-format-tax.d.ts +7 -7
  295. package/lib/core/pipes/monkeyecx-format-type-document.d.ts +7 -7
  296. package/lib/core/pipes/monkeyecx-format-value.d.ts +7 -7
  297. package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +7 -7
  298. package/lib/core/pipes/monkeyecx-pipes.module.d.ts +26 -26
  299. package/lib/core/pipes/monkeyecx-text-truncate.d.ts +7 -7
  300. package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +7 -7
  301. package/lib/core/services/alerts/index.d.ts +1 -1
  302. package/lib/core/services/alerts/monkeyecx-alerts.service.d.ts +21 -21
  303. package/lib/core/services/auth/index.d.ts +5 -5
  304. package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +10 -10
  305. package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +10 -10
  306. package/lib/core/services/auth/monkeyecx-auth-guard-role.service.d.ts +16 -16
  307. package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +10 -10
  308. package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +35 -35
  309. package/lib/core/services/commons/index.d.ts +2 -2
  310. package/lib/core/services/commons/monkeyecx-commons-resolve.service.d.ts +60 -60
  311. package/lib/core/services/commons/monkeyecx-commons.service.d.ts +120 -120
  312. package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +11 -11
  313. package/lib/core/services/config/monkeyecx-config.module.d.ts +9 -9
  314. package/lib/core/services/config/monkeyecx-config.service.d.ts +36 -36
  315. package/lib/core/services/config/monkeyecx-currency-config.service.d.ts +15 -15
  316. package/lib/core/services/config/monkeyecx-error-config.service.d.ts +8 -8
  317. package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +16 -16
  318. package/lib/core/services/config/monkeyecx-gtm-config.service.d.ts +8 -8
  319. package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +18 -18
  320. package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +7 -7
  321. package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +13 -13
  322. package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +12 -12
  323. package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +16 -16
  324. package/lib/core/services/error/index.d.ts +4 -4
  325. package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +9 -9
  326. package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +9 -9
  327. package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +26 -26
  328. package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +9 -9
  329. package/lib/core/services/index.d.ts +25 -25
  330. package/lib/core/services/logged/index.d.ts +1 -1
  331. package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +14 -14
  332. package/lib/core/services/monkeyecx-handling.service.d.ts +22 -22
  333. package/lib/core/services/monkeyecx-service.service.d.ts +18 -18
  334. package/lib/core/services/pagination/index.d.ts +1 -1
  335. package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +9 -9
  336. package/lib/core/services/request-download/index.d.ts +2 -2
  337. package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +18 -18
  338. package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +16 -16
  339. package/lib/core/services/request-paged/index.d.ts +1 -1
  340. package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +11 -11
  341. package/lib/core/services/request-queue/index.d.ts +2 -2
  342. package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +21 -21
  343. package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +23 -23
  344. package/lib/core/services/routes/index.d.ts +1 -1
  345. package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +13 -13
  346. package/lib/core/services/schedules/index.d.ts +1 -1
  347. package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +47 -47
  348. package/lib/core/services/storage/index.d.ts +2 -2
  349. package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +11 -11
  350. package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +30 -30
  351. package/lib/core/services/store/index.d.ts +3 -3
  352. package/lib/core/services/store/monkeyecx-store.actions.d.ts +56 -56
  353. package/lib/core/services/store/monkeyecx-store.selector.d.ts +31 -31
  354. package/lib/core/services/store/monkeyecx-store.service.d.ts +50 -50
  355. package/lib/core/specification-search/index.d.ts +1 -1
  356. package/lib/core/specification-search/monkeyecx-specification-search.d.ts +20 -20
  357. package/lib/core/utils/decorators-utils.d.ts +5 -5
  358. package/lib/core/utils/index.d.ts +6 -6
  359. package/lib/core/utils/statics.d.ts +34 -34
  360. package/lib/core/utils/utils.d.ts +26 -26
  361. package/lib/core/utils/validate-utils.d.ts +66 -66
  362. package/lib/core/utils/validators.d.ts +36 -36
  363. package/lib/monkey-front-core.module.d.ts +19 -19
  364. package/lib/store/actions/index.d.ts +1 -1
  365. package/lib/store/actions/monkeyecx-storage.actions.d.ts +23 -23
  366. package/lib/store/index.d.ts +3 -3
  367. package/lib/store/reducers/index.d.ts +2 -2
  368. package/lib/store/reducers/monkeyecx-seeder.reducer.d.ts +2 -2
  369. package/lib/store/reducers/monkeyecx-storage.reducer.d.ts +13 -13
  370. package/lib/store/selectors/index.d.ts +1 -1
  371. package/lib/store/selectors/monkeyecx-storage.selector.d.ts +8 -8
  372. package/monkey-front-core-0.0.469.tgz +0 -0
  373. package/monkey-front-core.d.ts +5 -5
  374. package/package.json +1 -1
  375. package/public-api.d.ts +4 -4
  376. package/monkey-front-core-0.0.468.tgz +0 -0
@@ -1,26 +1,26 @@
1
- import { createAction, props } from '@ngrx/store';
2
- export class MonkeyEcxCommonsActions {
3
- static getActions(actionName) {
4
- const clear = createAction(`[${actionName}] Clear All`, props());
5
- const load = createAction(`[${actionName}] Load`, props());
6
- const loadPagination = createAction(`[${actionName} Pagination] Load`, props());
7
- const updateAll = createAction(`[${actionName}] Update All`, props());
8
- const updateOne = createAction(`[${actionName}] Update One`, props());
9
- const removeOne = createAction(`[${actionName}] Remove One`, props());
10
- const updateControl = createAction(`[${actionName}] Update Control`, props());
11
- const updatePage = createAction(`[${actionName}] Update Page`, props());
12
- const updateLinks = createAction(`[${actionName}] Update Links`, props());
13
- return {
14
- clear,
15
- load,
16
- loadPagination,
17
- removeOne,
18
- updateAll,
19
- updateOne,
20
- updateControl,
21
- updateLinks,
22
- updatePage
23
- };
24
- }
25
- }
1
+ import { createAction, props } from '@ngrx/store';
2
+ export class MonkeyEcxCommonsActions {
3
+ static getActions(actionName) {
4
+ const clear = createAction(`[${actionName}] Clear All`, props());
5
+ const load = createAction(`[${actionName}] Load`, props());
6
+ const loadPagination = createAction(`[${actionName} Pagination] Load`, props());
7
+ const updateAll = createAction(`[${actionName}] Update All`, props());
8
+ const updateOne = createAction(`[${actionName}] Update One`, props());
9
+ const removeOne = createAction(`[${actionName}] Remove One`, props());
10
+ const updateControl = createAction(`[${actionName}] Update Control`, props());
11
+ const updatePage = createAction(`[${actionName}] Update Page`, props());
12
+ const updateLinks = createAction(`[${actionName}] Update Links`, props());
13
+ return {
14
+ clear,
15
+ load,
16
+ loadPagination,
17
+ removeOne,
18
+ updateAll,
19
+ updateOne,
20
+ updateControl,
21
+ updateLinks,
22
+ updatePage
23
+ };
24
+ }
25
+ }
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXN0b3JlLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvc3RvcmUvbW9ua2V5ZWN4LXN0b3JlLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFRbEQsTUFBTSxPQUFnQix1QkFBdUI7SUFDM0MsTUFBTSxDQUFDLFVBQVUsQ0FBSSxVQUFrQjtRQUNyQyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxVQUFVLGFBQWEsRUFBRSxLQUFLLEVBQTBCLENBQUMsQ0FBQztRQUN6RixNQUFNLElBQUksR0FBRyxZQUFZLENBQ3ZCLElBQUksVUFBVSxRQUFRLEVBQ3RCLEtBQUssRUFBd0QsQ0FDOUQsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FDakMsSUFBSSxVQUFVLG1CQUFtQixFQUNqQyxLQUFLLEVBQTJELENBQ2pFLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxVQUFVLGNBQWMsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztRQUNyRixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxVQUFVLGNBQWMsRUFBRSxLQUFLLEVBQWUsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLFVBQVUsY0FBYyxFQUFFLEtBQUssRUFBZSxDQUFDLENBQUM7UUFDbkYsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUNoQyxJQUFJLFVBQVUsa0JBQWtCLEVBQ2hDLEtBQUssRUFBbUMsQ0FDekMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FDN0IsSUFBSSxVQUFVLGVBQWUsRUFDN0IsS0FBSyxFQUEyQixDQUNqQyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUM5QixJQUFJLFVBQVUsZ0JBQWdCLEVBQzlCLEtBQUssRUFBcUMsQ0FDM0MsQ0FBQztRQUVGLE9BQU87WUFDTCxLQUFLO1lBQ0wsSUFBSTtZQUNKLGNBQWM7WUFDZCxTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxhQUFhO1lBQ2IsV0FBVztZQUNYLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIE1vbmtleUVjeFBhZ2UsXG4gIE1vbmtleUVjeFBhZ2luYXRpb24sXG4gIE1vbmtleUVjeFBhZ2luYXRpb25EYXRhLFxuICBNb25rZXlFY3hTdG9yZUNvbnRyb2xcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb25rZXlFY3hDb21tb25zQWN0aW9ucyB7XG4gIHN0YXRpYyBnZXRBY3Rpb25zPFQ+KGFjdGlvbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNsZWFyID0gY3JlYXRlQWN0aW9uKGBbJHthY3Rpb25OYW1lfV0gQ2xlYXIgQWxsYCwgcHJvcHM8eyBpZGVudGlmaWVyOiBzdHJpbmcgfT4oKSk7XG4gICAgY29uc3QgbG9hZCA9IGNyZWF0ZUFjdGlvbihcbiAgICAgIGBbJHthY3Rpb25OYW1lfV0gTG9hZGAsXG4gICAgICBwcm9wczx7IHVybDogc3RyaW5nOyBpZGVudGlmaWVyOiBzdHJpbmc7IGZvcmNlPzogYm9vbGVhbiB9PigpXG4gICAgKTtcbiAgICBjb25zdCBsb2FkUGFnaW5hdGlvbiA9IGNyZWF0ZUFjdGlvbihcbiAgICAgIGBbJHthY3Rpb25OYW1lfSBQYWdpbmF0aW9uXSBMb2FkYCxcbiAgICAgIHByb3BzPHsgcGFnaW5hdGlvbjogTW9ua2V5RWN4UGFnaW5hdGlvbjsgaWRlbnRpZmllcjogc3RyaW5nIH0+KClcbiAgICApO1xuICAgIGNvbnN0IHVwZGF0ZUFsbCA9IGNyZWF0ZUFjdGlvbihgWyR7YWN0aW9uTmFtZX1dIFVwZGF0ZSBBbGxgLCBwcm9wczx7IGRhdGE6IFRbXSB9PigpKTtcbiAgICBjb25zdCB1cGRhdGVPbmUgPSBjcmVhdGVBY3Rpb24oYFske2FjdGlvbk5hbWV9XSBVcGRhdGUgT25lYCwgcHJvcHM8eyBkYXRhOiBUIH0+KCkpO1xuICAgIGNvbnN0IHJlbW92ZU9uZSA9IGNyZWF0ZUFjdGlvbihgWyR7YWN0aW9uTmFtZX1dIFJlbW92ZSBPbmVgLCBwcm9wczx7IGRhdGE6IFQgfT4oKSk7XG4gICAgY29uc3QgdXBkYXRlQ29udHJvbCA9IGNyZWF0ZUFjdGlvbihcbiAgICAgIGBbJHthY3Rpb25OYW1lfV0gVXBkYXRlIENvbnRyb2xgLFxuICAgICAgcHJvcHM8eyBkYXRhOiBNb25rZXlFY3hTdG9yZUNvbnRyb2wgfT4oKVxuICAgICk7XG4gICAgY29uc3QgdXBkYXRlUGFnZSA9IGNyZWF0ZUFjdGlvbihcbiAgICAgIGBbJHthY3Rpb25OYW1lfV0gVXBkYXRlIFBhZ2VgLFxuICAgICAgcHJvcHM8eyBkYXRhOiBNb25rZXlFY3hQYWdlIH0+KClcbiAgICApO1xuICAgIGNvbnN0IHVwZGF0ZUxpbmtzID0gY3JlYXRlQWN0aW9uKFxuICAgICAgYFske2FjdGlvbk5hbWV9XSBVcGRhdGUgTGlua3NgLFxuICAgICAgcHJvcHM8eyBkYXRhOiBNb25rZXlFY3hQYWdpbmF0aW9uRGF0YSB9PigpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjbGVhcixcbiAgICAgIGxvYWQsXG4gICAgICBsb2FkUGFnaW5hdGlvbixcbiAgICAgIHJlbW92ZU9uZSxcbiAgICAgIHVwZGF0ZUFsbCxcbiAgICAgIHVwZGF0ZU9uZSxcbiAgICAgIHVwZGF0ZUNvbnRyb2wsXG4gICAgICB1cGRhdGVMaW5rcyxcbiAgICAgIHVwZGF0ZVBhZ2VcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,75 +1,75 @@
1
- import { createFeatureSelector, createSelector } from '@ngrx/store';
2
- import { parseUrl } from 'query-string';
3
- const urlHasField = (url, field) => {
4
- const obj = parseUrl(url);
5
- return !!obj?.query?.[field];
6
- };
7
- export class MonkeyEcxCommonsSelectors {
8
- static getSelectors(reducer) {
9
- const selectState = createFeatureSelector(reducer.featureKey);
10
- const selectAll = createSelector(selectState, reducer.selectAll);
11
- const selectByIdentifier = (props) => {
12
- return createSelector(selectAll, (entities) => {
13
- return entities.filter((_) => {
14
- return _.identifier === props.identifier;
15
- });
16
- });
17
- };
18
- const selectOneByIdentifier = (props) => {
19
- return createSelector(selectAll, (entities) => {
20
- return (entities.find((_) => {
21
- return _.identifier === props.identifier;
22
- }) || null);
23
- });
24
- };
25
- const selectControl = () => {
26
- return createSelector(selectState, (state) => {
27
- return state.control;
28
- });
29
- };
30
- const selectLinks = (props) => {
31
- return createSelector(selectState, (state) => {
32
- return state.links?.[props.identifier];
33
- });
34
- };
35
- const selectPage = (props) => {
36
- return createSelector(selectState, (state) => {
37
- return state.page?.[props.identifier];
38
- });
39
- };
40
- const linksHasDifference = (props) => {
41
- return createSelector(selectState, (state) => {
42
- const { pagination } = state;
43
- const { identifier, url } = props;
44
- let hasDifference = false;
45
- let hasField = false;
46
- try {
47
- const handlePaginationUrl = parseUrl(`${pagination?.[identifier]?.url}`);
48
- const handleUrl = parseUrl(`${url}`);
49
- hasDifference =
50
- handlePaginationUrl?.query?.search !== handleUrl?.query?.search ||
51
- handlePaginationUrl?.query?.sort !== handleUrl?.query?.sort;
52
- hasField = urlHasField(url, 'search') || urlHasField(url, 'sort');
53
- }
54
- catch (e) {
55
- // not to do
56
- }
57
- return {
58
- hasDifference,
59
- hasField
60
- };
61
- });
62
- };
63
- return {
64
- selectState,
65
- selectAll,
66
- selectControl,
67
- selectLinks,
68
- selectByIdentifier,
69
- selectOneByIdentifier,
70
- selectPage,
71
- linksHasDifference
72
- };
73
- }
74
- }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXN0b3JlLnNlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3N0b3JlL21vbmtleWVjeC1zdG9yZS5zZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXeEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDakQsTUFBTSxHQUFHLEdBQVEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLE9BQWdCLHlCQUF5QjtJQUM3QyxNQUFNLENBQUMsWUFBWSxDQUF5QixPQUFpQjtRQUMzRCxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUQsTUFBTSxTQUFTLEdBQVEsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUMzRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFhLEVBQU8sRUFBRTtnQkFDdEQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUM5RCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFhLEVBQVksRUFBRTtnQkFDM0QsT0FBTyxDQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFJLEVBQUUsRUFBRTtvQkFDckIsT0FBTyxDQUFDLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDWCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsT0FBTyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQ3JELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBNkIsRUFBRSxFQUFFO1lBQ3BELE9BQU8sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUNyRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUNuRCxPQUFPLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDckQsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQTBDLEVBQUUsRUFBRTtZQUN4RSxPQUFPLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDckQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUVyQixJQUFJO29CQUNGLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDekUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDckMsYUFBYTt3QkFDWCxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTTs0QkFDL0QsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztvQkFDOUQsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDbkU7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsWUFBWTtpQkFDYjtnQkFFRCxPQUFPO29CQUNMLGFBQWE7b0JBQ2IsUUFBUTtpQkFDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsV0FBVztZQUNYLFNBQVM7WUFDVCxhQUFhO1lBQ2IsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixxQkFBcUI7WUFDckIsVUFBVTtZQUNWLGtCQUFrQjtTQUNuQixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IHBhcnNlVXJsIH0gZnJvbSAncXVlcnktc3RyaW5nJztcblxuaW50ZXJmYWNlIElkZW50aWZpYWJsZSB7XG4gIGlkZW50aWZpZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJUmVkdWNlciB7XG4gIGZlYXR1cmVLZXk6IHN0cmluZztcbiAgc2VsZWN0QWxsOiBhbnk7XG59XG5cbmNvbnN0IHVybEhhc0ZpZWxkID0gKHVybDogc3RyaW5nLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG9iajogYW55ID0gcGFyc2VVcmwodXJsKTtcbiAgcmV0dXJuICEhb2JqPy5xdWVyeT8uW2ZpZWxkXTtcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb25rZXlFY3hDb21tb25zU2VsZWN0b3JzIHtcbiAgc3RhdGljIGdldFNlbGVjdG9yczxUIGV4dGVuZHMgSWRlbnRpZmlhYmxlPihyZWR1Y2VyOiBJUmVkdWNlcikge1xuICAgIGNvbnN0IHNlbGVjdFN0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yKHJlZHVjZXIuZmVhdHVyZUtleSk7XG5cbiAgICBjb25zdCBzZWxlY3RBbGw6IGFueSA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFN0YXRlLCByZWR1Y2VyLnNlbGVjdEFsbCk7XG5cbiAgICBjb25zdCBzZWxlY3RCeUlkZW50aWZpZXIgPSAocHJvcHM6IHsgaWRlbnRpZmllcjogc3RyaW5nIH0pID0+IHtcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RBbGwsIChlbnRpdGllczogVFtdKTogVFtdID0+IHtcbiAgICAgICAgcmV0dXJuIGVudGl0aWVzLmZpbHRlcigoXzogVCkgPT4ge1xuICAgICAgICAgIHJldHVybiBfLmlkZW50aWZpZXIgPT09IHByb3BzLmlkZW50aWZpZXI7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdE9uZUJ5SWRlbnRpZmllciA9IChwcm9wczogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yKHNlbGVjdEFsbCwgKGVudGl0aWVzOiBUW10pOiBUIHwgbnVsbCA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZW50aXRpZXMuZmluZCgoXzogVCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF8uaWRlbnRpZmllciA9PT0gcHJvcHMuaWRlbnRpZmllcjtcbiAgICAgICAgICB9KSB8fCBudWxsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0Q29udHJvbCA9ICgpID0+IHtcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gc3RhdGUuY29udHJvbDtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzZWxlY3RMaW5rcyA9IChwcm9wczogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFN0YXRlLCAoc3RhdGU6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5saW5rcz8uW3Byb3BzLmlkZW50aWZpZXJdO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbGVjdFBhZ2UgPSAocHJvcHM6IHsgaWRlbnRpZmllcjogc3RyaW5nIH0pID0+IHtcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gc3RhdGUucGFnZT8uW3Byb3BzLmlkZW50aWZpZXJdO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmtzSGFzRGlmZmVyZW5jZSA9IChwcm9wczogeyBpZGVudGlmaWVyOiBzdHJpbmc7IHVybDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBjb25zdCB7IHBhZ2luYXRpb24gfSA9IHN0YXRlO1xuICAgICAgICBjb25zdCB7IGlkZW50aWZpZXIsIHVybCB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBoYXNEaWZmZXJlbmNlID0gZmFsc2U7XG4gICAgICAgIGxldCBoYXNGaWVsZCA9IGZhbHNlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvblVybCA9IHBhcnNlVXJsKGAke3BhZ2luYXRpb24/LltpZGVudGlmaWVyXT8udXJsfWApO1xuICAgICAgICAgIGNvbnN0IGhhbmRsZVVybCA9IHBhcnNlVXJsKGAke3VybH1gKTtcbiAgICAgICAgICBoYXNEaWZmZXJlbmNlID1cbiAgICAgICAgICAgIGhhbmRsZVBhZ2luYXRpb25Vcmw/LnF1ZXJ5Py5zZWFyY2ggIT09IGhhbmRsZVVybD8ucXVlcnk/LnNlYXJjaCB8fFxuICAgICAgICAgICAgaGFuZGxlUGFnaW5hdGlvblVybD8ucXVlcnk/LnNvcnQgIT09IGhhbmRsZVVybD8ucXVlcnk/LnNvcnQ7XG4gICAgICAgICAgaGFzRmllbGQgPSB1cmxIYXNGaWVsZCh1cmwsICdzZWFyY2gnKSB8fCB1cmxIYXNGaWVsZCh1cmwsICdzb3J0Jyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBub3QgdG8gZG9cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzRGlmZmVyZW5jZSxcbiAgICAgICAgICBoYXNGaWVsZFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RTdGF0ZSxcbiAgICAgIHNlbGVjdEFsbCxcbiAgICAgIHNlbGVjdENvbnRyb2wsXG4gICAgICBzZWxlY3RMaW5rcyxcbiAgICAgIHNlbGVjdEJ5SWRlbnRpZmllcixcbiAgICAgIHNlbGVjdE9uZUJ5SWRlbnRpZmllcixcbiAgICAgIHNlbGVjdFBhZ2UsXG4gICAgICBsaW5rc0hhc0RpZmZlcmVuY2VcbiAgICB9O1xuICB9XG59XG4iXX0=
1
+ import { createFeatureSelector, createSelector } from '@ngrx/store';
2
+ import { parseUrl } from 'query-string';
3
+ const urlHasField = (url, field) => {
4
+ const obj = parseUrl(url);
5
+ return !!obj?.query?.[field];
6
+ };
7
+ export class MonkeyEcxCommonsSelectors {
8
+ static getSelectors(reducer) {
9
+ const selectState = createFeatureSelector(reducer.featureKey);
10
+ const selectAll = createSelector(selectState, reducer.selectAll);
11
+ const selectByIdentifier = (props) => {
12
+ return createSelector(selectAll, (entities) => {
13
+ return entities.filter((_) => {
14
+ return _.identifier === props.identifier;
15
+ });
16
+ });
17
+ };
18
+ const selectOneByIdentifier = (props) => {
19
+ return createSelector(selectAll, (entities) => {
20
+ return (entities.find((_) => {
21
+ return _.identifier === props.identifier;
22
+ }) || null);
23
+ });
24
+ };
25
+ const selectControl = () => {
26
+ return createSelector(selectState, (state) => {
27
+ return state.control;
28
+ });
29
+ };
30
+ const selectLinks = (props) => {
31
+ return createSelector(selectState, (state) => {
32
+ return state.links?.[props.identifier];
33
+ });
34
+ };
35
+ const selectPage = (props) => {
36
+ return createSelector(selectState, (state) => {
37
+ return state.page?.[props.identifier];
38
+ });
39
+ };
40
+ const linksHasDifference = (props) => {
41
+ return createSelector(selectState, (state) => {
42
+ const { pagination } = state;
43
+ const { identifier, url } = props;
44
+ let hasDifference = false;
45
+ let hasField = false;
46
+ try {
47
+ const handlePaginationUrl = parseUrl(`${pagination?.[identifier]?.url}`);
48
+ const handleUrl = parseUrl(`${url}`);
49
+ hasDifference =
50
+ handlePaginationUrl?.query?.search !== handleUrl?.query?.search ||
51
+ handlePaginationUrl?.query?.sort !== handleUrl?.query?.sort;
52
+ hasField = urlHasField(url, 'search') || urlHasField(url, 'sort');
53
+ }
54
+ catch (e) {
55
+ // not to do
56
+ }
57
+ return {
58
+ hasDifference,
59
+ hasField
60
+ };
61
+ });
62
+ };
63
+ return {
64
+ selectState,
65
+ selectAll,
66
+ selectControl,
67
+ selectLinks,
68
+ selectByIdentifier,
69
+ selectOneByIdentifier,
70
+ selectPage,
71
+ linksHasDifference
72
+ };
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXN0b3JlLnNlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3N0b3JlL21vbmtleWVjeC1zdG9yZS5zZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXeEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDakQsTUFBTSxHQUFHLEdBQVEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLE9BQWdCLHlCQUF5QjtJQUM3QyxNQUFNLENBQUMsWUFBWSxDQUF5QixPQUFpQjtRQUMzRCxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUQsTUFBTSxTQUFTLEdBQVEsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUMzRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFhLEVBQU8sRUFBRTtnQkFDdEQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUM5RCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFhLEVBQVksRUFBRTtnQkFDM0QsT0FBTyxDQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFJLEVBQUUsRUFBRTtvQkFDckIsT0FBTyxDQUFDLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDWCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsT0FBTyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQ3JELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBNkIsRUFBRSxFQUFFO1lBQ3BELE9BQU8sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUNyRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtZQUNuRCxPQUFPLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDckQsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQTBDLEVBQUUsRUFBRTtZQUN4RSxPQUFPLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDckQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUVyQixJQUFJO29CQUNGLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDekUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDckMsYUFBYTt3QkFDWCxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTTs0QkFDL0QsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztvQkFDOUQsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDbkU7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsWUFBWTtpQkFDYjtnQkFFRCxPQUFPO29CQUNMLGFBQWE7b0JBQ2IsUUFBUTtpQkFDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsV0FBVztZQUNYLFNBQVM7WUFDVCxhQUFhO1lBQ2IsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixxQkFBcUI7WUFDckIsVUFBVTtZQUNWLGtCQUFrQjtTQUNuQixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgcGFyc2VVcmwgfSBmcm9tICdxdWVyeS1zdHJpbmcnO1xyXG5cclxuaW50ZXJmYWNlIElkZW50aWZpYWJsZSB7XHJcbiAgaWRlbnRpZmllcj86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElSZWR1Y2VyIHtcclxuICBmZWF0dXJlS2V5OiBzdHJpbmc7XHJcbiAgc2VsZWN0QWxsOiBhbnk7XHJcbn1cclxuXHJcbmNvbnN0IHVybEhhc0ZpZWxkID0gKHVybDogc3RyaW5nLCBmaWVsZDogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3Qgb2JqOiBhbnkgPSBwYXJzZVVybCh1cmwpO1xyXG4gIHJldHVybiAhIW9iaj8ucXVlcnk/LltmaWVsZF07XHJcbn07XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1NlbGVjdG9ycyB7XHJcbiAgc3RhdGljIGdldFNlbGVjdG9yczxUIGV4dGVuZHMgSWRlbnRpZmlhYmxlPihyZWR1Y2VyOiBJUmVkdWNlcikge1xyXG4gICAgY29uc3Qgc2VsZWN0U3RhdGUgPSBjcmVhdGVGZWF0dXJlU2VsZWN0b3IocmVkdWNlci5mZWF0dXJlS2V5KTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RBbGw6IGFueSA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFN0YXRlLCByZWR1Y2VyLnNlbGVjdEFsbCk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0QnlJZGVudGlmaWVyID0gKHByb3BzOiB7IGlkZW50aWZpZXI6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RBbGwsIChlbnRpdGllczogVFtdKTogVFtdID0+IHtcclxuICAgICAgICByZXR1cm4gZW50aXRpZXMuZmlsdGVyKChfOiBUKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gXy5pZGVudGlmaWVyID09PSBwcm9wcy5pZGVudGlmaWVyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0T25lQnlJZGVudGlmaWVyID0gKHByb3BzOiB7IGlkZW50aWZpZXI6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RBbGwsIChlbnRpdGllczogVFtdKTogVCB8IG51bGwgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBlbnRpdGllcy5maW5kKChfOiBUKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBfLmlkZW50aWZpZXIgPT09IHByb3BzLmlkZW50aWZpZXI7XHJcbiAgICAgICAgICB9KSB8fCBudWxsXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdENvbnRyb2wgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdGF0ZS5jb250cm9sO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0TGlua3MgPSAocHJvcHM6IHsgaWRlbnRpZmllcjogc3RyaW5nIH0pID0+IHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFN0YXRlLCAoc3RhdGU6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHN0YXRlLmxpbmtzPy5bcHJvcHMuaWRlbnRpZmllcl07XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RQYWdlID0gKHByb3BzOiB7IGlkZW50aWZpZXI6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdGF0ZS5wYWdlPy5bcHJvcHMuaWRlbnRpZmllcl07XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsaW5rc0hhc0RpZmZlcmVuY2UgPSAocHJvcHM6IHsgaWRlbnRpZmllcjogc3RyaW5nOyB1cmw6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVTZWxlY3RvcihzZWxlY3RTdGF0ZSwgKHN0YXRlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgcGFnaW5hdGlvbiB9ID0gc3RhdGU7XHJcbiAgICAgICAgY29uc3QgeyBpZGVudGlmaWVyLCB1cmwgfSA9IHByb3BzO1xyXG4gICAgICAgIGxldCBoYXNEaWZmZXJlbmNlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGhhc0ZpZWxkID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uVXJsID0gcGFyc2VVcmwoYCR7cGFnaW5hdGlvbj8uW2lkZW50aWZpZXJdPy51cmx9YCk7XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGVVcmwgPSBwYXJzZVVybChgJHt1cmx9YCk7XHJcbiAgICAgICAgICBoYXNEaWZmZXJlbmNlID1cclxuICAgICAgICAgICAgaGFuZGxlUGFnaW5hdGlvblVybD8ucXVlcnk/LnNlYXJjaCAhPT0gaGFuZGxlVXJsPy5xdWVyeT8uc2VhcmNoIHx8XHJcbiAgICAgICAgICAgIGhhbmRsZVBhZ2luYXRpb25Vcmw/LnF1ZXJ5Py5zb3J0ICE9PSBoYW5kbGVVcmw/LnF1ZXJ5Py5zb3J0O1xyXG4gICAgICAgICAgaGFzRmllbGQgPSB1cmxIYXNGaWVsZCh1cmwsICdzZWFyY2gnKSB8fCB1cmxIYXNGaWVsZCh1cmwsICdzb3J0Jyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgLy8gbm90IHRvIGRvXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaGFzRGlmZmVyZW5jZSxcclxuICAgICAgICAgIGhhc0ZpZWxkXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNlbGVjdFN0YXRlLFxyXG4gICAgICBzZWxlY3RBbGwsXHJcbiAgICAgIHNlbGVjdENvbnRyb2wsXHJcbiAgICAgIHNlbGVjdExpbmtzLFxyXG4gICAgICBzZWxlY3RCeUlkZW50aWZpZXIsXHJcbiAgICAgIHNlbGVjdE9uZUJ5SWRlbnRpZmllcixcclxuICAgICAgc2VsZWN0UGFnZSxcclxuICAgICAgbGlua3NIYXNEaWZmZXJlbmNlXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,190 +1,190 @@
1
- import { __decorate } from "tslib";
2
- import { take } from 'rxjs/operators';
3
- import { MonkeyEcxCoreService } from '../../decorators';
4
- import { MonkeyEcxLinksModel } from '../../model';
5
- import { MonkeyEcxCommonsService } from '../commons';
6
- /**
7
- * Classe genérica que recebe duas interfaces como tipos genéricos.
8
- *
9
- * @typeparam T deve ser a mesma interface utilizada na Entity da Store
10
- * @typeparam K faz referência ao tipo de configuração.
11
- *
12
- * @description interfaces de configuração:
13
- * ```
14
- * MonkeyEcxCollectionStore e MonkeyEcxEntityStore
15
- * ```
16
- */
17
- export class MonkeyEcxCommonsStoreService extends MonkeyEcxCommonsService {
18
- constructor(monkeyecxService, tokenStorage, store, config) {
19
- super(monkeyecxService, tokenStorage);
20
- this.store = store;
21
- const { actions, selectors } = config;
22
- this.action = actions;
23
- this.selector = selectors;
24
- }
25
- handleResponseData(resp, identifier, updateLinks = true) {
26
- try {
27
- let data;
28
- if (resp?._embedded) {
29
- const { _embedded, _links, page } = resp;
30
- const key = Object.keys(_embedded)[0];
31
- data = _embedded[key];
32
- if (updateLinks) {
33
- this.updateLinks?.(_links, identifier);
34
- }
35
- this.updatePage?.(page, identifier);
36
- }
37
- else
38
- data = resp;
39
- this.update?.(data, identifier);
40
- }
41
- catch (e) {
42
- throw new Error(`MECX Core - Method handleResponseData -> ${e}`);
43
- }
44
- }
45
- async linksHasDifference(url, identifier) {
46
- try {
47
- const { action, store, selector } = this;
48
- const { hasDifference, hasField } = (await store
49
- .select(selector.linksHasDifference({ identifier, url }))
50
- .pipe(take(1))
51
- .toPromise());
52
- if (hasDifference && hasField) {
53
- store.dispatch(action.clear({ identifier }));
54
- }
55
- return { hasDifference };
56
- }
57
- catch (e) {
58
- throw new Error(`MECX Core - Method linksHasDifference -> ${e}`);
59
- }
60
- }
61
- updateControl(data) {
62
- try {
63
- this.store.dispatch(this.action.updateControl({
64
- data
65
- }));
66
- }
67
- catch (e) {
68
- throw new Error(`MECX Core - Method updateControl -> ${e}`);
69
- }
70
- }
71
- mappingData(args, identifier) {
72
- try {
73
- const handle = (item) => {
74
- let id = '';
75
- const { href } = new MonkeyEcxLinksModel(item)?.getAction('self') || {
76
- href: ''
77
- };
78
- if (href) {
79
- id = href.split('/').pop() || '';
80
- }
81
- return {
82
- ...item,
83
- identifier,
84
- id
85
- };
86
- };
87
- if (args instanceof Array) {
88
- return args.map((item) => {
89
- return handle(item);
90
- });
91
- }
92
- return handle(args);
93
- }
94
- catch (e) {
95
- throw new Error(`MECX Core - Method mappingData -> ${e}`);
96
- }
97
- }
98
- update(args, identifier) {
99
- try {
100
- let typeAction = 'updateOne';
101
- if (args instanceof Array) {
102
- typeAction = 'updateAll';
103
- }
104
- this.store.dispatch(this.action[typeAction]({
105
- data: this.mappingData(args, identifier)
106
- }));
107
- }
108
- catch (e) {
109
- throw new Error(`MECX Core - Method update -> ${e}`);
110
- }
111
- }
112
- updatePage(args, identifier) {
113
- try {
114
- this.store.dispatch(this.action.updatePage({
115
- data: {
116
- [identifier]: args
117
- }
118
- }));
119
- }
120
- catch (e) {
121
- throw new Error(`MECX Core - Method updatePage -> ${e}`);
122
- }
123
- }
124
- updateLinks(args, identifier) {
125
- try {
126
- this.store.dispatch(this.action.updateLinks({
127
- data: {
128
- [identifier]: args
129
- }
130
- }));
131
- }
132
- catch (e) {
133
- throw new Error(`MECX Core - Method updateLinks -> ${e}`);
134
- }
135
- }
136
- async loadData(url, identifier, updateLinks = true) {
137
- this.updateControl({ isLoading: true });
138
- try {
139
- const data = await this.monkeyecxService?.get(url).toPromise();
140
- this.handleResponseData(data, identifier, updateLinks);
141
- }
142
- catch (e) {
143
- throw new Error(`${e?.message}`);
144
- }
145
- this.updateControl({ isLoading: false });
146
- }
147
- async loadPageData(pagination, identifier) {
148
- const { store, selector } = this;
149
- const data = await store
150
- .select(selector.selectLinks({ identifier }))
151
- .pipe(take(1))
152
- .toPromise();
153
- const { action } = pagination;
154
- const { href } = new MonkeyEcxLinksModel({ _links: data }).getAction(action) || {
155
- href: ''
156
- };
157
- if (href) {
158
- this.loadData(href, identifier);
159
- }
160
- }
161
- /**
162
- * @description Neste método precisamos incluir a lógica para conferir se precisa limpar a
163
- * entidade ou não
164
- * E depois precisa invocar o método loadData
165
- * @param (url, identifier) ou de acordo com a action criada
166
- * @example
167
- * ```
168
- * const hasDifference = .....
169
- * if(hasDifference) {
170
- * store.dispatch(clear)
171
- * }
172
- *
173
- * this.loadData(...)
174
- * ```
175
- */
176
- load(args) {
177
- throw new Error('MECX Core - Method load not implemented.');
178
- }
179
- loadPage(args) {
180
- throw new Error('MECX Core - Method loadPage not implemented.');
181
- }
182
- }
183
- __decorate([
184
- MonkeyEcxCoreService({
185
- requestInProgress: {
186
- showProgress: true
187
- }
188
- })
189
- ], MonkeyEcxCommonsStoreService.prototype, "loadData", null);
1
+ import { __decorate } from "tslib";
2
+ import { take } from 'rxjs/operators';
3
+ import { MonkeyEcxCoreService } from '../../decorators';
4
+ import { MonkeyEcxLinksModel } from '../../model';
5
+ import { MonkeyEcxCommonsService } from '../commons';
6
+ /**
7
+ * Classe genérica que recebe duas interfaces como tipos genéricos.
8
+ *
9
+ * @typeparam T deve ser a mesma interface utilizada na Entity da Store
10
+ * @typeparam K faz referência ao tipo de configuração.
11
+ *
12
+ * @description interfaces de configuração:
13
+ * ```
14
+ * MonkeyEcxCollectionStore e MonkeyEcxEntityStore
15
+ * ```
16
+ */
17
+ export class MonkeyEcxCommonsStoreService extends MonkeyEcxCommonsService {
18
+ constructor(monkeyecxService, tokenStorage, store, config) {
19
+ super(monkeyecxService, tokenStorage);
20
+ this.store = store;
21
+ const { actions, selectors } = config;
22
+ this.action = actions;
23
+ this.selector = selectors;
24
+ }
25
+ handleResponseData(resp, identifier, updateLinks = true) {
26
+ try {
27
+ let data;
28
+ if (resp?._embedded) {
29
+ const { _embedded, _links, page } = resp;
30
+ const key = Object.keys(_embedded)[0];
31
+ data = _embedded[key];
32
+ if (updateLinks) {
33
+ this.updateLinks?.(_links, identifier);
34
+ }
35
+ this.updatePage?.(page, identifier);
36
+ }
37
+ else
38
+ data = resp;
39
+ this.update?.(data, identifier);
40
+ }
41
+ catch (e) {
42
+ throw new Error(`MECX Core - Method handleResponseData -> ${e}`);
43
+ }
44
+ }
45
+ async linksHasDifference(url, identifier) {
46
+ try {
47
+ const { action, store, selector } = this;
48
+ const { hasDifference, hasField } = (await store
49
+ .select(selector.linksHasDifference({ identifier, url }))
50
+ .pipe(take(1))
51
+ .toPromise());
52
+ if (hasDifference && hasField) {
53
+ store.dispatch(action.clear({ identifier }));
54
+ }
55
+ return { hasDifference };
56
+ }
57
+ catch (e) {
58
+ throw new Error(`MECX Core - Method linksHasDifference -> ${e}`);
59
+ }
60
+ }
61
+ updateControl(data) {
62
+ try {
63
+ this.store.dispatch(this.action.updateControl({
64
+ data
65
+ }));
66
+ }
67
+ catch (e) {
68
+ throw new Error(`MECX Core - Method updateControl -> ${e}`);
69
+ }
70
+ }
71
+ mappingData(args, identifier) {
72
+ try {
73
+ const handle = (item) => {
74
+ let id = '';
75
+ const { href } = new MonkeyEcxLinksModel(item)?.getAction('self') || {
76
+ href: ''
77
+ };
78
+ if (href) {
79
+ id = href.split('/').pop() || '';
80
+ }
81
+ return {
82
+ ...item,
83
+ identifier,
84
+ id
85
+ };
86
+ };
87
+ if (args instanceof Array) {
88
+ return args.map((item) => {
89
+ return handle(item);
90
+ });
91
+ }
92
+ return handle(args);
93
+ }
94
+ catch (e) {
95
+ throw new Error(`MECX Core - Method mappingData -> ${e}`);
96
+ }
97
+ }
98
+ update(args, identifier) {
99
+ try {
100
+ let typeAction = 'updateOne';
101
+ if (args instanceof Array) {
102
+ typeAction = 'updateAll';
103
+ }
104
+ this.store.dispatch(this.action[typeAction]({
105
+ data: this.mappingData(args, identifier)
106
+ }));
107
+ }
108
+ catch (e) {
109
+ throw new Error(`MECX Core - Method update -> ${e}`);
110
+ }
111
+ }
112
+ updatePage(args, identifier) {
113
+ try {
114
+ this.store.dispatch(this.action.updatePage({
115
+ data: {
116
+ [identifier]: args
117
+ }
118
+ }));
119
+ }
120
+ catch (e) {
121
+ throw new Error(`MECX Core - Method updatePage -> ${e}`);
122
+ }
123
+ }
124
+ updateLinks(args, identifier) {
125
+ try {
126
+ this.store.dispatch(this.action.updateLinks({
127
+ data: {
128
+ [identifier]: args
129
+ }
130
+ }));
131
+ }
132
+ catch (e) {
133
+ throw new Error(`MECX Core - Method updateLinks -> ${e}`);
134
+ }
135
+ }
136
+ async loadData(url, identifier, updateLinks = true) {
137
+ this.updateControl({ isLoading: true });
138
+ try {
139
+ const data = await this.monkeyecxService?.get(url).toPromise();
140
+ this.handleResponseData(data, identifier, updateLinks);
141
+ }
142
+ catch (e) {
143
+ throw new Error(`${e?.message}`);
144
+ }
145
+ this.updateControl({ isLoading: false });
146
+ }
147
+ async loadPageData(pagination, identifier) {
148
+ const { store, selector } = this;
149
+ const data = await store
150
+ .select(selector.selectLinks({ identifier }))
151
+ .pipe(take(1))
152
+ .toPromise();
153
+ const { action } = pagination;
154
+ const { href } = new MonkeyEcxLinksModel({ _links: data }).getAction(action) || {
155
+ href: ''
156
+ };
157
+ if (href) {
158
+ this.loadData(href, identifier);
159
+ }
160
+ }
161
+ /**
162
+ * @description Neste método precisamos incluir a lógica para conferir se precisa limpar a
163
+ * entidade ou não
164
+ * E depois precisa invocar o método loadData
165
+ * @param (url, identifier) ou de acordo com a action criada
166
+ * @example
167
+ * ```
168
+ * const hasDifference = .....
169
+ * if(hasDifference) {
170
+ * store.dispatch(clear)
171
+ * }
172
+ *
173
+ * this.loadData(...)
174
+ * ```
175
+ */
176
+ load(args) {
177
+ throw new Error('MECX Core - Method load not implemented.');
178
+ }
179
+ loadPage(args) {
180
+ throw new Error('MECX Core - Method loadPage not implemented.');
181
+ }
182
+ }
183
+ __decorate([
184
+ MonkeyEcxCoreService({
185
+ requestInProgress: {
186
+ showProgress: true
187
+ }
188
+ })
189
+ ], MonkeyEcxCommonsStoreService.prototype, "loadData", null);
190
190
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXN0b3JlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvc3RvcmUvbW9ua2V5ZWN4LXN0b3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVF4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSXJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQWdCLDRCQUdwQixTQUFRLHVCQUF1QjtJQUsvQixZQUNFLGdCQUFrQyxFQUNsQyxZQUEwQyxFQUNoQyxLQUFZLEVBQ3RCLE1BQVM7UUFFVCxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFINUIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUl0QixNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUV0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBUyxFQUFFLFVBQWtCLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDMUUsSUFBSTtZQUNGLElBQUksSUFBTyxDQUFDO1lBRVosSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUNuQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ3pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJ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Q0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUM5RSxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ksSUFBSSxDQUFFLElBQVM7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxRQUFRLENBQUUsSUFBUztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBcERDO0lBTEMsb0JBQW9CLENBQUM7UUFDcEIsaUJBQWlCLEVBQUU7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkI7S0FDRixDQUFDOzREQVlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4Q29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7XG4gIE1vbmtleUVjeENvbmZpZ1N0b3JlLFxuICBNb25rZXlFY3hDb250cm9sU3RvcmUsXG4gIE1vbmtleUVjeExpbmtzLFxuICBNb25rZXlFY3hQYWdlLFxuICBNb25rZXlFY3hQYWdpbmF0aW9uXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4TGlua3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IE1vbmtleUVjeENvbW1vbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9ucyc7XG5pbXBvcnQgeyBNb25rZXlFY3hTZXJ2aWNlIH0gZnJvbSAnLi4vbW9ua2V5ZWN4LXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZSc7XG5cbi8qKlxuICogQ2xhc3NlIGdlbsOpcmljYSBxdWUgcmVjZWJlIGR1YXMgaW50ZXJmYWNlcyBjb21vIHRpcG9zIGdlbsOpcmljb3MuXG4gKlxuICogQHR5cGVwYXJhbSBUIGRldmUgc2VyIGEgbWVzbWEgaW50ZXJmYWNlIHV0aWxpemFkYSBuYSBFbnRpdHkgZGEgU3RvcmVcbiAqIEB0eXBlcGFyYW0gSyBmYXogcmVmZXLDqm5jaWEgYW8gdGlwbyBkZSBjb25maWd1cmHDp8Ojby5cbiAqXG4gKiBAZGVzY3JpcHRpb24gaW50ZXJmYWNlcyBkZSBjb25maWd1cmHDp8OjbzpcbiAqIGBgYFxuICogTW9ua2V5RWN4Q29sbGVjdGlvblN0b3JlIGUgTW9ua2V5RWN4RW50aXR5U3RvcmVcbiAqIGBgYFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1N0b3JlU2VydmljZTxcbiAgVCxcbiAgSyBleHRlbmRzIE1vbmtleUVjeENvbmZpZ1N0b3JlXG4+IGV4dGVuZHMgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIGFjdGlvbjogYW55O1xuXG4gIHByaXZhdGUgc2VsZWN0b3I6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtb25rZXllY3hTZXJ2aWNlOiBNb25rZXlFY3hTZXJ2aWNlLFxuICAgIHRva2VuU3RvcmFnZTogTW9ua2V5RWN4VG9rZW5TdG9yYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlLFxuICAgIGNvbmZpZzogS1xuICApIHtcbiAgICBzdXBlcihtb25rZXllY3hTZXJ2aWNlLCB0b2tlblN0b3JhZ2UpO1xuICAgIGNvbnN0IHsgYWN0aW9ucywgc2VsZWN0b3JzIH0gPSBjb25maWc7XG5cbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbnM7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9ycztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2VEYXRhKHJlc3A6IGFueSwgaWRlbnRpZmllcjogc3RyaW5nLCB1cGRhdGVMaW5rcyA9IHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGE6IFQ7XG5cbiAgICAgIGlmIChyZXNwPy5fZW1iZWRkZWQpIHtcbiAgICAgICAgY29uc3QgeyBfZW1iZWRkZWQsIF9saW5rcywgcGFnZSB9ID0gcmVzcDtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoX2VtYmVkZGVkKVswXTtcblxuICAgICAgICBkYXRhID0gX2VtYmVkZGVkW2tleV07XG5cbiAgICAgICAgaWYgKHVwZGF0ZUxpbmtzKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMaW5rcz8uKF9saW5rcywgaWRlbnRpZmllcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVBhZ2U/LihwYWdlLCBpZGVudGlmaWVyKTtcbiAgICAgIH0gZWxzZSBkYXRhID0gcmVzcDtcblxuICAgICAgdGhpcy51cGRhdGU/LihkYXRhLCBpZGVudGlmaWVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCBoYW5kbGVSZXNwb25zZURhdGEgLT4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsaW5rc0hhc0RpZmZlcmVuY2UodXJsOiBzdHJpbmcsIGlkZW50aWZpZXI6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGFjdGlvbiwgc3RvcmUsIHNlbGVjdG9yIH0gPSB0aGlzO1xuXG4gICAgICBjb25zdCB7IGhhc0RpZmZlcmVuY2UsIGhhc0ZpZWxkIH0gPSA8YW55PihcbiAgICAgICAgYXdhaXQgc3RvcmVcbiAgICAgICAgICAuc2VsZWN0KHNlbGVjdG9yLmxpbmtzSGFzRGlmZmVyZW5jZSh7IGlkZW50aWZpZXIsIHVybCB9KSlcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgKTtcblxuICAgICAgaWYgKGhhc0RpZmZlcmVuY2UgJiYgaGFzRmllbGQpIHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uLmNsZWFyKHsgaWRlbnRpZmllciB9KSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGhhc0RpZmZlcmVuY2UgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCBsaW5rc0hhc0RpZmZlcmVuY2UgLT4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVDb250cm9sKGRhdGE6IE1vbmtleUVjeENvbnRyb2xTdG9yZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICB0aGlzLmFjdGlvbi51cGRhdGVDb250cm9sKHtcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTUVDWCBDb3JlIC0gTWV0aG9kIHVwZGF0ZUNvbnRyb2wgLT4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXBwaW5nRGF0YShhcmdzOiBUIHwgVFtdLCBpZGVudGlmaWVyOiBzdHJpbmcpOiBUIHwgVFtdIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaGFuZGxlID0gKGl0ZW06IFQpID0+IHtcbiAgICAgICAgbGV0IGlkID0gJyc7XG4gICAgICAgIGNvbnN0IHsgaHJlZiB9ID0gbmV3IE1vbmtleUVjeExpbmtzTW9kZWwoaXRlbSk/LmdldEFjdGlvbignc2VsZicpIHx8IHtcbiAgICAgICAgICBocmVmOiAnJ1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChocmVmKSB7XG4gICAgICAgICAgaWQgPSBocmVmLnNwbGl0KCcvJykucG9wKCkgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICBpZFxuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgaWYgKGFyZ3MgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gYXJncy5tYXAoKGl0ZW06IFQpID0+IHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhhbmRsZShhcmdzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCBtYXBwaW5nRGF0YSAtPiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZT8oYXJnczogVCB8IFRbXSwgaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB0eXBlQWN0aW9uID0gJ3VwZGF0ZU9uZSc7XG5cbiAgICAgIGlmIChhcmdzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgdHlwZUFjdGlvbiA9ICd1cGRhdGVBbGwnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICB0aGlzLmFjdGlvblt0eXBlQWN0aW9uXSh7XG4gICAgICAgICAgZGF0YTogdGhpcy5tYXBwaW5nRGF0YShhcmdzLCBpZGVudGlmaWVyKVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCB1cGRhdGUgLT4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVQYWdlPyhhcmdzOiBNb25rZXlFY3hQYWdlLCBpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgdGhpcy5hY3Rpb24udXBkYXRlUGFnZSh7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgW2lkZW50aWZpZXJdOiBhcmdzXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1FQ1ggQ29yZSAtIE1ldGhvZCB1cGRhdGVQYWdlIC0+ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlTGlua3M/KGFyZ3M6IE1vbmtleUVjeExpbmtzLCBpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgdGhpcy5hY3Rpb24udXBkYXRlTGlua3Moe1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIFtpZGVudGlmaWVyXTogYXJnc1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNRUNYIENvcmUgLSBNZXRob2QgdXBkYXRlTGlua3MgLT4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIEBNb25rZXlFY3hDb3JlU2VydmljZSh7XG4gICAgcmVxdWVzdEluUHJvZ3Jlc3M6IHtcbiAgICAgIHNob3dQcm9ncmVzczogdHJ1ZVxuICAgIH1cbiAgfSlcbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWREYXRhKHVybDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcsIHVwZGF0ZUxpbmtzID0gdHJ1ZSkge1xuICAgIHRoaXMudXBkYXRlQ29udHJvbCh7IGlzTG9hZGluZzogdHJ1ZSB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5tb25rZXllY3hTZXJ2aWNlPy5nZXQ8YW55Pih1cmwpLnRvUHJvbWlzZSgpO1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZURhdGEoZGF0YSwgaWRlbnRpZmllciwgdXBkYXRlTGlua3MpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2U/Lm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb250cm9sKHsgaXNMb2FkaW5nOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkUGFnZURhdGEocGFnaW5hdGlvbjogTW9ua2V5RWN4UGFnaW5hdGlvbiwgaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBzdG9yZSwgc2VsZWN0b3IgfSA9IHRoaXM7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHN0b3JlXG4gICAgICAuc2VsZWN0KHNlbGVjdG9yLnNlbGVjdExpbmtzKHsgaWRlbnRpZmllciB9KSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGFnaW5hdGlvbjtcbiAgICBjb25zdCB7IGhyZWYgfSA9IG5ldyBNb25rZXlFY3hMaW5rc01vZGVsKHsgX2xpbmtzOiBkYXRhIH0pLmdldEFjdGlvbihhY3Rpb24pIHx8IHtcbiAgICAgIGhyZWY6ICcnXG4gICAgfTtcblxuICAgIGlmIChocmVmKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKGhyZWYsIGlkZW50aWZpZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmVzdGUgbcOpdG9kbyBwcmVjaXNhbW9zIGluY2x1aXIgYSBsw7NnaWNhIHBhcmEgY29uZmVyaXIgc2UgcHJlY2lzYSBsaW1wYXIgYVxuICAgKiBlbnRpZGFkZSBvdSBuw6NvXG4gICAqIEUgZGVwb2lzIHByZWNpc2EgaW52b2NhciBvIG3DqXRvZG8gbG9hZERhdGFcbiAgICogQHBhcmFtICh1cmwsIGlkZW50aWZpZXIpIG91IGRlIGFjb3JkbyBjb20gYSBhY3Rpb24gY3JpYWRhXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYFxuICAgKiBjb25zdCBoYXNEaWZmZXJlbmNlID0gLi4uLi5cbiAgICogaWYoaGFzRGlmZmVyZW5jZSkge1xuICAgKiAgICBzdG9yZS5kaXNwYXRjaChjbGVhcilcbiAgICogfVxuICAgKlxuICAgKiB0aGlzLmxvYWREYXRhKC4uLilcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgbG9hZD8oYXJnczogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNRUNYIENvcmUgLSBNZXRob2QgbG9hZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFBhZ2U/KGFyZ3M6IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTUVDWCBDb3JlIC0gTWV0aG9kIGxvYWRQYWdlIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19