ngx-techlify-core 11.2.4

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 (313) hide show
  1. package/README.md +24 -0
  2. package/bundles/ngx-techlify-core.umd.js +6602 -0
  3. package/bundles/ngx-techlify-core.umd.js.map +1 -0
  4. package/bundles/ngx-techlify-core.umd.min.js +17 -0
  5. package/bundles/ngx-techlify-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/action-popup/action-popup.component.js +32 -0
  7. package/esm2015/lib/action-popup/action-popup.model.js +3 -0
  8. package/esm2015/lib/action-popup/action-popup.module.js +26 -0
  9. package/esm2015/lib/action-popup/index.js +3 -0
  10. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -0
  11. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -0
  12. package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -0
  13. package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -0
  14. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -0
  15. package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -0
  16. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -0
  17. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -0
  18. package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -0
  19. package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -0
  20. package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -0
  21. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +62 -0
  22. package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -0
  23. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -0
  24. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +59 -0
  25. package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -0
  26. package/esm2015/lib/audit-log/audit-log.module.js +20 -0
  27. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -0
  28. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -0
  29. package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -0
  30. package/esm2015/lib/core/alert.service.js +40 -0
  31. package/esm2015/lib/core/api-prefix.interceptor.js +28 -0
  32. package/esm2015/lib/core/authentication.guard.js +39 -0
  33. package/esm2015/lib/core/authentication.service.js +59 -0
  34. package/esm2015/lib/core/cache.interceptor.js +60 -0
  35. package/esm2015/lib/core/config.service.js +47 -0
  36. package/esm2015/lib/core/core.module.js +42 -0
  37. package/esm2015/lib/core/credentials.service.js +84 -0
  38. package/esm2015/lib/core/dataManager.service.js +121 -0
  39. package/esm2015/lib/core/error-handler.interceptor.js +53 -0
  40. package/esm2015/lib/core/error-handler.service.js +49 -0
  41. package/esm2015/lib/core/form-validator.service.js +23 -0
  42. package/esm2015/lib/core/header.interceptor.js +22 -0
  43. package/esm2015/lib/core/http-cache.service.js +110 -0
  44. package/esm2015/lib/core/http.service.js +82 -0
  45. package/esm2015/lib/core/index.js +21 -0
  46. package/esm2015/lib/core/logger.service.js +100 -0
  47. package/esm2015/lib/core/route-reusable-strategy.js +35 -0
  48. package/esm2015/lib/core/snack/snack.component.js +33 -0
  49. package/esm2015/lib/core/snack/snack.module.js +25 -0
  50. package/esm2015/lib/core/storage.service.js +37 -0
  51. package/esm2015/lib/core/techlify-config.model.js +26 -0
  52. package/esm2015/lib/core/token.interceptor.js +30 -0
  53. package/esm2015/lib/data-table/data-table.component.js +190 -0
  54. package/esm2015/lib/data-table/data-table.model.js +11 -0
  55. package/esm2015/lib/data-table/data-table.module.js +25 -0
  56. package/esm2015/lib/data-table/index.js +3 -0
  57. package/esm2015/lib/date-validator.js +10 -0
  58. package/esm2015/lib/document-viewer/document-viewer.component.js +58 -0
  59. package/esm2015/lib/document-viewer/document-viewer.module.js +25 -0
  60. package/esm2015/lib/document-viewer/index.js +3 -0
  61. package/esm2015/lib/document-viewer/viewer-config.model.js +3 -0
  62. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -0
  63. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -0
  64. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -0
  65. package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -0
  66. package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -0
  67. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -0
  68. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -0
  69. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -0
  70. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -0
  71. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -0
  72. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -0
  73. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -0
  74. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +2 -0
  75. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -0
  76. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -0
  77. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -0
  78. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -0
  79. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -0
  80. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -0
  81. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -0
  82. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -0
  83. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -0
  84. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -0
  85. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -0
  86. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -0
  87. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -0
  88. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -0
  89. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -0
  90. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -0
  91. package/esm2015/lib/email-subscription/email-subscription.module.js +15 -0
  92. package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +141 -0
  93. package/esm2015/lib/entity-files/entity-file.service.js +38 -0
  94. package/esm2015/lib/entity-files/entity-files-view-all.component.js +161 -0
  95. package/esm2015/lib/entity-files/entity-files-view-all.module.js +34 -0
  96. package/esm2015/lib/entity-files/index.js +3 -0
  97. package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -0
  98. package/esm2015/lib/export-excel/export-excel.module.js +17 -0
  99. package/esm2015/lib/file-dropper/file-dropper.component.js +122 -0
  100. package/esm2015/lib/file-dropper/file-dropper.model.js +3 -0
  101. package/esm2015/lib/file-dropper/file-dropper.module.js +21 -0
  102. package/esm2015/lib/file-dropper/index.js +3 -0
  103. package/esm2015/lib/import-csv/failed-items/failed-items-routing.module.js +12 -0
  104. package/esm2015/lib/import-csv/failed-items/failed-items.component.js +23 -0
  105. package/esm2015/lib/import-csv/failed-items/failed-items.module.js +21 -0
  106. package/esm2015/lib/import-csv/import-config.js +3 -0
  107. package/esm2015/lib/import-csv/import-csv-routing.module.js +12 -0
  108. package/esm2015/lib/import-csv/import-csv.component.js +111 -0
  109. package/esm2015/lib/import-csv/import-csv.module.js +27 -0
  110. package/esm2015/lib/import-csv/import-items/import-items-routing.module.js +12 -0
  111. package/esm2015/lib/import-csv/import-items/import-items.component.js +139 -0
  112. package/esm2015/lib/import-csv/import-items/import-items.module.js +23 -0
  113. package/esm2015/lib/loader/index.js +2 -0
  114. package/esm2015/lib/loader/loader.component.js +22 -0
  115. package/esm2015/lib/loader/loader.module.js +21 -0
  116. package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -0
  117. package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +79 -0
  118. package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -0
  119. package/esm2015/lib/material.module.js +58 -0
  120. package/esm2015/lib/note/index.js +3 -0
  121. package/esm2015/lib/note/note-form/note-form.component.js +80 -0
  122. package/esm2015/lib/note/note-list/note-list.component.js +120 -0
  123. package/esm2015/lib/note/note.module.js +32 -0
  124. package/esm2015/lib/note/note.service.js +31 -0
  125. package/esm2015/lib/searchable-selector/index.js +3 -0
  126. package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -0
  127. package/esm2015/lib/searchable-selector/searchable-selector.component.js +267 -0
  128. package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -0
  129. package/esm2015/lib/techlify-update/read-more/read-more.component.js +43 -0
  130. package/esm2015/lib/techlify-update/read-more/read-more.module.js +21 -0
  131. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -0
  132. package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -0
  133. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -0
  134. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -0
  135. package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -0
  136. package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -0
  137. package/esm2015/lib/techlify-update/techlify-update.module.js +30 -0
  138. package/esm2015/lib/techlify-update/techlify-update.service.js +43 -0
  139. package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -0
  140. package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -0
  141. package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -0
  142. package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -0
  143. package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -0
  144. package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -0
  145. package/esm2015/lib/timeline-filter/calculate-timeline.js +90 -0
  146. package/esm2015/lib/timeline-filter/index.js +4 -0
  147. package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -0
  148. package/esm2015/lib/timeline-filter/timeline-filter.component.js +57 -0
  149. package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -0
  150. package/esm2015/lib/timeline-filter/timeline.model.js +15 -0
  151. package/esm2015/lib/utility/date-utils.service.js +48 -0
  152. package/esm2015/lib/utility/index.js +4 -0
  153. package/esm2015/lib/utility/num-items-selector.component.js +30 -0
  154. package/esm2015/lib/utility/number-selector.component.js +38 -0
  155. package/esm2015/lib/utility/utility.module.js +21 -0
  156. package/esm2015/ngx-techlify-core.js +52 -0
  157. package/esm2015/public-api.js +91 -0
  158. package/fesm2015/ngx-techlify-core.js +5575 -0
  159. package/fesm2015/ngx-techlify-core.js.map +1 -0
  160. package/lib/action-popup/action-popup.component.d.ts +14 -0
  161. package/lib/action-popup/action-popup.model.d.ts +5 -0
  162. package/lib/action-popup/action-popup.module.d.ts +2 -0
  163. package/lib/action-popup/index.d.ts +2 -0
  164. package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -0
  165. package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -0
  166. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -0
  167. package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -0
  168. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -0
  169. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -0
  170. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -0
  171. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -0
  172. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -0
  173. package/lib/audit-log/audit-log-routing.module.d.ts +2 -0
  174. package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -0
  175. package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -0
  176. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -0
  177. package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -0
  178. package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -0
  179. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -0
  180. package/lib/audit-log/audit-log.module.d.ts +2 -0
  181. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -0
  182. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -0
  183. package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -0
  184. package/lib/core/alert.service.d.ts +12 -0
  185. package/lib/core/api-prefix.interceptor.d.ts +11 -0
  186. package/lib/core/authentication.guard.d.ts +10 -0
  187. package/lib/core/authentication.service.d.ts +23 -0
  188. package/lib/core/cache.interceptor.d.ts +21 -0
  189. package/lib/core/config.service.d.ts +19 -0
  190. package/lib/core/core.module.d.ts +3 -0
  191. package/lib/core/credentials.service.d.ts +36 -0
  192. package/lib/core/dataManager.service.d.ts +70 -0
  193. package/lib/core/error-handler.interceptor.d.ts +14 -0
  194. package/lib/core/error-handler.service.d.ts +12 -0
  195. package/lib/core/form-validator.service.d.ts +8 -0
  196. package/lib/core/header.interceptor.d.ts +8 -0
  197. package/lib/core/http-cache.service.d.ts +54 -0
  198. package/lib/core/http.service.d.ts +56 -0
  199. package/lib/core/index.d.ts +20 -0
  200. package/lib/core/logger.service.d.ts +85 -0
  201. package/lib/core/route-reusable-strategy.d.ts +13 -0
  202. package/lib/core/snack/snack.component.d.ts +8 -0
  203. package/lib/core/snack/snack.module.d.ts +2 -0
  204. package/lib/core/storage.service.d.ts +15 -0
  205. package/lib/core/techlify-config.model.d.ts +17 -0
  206. package/lib/core/token.interceptor.d.ts +11 -0
  207. package/lib/data-table/data-table.component.d.ts +60 -0
  208. package/lib/data-table/data-table.model.d.ts +46 -0
  209. package/lib/data-table/data-table.module.d.ts +2 -0
  210. package/lib/data-table/index.d.ts +2 -0
  211. package/lib/date-validator.d.ts +1 -0
  212. package/lib/document-viewer/document-viewer.component.d.ts +16 -0
  213. package/lib/document-viewer/document-viewer.module.d.ts +2 -0
  214. package/lib/document-viewer/index.d.ts +2 -0
  215. package/lib/document-viewer/viewer-config.model.d.ts +5 -0
  216. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -0
  217. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -0
  218. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -0
  219. package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -0
  220. package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -0
  221. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -0
  222. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -0
  223. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -0
  224. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -0
  225. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -0
  226. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -0
  227. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -0
  228. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -0
  229. package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -0
  230. package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -0
  231. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -0
  232. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -0
  233. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -0
  234. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -0
  235. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -0
  236. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -0
  237. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -0
  238. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -0
  239. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -0
  240. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -0
  241. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -0
  242. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -0
  243. package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -0
  244. package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -0
  245. package/lib/email-subscription/email-subscription.module.d.ts +2 -0
  246. package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +34 -0
  247. package/lib/entity-files/entity-file.service.d.ts +10 -0
  248. package/lib/entity-files/entity-files-view-all.component.d.ts +38 -0
  249. package/lib/entity-files/entity-files-view-all.module.d.ts +2 -0
  250. package/lib/entity-files/index.d.ts +2 -0
  251. package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -0
  252. package/lib/export-excel/export-excel.module.d.ts +2 -0
  253. package/lib/file-dropper/file-dropper.component.d.ts +33 -0
  254. package/lib/file-dropper/file-dropper.model.d.ts +10 -0
  255. package/lib/file-dropper/file-dropper.module.d.ts +2 -0
  256. package/lib/file-dropper/index.d.ts +2 -0
  257. package/lib/import-csv/failed-items/failed-items-routing.module.d.ts +2 -0
  258. package/lib/import-csv/failed-items/failed-items.component.d.ts +8 -0
  259. package/lib/import-csv/failed-items/failed-items.module.d.ts +2 -0
  260. package/lib/import-csv/import-config.d.ts +5 -0
  261. package/lib/import-csv/import-csv-routing.module.d.ts +2 -0
  262. package/lib/import-csv/import-csv.component.d.ts +26 -0
  263. package/lib/import-csv/import-csv.module.d.ts +2 -0
  264. package/lib/import-csv/import-items/import-items-routing.module.d.ts +2 -0
  265. package/lib/import-csv/import-items/import-items.component.d.ts +30 -0
  266. package/lib/import-csv/import-items/import-items.module.d.ts +2 -0
  267. package/lib/loader/index.d.ts +1 -0
  268. package/lib/loader/loader.component.d.ts +8 -0
  269. package/lib/loader/loader.module.d.ts +2 -0
  270. package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -0
  271. package/lib/login-history-for-user/login-history-for-user.component.d.ts +21 -0
  272. package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -0
  273. package/lib/material.module.d.ts +2 -0
  274. package/lib/note/index.d.ts +2 -0
  275. package/lib/note/note-form/note-form.component.d.ts +27 -0
  276. package/lib/note/note-list/note-list.component.d.ts +25 -0
  277. package/lib/note/note.module.d.ts +2 -0
  278. package/lib/note/note.service.d.ts +9 -0
  279. package/lib/searchable-selector/index.d.ts +2 -0
  280. package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -0
  281. package/lib/searchable-selector/searchable-selector.component.d.ts +75 -0
  282. package/lib/searchable-selector/searchable-selector.module.d.ts +2 -0
  283. package/lib/techlify-update/read-more/read-more.component.d.ts +12 -0
  284. package/lib/techlify-update/read-more/read-more.module.d.ts +2 -0
  285. package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -0
  286. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -0
  287. package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -0
  288. package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -0
  289. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -0
  290. package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -0
  291. package/lib/techlify-update/techlify-update.module.d.ts +2 -0
  292. package/lib/techlify-update/techlify-update.service.d.ts +13 -0
  293. package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -0
  294. package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -0
  295. package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -0
  296. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -0
  297. package/lib/techlify-update/update-view/update-view.component.d.ts +14 -0
  298. package/lib/techlify-update/update-view/update-view.module.d.ts +2 -0
  299. package/lib/timeline-filter/calculate-timeline.d.ts +1 -0
  300. package/lib/timeline-filter/index.d.ts +3 -0
  301. package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -0
  302. package/lib/timeline-filter/timeline-filter.component.d.ts +14 -0
  303. package/lib/timeline-filter/timeline-filter.module.d.ts +2 -0
  304. package/lib/timeline-filter/timeline.model.d.ts +14 -0
  305. package/lib/utility/date-utils.service.d.ts +21 -0
  306. package/lib/utility/index.d.ts +3 -0
  307. package/lib/utility/num-items-selector.component.d.ts +16 -0
  308. package/lib/utility/number-selector.component.d.ts +20 -0
  309. package/lib/utility/utility.module.d.ts +2 -0
  310. package/ngx-techlify-core.d.ts +51 -0
  311. package/ngx-techlify-core.metadata.json +1 -0
  312. package/package.json +36 -0
  313. package/public-api.d.ts +87 -0
