@aakash58/chatbot 1.1.20 → 1.1.21

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 (351) hide show
  1. package/.editorconfig +17 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +41 -0
  4. package/.vscode/settings.json +14 -0
  5. package/.vscode/tasks.json +60 -0
  6. package/README.md +298 -22
  7. package/angular.json +132 -0
  8. package/docs/PUBLISHING_GUIDE.md +104 -0
  9. package/package.json +75 -29
  10. package/projects/app-doohbot/public/assets/const/app-const.json +15 -0
  11. package/projects/app-doohbot/public/assets/const/doohclick_license.json +6 -0
  12. package/projects/app-doohbot/public/favicon.ico +0 -0
  13. package/projects/app-doohbot/src/app/app.config.ts +13 -0
  14. package/projects/app-doohbot/src/app/app.html +31 -0
  15. package/projects/app-doohbot/src/app/app.routes.ts +3 -0
  16. package/projects/app-doohbot/src/app/app.scss +279 -0
  17. package/projects/app-doohbot/src/app/app.spec.ts +23 -0
  18. package/projects/app-doohbot/src/app/app.ts +72 -0
  19. package/projects/app-doohbot/src/index.html +15 -0
  20. package/projects/app-doohbot/src/main.ts +6 -0
  21. package/projects/app-doohbot/src/styles.scss +15 -0
  22. package/projects/app-doohbot/tsconfig.app.json +15 -0
  23. package/projects/app-doohbot/tsconfig.spec.json +14 -0
  24. package/projects/doohbot/README.md +64 -0
  25. package/projects/doohbot/docs/README.md +140 -0
  26. package/projects/doohbot/ng-package.json +10 -0
  27. package/projects/doohbot/package.json +16 -0
  28. package/projects/doohbot/src/lib/app/chat/chat-ui-state.service.ts +194 -0
  29. package/projects/doohbot/src/lib/app/chat/chat.service.ts +547 -0
  30. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.html +27 -0
  31. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.scss +115 -0
  32. package/projects/doohbot/src/lib/app/chat/components/chat-button/chat-button.component.ts +35 -0
  33. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.html +3 -0
  34. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +20 -0
  35. package/projects/doohbot/src/lib/app/chat/components/chat-footer/chat-footer.component.ts +12 -0
  36. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.html +34 -0
  37. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.scss +78 -0
  38. package/projects/doohbot/src/lib/app/chat/components/chat-header/chat-header.component.ts +52 -0
  39. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.html +77 -0
  40. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.scss +346 -0
  41. package/projects/doohbot/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.ts +188 -0
  42. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.html +146 -0
  43. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.scss +187 -0
  44. package/projects/doohbot/src/lib/app/chat/components/chat-window/chat-window.component.ts +256 -0
  45. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.html +17 -0
  46. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.scss +59 -0
  47. package/projects/doohbot/src/lib/app/chat/components/message-input/message-input.component.ts +28 -0
  48. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.html +138 -0
  49. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.scss +436 -0
  50. package/projects/doohbot/src/lib/app/chat/components/message-list/message-list.component.ts +106 -0
  51. package/projects/doohbot/src/lib/app/chat/model/chat-history.model.ts +57 -0
  52. package/projects/doohbot/src/lib/app/chat/model/chat-request.model.ts +17 -0
  53. package/projects/doohbot/src/lib/app/chat/model/chat-response.model.ts +9 -0
  54. package/projects/doohbot/src/lib/app/chat/model/chat-session.model.ts +14 -0
  55. package/{lib/app/chat/model/chat-stream-message.model.d.ts → projects/doohbot/src/lib/app/chat/model/chat-stream-message.model.ts} +6 -5
  56. package/projects/doohbot/src/lib/app/chat/model/chat-stream-response.model.ts +12 -0
  57. package/projects/doohbot/src/lib/app/chat/services/chat-api.service.ts +82 -0
  58. package/projects/doohbot/src/lib/app/chat/services/chat-audio.service.ts +44 -0
  59. package/projects/doohbot/src/lib/app/chat/services/chat-history.service.ts +303 -0
  60. package/projects/doohbot/src/lib/app/login/login-form.component.html +80 -0
  61. package/projects/doohbot/src/lib/app/login/login-form.component.scss +189 -0
  62. package/projects/doohbot/src/lib/app/login/login-form.component.ts +45 -0
  63. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.html +81 -0
  64. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.scss +179 -0
  65. package/projects/doohbot/src/lib/app/personalization/personalization-dialog.component.ts +217 -0
  66. package/projects/doohbot/src/lib/app/personalization/personalization.service.ts +197 -0
  67. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.html +111 -0
  68. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.scss +218 -0
  69. package/projects/doohbot/src/lib/app/personalization/sections/account/account-section.component.ts +121 -0
  70. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.html +46 -0
  71. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.scss +138 -0
  72. package/projects/doohbot/src/lib/app/personalization/sections/instructions/instructions-section.component.ts +28 -0
  73. package/projects/doohbot/src/lib/app/personalization/sections/preferences/color-picker-dialog.component.ts +92 -0
  74. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.html +198 -0
  75. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +107 -0
  76. package/projects/doohbot/src/lib/app/personalization/sections/preferences/preferences-section.component.ts +103 -0
  77. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.html +46 -0
  78. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.scss +131 -0
  79. package/projects/doohbot/src/lib/app/personalization/sections/profile/profile-section.component.ts +23 -0
  80. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.html +33 -0
  81. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.scss +61 -0
  82. package/projects/doohbot/src/lib/app/personalization/sections/settings/setting-section.component.ts +20 -0
  83. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.html +30 -0
  84. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.scss +59 -0
  85. package/projects/doohbot/src/lib/app/personalization/sections/terms/terms-section.component.ts +12 -0
  86. package/projects/doohbot/src/lib/constant/doohbot-constant.ts +40 -0
  87. package/projects/doohbot/src/lib/constant/html-entities.ts +8 -0
  88. package/projects/doohbot/src/lib/constant/utf8.ts +9 -0
  89. package/projects/doohbot/src/lib/core/app-const.ts +63 -0
  90. package/projects/doohbot/src/lib/core/auth/account-api.service.ts +53 -0
  91. package/projects/doohbot/src/lib/core/auth/auth.service.ts +478 -0
  92. package/projects/doohbot/src/lib/core/auth/models/auth-result.model.ts +4 -0
  93. package/projects/doohbot/src/lib/core/auth/models/federated-login-request.model.ts +5 -0
  94. package/projects/doohbot/src/lib/core/auth/models/login-request.model.ts +6 -0
  95. package/projects/doohbot/src/lib/core/auth/storage.service.ts +113 -0
  96. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.directive.ts +123 -0
  97. package/projects/doohbot/src/lib/core/directives/draggable/draggable-dialog.module.ts +9 -0
  98. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.directive.ts +58 -0
  99. package/projects/doohbot/src/lib/core/directives/fullscreen/fullscreen.module.ts +9 -0
  100. package/projects/doohbot/src/lib/core/directives/popout/popout.directive.ts +169 -0
  101. package/projects/doohbot/src/lib/core/directives/popout/popout.module.ts +9 -0
  102. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.directive.ts +197 -0
  103. package/projects/doohbot/src/lib/core/directives/resizable/resizable-dialog.module.ts +9 -0
  104. package/projects/doohbot/src/lib/core/enums/api-request-state.enum.ts +9 -0
  105. package/projects/doohbot/src/lib/core/environments/environment.prod.ts +14 -0
  106. package/projects/doohbot/src/lib/core/environments/environment.ts +14 -0
  107. package/projects/doohbot/src/lib/core/helpers/crypto-helper.service.ts +72 -0
  108. package/projects/doohbot/src/lib/core/http/http-stream.service.ts +105 -0
  109. package/projects/doohbot/src/lib/core/http/http.service.ts +148 -0
  110. package/projects/doohbot/src/lib/core/interceptors/auth.interceptor.ts +118 -0
  111. package/projects/doohbot/src/lib/core/interceptors/license.interceptor.ts +50 -0
  112. package/projects/doohbot/src/lib/core/models/api-config.model.ts +82 -0
  113. package/projects/doohbot/src/lib/core/models/api-request.model.ts +92 -0
  114. package/projects/doohbot/src/lib/core/models/api-response.model.ts +13 -0
  115. package/projects/doohbot/src/lib/core/models/doohbot-config.model.ts +109 -0
  116. package/{lib/core/models/license.model.d.ts → projects/doohbot/src/lib/core/models/license.model.ts} +27 -23
  117. package/projects/doohbot/src/lib/core/models/message.ts +18 -0
  118. package/projects/doohbot/src/lib/core/models/theme-config.model.ts +48 -0
  119. package/projects/doohbot/src/lib/core/services/core-config.service.ts +53 -0
  120. package/projects/doohbot/src/lib/core/services/doohbot-api.service.ts +207 -0
  121. package/projects/doohbot/src/lib/core/services/license.service.ts +171 -0
  122. package/projects/doohbot/src/lib/core/services/markdown.service.ts +73 -0
  123. package/projects/doohbot/src/lib/core/services/theme.service.ts +305 -0
  124. package/{lib/core/types/auth-mode.type.d.ts → projects/doohbot/src/lib/core/types/auth-mode.type.ts} +4 -4
  125. package/{lib/core/types/auth-status.type.d.ts → projects/doohbot/src/lib/core/types/auth-status.type.ts} +5 -4
  126. package/{lib/core/types/chat-stream.type.d.ts → projects/doohbot/src/lib/core/types/chat-stream.type.ts} +4 -4
  127. package/{lib/core/types/message-role.type.d.ts → projects/doohbot/src/lib/core/types/message-role.type.ts} +4 -4
  128. package/{lib/core/types/prompt-mode.type.d.ts → projects/doohbot/src/lib/core/types/prompt-mode.type.ts} +5 -4
  129. package/{lib/core/types/snackbar-error.type.d.ts → projects/doohbot/src/lib/core/types/snackbar-error.type.ts} +5 -4
  130. package/{lib/core/types/tenant-resolution-strategy.type.d.ts → projects/doohbot/src/lib/core/types/tenant-resolution-strategy.type.ts} +4 -4
  131. package/projects/doohbot/src/lib/core/utils/error-handler.util.ts +31 -0
  132. package/projects/doohbot/src/lib/core/utils/logger.service.ts +45 -0
  133. package/projects/doohbot/src/lib/doohbot-input.ts +19 -0
  134. package/projects/doohbot/src/lib/doohbot.component.html +34 -0
  135. package/projects/doohbot/src/lib/doohbot.component.scss +17 -0
  136. package/projects/doohbot/src/lib/doohbot.component.spec.ts +31 -0
  137. package/projects/doohbot/src/lib/doohbot.component.ts +545 -0
  138. package/projects/doohbot/src/lib/elements.ts +25 -0
  139. package/projects/doohbot/src/lib/predefined_messages.ts +14 -0
  140. package/projects/doohbot/src/lib/shared/chips/chips.component.html +9 -0
  141. package/projects/doohbot/src/lib/shared/chips/chips.component.scss +29 -0
  142. package/projects/doohbot/src/lib/shared/chips/chips.component.spec.ts +22 -0
  143. package/projects/doohbot/src/lib/shared/chips/chips.component.ts +20 -0
  144. package/projects/doohbot/src/lib/shared/dialog/dialog.component.html +29 -0
  145. package/projects/doohbot/src/lib/shared/dialog/dialog.component.scss +100 -0
  146. package/projects/doohbot/src/lib/shared/dialog/dialog.component.ts +42 -0
  147. package/projects/doohbot/src/lib/shared/dialog/dialog.service.ts +62 -0
  148. package/projects/doohbot/src/lib/shared/dialog/dialog.utils.ts +102 -0
  149. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.html +30 -0
  150. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +53 -0
  151. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.spec.ts +22 -0
  152. package/projects/doohbot/src/lib/shared/dropdown-menu/dropdown-menu.component.ts +35 -0
  153. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.html +16 -0
  154. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.scss +45 -0
  155. package/projects/doohbot/src/lib/shared/input-dialog/input-dialog.component.ts +46 -0
  156. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.html +5 -0
  157. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.scss +0 -0
  158. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.spec.ts +22 -0
  159. package/projects/doohbot/src/lib/shared/menu-item/menu-item.component.ts +20 -0
  160. package/projects/doohbot/src/lib/shared/pipes/simple-markdown.pipe.ts +19 -0
  161. package/projects/doohbot/src/lib/shared/popout/popout.html +1 -0
  162. package/projects/doohbot/src/lib/shared/popout/popout.scss +0 -0
  163. package/projects/doohbot/src/lib/shared/popout/popout.spec.ts +23 -0
  164. package/projects/doohbot/src/lib/shared/popout/popout.ts +11 -0
  165. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.html +7 -0
  166. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.scss +125 -0
  167. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.spec.ts +21 -0
  168. package/projects/doohbot/src/lib/shared/snackbar/snackbar.component.ts +44 -0
  169. package/projects/doohbot/src/lib/shared/snackbar/snackbar.service.ts +54 -0
  170. package/{lib/shared/snackbar/snackbar.utils.d.ts → projects/doohbot/src/lib/shared/snackbar/snackbar.utils.ts} +49 -33
  171. package/projects/doohbot/src/lib/styles/_theme.scss +132 -0
  172. package/projects/doohbot/src/lib/styles/material-override.scss +302 -0
  173. package/projects/doohbot/src/lib/styles/utility.scss +588 -0
  174. package/projects/doohbot/src/public-api.ts +42 -0
  175. package/projects/doohbot/tsconfig.lib.json +15 -0
  176. package/projects/doohbot/tsconfig.lib.prod.json +11 -0
  177. package/projects/doohbot/tsconfig.spec.json +10 -0
  178. package/proxy.conf.json +8 -0
  179. package/publish.config.js +25 -0
  180. package/scripts/publishing/index.ts +67 -0
  181. package/scripts/publishing/pipeline/01-clean.ts +11 -0
  182. package/scripts/publishing/pipeline/02-validate-pre.ts +8 -0
  183. package/scripts/publishing/pipeline/03-build.ts +7 -0
  184. package/scripts/publishing/pipeline/04-validate-post.ts +8 -0
  185. package/scripts/publishing/pipeline/05-prepare-package.ts +29 -0
  186. package/scripts/publishing/pipeline/06-version.ts +23 -0
  187. package/scripts/publishing/pipeline/07-publish.ts +14 -0
  188. package/scripts/publishing/pipeline/08-cleanup.ts +5 -0
  189. package/scripts/publishing/types.ts +36 -0
  190. package/scripts/publishing/utils/command.ts +15 -0
  191. package/scripts/publishing/utils/config.ts +17 -0
  192. package/scripts/validate.ts +166 -0
  193. package/tsconfig.json +45 -0
  194. package/tsconfig.scripts.json +15 -0
  195. package/esm2022/aakash58-chatbot.mjs +0 -5
  196. package/esm2022/lib/app/chat/chat-ui-state.service.mjs +0 -170
  197. package/esm2022/lib/app/chat/chat.service.mjs +0 -445
  198. package/esm2022/lib/app/chat/components/chat-button/chat-button.component.mjs +0 -50
  199. package/esm2022/lib/app/chat/components/chat-footer/chat-footer.component.mjs +0 -12
  200. package/esm2022/lib/app/chat/components/chat-header/chat-header.component.mjs +0 -66
  201. package/esm2022/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.mjs +0 -186
  202. package/esm2022/lib/app/chat/components/chat-window/chat-window.component.mjs +0 -312
  203. package/esm2022/lib/app/chat/components/message-input/message-input.component.mjs +0 -36
  204. package/esm2022/lib/app/chat/components/message-list/message-list.component.mjs +0 -115
  205. package/esm2022/lib/app/chat/model/chat-history.model.mjs +0 -2
  206. package/esm2022/lib/app/chat/model/chat-request.model.mjs +0 -2
  207. package/esm2022/lib/app/chat/model/chat-response.model.mjs +0 -2
  208. package/esm2022/lib/app/chat/model/chat-session.model.mjs +0 -2
  209. package/esm2022/lib/app/chat/model/chat-stream-message.model.mjs +0 -2
  210. package/esm2022/lib/app/chat/model/chat-stream-response.model.mjs +0 -2
  211. package/esm2022/lib/app/chat/services/chat-api.service.mjs +0 -61
  212. package/esm2022/lib/app/chat/services/chat-audio.service.mjs +0 -50
  213. package/esm2022/lib/app/chat/services/chat-history.service.mjs +0 -252
  214. package/esm2022/lib/app/login/login-form.component.mjs +0 -46
  215. package/esm2022/lib/app/personalization/personalization-dialog.component.mjs +0 -194
  216. package/esm2022/lib/app/personalization/personalization.service.mjs +0 -149
  217. package/esm2022/lib/app/personalization/sections/account/account-section.component.mjs +0 -122
  218. package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs +0 -86
  219. package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs +0 -115
  220. package/esm2022/lib/app/personalization/sections/profile/profile-section.component.mjs +0 -29
  221. package/esm2022/lib/app/personalization/sections/settings/setting-section.component.mjs +0 -30
  222. package/esm2022/lib/app/personalization/sections/terms/terms-section.component.mjs +0 -12
  223. package/esm2022/lib/constant/doohbot-constant.mjs +0 -28
  224. package/esm2022/lib/constant/html-entities.mjs +0 -9
  225. package/esm2022/lib/constant/utf8.mjs +0 -10
  226. package/esm2022/lib/core/app-const.mjs +0 -61
  227. package/esm2022/lib/core/auth/account-api.service.mjs +0 -40
  228. package/esm2022/lib/core/auth/auth.service.mjs +0 -391
  229. package/esm2022/lib/core/auth/models/auth-result.model.mjs +0 -3
  230. package/esm2022/lib/core/auth/models/federated-login-request.model.mjs +0 -6
  231. package/esm2022/lib/core/auth/models/login-request.model.mjs +0 -6
  232. package/esm2022/lib/core/auth/storage.service.mjs +0 -110
  233. package/esm2022/lib/core/directives/draggable/draggable-dialog.directive.mjs +0 -112
  234. package/esm2022/lib/core/directives/fullscreen/fullscreen.directive.mjs +0 -55
  235. package/esm2022/lib/core/directives/resizable/resizable-dialog.directive.mjs +0 -179
  236. package/esm2022/lib/core/environments/environment.mjs +0 -15
  237. package/esm2022/lib/core/environments/environment.prod.mjs +0 -15
  238. package/esm2022/lib/core/helpers/crypto-helper.service.mjs +0 -52
  239. package/esm2022/lib/core/http/http-stream.service.mjs +0 -97
  240. package/esm2022/lib/core/http/http.service.mjs +0 -103
  241. package/esm2022/lib/core/interceptors/auth.interceptor.mjs +0 -96
  242. package/esm2022/lib/core/interceptors/license.interceptor.mjs +0 -44
  243. package/esm2022/lib/core/models/api-config.model.mjs +0 -18
  244. package/esm2022/lib/core/models/api-request.model.mjs +0 -2
  245. package/esm2022/lib/core/models/api-response.model.mjs +0 -8
  246. package/esm2022/lib/core/models/doohbot-config.model.mjs +0 -18
  247. package/esm2022/lib/core/models/license.model.mjs +0 -2
  248. package/esm2022/lib/core/models/message.mjs +0 -2
  249. package/esm2022/lib/core/models/theme-config.model.mjs +0 -2
  250. package/esm2022/lib/core/services/core-config.service.mjs +0 -52
  251. package/esm2022/lib/core/services/license.service.mjs +0 -145
  252. package/esm2022/lib/core/services/markdown.service.mjs +0 -64
  253. package/esm2022/lib/core/services/theme.service.mjs +0 -248
  254. package/esm2022/lib/core/types/auth-mode.type.mjs +0 -2
  255. package/esm2022/lib/core/types/auth-status.type.mjs +0 -5
  256. package/esm2022/lib/core/types/chat-stream.type.mjs +0 -2
  257. package/esm2022/lib/core/types/message-role.type.mjs +0 -2
  258. package/esm2022/lib/core/types/prompt-mode.type.mjs +0 -5
  259. package/esm2022/lib/core/types/snackbar-error.type.mjs +0 -5
  260. package/esm2022/lib/core/types/tenant-resolution-strategy.type.mjs +0 -2
  261. package/esm2022/lib/core/utils/logger.service.mjs +0 -42
  262. package/esm2022/lib/doohbot-input.mjs +0 -20
  263. package/esm2022/lib/doohbot.component.mjs +0 -444
  264. package/esm2022/lib/predefined_messages.mjs +0 -15
  265. package/esm2022/lib/shared/chips/chips.component.mjs +0 -28
  266. package/esm2022/lib/shared/dialog/dialog.component.mjs +0 -36
  267. package/esm2022/lib/shared/dialog/dialog.service.mjs +0 -64
  268. package/esm2022/lib/shared/dialog/dialog.utils.mjs +0 -85
  269. package/esm2022/lib/shared/dropdown-menu/dropdown-menu.component.mjs +0 -29
  270. package/esm2022/lib/shared/input-dialog/input-dialog.component.mjs +0 -38
  271. package/esm2022/lib/shared/menu-item/menu-item.component.mjs +0 -24
  272. package/esm2022/lib/shared/pipes/simple-markdown.pipe.mjs +0 -27
  273. package/esm2022/lib/shared/snackbar/snackbar.component.mjs +0 -43
  274. package/esm2022/lib/shared/snackbar/snackbar.service.mjs +0 -46
  275. package/esm2022/lib/shared/snackbar/snackbar.utils.mjs +0 -43
  276. package/esm2022/public-api.mjs +0 -37
  277. package/fesm2022/aakash58-chatbot.mjs +0 -5193
  278. package/fesm2022/aakash58-chatbot.mjs.map +0 -1
  279. package/index.d.ts +0 -5
  280. package/lib/app/chat/chat-ui-state.service.d.ts +0 -96
  281. package/lib/app/chat/chat.service.d.ts +0 -88
  282. package/lib/app/chat/components/chat-button/chat-button.component.d.ts +0 -16
  283. package/lib/app/chat/components/chat-footer/chat-footer.component.d.ts +0 -5
  284. package/lib/app/chat/components/chat-header/chat-header.component.d.ts +0 -24
  285. package/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.d.ts +0 -49
  286. package/lib/app/chat/components/chat-window/chat-window.component.d.ts +0 -107
  287. package/lib/app/chat/components/message-input/message-input.component.d.ts +0 -12
  288. package/lib/app/chat/components/message-list/message-list.component.d.ts +0 -40
  289. package/lib/app/chat/model/chat-history.model.d.ts +0 -51
  290. package/lib/app/chat/model/chat-request.model.d.ts +0 -10
  291. package/lib/app/chat/model/chat-response.model.d.ts +0 -9
  292. package/lib/app/chat/model/chat-session.model.d.ts +0 -12
  293. package/lib/app/chat/model/chat-stream-response.model.d.ts +0 -10
  294. package/lib/app/chat/services/chat-api.service.d.ts +0 -30
  295. package/lib/app/chat/services/chat-audio.service.d.ts +0 -19
  296. package/lib/app/chat/services/chat-history.service.d.ts +0 -53
  297. package/lib/app/login/login-form.component.d.ts +0 -20
  298. package/lib/app/personalization/personalization-dialog.component.d.ts +0 -53
  299. package/lib/app/personalization/personalization.service.d.ts +0 -66
  300. package/lib/app/personalization/sections/account/account-section.component.d.ts +0 -30
  301. package/lib/app/personalization/sections/preferences/color-picker-dialog.component.d.ts +0 -17
  302. package/lib/app/personalization/sections/preferences/preferences-section.component.d.ts +0 -27
  303. package/lib/app/personalization/sections/profile/profile-section.component.d.ts +0 -17
  304. package/lib/app/personalization/sections/settings/setting-section.component.d.ts +0 -10
  305. package/lib/app/personalization/sections/terms/terms-section.component.d.ts +0 -5
  306. package/lib/constant/doohbot-constant.d.ts +0 -12
  307. package/lib/constant/html-entities.d.ts +0 -8
  308. package/lib/constant/utf8.d.ts +0 -9
  309. package/lib/core/app-const.d.ts +0 -11
  310. package/lib/core/auth/account-api.service.d.ts +0 -20
  311. package/lib/core/auth/auth.service.d.ts +0 -90
  312. package/lib/core/auth/models/auth-result.model.d.ts +0 -4
  313. package/lib/core/auth/models/federated-login-request.model.d.ts +0 -5
  314. package/lib/core/auth/models/login-request.model.d.ts +0 -6
  315. package/lib/core/auth/storage.service.d.ts +0 -21
  316. package/lib/core/directives/draggable/draggable-dialog.directive.d.ts +0 -23
  317. package/lib/core/directives/fullscreen/fullscreen.directive.d.ts +0 -14
  318. package/lib/core/directives/resizable/resizable-dialog.directive.d.ts +0 -30
  319. package/lib/core/environments/environment.d.ts +0 -7
  320. package/lib/core/environments/environment.prod.d.ts +0 -7
  321. package/lib/core/helpers/crypto-helper.service.d.ts +0 -12
  322. package/lib/core/http/http-stream.service.d.ts +0 -18
  323. package/lib/core/http/http.service.d.ts +0 -20
  324. package/lib/core/interceptors/auth.interceptor.d.ts +0 -18
  325. package/lib/core/interceptors/license.interceptor.d.ts +0 -11
  326. package/lib/core/models/api-config.model.d.ts +0 -58
  327. package/lib/core/models/api-request.model.d.ts +0 -77
  328. package/lib/core/models/api-response.model.d.ts +0 -6
  329. package/lib/core/models/doohbot-config.model.d.ts +0 -81
  330. package/lib/core/models/message.d.ts +0 -16
  331. package/lib/core/models/theme-config.model.d.ts +0 -28
  332. package/lib/core/services/core-config.service.d.ts +0 -23
  333. package/lib/core/services/license.service.d.ts +0 -33
  334. package/lib/core/services/markdown.service.d.ts +0 -8
  335. package/lib/core/services/theme.service.d.ts +0 -40
  336. package/lib/core/utils/logger.service.d.ts +0 -11
  337. package/lib/doohbot-input.d.ts +0 -19
  338. package/lib/doohbot.component.d.ts +0 -108
  339. package/lib/predefined_messages.d.ts +0 -2
  340. package/lib/shared/chips/chips.component.d.ts +0 -10
  341. package/lib/shared/dialog/dialog.component.d.ts +0 -19
  342. package/lib/shared/dialog/dialog.service.d.ts +0 -29
  343. package/lib/shared/dialog/dialog.utils.d.ts +0 -41
  344. package/lib/shared/dropdown-menu/dropdown-menu.component.d.ts +0 -11
  345. package/lib/shared/input-dialog/input-dialog.component.d.ts +0 -20
  346. package/lib/shared/menu-item/menu-item.component.d.ts +0 -9
  347. package/lib/shared/pipes/simple-markdown.pipe.d.ts +0 -10
  348. package/lib/shared/snackbar/snackbar.component.d.ts +0 -14
  349. package/lib/shared/snackbar/snackbar.service.d.ts +0 -19
  350. package/public-api.d.ts +0 -11
  351. /package/{src → projects/doohbot/src}/assets/bot.mp3 +0 -0
