@lenne.tech/ng-base 18.1.3 → 22.0.0

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 (416) hide show
  1. package/CLAUDE.md +55 -0
  2. package/LICENSE +2 -2
  3. package/README.md +237 -44
  4. package/fesm2022/lenne.tech-ng-base-ai.mjs +767 -0
  5. package/fesm2022/lenne.tech-ng-base-ai.mjs.map +1 -0
  6. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs +939 -0
  7. package/fesm2022/lenne.tech-ng-base-auth-provide.mjs.map +1 -0
  8. package/fesm2022/lenne.tech-ng-base-auth.mjs +454 -0
  9. package/fesm2022/lenne.tech-ng-base-auth.mjs.map +1 -0
  10. package/fesm2022/lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs +825 -0
  11. package/fesm2022/lenne.tech-ng-base-bug-bug-report-dialog-BRzVmKJr.mjs.map +1 -0
  12. package/fesm2022/lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs +351 -0
  13. package/fesm2022/lenne.tech-ng-base-bug-bug-report-service-DWoTb_iw.mjs.map +1 -0
  14. package/fesm2022/lenne.tech-ng-base-bug-capture-engine-TkjMDdqj.mjs +1046 -0
  15. package/fesm2022/lenne.tech-ng-base-bug-capture-engine-TkjMDdqj.mjs.map +1 -0
  16. package/fesm2022/lenne.tech-ng-base-bug-constants-Brm2KGHi.mjs +4 -0
  17. package/fesm2022/lenne.tech-ng-base-bug-constants-Brm2KGHi.mjs.map +1 -0
  18. package/fesm2022/lenne.tech-ng-base-bug-messages-BsP4fRQU.mjs +179 -0
  19. package/fesm2022/lenne.tech-ng-base-bug-messages-BsP4fRQU.mjs.map +1 -0
  20. package/fesm2022/lenne.tech-ng-base-bug-provide.mjs +26 -0
  21. package/fesm2022/lenne.tech-ng-base-bug-provide.mjs.map +1 -0
  22. package/fesm2022/lenne.tech-ng-base-bug-report-Tzlhe1Cm.mjs +62 -0
  23. package/fesm2022/lenne.tech-ng-base-bug-report-Tzlhe1Cm.mjs.map +1 -0
  24. package/fesm2022/lenne.tech-ng-base-bug-server.mjs +818 -0
  25. package/fesm2022/lenne.tech-ng-base-bug-server.mjs.map +1 -0
  26. package/fesm2022/lenne.tech-ng-base-bug.mjs +196 -0
  27. package/fesm2022/lenne.tech-ng-base-bug.mjs.map +1 -0
  28. package/fesm2022/lenne.tech-ng-base-files-ui.mjs +445 -0
  29. package/fesm2022/lenne.tech-ng-base-files-ui.mjs.map +1 -0
  30. package/fesm2022/lenne.tech-ng-base-files.mjs +474 -0
  31. package/fesm2022/lenne.tech-ng-base-files.mjs.map +1 -0
  32. package/fesm2022/lenne.tech-ng-base-server.mjs +408 -0
  33. package/fesm2022/lenne.tech-ng-base-server.mjs.map +1 -0
  34. package/fesm2022/lenne.tech-ng-base-share.mjs +76 -0
  35. package/fesm2022/lenne.tech-ng-base-share.mjs.map +1 -0
  36. package/fesm2022/lenne.tech-ng-base-sync.mjs +1096 -0
  37. package/fesm2022/lenne.tech-ng-base-sync.mjs.map +1 -0
  38. package/fesm2022/lenne.tech-ng-base-testing.mjs +171 -0
  39. package/fesm2022/lenne.tech-ng-base-testing.mjs.map +1 -0
  40. package/fesm2022/lenne.tech-ng-base-ui-provide.mjs +124 -0
  41. package/fesm2022/lenne.tech-ng-base-ui-provide.mjs.map +1 -0
  42. package/fesm2022/lenne.tech-ng-base-ui.mjs +34611 -0
  43. package/fesm2022/lenne.tech-ng-base-ui.mjs.map +1 -0
  44. package/fesm2022/lenne.tech-ng-base-utils.mjs +287 -0
  45. package/fesm2022/lenne.tech-ng-base-utils.mjs.map +1 -0
  46. package/fesm2022/lenne.tech-ng-base.mjs +615 -910
  47. package/fesm2022/lenne.tech-ng-base.mjs.map +1 -1
  48. package/i18n/auth/de.json +17 -0
  49. package/i18n/auth/en.json +17 -0
  50. package/i18n/bug/de.json +85 -0
  51. package/i18n/bug/en.json +85 -0
  52. package/i18n/de.json +8 -0
  53. package/i18n/en.json +8 -0
  54. package/i18n/files/de.json +27 -0
  55. package/i18n/files/en.json +27 -0
  56. package/i18n/share/de.json +8 -0
  57. package/i18n/share/en.json +8 -0
  58. package/i18n/ui/de.json +38 -0
  59. package/i18n/ui/en.json +38 -0
  60. package/package.json +127 -58
  61. package/types/lenne.tech-ng-base-ai.d.ts +830 -0
  62. package/types/lenne.tech-ng-base-auth-provide.d.ts +603 -0
  63. package/types/lenne.tech-ng-base-auth.d.ts +320 -0
  64. package/types/lenne.tech-ng-base-bug-provide.d.ts +272 -0
  65. package/types/lenne.tech-ng-base-bug-rolldown-runtime-C25Le4-w.d.ts +1 -0
  66. package/types/lenne.tech-ng-base-bug-server.d.ts +316 -0
  67. package/types/lenne.tech-ng-base-bug.d.ts +202 -0
  68. package/types/lenne.tech-ng-base-files-ui.d.ts +116 -0
  69. package/types/lenne.tech-ng-base-files.d.ts +288 -0
  70. package/types/lenne.tech-ng-base-server.d.ts +262 -0
  71. package/types/lenne.tech-ng-base-share.d.ts +21 -0
  72. package/types/lenne.tech-ng-base-sync.d.ts +380 -0
  73. package/types/lenne.tech-ng-base-testing.d.ts +327 -0
  74. package/types/lenne.tech-ng-base-ui-provide.d.ts +65 -0
  75. package/types/lenne.tech-ng-base-ui.d.ts +7732 -0
  76. package/types/lenne.tech-ng-base-utils.d.ts +150 -0
  77. package/types/lenne.tech-ng-base.d.ts +503 -0
  78. package/ui/styles/components/accordion.css +3 -0
  79. package/ui/styles/components/alert-dialog.css +4 -0
  80. package/ui/styles/components/alert.css +3 -0
  81. package/ui/styles/components/aspect-ratio.css +3 -0
  82. package/ui/styles/components/attachment.css +4 -0
  83. package/ui/styles/components/autocomplete.css +4 -0
  84. package/ui/styles/components/avatar.css +3 -0
  85. package/ui/styles/components/badge.css +3 -0
  86. package/ui/styles/components/breadcrumb.css +3 -0
  87. package/ui/styles/components/bubble.css +3 -0
  88. package/ui/styles/components/button-group.css +3 -0
  89. package/ui/styles/components/button.css +3 -0
  90. package/ui/styles/components/calendar.css +5 -0
  91. package/ui/styles/components/card.css +3 -0
  92. package/ui/styles/components/checkbox.css +3 -0
  93. package/ui/styles/components/code-block.css +4 -0
  94. package/ui/styles/components/collapsible.css +3 -0
  95. package/ui/styles/components/combobox.css +5 -0
  96. package/ui/styles/components/command.css +5 -0
  97. package/ui/styles/components/context-menu.css +3 -0
  98. package/ui/styles/components/date-picker.css +7 -0
  99. package/ui/styles/components/dialog.css +4 -0
  100. package/ui/styles/components/drawer.css +3 -0
  101. package/ui/styles/components/dropdown-menu.css +3 -0
  102. package/ui/styles/components/empty.css +3 -0
  103. package/ui/styles/components/field.css +5 -0
  104. package/ui/styles/components/hover-card.css +3 -0
  105. package/ui/styles/components/index.css +91 -0
  106. package/ui/styles/components/input-group.css +6 -0
  107. package/ui/styles/components/input-otp.css +3 -0
  108. package/ui/styles/components/input.css +3 -0
  109. package/ui/styles/components/item.css +4 -0
  110. package/ui/styles/components/kbd.css +3 -0
  111. package/ui/styles/components/label.css +3 -0
  112. package/ui/styles/components/lt-breadcrumb.css +3 -0
  113. package/ui/styles/components/lt-bug-attachments.css +5 -0
  114. package/ui/styles/components/lt-bug-journey-timeline.css +5 -0
  115. package/ui/styles/components/lt-bug-report-dialog.css +15 -0
  116. package/ui/styles/components/lt-bug-report.css +4 -0
  117. package/ui/styles/components/lt-color-mode-button.css +3 -0
  118. package/ui/styles/components/lt-confirm-dialog.css +4 -0
  119. package/ui/styles/components/lt-data-view.css +5 -0
  120. package/ui/styles/components/lt-date-picker.css +3 -0
  121. package/ui/styles/components/lt-date-time-picker.css +5 -0
  122. package/ui/styles/components/lt-enter-action.css +2 -0
  123. package/ui/styles/components/lt-footer.css +3 -0
  124. package/ui/styles/components/lt-form-field.css +4 -0
  125. package/ui/styles/components/lt-header.css +5 -0
  126. package/ui/styles/components/lt-imports.css +21 -0
  127. package/ui/styles/components/lt-navigation-menu.css +3 -0
  128. package/ui/styles/components/lt-notice.css +3 -0
  129. package/ui/styles/components/lt-overlay-defaults.css +3 -0
  130. package/ui/styles/components/lt-page-card.css +3 -0
  131. package/ui/styles/components/lt-page-title.css +2 -0
  132. package/ui/styles/components/lt-password-input.css +4 -0
  133. package/ui/styles/components/lt-readonly-field.css +2 -0
  134. package/ui/styles/components/lt-select.css +4 -0
  135. package/ui/styles/components/lt-text-field.css +5 -0
  136. package/ui/styles/components/lt-toolbar-item.css +2 -0
  137. package/ui/styles/components/lt-toolbar.css +3 -0
  138. package/ui/styles/components/lt-tus-upload-component.css +5 -0
  139. package/ui/styles/components/marker.css +3 -0
  140. package/ui/styles/components/menubar.css +3 -0
  141. package/ui/styles/components/message-scroller.css +4 -0
  142. package/ui/styles/components/message.css +3 -0
  143. package/ui/styles/components/native-select.css +3 -0
  144. package/ui/styles/components/navigation-menu.css +3 -0
  145. package/ui/styles/components/pagination.css +4 -0
  146. package/ui/styles/components/popover.css +3 -0
  147. package/ui/styles/components/progress.css +3 -0
  148. package/ui/styles/components/questionnaire.css +4 -0
  149. package/ui/styles/components/radio-group.css +3 -0
  150. package/ui/styles/components/resizable.css +3 -0
  151. package/ui/styles/components/select.css +3 -0
  152. package/ui/styles/components/separator.css +3 -0
  153. package/ui/styles/components/sheet.css +4 -0
  154. package/ui/styles/components/sidebar.css +9 -0
  155. package/ui/styles/components/skeleton.css +3 -0
  156. package/ui/styles/components/slider.css +3 -0
  157. package/ui/styles/components/sonner.css +4 -0
  158. package/ui/styles/components/spinner.css +3 -0
  159. package/ui/styles/components/switch.css +3 -0
  160. package/ui/styles/components/table.css +3 -0
  161. package/ui/styles/components/tabs.css +4 -0
  162. package/ui/styles/components/textarea.css +3 -0
  163. package/ui/styles/components/toggle-group.css +4 -0
  164. package/ui/styles/components/toggle.css +3 -0
  165. package/ui/styles/components/tooltip.css +3 -0
  166. package/ui/styles/components/trace.css +3 -0
  167. package/ui/styles/components/typography.css +3 -0
  168. package/ui/styles/components/utils.css +2 -0
  169. package/ui/styles/core.css +137 -0
  170. package/ui/styles/palette.css +94 -0
  171. package/ui/styles/theme.css +14 -0
  172. package/ui/styles/transitions.css +131 -0
  173. package/base-cms/index.d.ts +0 -5
  174. package/base-cms/interfaces/base-cms-module-config.interface.d.ts +0 -16
  175. package/base-cms/pages/base-cms/base-cms.component.d.ts +0 -92
  176. package/base-cms/public-api.d.ts +0 -5
  177. package/base-components/components/breadcrumb/breadcrumb.component.d.ts +0 -10
  178. package/base-components/components/change-password/change-password.component.d.ts +0 -24
  179. package/base-components/components/checkbox/checkbox.component.d.ts +0 -12
  180. package/base-components/components/delete-account/delete-account.component.d.ts +0 -15
  181. package/base-components/components/fab-button/fab-button.component.d.ts +0 -16
  182. package/base-components/components/input/input.component.d.ts +0 -27
  183. package/base-components/components/loading-bar/loading-bar.component.d.ts +0 -17
  184. package/base-components/components/model-form/model-form-base.component.d.ts +0 -64
  185. package/base-components/components/model-form/model-form.component.d.ts +0 -139
  186. package/base-components/components/model-form-sub/model-form-sub.component.d.ts +0 -56
  187. package/base-components/components/model-table/model-table.component.d.ts +0 -115
  188. package/base-components/components/refence-input/refence-input.component.d.ts +0 -84
  189. package/base-components/components/select/select.component.d.ts +0 -25
  190. package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +0 -10
  191. package/base-components/components/tags/tags.component.d.ts +0 -60
  192. package/base-components/components/textarea/textarea.component.d.ts +0 -21
  193. package/base-components/components/toast/toast.component.d.ts +0 -19
  194. package/base-components/components/upload-image/upload-image.component.d.ts +0 -111
  195. package/base-components/directives/back-button.directive.d.ts +0 -9
  196. package/base-components/directives/context-menu.directive.d.ts +0 -22
  197. package/base-components/directives/sort.directive.d.ts +0 -15
  198. package/base-components/directives/stop-propagation.directive.d.ts +0 -10
  199. package/base-components/index.d.ts +0 -5
  200. package/base-components/pipes/ellipses.pipe.d.ts +0 -10
  201. package/base-components/public-api.d.ts +0 -26
  202. package/base-prototype/index.d.ts +0 -5
  203. package/base-prototype/pages/email-verification/email-verification.component.d.ts +0 -18
  204. package/base-prototype/pages/forgot-password/forgot-password.component.d.ts +0 -26
  205. package/base-prototype/pages/login/login.component.d.ts +0 -33
  206. package/base-prototype/pages/profile/profile.component.d.ts +0 -24
  207. package/base-prototype/pages/register/register.component.d.ts +0 -31
  208. package/base-prototype/pages/set-password/set-password.component.d.ts +0 -29
  209. package/base-prototype/public-api.d.ts +0 -9
  210. package/esm2022/base-cms/interfaces/base-cms-module-config.interface.mjs +0 -3
  211. package/esm2022/base-cms/lenne.tech-ng-base-base-cms.mjs +0 -5
  212. package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +0 -238
  213. package/esm2022/base-cms/public-api.mjs +0 -8
  214. package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +0 -23
  215. package/esm2022/base-components/components/change-password/change-password.component.mjs +0 -97
  216. package/esm2022/base-components/components/checkbox/checkbox.component.mjs +0 -38
  217. package/esm2022/base-components/components/delete-account/delete-account.component.mjs +0 -59
  218. package/esm2022/base-components/components/fab-button/fab-button.component.mjs +0 -24
  219. package/esm2022/base-components/components/input/input.component.mjs +0 -75
  220. package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +0 -37
  221. package/esm2022/base-components/components/model-form/model-form-base.component.mjs +0 -145
  222. package/esm2022/base-components/components/model-form/model-form.component.mjs +0 -591
  223. package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +0 -117
  224. package/esm2022/base-components/components/model-table/model-table.component.mjs +0 -478
  225. package/esm2022/base-components/components/refence-input/refence-input.component.mjs +0 -278
  226. package/esm2022/base-components/components/select/select.component.mjs +0 -62
  227. package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +0 -33
  228. package/esm2022/base-components/components/tags/tags.component.mjs +0 -227
  229. package/esm2022/base-components/components/textarea/textarea.component.mjs +0 -79
  230. package/esm2022/base-components/components/toast/toast.component.mjs +0 -69
  231. package/esm2022/base-components/components/upload-image/upload-image.component.mjs +0 -346
  232. package/esm2022/base-components/directives/back-button.directive.mjs +0 -25
  233. package/esm2022/base-components/directives/context-menu.directive.mjs +0 -112
  234. package/esm2022/base-components/directives/sort.directive.mjs +0 -61
  235. package/esm2022/base-components/directives/stop-propagation.directive.mjs +0 -24
  236. package/esm2022/base-components/lenne.tech-ng-base-base-components.mjs +0 -5
  237. package/esm2022/base-components/pipes/ellipses.pipe.mjs +0 -23
  238. package/esm2022/base-components/public-api.mjs +0 -30
  239. package/esm2022/base-prototype/lenne.tech-ng-base-base-prototype.mjs +0 -5
  240. package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +0 -60
  241. package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +0 -78
  242. package/esm2022/base-prototype/pages/login/login.component.mjs +0 -114
  243. package/esm2022/base-prototype/pages/profile/profile.component.mjs +0 -87
  244. package/esm2022/base-prototype/pages/register/register.component.mjs +0 -100
  245. package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +0 -91
  246. package/esm2022/base-prototype/public-api.mjs +0 -11
  247. package/esm2022/lenne.tech-ng-base.mjs +0 -5
  248. package/esm2022/public-api.mjs +0 -25
  249. package/esm2022/shared/classes/auth.class.mjs +0 -14
  250. package/esm2022/shared/classes/basic-user.class.mjs +0 -49
  251. package/esm2022/shared/classes/graphql-enum.class.mjs +0 -10
  252. package/esm2022/shared/classes/graphql-meta.class.mjs +0 -345
  253. package/esm2022/shared/classes/graphql-type.class.mjs +0 -14
  254. package/esm2022/shared/classes/helper.class.mjs +0 -307
  255. package/esm2022/shared/classes/sort.class.mjs +0 -38
  256. package/esm2022/shared/classes/standard.class.mjs +0 -40
  257. package/esm2022/shared/decorators/debounce.decorator.mjs +0 -12
  258. package/esm2022/shared/enums/comparison-operator.enum.mjs +0 -16
  259. package/esm2022/shared/enums/graphql-request-type.enum.mjs +0 -10
  260. package/esm2022/shared/enums/logical-operator.enum.mjs +0 -10
  261. package/esm2022/shared/enums/skeleton-type.enum.mjs +0 -7
  262. package/esm2022/shared/enums/sort-order.enum.mjs +0 -6
  263. package/esm2022/shared/enums/toast-type.enum.mjs +0 -8
  264. package/esm2022/shared/functions/ws-client.function.mjs +0 -39
  265. package/esm2022/shared/interfaces/base-module-config.interface.mjs +0 -3
  266. package/esm2022/shared/interfaces/breadcrumb.interface.mjs +0 -2
  267. package/esm2022/shared/interfaces/can-component-deactivate.interface.mjs +0 -2
  268. package/esm2022/shared/interfaces/cms-enum-values.interface.mjs +0 -2
  269. package/esm2022/shared/interfaces/cms-field-config.interface.mjs +0 -2
  270. package/esm2022/shared/interfaces/cms-model-config.interface.mjs +0 -2
  271. package/esm2022/shared/interfaces/cms-table-field.interface.mjs +0 -2
  272. package/esm2022/shared/interfaces/combined-filter-input.interface.mjs +0 -2
  273. package/esm2022/shared/interfaces/compress-options.interface.mjs +0 -2
  274. package/esm2022/shared/interfaces/cropping-options.interface.mjs +0 -2
  275. package/esm2022/shared/interfaces/field-object.interface.mjs +0 -2
  276. package/esm2022/shared/interfaces/field.interface.mjs +0 -2
  277. package/esm2022/shared/interfaces/filter-input.interface.mjs +0 -2
  278. package/esm2022/shared/interfaces/find-args.interface.mjs +0 -2
  279. package/esm2022/shared/interfaces/graphql-crud-type.interface.mjs +0 -2
  280. package/esm2022/shared/interfaces/graphql-fields-object.interface.mjs +0 -2
  281. package/esm2022/shared/interfaces/graphql-options.interface.mjs +0 -2
  282. package/esm2022/shared/interfaces/graphql-plus-options.interfacen.mjs +0 -2
  283. package/esm2022/shared/interfaces/graphql-type-collection.interface.mjs +0 -2
  284. package/esm2022/shared/interfaces/login-config.interface.mjs +0 -2
  285. package/esm2022/shared/interfaces/register-config.interface.mjs +0 -2
  286. package/esm2022/shared/interfaces/single-filter-input.interface.mjs +0 -2
  287. package/esm2022/shared/interfaces/sort-input.interface.mjs +0 -2
  288. package/esm2022/shared/interfaces/time-components.interface.mjs +0 -2
  289. package/esm2022/shared/interfaces/toast.interface.mjs +0 -2
  290. package/esm2022/shared/lenne.tech-ng-base-shared.mjs +0 -5
  291. package/esm2022/shared/public-api.mjs +0 -74
  292. package/esm2022/shared/services/auth.service.mjs +0 -152
  293. package/esm2022/shared/services/breadcrumb.service.mjs +0 -69
  294. package/esm2022/shared/services/cms.service.mjs +0 -82
  295. package/esm2022/shared/services/file.service.mjs +0 -86
  296. package/esm2022/shared/services/forms.service.mjs +0 -61
  297. package/esm2022/shared/services/graphql-meta.service.mjs +0 -132
  298. package/esm2022/shared/services/graphql-plus.service.mjs +0 -93
  299. package/esm2022/shared/services/graphql.service.mjs +0 -510
  300. package/esm2022/shared/services/image.service.mjs +0 -102
  301. package/esm2022/shared/services/loader.service.mjs +0 -78
  302. package/esm2022/shared/services/navigation.service.mjs +0 -38
  303. package/esm2022/shared/services/scroll.service.mjs +0 -207
  304. package/esm2022/shared/services/storage.service.mjs +0 -149
  305. package/esm2022/shared/services/toast.service.mjs +0 -39
  306. package/esm2022/shared/services/user.service.mjs +0 -160
  307. package/esm2022/shared/services/ws.service.mjs +0 -17
  308. package/esm2022/shared/types/graphql-fields.type.mjs +0 -2
  309. package/esm2022/shared/types/storage.type.mjs +0 -2
  310. package/esm2022/shared/validators/email.validator.mjs +0 -7
  311. package/esm2022/shared/validators/match.validator.mjs +0 -22
  312. package/esm2022/shared/validators/secure-password.validator.mjs +0 -7
  313. package/esm2022/src/base.module.mjs +0 -64
  314. package/esm2022/src/decorators/auto-unsubscribe.decorator.mjs +0 -23
  315. package/esm2022/src/directives/lazy-load.directive.mjs +0 -48
  316. package/esm2022/src/directives/match-height.directive.mjs +0 -92
  317. package/esm2022/src/directives/resizable.directive.mjs +0 -92
  318. package/esm2022/src/factories/apollo-options.factory.mjs +0 -108
  319. package/esm2022/src/functions/extract-files.function.mjs +0 -87
  320. package/esm2022/src/guards/auth.guard.mjs +0 -91
  321. package/esm2022/src/guards/can-deactivate.guard.mjs +0 -16
  322. package/esm2022/src/guards/logout.guard.mjs +0 -34
  323. package/esm2022/src/pipes/date-ago.pipe.mjs +0 -64
  324. package/esm2022/src/pipes/safe-html.pipe.mjs +0 -22
  325. package/esm2022/src/services/fullscreen.service.mjs +0 -51
  326. package/esm2022/src/services/seo.service.mjs +0 -117
  327. package/esm2022/src/services/theme.service.mjs +0 -44
  328. package/fesm2022/lenne.tech-ng-base-base-cms.mjs +0 -251
  329. package/fesm2022/lenne.tech-ng-base-base-cms.mjs.map +0 -1
  330. package/fesm2022/lenne.tech-ng-base-base-components.mjs +0 -2917
  331. package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +0 -1
  332. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs +0 -505
  333. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs.map +0 -1
  334. package/fesm2022/lenne.tech-ng-base-shared.mjs +0 -2863
  335. package/fesm2022/lenne.tech-ng-base-shared.mjs.map +0 -1
  336. package/index.d.ts +0 -5
  337. package/public-api.d.ts +0 -17
  338. package/shared/classes/auth.class.d.ts +0 -10
  339. package/shared/classes/basic-user.class.d.ts +0 -27
  340. package/shared/classes/graphql-enum.class.d.ts +0 -7
  341. package/shared/classes/graphql-meta.class.d.ts +0 -66
  342. package/shared/classes/graphql-type.class.d.ts +0 -13
  343. package/shared/classes/helper.class.d.ts +0 -99
  344. package/shared/classes/sort.class.d.ts +0 -12
  345. package/shared/classes/standard.class.d.ts +0 -32
  346. package/shared/decorators/debounce.decorator.d.ts +0 -1
  347. package/shared/enums/comparison-operator.enum.d.ts +0 -14
  348. package/shared/enums/graphql-request-type.enum.d.ts +0 -8
  349. package/shared/enums/logical-operator.enum.d.ts +0 -8
  350. package/shared/enums/skeleton-type.enum.d.ts +0 -5
  351. package/shared/enums/sort-order.enum.d.ts +0 -4
  352. package/shared/enums/toast-type.enum.d.ts +0 -6
  353. package/shared/functions/ws-client.function.d.ts +0 -5
  354. package/shared/index.d.ts +0 -5
  355. package/shared/interfaces/base-module-config.interface.d.ts +0 -61
  356. package/shared/interfaces/breadcrumb.interface.d.ts +0 -4
  357. package/shared/interfaces/can-component-deactivate.interface.d.ts +0 -7
  358. package/shared/interfaces/cms-enum-values.interface.d.ts +0 -4
  359. package/shared/interfaces/cms-field-config.interface.d.ts +0 -45
  360. package/shared/interfaces/cms-model-config.interface.d.ts +0 -14
  361. package/shared/interfaces/cms-table-field.interface.d.ts +0 -10
  362. package/shared/interfaces/combined-filter-input.interface.d.ts +0 -9
  363. package/shared/interfaces/compress-options.interface.d.ts +0 -15
  364. package/shared/interfaces/cropping-options.interface.d.ts +0 -12
  365. package/shared/interfaces/field-object.interface.d.ts +0 -6
  366. package/shared/interfaces/field.interface.d.ts +0 -5
  367. package/shared/interfaces/filter-input.interface.d.ts +0 -9
  368. package/shared/interfaces/find-args.interface.d.ts +0 -11
  369. package/shared/interfaces/graphql-crud-type.interface.d.ts +0 -7
  370. package/shared/interfaces/graphql-fields-object.interface.d.ts +0 -6
  371. package/shared/interfaces/graphql-options.interface.d.ts +0 -11
  372. package/shared/interfaces/graphql-plus-options.interfacen.d.ts +0 -9
  373. package/shared/interfaces/graphql-type-collection.interface.d.ts +0 -7
  374. package/shared/interfaces/login-config.interface.d.ts +0 -6
  375. package/shared/interfaces/register-config.interface.d.ts +0 -4
  376. package/shared/interfaces/single-filter-input.interface.d.ts +0 -11
  377. package/shared/interfaces/sort-input.interface.d.ts +0 -5
  378. package/shared/interfaces/time-components.interface.d.ts +0 -6
  379. package/shared/interfaces/toast.interface.d.ts +0 -8
  380. package/shared/public-api.d.ts +0 -65
  381. package/shared/services/auth.service.d.ts +0 -44
  382. package/shared/services/breadcrumb.service.d.ts +0 -32
  383. package/shared/services/cms.service.d.ts +0 -27
  384. package/shared/services/file.service.d.ts +0 -22
  385. package/shared/services/forms.service.d.ts +0 -14
  386. package/shared/services/graphql-meta.service.d.ts +0 -45
  387. package/shared/services/graphql-plus.service.d.ts +0 -27
  388. package/shared/services/graphql.service.d.ts +0 -71
  389. package/shared/services/image.service.d.ts +0 -27
  390. package/shared/services/loader.service.d.ts +0 -32
  391. package/shared/services/navigation.service.d.ts +0 -15
  392. package/shared/services/scroll.service.d.ts +0 -85
  393. package/shared/services/storage.service.d.ts +0 -49
  394. package/shared/services/toast.service.d.ts +0 -15
  395. package/shared/services/user.service.d.ts +0 -77
  396. package/shared/services/ws.service.d.ts +0 -8
  397. package/shared/types/graphql-fields.type.d.ts +0 -5
  398. package/shared/types/storage.type.d.ts +0 -4
  399. package/shared/validators/email.validator.d.ts +0 -1
  400. package/shared/validators/match.validator.d.ts +0 -4
  401. package/shared/validators/secure-password.validator.d.ts +0 -1
  402. package/src/base.module.d.ts +0 -16
  403. package/src/decorators/auto-unsubscribe.decorator.d.ts +0 -5
  404. package/src/directives/lazy-load.directive.d.ts +0 -17
  405. package/src/directives/match-height.directive.d.ts +0 -20
  406. package/src/directives/resizable.directive.d.ts +0 -26
  407. package/src/factories/apollo-options.factory.d.ts +0 -16
  408. package/src/functions/extract-files.function.d.ts +0 -15
  409. package/src/guards/auth.guard.d.ts +0 -27
  410. package/src/guards/can-deactivate.guard.d.ts +0 -10
  411. package/src/guards/logout.guard.d.ts +0 -16
  412. package/src/pipes/date-ago.pipe.d.ts +0 -34
  413. package/src/pipes/safe-html.pipe.d.ts +0 -13
  414. package/src/services/fullscreen.service.d.ts +0 -18
  415. package/src/services/seo.service.d.ts +0 -61
  416. package/src/services/theme.service.d.ts +0 -17
