monkey-front-core 0.0.235 → 0.0.238

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 (452) hide show
  1. package/karma.conf.js +44 -0
  2. package/monkey-front-core-0.0.238.tgz +0 -0
  3. package/ng-package.json +8 -0
  4. package/package.json +4 -24
  5. package/src/lib/components/alerts/alerts.component.html +18 -0
  6. package/src/lib/components/alerts/alerts.component.scss +71 -0
  7. package/src/lib/components/alerts/alerts.component.ts +36 -0
  8. package/src/lib/components/alerts/alerts.module.ts +12 -0
  9. package/{lib/components/alerts/index.d.ts → src/lib/components/alerts/index.ts} +2 -2
  10. package/src/lib/components/closed-to-maintenance/closed-to-maintenance.component.html +25 -0
  11. package/src/lib/components/closed-to-maintenance/closed-to-maintenance.component.scss +51 -0
  12. package/src/lib/components/closed-to-maintenance/closed-to-maintenance.component.ts +25 -0
  13. package/src/lib/components/closed-to-maintenance/closed-to-maintenance.module.ts +26 -0
  14. package/{lib/components/closed-to-maintenance/index.d.ts → src/lib/components/closed-to-maintenance/index.ts} +2 -2
  15. package/{lib/components/index.d.ts → src/lib/components/index.ts} +4 -4
  16. package/{lib/components/progress-bar/index.d.ts → src/lib/components/progress-bar/index.ts} +3 -3
  17. package/src/lib/components/progress-bar/progress-bar.component.html +3 -0
  18. package/src/lib/components/progress-bar/progress-bar.component.scss +6 -0
  19. package/src/lib/components/progress-bar/progress-bar.component.ts +22 -0
  20. package/src/lib/components/progress-bar/progress-bar.module.ts +10 -0
  21. package/src/lib/components/progress-bar/progress-bar.service.ts +61 -0
  22. package/{lib/components/version-changed/index.d.ts → src/lib/components/version-changed/index.ts} +2 -2
  23. package/src/lib/components/version-changed/version-changed.component.html +18 -0
  24. package/src/lib/components/version-changed/version-changed.component.scss +52 -0
  25. package/src/lib/components/version-changed/version-changed.component.ts +18 -0
  26. package/src/lib/components/version-changed/version-changed.module.ts +24 -0
  27. package/{lib/core/decorators/index.d.ts → src/lib/core/decorators/index.ts} +4 -4
  28. package/src/lib/core/decorators/monkeyecx-charts-decorators.ts +46 -0
  29. package/src/lib/core/decorators/monkeyecx-decorators.ts +159 -0
  30. package/src/lib/core/decorators/monkeyecx-download-decorators.ts +39 -0
  31. package/src/lib/core/decorators/monkeyecx-upload-decorators.ts +39 -0
  32. package/{lib/core/directives/index.d.ts → src/lib/core/directives/index.ts} +12 -12
  33. package/src/lib/core/directives/monkeyecx-directives-module.ts +45 -0
  34. package/src/lib/core/directives/monkeyecx-drag-drop.ts +40 -0
  35. package/src/lib/core/directives/monkeyecx-feature-by-program-directive.ts +53 -0
  36. package/src/lib/core/directives/monkeyecx-feature-directive.ts +72 -0
  37. package/src/lib/core/directives/monkeyecx-format-currency.ts +44 -0
  38. package/src/lib/core/directives/monkeyecx-format-upper.ts +54 -0
  39. package/src/lib/core/directives/monkeyecx-only-alpha-numeric-directive.ts +21 -0
  40. package/src/lib/core/directives/monkeyecx-only-number-directive.ts +21 -0
  41. package/src/lib/core/directives/monkeyecx-popover-options.directive.ts +52 -0
  42. package/src/lib/core/directives/monkeyecx-popover.directive.ts +235 -0
  43. package/src/lib/core/directives/monkeyecx-security-directive.ts +68 -0
  44. package/src/lib/core/directives/monkeyecx-tooltip-directive.ts +131 -0
  45. package/{lib/core/index.d.ts → src/lib/core/index.ts} +9 -9
  46. package/{lib/core/interceptors/index.d.ts → src/lib/core/interceptors/index.ts} +5 -5
  47. package/src/lib/core/interceptors/monkeyecx-http-config-error.interceptor.ts +58 -0
  48. package/src/lib/core/interceptors/monkeyecx-http-config-header.interceptor.ts +78 -0
  49. package/src/lib/core/interceptors/monkeyecx-http-config-interceptor.module.ts +40 -0
  50. package/src/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.ts +47 -0
  51. package/src/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.ts +44 -0
  52. package/{lib/core/interfaces/index.d.ts → src/lib/core/interfaces/index.ts} +29 -29
  53. package/src/lib/core/interfaces/monkeyecx-auth-credentials.ts +16 -0
  54. package/{lib/core/interfaces/monkeyecx-company-pendencies.d.ts → src/lib/core/interfaces/monkeyecx-company-pendencies.ts} +16 -14
  55. package/src/lib/core/interfaces/monkeyecx-company.ts +10 -0
  56. package/src/lib/core/interfaces/monkeyecx-config-boostrap.ts +14 -0
  57. package/src/lib/core/interfaces/monkeyecx-config.ts +139 -0
  58. package/src/lib/core/interfaces/monkeyecx-country-security.ts +4 -0
  59. package/src/lib/core/interfaces/monkeyecx-error-response.ts +5 -0
  60. package/src/lib/core/interfaces/monkeyecx-filter.ts +26 -0
  61. package/src/lib/core/interfaces/monkeyecx-handled-error-response.ts +11 -0
  62. package/src/lib/core/interfaces/monkeyecx-header-credentials.ts +4 -0
  63. package/{lib/core/interfaces/monkeyecx-intercom-options.d.ts → src/lib/core/interfaces/monkeyecx-intercom-options.ts} +4 -4
  64. package/src/lib/core/interfaces/monkeyecx-me-credentials.ts +23 -0
  65. package/src/lib/core/interfaces/monkeyecx-navigation.ts +28 -0
  66. package/src/lib/core/interfaces/monkeyecx-program.ts +10 -0
  67. package/src/lib/core/interfaces/monkeyecx-releases.ts +9 -0
  68. package/{lib/core/interfaces/monkeyecx-request-in-progress.d.ts → src/lib/core/interfaces/monkeyecx-request-in-progress.ts} +3 -3
  69. package/src/lib/core/interfaces/monkeyecx-request-paged.ts +27 -0
  70. package/src/lib/core/interfaces/monkeyecx-response-links.ts +11 -0
  71. package/src/lib/core/interfaces/monkeyecx-response-paged.ts +6 -0
  72. package/src/lib/core/interfaces/monkeyecx-saved-state.ts +5 -0
  73. package/{lib/core/interfaces/monkeyecx-scroll-options.d.ts → src/lib/core/interfaces/monkeyecx-scroll-options.ts} +6 -5
  74. package/{lib/core/interfaces/monkeyecx-service-credentials.d.ts → src/lib/core/interfaces/monkeyecx-service-credentials.ts} +13 -12
  75. package/{lib/core/interfaces/monkeyecx-support-options.d.ts → src/lib/core/interfaces/monkeyecx-support-options.ts} +4 -4
  76. package/src/lib/core/interfaces/monkeyecx-token-credentials.ts +20 -0
  77. package/src/lib/core/interfaces/monkeyecx-translate-options.ts +4 -0
  78. package/{lib/core/interfaces/request-download/index.d.ts → src/lib/core/interfaces/request-download/index.ts} +3 -3
  79. package/src/lib/core/interfaces/request-download/monkeyecx-request-download.ts +11 -0
  80. package/src/lib/core/interfaces/request-download/monkeyecx-request-downloaded.ts +8 -0
  81. package/src/lib/core/interfaces/request-download/monkeyecx-request-item-download.ts +7 -0
  82. package/{lib/core/interfaces/request-queue/index.d.ts → src/lib/core/interfaces/request-queue/index.ts} +3 -3
  83. package/src/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.ts +7 -0
  84. package/src/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.ts +6 -0
  85. package/{lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts → src/lib/core/interfaces/request-queue/monkeyecx-request-queue.ts} +9 -8
  86. package/{lib/core/interfaces/request-upload/index.d.ts → src/lib/core/interfaces/request-upload/index.ts} +2 -2
  87. package/src/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.ts +5 -0
  88. package/src/lib/core/interfaces/request-upload/monkeyecx-request-upload.ts +11 -0
  89. package/{lib/core/interfaces/schedules/index.d.ts → src/lib/core/interfaces/schedules/index.ts} +1 -1
  90. package/src/lib/core/interfaces/schedules/monkeyecx-request-schedule.ts +14 -0
  91. package/{lib/core/model/index.d.ts → src/lib/core/model/index.ts} +1 -1
  92. package/src/lib/core/model/monkeyecx-model.ts +38 -0
  93. package/{lib/core/pipes/index.d.ts → src/lib/core/pipes/index.ts} +19 -19
  94. package/src/lib/core/pipes/monkeyecx-display-first-name.ts +12 -0
  95. package/src/lib/core/pipes/monkeyecx-display-initials.ts +14 -0
  96. package/src/lib/core/pipes/monkeyecx-display-support-phone.ts +31 -0
  97. package/src/lib/core/pipes/monkeyecx-format-address.ts +27 -0
  98. package/src/lib/core/pipes/monkeyecx-format-beautify-json.ts +35 -0
  99. package/src/lib/core/pipes/monkeyecx-format-currency.ts +20 -0
  100. package/src/lib/core/pipes/monkeyecx-format-date-group.ts +40 -0
  101. package/src/lib/core/pipes/monkeyecx-format-date-timelapse.ts +25 -0
  102. package/src/lib/core/pipes/monkeyecx-format-date-unix-timelapse.ts +31 -0
  103. package/src/lib/core/pipes/monkeyecx-format-document.ts +12 -0
  104. package/src/lib/core/pipes/monkeyecx-format-number.ts +14 -0
  105. package/src/lib/core/pipes/monkeyecx-format-phone.ts +32 -0
  106. package/src/lib/core/pipes/monkeyecx-format-size.ts +13 -0
  107. package/src/lib/core/pipes/monkeyecx-format-tax.ts +16 -0
  108. package/src/lib/core/pipes/monkeyecx-format-type-document.ts +12 -0
  109. package/src/lib/core/pipes/monkeyecx-format-value.ts +12 -0
  110. package/src/lib/core/pipes/monkeyecx-format-zipcode.ts +12 -0
  111. package/src/lib/core/pipes/monkeyecx-pipes.module.ts +65 -0
  112. package/src/lib/core/pipes/monkeyecx-text-truncate.ts +17 -0
  113. package/src/lib/core/pipes/monkeyecx-truncate-qtd.ts +10 -0
  114. package/{lib/core/services/auth/index.d.ts → src/lib/core/services/auth/index.ts} +4 -4
  115. package/src/lib/core/services/auth/monkeyecx-auth-guard-company.service.ts +27 -0
  116. package/src/lib/core/services/auth/monkeyecx-auth-guard-login.service.ts +23 -0
  117. package/src/lib/core/services/auth/monkeyecx-auth-guard.service.ts +25 -0
  118. package/src/lib/core/services/auth/monkeyecx-authentication.service.ts +87 -0
  119. package/{lib/core/services/commons/index.d.ts → src/lib/core/services/commons/index.ts} +1 -1
  120. package/src/lib/core/services/commons/monkeyecx-commons.service.ts +557 -0
  121. package/src/lib/core/services/config/index.ts +9 -0
  122. package/src/lib/core/services/config/monkeyecx-alerts-config.service.ts +37 -0
  123. package/src/lib/core/services/config/monkeyecx-config.module.ts +23 -0
  124. package/src/lib/core/services/config/monkeyecx-config.service.ts +151 -0
  125. package/src/lib/core/services/config/monkeyecx-error-config.service.ts +92 -0
  126. package/src/lib/core/services/config/monkeyecx-feature-toggle.service.ts +71 -0
  127. package/src/lib/core/services/config/monkeyecx-ga-config.service.ts +56 -0
  128. package/src/lib/core/services/config/monkeyecx-i18n-config.service.ts +95 -0
  129. package/src/lib/core/services/config/monkeyecx-logs-config.service.ts +34 -0
  130. package/src/lib/core/services/config/monkeyecx-maintenance-config.service.ts +33 -0
  131. package/src/lib/core/services/config/monkeyecx-security-console-config.service.ts +40 -0
  132. package/src/lib/core/services/config/monkeyecx-service-worker-config.service.ts +50 -0
  133. package/{lib/core/services/error/index.d.ts → src/lib/core/services/error/index.ts} +4 -4
  134. package/src/lib/core/services/error/monkeyecx-error-handling.module.ts +20 -0
  135. package/src/lib/core/services/error/monkeyecx-error-handling.service.ts +33 -0
  136. package/src/lib/core/services/error/monkeyecx-http-error-handling.service.ts +160 -0
  137. package/src/lib/core/services/error/monkeyecx-others-errors-handling.service.ts +24 -0
  138. package/{lib/core/services/index.d.ts → src/lib/core/services/index.ts} +22 -22
  139. package/{lib/core/services/logged/index.d.ts → src/lib/core/services/logged/index.ts} +1 -1
  140. package/src/lib/core/services/logged/monkeyecx-logged-handling.service.ts +42 -0
  141. package/src/lib/core/services/monkeyecx-handling.service.ts +58 -0
  142. package/src/lib/core/services/monkeyecx-service.service.ts +116 -0
  143. package/{lib/core/services/pagination/index.d.ts → src/lib/core/services/pagination/index.ts} +1 -1
  144. package/src/lib/core/services/pagination/monkeyecx-pagination.service.ts +27 -0
  145. package/{lib/core/services/request-download/index.d.ts → src/lib/core/services/request-download/index.ts} +2 -2
  146. package/src/lib/core/services/request-download/monkeyecx-request-download-handling.service.ts +100 -0
  147. package/src/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.ts +65 -0
  148. package/{lib/core/services/request-paged/index.d.ts → src/lib/core/services/request-paged/index.ts} +1 -1
  149. package/src/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.ts +58 -0
  150. package/{lib/core/services/request-queue/index.d.ts → src/lib/core/services/request-queue/index.ts} +2 -2
  151. package/src/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.ts +125 -0
  152. package/src/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.ts +136 -0
  153. package/{lib/core/services/routes/index.d.ts → src/lib/core/services/routes/index.ts} +1 -1
  154. package/src/lib/core/services/routes/monkeyecx-dicovery-params.service.ts +54 -0
  155. package/{lib/core/services/schedules/index.d.ts → src/lib/core/services/schedules/index.ts} +1 -1
  156. package/src/lib/core/services/schedules/monkeyecx-request-schedule.service.ts +224 -0
  157. package/{lib/core/services/storage/index.d.ts → src/lib/core/services/storage/index.ts} +2 -2
  158. package/src/lib/core/services/storage/monkeyecx-cookie-storage.service.ts +28 -0
  159. package/src/lib/core/services/storage/monkeyecx-token-storage.service.ts +151 -0
  160. package/{lib/core/specification-search/index.d.ts → src/lib/core/specification-search/index.ts} +1 -1
  161. package/src/lib/core/specification-search/monkeyecx-specification-search.ts +111 -0
  162. package/src/lib/core/utils/decorators-utils.ts +56 -0
  163. package/{lib/core/utils/index.d.ts → src/lib/core/utils/index.ts} +8 -6
  164. package/src/lib/core/utils/statics.ts +36 -0
  165. package/src/lib/core/utils/utils.ts +237 -0
  166. package/src/lib/core/utils/validate-utils.ts +221 -0
  167. package/src/lib/core/utils/validators.ts +251 -0
  168. package/src/lib/monkey-front-core.module.ts +37 -0
  169. package/{public-api.d.ts → src/public-api.ts} +6 -3
  170. package/src/test.ts +26 -0
  171. package/tsconfig.lib.json +15 -0
  172. package/tsconfig.lib.prod.json +10 -0
  173. package/tsconfig.spec.json +17 -0
  174. package/esm2020/lib/components/alerts/alerts.component.mjs +0 -35
  175. package/esm2020/lib/components/alerts/alerts.module.mjs +0 -21
  176. package/esm2020/lib/components/alerts/index.mjs +0 -3
  177. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +0 -29
  178. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +0 -43
  179. package/esm2020/lib/components/closed-to-maintenance/index.mjs +0 -3
  180. package/esm2020/lib/components/index.mjs +0 -5
  181. package/esm2020/lib/components/progress-bar/index.mjs +0 -4
  182. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +0 -23
  183. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +0 -18
  184. package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +0 -50
  185. package/esm2020/lib/components/version-changed/index.mjs +0 -3
  186. package/esm2020/lib/components/version-changed/version-changed.component.mjs +0 -24
  187. package/esm2020/lib/components/version-changed/version-changed.module.mjs +0 -39
  188. package/esm2020/lib/core/decorators/index.mjs +0 -5
  189. package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +0 -40
  190. package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +0 -111
  191. package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +0 -26
  192. package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +0 -26
  193. package/esm2020/lib/core/directives/index.mjs +0 -13
  194. package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +0 -73
  195. package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +0 -57
  196. package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +0 -50
  197. package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +0 -68
  198. package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +0 -44
  199. package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +0 -67
  200. package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +0 -28
  201. package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +0 -28
  202. package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +0 -39
  203. package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +0 -212
  204. package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +0 -69
  205. package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +0 -123
  206. package/esm2020/lib/core/index.mjs +0 -10
  207. package/esm2020/lib/core/interceptors/index.mjs +0 -6
  208. package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +0 -39
  209. package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +0 -60
  210. package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +0 -47
  211. package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +0 -43
  212. package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +0 -37
  213. package/esm2020/lib/core/interfaces/index.mjs +0 -30
  214. package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +0 -2
  215. package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +0 -2
  216. package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +0 -2
  217. package/esm2020/lib/core/interfaces/monkeyecx-config-boostrap.mjs +0 -2
  218. package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +0 -2
  219. package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +0 -2
  220. package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +0 -2
  221. package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +0 -2
  222. package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +0 -2
  223. package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +0 -2
  224. package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +0 -2
  225. package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +0 -2
  226. package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +0 -2
  227. package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +0 -2
  228. package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +0 -2
  229. package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +0 -2
  230. package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +0 -2
  231. package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +0 -2
  232. package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +0 -2
  233. package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +0 -2
  234. package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +0 -2
  235. package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +0 -2
  236. package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +0 -2
  237. package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +0 -2
  238. package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +0 -2
  239. package/esm2020/lib/core/interfaces/request-download/index.mjs +0 -4
  240. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +0 -2
  241. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +0 -2
  242. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +0 -2
  243. package/esm2020/lib/core/interfaces/request-queue/index.mjs +0 -4
  244. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +0 -2
  245. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +0 -2
  246. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +0 -2
  247. package/esm2020/lib/core/interfaces/request-upload/index.mjs +0 -3
  248. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +0 -2
  249. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +0 -2
  250. package/esm2020/lib/core/interfaces/schedules/index.mjs +0 -2
  251. package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +0 -2
  252. package/esm2020/lib/core/model/index.mjs +0 -2
  253. package/esm2020/lib/core/model/monkeyecx-model.mjs +0 -25
  254. package/esm2020/lib/core/pipes/index.mjs +0 -20
  255. package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +0 -19
  256. package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +0 -21
  257. package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +0 -20
  258. package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +0 -38
  259. package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +0 -27
  260. package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +0 -45
  261. package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +0 -32
  262. package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +0 -36
  263. package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +0 -19
  264. package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +0 -20
  265. package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +0 -42
  266. package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +0 -20
  267. package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +0 -23
  268. package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +0 -19
  269. package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +0 -19
  270. package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +0 -19
  271. package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +0 -107
  272. package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +0 -23
  273. package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +0 -16
  274. package/esm2020/lib/core/services/auth/index.mjs +0 -5
  275. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +0 -28
  276. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +0 -27
  277. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +0 -26
  278. package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +0 -69
  279. package/esm2020/lib/core/services/commons/index.mjs +0 -2
  280. package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +0 -405
  281. package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +0 -40
  282. package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +0 -28
  283. package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +0 -111
  284. package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +0 -85
  285. package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +0 -67
  286. package/esm2020/lib/core/services/config/monkeyecx-ga-config.service.mjs +0 -57
  287. package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +0 -92
  288. package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +0 -34
  289. package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +0 -37
  290. package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +0 -42
  291. package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +0 -53
  292. package/esm2020/lib/core/services/error/index.mjs +0 -5
  293. package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +0 -27
  294. package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +0 -37
  295. package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +0 -135
  296. package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +0 -29
  297. package/esm2020/lib/core/services/index.mjs +0 -23
  298. package/esm2020/lib/core/services/logged/index.mjs +0 -2
  299. package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +0 -40
  300. package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +0 -50
  301. package/esm2020/lib/core/services/monkeyecx-service.service.mjs +0 -104
  302. package/esm2020/lib/core/services/pagination/index.mjs +0 -2
  303. package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +0 -29
  304. package/esm2020/lib/core/services/request-download/index.mjs +0 -3
  305. package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +0 -93
  306. package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +0 -61
  307. package/esm2020/lib/core/services/request-paged/index.mjs +0 -2
  308. package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +0 -42
  309. package/esm2020/lib/core/services/request-queue/index.mjs +0 -3
  310. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +0 -114
  311. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +0 -119
  312. package/esm2020/lib/core/services/routes/index.mjs +0 -2
  313. package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +0 -54
  314. package/esm2020/lib/core/services/schedules/index.mjs +0 -2
  315. package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +0 -188
  316. package/esm2020/lib/core/services/storage/index.mjs +0 -3
  317. package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +0 -32
  318. package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +0 -127
  319. package/esm2020/lib/core/specification-search/index.mjs +0 -2
  320. package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +0 -108
  321. package/esm2020/lib/core/utils/decorators-utils.mjs +0 -40
  322. package/esm2020/lib/core/utils/index.mjs +0 -8
  323. package/esm2020/lib/core/utils/statics.mjs +0 -38
  324. package/esm2020/lib/core/utils/utils.mjs +0 -221
  325. package/esm2020/lib/core/utils/validate-utils.mjs +0 -206
  326. package/esm2020/lib/core/utils/validators.mjs +0 -208
  327. package/esm2020/lib/monkey-front-core.module.mjs +0 -64
  328. package/esm2020/monkey-front-core.mjs +0 -5
  329. package/esm2020/public-api.mjs +0 -7
  330. package/fesm2015/monkey-front-core.mjs +0 -5123
  331. package/fesm2015/monkey-front-core.mjs.map +0 -1
  332. package/fesm2020/monkey-front-core.mjs +0 -5182
  333. package/fesm2020/monkey-front-core.mjs.map +0 -1
  334. package/lib/components/alerts/alerts.component.d.ts +0 -16
  335. package/lib/components/alerts/alerts.module.d.ts +0 -10
  336. package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +0 -13
  337. package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +0 -11
  338. package/lib/components/progress-bar/progress-bar.component.d.ts +0 -11
  339. package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
  340. package/lib/components/progress-bar/progress-bar.service.d.ts +0 -14
  341. package/lib/components/version-changed/version-changed.component.d.ts +0 -9
  342. package/lib/components/version-changed/version-changed.module.d.ts +0 -10
  343. package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +0 -1
  344. package/lib/core/decorators/monkeyecx-decorators.d.ts +0 -7
  345. package/lib/core/decorators/monkeyecx-download-decorators.d.ts +0 -2
  346. package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +0 -2
  347. package/lib/core/directives/monkeyecx-directives-module.d.ts +0 -19
  348. package/lib/core/directives/monkeyecx-drag-drop.d.ts +0 -12
  349. package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +0 -15
  350. package/lib/core/directives/monkeyecx-feature-directive.d.ts +0 -17
  351. package/lib/core/directives/monkeyecx-format-currency.d.ts +0 -16
  352. package/lib/core/directives/monkeyecx-format-upper.d.ts +0 -18
  353. package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +0 -9
  354. package/lib/core/directives/monkeyecx-only-number-directive.d.ts +0 -9
  355. package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +0 -19
  356. package/lib/core/directives/monkeyecx-popover.directive.d.ts +0 -43
  357. package/lib/core/directives/monkeyecx-security-directive.d.ts +0 -17
  358. package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +0 -23
  359. package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +0 -17
  360. package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +0 -16
  361. package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +0 -9
  362. package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +0 -12
  363. package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +0 -14
  364. package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +0 -15
  365. package/lib/core/interfaces/monkeyecx-company.d.ts +0 -10
  366. package/lib/core/interfaces/monkeyecx-config-boostrap.d.ts +0 -14
  367. package/lib/core/interfaces/monkeyecx-config.d.ts +0 -125
  368. package/lib/core/interfaces/monkeyecx-country-security.d.ts +0 -4
  369. package/lib/core/interfaces/monkeyecx-error-response.d.ts +0 -5
  370. package/lib/core/interfaces/monkeyecx-filter.d.ts +0 -24
  371. package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +0 -10
  372. package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +0 -4
  373. package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +0 -22
  374. package/lib/core/interfaces/monkeyecx-navigation.d.ts +0 -27
  375. package/lib/core/interfaces/monkeyecx-program.d.ts +0 -10
  376. package/lib/core/interfaces/monkeyecx-releases.d.ts +0 -9
  377. package/lib/core/interfaces/monkeyecx-request-paged.d.ts +0 -23
  378. package/lib/core/interfaces/monkeyecx-response-links.d.ts +0 -11
  379. package/lib/core/interfaces/monkeyecx-response-paged.d.ts +0 -6
  380. package/lib/core/interfaces/monkeyecx-saved-state.d.ts +0 -5
  381. package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +0 -20
  382. package/lib/core/interfaces/monkeyecx-translate-options.d.ts +0 -4
  383. package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +0 -10
  384. package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +0 -7
  385. package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +0 -7
  386. package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +0 -7
  387. package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +0 -6
  388. package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +0 -5
  389. package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +0 -10
  390. package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +0 -13
  391. package/lib/core/model/monkeyecx-model.d.ts +0 -13
  392. package/lib/core/pipes/monkeyecx-display-first-name.d.ts +0 -7
  393. package/lib/core/pipes/monkeyecx-display-initials.d.ts +0 -7
  394. package/lib/core/pipes/monkeyecx-format-address.d.ts +0 -14
  395. package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +0 -8
  396. package/lib/core/pipes/monkeyecx-format-currency.d.ts +0 -11
  397. package/lib/core/pipes/monkeyecx-format-date-group.d.ts +0 -11
  398. package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +0 -7
  399. package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +0 -7
  400. package/lib/core/pipes/monkeyecx-format-document.d.ts +0 -7
  401. package/lib/core/pipes/monkeyecx-format-number.d.ts +0 -7
  402. package/lib/core/pipes/monkeyecx-format-phone.d.ts +0 -7
  403. package/lib/core/pipes/monkeyecx-format-size.d.ts +0 -7
  404. package/lib/core/pipes/monkeyecx-format-tax.d.ts +0 -7
  405. package/lib/core/pipes/monkeyecx-format-type-document.d.ts +0 -7
  406. package/lib/core/pipes/monkeyecx-format-value.d.ts +0 -7
  407. package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +0 -7
  408. package/lib/core/pipes/monkeyecx-pipes.module.d.ts +0 -24
  409. package/lib/core/pipes/monkeyecx-text-truncate.d.ts +0 -7
  410. package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +0 -7
  411. package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +0 -11
  412. package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +0 -11
  413. package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +0 -11
  414. package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +0 -30
  415. package/lib/core/services/commons/monkeyecx-commons.service.d.ts +0 -124
  416. package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +0 -11
  417. package/lib/core/services/config/monkeyecx-config.module.d.ts +0 -9
  418. package/lib/core/services/config/monkeyecx-config.service.d.ts +0 -36
  419. package/lib/core/services/config/monkeyecx-error-config.service.d.ts +0 -8
  420. package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +0 -16
  421. package/lib/core/services/config/monkeyecx-ga-config.service.d.ts +0 -10
  422. package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +0 -16
  423. package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +0 -7
  424. package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +0 -13
  425. package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +0 -11
  426. package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +0 -16
  427. package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +0 -9
  428. package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +0 -9
  429. package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +0 -26
  430. package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +0 -9
  431. package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +0 -14
  432. package/lib/core/services/monkeyecx-handling.service.d.ts +0 -22
  433. package/lib/core/services/monkeyecx-service.service.d.ts +0 -18
  434. package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +0 -9
  435. package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +0 -18
  436. package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +0 -16
  437. package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +0 -11
  438. package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +0 -21
  439. package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +0 -23
  440. package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +0 -13
  441. package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +0 -47
  442. package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +0 -11
  443. package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +0 -29
  444. package/lib/core/specification-search/monkeyecx-specification-search.d.ts +0 -20
  445. package/lib/core/utils/decorators-utils.d.ts +0 -5
  446. package/lib/core/utils/statics.d.ts +0 -28
  447. package/lib/core/utils/utils.d.ts +0 -22
  448. package/lib/core/utils/validate-utils.d.ts +0 -66
  449. package/lib/core/utils/validators.d.ts +0 -29
  450. package/lib/monkey-front-core.module.d.ts +0 -17
  451. package/monkey-front-core-0.0.235.tgz +0 -0
  452. package/monkey-front-core.d.ts +0 -5