@@ -1,103 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { delay, retry, map, catchError, of } from 'rxjs';
3
- import logger from '../utils/logger.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- import * as i2 from "../auth/storage.service";
7
- import * as i3 from "../services/core-config.service";
8
- export class HttpService {
9
- // @BlockUI() blockUI!: NgBlockUI;
10
- get apiUrl() {
11
- return this.coreConfig.apiUrl;
12
- }
13
- constructor(http, tokenStorage, coreConfig) {
14
- this.http = http;
15
- this.tokenStorage = tokenStorage;
16
- this.coreConfig = coreConfig;
17
- logger.log('HttpService: Initialized');
18
- }
19
- get(url, param, nestedParam = false, showLoader = false, refresh = true, headers) {
20
- // if (showLoader && !this.blockUI.isActive) {
21
- // this.blockUI.start();
22
- // }
23
- let params = {};
24
- if (nestedParam) {
25
- this.buildHttpParams(params, param, '');
26
- }
27
- else {
28
- params = param;
29
- }
30
- return this.http
31
- .get(`${this.apiUrl}${url}`, {
32
- params: params,
33
- // withCredentials: true,
34
- headers,
35
- })
36
- .pipe(delay(100), retry(0), map((response) => this.returnResponse(response, showLoader)), catchError((error) => {
37
- // if (this.blockUI.isActive) {
38
- // this.blockUI.stop();
39
- // }
40
- return of(error);
41
- }));
42
- }
43
- buildHttpParams(params, data, currentPath) {
44
- Object.keys(data).forEach((key) => {
45
- if (data[key] instanceof Object && !(data[key] instanceof Array)) {
46
- this.buildHttpParams(params, data[key], `${currentPath}${key}.`);
47
- }
48
- else {
49
- params[`${currentPath}${key}`] = data[key];
50
- }
51
- });
52
- }
53
- post(url, param, showLoader = false, headers) {
54
- // if (showLoader && !this.blockUI.isActive) {
55
- // this.blockUI.start();
56
- // }
57
- return this.http.post(`${this.apiUrl}${url}`, param, { headers }).pipe(delay(100), retry(0), map((response) => this.returnResponse(response, showLoader)), catchError((error) => {
58
- // if (this.blockUI.isActive) {
59
- // this.blockUI.stop();
60
- // }
61
- return of(error);
62
- }));
63
- }
64
- patch(url, param, showLoader = false, headers) {
65
- // if (showLoader && !this.blockUI.isActive) {
66
- // this.blockUI.start();
67
- // }
68
- return this.http.patch(`${this.apiUrl}${url}`, param, { headers }).pipe(delay(100), retry(0), map((response) => this.returnResponse(response, showLoader)), catchError((error) => {
69
- // if (this.blockUI.isActive) {
70
- // this.blockUI.stop();
71
- // }
72
- return of(error);
73
- }));
74
- }
75
- delete(url, param, showLoader = false, headers) {
76
- // if (showLoader && !this.blockUI.isActive) {
77
- // this.blockUI.start();
78
- // }
79
- let params = {};
80
- params = param;
81
- return this.http.delete(`${this.apiUrl}${url}`, { body: param, headers }).pipe(delay(100), retry(0), map((response) => this.returnResponse(response, showLoader)), catchError((error) => {
82
- // if (this.blockUI.isActive) {
83
- // this.blockUI.stop();
84
- // }
85
- return of(error);
86
- }));
87
- }
88
- returnResponse(value, showLoader = true) {
89
- // if (showLoader && this.blockUI.isActive) {
90
- // this.blockUI.reset();
91
- // }
92
- return value;
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.StorageService }, { token: i3.CoreConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpService, providedIn: 'root' }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HttpService, decorators: [{
98
- type: Injectable,
99
- args: [{
100
- providedIn: 'root',
101
- }]
102
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.StorageService }, { type: i3.CoreConfigService }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2NvcmUvaHR0cC9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdyRSxPQUFPLE1BQU0sTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFLN0MsTUFBTSxPQUFPLFdBQVc7SUFDdEIsb0NBQW9DO0lBRXBDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ1UsSUFBZ0IsRUFDaEIsWUFBNEIsRUFDNUIsVUFBNkI7UUFGN0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFFckMsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxHQUFHLENBQ0QsR0FBVyxFQUNYLEtBQWMsRUFDZCxXQUFXLEdBQUcsS0FBSyxFQUNuQixVQUFVLEdBQUcsS0FBSyxFQUNsQixPQUFPLEdBQUcsSUFBSSxFQUNkLE9BQXFCO1FBRXJCLDhDQUE4QztRQUU5QywwQkFBMEI7UUFFMUIsSUFBSTtRQUVKLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0wsTUFBTSxHQUFHLEtBQW1CLENBQUM7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBRTtZQUMzQixNQUFNLEVBQUUsTUFBTTtZQUNkLHlCQUF5QjtZQUN6QixPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBRVYsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUVSLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFFNUQsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsK0JBQStCO1lBRS9CLHlCQUF5QjtZQUV6QixJQUFJO1lBRUosT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBVyxFQUFFLElBQVMsRUFBRSxXQUFtQjtRQUNqRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNsRTtpQkFBTTtnQkFDTCxNQUFNLENBQUMsR0FBRyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBVyxFQUFFLEtBQWMsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQXFCO1FBQ3pFLDhDQUE4QztRQUM5QywwQkFBMEI7UUFDMUIsSUFBSTtRQUVKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLEtBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDbEYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNWLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ2pFLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLCtCQUErQjtZQUMvQix5QkFBeUI7WUFDekIsSUFBSTtZQUVKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxLQUFjLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxPQUFxQjtRQUMxRSw4Q0FBOEM7UUFDOUMsMEJBQTBCO1FBQzFCLElBQUk7UUFFSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBRSxLQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25GLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDVixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUNqRSxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQiwrQkFBK0I7WUFDL0IseUJBQXlCO1lBQ3pCLElBQUk7WUFFSixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsS0FBYyxFQUFFLFVBQVUsR0FBRyxLQUFLLEVBQUUsT0FBcUI7UUFDM0UsOENBQThDO1FBQzlDLDBCQUEwQjtRQUMxQixJQUFJO1FBQ0osSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sR0FBRyxLQUFtQixDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNWLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ2pFLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLCtCQUErQjtZQUMvQix5QkFBeUI7WUFDekIsSUFBSTtZQUVKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVUsRUFBRSxhQUFzQixJQUFJO1FBQzNELDZDQUE2QztRQUM3QywwQkFBMEI7UUFDMUIsSUFBSTtRQUNKLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0F4SVUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgcmV0cnksIG1hcCwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb3JlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuICAvLyAgIEBCbG9ja1VJKCkgYmxvY2tVSSE6IE5nQmxvY2tVSTtcclxuXHJcbiAgZ2V0IGFwaVVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29yZUNvbmZpZy5hcGlVcmw7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgdG9rZW5TdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUNvbmZpZzogQ29yZUNvbmZpZ1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBsb2dnZXIubG9nKCdIdHRwU2VydmljZTogSW5pdGlhbGl6ZWQnKTtcclxuICB9XHJcblxyXG4gIGdldChcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgcGFyYW0/OiBvYmplY3QsXHJcbiAgICBuZXN0ZWRQYXJhbSA9IGZhbHNlLFxyXG4gICAgc2hvd0xvYWRlciA9IGZhbHNlLFxyXG4gICAgcmVmcmVzaCA9IHRydWUsXHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIGlmIChzaG93TG9hZGVyICYmICF0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuXHJcbiAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdGFydCgpO1xyXG5cclxuICAgIC8vIH1cclxuXHJcbiAgICBsZXQgcGFyYW1zID0ge307XHJcblxyXG4gICAgaWYgKG5lc3RlZFBhcmFtKSB7XHJcbiAgICAgIHRoaXMuYnVpbGRIdHRwUGFyYW1zKHBhcmFtcywgcGFyYW0sICcnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtIGFzIEh0dHBQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke3RoaXMuYXBpVXJsfSR7dXJsfWAsIHtcclxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICAvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVsYXkoMTAwKSxcclxuXHJcbiAgICAgICAgcmV0cnkoMCksXHJcblxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHRoaXMucmV0dXJuUmVzcG9uc2UocmVzcG9uc2UsIHNob3dMb2FkZXIpKSxcclxuXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIC8vIGlmICh0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuXHJcbiAgICAgICAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdG9wKCk7XHJcblxyXG4gICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvZihlcnJvcik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkSHR0cFBhcmFtcyhwYXJhbXM6IGFueSwgZGF0YTogYW55LCBjdXJyZW50UGF0aDogc3RyaW5nKSB7XHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgaWYgKGRhdGFba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKGRhdGFba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICAgIHRoaXMuYnVpbGRIdHRwUGFyYW1zKHBhcmFtcywgZGF0YVtrZXldLCBgJHtjdXJyZW50UGF0aH0ke2tleX0uYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zW2Ake2N1cnJlbnRQYXRofSR7a2V5fWBdID0gZGF0YVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBvc3QodXJsOiBzdHJpbmcsIHBhcmFtPzogb2JqZWN0LCBzaG93TG9hZGVyID0gZmFsc2UsIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyBpZiAoc2hvd0xvYWRlciAmJiAhdGhpcy5ibG9ja1VJLmlzQWN0aXZlKSB7XHJcbiAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdGFydCgpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmFwaVVybH0ke3VybH1gLCBwYXJhbSBhcyBIdHRwUGFyYW1zLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgZGVsYXkoMTAwKSxcclxuICAgICAgcmV0cnkoMCksXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5yZXR1cm5SZXNwb25zZShyZXNwb25zZSwgc2hvd0xvYWRlcikpLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIGlmICh0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuICAgICAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdG9wKCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwYXRjaCh1cmw6IHN0cmluZywgcGFyYW0/OiBvYmplY3QsIHNob3dMb2FkZXIgPSBmYWxzZSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIGlmIChzaG93TG9hZGVyICYmICF0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuICAgIC8vICAgdGhpcy5ibG9ja1VJLnN0YXJ0KCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgJHt0aGlzLmFwaVVybH0ke3VybH1gLCBwYXJhbSBhcyBIdHRwUGFyYW1zLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgZGVsYXkoMTAwKSxcclxuICAgICAgcmV0cnkoMCksXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5yZXR1cm5SZXNwb25zZShyZXNwb25zZSwgc2hvd0xvYWRlcikpLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIGlmICh0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuICAgICAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdG9wKCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUodXJsOiBzdHJpbmcsIHBhcmFtPzogb2JqZWN0LCBzaG93TG9hZGVyID0gZmFsc2UsIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyBpZiAoc2hvd0xvYWRlciAmJiAhdGhpcy5ibG9ja1VJLmlzQWN0aXZlKSB7XHJcbiAgICAvLyAgIHRoaXMuYmxvY2tVSS5zdGFydCgpO1xyXG4gICAgLy8gfVxyXG4gICAgbGV0IHBhcmFtcyA9IHt9O1xyXG4gICAgcGFyYW1zID0gcGFyYW0gYXMgSHR0cFBhcmFtcztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmFwaVVybH0ke3VybH1gLCB7IGJvZHk6IHBhcmFtLCBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIGRlbGF5KDEwMCksXHJcbiAgICAgIHJldHJ5KDApLFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucmV0dXJuUmVzcG9uc2UocmVzcG9uc2UsIHNob3dMb2FkZXIpKSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAvLyBpZiAodGhpcy5ibG9ja1VJLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLmJsb2NrVUkuc3RvcCgpO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXR1cm5SZXNwb25zZSh2YWx1ZTogYW55LCBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZSk6IGFueSB7XHJcbiAgICAvLyBpZiAoc2hvd0xvYWRlciAmJiB0aGlzLmJsb2NrVUkuaXNBY3RpdmUpIHtcclxuICAgIC8vICAgdGhpcy5ibG9ja1VJLnJlc2V0KCk7XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,96 +0,0 @@
1
- import { HttpErrorResponse, } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
- import { BehaviorSubject, catchError, filter, switchMap, take, throwError } from 'rxjs';
4
- import { AuthService } from '../auth/auth.service';
5
- import logger from '../utils/logger.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../auth/storage.service";
8
- export class AuthInterceptor {
9
- constructor(tokenStorage, injector) {
10
- this.tokenStorage = tokenStorage;
11
- this.injector = injector;
12
- this.isRefreshing = false;
13
- this.clearingAuth = false; // Prevent multiple clearAuth calls
14
- this.refreshTokenSubject = new BehaviorSubject(null);
15
- }
16
- intercept(req, next) {
17
- const authReq = this.getRequestWithHeaders(req);
18
- return next.handle(authReq).pipe(catchError((error) => {
19
- // Handle 401 Unauthorized errors
20
- if (error instanceof HttpErrorResponse &&
21
- error.status === 401 &&
22
- !authReq.url.includes('auth/login') && // Don't retry login
23
- !authReq.url.includes('auth/federated/login') && // Don't retry federated login
24
- !authReq.url.includes('auth/logout') && // Don't retry logout
25
- !authReq.url.includes('auth/refresh') // Don't retry refresh itself
26
- ) {
27
- logger.error('[AuthInterceptor] 401 Unauthorized:', {
28
- url: authReq.url,
29
- userId: this.tokenStorage.get('user_id'),
30
- });
31
- return this.handle401Error(authReq, next);
32
- }
33
- return throwError(() => error);
34
- }));
35
- }
36
- handle401Error(request, next) {
37
- // If already clearing, don't retry
38
- if (this.clearingAuth) {
39
- logger.log('[AuthInterceptor] Already clearing auth, rejecting request');
40
- return throwError(() => new Error('Authentication cleared'));
41
- }
42
- if (!this.isRefreshing) {
43
- this.isRefreshing = true;
44
- this.refreshTokenSubject.next(null);
45
- const authService = this.injector.get(AuthService);
46
- return authService.refreshToken().pipe(switchMap((token) => {
47
- this.isRefreshing = false;
48
- this.refreshTokenSubject.next(token.access_token);
49
- // Retry the original request with the new token
50
- return next.handle(this.getRequestWithHeaders(request));
51
- }), catchError((err) => {
52
- this.isRefreshing = false;
53
- // Refresh failed - logout user (only once)
54
- if (!this.clearingAuth) {
55
- this.clearingAuth = true;
56
- const authService = this.injector.get(AuthService);
57
- authService.clearAuth();
58
- this.clearingAuth = false;
59
- }
60
- return throwError(() => err);
61
- }));
62
- }
63
- else {
64
- // Wait while getting new token
65
- return this.refreshTokenSubject.pipe(filter((token) => token != null), take(1), switchMap((jwt) => {
66
- // Rewrite with new token and retry
67
- return next.handle(this.getRequestWithHeaders(request));
68
- }));
69
- }
70
- }
71
- getRequestWithHeaders(req) {
72
- // Skip adding token for login/refresh/logout endpoints
73
- if (req.url.includes('auth/login') ||
74
- req.url.includes('auth/federated/login') ||
75
- req.url.includes('auth/refresh') ||
76
- req.url.includes('auth/logout')) {
77
- return req;
78
- }
79
- let headers = req.headers;
80
- // Get fresh token from new storage service
81
- const token = this.tokenStorage.get('access_token') ?? '';
82
- if (token != '') {
83
- headers = headers.set('authorization', `Bearer ${token}`);
84
- }
85
- return req.clone({ headers });
86
- }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.StorageService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
88
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthInterceptor, providedIn: 'root' }); }
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthInterceptor, decorators: [{
91
- type: Injectable,
92
- args: [{
93
- providedIn: 'root',
94
- }]
95
- }], ctorParameters: () => [{ type: i1.StorageService }, { type: i0.Injector }] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL2ludGVyY2VwdG9ycy9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsR0FLbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxNQUFNLE1BQU0seUJBQXlCLENBQUM7OztBQUs3QyxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFlBQTRCLEVBQzVCLFFBQWtCO1FBRGxCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTnBCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsbUNBQW1DO1FBQ3pELHdCQUFtQixHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUtoRixDQUFDO0lBRUosU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLGlDQUFpQztZQUNqQyxJQUNFLEtBQUssWUFBWSxpQkFBaUI7Z0JBQ2xDLEtBQUssQ0FBQyxNQUFN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QkFDaEIsbUNBQW1DO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQXFCO1FBQ3pDLHVEQUF1RDtRQUN2RCxJQUNFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztZQUN4QyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQy9CO1lBQ0EsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDMUIsMkNBQTJDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxRCxJQUFJLEtBQUssSUFBSSxFQUFFLEVBQUU7WUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOytHQW5HVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBIYW5kbGVyLFxyXG4gIEh0dHBJbnRlcmNlcHRvcixcclxuICBIdHRwUmVxdWVzdCxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBmaWx0ZXIsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFrZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIGNsZWFyaW5nQXV0aCA9IGZhbHNlOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsZWFyQXV0aCBjYWxsc1xyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b2tlblN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7fVxyXG5cclxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIGNvbnN0IGF1dGhSZXEgPSB0aGlzLmdldFJlcXVlc3RXaXRoSGVhZGVycyhyZXEpO1xyXG5cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIEhhbmRsZSA0MDEgVW5hdXRob3JpemVkIGVycm9yc1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiZcclxuICAgICAgICAgIGVycm9yLnN0YXR1cyA9PT0gNDAxICYmXHJcbiAgICAgICAgICAhYXV0aFJlcS51cmwuaW5jbHVkZXMoJ2F1dGgvbG9naW4nKSAmJiAvLyBEb24ndCByZXRyeSBsb2dpblxyXG4gICAgICAgICAgIWF1dGhSZXEudXJsLmluY2x1ZGVzKCdhdXRoL2ZlZGVyYXRlZC9sb2dpbicpICYmIC8vIERvbid0IHJldHJ5IGZlZGVyYXRlZCBsb2dpblxyXG4gICAgICAgICAgIWF1dGhSZXEudXJsLmluY2x1ZGVzKCdhdXRoL2xvZ291dCcpICYmIC8vIERvbid0IHJldHJ5IGxvZ291dFxyXG4gICAgICAgICAgIWF1dGhSZXEudXJsLmluY2x1ZGVzKCdhdXRoL3JlZnJlc2gnKSAvLyBEb24ndCByZXRyeSByZWZyZXNoIGl0c2VsZlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdbQXV0aEludGVyY2VwdG9yXSA0MDEgVW5hdXRob3JpemVkOicsIHtcclxuICAgICAgICAgICAgdXJsOiBhdXRoUmVxLnVybCxcclxuICAgICAgICAgICAgdXNlcklkOiB0aGlzLnRva2VuU3RvcmFnZS5nZXQoJ3VzZXJfaWQnKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IoYXV0aFJlcSwgbmV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGU0MDFFcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG4gICAgLy8gSWYgYWxyZWFkeSBjbGVhcmluZywgZG9uJ3QgcmV0cnlcclxuICAgIGlmICh0aGlzLmNsZWFyaW5nQXV0aCkge1xyXG4gICAgICBsb2dnZXIubG9nKCdbQXV0aEludGVyY2VwdG9yXSBBbHJlYWR5IGNsZWFyaW5nIGF1dGgsIHJlamVjdGluZyByZXF1ZXN0Jyk7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gY2xlYXJlZCcpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaXNSZWZyZXNoaW5nKSB7XHJcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XHJcblxyXG4gICAgICBjb25zdCBhdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuICAgICAgcmV0dXJuIGF1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCh0b2tlbjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4uYWNjZXNzX3Rva2VuKTtcclxuICAgICAgICAgIC8vIFJldHJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggdGhlIG5ldyB0b2tlblxyXG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuZ2V0UmVxdWVzdFdpdGhIZWFkZXJzKHJlcXVlc3QpKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyBSZWZyZXNoIGZhaWxlZCAtIGxvZ291dCB1c2VyIChvbmx5IG9uY2UpXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2xlYXJpbmdBdXRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJpbmdBdXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgICAgICAgICAgIGF1dGhTZXJ2aWNlLmNsZWFyQXV0aCgpO1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyaW5nQXV0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFdhaXQgd2hpbGUgZ2V0dGluZyBuZXcgdG9rZW5cclxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigodG9rZW4pID0+IHRva2VuICE9IG51bGwpLFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgc3dpdGNoTWFwKChqd3QpID0+IHtcclxuICAgICAgICAgIC8vIFJld3JpdGUgd2l0aCBuZXcgdG9rZW4gYW5kIHJldHJ5XHJcbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5nZXRSZXF1ZXN0V2l0aEhlYWRlcnMocmVxdWVzdCkpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVxdWVzdFdpdGhIZWFkZXJzKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgLy8gU2tpcCBhZGRpbmcgdG9rZW4gZm9yIGxvZ2luL3JlZnJlc2gvbG9nb3V0IGVuZHBvaW50c1xyXG4gICAgaWYgKFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL2xvZ2luJykgfHxcclxuICAgICAgcmVxLnVybC5pbmNsdWRlcygnYXV0aC9mZWRlcmF0ZWQvbG9naW4nKSB8fFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL3JlZnJlc2gnKSB8fFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL2xvZ291dCcpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHJlcTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xyXG4gICAgLy8gR2V0IGZyZXNoIHRva2VuIGZyb20gbmV3IHN0b3JhZ2Ugc2VydmljZVxyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuU3RvcmFnZS5nZXQoJ2FjY2Vzc190b2tlbicpID8/ICcnO1xyXG5cclxuICAgIGlmICh0b2tlbiAhPSAnJykge1xyXG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ2F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlcS5jbG9uZSh7IGhlYWRlcnMgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,44 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { AuthService } from '../auth/auth.service';
3
- import { LicenseService } from '../services/license.service';
4
- import * as i0 from "@angular/core";
5
- export class LicenseInterceptor {
6
- constructor(injector) {
7
- this.injector = injector;
8
- }
9
- intercept(req, next) {
10
- const authService = this.injector.get(AuthService);
11
- const licenseService = this.injector.get(LicenseService);
12
- // Skip if this is a login/auth request (AccountService handles it explicitly)
13
- if (req.url.includes('auth/login') ||
14
- req.url.includes('auth/federated/login') ||
15
- req.url.includes('auth/refresh') ||
16
- req.url.includes('auth/logout')) {
17
- return next.handle(req);
18
- }
19
- // Determine if this is an internal API request
20
- const apiUrl = authService.apiUrl;
21
- const isInternalApi = (apiUrl && req.url.startsWith(apiUrl)) ||
22
- (!req.url.startsWith('http') && !req.url.startsWith('assets/'));
23
- if (!isInternalApi) {
24
- return next.handle(req);
25
- }
26
- // Resolve License Key for Authenticated Request
27
- const context = authService.getLicensingContext();
28
- // Post-login, context.tenantId should be company_id
29
- const licenseKey = licenseService.resolveLicenseKey(context, '');
30
- if (licenseKey) {
31
- const clonedReq = req.clone({
32
- headers: req.headers.set('x-license-key', licenseKey),
33
- });
34
- return next.handle(clonedReq);
35
- }
36
- return next.handle(req);
37
- }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseInterceptor }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseInterceptor, decorators: [{
42
- type: Injectable
43
- }], ctorParameters: () => [{ type: i0.Injector }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL2ludGVyY2VwdG9ycy9saWNlbnNlLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUUxQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV6RCw4RUFBOEU7UUFDOUUsSUFDRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUM7WUFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUMvQjtZQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELCtDQUErQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRWxDLE1BQU0sYUFBYSxHQUNqQixDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsZ0RBQWdEO1FBQ2hELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xELG9EQUFvRDtRQUNwRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDMUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUM7YUFDdEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7K0dBekNVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGljZW5zZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saWNlbnNlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTGljZW5zZUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cclxuXHJcbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuICAgIGNvbnN0IGxpY2Vuc2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTGljZW5zZVNlcnZpY2UpO1xyXG5cclxuICAgIC8vIFNraXAgaWYgdGhpcyBpcyBhIGxvZ2luL2F1dGggcmVxdWVzdCAoQWNjb3VudFNlcnZpY2UgaGFuZGxlcyBpdCBleHBsaWNpdGx5KVxyXG4gICAgaWYgKFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL2xvZ2luJykgfHxcclxuICAgICAgcmVxLnVybC5pbmNsdWRlcygnYXV0aC9mZWRlcmF0ZWQvbG9naW4nKSB8fFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL3JlZnJlc2gnKSB8fFxyXG4gICAgICByZXEudXJsLmluY2x1ZGVzKCdhdXRoL2xvZ291dCcpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gaW50ZXJuYWwgQVBJIHJlcXVlc3RcclxuICAgIGNvbnN0IGFwaVVybCA9IGF1dGhTZXJ2aWNlLmFwaVVybDtcclxuXHJcbiAgICBjb25zdCBpc0ludGVybmFsQXBpID1cclxuICAgICAgKGFwaVVybCAmJiByZXEudXJsLnN0YXJ0c1dpdGgoYXBpVXJsKSkgfHxcclxuICAgICAgKCFyZXEudXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSAmJiAhcmVxLnVybC5zdGFydHNXaXRoKCdhc3NldHMvJykpO1xyXG5cclxuICAgIGlmICghaXNJbnRlcm5hbEFwaSkge1xyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNvbHZlIExpY2Vuc2UgS2V5IGZvciBBdXRoZW50aWNhdGVkIFJlcXVlc3RcclxuICAgIGNvbnN0IGNvbnRleHQgPSBhdXRoU2VydmljZS5nZXRMaWNlbnNpbmdDb250ZXh0KCk7XHJcbiAgICAvLyBQb3N0LWxvZ2luLCBjb250ZXh0LnRlbmFudElkIHNob3VsZCBiZSBjb21wYW55X2lkXHJcbiAgICBjb25zdCBsaWNlbnNlS2V5ID0gbGljZW5zZVNlcnZpY2UucmVzb2x2ZUxpY2Vuc2VLZXkoY29udGV4dCwgJycpO1xyXG5cclxuICAgIGlmIChsaWNlbnNlS2V5KSB7XHJcbiAgICAgIGNvbnN0IGNsb25lZFJlcSA9IHJlcS5jbG9uZSh7XHJcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCd4LWxpY2Vuc2Uta2V5JywgbGljZW5zZUtleSksXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUoY2xvbmVkUmVxKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,18 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Injection token for providing Doohbot API configuration
4
- */
5
- export const DOOHBOT_API_CONFIG = new InjectionToken('DOOHBOT_API_CONFIG', {
6
- providedIn: 'root',
7
- factory: () => ({
8
- apiUrl: '',
9
- timeout: 30000,
10
- enableApi: false,
11
- includeHistory: false,
12
- maxHistoryMessages: 10,
13
- enableRetry: true,
14
- retryAttempts: 2,
15
- retryDelay: 1000,
16
- }),
17
- });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL21vZGVscy9hcGktY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFrRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW1CLG9CQUFvQixFQUFFO0lBQzNGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsTUFBTSxFQUFFLEVBQUU7UUFDVixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGtCQUFrQixFQUFFLEVBQUU7UUFDdEIsV0FBVyxFQUFFLElBQUk7UUFDakIsYUFBYSxFQUFFLENBQUM7UUFDaEIsVUFBVSxFQUFFLElBQUk7S0FDakIsQ0FBQztDQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnByb2QnO1xyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyYXRpb24gZm9yIERvb2hib3QgQVBJIGludGVncmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERvb2hib3RBcGlDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIEJhY2tlbmQgQVBJIGVuZHBvaW50IFVSTFxyXG4gICAqIEV4YW1wbGU6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbS9jaGF0J1xyXG4gICAqL1xyXG4gIGFwaVVybDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBBUEkga2V5IGZvciBhdXRoZW50aWNhdGlvblxyXG4gICAqL1xyXG4gIGFwaUtleT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWVzdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xyXG4gICAqIEBkZWZhdWx0IDMwMDAwICgzMCBzZWNvbmRzKVxyXG4gICAqL1xyXG4gIHRpbWVvdXQ/OiBudW1iZXI7IC8vIG5vIG5lZWRcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIEFQSSBtb2RlICh0cnVlKSBvciB1c2UgbG9jYWwgaW50ZW50IG1hdGNoaW5nIChmYWxzZSlcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIGVuYWJsZUFwaT86IGJvb2xlYW47IC8vIG5vIG5lZWRcclxuXHJcbiAgLyoqXHJcbiAgICogSW5jbHVkZSBtZXNzYWdlIGhpc3RvcnkgaW4gQVBJIHJlcXVlc3RzXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBpbmNsdWRlSGlzdG9yeT86IGJvb2xlYW47IC8vIG5vIG5lZWRcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBtZXNzYWdlcyB0byBpbmNsdWRlIGluIHJlcXVlc3RzXHJcbiAgICogQGRlZmF1bHQgMTBcclxuICAgKi9cclxuICBtYXhIaXN0b3J5TWVzc2FnZXM/OiBudW1iZXI7IC8vIG5vIG5lZWRcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIGhlYWRlcnMgdG8gaW5jbHVkZSBpbiBBUEkgcmVxdWVzdHNcclxuICAgKi9cclxuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHJldHJ5IG9uIGZhaWx1cmVcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgZW5hYmxlUmV0cnk/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHNcclxuICAgKiBAZGVmYXVsdCAyXHJcbiAgICovXHJcbiAgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kc1xyXG4gICAqIEBkZWZhdWx0IDEwMDBcclxuICAgKi9cclxuICByZXRyeURlbGF5PzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogSW5qZWN0aW9uIHRva2VuIGZvciBwcm92aWRpbmcgRG9vaGJvdCBBUEkgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERPT0hCT1RfQVBJX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb29oYm90QXBpQ29uZmlnPignRE9PSEJPVF9BUElfQ09ORklHJywge1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxuICBmYWN0b3J5OiAoKSA9PiAoe1xyXG4gICAgYXBpVXJsOiAnJyxcclxuICAgIHRpbWVvdXQ6IDMwMDAwLFxyXG4gICAgZW5hYmxlQXBpOiBmYWxzZSxcclxuICAgIGluY2x1ZGVIaXN0b3J5OiBmYWxzZSxcclxuICAgIG1heEhpc3RvcnlNZXNzYWdlczogMTAsXHJcbiAgICBlbmFibGVSZXRyeTogdHJ1ZSxcclxuICAgIHJldHJ5QXR0ZW1wdHM6IDIsXHJcbiAgICByZXRyeURlbGF5OiAxMDAwLFxyXG4gIH0pLFxyXG59KTtcclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcXVlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvY29yZS9tb2RlbHMvYXBpLXJlcXVlc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb21wdE1vZGUgfSBmcm9tICcuLi90eXBlcy9wcm9tcHQtbW9kZS50eXBlJztcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4vbWVzc2FnZSc7XHJcblxyXG4vKipcclxuICogUmVxdWVzdCBwYXlsb2FkIGZvciBjaGF0IEFQSVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0QXBpUmVxdWVzdCB7XHJcbiAgLyoqXHJcbiAgICogVXNlcidzIG1lc3NhZ2UgdGV4dFxyXG4gICAqL1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvbXB0IG1vZGVcclxuICAgKi9cclxuICBwcm9tcHRfbW9kZT86IFByb21wdE1vZGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgaGlzdG9yeSBmb3IgY29udGV4dFxyXG4gICAqL1xyXG4gIGhpc3Rvcnk/OiBNZXNzYWdlW107XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIG1ldGFkYXRhXHJcbiAgICovXHJcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBUaW1lc3RhbXAgb2YgdGhlIHJlcXVlc3RcclxuICAgKi9cclxuICB0aW1lc3RhbXA/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNwb25zZSBmcm9tIGNoYXQgQVBJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXRBcGlSZXNwb25zZSB7XHJcbiAgLyoqXHJcbiAgICogQm90J3MgcmVwbHkgbWVzc2FnZVxyXG4gICAqL1xyXG4gIHJlcGx5OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGNvbmZpZGVuY2Ugc2NvcmUgKDAtMSlcclxuICAgKi9cclxuICBjb25maWRlbmNlPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHNob3cgc3VnZ2VzdGlvbiBjaGlwc1xyXG4gICAqL1xyXG4gIHNob3dTdWdnZXN0aW9ucz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIHN1Z2dlc3RlZCByZXNwb25zZXNcclxuICAgKi9cclxuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBtZXRhZGF0YSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgSUQgZnJvbSB0aGUgYmFja2VuZFxyXG4gICAqL1xyXG4gIG1lc3NhZ2VJZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEVycm9yIHJlc3BvbnNlIGZyb20gY2hhdCBBUElcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdEFwaUVycm9yIHtcclxuICAvKipcclxuICAgKiBFcnJvciBtZXNzYWdlXHJcbiAgICovXHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFcnJvciBjb2RlXHJcbiAgICovXHJcbiAgY29kZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSFRUUCBzdGF0dXMgY29kZVxyXG4gICAqL1xyXG4gIHN0YXR1c0NvZGU/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZGl0aW9uYWwgZXJyb3IgZGV0YWlsc1xyXG4gICAqL1xyXG4gIGRldGFpbHM/OiBhbnk7XHJcbn1cclxuIl19
@@ -1,8 +0,0 @@
1
- export class ApiResponse {
2
- constructor(success, message, data) {
3
- this.success = success;
4
- this.message = message;
5
- this.data = data;
6
- }
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlc3BvbnNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2NvcmUvbW9kZWxzL2FwaS1yZXNwb25zZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQU90QixZQUFZLE9BQWdCLEVBQUUsT0FBZSxFQUFFLElBQVE7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFwaVJlc3BvbnNlPFQ+IHtcclxuICBzdWNjZXNzITogYm9vbGVhbjtcclxuXHJcbiAgbWVzc2FnZSE6IHN0cmluZztcclxuXHJcbiAgZGF0YT86IFQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHN1Y2Nlc3M6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IFQpIHtcclxuICAgIHRoaXMuc3VjY2VzcyA9IHN1Y2Nlc3M7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,18 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Injection token for advanced configuration
4
- */
5
- export const DOOHBOT_ADVANCED_CONFIG = new InjectionToken('DOOHBOT_ADVANCED_CONFIG', {
6
- providedIn: 'root',
7
- factory: () => ({
8
- authMode: 'manual',
9
- tenantResolution: 'static',
10
- enableMultiTenant: false,
11
- persistChatPerTenant: true,
12
- authHeaderName: 'Authorization',
13
- authHeaderFormat: 'Bearer {token}',
14
- enableRoleBasedFeatures: false,
15
- debugMode: false,
16
- }),
17
- });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9vaGJvdC1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvY29yZS9tb2RlbHMvZG9vaGJvdC1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTBGL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLEVBQ3pCO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDZCxRQUFRLEVBQUUsUUFBUTtRQUNsQixnQkFBZ0IsRUFBRSxRQUFRO1FBQzFCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixjQUFjLEVBQUUsZUFBZTtRQUMvQixnQkFBZ0IsRUFBRSxnQkFBZ0I7UUFDbEMsdUJBQXVCLEVBQUUsS0FBSztRQUM5QixTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFDO0NBQ0gsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aE1vZGUgfSBmcm9tICcuLi90eXBlcy9hdXRoLW1vZGUudHlwZSc7XHJcbmltcG9ydCB7IFRlbmFudFJlc29sdXRpb25TdHJhdGVneSB9IGZyb20gJy4uL3R5cGVzL3RlbmFudC1yZXNvbHV0aW9uLXN0cmF0ZWd5LnR5cGUnO1xyXG5pbXBvcnQgeyBQcm9tcHRNb2RlIH0gZnJvbSAnLi4vdHlwZXMvcHJvbXB0LW1vZGUudHlwZSc7XHJcblxyXG4vKipcclxuICogQWR2YW5jZWQgY29uZmlndXJhdGlvbiBmb3IgRG9vaEJvdCBwYWNrYWdlXHJcbiAqIFN1cHBvcnRzIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHVzZSBjYXNlc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBEb29oYm90QWR2YW5jZWRDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIEF1dGhlbnRpY2F0aW9uIG1vZGVcclxuICAgKiAtICdtYW51YWwnOiBZb3UgcHJvdmlkZSBwbGF0Zm9ybVRlbmFudCwgc3ViVGVuYW50LCBhZ2VudCBtYW51YWxseVxyXG4gICAqIC0gJ2F1dG8nOiBQYWNrYWdlIHJlYWRzIGZyb20geW91ciBhdXRoIHNlcnZpY2UgdmlhIHJlc29sdmVyXHJcbiAgICogQGRlZmF1bHQgJ21hbnVhbCdcclxuICAgKi9cclxuICBhdXRoTW9kZT86IEF1dGhNb2RlO1xyXG5cclxuICAvKipcclxuICAgKiBUZW5hbnQgcmVzb2x1dGlvbiBzdHJhdGVneVxyXG4gICAqIC0gJ3N0YXRpYyc6IFVzZSBmaXhlZCB2YWx1ZXMgcHJvdmlkZWQgdmlhIGlucHV0c1xyXG4gICAqIC0gJ2R5bmFtaWMnOiBBdXRvbWF0aWNhbGx5IHVwZGF0ZSB3aGVuIGF1dGggc3RhdGUgY2hhbmdlc1xyXG4gICAqIC0gJ2NhbGxiYWNrJzogVXNlIGN1c3RvbSByZXNvbHZlciBmdW5jdGlvblxyXG4gICAqIEBkZWZhdWx0ICdzdGF0aWMnXHJcbiAgICovXHJcbiAgdGVuYW50UmVzb2x1dGlvbj86IFRlbmFudFJlc29sdXRpb25TdHJhdGVneTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXV0by1jb25maWd1cmUgZnJvbSBsb2NhbFN0b3JhZ2Uga2V5XHJcbiAgICogSWYgcHJvdmlkZWQsIHBhY2thZ2Ugd2lsbCByZWFkIGF1dGggZGF0YSBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAqIEV4YW1wbGU6ICdhdXRoX3VzZXInIG9yICdzYWFzX3Nlc3Npb24nXHJcbiAgICovXHJcbiAgYXV0b0NvbmZpZ0Zyb21TdG9yYWdlPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgbXVsdGktdGVuYW50IG1vZGVcclxuICAgKiBBbGxvd3Mgc3dpdGNoaW5nIGJldHdlZW4gZGlmZmVyZW50IHRlbmFudCBjb250ZXh0c1xyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICovXHJcbiAgZW5hYmxlTXVsdGlUZW5hbnQ/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBQZXJzaXN0IGNoYXQgaGlzdG9yeSBwZXIgdGVuYW50XHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqL1xyXG4gIHBlcnNpc3RDaGF0UGVyVGVuYW50PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIGF1dGhlbnRpY2F0aW9uIGhlYWRlciBuYW1lXHJcbiAgICogQGRlZmF1bHQgJ0F1dGhvcml6YXRpb24nXHJcbiAgICovXHJcbiAgYXV0aEhlYWRlck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBhdXRoZW50aWNhdGlvbiBoZWFkZXIgZm9ybWF0XHJcbiAgICogVXNlIHt0b2tlbn0gYXMgcGxhY2Vob2xkZXJcclxuICAgKiBAZGVmYXVsdCAnQmVhcmVyIHt0b2tlbn0nXHJcbiAgICovXHJcbiAgYXV0aEhlYWRlckZvcm1hdD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHJvbGUtYmFzZWQgZmVhdHVyZXNcclxuICAgKiBTaG93cy9oaWRlcyBmZWF0dXJlcyBiYXNlZCBvbiB1c2VyIHBlcm1pc3Npb25zXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBlbmFibGVSb2xlQmFzZWRGZWF0dXJlcz86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZXIgcGVybWlzc2lvbnMgKGZvciByb2xlLWJhc2VkIGZlYXR1cmVzKVxyXG4gICAqL1xyXG4gIHVzZXJQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xyXG5cclxuICAvKipcclxuICAgKiBDYWxsYmFjayB3aGVuIGF1dGhlbnRpY2F0aW9uIGZhaWxzXHJcbiAgICovXHJcbiAgb25BdXRoRmFpbHVyZT86IChlcnJvcjogYW55KSA9PiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgZGVidWcgbW9kZSAobG9ncyBjb25maWd1cmF0aW9uIGFuZCByZXF1ZXN0cylcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIGRlYnVnTW9kZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb21wdCBtb2RlIGZvciBjaGF0IHJlc3BvbnNlc1xyXG4gICAqIEBkZWZhdWx0ICdtYXJrZG93bidcclxuICAgKi9cclxuICBwcm9tcHRNb2RlPzogUHJvbXB0TW9kZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgYWR2YW5jZWQgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERPT0hCT1RfQURWQU5DRURfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPERvb2hib3RBZHZhbmNlZENvbmZpZz4oXHJcbiAgJ0RPT0hCT1RfQURWQU5DRURfQ09ORklHJyxcclxuICB7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbiAgICBmYWN0b3J5OiAoKSA9PiAoe1xyXG4gICAgICBhdXRoTW9kZTogJ21hbnVhbCcsXHJcbiAgICAgIHRlbmFudFJlc29sdXRpb246ICdzdGF0aWMnLFxyXG4gICAgICBlbmFibGVNdWx0aVRlbmFudDogZmFsc2UsXHJcbiAgICAgIHBlcnNpc3RDaGF0UGVyVGVuYW50OiB0cnVlLFxyXG4gICAgICBhdXRoSGVhZGVyTmFtZTogJ0F1dGhvcml6YXRpb24nLFxyXG4gICAgICBhdXRoSGVhZGVyRm9ybWF0OiAnQmVhcmVyIHt0b2tlbn0nLFxyXG4gICAgICBlbmFibGVSb2xlQmFzZWRGZWF0dXJlczogZmFsc2UsXHJcbiAgICAgIGRlYnVnTW9kZTogZmFsc2UsXHJcbiAgICB9KSxcclxuICB9LFxyXG4pO1xyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL21vZGVscy9saWNlbnNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIExpY2Vuc2luZ0NvbnRleHQge1xyXG4gICAgdGVuYW50SWQ6IHN0cmluZzsgICAgLy8gVW5pcXVlIGNvbXBhbnkvb3JnIElEXHJcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nOyAvLyBVc2VyIC8gTWVyY2hhbnQgSURcclxuICAgIHJvbGVzPzogc3RyaW5nW107ICAgIC8vIE9wdGlvbmFsIHJvbGVzL2dyb3Vwc1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpY2Vuc2VQYWNrYWdlIHtcclxuICAgIFtwYWNrYWdlSWQ6IHN0cmluZ106IHN0cmluZzsgLy8gcGFja2FnZUlkIC0+IGxpY2Vuc2VLZXlcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdWJqZWN0TGljZW5zZSB7XHJcbiAgICBzdWJqZWN0VHlwZTogJ3VzZXInIHwgJ3JvbGUnIHwgJ3RlbmFudCc7XHJcbiAgICBzdWJqZWN0SWQ6IHN0cmluZztcclxuICAgIHBhY2thZ2VzOiBMaWNlbnNlUGFja2FnZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaWNlbnNlRmlsZUNvbnRlbnQge1xyXG4gICAgYWNjb3VudElkOiBzdHJpbmc7XHJcbiAgICBpc3N1ZWRCeTogc3RyaW5nO1xyXG4gICAgaXNzdWVkQXQ6IHN0cmluZztcclxuICAgIGxpY2Vuc2VzOiBTdWJqZWN0TGljZW5zZVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpY2Vuc2VSZWdpc3RyeSB7XHJcbiAgICBhY2NvdW50SWQ6IHN0cmluZztcclxuICAgIHN1YmplY3RMaWNlbnNlczogTWFwPHN0cmluZywgTGljZW5zZVBhY2thZ2U+O1xyXG59XHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL21vZGVscy9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlUm9sZSB9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2Utcm9sZS50eXBlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZW5kZXI6IE1lc3NhZ2VSb2xlO1xyXG4gIHNlbmRlck5hbWU/OiBzdHJpbmc7XHJcbiAgdGV4dDogc3RyaW5nOyAvLyEgdXNlZCBmb3Igbm9uLXN0cmVhbWluZ1xyXG4gIGNodW5rcz86IHN0cmluZ1tdOyAvLyEgdXNlZCBmb3Igc3RyZWFtaW5nXHJcbiAgdGltZXN0YW1wPzogRGF0ZTtcclxuICBzaG93U3VnZ2VzdGlvbnM/OiBib29sZWFuO1xyXG4gIC8vIE9wdGlvbmFsIGNvbnRleHQgZmllbGRzIGZvciBBUEkgaW50ZWdyYXRpb25cclxuICBwbGF0Zm9ybVRlbmFudD86IHN0cmluZztcclxuICBzdWJUZW5hbnQ/OiBzdHJpbmc7XHJcbiAgYWdlbnQ/OiBzdHJpbmc7XHJcbiAgY29tcGxldGVkOiBib29sZWFuIHwgdHJ1ZTtcclxuICBpc0hpc3Rvcnk6IGJvb2xlYW4gfCB0cnVlOyAvLyEgSW5kaWNhdGVkIHRoZSBtZXNzYWdlIGlzIGZyb20gaGlzdG9yeVxyXG4gIGNvcGllZD86IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2NvcmUvbW9kZWxzL3RoZW1lLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ET1xyXG5leHBvcnQgaW50ZXJmYWNlIERvb2hib3RUaGVtZUNvbmZpZyB7XHJcbiAgLy8gRm9udFxyXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmc7XHJcblxyXG4gIC8vIFByaW1hcnkgJiBTZWNvbmRhcnlcclxuICBwcmltYXJ5Q29sb3I/OiBzdHJpbmc7XHJcbiAgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XHJcblxyXG4gIC8vIEJhY2tncm91bmRzXHJcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xyXG4gIGNoYXRJbnB1dENvbG9yPzogc3RyaW5nO1xyXG5cclxuICAvLyBUZXh0IENvbG9yc1xyXG4gIHRleHRBbHRDb2xvcj86IHN0cmluZztcclxuICB0ZXh0Q29sb3I/OiBzdHJpbmc7XHJcbiAgc2Vjb25kYXJ5VGV4dENvbG9yPzogc3RyaW5nO1xyXG4gIGhpbnRUZXh0Q29sb3I/OiBzdHJpbmc7XHJcblxyXG4gIC8vIEJ1dHRvbiBDb2xvcnNcclxuICBidXR0b25Db2xvcj86IHN0cmluZztcclxuXHJcbiAgLy8gTWVzc2FnZSBDb2xvcnNcclxuICB1c2VyTWVzc2FnZUNvbG9yPzogc3RyaW5nO1xyXG4gIGJvdE1lc3NhZ2VDb2xvcj86IHN0cmluZztcclxuXHJcbiAgLy8gTWVzc2FnZSBUZXh0IENvbG9yc1xyXG4gIHVzZXJUZXh0Q29sb3I/OiBzdHJpbmc7XHJcbiAgYm90VGV4dENvbG9yPzogc3RyaW5nO1xyXG5cclxuICAvLyBCb3JkZXJzXHJcbiAgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XHJcbiAgYm9yZGVyU2hhZG93Q29sb3I/OiBzdHJpbmc7XHJcbiAgYm9yZGVyVG9wQ29sb3I/OiBzdHJpbmc7XHJcblxyXG4gIC8vIEluZGljYXRvcnNcclxuICB0eXBpbmdJbmRpY2F0b3JDb2xvcj86IHN0cmluZztcclxuXHJcbiAgLy8gVXRpbGl0eSBDb2xvcnNcclxuICB3aGl0ZT86IHN0cmluZztcclxuICBibGFjaz86IHN0cmluZztcclxuICBncmV5Pzogc3RyaW5nO1xyXG4gIHJlZD86IHN0cmluZztcclxuICB5ZWxsb3c/OiBzdHJpbmc7XHJcbiAgb3JhbmdlPzogc3RyaW5nO1xyXG4gIGdyZWVuPzogc3RyaW5nO1xyXG4gIGJsdWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -1,52 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import { DoohbotInput } from '../../doohbot-input';
3
- import * as i0 from "@angular/core";
4
- export class CoreConfigService {
5
- constructor() {
6
- this.configSignal = signal(new DoohbotInput());
7
- this.config$ = this.configSignal.asReadonly();
8
- }
9
- /**
10
- * Updates the global library configuration
11
- */
12
- updateConfig(config) {
13
- this.configSignal.set(config);
14
- }
15
- /**
16
- * Dynamic getters for common config properties
17
- */
18
- get apiUrl() {
19
- const config = this.configSignal();
20
- return `${config.apiBaseUrl}${config.apiSegment}`;
21
- }
22
- get storageKey() {
23
- return this.configSignal().storageKey || '';
24
- }
25
- get secretKey() {
26
- return this.configSignal().secretKey || '';
27
- }
28
- get companyCode() {
29
- return this.configSignal().companyCode || '';
30
- }
31
- get tenancyName() {
32
- return this.configSignal().tenancyName || '';
33
- }
34
- get licenseKey() {
35
- return this.configSignal().licenseKey || '';
36
- }
37
- get licenseFilePath() {
38
- return this.configSignal().licenseFilePath || '';
39
- }
40
- get rememberMe() {
41
- return this.configSignal().rememberMe !== undefined ? this.configSignal().rememberMe : false;
42
- }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoreConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
44
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoreConfigService, providedIn: 'root' }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoreConfigService, decorators: [{
47
- type: Injectable,
48
- args: [{
49
- providedIn: 'root',
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rvb2hib3Qvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NvcmUtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLGlCQUFZLEdBQWlDLE1BQU0sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDekUsWUFBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7S0E0Q2pEO0lBMUNDOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQW9CO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEcsQ0FBQzsrR0E3Q1UsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9vaGJvdElucHV0IH0gZnJvbSAnLi4vLi4vZG9vaGJvdC1pbnB1dCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUNvbmZpZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgY29uZmlnU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxEb29oYm90SW5wdXQ+ID0gc2lnbmFsKG5ldyBEb29oYm90SW5wdXQoKSk7XHJcbiAgcHVibGljIGNvbmZpZyQgPSB0aGlzLmNvbmZpZ1NpZ25hbC5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGdsb2JhbCBsaWJyYXJ5IGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICB1cGRhdGVDb25maWcoY29uZmlnOiBEb29oYm90SW5wdXQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnU2lnbmFsLnNldChjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRHluYW1pYyBnZXR0ZXJzIGZvciBjb21tb24gY29uZmlnIHByb3BlcnRpZXNcclxuICAgKi9cclxuICBnZXQgYXBpVXJsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xyXG4gICAgcmV0dXJuIGAke2NvbmZpZy5hcGlCYXNlVXJsfSR7Y29uZmlnLmFwaVNlZ21lbnR9YDtcclxuICB9XHJcblxyXG4gIGdldCBzdG9yYWdlS2V5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTaWduYWwoKS5zdG9yYWdlS2V5IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlY3JldEtleSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2lnbmFsKCkuc2VjcmV0S2V5IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbXBhbnlDb2RlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTaWduYWwoKS5jb21wYW55Q29kZSB8fCAnJztcclxuICB9XHJcblxyXG4gIGdldCB0ZW5hbmN5TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2lnbmFsKCkudGVuYW5jeU5hbWUgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgbGljZW5zZUtleSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2lnbmFsKCkubGljZW5zZUtleSB8fCAnJztcclxuICB9XHJcblxyXG4gIGdldCBsaWNlbnNlRmlsZVBhdGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NpZ25hbCgpLmxpY2Vuc2VGaWxlUGF0aCB8fCAnJztcclxuICB9XHJcblxyXG4gIGdldCByZW1lbWJlck1lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2lnbmFsKCkucmVtZW1iZXJNZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWdTaWduYWwoKS5yZW1lbWJlck1lISA6IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,145 +0,0 @@
1
- import { inject, Injectable, signal } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { firstValueFrom } from 'rxjs';
4
- import logger from '../utils/logger.service';
5
- import { CoreConfigService } from './core-config.service';
6
- import * as i0 from "@angular/core";
7
- export class LicenseService {
8
- constructor() {
9
- this.http = inject(HttpClient);
10
- this.coreConfig = inject(CoreConfigService);
11
- this.registry = signal(null);
12
- }
13
- /**
14
- * Load the license configuration from a JSON file.
15
- * Supports both Hierarchical (entitlements) and Flat-map (package:key) formats.
16
- * @param filePath Path to the license JSON file
17
- */
18
- async loadLicenseFile(filePath) {
19
- try {
20
- const finalPath = filePath || this.coreConfig.licenseFilePath;
21
- const data = await firstValueFrom(this.http.get(finalPath));
22
- if (!data) {
23
- throw new Error('Empty license file');
24
- }
25
- // Detection: Hierarchical Format (subjectId/licenses array)
26
- if (data.licenses && Array.isArray(data.licenses)) {
27
- this.processHierarchicalLicense(data);
28
- }
29
- // Detection: Flat Map Format (packageId: key)
30
- else {
31
- this.processFlatMapLicense(data);
32
- }
33
- }
34
- catch (error) {
35
- // Industry pattern: Silent loading for optional registry files
36
- logger.log('[LicenseService] No external license file found or failed to load. Falling back to AppConst.');
37
- this.registry.set(null);
38
- }
39
- }
40
- processHierarchicalLicense(data) {
41
- const subjectMap = new Map();
42
- data.licenses.forEach((license) => {
43
- const key = `${license.subjectType}:${license.subjectId}`;
44
- subjectMap.set(key, license.packages);
45
- });
46
- this.registry.set({
47
- accountId: data.accountId,
48
- subjectLicenses: subjectMap,
49
- });
50
- logger.log(`[LicenseService] Hierarchical Registry loaded for account: ${data.accountId}`);
51
- }
52
- processFlatMapLicense(data) {
53
- // Flat-map format: { "tenantName": "license_key" }
54
- // Convert each entry to: tenant:tenantName -> { doohbot: license_key }
55
- const subjectMap = new Map();
56
- Object.entries(data).forEach(([tenantName, licenseKey]) => {
57
- const tenantKey = `tenant:${tenantName}`;
58
- subjectMap.set(tenantKey, {
59
- doohbot: licenseKey,
60
- });
61
- });
62
- this.registry.set({
63
- accountId: 'FLAT_MAP_REGISTRY',
64
- subjectLicenses: subjectMap,
65
- });
66
- logger.log(`[LicenseService] Flat-map registry loaded with ${subjectMap.size} tenant(s)`);
67
- }
68
- /**
69
- * Resolve the correct license key based on context and requested package
70
- * @param context The current licensing context (tenant, user, roles)
71
- * @param packageId The ID of the package requesting a license
72
- * @returns The resolved license key, or null if unauthorized
73
- */
74
- resolveLicenseKey(context, packageId) {
75
- // Hierarchical Registry (Most Specific)
76
- const keyFromRegistry = this.resolveFromRegistry(context, packageId);
77
- if (keyFromRegistry)
78
- return keyFromRegistry;
79
- logger.warn(`[LicenseService] No license found for package: ${packageId} and user: ${context.principalId}`);
80
- return null;
81
- }
82
- resolveFromRegistry(context, packageId) {
83
- const reg = this.registry();
84
- if (!reg)
85
- return null;
86
- // Strict Account Check
87
- if (reg.accountId !== 'EXTERNAL_OVERRIDE' && reg.accountId !== context.tenantId) {
88
- logger.error(`[LicenseService] Account mismatch! Registry: ${reg.accountId}, Context: ${context.tenantId}`);
89
- return null;
90
- }
91
- const subjectsToSearch = [
92
- `user:${context.principalId}`,
93
- ...(context.roles?.map((r) => `role:${r}`) || []),
94
- `tenant:${context.tenantId}`,
95
- 'tenant:default', // Fallback for flat-map external files
96
- ];
97
- for (const subjectKey of subjectsToSearch) {
98
- const packages = reg.subjectLicenses.get(subjectKey);
99
- if (packages && packages[packageId]) {
100
- logger.debug(`[LicenseService] Resolved key for ${packageId} via Registry (${subjectKey})`);
101
- return packages[packageId];
102
- }
103
- }
104
- return null;
105
- }
106
- /**
107
- * Resolves the license key for the current tenant.
108
- */
109
- resolveTenantLicenseKey(tenancyName) {
110
- const activeTenancy = tenancyName || this.coreConfig.tenancyName;
111
- if (!activeTenancy) {
112
- logger.warn('[LicenseService] No tenancy name found.');
113
- return null;
114
- }
115
- const reg = this.registry();
116
- if (!reg) {
117
- logger.error('[LicenseService] License registry not loaded.');
118
- return null;
119
- }
120
- const tenantLicenses = reg.subjectLicenses.get(`tenant:${activeTenancy}`);
121
- const licenseKey = tenantLicenses?.['doohbot'] || null;
122
- if (licenseKey) {
123
- logger.info(`[LicenseService] Resolved Doohbot license for: ${activeTenancy}`);
124
- }
125
- else {
126
- logger.warn(`[LicenseService] No license key found for tenant: ${activeTenancy}`);
127
- }
128
- return licenseKey;
129
- }
130
- /**
131
- * Check if a registry is currently loaded
132
- */
133
- isRegistryLoaded() {
134
- return this.registry() !== null;
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
137
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseService, providedIn: 'root' }); }
138
- }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LicenseService, decorators: [{
140
- type: Injectable,
141
- args: [{
142
- providedIn: 'root',
143
- }]
144
- }] });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2NvcmUvc2VydmljZXMvbGljZW5zZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU90QyxPQUFPLE1BQU0sTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLGNBQWM7SUFIM0I7UUFJVSxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQUcsTUFBTSxDQUF5QixJQUFJLENBQUMsQ0FBQztLQXdKekQ7SUF0SkM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBaUI7UUFDckMsSUFBSTtZQUNGLE1BQU0sU0FBUyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztZQUU5RCxNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRWpFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsNERBQTREO1lBQzVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FB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R0FBRyxDQUFDLFVBQVUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLFVBQVUsR0FBRyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFdkQsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ2hGO2FBQU07WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQ2xDLENBQUM7K0dBMUpVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBMaWNlbnNlRmlsZUNvbnRlbnQsXHJcbiAgTGljZW5zZVJlZ2lzdHJ5LFxyXG4gIExpY2Vuc2luZ0NvbnRleHQsXHJcbiAgTGljZW5zZVBhY2thZ2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2xpY2Vuc2UubW9kZWwnO1xyXG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL3V0aWxzL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvcmUtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpY2Vuc2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgcHJpdmF0ZSBjb3JlQ29uZmlnID0gaW5qZWN0KENvcmVDb25maWdTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlZ2lzdHJ5ID0gc2lnbmFsPExpY2Vuc2VSZWdpc3RyeSB8IG51bGw+KG51bGwpO1xyXG5cclxuICAvKipcclxuICAgKiBMb2FkIHRoZSBsaWNlbnNlIGNvbmZpZ3VyYXRpb24gZnJvbSBhIEpTT04gZmlsZS5cclxuICAgKiBTdXBwb3J0cyBib3RoIEhpZXJhcmNoaWNhbCAoZW50aXRsZW1lbnRzKSBhbmQgRmxhdC1tYXAgKHBhY2thZ2U6a2V5KSBmb3JtYXRzLlxyXG4gICAqIEBwYXJhbSBmaWxlUGF0aCBQYXRoIHRvIHRoZSBsaWNlbnNlIEpTT04gZmlsZVxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWRMaWNlbnNlRmlsZShmaWxlUGF0aD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZmluYWxQYXRoID0gZmlsZVBhdGggfHwgdGhpcy5jb3JlQ29uZmlnLmxpY2Vuc2VGaWxlUGF0aDtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PGFueT4oZmluYWxQYXRoKSk7XHJcblxyXG4gICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGxpY2Vuc2UgZmlsZScpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBEZXRlY3Rpb246IEhpZXJhcmNoaWNhbCBGb3JtYXQgKHN1YmplY3RJZC9saWNlbnNlcyBhcnJheSlcclxuICAgICAgaWYgKGRhdGEubGljZW5zZXMgJiYgQXJyYXkuaXNBcnJheShkYXRhLmxpY2Vuc2VzKSkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0hpZXJhcmNoaWNhbExpY2Vuc2UoZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gRGV0ZWN0aW9uOiBGbGF0IE1hcCBGb3JtYXQgKHBhY2thZ2VJZDoga2V5KVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NGbGF0TWFwTGljZW5zZShkYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gSW5kdXN0cnkgcGF0dGVybjogU2lsZW50IGxvYWRpbmcgZm9yIG9wdGlvbmFsIHJlZ2lzdHJ5IGZpbGVzXHJcbiAgICAgIGxvZ2dlci5sb2coXHJcbiAgICAgICAgJ1tMaWNlbnNlU2VydmljZV0gTm8gZXh0ZXJuYWwgbGljZW5zZSBmaWxlIGZvdW5kIG9yIGZhaWxlZCB0byBsb2FkLiBGYWxsaW5nIGJhY2sgdG8gQXBwQ29uc3QuJyxcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yZWdpc3RyeS5zZXQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NIaWVyYXJjaGljYWxMaWNlbnNlKGRhdGE6IExpY2Vuc2VGaWxlQ29udGVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3ViamVjdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBMaWNlbnNlUGFja2FnZT4oKTtcclxuXHJcbiAgICBkYXRhLmxpY2Vuc2VzLmZvckVhY2goKGxpY2Vuc2UpID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gYCR7bGljZW5zZS5zdWJqZWN0VHlwZX06JHtsaWNlbnNlLnN1YmplY3RJZH1gO1xyXG4gICAgICBzdWJqZWN0TWFwLnNldChrZXksIGxpY2Vuc2UucGFja2FnZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3RyeS5zZXQoe1xyXG4gICAgICBhY2NvdW50SWQ6IGRhdGEuYWNjb3VudElkLFxyXG4gICAgICBzdWJqZWN0TGljZW5zZXM6IHN1YmplY3RNYXAsXHJcbiAgICB9KTtcclxuXHJcbiAgICBsb2dnZXIubG9nKGBbTGljZW5zZVNlcnZpY2VdIEhpZXJhcmNoaWNhbCBSZWdpc3RyeSBsb2FkZWQgZm9yIGFjY291bnQ6ICR7ZGF0YS5hY2NvdW50SWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGbGF0TWFwTGljZW5zZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XHJcbiAgICAvLyBGbGF0LW1hcCBmb3JtYXQ6IHsgXCJ0ZW5hbnROYW1lXCI6IFwibGljZW5zZV9rZXlcIiB9XHJcbiAgICAvLyBDb252ZXJ0IGVhY2ggZW50cnkgdG86IHRlbmFudDp0ZW5hbnROYW1lIC0+IHsgZG9vaGJvdDogbGljZW5zZV9rZXkgfVxyXG5cclxuICAgIGNvbnN0IHN1YmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgTGljZW5zZVBhY2thZ2U+KCk7XHJcblxyXG4gICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZm9yRWFjaCgoW3RlbmFudE5hbWUsIGxpY2Vuc2VLZXldKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRlbmFudEtleSA9IGB0ZW5hbnQ6JHt0ZW5hbnROYW1lfWA7XHJcbiAgICAgIHN1YmplY3RNYXAuc2V0KHRlbmFudEtleSwge1xyXG4gICAgICAgIGRvb2hib3Q6IGxpY2Vuc2VLZXksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3RyeS5zZXQoe1xyXG4gICAgICBhY2NvdW50SWQ6ICdGTEFUX01BUF9SRUdJU1RSWScsXHJcbiAgICAgIHN1YmplY3RMaWNlbnNlczogc3ViamVjdE1hcCxcclxuICAgIH0pO1xyXG5cclxuICAgIGxvZ2dlci5sb2coYFtMaWNlbnNlU2VydmljZV0gRmxhdC1tYXAgcmVnaXN0cnkgbG9hZGVkIHdpdGggJHtzdWJqZWN0TWFwLnNpemV9IHRlbmFudChzKWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZSB0aGUgY29ycmVjdCBsaWNlbnNlIGtleSBiYXNlZCBvbiBjb250ZXh0IGFuZCByZXF1ZXN0ZWQgcGFja2FnZVxyXG4gICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjdXJyZW50IGxpY2Vuc2luZyBjb250ZXh0ICh0ZW5hbnQsIHVzZXIsIHJvbGVzKVxyXG4gICAqIEBwYXJhbSBwYWNrYWdlSWQgVGhlIElEIG9mIHRoZSBwYWNrYWdlIHJlcXVlc3RpbmcgYSBsaWNlbnNlXHJcbiAgICogQHJldHVybnMgVGhlIHJlc29sdmVkIGxpY2Vuc2Uga2V5LCBvciBudWxsIGlmIHVuYXV0aG9yaXplZFxyXG4gICAqL1xyXG4gIHJlc29sdmVMaWNlbnNlS2V5KGNvbnRleHQ6IExpY2Vuc2luZ0NvbnRleHQsIHBhY2thZ2VJZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAvLyAgIEhpZXJhcmNoaWNhbCBSZWdpc3RyeSAoTW9zdCBTcGVjaWZpYylcclxuICAgIGNvbnN0IGtleUZyb21SZWdpc3RyeSA9IHRoaXMucmVzb2x2ZUZyb21SZWdpc3RyeShjb250ZXh0LCBwYWNrYWdlSWQpO1xyXG4gICAgaWYgKGtleUZyb21SZWdpc3RyeSkgcmV0dXJuIGtleUZyb21SZWdpc3RyeTtcclxuXHJcbiAgICBsb2dnZXIud2FybihcclxuICAgICAgYFtMaWNlbnNlU2VydmljZV0gTm8gbGljZW5zZSBmb3VuZCBmb3IgcGFja2FnZTogJHtwYWNrYWdlSWR9IGFuZCB1c2VyOiAke2NvbnRleHQucHJpbmNpcGFsSWR9YCxcclxuICAgICk7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUZyb21SZWdpc3RyeShjb250ZXh0OiBMaWNlbnNpbmdDb250ZXh0LCBwYWNrYWdlSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgcmVnID0gdGhpcy5yZWdpc3RyeSgpO1xyXG4gICAgaWYgKCFyZWcpIHJldHVybiBudWxsO1xyXG5cclxuICAgIC8vIFN0cmljdCBBY2NvdW50IENoZWNrXHJcbiAgICBpZiAocmVnLmFjY291bnRJZCAhPT0gJ0VYVEVSTkFMX09WRVJSSURFJyAmJiByZWcuYWNjb3VudElkICE9PSBjb250ZXh0LnRlbmFudElkKSB7XHJcbiAgICAgIGxvZ2dlci5lcnJvcihcclxuICAgICAgICBgW0xpY2Vuc2VTZXJ2aWNlXSBBY2NvdW50IG1pc21hdGNoISBSZWdpc3RyeTogJHtyZWcuYWNjb3VudElkfSwgQ29udGV4dDogJHtjb250ZXh0LnRlbmFudElkfWAsXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN1YmplY3RzVG9TZWFyY2ggPSBbXHJcbiAgICAgIGB1c2VyOiR7Y29udGV4dC5wcmluY2lwYWxJZH1gLFxyXG4gICAgICAuLi4oY29udGV4dC5yb2xlcz8ubWFwKChyKSA9PiBgcm9sZToke3J9YCkgfHwgW10pLFxyXG4gICAgICBgdGVuYW50OiR7Y29udGV4dC50ZW5hbnRJZH1gLFxyXG4gICAgICAndGVuYW50OmRlZmF1bHQnLCAvLyBGYWxsYmFjayBmb3IgZmxhdC1tYXAgZXh0ZXJuYWwgZmlsZXNcclxuICAgIF07XHJcblxyXG4gICAgZm9yIChjb25zdCBzdWJqZWN0S2V5IG9mIHN1YmplY3RzVG9TZWFyY2gpIHtcclxuICAgICAgY29uc3QgcGFja2FnZXMgPSByZWcuc3ViamVjdExpY2Vuc2VzLmdldChzdWJqZWN0S2V5KTtcclxuICAgICAgaWYgKHBhY2thZ2VzICYmIHBhY2thZ2VzW3BhY2thZ2VJZF0pIHtcclxuICAgICAgICBsb2dnZXIuZGVidWcoYFtMaWNlbnNlU2VydmljZV0gUmVzb2x2ZWQga2V5IGZvciAke3BhY2thZ2VJZH0gdmlhIFJlZ2lzdHJ5ICgke3N1YmplY3RLZXl9KWApO1xyXG4gICAgICAgIHJldHVybiBwYWNrYWdlc1twYWNrYWdlSWRdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIHRoZSBsaWNlbnNlIGtleSBmb3IgdGhlIGN1cnJlbnQgdGVuYW50LlxyXG4gICAqL1xyXG4gIHJlc29sdmVUZW5hbnRMaWNlbnNlS2V5KHRlbmFuY3lOYW1lPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCBhY3RpdmVUZW5hbmN5ID0gdGVuYW5jeU5hbWUgfHwgdGhpcy5jb3JlQ29uZmlnLnRlbmFuY3lOYW1lO1xyXG5cclxuICAgIGlmICghYWN0aXZlVGVuYW5jeSkge1xyXG4gICAgICBsb2dnZXIud2FybignW0xpY2Vuc2VTZXJ2aWNlXSBObyB0ZW5hbmN5IG5hbWUgZm91bmQuJyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlZyA9IHRoaXMucmVnaXN0cnkoKTtcclxuICAgIGlmICghcmVnKSB7XHJcbiAgICAgIGxvZ2dlci5lcnJvcignW0xpY2Vuc2VTZXJ2aWNlXSBMaWNlbnNlIHJlZ2lzdHJ5IG5vdCBsb2FkZWQuJyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRlbmFudExpY2Vuc2VzID0gcmVnLnN1YmplY3RMaWNlbnNlcy5nZXQoYHRlbmFudDoke2FjdGl2ZVRlbmFuY3l9YCk7XHJcbiAgICBjb25zdCBsaWNlbnNlS2V5ID0gdGVuYW50TGljZW5zZXM/LlsnZG9vaGJvdCddIHx8IG51bGw7XHJcblxyXG4gICAgaWYgKGxpY2Vuc2VLZXkpIHtcclxuICAgICAgbG9nZ2VyLmluZm8oYFtMaWNlbnNlU2VydmljZV0gUmVzb2x2ZWQgRG9vaGJvdCBsaWNlbnNlIGZvcjogJHthY3RpdmVUZW5hbmN5fWApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9nZ2VyLndhcm4oYFtMaWNlbnNlU2VydmljZV0gTm8gbGljZW5zZSBrZXkgZm91bmQgZm9yIHRlbmFudDogJHthY3RpdmVUZW5hbmN5fWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsaWNlbnNlS2V5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSByZWdpc3RyeSBpcyBjdXJyZW50bHkgbG9hZGVkXHJcbiAgICovXHJcbiAgaXNSZWdpc3RyeUxvYWRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5KCkgIT09IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==