@@ -0,0 +1,767 @@
1
+ import * as i0 from "@angular/core";
2
+ import { DestroyRef, InjectionToken, PLATFORM_ID, PendingTasks, Service, TransferState, assertInInjectionContext, computed, inject, isSignal, linkedSignal, makeEnvironmentProviders, makeStateKey, signal } from "@angular/core";
3
+ import { LT_FETCH, LT_RUNTIME_CONFIG, LtApiUrlService, mergeLtFeatureOptions } from "@lenne.tech/ng-base";
4
+ import { isPlatformServer } from "@angular/common";
5
+ const LT_AI_INPUT_OPTIONS = new InjectionToken("LT_AI_INPUT_OPTIONS", { factory: () => ({}) });
6
+ const LT_AI_OPTIONS = new InjectionToken("LT_AI_OPTIONS", { factory: () => mergeLtFeatureOptions({ basePath: "/ai" }, inject(LT_AI_INPUT_OPTIONS), inject(LT_RUNTIME_CONFIG, { optional: true })?.lt.ai) });
7
+ function provideLtAi(options = {}) {
8
+ return makeEnvironmentProviders([{
9
+ provide: LT_AI_INPUT_OPTIONS,
10
+ useValue: options
11
+ }]);
12
+ }
13
+ const LT_AI_SSE_MAX_LINE = 1048576;
14
+ var LtAiHttpService = class LtAiHttpService {
15
+ api = inject(LtApiUrlService);
16
+ fetch = inject(LT_FETCH);
17
+ options = inject(LT_AI_OPTIONS);
18
+ basePath() {
19
+ return this.options.basePath;
20
+ }
21
+ buildUrl(path) {
22
+ return this.api.buildUrl(`${this.options.basePath}${path.startsWith("/") ? path : `/${path}`}`);
23
+ }
24
+ async request(method, path, body, options = {}) {
25
+ const init = {
26
+ headers: { accept: "application/json" },
27
+ method,
28
+ signal: options.signal
29
+ };
30
+ if (body !== void 0) {
31
+ init.body = JSON.stringify(body);
32
+ init.headers = {
33
+ ...init.headers,
34
+ "content-type": "application/json"
35
+ };
36
+ }
37
+ const response = await this.fetch(this.buildUrl(path), init);
38
+ if (!response.ok) throw await ltAiResponseError(response);
39
+ if (response.status === 204) return;
40
+ const text = await response.text();
41
+ return text ? JSON.parse(text) : void 0;
42
+ }
43
+ stream(path, body, options = {}) {
44
+ return this.fetch(this.buildUrl(path), {
45
+ body: JSON.stringify(body),
46
+ headers: {
47
+ accept: "text/event-stream",
48
+ "content-type": "application/json"
49
+ },
50
+ method: "POST",
51
+ signal: options.signal
52
+ });
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({
55
+ minVersion: "12.0.0",
56
+ version: "22.2.4",
57
+ ngImport: i0,
58
+ type: LtAiHttpService,
59
+ deps: [],
60
+ target: i0.ɵɵFactoryTarget.Service
61
+ });
62
+ static ɵprov = i0.ɵɵngDeclareService({
63
+ minVersion: "22.0.0",
64
+ version: "22.2.4",
65
+ ngImport: i0,
66
+ type: LtAiHttpService
67
+ });
68
+ };
69
+ i0.ɵɵngDeclareClassMetadata({
70
+ minVersion: "12.0.0",
71
+ version: "22.2.4",
72
+ ngImport: i0,
73
+ type: LtAiHttpService,
74
+ decorators: [{ type: Service }]
75
+ });
76
+ async function ltAiResponseError(response) {
77
+ let message = `${response.status} ${response.statusText}`.trim();
78
+ try {
79
+ const body = await response.json();
80
+ const raw = body?.message ?? body?.error;
81
+ if (Array.isArray(raw)) message = raw.map(String).join(", ");
82
+ else if (typeof raw === "string" && raw) message = raw;
83
+ } catch {}
84
+ const error = new Error(message.slice(0, 1024));
85
+ error.status = response.status;
86
+ return error;
87
+ }
88
+ async function parseLtAiSseStream(response, onEvent, options = {}) {
89
+ const body = response.body;
90
+ if (!body) throw new Error("AI stream response has no body");
91
+ const signal = options.signal;
92
+ const reader = body.getReader();
93
+ const decoder = new TextDecoder();
94
+ let buffer = "";
95
+ let finished = false;
96
+ const cancel = () => {
97
+ reader.cancel().catch(() => void 0);
98
+ };
99
+ const tooLong = () => /* @__PURE__ */ new Error("AI stream line exceeds maximum allowed size");
100
+ const handleLine = (line) => {
101
+ if (line.length > 1048576) throw tooLong();
102
+ const trimmed = line.trim();
103
+ if (!trimmed.startsWith("data:")) return;
104
+ const payload = trimmed.slice(5).trim();
105
+ if (!payload || payload === "[DONE]") return;
106
+ let event;
107
+ try {
108
+ event = JSON.parse(payload);
109
+ } catch {
110
+ return;
111
+ }
112
+ onEvent(event);
113
+ };
114
+ signal?.addEventListener("abort", cancel, { once: true });
115
+ try {
116
+ if (signal?.aborted) return;
117
+ for (;;) {
118
+ const { done, value } = await reader.read();
119
+ if (signal?.aborted) return;
120
+ if (done) break;
121
+ buffer += decoder.decode(value, { stream: true });
122
+ const lines = buffer.split("\n");
123
+ buffer = lines.pop() ?? "";
124
+ for (const line of lines) {
125
+ handleLine(line);
126
+ if (signal?.aborted) return;
127
+ }
128
+ if (buffer.length > 1048576) throw tooLong();
129
+ }
130
+ buffer += decoder.decode();
131
+ finished = true;
132
+ if (buffer) handleLine(buffer);
133
+ } finally {
134
+ signal?.removeEventListener("abort", cancel);
135
+ if (!finished) cancel();
136
+ reader.releaseLock();
137
+ }
138
+ }
139
+ var LtAiCallState = class {
140
+ pending = signal(0, ...ngDevMode ? [{ debugName: "pending" }] : /* istanbul ignore next */ []);
141
+ lastError = signal(null, ...ngDevMode ? [{ debugName: "lastError" }] : /* istanbul ignore next */ []);
142
+ loading = computed(() => this.pending() > 0, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
143
+ error = this.lastError.asReadonly();
144
+ async run(call) {
145
+ this.pending.update((count) => count + 1);
146
+ this.lastError.set(null);
147
+ try {
148
+ return await call();
149
+ } catch (error) {
150
+ this.lastError.set(ltAiErrorMessage(error));
151
+ throw error;
152
+ } finally {
153
+ this.pending.update((count) => Math.max(0, count - 1));
154
+ }
155
+ }
156
+ async runQuietly(call) {
157
+ try {
158
+ return await this.run(call);
159
+ } catch {
160
+ return;
161
+ }
162
+ }
163
+ setError(message) {
164
+ this.lastError.set(message);
165
+ }
166
+ };
167
+ function ltAiErrorMessage(error) {
168
+ return error instanceof Error ? error.message : String(error);
169
+ }
170
+ function isLtAiAbortError(error) {
171
+ return error?.name === "AbortError";
172
+ }
173
+ async function runLtAiStream(http, input, handlers, options = {}) {
174
+ const response = await http.stream("/stream", input, options);
175
+ if (!response.ok) throw await ltAiResponseError(response);
176
+ let final;
177
+ await parseLtAiSseStream(response, (event) => {
178
+ handlers?.onEvent?.(event);
179
+ switch (event.type) {
180
+ case "action":
181
+ handlers?.onAction?.(event.action);
182
+ break;
183
+ case "error":
184
+ handlers?.onError?.(event.message);
185
+ break;
186
+ case "final":
187
+ final = event.response;
188
+ handlers?.onFinal?.(event.response);
189
+ break;
190
+ case "token": handlers?.onToken?.(event.token);
191
+ }
192
+ }, options);
193
+ if (options.signal?.aborted) throw abortReason(options.signal);
194
+ return final;
195
+ }
196
+ function abortReason(signal) {
197
+ const reason = signal.reason;
198
+ if (reason instanceof Error || typeof DOMException !== "undefined" && reason instanceof DOMException) return reason;
199
+ const error = /* @__PURE__ */ new Error("The operation was aborted.");
200
+ error.name = "AbortError";
201
+ return error;
202
+ }
203
+ function injectLtAiChat(options = {}) {
204
+ assertInInjectionContext(injectLtAiChat);
205
+ const http = inject(LtAiHttpService);
206
+ const messages = signal([], ...ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []);
207
+ const conversationId = linkedSignal(() => isSignal(options.conversationId) ? options.conversationId() : options.conversationId, ...ngDevMode ? [{ debugName: "conversationId" }] : /* istanbul ignore next */ []);
208
+ const budget = signal(null, ...ngDevMode ? [{ debugName: "budget" }] : /* istanbul ignore next */ []);
209
+ const contextWindow = signal(null, ...ngDevMode ? [{ debugName: "contextWindow" }] : /* istanbul ignore next */ []);
210
+ const error = signal(null, ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
211
+ const streaming = signal(false, ...ngDevMode ? [{ debugName: "streaming" }] : /* istanbul ignore next */ []);
212
+ let busy = false;
213
+ let turnSequence = 0;
214
+ let controller;
215
+ let lastPrompt = "";
216
+ const requiresConfirmation = computed(() => {
217
+ const list = messages();
218
+ const last = list[list.length - 1];
219
+ return !!last && last.role === "assistant" && !!last.requiresConfirmation;
220
+ }, ...ngDevMode ? [{ debugName: "requiresConfirmation" }] : /* istanbul ignore next */ []);
221
+ function resolveConnectionId() {
222
+ const value = options.connectionId;
223
+ return (isSignal(value) ? value() : value) || void 0;
224
+ }
225
+ function push(message) {
226
+ messages.update((list) => {
227
+ const next = [...list, message];
228
+ return options.maxMessages && options.maxMessages > 0 && next.length > options.maxMessages ? next.slice(next.length - options.maxMessages) : next;
229
+ });
230
+ }
231
+ function buildInput(prompt, confirm) {
232
+ const input = {
233
+ connectionId: resolveConnectionId(),
234
+ conversationId: conversationId(),
235
+ metadata: options.metadata?.(),
236
+ mode: isSignal(options.mode) ? options.mode() : options.mode,
237
+ prompt
238
+ };
239
+ if (confirm) input.confirm = true;
240
+ return input;
241
+ }
242
+ async function runTurn(input) {
243
+ const turn = ++turnSequence;
244
+ const isCurrent = () => turn === turnSequence;
245
+ error.set(null);
246
+ let assistant = {
247
+ content: "",
248
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
249
+ pending: true,
250
+ role: "assistant"
251
+ };
252
+ push(assistant);
253
+ const patch = (changes) => {
254
+ const previous = assistant;
255
+ assistant = {
256
+ ...previous,
257
+ ...changes
258
+ };
259
+ const next = assistant;
260
+ messages.update((list) => list.includes(previous) ? list.map((message) => message === previous ? next : message) : list);
261
+ };
262
+ const applyFinal = (response) => {
263
+ patch({
264
+ actions: response.actions,
265
+ budget: response.budget,
266
+ content: response.text || assistant.content,
267
+ denied: response.denied,
268
+ pending: false,
269
+ pendingActions: response.pendingActions,
270
+ requiresConfirmation: response.requiresConfirmation
271
+ });
272
+ if (!isCurrent()) return;
273
+ if (response.budget) budget.set(response.budget);
274
+ if (response.contextWindow) contextWindow.set(response.contextWindow);
275
+ if (response.conversationId) conversationId.set(response.conversationId);
276
+ };
277
+ const fail = (message) => {
278
+ patch({
279
+ content: assistant.content || message,
280
+ error: true,
281
+ pending: false
282
+ });
283
+ if (isCurrent()) error.set(message);
284
+ };
285
+ const abort = new AbortController();
286
+ controller = abort;
287
+ busy = true;
288
+ const stream = options.stream !== false;
289
+ streaming.set(stream);
290
+ try {
291
+ if (stream) {
292
+ let streamError;
293
+ await runLtAiStream(http, input, {
294
+ onError: (message) => streamError = message,
295
+ onFinal: applyFinal,
296
+ onToken: (token) => patch({ content: assistant.content + token })
297
+ }, { signal: abort.signal });
298
+ if (streamError !== void 0) fail(streamError);
299
+ else if (assistant.pending) patch({ pending: false });
300
+ } else applyFinal(await http.request("POST", "/prompt", input, { signal: abort.signal }));
301
+ } catch (caught) {
302
+ if (isLtAiAbortError(caught)) patch({ pending: false });
303
+ else fail(ltAiErrorMessage(caught));
304
+ } finally {
305
+ if (isCurrent()) {
306
+ controller = void 0;
307
+ busy = false;
308
+ streaming.set(false);
309
+ }
310
+ }
311
+ }
312
+ async function send(content) {
313
+ const text = content.trim();
314
+ if (!text || busy) return;
315
+ lastPrompt = text;
316
+ push({
317
+ content: text,
318
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
319
+ role: "user"
320
+ });
321
+ await runTurn(buildInput(text, false));
322
+ }
323
+ async function confirm() {
324
+ if (!requiresConfirmation() || !lastPrompt || busy) return;
325
+ await runTurn(buildInput(lastPrompt, true));
326
+ }
327
+ function stop() {
328
+ controller?.abort();
329
+ controller = void 0;
330
+ if (busy) {
331
+ turnSequence++;
332
+ busy = false;
333
+ streaming.set(false);
334
+ }
335
+ }
336
+ function clear() {
337
+ stop();
338
+ messages.set([]);
339
+ budget.set(null);
340
+ contextWindow.set(null);
341
+ error.set(null);
342
+ lastPrompt = "";
343
+ }
344
+ inject(DestroyRef).onDestroy(() => stop());
345
+ return {
346
+ budget: budget.asReadonly(),
347
+ clear,
348
+ confirm,
349
+ contextWindow: contextWindow.asReadonly(),
350
+ conversationId: conversationId.asReadonly(),
351
+ error: error.asReadonly(),
352
+ messages: messages.asReadonly(),
353
+ requiresConfirmation,
354
+ send,
355
+ stop,
356
+ streaming: streaming.asReadonly()
357
+ };
358
+ }
359
+ var LtAiAdminService = class LtAiAdminService {
360
+ http = inject(LtAiHttpService);
361
+ listConnections = () => this.http.request("GET", "/connections");
362
+ createConnection = (input) => this.http.request("POST", "/connections", input);
363
+ getConnection = (id) => this.http.request("GET", `/connections/${encodeURIComponent(id)}`);
364
+ updateConnection = (id, input) => this.http.request("PUT", `/connections/${encodeURIComponent(id)}`, input);
365
+ deleteConnection = (id) => this.http.request("DELETE", `/connections/${encodeURIComponent(id)}`);
366
+ detectCapabilities = (id) => this.http.request("POST", `/connections/${encodeURIComponent(id)}/detect-capabilities`);
367
+ listPreferences = () => this.http.request("GET", "/connections/preferences");
368
+ setPreference = (input) => this.http.request("POST", "/connections/preferences", input);
369
+ deletePreference = (id) => this.http.request("DELETE", `/connections/preferences/${encodeURIComponent(id)}`);
370
+ listBudgetLimits = () => this.http.request("GET", "/budget-limits");
371
+ createBudgetLimit = (input) => this.http.request("POST", "/budget-limits", input);
372
+ updateBudgetLimit = (id, input) => this.http.request("PUT", `/budget-limits/${encodeURIComponent(id)}`, input);
373
+ deleteBudgetLimit = (id) => this.http.request("DELETE", `/budget-limits/${encodeURIComponent(id)}`);
374
+ listSlots = () => this.http.request("GET", "/slots");
375
+ listEffectiveSlots = () => this.http.request("GET", "/slots/effective");
376
+ createSlot = (input) => this.http.request("POST", "/slots", input);
377
+ updateSlot = (id, input) => this.http.request("PUT", `/slots/${encodeURIComponent(id)}`, input);
378
+ deleteSlot = (id) => this.http.request("DELETE", `/slots/${encodeURIComponent(id)}`);
379
+ resetSlot = (id) => this.http.request("POST", `/slots/${encodeURIComponent(id)}/reset`);
380
+ listPromptHints = () => this.http.request("GET", "/prompt-hints");
381
+ createPromptHint = (input) => this.http.request("POST", "/prompt-hints", input);
382
+ updatePromptHint = (id, input) => this.http.request("PUT", `/prompt-hints/${encodeURIComponent(id)}`, input);
383
+ deletePromptHint = (id) => this.http.request("DELETE", `/prompt-hints/${encodeURIComponent(id)}`);
384
+ listInteractions = () => this.http.request("GET", "/interactions");
385
+ static ɵfac = i0.ɵɵngDeclareFactory({
386
+ minVersion: "12.0.0",
387
+ version: "22.2.4",
388
+ ngImport: i0,
389
+ type: LtAiAdminService,
390
+ deps: [],
391
+ target: i0.ɵɵFactoryTarget.Service
392
+ });
393
+ static ɵprov = i0.ɵɵngDeclareService({
394
+ minVersion: "22.0.0",
395
+ version: "22.2.4",
396
+ ngImport: i0,
397
+ type: LtAiAdminService
398
+ });
399
+ };
400
+ i0.ɵɵngDeclareClassMetadata({
401
+ minVersion: "12.0.0",
402
+ version: "22.2.4",
403
+ ngImport: i0,
404
+ type: LtAiAdminService,
405
+ decorators: [{ type: Service }]
406
+ });
407
+ var LtAiConnectionsService = class LtAiConnectionsService {
408
+ http = inject(LtAiHttpService);
409
+ calls = new LtAiCallState();
410
+ list = signal([], ...ngDevMode ? [{ debugName: "list" }] : /* istanbul ignore next */ []);
411
+ connections = this.list.asReadonly();
412
+ error = this.calls.error;
413
+ loading = this.calls.loading;
414
+ locked = computed(() => this.list().some((connection) => connection.locked), ...ngDevMode ? [{ debugName: "locked" }] : /* istanbul ignore next */ []);
415
+ selected = computed(() => this.list().find((connection) => connection.selected), ...ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []);
416
+ async load() {
417
+ await this.calls.runQuietly(async () => {
418
+ this.list.set(await this.http.request("GET", "/connections/available") ?? []);
419
+ });
420
+ }
421
+ async select(connectionId) {
422
+ await this.calls.run(async () => {
423
+ this.list.set(await this.http.request("POST", "/connections/select", { connectionId }) ?? []);
424
+ });
425
+ }
426
+ static ɵfac = i0.ɵɵngDeclareFactory({
427
+ minVersion: "12.0.0",
428
+ version: "22.2.4",
429
+ ngImport: i0,
430
+ type: LtAiConnectionsService,
431
+ deps: [],
432
+ target: i0.ɵɵFactoryTarget.Service
433
+ });
434
+ static ɵprov = i0.ɵɵngDeclareService({
435
+ minVersion: "22.0.0",
436
+ version: "22.2.4",
437
+ ngImport: i0,
438
+ type: LtAiConnectionsService
439
+ });
440
+ };
441
+ i0.ɵɵngDeclareClassMetadata({
442
+ minVersion: "12.0.0",
443
+ version: "22.2.4",
444
+ ngImport: i0,
445
+ type: LtAiConnectionsService,
446
+ decorators: [{ type: Service }]
447
+ });
448
+ var LtAiPlaceholdersService = class LtAiPlaceholdersService {
449
+ http = inject(LtAiHttpService);
450
+ calls = new LtAiCallState();
451
+ list = signal([], ...ngDevMode ? [{ debugName: "list" }] : /* istanbul ignore next */ []);
452
+ error = this.calls.error;
453
+ loading = this.calls.loading;
454
+ placeholders = this.list.asReadonly();
455
+ async load() {
456
+ try {
457
+ await this.calls.run(async () => {
458
+ this.list.set(await this.http.request("GET", "/placeholders") ?? []);
459
+ });
460
+ } catch {
461
+ this.list.set([]);
462
+ }
463
+ }
464
+ static ɵfac = i0.ɵɵngDeclareFactory({
465
+ minVersion: "12.0.0",
466
+ version: "22.2.4",
467
+ ngImport: i0,
468
+ type: LtAiPlaceholdersService,
469
+ deps: [],
470
+ target: i0.ɵɵFactoryTarget.Service
471
+ });
472
+ static ɵprov = i0.ɵɵngDeclareService({
473
+ minVersion: "22.0.0",
474
+ version: "22.2.4",
475
+ ngImport: i0,
476
+ type: LtAiPlaceholdersService
477
+ });
478
+ };
479
+ i0.ɵɵngDeclareClassMetadata({
480
+ minVersion: "12.0.0",
481
+ version: "22.2.4",
482
+ ngImport: i0,
483
+ type: LtAiPlaceholdersService,
484
+ decorators: [{ type: Service }]
485
+ });
486
+ var LtAiPromptsService = class LtAiPromptsService {
487
+ http = inject(LtAiHttpService);
488
+ calls = new LtAiCallState();
489
+ list = signal([], ...ngDevMode ? [{ debugName: "list" }] : /* istanbul ignore next */ []);
490
+ loadSequence = 0;
491
+ error = this.calls.error;
492
+ loading = this.calls.loading;
493
+ prompts = this.list.asReadonly();
494
+ async load() {
495
+ const sequence = ++this.loadSequence;
496
+ try {
497
+ const prompts = await this.calls.run(() => this.http.request("GET", "/prompts"));
498
+ if (sequence === this.loadSequence) this.list.set(prompts ?? []);
499
+ } catch {
500
+ if (sequence === this.loadSequence) this.list.set([]);
501
+ }
502
+ }
503
+ async create(input) {
504
+ return this.mutate(() => this.http.request("POST", "/prompts", input));
505
+ }
506
+ async update(id, input) {
507
+ return this.mutate(() => this.http.request("PUT", `/prompts/${encodeURIComponent(id)}`, input));
508
+ }
509
+ async remove(id) {
510
+ return this.mutate(() => this.http.request("DELETE", `/prompts/${encodeURIComponent(id)}`));
511
+ }
512
+ async mutate(call) {
513
+ return this.calls.run(async () => {
514
+ const result = await call();
515
+ await this.load();
516
+ return result;
517
+ });
518
+ }
519
+ static ɵfac = i0.ɵɵngDeclareFactory({
520
+ minVersion: "12.0.0",
521
+ version: "22.2.4",
522
+ ngImport: i0,
523
+ type: LtAiPromptsService,
524
+ deps: [],
525
+ target: i0.ɵɵFactoryTarget.Service
526
+ });
527
+ static ɵprov = i0.ɵɵngDeclareService({
528
+ minVersion: "22.0.0",
529
+ version: "22.2.4",
530
+ ngImport: i0,
531
+ type: LtAiPromptsService
532
+ });
533
+ };
534
+ i0.ɵɵngDeclareClassMetadata({
535
+ minVersion: "12.0.0",
536
+ version: "22.2.4",
537
+ ngImport: i0,
538
+ type: LtAiPromptsService,
539
+ decorators: [{ type: Service }]
540
+ });
541
+ var LtAiService = class LtAiService {
542
+ http = inject(LtAiHttpService);
543
+ calls = new LtAiCallState();
544
+ streams = signal(0, ...ngDevMode ? [{ debugName: "streams" }] : /* istanbul ignore next */ []);
545
+ error = this.calls.error;
546
+ loading = this.calls.loading;
547
+ streaming = computed(() => this.streams() > 0, ...ngDevMode ? [{ debugName: "streaming" }] : /* istanbul ignore next */ []);
548
+ async prompt(input) {
549
+ return this.calls.run(() => this.http.request("POST", "/prompt", input));
550
+ }
551
+ async promptStream(input, handlers, options = {}) {
552
+ this.streams.update((count) => count + 1);
553
+ this.calls.setError(null);
554
+ try {
555
+ return await runLtAiStream(this.http, input, {
556
+ ...handlers,
557
+ onError: (message) => {
558
+ this.calls.setError(message);
559
+ handlers?.onError?.(message);
560
+ }
561
+ }, options);
562
+ } catch (error) {
563
+ if (!isLtAiAbortError(error)) this.calls.setError(ltAiErrorMessage(error));
564
+ throw error;
565
+ } finally {
566
+ this.streams.update((count) => Math.max(0, count - 1));
567
+ }
568
+ }
569
+ static ɵfac = i0.ɵɵngDeclareFactory({
570
+ minVersion: "12.0.0",
571
+ version: "22.2.4",
572
+ ngImport: i0,
573
+ type: LtAiService,
574
+ deps: [],
575
+ target: i0.ɵɵFactoryTarget.Service
576
+ });
577
+ static ɵprov = i0.ɵɵngDeclareService({
578
+ minVersion: "22.0.0",
579
+ version: "22.2.4",
580
+ ngImport: i0,
581
+ type: LtAiService
582
+ });
583
+ };
584
+ i0.ɵɵngDeclareClassMetadata({
585
+ minVersion: "12.0.0",
586
+ version: "22.2.4",
587
+ ngImport: i0,
588
+ type: LtAiService,
589
+ decorators: [{ type: Service }]
590
+ });
591
+ var LtAiSettingsService = class LtAiSettingsService {
592
+ http = inject(LtAiHttpService);
593
+ calls = new LtAiCallState();
594
+ current = signal(null, ...ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []);
595
+ enforced = computed(() => this.current()?.mcpConfirmationEnforced === true, ...ngDevMode ? [{ debugName: "enforced" }] : /* istanbul ignore next */ []);
596
+ error = this.calls.error;
597
+ loading = this.calls.loading;
598
+ settings = this.current.asReadonly();
599
+ async load() {
600
+ await this.calls.runQuietly(async () => {
601
+ this.current.set(await this.http.request("GET", "/settings") ?? null);
602
+ });
603
+ }
604
+ async update(input) {
605
+ await this.calls.run(async () => {
606
+ this.current.set(await this.http.request("PUT", "/settings", input) ?? null);
607
+ });
608
+ }
609
+ static ɵfac = i0.ɵɵngDeclareFactory({
610
+ minVersion: "12.0.0",
611
+ version: "22.2.4",
612
+ ngImport: i0,
613
+ type: LtAiSettingsService,
614
+ deps: [],
615
+ target: i0.ɵɵFactoryTarget.Service
616
+ });
617
+ static ɵprov = i0.ɵɵngDeclareService({
618
+ minVersion: "22.0.0",
619
+ version: "22.2.4",
620
+ ngImport: i0,
621
+ type: LtAiSettingsService
622
+ });
623
+ };
624
+ i0.ɵɵngDeclareClassMetadata({
625
+ minVersion: "12.0.0",
626
+ version: "22.2.4",
627
+ ngImport: i0,
628
+ type: LtAiSettingsService,
629
+ decorators: [{ type: Service }]
630
+ });
631
+ const LT_AI_STATUS_STATE_KEY = makeStateKey("lt-ai-status");
632
+ const LT_AI_STATUS_TIMEOUT_MS = 5e3;
633
+ const INITIAL_STATUS = {
634
+ enabled: false,
635
+ error: null,
636
+ loaded: false,
637
+ mcp: false
638
+ };
639
+ var LtAiStatusService = class LtAiStatusService {
640
+ http = inject(LtAiHttpService);
641
+ transferState = inject(TransferState);
642
+ pendingTasks = inject(PendingTasks);
643
+ isServer = isPlatformServer(inject(PLATFORM_ID));
644
+ state = signal(this.readTransferred(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
645
+ inflight = null;
646
+ enabled = computed(() => this.state().enabled, ...ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []);
647
+ error = computed(() => this.state().error, ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
648
+ loaded = computed(() => this.state().loaded, ...ngDevMode ? [{ debugName: "loaded" }] : /* istanbul ignore next */ []);
649
+ mcp = computed(() => this.state().mcp, ...ngDevMode ? [{ debugName: "mcp" }] : /* istanbul ignore next */ []);
650
+ load(options = {}) {
651
+ if (this.state().loaded && !options.force) return Promise.resolve();
652
+ if (this.inflight) return this.inflight;
653
+ const done = this.isServer ? this.pendingTasks.add() : void 0;
654
+ const request = this.fetchStatus().then((status) => {
655
+ this.state.set(status);
656
+ if (this.isServer) this.transferState.set(LT_AI_STATUS_STATE_KEY, status);
657
+ }).finally(() => {
658
+ this.inflight = null;
659
+ done?.();
660
+ });
661
+ this.inflight = request;
662
+ return request;
663
+ }
664
+ async fetchStatus() {
665
+ const failed = (error) => ({
666
+ enabled: false,
667
+ error,
668
+ loaded: true,
669
+ mcp: false
670
+ });
671
+ let response;
672
+ try {
673
+ response = await fetch(this.http.buildUrl("/status"), {
674
+ credentials: "omit",
675
+ headers: { accept: "application/json" },
676
+ signal: AbortSignal.timeout(LT_AI_STATUS_TIMEOUT_MS)
677
+ });
678
+ } catch (error) {
679
+ return failed(error?.name === "TimeoutError" ? "AI status request timed out" : "AI status request failed");
680
+ }
681
+ if (response.status === 404) return {
682
+ enabled: false,
683
+ error: null,
684
+ loaded: true,
685
+ mcp: false
686
+ };
687
+ if (!response.ok) return failed(`HTTP ${response.status}`);
688
+ try {
689
+ const body = await response.json();
690
+ if (typeof body?.mcp === "boolean") return {
691
+ enabled: true,
692
+ error: null,
693
+ loaded: true,
694
+ mcp: body.mcp
695
+ };
696
+ } catch {}
697
+ return failed("Unexpected AI status response");
698
+ }
699
+ readTransferred() {
700
+ const transferred = this.transferState.get(LT_AI_STATUS_STATE_KEY, null);
701
+ if (!transferred || transferred.loaded !== true) return INITIAL_STATUS;
702
+ return {
703
+ enabled: transferred.enabled === true,
704
+ error: typeof transferred.error === "string" ? transferred.error : null,
705
+ loaded: true,
706
+ mcp: transferred.enabled === true && transferred.mcp === true
707
+ };
708
+ }
709
+ static ɵfac = i0.ɵɵngDeclareFactory({
710
+ minVersion: "12.0.0",
711
+ version: "22.2.4",
712
+ ngImport: i0,
713
+ type: LtAiStatusService,
714
+ deps: [],
715
+ target: i0.ɵɵFactoryTarget.Service
716
+ });
717
+ static ɵprov = i0.ɵɵngDeclareService({
718
+ minVersion: "22.0.0",
719
+ version: "22.2.4",
720
+ ngImport: i0,
721
+ type: LtAiStatusService
722
+ });
723
+ };
724
+ i0.ɵɵngDeclareClassMetadata({
725
+ minVersion: "12.0.0",
726
+ version: "22.2.4",
727
+ ngImport: i0,
728
+ type: LtAiStatusService,
729
+ decorators: [{ type: Service }]
730
+ });
731
+ var LtAiUsageService = class LtAiUsageService {
732
+ http = inject(LtAiHttpService);
733
+ calls = new LtAiCallState();
734
+ current = signal(null, ...ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []);
735
+ error = this.calls.error;
736
+ loading = this.calls.loading;
737
+ usage = this.current.asReadonly();
738
+ async load() {
739
+ await this.calls.runQuietly(async () => {
740
+ this.current.set(await this.http.request("GET", "/usage") ?? null);
741
+ });
742
+ }
743
+ static ɵfac = i0.ɵɵngDeclareFactory({
744
+ minVersion: "12.0.0",
745
+ version: "22.2.4",
746
+ ngImport: i0,
747
+ type: LtAiUsageService,
748
+ deps: [],
749
+ target: i0.ɵɵFactoryTarget.Service
750
+ });
751
+ static ɵprov = i0.ɵɵngDeclareService({
752
+ minVersion: "22.0.0",
753
+ version: "22.2.4",
754
+ ngImport: i0,
755
+ type: LtAiUsageService
756
+ });
757
+ };
758
+ i0.ɵɵngDeclareClassMetadata({
759
+ minVersion: "12.0.0",
760
+ version: "22.2.4",
761
+ ngImport: i0,
762
+ type: LtAiUsageService,
763
+ decorators: [{ type: Service }]
764
+ });
765
+ export { LT_AI_OPTIONS, LT_AI_SSE_MAX_LINE, LT_AI_STATUS_STATE_KEY, LT_AI_STATUS_TIMEOUT_MS, LtAiAdminService, LtAiConnectionsService, LtAiHttpService, LtAiPlaceholdersService, LtAiPromptsService, LtAiService, LtAiSettingsService, LtAiStatusService, LtAiUsageService, injectLtAiChat, ltAiResponseError, parseLtAiSseStream, provideLtAi };
766
+
767
+ //# sourceMappingURL=lenne.tech-ng-base-ai.mjs.map