@@ -1,27 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./monkeyecx-authentication.service";
4
- export class MonkeyEcxAuthGuardLogin {
5
- constructor(monkeyecxAuthenticationService) {
6
- this.monkeyecxAuthenticationService = monkeyecxAuthenticationService;
7
- // not to do
8
- }
9
- canActivate() {
10
- if (this.monkeyecxAuthenticationService.isAuthorized()) {
11
- this.monkeyecxAuthenticationService.redirectApp();
12
- return false;
13
- }
14
- if (this.monkeyecxAuthenticationService.hadAtLeastOneLogin()) {
15
- this.monkeyecxAuthenticationService.redirectLoginWelcomeBack();
16
- return false;
17
- }
18
- return true;
19
- }
20
- }
21
- MonkeyEcxAuthGuardLogin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuardLogin, deps: [{ token: i1.MonkeyEcxAuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
- MonkeyEcxAuthGuardLogin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuardLogin, providedIn: 'root' });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuardLogin, decorators: [{
24
- type: Injectable,
25
- args: [{ providedIn: 'root' }]
26
- }], ctorParameters: function () { return [{ type: i1.MonkeyEcxAuthenticationService }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWF1dGgtZ3VhcmQtbG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9hdXRoL21vbmtleWVjeC1hdXRoLWd1YXJkLWxvZ2luLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsOEJBQThEO1FBQTlELG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEYsWUFBWTtJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsOEJBQThCLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQy9ELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O29IQWZVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRFYsTUFBTTsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vbmtleUVjeEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbW9ua2V5ZWN4LWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vbmtleUVjeEF1dGhHdWFyZExvZ2luIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vbmtleWVjeEF1dGhlbnRpY2F0aW9uU2VydmljZTogTW9ua2V5RWN4QXV0aGVudGljYXRpb25TZXJ2aWNlKSB7XG4gICAgLy8gbm90IHRvIGRvXG4gIH1cblxuICBjYW5BY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm1vbmtleWVjeEF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhvcml6ZWQoKSkge1xuICAgICAgdGhpcy5tb25rZXllY3hBdXRoZW50aWNhdGlvblNlcnZpY2UucmVkaXJlY3RBcHAoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9ua2V5ZWN4QXV0aGVudGljYXRpb25TZXJ2aWNlLmhhZEF0TGVhc3RPbmVMb2dpbigpKSB7XG4gICAgICB0aGlzLm1vbmtleWVjeEF1dGhlbnRpY2F0aW9uU2VydmljZS5yZWRpcmVjdExvZ2luV2VsY29tZUJhY2soKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./monkeyecx-authentication.service";
4
- export class MonkeyEcxAuthGuard {
5
- constructor(monkeyecxAuthenticationService) {
6
- this.monkeyecxAuthenticationService = monkeyecxAuthenticationService;
7
- // not to do
8
- }
9
- canActivate() {
10
- const { monkeyecxAuthenticationService } = this;
11
- if (monkeyecxAuthenticationService.isAuthorized()) {
12
- return true;
13
- }
14
- monkeyecxAuthenticationService.redirectLoginWelcomeBack();
15
- return false;
16
- }
17
- }
18
- MonkeyEcxAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuard, deps: [{ token: i1.MonkeyEcxAuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable });
19
- MonkeyEcxAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuard, providedIn: 'root' });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthGuard, decorators: [{
21
- type: Injectable,
22
- args: [{
23
- providedIn: 'root'
24
- }]
25
- }], ctorParameters: function () { return [{ type: i1.MonkeyEcxAuthenticationService }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWF1dGgtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9hdXRoL21vbmtleWVjeC1hdXRoLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUTNDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsOEJBQThEO1FBQTlELG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEYsWUFBWTtJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxFQUFFLDhCQUE4QixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRWhELElBQUksOEJBQThCLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELDhCQUE4QixDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsrR0FmVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNb25rZXlFY3hBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vbmtleWVjeC1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4QXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vbmtleWVjeEF1dGhlbnRpY2F0aW9uU2VydmljZTogTW9ua2V5RWN4QXV0aGVudGljYXRpb25TZXJ2aWNlKSB7XG4gICAgLy8gbm90IHRvIGRvXG4gIH1cblxuICBjYW5BY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgbW9ua2V5ZWN4QXV0aGVudGljYXRpb25TZXJ2aWNlIH0gPSB0aGlzO1xuXG4gICAgaWYgKG1vbmtleWVjeEF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhvcml6ZWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbW9ua2V5ZWN4QXV0aGVudGljYXRpb25TZXJ2aWNlLnJlZGlyZWN0TG9naW5XZWxjb21lQmFjaygpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1,69 +0,0 @@
1
- /* eslint-disable no-console */
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class MonkeyEcxAuthenticationService {
5
- constructor() {
6
- this.hadAtLeastOneLogin = () => {
7
- console.error('hadAtLeastOneLogin needs to be declared!');
8
- return null;
9
- };
10
- this.redirectApp = () => {
11
- console.error('redirectApp needs to be declared!');
12
- return null;
13
- };
14
- this.redirectLoginWelcomeBack = () => {
15
- console.error('redirectLoginWelcomeBack needs to be declared!');
16
- return null;
17
- };
18
- this.isAuthorized = () => {
19
- console.error('isAuthorized needs to be declared!');
20
- return false;
21
- };
22
- this.isCompanyAuthorized = () => {
23
- console.error('isCompanyAuthorized needs to be declared!');
24
- return false;
25
- };
26
- this.isTokenMandatory = (url) => {
27
- console.error('isTokenMandatory needs to be declared!');
28
- return false;
29
- };
30
- this.getRequestWithHeaders = (request) => {
31
- console.error('getRequestWithHeaders needs to be declared!');
32
- return null;
33
- };
34
- this.getRequestWithHeadersOb = (request) => {
35
- console.error('getRequestWithHeadersOb needs to be declared!');
36
- return null;
37
- };
38
- this.refreshShouldHappen = (response) => {
39
- console.error('refreshShouldHappen needs to be declared!');
40
- return false;
41
- };
42
- this.refreshToken = () => {
43
- console.error('refreshToken needs to be declared!');
44
- return null;
45
- };
46
- // not to do
47
- }
48
- init(args) {
49
- this.hadAtLeastOneLogin = args?.hadAtLeastOneLogin || this.hadAtLeastOneLogin.bind(this);
50
- this.redirectApp = args?.redirectApp || this.redirectApp.bind(this);
51
- this.redirectLoginWelcomeBack =
52
- args?.redirectLoginWelcomeBack || this.redirectLoginWelcomeBack.bind(this);
53
- this.isAuthorized = args?.isAuthorized || this.isAuthorized.bind(this);
54
- this.isTokenMandatory = args?.isTokenMandatory || this.isTokenMandatory.bind(this);
55
- this.isCompanyAuthorized = args?.isCompanyAuthorized || this.isCompanyAuthorized.bind(this);
56
- this.getRequestWithHeaders =
57
- args?.getRequestWithHeaders || this.getRequestWithHeaders.bind(this);
58
- this.getRequestWithHeadersOb = args?.getRequestWithHeadersOb.bind(this);
59
- this.refreshShouldHappen = args?.refreshShouldHappen || this.refreshShouldHappen.bind(this);
60
- this.refreshToken = args?.refreshToken || this.refreshToken.bind(this);
61
- }
62
- }
63
- MonkeyEcxAuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthenticationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
64
- MonkeyEcxAuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthenticationService, providedIn: 'root' });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxAuthenticationService, decorators: [{
66
- type: Injectable,
67
- args: [{ providedIn: 'root' }]
68
- }], ctorParameters: function () { return []; } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvYXV0aC9tb25rZXllY3gtYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QztRQUlBLHVCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRixnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRiw2QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRUYsaUJBQVksR0FBRyxHQUFZLEVBQUU7WUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsd0JBQW1CLEdBQUcsR0FBWSxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUMzRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLHFCQUFnQixHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsMEJBQXFCLEdBQUcsQ0FBQyxPQUF5QixFQUEwQixFQUFFO1lBQzVFLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUM3RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLDRCQUF1QixHQUFHLENBQUMsT0FBeUIsRUFBeUIsRUFBRTtZQUM3RSxPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRix3QkFBbUIsR0FBRyxDQUFDLFFBQTJCLEVBQVcsRUFBRTtZQUM3RCxPQUFPLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixpQkFBWSxHQUFHLEdBQTJCLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBbkRBLFlBQVk7SUFDZCxDQUFDO0lBb0RELElBQUksQ0FBQyxJQVdKO1FBQ0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsd0JBQXdCO1lBQzNCLElBQUksRUFBRSx3QkFBd0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksRUFBRSxtQkFBbUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxxQkFBcUI7WUFDeEIsSUFBSSxFQUFFLHFCQUFxQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksRUFBRSxtQkFBbUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RSxDQUFDOzsySEEvRVUsOEJBQThCOytIQUE5Qiw4QkFBOEIsY0FEakIsTUFBTTsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb25rZXlFY3hBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBub3QgdG8gZG9cbiAgfVxuXG4gIGhhZEF0TGVhc3RPbmVMb2dpbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdoYWRBdExlYXN0T25lTG9naW4gbmVlZHMgdG8gYmUgZGVjbGFyZWQhJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcmVkaXJlY3RBcHAgPSAoKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcigncmVkaXJlY3RBcHAgbmVlZHMgdG8gYmUgZGVjbGFyZWQhJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcmVkaXJlY3RMb2dpbldlbGNvbWVCYWNrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3JlZGlyZWN0TG9naW5XZWxjb21lQmFjayBuZWVkcyB0byBiZSBkZWNsYXJlZCEnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBpc0F1dGhvcml6ZWQgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc29sZS5lcnJvcignaXNBdXRob3JpemVkIG5lZWRzIHRvIGJlIGRlY2xhcmVkIScpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBpc0NvbXBhbnlBdXRob3JpemVkID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2lzQ29tcGFueUF1dGhvcml6ZWQgbmVlZHMgdG8gYmUgZGVjbGFyZWQhJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGlzVG9rZW5NYW5kYXRvcnkgPSAodXJsOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdpc1Rva2VuTWFuZGF0b3J5IG5lZWRzIHRvIGJlIGRlY2xhcmVkIScpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBnZXRSZXF1ZXN0V2l0aEhlYWRlcnMgPSAocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IEh0dHBSZXF1ZXN0PGFueT4gfCBhbnkgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2dldFJlcXVlc3RXaXRoSGVhZGVycyBuZWVkcyB0byBiZSBkZWNsYXJlZCEnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBnZXRSZXF1ZXN0V2l0aEhlYWRlcnNPYiA9IChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxhbnk+IHwgYW55ID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdnZXRSZXF1ZXN0V2l0aEhlYWRlcnNPYiBuZWVkcyB0byBiZSBkZWNsYXJlZCEnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICByZWZyZXNoU2hvdWxkSGFwcGVuID0gKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3JlZnJlc2hTaG91bGRIYXBwZW4gbmVlZHMgdG8gYmUgZGVjbGFyZWQhJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHJlZnJlc2hUb2tlbiA9ICgpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdyZWZyZXNoVG9rZW4gbmVlZHMgdG8gYmUgZGVjbGFyZWQhJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgaW5pdChhcmdzOiB7XG4gICAgaGFkQXRMZWFzdE9uZUxvZ2luPzogYW55O1xuICAgIHJlZGlyZWN0QXBwPzogYW55O1xuICAgIHJlZGlyZWN0TG9naW5XZWxjb21lQmFjaz86IGFueTtcbiAgICBpc0F1dGhvcml6ZWQ/OiBhbnk7XG4gICAgaXNUb2tlbk1hbmRhdG9yeT86IGFueTtcbiAgICBpc0NvbXBhbnlBdXRob3JpemVkPzogYW55O1xuICAgIGdldFJlcXVlc3RXaXRoSGVhZGVycz86IGFueTtcbiAgICBnZXRSZXF1ZXN0V2l0aEhlYWRlcnNPYj86IGFueTtcbiAgICByZWZyZXNoU2hvdWxkSGFwcGVuPzogYW55O1xuICAgIHJlZnJlc2hUb2tlbj86IGFueTtcbiAgfSkge1xuICAgIHRoaXMuaGFkQXRMZWFzdE9uZUxvZ2luID0gYXJncz8uaGFkQXRMZWFzdE9uZUxvZ2luIHx8IHRoaXMuaGFkQXRMZWFzdE9uZUxvZ2luLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWRpcmVjdEFwcCA9IGFyZ3M/LnJlZGlyZWN0QXBwIHx8IHRoaXMucmVkaXJlY3RBcHAuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZGlyZWN0TG9naW5XZWxjb21lQmFjayA9XG4gICAgICBhcmdzPy5yZWRpcmVjdExvZ2luV2VsY29tZUJhY2sgfHwgdGhpcy5yZWRpcmVjdExvZ2luV2VsY29tZUJhY2suYmluZCh0aGlzKTtcbiAgICB0aGlzLmlzQXV0aG9yaXplZCA9IGFyZ3M/LmlzQXV0aG9yaXplZCB8fCB0aGlzLmlzQXV0aG9yaXplZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNUb2tlbk1hbmRhdG9yeSA9IGFyZ3M/LmlzVG9rZW5NYW5kYXRvcnkgfHwgdGhpcy5pc1Rva2VuTWFuZGF0b3J5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5pc0NvbXBhbnlBdXRob3JpemVkID0gYXJncz8uaXNDb21wYW55QXV0aG9yaXplZCB8fCB0aGlzLmlzQ29tcGFueUF1dGhvcml6ZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFJlcXVlc3RXaXRoSGVhZGVycyA9XG4gICAgICBhcmdzPy5nZXRSZXF1ZXN0V2l0aEhlYWRlcnMgfHwgdGhpcy5nZXRSZXF1ZXN0V2l0aEhlYWRlcnMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFJlcXVlc3RXaXRoSGVhZGVyc09iID0gYXJncz8uZ2V0UmVxdWVzdFdpdGhIZWFkZXJzT2IuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZnJlc2hTaG91bGRIYXBwZW4gPSBhcmdzPy5yZWZyZXNoU2hvdWxkSGFwcGVuIHx8IHRoaXMucmVmcmVzaFNob3VsZEhhcHBlbi5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVmcmVzaFRva2VuID0gYXJncz8ucmVmcmVzaFRva2VuIHx8IHRoaXMucmVmcmVzaFRva2VuLmJpbmQodGhpcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './monkeyecx-commons.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvc2VydmljZXMvY29tbW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb25rZXllY3gtY29tbW9ucy5zZXJ2aWNlJztcbiJdfQ==
@@ -1,405 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { NavigationStart } from '@angular/router';
3
- import { BehaviorSubject, throwError } from 'rxjs';
4
- import { filter, take, takeWhile } from 'rxjs/operators';
5
- import { MonkeyEcxRequestPagedHandling } from '../request-paged/monkeyecx-request-request-paged-handling';
6
- import { MonkeyEcxUtils } from '../../utils/utils';
7
- import { MonkeyEcxCoreService } from '../../decorators/monkeyecx-decorators';
8
- import { MonkeyEcxModel } from '../../model';
9
- class LinksModel extends MonkeyEcxModel {
10
- constructor(data) {
11
- super();
12
- this._links = data?._links;
13
- }
14
- }
15
- export class MonkeyEcxCommonsService {
16
- constructor(monkeyecxService, tokenStorage, otherArgs) {
17
- this.monkeyecxService = monkeyecxService;
18
- this.tokenStorage = tokenStorage;
19
- this.otherArgs = otherArgs;
20
- this.flagValidator = true;
21
- this.__data$ = null;
22
- this.__pagination$ = null;
23
- this.__control$ = null;
24
- this.__savedState = null;
25
- this.__error = null;
26
- this.__handledError = null;
27
- this.__page = null;
28
- this.__links = null;
29
- this.__requestPaged = null;
30
- this.__onSearchChanged$ = new BehaviorSubject(null);
31
- this.__onDataChanged$ = new BehaviorSubject(null);
32
- this.__onLoadingInProgress$ = new BehaviorSubject(false);
33
- this.__onUploadInProgress$ = new BehaviorSubject(false);
34
- this.__onDataDeleted$ = new BehaviorSubject(null);
35
- this.__onErrorChanged$ = new BehaviorSubject(null);
36
- this.__onGovernmentIdDataChanged$ = new BehaviorSubject(null);
37
- this.__onZipCodeDataChanged$ = new BehaviorSubject(null);
38
- this.__oni18nDataChanged$ = new BehaviorSubject(null);
39
- this.__onDoSearch$ = new BehaviorSubject({});
40
- this.__tokenCredentials = null;
41
- this.__schedule = null;
42
- this.__callbackPagination = () => {
43
- // eslint-disable-next-line no-console
44
- return console.error('Method callbackPagination needs to be declared');
45
- };
46
- this.__isAbleToDoPagination = {};
47
- this.handleInit();
48
- }
49
- handleInit() {
50
- if (this.tokenStorage) {
51
- this.__tokenCredentials = this.tokenStorage.getToken();
52
- }
53
- if (this.otherArgs?.router) {
54
- const { clearOnChangeRoute } = this.otherArgs?.schedule?.options || {
55
- clearOnChangeRoute: false
56
- };
57
- this.otherArgs.router.events
58
- .pipe(filter((event) => {
59
- return event instanceof NavigationStart;
60
- }), take(1))
61
- .subscribe(() => {
62
- if (this.__schedule && clearOnChangeRoute) {
63
- this.otherArgs?.schedule?.service?.removeSchedule(this.__schedule);
64
- this.__schedule = null;
65
- }
66
- });
67
- }
68
- }
69
- navigateToPendencyPage(arg, router) {
70
- const { companyType } = this.__tokenCredentials || {
71
- companyType: ''
72
- };
73
- let route = '/app';
74
- if (companyType) {
75
- route = `${route}/${companyType}/pages`;
76
- }
77
- else {
78
- route = `${route}/user/profile/pages`;
79
- }
80
- if (!router) {
81
- // eslint-disable-next-line no-console
82
- console.error('Router must be declared');
83
- }
84
- else {
85
- router.navigate([`${route}/company-pendency`.toLowerCase()], {
86
- state: {
87
- pendencyData: arg
88
- }
89
- });
90
- }
91
- }
92
- getRole() {
93
- const { __tokenCredentials } = this;
94
- if (!__tokenCredentials)
95
- return '';
96
- if (__tokenCredentials?.programAdmin === 'true') {
97
- return 'PROGRAM_ADMIN';
98
- }
99
- return __tokenCredentials?.role || '';
100
- }
101
- allowedSecurityAccessByPendency(args) {
102
- if (!args) {
103
- return {
104
- hasPendencies: false
105
- };
106
- }
107
- const { service, type } = args;
108
- return service.hasPendencies(type);
109
- }
110
- allowedSecurityAccessByFeature(args) {
111
- if (!args) {
112
- return true;
113
- }
114
- const { config, feature } = args;
115
- try {
116
- if (!MonkeyEcxUtils.persistNullEmptyUndefined(feature) ||
117
- !MonkeyEcxUtils.persistNullEmptyUndefined(config?.program?.settings)) {
118
- return true;
119
- }
120
- return !config?.program?.settings?.[feature];
121
- }
122
- catch (e) {
123
- // not to do
124
- }
125
- return true;
126
- }
127
- allowedSecurityAccessByCountry(arg) {
128
- if (!arg)
129
- return true;
130
- return arg.country === arg.envCountry;
131
- }
132
- allowedSecurityAccess(args) {
133
- if (!args)
134
- return true;
135
- const roles = args?.roles;
136
- const byExclusion = args?.byExclusion;
137
- const found = roles?.indexOf(this.getRole());
138
- let ret = false;
139
- if (byExclusion) {
140
- ret = true;
141
- if (found > -1) {
142
- ret = false;
143
- }
144
- }
145
- else {
146
- ret = false;
147
- if (found > -1) {
148
- ret = true;
149
- }
150
- }
151
- if (!roles || roles.length === 0 || this.getRole() === 'PROGRAM_ADMIN') {
152
- ret = true;
153
- }
154
- return ret;
155
- }
156
- navigateToErrorPage(statusCode, router) {
157
- const routes = {
158
- 403: 'forbidden',
159
- 404: 'not-found',
160
- 500: 'service-problems',
161
- 503: 'service-problems'
162
- };
163
- if (!router) {
164
- console.error('Router must be declared');
165
- }
166
- else {
167
- router?.navigate([`/app/pages/${routes[statusCode]}`.toLowerCase()]);
168
- }
169
- }
170
- handlePaginationOptions() {
171
- const { __paginationOptions } = this;
172
- if (__paginationOptions) {
173
- const { service, callback, name } = __paginationOptions;
174
- service?.setCallback((type) => {
175
- this.doPaginationv2(type, callback);
176
- }, name || 'main');
177
- }
178
- }
179
- setPage(requestPaged) {
180
- this.__requestPaged = {
181
- ...this.__requestPaged,
182
- ...requestPaged
183
- };
184
- return this;
185
- }
186
- nextPage() {
187
- if (this.__links) {
188
- return !!this.__links?.next;
189
- }
190
- if (!this.__requestPaged)
191
- return false;
192
- const { page } = this.__requestPaged;
193
- const { number, totalPages } = page;
194
- if (number < totalPages) {
195
- this.__requestPaged = {
196
- ...this.__requestPaged,
197
- page: {
198
- ...page,
199
- number: number + 1
200
- }
201
- };
202
- return true;
203
- }
204
- return false;
205
- }
206
- getEmbeddedData(data, field) {
207
- const { _embedded } = data;
208
- return _embedded ? _embedded[field] : null;
209
- }
210
- getNormalizedUrl(url, samePage = false) {
211
- const { __requestPaged, __links } = this;
212
- return new MonkeyEcxRequestPagedHandling(url, __requestPaged || {}, __links, samePage).getRequestWithPagedParams();
213
- }
214
- clear(clearData) {
215
- if (clearData) {
216
- this.__data = null;
217
- this.__requestPaged = null;
218
- this.__params = null;
219
- this.__page = null;
220
- this.__links = null;
221
- if (this.__schedule) {
222
- const { queue } = this.__schedule;
223
- if (queue) {
224
- this.otherArgs?.queue?.service?.removeQueueItem(queue);
225
- }
226
- this.otherArgs?.schedule?.service?.removeSchedule(this.__schedule);
227
- this.__schedule = null;
228
- }
229
- }
230
- this.__error = null;
231
- this.__handledError = null;
232
- this.flagValidator = false;
233
- }
234
- resolve(route, state, otherArgs) {
235
- if (JSON.stringify(route?.queryParams) === '{}') {
236
- this.__data = null;
237
- this.__page = null;
238
- }
239
- this.__requestPaged = null;
240
- this.flagValidator = true;
241
- if (this.tokenStorage) {
242
- this.__tokenCredentials = this.tokenStorage.getToken();
243
- }
244
- const pend = this.allowedSecurityAccessByPendency(otherArgs?.pendency);
245
- const allowedByProgram = this.allowedSecurityAccessByFeature(otherArgs?.featureByProgram);
246
- if (this.allowedSecurityAccess(otherArgs?.security) &&
247
- this.allowedSecurityAccessByCountry(otherArgs?.countrySecurity) &&
248
- !pend.hasPendencies &&
249
- allowedByProgram) {
250
- if (this.__schedule) {
251
- this.otherArgs?.schedule?.service?.removeSchedule(this.__schedule);
252
- this.__schedule = null;
253
- }
254
- const { __requestPaged } = this;
255
- if (!__requestPaged) {
256
- this.setPage({
257
- page: {
258
- number: 0,
259
- size: 10
260
- }
261
- });
262
- }
263
- if (otherArgs?.translateOptions) {
264
- const { service, keys } = otherArgs?.translateOptions;
265
- this.geti18n(service, keys || '');
266
- }
267
- if (otherArgs?.callbackPagination) {
268
- this.__callbackPagination = otherArgs.callbackPagination;
269
- }
270
- if (otherArgs?.paginationOptions) {
271
- this.__paginationOptions = otherArgs?.paginationOptions;
272
- this.handlePaginationOptions();
273
- }
274
- if (otherArgs?.feature) {
275
- const { flag, service } = otherArgs.feature;
276
- service.onFlags
277
- .pipe(takeWhile(() => {
278
- return this.flagValidator;
279
- }))
280
- .subscribe((val) => {
281
- if (val) {
282
- const hasFlag = service.getFlag(flag);
283
- if (MonkeyEcxUtils.persistNullEmptyUndefined(hasFlag)) {
284
- if (!hasFlag) {
285
- this.navigateToErrorPage(404, otherArgs?.router);
286
- return;
287
- }
288
- }
289
- otherArgs?.callbackMain();
290
- }
291
- });
292
- }
293
- else {
294
- otherArgs?.callbackMain();
295
- }
296
- }
297
- else if (!allowedByProgram) {
298
- this.navigateToErrorPage(404, otherArgs?.router);
299
- }
300
- else if (pend.hasPendencies) {
301
- this.navigateToPendencyPage(pend, otherArgs?.router);
302
- }
303
- else {
304
- this.navigateToErrorPage(403, otherArgs?.router);
305
- }
306
- }
307
- getHTTPHeaderApplicationPDF() {
308
- return {
309
- observe: 'response',
310
- responseType: 'blob'
311
- };
312
- }
313
- genericMethod(link, data, callback) {
314
- const { href, type = 'get' } = link;
315
- this.monkeyecxService?.[type.toLowerCase()](`${href}`, data)?.subscribe((resp) => {
316
- if (callback)
317
- callback(resp);
318
- }, (err) => {
319
- if (callback)
320
- callback();
321
- throwError(err);
322
- });
323
- }
324
- async getGenericData(data, action) {
325
- const { monkeyecxService } = this;
326
- if (!monkeyecxService)
327
- return null;
328
- const { href, type } = new LinksModel(data)?.getAction(action) || {
329
- href: '', type: 'get'
330
- };
331
- return monkeyecxService[type.toLowerCase()](href)
332
- .pipe(take(1)).toPromise();
333
- }
334
- geti18n(translateService, keys) {
335
- translateService.onDefaultLangChange.subscribe(() => {
336
- this.__i18n = translateService.instant(keys);
337
- this.__oni18nDataChanged$.next(null);
338
- });
339
- translateService.getStreamOnTranslationChange(keys).subscribe(() => {
340
- this.__i18n = translateService.instant(keys);
341
- this.__oni18nDataChanged$.next(null);
342
- });
343
- }
344
- doPagination() {
345
- if (!this.__onLoadingInProgress$.value) {
346
- const hasMorePages = this.setPage({
347
- page: {
348
- ...this.__page
349
- }
350
- }).nextPage();
351
- if (hasMorePages && this.__callbackPagination) {
352
- this.__callbackPagination();
353
- }
354
- }
355
- }
356
- doPaginationv2(type, callback) {
357
- if (!this.__onLoadingInProgress$.value) {
358
- if (callback) {
359
- callback(type);
360
- }
361
- }
362
- }
363
- setLinks(links) {
364
- this.__isAbleToDoPagination = {
365
- first: !!links?.first,
366
- next: !!links?.next
367
- };
368
- this.__links = links;
369
- }
370
- setSearchByUrl(router, url, search, extras) {
371
- this.__data = null;
372
- this.__page = null;
373
- this.__onDataChanged$.next(null);
374
- this.__onLoadingInProgress$.next(false);
375
- router.navigate([url], {
376
- queryParams: {
377
- ...search,
378
- r: MonkeyEcxUtils.getRandomString(30)
379
- },
380
- queryParamsHandling: 'merge',
381
- ...extras
382
- });
383
- }
384
- saveState(state) {
385
- this.__savedState = {
386
- page: this.__page,
387
- ...state
388
- };
389
- }
390
- }
391
- __decorate([
392
- MonkeyEcxCoreService({
393
- requestInProgress: {
394
- showProgress: true
395
- }
396
- })
397
- ], MonkeyEcxCommonsService.prototype, "genericMethod", null);
398
- __decorate([
399
- MonkeyEcxCoreService({
400
- requestInProgress: {
401
- showProgress: true
402
- }
403
- })
404
- ], MonkeyEcxCommonsService.prototype, "getGenericData", null);
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFrQnpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUc3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE1BQU0sVUFBVyxTQUFRLGNBQWM7SUFDckMsWUFBWSxJQUFVO1FBQ3BCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBdUI7SUFrRWxDLFlBQ1MsZ0JBQW1DLEVBQ25DLFlBQTJDLEVBQzNDLFNBV047UUFiTSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLGlCQUFZLEdBQVosWUFBWSxDQUErQjtRQUMzQyxjQUFTLEdBQVQsU0FBUyxDQVdmO1FBL0VLLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTdCLFlBQU8sR0FBMkIsSUFBSSxDQUFDO1FBRXZDLGtCQUFhLEdBQTJCLElBQUksQ0FBQztR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e1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4RXJyb3JSZXNwb25zZSxcbiAgTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcbiAgTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlLFxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxuICBNb25rZXlFY3hSZXNwb25zZUxpbmtzLFxuICBNb25rZXlFY3hUb2tlbkNyZWRlbnRpYWxzLFxuICBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zLFxuICBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCxcbiAgTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5LFxuICBNb25rZXlFY3hTYXZlZFN0YXRlLFxuICBNb25rZXlFY3hDb25maWdcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9tb25rZXllY3gtdG9rZW4tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZVNlcnZpY2UgfSBmcm9tICcuLi9zY2hlZHVsZXMvbW9ua2V5ZWN4LXJlcXVlc3Qtc2NoZWR1bGUuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXF1ZXN0LXF1ZXVlL21vbmtleWVjeC1yZXF1ZXN0LXF1ZXVlLWhhbmRsaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UmVxdWVzdFBhZ2VkSGFuZGxpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LXBhZ2VkL21vbmtleWVjeC1yZXF1ZXN0LXJlcXVlc3QtcGFnZWQtaGFuZGxpbmcnO1xuaW1wb3J0IHsgTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvbW9ua2V5ZWN4LWZlYXR1cmUtdG9nZ2xlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBNb25rZXlFY3hDb3JlU2VydmljZSB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvbW9ua2V5ZWN4LWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4U2VydmljZSB9IGZyb20gJy4uL21vbmtleWVjeC1zZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7IE1vbmtleUVjeE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuXG5jbGFzcyBMaW5rc01vZGVsIGV4dGVuZHMgTW9ua2V5RWN4TW9kZWwge1xuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9saW5rcyA9IGRhdGE/Ll9saW5rcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIGZsYWdWYWxpZGF0b3IgPSB0cnVlO1xuXG4gIF9fZGF0YSQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fcGFnaW5hdGlvbiQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fY29udHJvbCQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fZGF0YTogYW55IHwgYW55W107XG5cbiAgX19zYXZlZFN0YXRlOiBNb25rZXlFY3hTYXZlZFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgX19wYXJhbXM6IGFueSB8IGFueVtdO1xuXG4gIF9fZXJyb3I6IE1vbmtleUVjeEVycm9yUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBfX2hhbmRsZWRFcnJvcjogTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBfX3BhZ2U6IE1vbmtleUVjeFJlc3BvbnNlUGFnZWQgfCBudWxsID0gbnVsbDtcblxuICBfX2xpbmtzOiBNb25rZXlFY3hSZXNwb25zZUxpbmtzIHwgbnVsbCA9IG51bGw7XG5cbiAgX19zZWFyY2g6IGFueTtcblxuICBfX3JlcXVlc3RQYWdlZDogTW9ua2V5RWN4UmVxdWVzdFBhZ2VkIHwgbnVsbCA9IG51bGw7XG5cbiAgX19vblNlYXJjaENoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkRhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgX19vblVwbG9hZEluUHJvZ3Jlc3MkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIF9fb25EYXRhRGVsZXRlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRXJyb3JDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25Hb3Zlcm5tZW50SWREYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uWmlwQ29kZURhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25pMThuRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkRvU2VhcmNoJDogQmVoYXZpb3JTdWJqZWN0PE1vbmtleUVjeFJlcXVlc3RQYWdlZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcblxuICBfX3Rva2VuQ3JlZGVudGlhbHM6IE1vbmtleUVjeFRva2VuQ3JlZGVudGlhbHMgfCBudWxsID0gbnVsbDtcblxuICBfX3NjaGVkdWxlOiBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGUgfCBudWxsID0gbnVsbDtcblxuICBfX2kxOG46IGFueTtcblxuICBfX2NhbGxiYWNrUGFnaW5hdGlvbjogRnVuY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcignTWV0aG9kIGNhbGxiYWNrUGFnaW5hdGlvbiBuZWVkcyB0byBiZSBkZWNsYXJlZCcpO1xuICB9O1xuXG4gIF9fcGFnaW5hdGlvbk9wdGlvbnM6IHtcbiAgICBzZXJ2aWNlOiBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZTtcbiAgICBjYWxsYmFjazogRnVuY3Rpb247XG4gICAgbmFtZT86IHN0cmluZztcbiAgfSB8IHVuZGVmaW5lZDtcblxuICBfX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1vbmtleWVjeFNlcnZpY2U/OiBNb25rZXlFY3hTZXJ2aWNlLFxuICAgIHB1YmxpYyB0b2tlblN0b3JhZ2U/OiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBvdGhlckFyZ3M/OiB7XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzY2hlZHVsZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZTtcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHF1ZXVlPzoge1xuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2U7XG4gICAgICB9O1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVJbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluaXQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5TdG9yYWdlKSB7XG4gICAgICB0aGlzLl9fdG9rZW5DcmVkZW50aWFscyA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3RoZXJBcmdzPy5yb3V0ZXIpIHtcbiAgICAgIGNvbnN0IHsgY2xlYXJPbkNoYW5nZVJvdXRlIH0gPSB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/Lm9wdGlvbnMgfHwge1xuICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdGhpcy5vdGhlckFyZ3Mucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSAmJiBjbGVhck9uQ2hhbmdlUm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UoYXJnOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCwgcm91dGVyPzogUm91dGVyKSB7XG4gICAgY29uc3QgeyBjb21wYW55VHlwZSB9ID0gdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgfHwge1xuICAgICAgY29tcGFueVR5cGU6ICcnXG4gICAgfTtcbiAgICBsZXQgcm91dGUgPSAnL2FwcCc7XG5cbiAgICBpZiAoY29tcGFueVR5cGUpIHtcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9LyR7Y29tcGFueVR5cGV9L3BhZ2VzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGUgPSBgJHtyb3V0ZX0vdXNlci9wcm9maWxlL3BhZ2VzYDtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbYCR7cm91dGV9L2NvbXBhbnktcGVuZGVuY3lgLnRvTG93ZXJDYXNlKCldLCB7XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgcGVuZGVuY3lEYXRhOiBhcmdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb2xlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBfX3Rva2VuQ3JlZGVudGlhbHMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIV9fdG9rZW5DcmVkZW50aWFscykgcmV0dXJuICcnO1xuXG4gICAgaWYgKF9fdG9rZW5DcmVkZW50aWFscz8ucHJvZ3JhbUFkbWluID09PSAndHJ1ZScpIHtcbiAgICAgIHJldHVybiAnUFJPR1JBTV9BRE1JTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fdG9rZW5DcmVkZW50aWFscz8ucm9sZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlQZW5kZW5jeShhcmdzOiBhbnkpOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCB7XG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoYXNQZW5kZW5jaWVzOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBzZXJ2aWNlLCB0eXBlIH0gPSBhcmdzO1xuICAgIHJldHVybiBzZXJ2aWNlLmhhc1BlbmRlbmNpZXModHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5RmVhdHVyZShhcmdzOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB7IGNvbmZpZywgZmVhdHVyZSB9ID0gYXJncztcbiAgICB0cnkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGZlYXR1cmUpIHx8XG4gICAgICAgICFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGNvbmZpZz8ucHJvZ3JhbT8uc2V0dGluZ3MpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICFjb25maWc/LnByb2dyYW0/LnNldHRpbmdzPy5bZmVhdHVyZV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbm90IHRvIGRvXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkoYXJnPzogTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmcpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBhcmcuY291bnRyeSA9PT0gYXJnLmVudkNvdW50cnk7XG4gIH1cblxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2VzcyhhcmdzOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3MpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHJvbGVzID0gYXJncz8ucm9sZXM7XG4gICAgY29uc3QgYnlFeGNsdXNpb24gPSBhcmdzPy5ieUV4Y2x1c2lvbjtcbiAgICBjb25zdCBmb3VuZCA9IHJvbGVzPy5pbmRleE9mKHRoaXMuZ2V0Um9sZSgpKTtcbiAgICBsZXQgcmV0ID0gZmFsc2U7XG4gICAgaWYgKGJ5RXhjbHVzaW9uKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgICAgaWYgKGZvdW5kID4gLTEpIHtcbiAgICAgICAgcmV0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldCA9IGZhbHNlO1xuICAgICAgaWYgKGZvdW5kID4gLTEpIHtcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFyb2xlcyB8fCByb2xlcy5sZW5ndGggPT09IDAgfHwgdGhpcy5nZXRSb2xlKCkgPT09ICdQUk9HUkFNX0FETUlOJykge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0Vycm9yUGFnZShzdGF0dXNDb2RlOiBudW1iZXIsIHJvdXRlcj86IFJvdXRlcikge1xuICAgIGNvbnN0IHJvdXRlczogYW55ID0ge1xuICAgICAgNDAzOiAnZm9yYmlkZGVuJyxcbiAgICAgIDQwNDogJ25vdC1mb3VuZCcsXG4gICAgICA1MDA6ICdzZXJ2aWNlLXByb2JsZW1zJyxcbiAgICAgIDUwMzogJ3NlcnZpY2UtcHJvYmxlbXMnXG4gICAgfTtcblxuICAgIGlmICghcm91dGVyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdSb3V0ZXIgbXVzdCBiZSBkZWNsYXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3V0ZXI/Lm5hdmlnYXRlKFtgL2FwcC9wYWdlcy8ke3JvdXRlc1tzdGF0dXNDb2RlXX1gLnRvTG93ZXJDYXNlKCldKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCkge1xuICAgIGNvbnN0IHsgX19wYWdpbmF0aW9uT3B0aW9ucyB9ID0gdGhpcztcbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBzZXJ2aWNlLCBjYWxsYmFjaywgbmFtZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcbiAgICAgIHNlcnZpY2U/LnNldENhbGxiYWNrKCh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5kb1BhZ2luYXRpb252Mih0eXBlLCBjYWxsYmFjayk7XG4gICAgICB9LCBuYW1lIHx8ICdtYWluJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0UGFnZShyZXF1ZXN0UGFnZWQ6IE1vbmtleUVjeFJlcXVlc3RQYWdlZCkge1xuICAgIHRoaXMuX19yZXF1ZXN0UGFnZWQgPSB7XG4gICAgICAuLi50aGlzLl9fcmVxdWVzdFBhZ2VkLFxuICAgICAgLi4ucmVxdWVzdFBhZ2VkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5leHRQYWdlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9fbGlua3MpIHtcbiAgICAgIHJldHVybiAhIXRoaXMuX19saW5rcz8ubmV4dDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9fcmVxdWVzdFBhZ2VkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgeyBwYWdlIH0gPSB0aGlzLl9fcmVxdWVzdFBhZ2VkIGFzIGFueTtcbiAgICBjb25zdCB7IG51bWJlciwgdG90YWxQYWdlcyB9ID0gcGFnZTtcbiAgICBpZiAobnVtYmVyIDwgdG90YWxQYWdlcykge1xuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcbiAgICAgICAgLi4udGhpcy5fX3JlcXVlc3RQYWdlZCxcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIC4uLnBhZ2UsXG4gICAgICAgICAgbnVtYmVyOiBudW1iZXIgKyAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0RW1iZWRkZWREYXRhKGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueVtdIHwgYW55IHtcbiAgICBjb25zdCB7IF9lbWJlZGRlZCB9ID0gZGF0YTtcbiAgICByZXR1cm4gX2VtYmVkZGVkID8gX2VtYmVkZGVkW2ZpZWxkXSA6IG51bGw7XG4gIH1cblxuICBnZXROb3JtYWxpemVkVXJsKHVybDogc3RyaW5nLCBzYW1lUGFnZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IF9fcmVxdWVzdFBhZ2VkLCBfX2xpbmtzIH0gPSB0aGlzO1xuICAgIHJldHVybiBuZXcgTW9ua2V5RWN4UmVxdWVzdFBhZ2VkSGFuZGxpbmcoXG4gICAgICB1cmwsXG4gICAgICBfX3JlcXVlc3RQYWdlZCB8fCB7fSxcbiAgICAgIF9fbGlua3MsXG4gICAgICBzYW1lUGFnZVxuICAgICkuZ2V0UmVxdWVzdFdpdGhQYWdlZFBhcmFtcygpO1xuICB9XG5cbiAgY2xlYXIoY2xlYXJEYXRhOiBib29sZWFuKSB7XG4gICAgaWYgKGNsZWFyRGF0YSkge1xuICAgICAgdGhpcy5fX2RhdGEgPSBudWxsO1xuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFyYW1zID0gbnVsbDtcbiAgICAgIHRoaXMuX19wYWdlID0gbnVsbDtcbiAgICAgIHRoaXMuX19saW5rcyA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUpIHtcbiAgICAgICAgY29uc3QgeyBxdWV1ZSB9ID0gdGhpcy5fX3NjaGVkdWxlO1xuICAgICAgICBpZiAocXVldWUpIHtcbiAgICAgICAgICB0aGlzLm90aGVyQXJncz8ucXVldWU/LnNlcnZpY2U/LnJlbW92ZVF1ZXVlSXRlbShxdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5zZXJ2aWNlPy5yZW1vdmVTY2hlZHVsZSh0aGlzLl9fc2NoZWR1bGUpO1xuICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX19oYW5kbGVkRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuZmxhZ1ZhbGlkYXRvciA9IGZhbHNlO1xuICB9XG5cbiAgcmVzb2x2ZShcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QgfCBudWxsLFxuICAgIG90aGVyQXJncz86IHtcbiAgICAgIGNhbGxiYWNrTWFpbjogRnVuY3Rpb247XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzZWN1cml0eT86IHtcbiAgICAgICAgcm9sZXM6IHN0cmluZ1tdO1xuICAgICAgICBieUV4Y2x1c2lvbj86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgY2FsbGJhY2tQYWdpbmF0aW9uPzogRnVuY3Rpb247XG4gICAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcbiAgICAgIGZlYXR1cmU/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlO1xuICAgICAgICBmbGFnOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgZmVhdHVyZUJ5UHJvZ3JhbT86IHtcbiAgICAgICAgY29uZmlnOiBNb25rZXlFY3hDb25maWc7XG4gICAgICAgIGZlYXR1cmU6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBjb3VudHJ5U2VjdXJpdHk/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHk7XG4gICAgICBwZW5kZW5jeT86IHtcbiAgICAgICAgc2VydmljZToge1xuICAgICAgICAgIGhhc1BlbmRlbmNpZXM6IEZ1bmN0aW9uO1xuICAgICAgICB9O1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcGFnaW5hdGlvbk9wdGlvbnM/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb24sXG4gICAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG4gICkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyb3V0ZT8ucXVlcnlQYXJhbXMpID09PSAne30nKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnRva2VuU3RvcmFnZSkge1xuICAgICAgdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmQgPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3kob3RoZXJBcmdzPy5wZW5kZW5jeSk7XG4gICAgY29uc3QgYWxsb3dlZEJ5UHJvZ3JhbSA9IHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlGZWF0dXJlKG90aGVyQXJncz8uZmVhdHVyZUJ5UHJvZ3JhbSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2VzcyhvdGhlckFyZ3M/LnNlY3VyaXR5KSAmJlxuICAgICAgdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkob3RoZXJBcmdzPy5jb3VudHJ5U2VjdXJpdHkpICYmXG4gICAgICAhcGVuZC5oYXNQZW5kZW5jaWVzICYmXG4gICAgICBhbGxvd2VkQnlQcm9ncmFtXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCB9ID0gdGhpcztcbiAgICAgIGlmICghX19yZXF1ZXN0UGFnZWQpIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICBudW1iZXI6IDAsXG4gICAgICAgICAgICBzaXplOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzZXJ2aWNlLCBrZXlzIH0gPSBvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMuZ2V0aTE4bihzZXJ2aWNlLCBrZXlzIHx8ICcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8uY2FsbGJhY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24gPSBvdGhlckFyZ3MuY2FsbGJhY2tQYWdpbmF0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9fcGFnaW5hdGlvbk9wdGlvbnMgPSBvdGhlckFyZ3M/LnBhZ2luYXRpb25PcHRpb25zO1xuICAgICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LmZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgeyBmbGFnLCBzZXJ2aWNlIH0gPSBvdGhlckFyZ3MuZmVhdHVyZTtcblxuICAgICAgICBzZXJ2aWNlLm9uRmxhZ3NcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VXaGlsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYWdWYWxpZGF0b3I7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzRmxhZyA9IHNlcnZpY2UuZ2V0RmxhZyhmbGFnKTtcblxuICAgICAgICAgICAgICBpZiAoTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChoYXNGbGFnKSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzRmxhZykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwNCwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdGhlckFyZ3M/LmNhbGxiYWNrTWFpbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RoZXJBcmdzPy5jYWxsYmFja01haW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFhbGxvd2VkQnlQcm9ncmFtKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9FcnJvclBhZ2UoNDA0LCBvdGhlckFyZ3M/LnJvdXRlcik7XG4gICAgfSBlbHNlIGlmIChwZW5kLmhhc1BlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb1BlbmRlbmN5UGFnZShwZW5kLCBvdGhlckFyZ3M/LnJvdXRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDMsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICB9XG4gIH1cblxuICBnZXRIVFRQSGVhZGVyQXBwbGljYXRpb25QREYoKTogT2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgfTtcbiAgfVxuXG4gIEBNb25rZXlFY3hDb3JlU2VydmljZSh7XG4gICAgcmVxdWVzdEluUHJvZ3Jlc3M6IHtcbiAgICAgIHNob3dQcm9ncmVzczogdHJ1ZVxuICAgIH1cbiAgfSlcbiAgZ2VuZXJpY01ldGhvZChsaW5rOiBhbnksIGRhdGE/OiBhbnksIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcbiAgICBjb25zdCB7IGhyZWYsIHR5cGUgPSAnZ2V0JyB9ID0gbGluaztcblxuICAgIHRoaXMubW9ua2V5ZWN4U2VydmljZT8uW3R5cGUudG9Mb3dlckNhc2UoKV0oYCR7aHJlZn1gLCBkYXRhKT8uc3Vic2NyaWJlKFxuICAgICAgKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKHJlc3ApO1xuICAgICAgfSxcbiAgICAgIChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBATW9ua2V5RWN4Q29yZVNlcnZpY2Uoe1xuICAgIHJlcXVlc3RJblByb2dyZXNzOiB7XG4gICAgICBzaG93UHJvZ3Jlc3M6IHRydWVcbiAgICB9XG4gIH0pXG4gIGFzeW5jIGdldEdlbmVyaWNEYXRhKGRhdGE6IGFueSwgYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IG1vbmtleWVjeFNlcnZpY2UgfSA9IHRoaXM7XG4gICAgaWYgKCFtb25rZXllY3hTZXJ2aWNlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IGhyZWYsIHR5cGUgfSA9IG5ldyBMaW5rc01vZGVsKGRhdGEpPy5nZXRBY3Rpb24oYWN0aW9uKSB8fCB7XG4gICAgICBocmVmOiAnJywgdHlwZTogJ2dldCdcbiAgICB9O1xuXG4gICAgcmV0dXJuIG1vbmtleWVjeFNlcnZpY2VbdHlwZS50b0xvd2VyQ2FzZSgpXTxhbnk+KGhyZWYpXG4gICAgICAucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGdldGkxOG4odHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwga2V5czogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLm9uRGVmYXVsdExhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX19pMThuID0gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleXMpO1xuICAgICAgdGhpcy5fX29uaTE4bkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIH0pO1xuICAgIHRyYW5zbGF0ZVNlcnZpY2UuZ2V0U3RyZWFtT25UcmFuc2xhdGlvbkNoYW5nZShrZXlzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XG4gICAgICB0aGlzLl9fb25pMThuRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBkb1BhZ2luYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc01vcmVQYWdlcyA9IHRoaXMuc2V0UGFnZSh7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAuLi50aGlzLl9fcGFnZVxuICAgICAgICB9XG4gICAgICB9KS5uZXh0UGFnZSgpO1xuXG4gICAgICBpZiAoaGFzTW9yZVBhZ2VzICYmIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRvUGFnaW5hdGlvbnYyKHR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRMaW5rcyhsaW5rczogYW55KSB7XG4gICAgdGhpcy5fX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge1xuICAgICAgZmlyc3Q6ICEhbGlua3M/LmZpcnN0LFxuICAgICAgbmV4dDogISFsaW5rcz8ubmV4dFxuICAgIH07XG4gICAgdGhpcy5fX2xpbmtzID0gbGlua3M7XG4gIH1cblxuICBzZXRTZWFyY2hCeVVybChyb3V0ZXI6IFJvdXRlciwgdXJsOiBzdHJpbmcsIHNlYXJjaDogYW55LCBleHRyYXM/OiBhbnkpIHtcbiAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgdGhpcy5fX3BhZ2UgPSBudWxsO1xuICAgIHRoaXMuX19vbkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX19vbkxvYWRpbmdJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgIHJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgLi4uc2VhcmNoLFxuICAgICAgICByOiBNb25rZXlFY3hVdGlscy5nZXRSYW5kb21TdHJpbmcoMzApXG4gICAgICB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIC4uLmV4dHJhc1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZVN0YXRlKHN0YXRlOiBNb25rZXlFY3hTYXZlZFN0YXRlKSB7XG4gICAgdGhpcy5fX3NhdmVkU3RhdGUgPSB7XG4gICAgICBwYWdlOiB0aGlzLl9fcGFnZSxcbiAgICAgIC4uLnN0YXRlXG4gICAgfTtcbiAgfVxufVxuIl19