@@ -0,0 +1,42 @@
1
+ import { NgModule, Optional, SkipSelf } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { HttpClientModule, HttpClient } from '@angular/common/http';
4
+ import { RouteReuseStrategy, RouterModule } from '@angular/router';
5
+ import { RouteReusableStrategy } from './route-reusable-strategy';
6
+ import { HttpService } from './http.service';
7
+ import { SnackModule } from './snack/snack.module';
8
+ export class CoreModule {
9
+ constructor(parentModule) {
10
+ // Import guard
11
+ if (parentModule) {
12
+ throw new Error(`${parentModule} has already been loaded. Import Core module in the root module only.`);
13
+ }
14
+ }
15
+ }
16
+ CoreModule.decorators = [
17
+ { type: NgModule, args: [{
18
+ imports: [
19
+ CommonModule,
20
+ HttpClientModule,
21
+ RouterModule,
22
+ SnackModule
23
+ ],
24
+ providers: [
25
+ {
26
+ provide: HttpClient,
27
+ useClass: HttpService
28
+ },
29
+ {
30
+ provide: RouteReuseStrategy,
31
+ useClass: RouteReusableStrategy
32
+ }
33
+ ],
34
+ exports: [
35
+ SnackModule
36
+ ]
37
+ },] }
38
+ ];
39
+ CoreModule.ctorParameters = () => [
40
+ { type: CoreModule, decorators: [{ type: Optional }, { type: SkipSelf }] }
41
+ ];
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXFCLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBdUJuRCxNQUFNLE9BQU8sVUFBVTtJQUVyQixZQUFvQyxZQUF3QjtRQUMxRCxlQUFlO1FBQ2YsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksdUVBQXVFLENBQUMsQ0FBQztTQUN6RztJQUNILENBQUM7OztZQTVCRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixZQUFZO29CQUNaLFdBQVc7aUJBQ1o7Z0JBQ0QsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxVQUFVO3dCQUNuQixRQUFRLEVBQUUsV0FBVztxQkFDdEI7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IsUUFBUSxFQUFFLHFCQUFxQjtxQkFDaEM7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFdBQVc7aUJBQ1o7YUFDRjs7O1lBR21ELFVBQVUsdUJBQS9DLFFBQVEsWUFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUm91dGVSZXVzZVN0cmF0ZWd5LCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBSb3V0ZVJldXNhYmxlU3RyYXRlZ3kgfSBmcm9tICcuL3JvdXRlLXJldXNhYmxlLXN0cmF0ZWd5JztcbmltcG9ydCB7IEFwaVByZWZpeEludGVyY2VwdG9yIH0gZnJvbSAnLi9hcGktcHJlZml4LmludGVyY2VwdG9yJztcbmltcG9ydCB7IEVycm9ySGFuZGxlckludGVyY2VwdG9yIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9rZW5JbnRlcmNlcHRvciB9IGZyb20gJy4vdG9rZW4uaW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgQ2FjaGVJbnRlcmNlcHRvciB9IGZyb20gJy4vY2FjaGUuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgU25hY2tNb2R1bGUgfSBmcm9tICcuL3NuYWNrL3NuYWNrLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgU25hY2tNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSHR0cENsaWVudCxcbiAgICAgIHVzZUNsYXNzOiBIdHRwU2VydmljZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LFxuICAgICAgdXNlQ2xhc3M6IFJvdXRlUmV1c2FibGVTdHJhdGVneVxuICAgIH1cbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNuYWNrTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29yZU1vZHVsZSB7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcGFyZW50TW9kdWxlOiBDb3JlTW9kdWxlKSB7XG4gICAgLy8gSW1wb3J0IGd1YXJkXG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3BhcmVudE1vZHVsZX0gaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuIEltcG9ydCBDb3JlIG1vZHVsZSBpbiB0aGUgcm9vdCBtb2R1bGUgb25seS5gKTtcbiAgICB9XG4gIH1cblxufVxuIl19
@@ -0,0 +1,84 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ConfigService } from './config.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./config.service";
5
+ /**
6
+ * Provides storage for authentication credentials.
7
+ * The Credentials interface should be replaced with proper implementation.
8
+ */
9
+ export class CredentialsService {
10
+ constructor(configService) {
11
+ this.configService = configService;
12
+ this._credentials = null;
13
+ }
14
+ /**
15
+ * Checks is the user is authenticated.
16
+ * @return True if the user is authenticated.
17
+ */
18
+ get isAuthenticated() {
19
+ return !!this.credentials;
20
+ }
21
+ /**
22
+ * Gets the user credentials.
23
+ * @return The user credentials or null if the user is not authenticated.
24
+ */
25
+ get credentials() {
26
+ if (!this._credentials) {
27
+ this._credentials = JSON.parse(sessionStorage.getItem(this.configService.getCredentialsKey()) || localStorage.getItem(this.configService.getCredentialsKey()));
28
+ }
29
+ return this._credentials;
30
+ }
31
+ /**
32
+ * Sets the user credentials.
33
+ * The credentials may be persisted across sessions by setting the `remember` parameter to true.
34
+ * Otherwise, the credentials are only persisted for the current session.
35
+ * @param credentials The user credentials.
36
+ * @param remember True to remember credentials across sessions.
37
+ */
38
+ setCredentials(credentials, remember) {
39
+ this._credentials = credentials || null;
40
+ if (credentials) {
41
+ (remember ? localStorage : sessionStorage).setItem(this.configService.getCredentialsKey(), JSON.stringify(credentials));
42
+ }
43
+ else {
44
+ sessionStorage.clear();
45
+ localStorage.clear();
46
+ this._credentials = null;
47
+ }
48
+ }
49
+ getAccessToken() {
50
+ var _a, _b, _c, _d;
51
+ const expiration = ((_b = (_a = this.credentials) === null || _a === void 0 ? void 0 : _a.token) === null || _b === void 0 ? void 0 : _b.expires_in) || '';
52
+ const token = ((_d = (_c = this.credentials) === null || _c === void 0 ? void 0 : _c.token) === null || _d === void 0 ? void 0 : _d.access_token) || '';
53
+ if (!token || !expiration) {
54
+ return null;
55
+ }
56
+ if (Date.now() > parseInt(expiration)) {
57
+ this.setCredentials();
58
+ return null;
59
+ }
60
+ return token;
61
+ }
62
+ getExpiration() {
63
+ var _a, _b;
64
+ return ((_b = (_a = this.credentials) === null || _a === void 0 ? void 0 : _a.token) === null || _b === void 0 ? void 0 : _b.expires_in) || '';
65
+ }
66
+ getRefreshToken() {
67
+ var _a, _b;
68
+ return ((_b = (_a = this.credentials) === null || _a === void 0 ? void 0 : _a.token) === null || _b === void 0 ? void 0 : _b.refresh_token) || '';
69
+ }
70
+ refresh() {
71
+ this._credentials = null;
72
+ return this;
73
+ }
74
+ }
75
+ CredentialsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CredentialsService_Factory() { return new CredentialsService(i0.ɵɵinject(i1.ConfigService)); }, token: CredentialsService, providedIn: "root" });
76
+ CredentialsService.decorators = [
77
+ { type: Injectable, args: [{
78
+ providedIn: 'root'
79
+ },] }
80
+ ];
81
+ CredentialsService.ctorParameters = () => [
82
+ { type: ConfigService }
83
+ ];
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9jcmVkZW50aWFscy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFRakQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUZ4QyxpQkFBWSxHQUF1QixJQUFJLENBQUM7SUFHaEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEs7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FBQyxXQUF5QixFQUFFLFFBQWtCO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQztRQUV4QyxJQUFJLFdBQVcsRUFBRTtZQUNmLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3pIO2FBQU07WUFDTCxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGNBQWM7O1FBQ1osTUFBTSxVQUFVLEdBQUcsYUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxLQUFLLDBDQUFFLFVBQVUsS0FBSSxFQUFFLENBQUM7UUFDN0QsTUFBTSxLQUFLLEdBQUcsYUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxLQUFLLDBDQUFFLFlBQVksS0FBSSxFQUFFLENBQUM7UUFFMUQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYTs7UUFDWCxPQUFPLGFBQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsS0FBSywwQ0FBRSxVQUFVLEtBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxlQUFlOztRQUNiLE9BQU8sYUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxLQUFLLDBDQUFFLGFBQWEsS0FBSSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUEzRUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkUSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxzIHtcbiAgLy8gQ3VzdG9taXplIHJlY2VpdmVkIGNyZWRlbnRpYWxzIGhlcmVcbiAgdXNlcjogYW55O1xuICB0b2tlbjogYW55O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHN0b3JhZ2UgZm9yIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLlxuICogVGhlIENyZWRlbnRpYWxzIGludGVyZmFjZSBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBwcm9wZXIgaW1wbGVtZW50YXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENyZWRlbnRpYWxzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlzIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQuXG4gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLlxuICAgKi9cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNyZWRlbnRpYWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVzZXIgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm4gVGhlIHVzZXIgY3JlZGVudGlhbHMgb3IgbnVsbCBpZiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZC5cbiAgICovXG4gIGdldCBjcmVkZW50aWFscygpOiBDcmVkZW50aWFscyB8IG51bGwge1xuICAgIGlmICghdGhpcy5fY3JlZGVudGlhbHMpIHtcbiAgICAgIHRoaXMuX2NyZWRlbnRpYWxzID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uZmlnU2VydmljZS5nZXRDcmVkZW50aWFsc0tleSgpKSB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q3JlZGVudGlhbHNLZXkoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlZGVudGlhbHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdXNlciBjcmVkZW50aWFscy5cbiAgICogVGhlIGNyZWRlbnRpYWxzIG1heSBiZSBwZXJzaXN0ZWQgYWNyb3NzIHNlc3Npb25zIGJ5IHNldHRpbmcgdGhlIGByZW1lbWJlcmAgcGFyYW1ldGVyIHRvIHRydWUuXG4gICAqIE90aGVyd2lzZSwgdGhlIGNyZWRlbnRpYWxzIGFyZSBvbmx5IHBlcnNpc3RlZCBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSB1c2VyIGNyZWRlbnRpYWxzLlxuICAgKiBAcGFyYW0gcmVtZW1iZXIgVHJ1ZSB0byByZW1lbWJlciBjcmVkZW50aWFscyBhY3Jvc3Mgc2Vzc2lvbnMuXG4gICAqL1xuICBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzLCByZW1lbWJlcj86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzIHx8IG51bGw7XG5cbiAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgIChyZW1lbWJlciA/IGxvY2FsU3RvcmFnZSA6IHNlc3Npb25TdG9yYWdlKS5zZXRJdGVtKHRoaXMuY29uZmlnU2VydmljZS5nZXRDcmVkZW50aWFsc0tleSgpLCBKU09OLnN0cmluZ2lmeShjcmVkZW50aWFscykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB0aGlzLl9jcmVkZW50aWFscyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWNjZXNzVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZXhwaXJhdGlvbiA9IHRoaXMuY3JlZGVudGlhbHM/LnRva2VuPy5leHBpcmVzX2luIHx8ICcnO1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jcmVkZW50aWFscz8udG9rZW4/LmFjY2Vzc190b2tlbiB8fCAnJztcblxuICAgIGlmICghdG9rZW4gfHwgIWV4cGlyYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChEYXRlLm5vdygpID4gcGFyc2VJbnQoZXhwaXJhdGlvbikpIHtcbiAgICAgIHRoaXMuc2V0Q3JlZGVudGlhbHMoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIGdldEV4cGlyYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFscz8udG9rZW4/LmV4cGlyZXNfaW4gfHwgJyc7XG4gIH1cblxuICBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFscz8udG9rZW4/LnJlZnJlc2hfdG9rZW4gfHwgJyc7XG4gIH1cblxuICByZWZyZXNoKCk6IENyZWRlbnRpYWxzU2VydmljZSB7XG4gICAgdGhpcy5fY3JlZGVudGlhbHMgPSBudWxsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,121 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpService } from './http.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./http.service";
5
+ /**
6
+ * Service that provides a wrapper for retrieving data from the server
7
+ * @deprecated use HttpService Instead
8
+ * @author Joshua Kissoon
9
+ * @since 20170709
10
+ */
11
+ export class DataManager {
12
+ constructor(http) {
13
+ this.http = http;
14
+ }
15
+ /**
16
+ * Callback wrapper for the HTTP GET Call
17
+ *
18
+ * @param urlq The query part of the URL to be sent to the server
19
+ *
20
+ * @author Joshua Kissoon
21
+ * @since 20160826
22
+ * @updated 20170711 to add parameters
23
+ */
24
+ GET(urlq, params = {}) {
25
+ return this.http
26
+ .get(urlq, { params: params })
27
+ .toPromise();
28
+ }
29
+ /**
30
+ * Callback wrapper for the HTTP POST Call
31
+ *
32
+ * @param urlq The query part of the URL to be sent to the server
33
+ * @param object The object containing the POST data to be sent
34
+ *
35
+ * @author Joshua Kissoon
36
+ * @since 20160826
37
+ */
38
+ POST(urlq, object) {
39
+ if (null == object) {
40
+ object = { "blank": "blank" };
41
+ }
42
+ return this.http
43
+ .post(urlq, object)
44
+ .toPromise();
45
+ }
46
+ /**
47
+ * Callback wrapper for the HTTP POST Call
48
+ *
49
+ * @param urlq The query part of the URL to be sent to the server
50
+ * @param object The object containing the POST data to be sent
51
+ *
52
+ * @author Joshua Kissoon
53
+ * @since 20160826
54
+ */
55
+ POSTRAW(urlq, object) {
56
+ if (null == object) {
57
+ object = { "blank": "blank" };
58
+ }
59
+ return this.http
60
+ .skipHeader()
61
+ .post(urlq, object)
62
+ .toPromise();
63
+ }
64
+ /**
65
+ * Callback wrapper for the HTTP PUT Call
66
+ *
67
+ * @param urlq The query part of the URL to be sent to the server
68
+ * @param object The object containing the PUT data to be sent
69
+ *
70
+ * @author Joshua Kissoon
71
+ * @since 20160826
72
+ */
73
+ PUT(urlq, object) {
74
+ if (null == object) {
75
+ object = { "blank": "blank" };
76
+ }
77
+ return this.http
78
+ .put(urlq, object)
79
+ .toPromise();
80
+ }
81
+ /**
82
+ * Callback wrapper for the HTTP PATCH Call
83
+ *
84
+ * @param urlq The query part of the URL to be sent to the server
85
+ * @param object The object containing the PUT data to be sent
86
+ *
87
+ * @author Joshua Kissoon
88
+ * @since 20161107
89
+ */
90
+ PATCH(urlq, object) {
91
+ if (null == object) {
92
+ object = { "blank": "blank" };
93
+ }
94
+ return this.http
95
+ .patch(urlq, object)
96
+ .toPromise();
97
+ }
98
+ /**
99
+ * Callback wrapper for the HTTP DELETE Call
100
+ *
101
+ * @param urlq The query part of the URL to be sent to the server
102
+ *
103
+ * @author Joshua Kissoon
104
+ * @since 20160826
105
+ */
106
+ DELETE(urlq) {
107
+ return this.http
108
+ .delete(urlq)
109
+ .toPromise();
110
+ }
111
+ }
112
+ DataManager.ɵprov = i0.ɵɵdefineInjectable({ factory: function DataManager_Factory() { return new DataManager(i0.ɵɵinject(i1.HttpService)); }, token: DataManager, providedIn: "root" });
113
+ DataManager.decorators = [
114
+ { type: Injectable, args: [{
115
+ providedIn: 'root'
116
+ },] }
117
+ ];
118
+ DataManager.ctorParameters = () => [
119
+ { type: HttpService }
120
+ ];
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YU1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9kYXRhTWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFN0M7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUksQ0FBQztJQUUxQzs7Ozs7Ozs7T0FRRztJQUNILEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBTSxHQUFHLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDN0IsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxDQUFDLElBQVksRUFBRSxNQUFXO1FBQzFCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNoQixNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDbEIsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTyxDQUFDLElBQVksRUFBRSxNQUFXO1FBQzdCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNoQixNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsVUFBVSxFQUFFO2FBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDbEIsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUdEOzs7Ozs7OztPQVFHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxNQUFXO1FBQ3pCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNoQixNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDakIsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLElBQVksRUFBRSxNQUFXO1FBQzNCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNoQixNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDbkIsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ1osU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7OztZQWhISixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVZRLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBwcm92aWRlcyBhIHdyYXBwZXIgZm9yIHJldHJpZXZpbmcgZGF0YSBmcm9tIHRoZSBzZXJ2ZXJcclxuICogQGRlcHJlY2F0ZWQgdXNlIEh0dHBTZXJ2aWNlIEluc3RlYWRcclxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gKiBAc2luY2UgMjAxNzA3MDlcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YU1hbmFnZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgd3JhcHBlciBmb3IgdGhlIEhUVFAgR0VUIENhbGxcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybHEgVGhlIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcclxuICAgICAqIFxyXG4gICAgICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gICAgICogQHNpbmNlIDIwMTYwODI2XHJcbiAgICAgKiBAdXBkYXRlZCAyMDE3MDcxMSB0byBhZGQgcGFyYW1ldGVyc1xyXG4gICAgICovXHJcbiAgICBHRVQodXJscTogc3RyaW5nLCBwYXJhbXMgPSB7fSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0KHVybHEsIHsgcGFyYW1zOiBwYXJhbXMgfSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgd3JhcHBlciBmb3IgdGhlIEhUVFAgUE9TVCBDYWxsXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1cmxxIFRoZSBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgUE9TVCBkYXRhIHRvIGJlIHNlbnRcclxuICAgICAqIFxyXG4gICAgICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gICAgICogQHNpbmNlIDIwMTYwODI2XHJcbiAgICAgKi9cclxuICAgIFBPU1QodXJscTogc3RyaW5nLCBvYmplY3Q6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKG51bGwgPT0gb2JqZWN0KSB7XHJcbiAgICAgICAgICAgIG9iamVjdCA9IHsgXCJibGFua1wiOiBcImJsYW5rXCIgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3QodXJscSwgb2JqZWN0KVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB3cmFwcGVyIGZvciB0aGUgSFRUUCBQT1NUIENhbGxcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybHEgVGhlIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSBvYmplY3QgVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBQT1NUIGRhdGEgdG8gYmUgc2VudFxyXG4gICAgICogXHJcbiAgICAgKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXHJcbiAgICAgKiBAc2luY2UgMjAxNjA4MjZcclxuICAgICAqL1xyXG4gICAgUE9TVFJBVyh1cmxxOiBzdHJpbmcsIG9iamVjdDogYW55KTogYW55IHtcclxuICAgICAgICBpZiAobnVsbCA9PSBvYmplY3QpIHtcclxuICAgICAgICAgICAgb2JqZWN0ID0geyBcImJsYW5rXCI6IFwiYmxhbmtcIiB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuc2tpcEhlYWRlcigpXHJcbiAgICAgICAgICAgIC5wb3N0KHVybHEsIG9iamVjdClcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIHdyYXBwZXIgZm9yIHRoZSBIVFRQIFBVVCBDYWxsXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1cmxxIFRoZSBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgUFVUIGRhdGEgdG8gYmUgc2VudFxyXG4gICAgICogXHJcbiAgICAgKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXHJcbiAgICAgKiBAc2luY2UgMjAxNjA4MjZcclxuICAgICAqL1xyXG4gICAgUFVUKHVybHE6IHN0cmluZywgb2JqZWN0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmIChudWxsID09IG9iamVjdCkge1xyXG4gICAgICAgICAgICBvYmplY3QgPSB7IFwiYmxhbmtcIjogXCJibGFua1wiIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wdXQodXJscSwgb2JqZWN0KVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayB3cmFwcGVyIGZvciB0aGUgSFRUUCBQQVRDSCBDYWxsXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1cmxxIFRoZSBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0IFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgUFVUIGRhdGEgdG8gYmUgc2VudFxyXG4gICAgICogXHJcbiAgICAgKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXHJcbiAgICAgKiBAc2luY2UgMjAxNjExMDdcclxuICAgICAqL1xyXG4gICAgUEFUQ0godXJscTogc3RyaW5nLCBvYmplY3Q6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKG51bGwgPT0gb2JqZWN0KSB7XHJcbiAgICAgICAgICAgIG9iamVjdCA9IHsgXCJibGFua1wiOiBcImJsYW5rXCIgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBhdGNoKHVybHEsIG9iamVjdClcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgd3JhcHBlciBmb3IgdGhlIEhUVFAgREVMRVRFIENhbGxcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybHEgVGhlIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcclxuICAgICAqIFxyXG4gICAgICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gICAgICogQHNpbmNlIDIwMTYwODI2XHJcbiAgICAgKi9cclxuICAgIERFTEVURSh1cmxxOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmRlbGV0ZSh1cmxxKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG59Il19
@@ -0,0 +1,53 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { throwError } from 'rxjs';
3
+ import { catchError } from 'rxjs/operators';
4
+ import { Logger } from './logger.service';
5
+ import { ConfigService } from './config.service';
6
+ import { ErrorHandlerService } from './error-handler.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./config.service";
9
+ import * as i2 from "./error-handler.service";
10
+ const log = new Logger('ErrorHandlerInterceptor');
11
+ /**
12
+ * Adds a default error handler to all requests.
13
+ */
14
+ export class ErrorHandlerInterceptor {
15
+ constructor(configService, errorHandler) {
16
+ this.configService = configService;
17
+ this.errorHandler = errorHandler;
18
+ }
19
+ intercept(request, next) {
20
+ return next.handle(request).pipe(catchError(error => this.handleError(error)));
21
+ }
22
+ // Customize the default error handler here if needed
23
+ handleError(error) {
24
+ var _a, _b;
25
+ let errorMessage = '';
26
+ if (error.error instanceof ErrorEvent) {
27
+ // client-side error
28
+ errorMessage = `Client Error: ${(_a = this.configService) === null || _a === void 0 ? void 0 : _a.getProjectKey()}: ${error.error.message}`;
29
+ }
30
+ else {
31
+ // server-side error
32
+ errorMessage = `Server Error: ${(_b = this.configService) === null || _b === void 0 ? void 0 : _b.getProjectKey()}`;
33
+ try {
34
+ this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');
35
+ }
36
+ catch (e) {
37
+ console.log("Unable to handle server error", e);
38
+ }
39
+ }
40
+ return throwError(error);
41
+ }
42
+ }
43
+ ErrorHandlerInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerInterceptor_Factory() { return new ErrorHandlerInterceptor(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i2.ErrorHandlerService)); }, token: ErrorHandlerInterceptor, providedIn: "root" });
44
+ ErrorHandlerInterceptor.decorators = [
45
+ { type: Injectable, args: [{
46
+ providedIn: 'root'
47
+ },] }
48
+ ];
49
+ ErrorHandlerInterceptor.ctorParameters = () => [
50
+ { type: ConfigService },
51
+ { type: ErrorHandlerService }
52
+ ];
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUU5RCxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRWxEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixhQUE0QixFQUFVLFlBQWlDO1FBQXZFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBQUksQ0FBQztJQUVoRyxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsV0FBVyxDQUFDLEtBQXdCOztRQUMxQyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxLQUFLLENBQUMsS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUNyQyxvQkFBb0I7WUFDcEIsWUFBWSxHQUFHLGlCQUFpQixNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLGFBQWEsRUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0Y7YUFBTTtZQUNMLG9CQUFvQjtZQUNwQixZQUFZLEdBQUcsaUJBQWlCLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN0RSxJQUFJO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSw0REFBNEQsQ0FBQyxDQUFDO2FBQ3BHO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNqRDtTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7OztZQTNCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVZRLGFBQWE7WUFDYixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5cbmNvbnN0IGxvZyA9IG5ldyBMb2dnZXIoJ0Vycm9ySGFuZGxlckludGVyY2VwdG9yJyk7XG5cbi8qKlxuICogQWRkcyBhIGRlZmF1bHQgZXJyb3IgaGFuZGxlciB0byBhbGwgcmVxdWVzdHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlKSB7IH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkpO1xuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaGVyZSBpZiBuZWVkZWRcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIC8vIGNsaWVudC1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ2xpZW50IEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfTogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlcnZlci1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgU2VydmVyIEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfWA7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvciwgJ1VuZXhwZWN0ZWQgU2VydmVyIEVycm9yLCB0cnkgbGF0ZXIgb3IgY29udGFjdCBzZXJ2aWNlIHRlYW0nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJVbmFibGUgdG8gaGFuZGxlIHNlcnZlciBlcnJvclwiLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { AlertService } from "./alert.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./alert.service";
5
+ /**
6
+ * Service used to handle errors from the request
7
+ *
8
+ * @author Joshua Kissoon
9
+ * @since 20171202
10
+ */
11
+ export class ErrorHandlerService {
12
+ constructor(alerter) {
13
+ this.alerter = alerter;
14
+ }
15
+ handleError(errorResponse, msg = '') {
16
+ var _a;
17
+ // 1 - Create empty array to store errors
18
+ const errors = [];
19
+ // 2 - check if the error object is present in the response
20
+ if (errorResponse.error) {
21
+ // 3 - Push the main error message to the array of errors
22
+ errors.push(errorResponse.error.message ? errorResponse.error.message : (_a = errorResponse.error) === null || _a === void 0 ? void 0 : _a.error);
23
+ // 4 - Check for Laravel form validation error messages object
24
+ if (errorResponse.error.errors) {
25
+ // 5 - For each error property (which is a form field)
26
+ for (const property in errorResponse.error.errors) {
27
+ if (errorResponse.error.errors.hasOwnProperty(property)) {
28
+ // 6 - Extract it's array of errors
29
+ const propertyErrors = errorResponse.error.errors[property];
30
+ // 7 - Push all errors in the array to the errors array
31
+ propertyErrors.forEach(error => errors.push(error));
32
+ }
33
+ }
34
+ }
35
+ }
36
+ var errMessage = errors.length ? errors[0] : msg;
37
+ this.alerter.addAlert("Error: " + errMessage, "warning");
38
+ }
39
+ }
40
+ ErrorHandlerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorHandlerService_Factory() { return new ErrorHandlerService(i0.ɵɵinject(i1.AlertService)); }, token: ErrorHandlerService, providedIn: "root" });
41
+ ErrorHandlerService.decorators = [
42
+ { type: Injectable, args: [{
43
+ providedIn: 'root'
44
+ },] }
45
+ ];
46
+ ErrorHandlerService.ctorParameters = () => [
47
+ { type: AlertService }
48
+ ];
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRy9DOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFvQixPQUFxQjtRQUFyQixZQUFPLEdBQVAsT0FBTyxDQUFjO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsYUFBa0IsRUFBRSxNQUFjLEVBQUU7O1FBQzlDLHlDQUF5QztRQUN6QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsMkRBQTJEO1FBQzNELElBQUksYUFBYSxDQUFDLEtBQUssRUFBRTtZQUV2Qix5REFBeUQ7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFDLGFBQWEsQ0FBQyxLQUFLLDBDQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXBHLDhEQUE4RDtZQUM5RCxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUU5QixzREFBc0Q7Z0JBQ3RELEtBQUssTUFBTSxRQUFRLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBRWpELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUV2RCxtQ0FBbUM7d0JBQ25DLE1BQU0sY0FBYyxHQUFrQixhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFFM0UsdURBQXVEO3dCQUN2RCxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUNyRDtpQkFFRjthQUNGO1NBQ0Y7UUFDRCxJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7Ozs7WUF0Q0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYUSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuL2FsZXJ0LnNlcnZpY2VcIjtcclxuXHJcblxyXG4vKipcclxuICogU2VydmljZSB1c2VkIHRvIGhhbmRsZSBlcnJvcnMgZnJvbSB0aGUgcmVxdWVzdFxyXG4gKlxyXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXHJcbiAqIEBzaW5jZSAyMDE3MTIwMlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxlcnRlcjogQWxlcnRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvcihlcnJvclJlc3BvbnNlOiBhbnksIG1zZzogc3RyaW5nID0gJycpIHtcclxuICAgIC8vIDEgLSBDcmVhdGUgZW1wdHkgYXJyYXkgdG8gc3RvcmUgZXJyb3JzXHJcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcclxuXHJcbiAgICAvLyAyIC0gY2hlY2sgaWYgdGhlIGVycm9yIG9iamVjdCBpcyBwcmVzZW50IGluIHRoZSByZXNwb25zZVxyXG4gICAgaWYgKGVycm9yUmVzcG9uc2UuZXJyb3IpIHtcclxuXHJcbiAgICAgIC8vIDMgLSBQdXNoIHRoZSBtYWluIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGFycmF5IG9mIGVycm9yc1xyXG4gICAgICBlcnJvcnMucHVzaChlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgPyBlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgOiBlcnJvclJlc3BvbnNlLmVycm9yPy5lcnJvcik7XHJcblxyXG4gICAgICAvLyA0IC0gQ2hlY2sgZm9yIExhcmF2ZWwgZm9ybSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIG9iamVjdFxyXG4gICAgICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnMpIHtcclxuXHJcbiAgICAgICAgLy8gNSAtIEZvciBlYWNoIGVycm9yIHByb3BlcnR5ICh3aGljaCBpcyBhIGZvcm0gZmllbGQpXHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlcnJvclJlc3BvbnNlLmVycm9yLmVycm9ycykge1xyXG5cclxuICAgICAgICAgIGlmIChlcnJvclJlc3BvbnNlLmVycm9yLmVycm9ycy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIDYgLSBFeHRyYWN0IGl0J3MgYXJyYXkgb2YgZXJyb3JzXHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5RXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnNbcHJvcGVydHldO1xyXG5cclxuICAgICAgICAgICAgLy8gNyAtIFB1c2ggYWxsIGVycm9ycyBpbiB0aGUgYXJyYXkgdG8gdGhlIGVycm9ycyBhcnJheVxyXG4gICAgICAgICAgICBwcm9wZXJ0eUVycm9ycy5mb3JFYWNoKGVycm9yID0+IGVycm9ycy5wdXNoKGVycm9yKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFyIGVyck1lc3NhZ2UgPSBlcnJvcnMubGVuZ3RoID8gZXJyb3JzWzBdIDogbXNnO1xyXG4gICAgdGhpcy5hbGVydGVyLmFkZEFsZXJ0KFwiRXJyb3I6IFwiICsgZXJyTWVzc2FnZSwgXCJ3YXJuaW5nXCIpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FormValidatorService {
4
+ constructor() { }
5
+ /**Method to evaluate form fields*/
6
+ isFieldValid(field, formGroup, firstAttempt) {
7
+ return (!formGroup.get(field).valid && formGroup.get(field).touched) ||
8
+ (!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);
9
+ }
10
+ /**Method to find error in form fields*/
11
+ getErrorMessage(field, formGroup, errorMessages, errorField) {
12
+ const error = Object.keys(formGroup.get(field).errors);
13
+ return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';
14
+ }
15
+ }
16
+ FormValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormValidatorService_Factory() { return new FormValidatorService(); }, token: FormValidatorService, providedIn: "root" });
17
+ FormValidatorService.decorators = [
18
+ { type: Injectable, args: [{
19
+ providedIn: 'root'
20
+ },] }
21
+ ];
22
+ FormValidatorService.ctorParameters = () => [];
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9mb3JtLXZhbGlkYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFFakIsbUNBQW1DO0lBQ25DLFlBQVksQ0FBQyxLQUFhLEVBQUUsU0FBMEIsRUFBRSxZQUFzQjtRQUM1RSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxlQUFlLENBQUMsS0FBYSxFQUFFLFNBQTBCLEVBQUUsYUFBa0IsRUFBRSxVQUFtQjtRQUNoRyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0SSxDQUFDOzs7O1lBakJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVZhbGlkYXRvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgaXNGaWVsZFZhbGlkKGZpZWxkOiBzdHJpbmcsIGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgYW55LCBmaXJzdEF0dGVtcHQ/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICghZm9ybUdyb3VwLmdldChmaWVsZCkudmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZCkudG91Y2hlZCkgfHxcbiAgICAgICghZm9ybUdyb3VwLmdldChmaWVsZCkudmFsaWQgJiYgZm9ybUdyb3VwLmdldChmaWVsZCkudW50b3VjaGVkICYmIGZpcnN0QXR0ZW1wdCk7XG4gIH1cblxuICAvKipNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkcyovXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IGFueSwgZXJyb3JNZXNzYWdlczogYW55LCBlcnJvckZpZWxkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZXJyb3IgPSBPYmplY3Qua2V5cyhmb3JtR3JvdXAuZ2V0KGZpZWxkKS5lcnJvcnMpO1xuICAgIHJldHVybiAoZXJyb3IubGVuZ3RoID4gMCkgPyAoZXJyb3JNZXNzYWdlc1tlcnJvckZpZWxkIHx8IGZpZWxkXVtlcnJvclswXV0gPyBlcnJvck1lc3NhZ2VzW2Vycm9yRmllbGQgfHwgZmllbGRdW2Vycm9yWzBdXSA6ICcnKSA6ICcnO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.
5
+ */
6
+ export class HeaderInterceptor {
7
+ intercept(request, next) {
8
+ request = request.clone({
9
+ setHeaders: {
10
+ 'Content-Type': request.headers.get('Content-Type') || 'application/json',
11
+ }
12
+ });
13
+ return next.handle(request);
14
+ }
15
+ }
16
+ HeaderInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function HeaderInterceptor_Factory() { return new HeaderInterceptor(); }, token: HeaderInterceptor, providedIn: "root" });
17
+ HeaderInterceptor.decorators = [
18
+ { type: Injectable, args: [{
19
+ providedIn: 'root'
20
+ },] }
21
+ ];
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2hlYWRlci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxrQkFBa0I7YUFDMUU7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7OztZQVpGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuLyoqXG4gKiBQcmVmaXhlcyBhbGwgcmVxdWVzdHMgbm90IHN0YXJ0aW5nIHdpdGggYGh0dHBbc11gIHdpdGggYGVudmlyb25tZW50LnNlcnZlclVybGAuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgfHwgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,110 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ConfigService } from './config.service';
3
+ import { Logger } from './logger.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./config.service";
6
+ const log = new Logger('HttpCacheService');
7
+ /**
8
+ * Provides a cache facility for HTTP requests with configurable persistence policy.
9
+ */
10
+ export class HttpCacheService {
11
+ constructor(configService) {
12
+ this.configService = configService;
13
+ this.cachedData = {};
14
+ this.storage = this.configService.getStorage();
15
+ this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';
16
+ this.loadCacheData();
17
+ }
18
+ /**
19
+ * Sets the cache data for the specified request.
20
+ * @param {!string} url The request URL.
21
+ * @param {ResponseOptions} data The received data.
22
+ * @param {Date=} lastUpdated The cache last update, current date is used if not specified.
23
+ */
24
+ setCacheData(url, data, lastUpdated) {
25
+ this.cachedData[url] = {
26
+ lastUpdated: lastUpdated || new Date(),
27
+ data: data
28
+ };
29
+ log.debug(`Cache set for key: "${url}"`);
30
+ this.saveCacheData();
31
+ }
32
+ /**
33
+ * Gets the cached data for the specified request.
34
+ * @param {!string} url The request URL.
35
+ * @return {?ResponseOptions} The cached data or null if no cached data exists for this request.
36
+ */
37
+ getCacheData(url) {
38
+ const cacheEntry = this.cachedData[url];
39
+ if (cacheEntry) {
40
+ log.debug(`Cache hit for key: "${url}"`);
41
+ return cacheEntry.data;
42
+ }
43
+ return null;
44
+ }
45
+ /**
46
+ * Gets the cached entry for the specified request.
47
+ * @param {!string} url The request URL.
48
+ * @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.
49
+ */
50
+ getHttpCacheEntry(url) {
51
+ return this.cachedData[url] || null;
52
+ }
53
+ /**
54
+ * Clears the cached entry (if exists) for the specified request.
55
+ * @param {!string} url The request URL.
56
+ */
57
+ clearCache(url) {
58
+ delete this.cachedData[url];
59
+ log.debug(`Cache cleared for key: "${url}"`);
60
+ this.saveCacheData();
61
+ }
62
+ /**
63
+ * Cleans cache entries older than the specified date.
64
+ * @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.
65
+ */
66
+ cleanCache(expirationDate) {
67
+ if (expirationDate) {
68
+ Object(this.cachedData).keys.forEach((key) => {
69
+ var _a;
70
+ if (expirationDate >= ((_a = this.cachedData[key]) === null || _a === void 0 ? void 0 : _a.lastUpdated)) {
71
+ delete this.cachedData[key];
72
+ }
73
+ });
74
+ }
75
+ else {
76
+ this.cachedData = {};
77
+ }
78
+ this.saveCacheData();
79
+ }
80
+ /**
81
+ * Sets the cache persistence policy.
82
+ * Note that changing the cache persistence will also clear the cache from its previous storage.
83
+ * @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session
84
+ * storage, or if no value is provided it will be only in-memory (default).
85
+ */
86
+ setPersistence(persistence) {
87
+ this.cleanCache();
88
+ this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;
89
+ this.loadCacheData();
90
+ }
91
+ saveCacheData() {
92
+ if (this.storage) {
93
+ this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);
94
+ }
95
+ }
96
+ loadCacheData() {
97
+ const data = this.storage ? this.storage[this.cachePersistenceKey] : null;
98
+ this.cachedData = data ? JSON.parse(data) : {};
99
+ }
100
+ }
101
+ HttpCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpCacheService_Factory() { return new HttpCacheService(i0.ɵɵinject(i1.ConfigService)); }, token: HttpCacheService, providedIn: "root" });
102
+ HttpCacheService.decorators = [
103
+ { type: Injectable, args: [{
104
+ providedIn: 'root'
105
+ },] }
106
+ ];
107
+ HttpCacheService.ctorParameters = () => [
108
+ { type: ConfigService }
109
+ ];
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2h0dHAtY2FjaGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBUTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUp4QyxlQUFVLEdBQXVDLEVBQUUsQ0FBQztRQUsxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBQzlFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsR0FBVyxFQUFFLElBQXVCLEVBQUUsV0FBa0I7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNyQixXQUFXLEVBQUUsV0FBVyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVc7UUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QyxJQUFJLFVBQVUsRUFBRTtZQUNkLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDekMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsY0FBcUI7UUFDOUIsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7O2dCQUNuRCxJQUFJLGNBQWMsV0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQywwQ0FBRSxXQUFXLENBQUEsRUFBRTtvQkFDdkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxXQUFpQztRQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7Ozs7WUF2R0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFoQlEsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xuXG5jb25zdCBsb2cgPSBuZXcgTG9nZ2VyKCdIdHRwQ2FjaGVTZXJ2aWNlJyk7XG5cblxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2FjaGVFbnRyeSB7XG4gIGxhc3RVcGRhdGVkOiBEYXRlO1xuICBkYXRhOiBIdHRwUmVzcG9uc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIGNhY2hlIGZhY2lsaXR5IGZvciBIVFRQIHJlcXVlc3RzIHdpdGggY29uZmlndXJhYmxlIHBlcnNpc3RlbmNlIHBvbGljeS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cENhY2hlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBjYWNoZWREYXRhOiB7IFtrZXk6IHN0cmluZ106IEh0dHBDYWNoZUVudHJ5OyB9ID0ge307XG4gIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSB8IGFueSB8IG51bGw7XG4gIHByaXZhdGUgY2FjaGVQZXJzaXN0ZW5jZUtleTogU3RyaW5nIHwgYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRTdG9yYWdlKCk7XG4gICAgdGhpcy5jYWNoZVBlcnNpc3RlbmNlS2V5ID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFByb2plY3RLZXkoKSArICdfSFRUUF9DQUNIRSc7XG4gICAgdGhpcy5sb2FkQ2FjaGVEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY2FjaGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCByZXF1ZXN0LlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVybCBUaGUgcmVxdWVzdCBVUkwuXG4gICAqIEBwYXJhbSB7UmVzcG9uc2VPcHRpb25zfSBkYXRhIFRoZSByZWNlaXZlZCBkYXRhLlxuICAgKiBAcGFyYW0ge0RhdGU9fSBsYXN0VXBkYXRlZCBUaGUgY2FjaGUgbGFzdCB1cGRhdGUsIGN1cnJlbnQgZGF0ZSBpcyB1c2VkIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBzZXRDYWNoZURhdGEodXJsOiBzdHJpbmcsIGRhdGE6IEh0dHBSZXNwb25zZTxhbnk+LCBsYXN0VXBkYXRlZD86IERhdGUpIHtcbiAgICB0aGlzLmNhY2hlZERhdGFbdXJsXSA9IHtcbiAgICAgIGxhc3RVcGRhdGVkOiBsYXN0VXBkYXRlZCB8fCBuZXcgRGF0ZSgpLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgbG9nLmRlYnVnKGBDYWNoZSBzZXQgZm9yIGtleTogXCIke3VybH1cImApO1xuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNhY2hlZCBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7IXN0cmluZ30gdXJsIFRoZSByZXF1ZXN0IFVSTC5cbiAgICogQHJldHVybiB7P1Jlc3BvbnNlT3B0aW9uc30gVGhlIGNhY2hlZCBkYXRhIG9yIG51bGwgaWYgbm8gY2FjaGVkIGRhdGEgZXhpc3RzIGZvciB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICBnZXRDYWNoZURhdGEodXJsOiBzdHJpbmcpOiBIdHRwUmVzcG9uc2U8YW55PiB8IG51bGwge1xuICAgIGNvbnN0IGNhY2hlRW50cnkgPSB0aGlzLmNhY2hlZERhdGFbdXJsXTtcblxuICAgIGlmIChjYWNoZUVudHJ5KSB7XG4gICAgICBsb2cuZGVidWcoYENhY2hlIGhpdCBmb3Iga2V5OiBcIiR7dXJsfVwiYCk7XG4gICAgICByZXR1cm4gY2FjaGVFbnRyeS5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNhY2hlZCBlbnRyeSBmb3IgdGhlIHNwZWNpZmllZCByZXF1ZXN0LlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVybCBUaGUgcmVxdWVzdCBVUkwuXG4gICAqIEByZXR1cm4gez9IdHRwQ2FjaGVFbnRyeX0gVGhlIGNhY2hlIGVudHJ5IG9yIG51bGwgaWYgbm8gY2FjaGUgZW50cnkgZXhpc3RzIGZvciB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICBnZXRIdHRwQ2FjaGVFbnRyeSh1cmw6IHN0cmluZyk6IEh0dHBDYWNoZUVudHJ5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkRGF0YVt1cmxdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjYWNoZWQgZW50cnkgKGlmIGV4aXN0cykgZm9yIHRoZSBzcGVjaWZpZWQgcmVxdWVzdC5cbiAgICogQHBhcmFtIHshc3RyaW5nfSB1cmwgVGhlIHJlcXVlc3QgVVJMLlxuICAgKi9cbiAgY2xlYXJDYWNoZSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmNhY2hlZERhdGFbdXJsXTtcbiAgICBsb2cuZGVidWcoYENhY2hlIGNsZWFyZWQgZm9yIGtleTogXCIke3VybH1cImApO1xuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyBjYWNoZSBlbnRyaWVzIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLlxuICAgKiBAcGFyYW0ge2RhdGU9fSBleHBpcmF0aW9uRGF0ZSBUaGUgY2FjaGUgZXhwaXJhdGlvbiBkYXRlLiBJZiBubyBkYXRlIGlzIHNwZWNpZmllZCwgYWxsIGNhY2hlIGlzIGNsZWFyZWQuXG4gICAqL1xuICBjbGVhbkNhY2hlKGV4cGlyYXRpb25EYXRlPzogRGF0ZSkge1xuICAgIGlmIChleHBpcmF0aW9uRGF0ZSkge1xuICAgICAgT2JqZWN0KHRoaXMuY2FjaGVkRGF0YSkua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoZXhwaXJhdGlvbkRhdGUgPj0gdGhpcy5jYWNoZWREYXRhW2tleV0/Lmxhc3RVcGRhdGVkKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVkRGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWNoZWREYXRhID0ge307XG4gICAgfVxuICAgIHRoaXMuc2F2ZUNhY2hlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNhY2hlIHBlcnNpc3RlbmNlIHBvbGljeS5cbiAgICogTm90ZSB0aGF0IGNoYW5naW5nIHRoZSBjYWNoZSBwZXJzaXN0ZW5jZSB3aWxsIGFsc28gY2xlYXIgdGhlIGNhY2hlIGZyb20gaXRzIHByZXZpb3VzIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7J2xvY2FsJ3wnc2Vzc2lvbic9fSBwZXJzaXN0ZW5jZSBIb3cgdGhlIGNhY2hlIHNob3VsZCBiZSBwZXJzaXN0ZWQsIGl0IGNhbiBiZSBlaXRoZXIgbG9jYWwgb3Igc2Vzc2lvblxuICAgKiAgIHN0b3JhZ2UsIG9yIGlmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIGl0IHdpbGwgYmUgb25seSBpbi1tZW1vcnkgKGRlZmF1bHQpLlxuICAgKi9cbiAgc2V0UGVyc2lzdGVuY2UocGVyc2lzdGVuY2U/OiAnbG9jYWwnIHwgJ3Nlc3Npb24nKSB7XG4gICAgdGhpcy5jbGVhbkNhY2hlKCk7XG4gICAgdGhpcy5zdG9yYWdlID0gcGVyc2lzdGVuY2UgPT09ICdsb2NhbCcgPyBsb2NhbFN0b3JhZ2UgOiBwZXJzaXN0ZW5jZSA9PT0gJ3Nlc3Npb24nID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsO1xuICAgIHRoaXMubG9hZENhY2hlRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlQ2FjaGVEYXRhKCkge1xuICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZVt0aGlzLmNhY2hlUGVyc2lzdGVuY2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZWREYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRDYWNoZURhdGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc3RvcmFnZSA/IHRoaXMuc3RvcmFnZVt0aGlzLmNhY2hlUGVyc2lzdGVuY2VLZXldIDogbnVsbDtcbiAgICB0aGlzLmNhY2hlZERhdGEgPSBkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IHt9O1xuICB9XG5cbn1cbiJdfQ==