@gnggln/ng-ui-system 1.0.0-alpha.2 → 1.0.0-alpha.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 (721) hide show
  1. package/accordion/entry-accordion.d.ts +4 -0
  2. package/accordion/index.d.ts +5 -0
  3. package/accordion/lib/components/accordion/accordion.component.d.ts +125 -0
  4. package/accordion/lib/components/accordion/accordion.types.d.ts +64 -0
  5. package/accordion/lib/components/accordion/index.d.ts +2 -0
  6. package/accordion/lib/core/types/index.d.ts +133 -0
  7. package/base-layout/entry-base-layout.d.ts +4 -0
  8. package/base-layout/index.d.ts +5 -0
  9. package/base-layout/lib/components/base-layout/base-layout.component.d.ts +108 -0
  10. package/base-layout/lib/components/base-layout/base-layout.types.d.ts +40 -0
  11. package/base-layout/lib/components/base-layout/index.d.ts +13 -0
  12. package/base-layout/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  13. package/base-layout/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  14. package/base-layout/lib/components/blackbox/blackbox.service.d.ts +144 -0
  15. package/base-layout/lib/components/blackbox/blackbox.types.d.ts +238 -0
  16. package/base-layout/lib/components/button/button-area.component.d.ts +93 -0
  17. package/base-layout/lib/components/button/button.component.d.ts +61 -0
  18. package/base-layout/lib/components/button/button.types.d.ts +75 -0
  19. package/base-layout/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  20. package/base-layout/lib/components/page-header/page-header.component.d.ts +59 -0
  21. package/base-layout/lib/components/page-header/page-header.types.d.ts +96 -0
  22. package/base-layout/lib/core/types/index.d.ts +133 -0
  23. package/blackbox/entry-blackbox.d.ts +4 -0
  24. package/blackbox/index.d.ts +5 -0
  25. package/blackbox/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  26. package/blackbox/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  27. package/blackbox/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  28. package/blackbox/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  29. package/blackbox/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  30. package/blackbox/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  31. package/blackbox/lib/components/blackbox/blackbox.service.d.ts +144 -0
  32. package/blackbox/lib/components/blackbox/blackbox.types.d.ts +238 -0
  33. package/blackbox/lib/components/blackbox/index.d.ts +23 -0
  34. package/blackbox/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  35. package/blackbox/lib/components/button/button-area.component.d.ts +93 -0
  36. package/blackbox/lib/components/button/button.component.d.ts +61 -0
  37. package/blackbox/lib/components/button/button.types.d.ts +75 -0
  38. package/blackbox/lib/components/button/index.d.ts +15 -0
  39. package/blackbox/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  40. package/blackbox/lib/components/modal/index.d.ts +4 -0
  41. package/blackbox/lib/components/modal/modal.component.d.ts +44 -0
  42. package/blackbox/lib/components/modal/modal.service.d.ts +93 -0
  43. package/blackbox/lib/components/modal/modal.types.d.ts +110 -0
  44. package/blackbox/lib/core/types/index.d.ts +133 -0
  45. package/button/entry-button.d.ts +4 -0
  46. package/button/index.d.ts +5 -0
  47. package/button/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  48. package/button/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  49. package/button/lib/components/blackbox/blackbox.service.d.ts +144 -0
  50. package/button/lib/components/blackbox/blackbox.types.d.ts +238 -0
  51. package/button/lib/components/button/button-area.component.d.ts +93 -0
  52. package/button/lib/components/button/button.component.d.ts +61 -0
  53. package/button/lib/components/button/button.types.d.ts +75 -0
  54. package/button/lib/components/button/index.d.ts +15 -0
  55. package/button/lib/core/types/index.d.ts +133 -0
  56. package/core/entry-core.d.ts +5 -0
  57. package/core/index.d.ts +5 -0
  58. package/core/lib/core/types/index.d.ts +133 -0
  59. package/core/lib/core/utils/index.d.ts +60 -0
  60. package/crud-table/entry-crud-table.d.ts +4 -0
  61. package/crud-table/index.d.ts +5 -0
  62. package/crud-table/lib/components/accordion/accordion.component.d.ts +125 -0
  63. package/crud-table/lib/components/accordion/accordion.types.d.ts +64 -0
  64. package/crud-table/lib/components/accordion/index.d.ts +2 -0
  65. package/crud-table/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  66. package/crud-table/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  67. package/crud-table/lib/components/blackbox/blackbox.service.d.ts +144 -0
  68. package/crud-table/lib/components/blackbox/blackbox.types.d.ts +238 -0
  69. package/crud-table/lib/components/button/button-area.component.d.ts +93 -0
  70. package/crud-table/lib/components/button/button.component.d.ts +61 -0
  71. package/crud-table/lib/components/button/button.types.d.ts +75 -0
  72. package/crud-table/lib/components/button/index.d.ts +15 -0
  73. package/crud-table/lib/components/crud-table/crud-table.component.d.ts +143 -0
  74. package/crud-table/lib/components/crud-table/crud-table.types.d.ts +207 -0
  75. package/crud-table/lib/components/crud-table/index.d.ts +15 -0
  76. package/crud-table/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  77. package/crud-table/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  78. package/crud-table/lib/components/form-builder/form-builder.component.d.ts +279 -0
  79. package/crud-table/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  80. package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  81. package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  82. package/crud-table/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  83. package/crud-table/lib/components/form-builder/services/location.service.d.ts +83 -0
  84. package/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  85. package/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  86. package/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  87. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  88. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  89. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  90. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  91. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  92. package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  93. package/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  94. package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  95. package/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  96. package/crud-table/lib/components/form-builder/types/condition.types.d.ts +51 -0
  97. package/crud-table/lib/components/form-builder/types/field.types.d.ts +330 -0
  98. package/crud-table/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  99. package/crud-table/lib/components/form-builder/types/schema.types.d.ts +304 -0
  100. package/crud-table/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  101. package/crud-table/lib/components/form-builder/types/validation.types.d.ts +179 -0
  102. package/crud-table/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  103. package/crud-table/lib/components/modal/modal.service.d.ts +93 -0
  104. package/crud-table/lib/components/modal/modal.types.d.ts +110 -0
  105. package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
  106. package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
  107. package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
  108. package/crud-table/lib/core/types/index.d.ts +133 -0
  109. package/esm2022/accordion/entry-accordion.mjs +5 -0
  110. package/esm2022/accordion/gnggln-ng-ui-system-accordion.mjs +5 -0
  111. package/esm2022/accordion/lib/components/accordion/accordion.component.mjs +398 -0
  112. package/esm2022/accordion/lib/components/accordion/accordion.types.mjs +6 -0
  113. package/esm2022/accordion/lib/components/accordion/index.mjs +2 -0
  114. package/esm2022/accordion/lib/core/types/index.mjs +6 -0
  115. package/esm2022/base-layout/entry-base-layout.mjs +5 -0
  116. package/esm2022/base-layout/gnggln-ng-ui-system-base-layout.mjs +5 -0
  117. package/esm2022/base-layout/lib/components/base-layout/base-layout.component.mjs +272 -0
  118. package/esm2022/base-layout/lib/components/base-layout/base-layout.types.mjs +6 -0
  119. package/esm2022/base-layout/lib/components/base-layout/index.mjs +14 -0
  120. package/esm2022/base-layout/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  121. package/esm2022/base-layout/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  122. package/esm2022/base-layout/lib/components/blackbox/blackbox.service.mjs +323 -0
  123. package/esm2022/base-layout/lib/components/blackbox/blackbox.types.mjs +25 -0
  124. package/esm2022/base-layout/lib/components/button/button-area.component.mjs +210 -0
  125. package/esm2022/base-layout/lib/components/button/button.component.mjs +180 -0
  126. package/esm2022/base-layout/lib/components/button/button.types.mjs +6 -0
  127. package/esm2022/base-layout/lib/components/page-header/breadcrumb.service.mjs +243 -0
  128. package/esm2022/base-layout/lib/components/page-header/page-header.component.mjs +243 -0
  129. package/esm2022/base-layout/lib/components/page-header/page-header.types.mjs +21 -0
  130. package/esm2022/base-layout/lib/core/types/index.mjs +6 -0
  131. package/esm2022/blackbox/entry-blackbox.mjs +5 -0
  132. package/esm2022/blackbox/gnggln-ng-ui-system-blackbox.mjs +5 -0
  133. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  134. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  135. package/esm2022/blackbox/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  136. package/esm2022/blackbox/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  137. package/esm2022/blackbox/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  138. package/esm2022/blackbox/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  139. package/esm2022/blackbox/lib/components/blackbox/blackbox.service.mjs +323 -0
  140. package/esm2022/blackbox/lib/components/blackbox/blackbox.types.mjs +25 -0
  141. package/esm2022/blackbox/lib/components/blackbox/index.mjs +27 -0
  142. package/esm2022/blackbox/lib/components/blackbox/ui-track.directive.mjs +69 -0
  143. package/esm2022/blackbox/lib/components/button/button-area.component.mjs +210 -0
  144. package/esm2022/blackbox/lib/components/button/button.component.mjs +180 -0
  145. package/esm2022/blackbox/lib/components/button/button.types.mjs +6 -0
  146. package/esm2022/blackbox/lib/components/button/index.mjs +16 -0
  147. package/esm2022/blackbox/lib/components/modal/confirm-dialog.component.mjs +151 -0
  148. package/esm2022/blackbox/lib/components/modal/index.mjs +4 -0
  149. package/esm2022/blackbox/lib/components/modal/modal.component.mjs +139 -0
  150. package/esm2022/blackbox/lib/components/modal/modal.service.mjs +197 -0
  151. package/esm2022/blackbox/lib/components/modal/modal.types.mjs +6 -0
  152. package/esm2022/blackbox/lib/core/types/index.mjs +6 -0
  153. package/esm2022/button/entry-button.mjs +5 -0
  154. package/esm2022/button/gnggln-ng-ui-system-button.mjs +5 -0
  155. package/esm2022/button/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  156. package/esm2022/button/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  157. package/esm2022/button/lib/components/blackbox/blackbox.service.mjs +323 -0
  158. package/esm2022/button/lib/components/blackbox/blackbox.types.mjs +25 -0
  159. package/esm2022/button/lib/components/button/button-area.component.mjs +210 -0
  160. package/esm2022/button/lib/components/button/button.component.mjs +180 -0
  161. package/esm2022/button/lib/components/button/button.types.mjs +6 -0
  162. package/esm2022/button/lib/components/button/index.mjs +16 -0
  163. package/esm2022/button/lib/core/types/index.mjs +6 -0
  164. package/esm2022/core/entry-core.mjs +6 -0
  165. package/esm2022/core/gnggln-ng-ui-system-core.mjs +5 -0
  166. package/esm2022/core/lib/core/types/index.mjs +6 -0
  167. package/esm2022/core/lib/core/utils/index.mjs +102 -0
  168. package/esm2022/crud-table/entry-crud-table.mjs +5 -0
  169. package/esm2022/crud-table/gnggln-ng-ui-system-crud-table.mjs +5 -0
  170. package/esm2022/crud-table/lib/components/accordion/accordion.component.mjs +398 -0
  171. package/esm2022/crud-table/lib/components/accordion/accordion.types.mjs +6 -0
  172. package/esm2022/crud-table/lib/components/accordion/index.mjs +2 -0
  173. package/esm2022/crud-table/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  174. package/esm2022/crud-table/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  175. package/esm2022/crud-table/lib/components/blackbox/blackbox.service.mjs +323 -0
  176. package/esm2022/crud-table/lib/components/blackbox/blackbox.types.mjs +25 -0
  177. package/esm2022/crud-table/lib/components/button/button-area.component.mjs +210 -0
  178. package/esm2022/crud-table/lib/components/button/button.component.mjs +180 -0
  179. package/esm2022/crud-table/lib/components/button/button.types.mjs +6 -0
  180. package/esm2022/crud-table/lib/components/button/index.mjs +16 -0
  181. package/esm2022/crud-table/lib/components/crud-table/crud-table.component.mjs +789 -0
  182. package/esm2022/crud-table/lib/components/crud-table/crud-table.types.mjs +6 -0
  183. package/esm2022/crud-table/lib/components/crud-table/index.mjs +16 -0
  184. package/esm2022/crud-table/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  185. package/esm2022/crud-table/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  186. package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +1351 -0
  187. package/esm2022/crud-table/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  188. package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  189. package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  190. package/esm2022/crud-table/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  191. package/esm2022/crud-table/lib/components/form-builder/services/location.service.mjs +141 -0
  192. package/esm2022/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  193. package/esm2022/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  194. package/esm2022/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  195. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  196. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  197. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  198. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  199. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  200. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  201. package/esm2022/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  202. package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  203. package/esm2022/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  204. package/esm2022/crud-table/lib/components/form-builder/types/condition.types.mjs +6 -0
  205. package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +6 -0
  206. package/esm2022/crud-table/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  207. package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +6 -0
  208. package/esm2022/crud-table/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  209. package/esm2022/crud-table/lib/components/form-builder/types/validation.types.mjs +10 -0
  210. package/esm2022/crud-table/lib/components/modal/confirm-dialog.component.mjs +151 -0
  211. package/esm2022/crud-table/lib/components/modal/modal.service.mjs +197 -0
  212. package/esm2022/crud-table/lib/components/modal/modal.types.mjs +6 -0
  213. package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
  214. package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
  215. package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
  216. package/esm2022/crud-table/lib/core/types/index.mjs +6 -0
  217. package/esm2022/crud-table/lib/sources/location-data.opt.json +8942 -0
  218. package/esm2022/crud-table/lib/sources/nazioni.opt.json +215 -0
  219. package/esm2022/form-builder/entry-form-builder.mjs +5 -0
  220. package/esm2022/form-builder/gnggln-ng-ui-system-form-builder.mjs +5 -0
  221. package/esm2022/form-builder/lib/components/accordion/accordion.component.mjs +398 -0
  222. package/esm2022/form-builder/lib/components/accordion/accordion.types.mjs +6 -0
  223. package/esm2022/form-builder/lib/components/accordion/index.mjs +2 -0
  224. package/esm2022/form-builder/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  225. package/esm2022/form-builder/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  226. package/esm2022/form-builder/lib/components/blackbox/blackbox.service.mjs +323 -0
  227. package/esm2022/form-builder/lib/components/blackbox/blackbox.types.mjs +25 -0
  228. package/esm2022/form-builder/lib/components/button/button-area.component.mjs +210 -0
  229. package/esm2022/form-builder/lib/components/button/button.component.mjs +180 -0
  230. package/esm2022/form-builder/lib/components/button/button.types.mjs +6 -0
  231. package/esm2022/form-builder/lib/components/button/index.mjs +16 -0
  232. package/esm2022/form-builder/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  233. package/esm2022/form-builder/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  234. package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +1351 -0
  235. package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +1064 -0
  236. package/esm2022/form-builder/lib/components/form-builder/index.mjs +24 -0
  237. package/esm2022/form-builder/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  238. package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  239. package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  240. package/esm2022/form-builder/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  241. package/esm2022/form-builder/lib/components/form-builder/services/location.service.mjs +141 -0
  242. package/esm2022/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  243. package/esm2022/form-builder/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
  244. package/esm2022/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  245. package/esm2022/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  246. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  247. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  248. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  249. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  250. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  251. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  252. package/esm2022/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  253. package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  254. package/esm2022/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  255. package/esm2022/form-builder/lib/components/form-builder/types/condition.types.mjs +6 -0
  256. package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +6 -0
  257. package/esm2022/form-builder/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  258. package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +3 -0
  259. package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +6 -0
  260. package/esm2022/form-builder/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  261. package/esm2022/form-builder/lib/components/form-builder/types/validation.types.mjs +10 -0
  262. package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
  263. package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
  264. package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
  265. package/esm2022/form-builder/lib/core/types/index.mjs +6 -0
  266. package/esm2022/form-builder/lib/sources/location-data.opt.json +8942 -0
  267. package/esm2022/form-builder/lib/sources/nazioni.opt.json +215 -0
  268. package/esm2022/form-builder-editor/entry-form-builder-editor.mjs +5 -0
  269. package/esm2022/form-builder-editor/gnggln-ng-ui-system-form-builder-editor.mjs +5 -0
  270. package/esm2022/form-builder-editor/lib/components/accordion/accordion.component.mjs +398 -0
  271. package/esm2022/form-builder-editor/lib/components/accordion/accordion.types.mjs +6 -0
  272. package/esm2022/form-builder-editor/lib/components/accordion/index.mjs +2 -0
  273. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  274. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  275. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.service.mjs +323 -0
  276. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.types.mjs +25 -0
  277. package/esm2022/form-builder-editor/lib/components/button/button-area.component.mjs +210 -0
  278. package/esm2022/form-builder-editor/lib/components/button/button.component.mjs +180 -0
  279. package/esm2022/form-builder-editor/lib/components/button/button.types.mjs +6 -0
  280. package/esm2022/form-builder-editor/lib/components/button/index.mjs +16 -0
  281. package/esm2022/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  282. package/esm2022/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  283. package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +1351 -0
  284. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  285. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  286. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  287. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  288. package/esm2022/form-builder-editor/lib/components/form-builder/services/location.service.mjs +141 -0
  289. package/esm2022/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  290. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  291. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  292. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  293. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  294. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  295. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  296. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  297. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  298. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  299. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  300. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  301. package/esm2022/form-builder-editor/lib/components/form-builder/types/condition.types.mjs +6 -0
  302. package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +6 -0
  303. package/esm2022/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  304. package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +3 -0
  305. package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +6 -0
  306. package/esm2022/form-builder-editor/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  307. package/esm2022/form-builder-editor/lib/components/form-builder/types/validation.types.mjs +10 -0
  308. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
  309. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
  310. package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +23 -0
  311. package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  312. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
  313. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
  314. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
  315. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
  316. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
  317. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
  318. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
  319. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
  320. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
  321. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
  322. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +473 -0
  323. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
  324. package/esm2022/form-builder-editor/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
  325. package/esm2022/form-builder-editor/lib/components/modal/confirm-dialog.component.mjs +151 -0
  326. package/esm2022/form-builder-editor/lib/components/modal/index.mjs +4 -0
  327. package/esm2022/form-builder-editor/lib/components/modal/modal.component.mjs +139 -0
  328. package/esm2022/form-builder-editor/lib/components/modal/modal.service.mjs +197 -0
  329. package/esm2022/form-builder-editor/lib/components/modal/modal.types.mjs +6 -0
  330. package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
  331. package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
  332. package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
  333. package/esm2022/form-builder-editor/lib/core/types/index.mjs +6 -0
  334. package/esm2022/form-builder-editor/lib/sources/location-data.opt.json +8942 -0
  335. package/esm2022/form-builder-editor/lib/sources/nazioni.opt.json +215 -0
  336. package/esm2022/http/entry-http.mjs +5 -0
  337. package/esm2022/http/gnggln-ng-ui-system-http.mjs +5 -0
  338. package/esm2022/http/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  339. package/esm2022/http/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  340. package/esm2022/http/lib/components/blackbox/blackbox.service.mjs +323 -0
  341. package/esm2022/http/lib/components/blackbox/blackbox.types.mjs +25 -0
  342. package/esm2022/http/lib/components/http/http-message.handler.mjs +143 -0
  343. package/esm2022/http/lib/components/http/http.service.mjs +228 -0
  344. package/esm2022/http/lib/components/http/http.tokens.mjs +29 -0
  345. package/esm2022/http/lib/components/http/http.types.mjs +6 -0
  346. package/esm2022/http/lib/components/http/index.mjs +19 -0
  347. package/esm2022/http/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  348. package/esm2022/http/lib/components/layout-builder/layout.service.mjs +239 -0
  349. package/esm2022/http/lib/components/toast/toast-container.component.mjs +80 -0
  350. package/esm2022/http/lib/components/toast/toast.component.mjs +151 -0
  351. package/esm2022/http/lib/components/toast/toast.service.mjs +156 -0
  352. package/esm2022/http/lib/components/toast/toast.types.mjs +12 -0
  353. package/esm2022/http/lib/core/types/index.mjs +6 -0
  354. package/esm2022/http/lib/core/utils/index.mjs +102 -0
  355. package/esm2022/layout-builder/entry-layout-builder.mjs +5 -0
  356. package/esm2022/layout-builder/gnggln-ng-ui-system-layout-builder.mjs +5 -0
  357. package/esm2022/layout-builder/lib/components/layout-builder/index.mjs +18 -0
  358. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.component.mjs +1804 -0
  359. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  360. package/esm2022/layout-builder/lib/components/layout-builder/layout.service.mjs +239 -0
  361. package/esm2022/layout-builder/lib/core/types/index.mjs +6 -0
  362. package/esm2022/lib/components/accordion/accordion.component.mjs +106 -61
  363. package/esm2022/lib/components/accordion/accordion.types.mjs +1 -1
  364. package/esm2022/lib/components/base-layout/base-layout.component.mjs +88 -34
  365. package/esm2022/lib/components/base-layout/base-layout.types.mjs +1 -1
  366. package/esm2022/lib/components/base-layout/index.mjs +1 -1
  367. package/esm2022/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  368. package/esm2022/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  369. package/esm2022/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  370. package/esm2022/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  371. package/esm2022/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  372. package/esm2022/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  373. package/esm2022/lib/components/blackbox/blackbox.service.mjs +323 -0
  374. package/esm2022/lib/components/blackbox/blackbox.types.mjs +25 -0
  375. package/esm2022/lib/components/blackbox/index.mjs +27 -0
  376. package/esm2022/lib/components/blackbox/ui-track.directive.mjs +69 -0
  377. package/esm2022/lib/components/button/button-area.component.mjs +16 -2
  378. package/esm2022/lib/components/button/button.component.mjs +23 -7
  379. package/esm2022/lib/components/button/button.types.mjs +1 -1
  380. package/esm2022/lib/components/crud-table/crud-table.component.mjs +14 -14
  381. package/esm2022/lib/components/form-builder/form-builder.component.mjs +710 -183
  382. package/esm2022/lib/components/form-builder/form-wizard.component.mjs +789 -235
  383. package/esm2022/lib/components/form-builder/index.mjs +7 -2
  384. package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  385. package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  386. package/esm2022/lib/components/form-builder/services/location.service.mjs +4 -3
  387. package/esm2022/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  388. package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +142 -113
  389. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  390. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  391. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  392. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  393. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  394. package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  395. package/esm2022/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  396. package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +3 -3
  397. package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
  398. package/esm2022/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  399. package/esm2022/lib/components/form-builder/types/index.mjs +3 -2
  400. package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
  401. package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -2
  402. package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +3 -3
  403. package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
  404. package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  405. package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +2 -2
  406. package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +2 -1
  407. package/esm2022/lib/components/http/http-message.handler.mjs +143 -0
  408. package/esm2022/lib/components/http/http.service.mjs +228 -0
  409. package/esm2022/lib/components/http/http.tokens.mjs +29 -0
  410. package/esm2022/lib/components/http/http.types.mjs +6 -0
  411. package/esm2022/lib/components/http/index.mjs +19 -0
  412. package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +27 -15
  413. package/esm2022/lib/components/modal/confirm-dialog.component.mjs +3 -3
  414. package/esm2022/lib/components/modal/modal.service.mjs +5 -2
  415. package/esm2022/lib/components/page-header/breadcrumb.service.mjs +5 -4
  416. package/esm2022/lib/components/table/paginated-table.component.mjs +17 -3
  417. package/esm2022/lib/components/table/table.types.mjs +1 -1
  418. package/esm2022/lib/components/toast/index.mjs +18 -0
  419. package/esm2022/lib/components/toast/toast-container.component.mjs +80 -0
  420. package/esm2022/lib/components/toast/toast.component.mjs +151 -0
  421. package/esm2022/lib/components/toast/toast.service.mjs +156 -0
  422. package/esm2022/lib/components/toast/toast.types.mjs +12 -0
  423. package/esm2022/lib/core/logging/index.mjs +10 -0
  424. package/esm2022/lib/core/logging/logger.config.mjs +18 -0
  425. package/esm2022/lib/core/logging/logger.service.mjs +295 -0
  426. package/esm2022/lib/core/logging/logger.types.mjs +7 -0
  427. package/esm2022/lib/core/types/index.mjs +1 -1
  428. package/esm2022/lib/core/utils/index.mjs +50 -1
  429. package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
  430. package/esm2022/modal/entry-modal.mjs +5 -0
  431. package/esm2022/modal/gnggln-ng-ui-system-modal.mjs +5 -0
  432. package/esm2022/modal/lib/components/button/button.component.mjs +180 -0
  433. package/esm2022/modal/lib/components/button/button.types.mjs +6 -0
  434. package/esm2022/modal/lib/components/modal/confirm-dialog.component.mjs +151 -0
  435. package/esm2022/modal/lib/components/modal/index.mjs +4 -0
  436. package/esm2022/modal/lib/components/modal/modal.component.mjs +139 -0
  437. package/esm2022/modal/lib/components/modal/modal.service.mjs +197 -0
  438. package/esm2022/modal/lib/components/modal/modal.types.mjs +6 -0
  439. package/esm2022/modal/lib/core/types/index.mjs +6 -0
  440. package/esm2022/page-header/entry-page-header.mjs +5 -0
  441. package/esm2022/page-header/gnggln-ng-ui-system-page-header.mjs +5 -0
  442. package/esm2022/page-header/lib/components/page-header/breadcrumb.service.mjs +243 -0
  443. package/esm2022/page-header/lib/components/page-header/index.mjs +20 -0
  444. package/esm2022/page-header/lib/components/page-header/page-header.component.mjs +243 -0
  445. package/esm2022/page-header/lib/components/page-header/page-header.types.mjs +21 -0
  446. package/esm2022/public-api.mjs +17 -8
  447. package/esm2022/table/entry-table.mjs +5 -0
  448. package/esm2022/table/gnggln-ng-ui-system-table.mjs +5 -0
  449. package/esm2022/table/lib/components/table/index.mjs +2 -0
  450. package/esm2022/table/lib/components/table/paginated-table.component.mjs +421 -0
  451. package/esm2022/table/lib/components/table/table.types.mjs +6 -0
  452. package/esm2022/table/lib/core/utils/index.mjs +102 -0
  453. package/esm2022/toast/entry-toast.mjs +5 -0
  454. package/esm2022/toast/gnggln-ng-ui-system-toast.mjs +5 -0
  455. package/esm2022/toast/lib/components/toast/index.mjs +18 -0
  456. package/esm2022/toast/lib/components/toast/toast-container.component.mjs +80 -0
  457. package/esm2022/toast/lib/components/toast/toast.component.mjs +151 -0
  458. package/esm2022/toast/lib/components/toast/toast.service.mjs +156 -0
  459. package/esm2022/toast/lib/components/toast/toast.types.mjs +12 -0
  460. package/esm2022/toast/lib/core/types/index.mjs +6 -0
  461. package/esm2022/toast/lib/core/utils/index.mjs +102 -0
  462. package/fesm2022/gnggln-ng-ui-system-accordion.mjs +409 -0
  463. package/fesm2022/gnggln-ng-ui-system-accordion.mjs.map +1 -0
  464. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs +1905 -0
  465. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs.map +1 -0
  466. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs +2829 -0
  467. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs.map +1 -0
  468. package/fesm2022/gnggln-ng-ui-system-button.mjs +1148 -0
  469. package/fesm2022/gnggln-ng-ui-system-button.mjs.map +1 -0
  470. package/fesm2022/gnggln-ng-ui-system-core.mjs +117 -0
  471. package/fesm2022/gnggln-ng-ui-system-core.mjs.map +1 -0
  472. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +49600 -0
  473. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -0
  474. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +54332 -0
  475. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -0
  476. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +49609 -0
  477. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -0
  478. package/fesm2022/gnggln-ng-ui-system-http.mjs +1878 -0
  479. package/fesm2022/gnggln-ng-ui-system-http.mjs.map +1 -0
  480. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs +2064 -0
  481. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs.map +1 -0
  482. package/fesm2022/gnggln-ng-ui-system-modal.mjs +664 -0
  483. package/fesm2022/gnggln-ng-ui-system-modal.mjs.map +1 -0
  484. package/fesm2022/gnggln-ng-ui-system-page-header.mjs +526 -0
  485. package/fesm2022/gnggln-ng-ui-system-page-header.mjs.map +1 -0
  486. package/fesm2022/gnggln-ng-ui-system-table.mjs +533 -0
  487. package/fesm2022/gnggln-ng-ui-system-table.mjs.map +1 -0
  488. package/fesm2022/gnggln-ng-ui-system-toast.mjs +516 -0
  489. package/fesm2022/gnggln-ng-ui-system-toast.mjs.map +1 -0
  490. package/fesm2022/gnggln-ng-ui-system.mjs +10068 -4234
  491. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
  492. package/form-builder/entry-form-builder.d.ts +4 -0
  493. package/form-builder/index.d.ts +5 -0
  494. package/form-builder/lib/components/accordion/accordion.component.d.ts +125 -0
  495. package/form-builder/lib/components/accordion/accordion.types.d.ts +64 -0
  496. package/form-builder/lib/components/accordion/index.d.ts +2 -0
  497. package/form-builder/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  498. package/form-builder/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  499. package/form-builder/lib/components/blackbox/blackbox.service.d.ts +144 -0
  500. package/form-builder/lib/components/blackbox/blackbox.types.d.ts +238 -0
  501. package/form-builder/lib/components/button/button-area.component.d.ts +93 -0
  502. package/form-builder/lib/components/button/button.component.d.ts +61 -0
  503. package/form-builder/lib/components/button/button.types.d.ts +75 -0
  504. package/form-builder/lib/components/button/index.d.ts +15 -0
  505. package/form-builder/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  506. package/form-builder/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  507. package/form-builder/lib/components/form-builder/form-builder.component.d.ts +279 -0
  508. package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +172 -0
  509. package/form-builder/lib/components/form-builder/index.d.ts +19 -0
  510. package/form-builder/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  511. package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  512. package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  513. package/form-builder/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  514. package/form-builder/lib/components/form-builder/services/location.service.d.ts +83 -0
  515. package/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  516. package/form-builder/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
  517. package/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  518. package/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  519. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  520. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  521. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  522. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  523. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  524. package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  525. package/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  526. package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  527. package/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  528. package/form-builder/lib/components/form-builder/types/condition.types.d.ts +51 -0
  529. package/form-builder/lib/components/form-builder/types/field.types.d.ts +330 -0
  530. package/form-builder/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  531. package/form-builder/lib/components/form-builder/types/index.d.ts +6 -0
  532. package/form-builder/lib/components/form-builder/types/schema.types.d.ts +304 -0
  533. package/form-builder/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  534. package/form-builder/lib/components/form-builder/types/validation.types.d.ts +179 -0
  535. package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
  536. package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
  537. package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
  538. package/form-builder/lib/core/types/index.d.ts +133 -0
  539. package/form-builder-editor/entry-form-builder-editor.d.ts +4 -0
  540. package/form-builder-editor/index.d.ts +5 -0
  541. package/form-builder-editor/lib/components/accordion/accordion.component.d.ts +125 -0
  542. package/form-builder-editor/lib/components/accordion/accordion.types.d.ts +64 -0
  543. package/form-builder-editor/lib/components/accordion/index.d.ts +2 -0
  544. package/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  545. package/form-builder-editor/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  546. package/form-builder-editor/lib/components/blackbox/blackbox.service.d.ts +144 -0
  547. package/form-builder-editor/lib/components/blackbox/blackbox.types.d.ts +238 -0
  548. package/form-builder-editor/lib/components/button/button-area.component.d.ts +93 -0
  549. package/form-builder-editor/lib/components/button/button.component.d.ts +61 -0
  550. package/form-builder-editor/lib/components/button/button.types.d.ts +75 -0
  551. package/form-builder-editor/lib/components/button/index.d.ts +15 -0
  552. package/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  553. package/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  554. package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +279 -0
  555. package/form-builder-editor/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  556. package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  557. package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  558. package/form-builder-editor/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  559. package/form-builder-editor/lib/components/form-builder/services/location.service.d.ts +83 -0
  560. package/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  561. package/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  562. package/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  563. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  564. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  565. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  566. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  567. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  568. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  569. package/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  570. package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  571. package/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  572. package/form-builder-editor/lib/components/form-builder/types/condition.types.d.ts +51 -0
  573. package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +330 -0
  574. package/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  575. package/form-builder-editor/lib/components/form-builder/types/index.d.ts +6 -0
  576. package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +304 -0
  577. package/form-builder-editor/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  578. package/form-builder-editor/lib/components/form-builder/types/validation.types.d.ts +179 -0
  579. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
  580. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
  581. package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +17 -0
  582. package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  583. package/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
  584. package/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
  585. package/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
  586. package/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
  587. package/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
  588. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
  589. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
  590. package/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
  591. package/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
  592. package/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
  593. package/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
  594. package/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
  595. package/form-builder-editor/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
  596. package/form-builder-editor/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  597. package/form-builder-editor/lib/components/modal/index.d.ts +4 -0
  598. package/form-builder-editor/lib/components/modal/modal.component.d.ts +44 -0
  599. package/form-builder-editor/lib/components/modal/modal.service.d.ts +93 -0
  600. package/form-builder-editor/lib/components/modal/modal.types.d.ts +110 -0
  601. package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
  602. package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
  603. package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
  604. package/form-builder-editor/lib/core/types/index.d.ts +133 -0
  605. package/http/entry-http.d.ts +4 -0
  606. package/http/index.d.ts +5 -0
  607. package/http/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  608. package/http/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  609. package/http/lib/components/blackbox/blackbox.service.d.ts +144 -0
  610. package/http/lib/components/blackbox/blackbox.types.d.ts +238 -0
  611. package/http/lib/components/http/http-message.handler.d.ts +59 -0
  612. package/http/lib/components/http/http.service.d.ts +98 -0
  613. package/http/lib/components/http/http.tokens.d.ts +29 -0
  614. package/http/lib/components/http/http.types.d.ts +50 -0
  615. package/http/lib/components/http/index.d.ts +17 -0
  616. package/http/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  617. package/http/lib/components/layout-builder/layout.service.d.ts +100 -0
  618. package/http/lib/components/toast/toast-container.component.d.ts +27 -0
  619. package/http/lib/components/toast/toast.component.d.ts +37 -0
  620. package/http/lib/components/toast/toast.service.d.ts +39 -0
  621. package/http/lib/components/toast/toast.types.d.ts +52 -0
  622. package/http/lib/core/types/index.d.ts +133 -0
  623. package/http/lib/core/utils/index.d.ts +60 -0
  624. package/layout-builder/entry-layout-builder.d.ts +4 -0
  625. package/layout-builder/index.d.ts +5 -0
  626. package/layout-builder/lib/components/layout-builder/index.d.ts +16 -0
  627. package/layout-builder/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
  628. package/layout-builder/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  629. package/layout-builder/lib/components/layout-builder/layout.service.d.ts +100 -0
  630. package/layout-builder/lib/core/types/index.d.ts +133 -0
  631. package/lib/components/accordion/accordion.component.d.ts +10 -3
  632. package/lib/components/accordion/accordion.types.d.ts +2 -0
  633. package/lib/components/base-layout/base-layout.component.d.ts +36 -11
  634. package/lib/components/base-layout/base-layout.types.d.ts +14 -0
  635. package/lib/components/base-layout/index.d.ts +1 -1
  636. package/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  637. package/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  638. package/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  639. package/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  640. package/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  641. package/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  642. package/lib/components/blackbox/blackbox.service.d.ts +144 -0
  643. package/lib/components/blackbox/blackbox.types.d.ts +238 -0
  644. package/lib/components/blackbox/index.d.ts +23 -0
  645. package/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  646. package/lib/components/button/button-area.component.d.ts +6 -1
  647. package/lib/components/button/button.component.d.ts +8 -2
  648. package/lib/components/button/button.types.d.ts +5 -0
  649. package/lib/components/form-builder/form-builder.component.d.ts +125 -29
  650. package/lib/components/form-builder/form-wizard.component.d.ts +89 -4
  651. package/lib/components/form-builder/index.d.ts +7 -1
  652. package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  653. package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  654. package/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  655. package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +9 -6
  656. package/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  657. package/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  658. package/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  659. package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  660. package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  661. package/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  662. package/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  663. package/lib/components/form-builder/types/field.types.d.ts +48 -6
  664. package/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  665. package/lib/components/form-builder/types/index.d.ts +4 -3
  666. package/lib/components/form-builder/types/schema.types.d.ts +83 -6
  667. package/lib/components/form-builder/types/validation.types.d.ts +5 -0
  668. package/lib/components/form-builder-editor/index.d.ts +2 -0
  669. package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  670. package/lib/components/http/http-message.handler.d.ts +59 -0
  671. package/lib/components/http/http.service.d.ts +98 -0
  672. package/lib/components/http/http.tokens.d.ts +29 -0
  673. package/lib/components/http/http.types.d.ts +50 -0
  674. package/lib/components/http/index.d.ts +17 -0
  675. package/lib/components/page-header/breadcrumb.service.d.ts +2 -2
  676. package/lib/components/table/table.types.d.ts +5 -0
  677. package/lib/components/toast/index.d.ts +17 -0
  678. package/lib/components/toast/toast-container.component.d.ts +27 -0
  679. package/lib/components/toast/toast.component.d.ts +37 -0
  680. package/lib/components/toast/toast.service.d.ts +39 -0
  681. package/lib/components/toast/toast.types.d.ts +52 -0
  682. package/lib/core/logging/index.d.ts +8 -0
  683. package/lib/core/logging/logger.config.d.ts +18 -0
  684. package/lib/core/logging/logger.service.d.ts +75 -0
  685. package/lib/core/logging/logger.types.d.ts +70 -0
  686. package/lib/core/types/index.d.ts +76 -0
  687. package/lib/core/utils/index.d.ts +31 -0
  688. package/lib/version/ng-ui-system-version.d.ts +9 -0
  689. package/modal/entry-modal.d.ts +4 -0
  690. package/modal/index.d.ts +5 -0
  691. package/modal/lib/components/button/button.component.d.ts +61 -0
  692. package/modal/lib/components/button/button.types.d.ts +75 -0
  693. package/modal/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  694. package/modal/lib/components/modal/index.d.ts +4 -0
  695. package/modal/lib/components/modal/modal.component.d.ts +44 -0
  696. package/modal/lib/components/modal/modal.service.d.ts +93 -0
  697. package/modal/lib/components/modal/modal.types.d.ts +110 -0
  698. package/modal/lib/core/types/index.d.ts +133 -0
  699. package/package.json +93 -8
  700. package/page-header/entry-page-header.d.ts +4 -0
  701. package/page-header/index.d.ts +5 -0
  702. package/page-header/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  703. package/page-header/lib/components/page-header/index.d.ts +16 -0
  704. package/page-header/lib/components/page-header/page-header.component.d.ts +59 -0
  705. package/page-header/lib/components/page-header/page-header.types.d.ts +96 -0
  706. package/public-api.d.ts +11 -6
  707. package/table/entry-table.d.ts +4 -0
  708. package/table/index.d.ts +5 -0
  709. package/table/lib/components/table/index.d.ts +2 -0
  710. package/table/lib/components/table/paginated-table.component.d.ts +85 -0
  711. package/table/lib/components/table/table.types.d.ts +86 -0
  712. package/table/lib/core/utils/index.d.ts +60 -0
  713. package/toast/entry-toast.d.ts +4 -0
  714. package/toast/index.d.ts +5 -0
  715. package/toast/lib/components/toast/index.d.ts +17 -0
  716. package/toast/lib/components/toast/toast-container.component.d.ts +27 -0
  717. package/toast/lib/components/toast/toast.component.d.ts +37 -0
  718. package/toast/lib/components/toast/toast.service.d.ts +39 -0
  719. package/toast/lib/components/toast/toast.types.d.ts +52 -0
  720. package/toast/lib/core/types/index.d.ts +133 -0
  721. package/toast/lib/core/utils/index.d.ts +60 -0
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @module ng-ui-system/blackbox
3
+ * HTTP interceptor for BlackBox — captures requests marked with
4
+ * the `X-Ui-Blackbox` header.
5
+ *
6
+ * @usageNotes
7
+ * ### Setup (functional interceptor, Angular 17+)
8
+ * ```typescript
9
+ * // app.config.ts
10
+ * import { provideHttpClient, withInterceptors } from '@angular/common/http';
11
+ * import { uiBlackboxInterceptor } from '@gnggln/ng-ui-system';
12
+ *
13
+ * export const appConfig: ApplicationConfig = {
14
+ * providers: [
15
+ * provideHttpClient(withInterceptors([uiBlackboxInterceptor])),
16
+ * ],
17
+ * };
18
+ * ```
19
+ *
20
+ * ### Marking a request
21
+ * ```typescript
22
+ * this.http.get('/api/data', {
23
+ * headers: new HttpHeaders({
24
+ * 'X-Ui-Blackbox': 'true',
25
+ * // Optional: filter response headers to capture
26
+ * 'X-Ui-Blackbox-Headers': 'x-request-id|x-correlation-.*',
27
+ * }),
28
+ * });
29
+ * ```
30
+ */
31
+ import { HttpResponse } from '@angular/common/http';
32
+ import { inject } from '@angular/core';
33
+ import { tap, catchError } from 'rxjs/operators';
34
+ import { throwError } from 'rxjs';
35
+ import { UiBlackboxService } from './blackbox.service';
36
+ /** Header name used to mark a request for BlackBox tracking. */
37
+ const MARKER_HEADER = 'X-Ui-Blackbox';
38
+ /** Header name specifying a regex to filter response headers to capture. */
39
+ const HEADER_FILTER = 'X-Ui-Blackbox-Headers';
40
+ /**
41
+ * Angular functional HTTP interceptor for BlackBox.
42
+ *
43
+ * Only processes requests that include the `X-Ui-Blackbox` header.
44
+ * Strips the custom headers before forwarding the request to the server.
45
+ */
46
+ export const uiBlackboxInterceptor = (req, next) => {
47
+ // Only intercept marked requests
48
+ if (!req.headers.has(MARKER_HEADER)) {
49
+ return next(req);
50
+ }
51
+ const blackbox = inject(UiBlackboxService);
52
+ const headerFilter = req.headers.get(HEADER_FILTER) ?? undefined;
53
+ const startTime = Date.now();
54
+ // Strip custom headers before forwarding
55
+ const cleanReq = req.clone({
56
+ headers: req.headers.delete(MARKER_HEADER).delete(HEADER_FILTER),
57
+ });
58
+ // Capture request payload
59
+ const requestPayload = extractPayload(cleanReq);
60
+ return next(cleanReq).pipe(tap((event) => {
61
+ if (event instanceof HttpResponse) {
62
+ const call = {
63
+ timestamp: startTime,
64
+ method: cleanReq.method,
65
+ url: cleanReq.urlWithParams,
66
+ status: event.status,
67
+ durationMs: Date.now() - startTime,
68
+ requestPayload,
69
+ responseHeaders: filterHeaders(event.headers, headerFilter),
70
+ headerFilter,
71
+ };
72
+ blackbox.trackHttpCall(call);
73
+ }
74
+ }), catchError((error) => {
75
+ const call = {
76
+ timestamp: startTime,
77
+ method: cleanReq.method,
78
+ url: cleanReq.urlWithParams,
79
+ status: error.status ?? 0,
80
+ durationMs: Date.now() - startTime,
81
+ requestPayload,
82
+ headerFilter,
83
+ };
84
+ blackbox.trackHttpCall(call);
85
+ return throwError(() => error);
86
+ }));
87
+ };
88
+ // ─── Helpers ─────────────────────────────────────────────────────────
89
+ /**
90
+ * Extract the request body in a serialisable form.
91
+ * @internal
92
+ */
93
+ function extractPayload(req) {
94
+ if (req.body === null || req.body === undefined)
95
+ return undefined;
96
+ // Already serialisable (object / string / number)
97
+ if (typeof req.body !== 'object')
98
+ return req.body;
99
+ try {
100
+ // Deep-clone to avoid mutation issues
101
+ return JSON.parse(JSON.stringify(req.body));
102
+ }
103
+ catch {
104
+ return '[unserializable]';
105
+ }
106
+ }
107
+ /**
108
+ * Filter response headers using a regex pattern.
109
+ * Returns undefined if no pattern is provided or no headers match.
110
+ * @internal
111
+ */
112
+ function filterHeaders(headers, pattern) {
113
+ if (!pattern)
114
+ return undefined;
115
+ try {
116
+ const regex = new RegExp(pattern, 'i');
117
+ const result = {};
118
+ let found = false;
119
+ for (const key of headers.keys()) {
120
+ if (regex.test(key)) {
121
+ const value = headers.get(key);
122
+ if (value !== null) {
123
+ result[key] = value;
124
+ found = true;
125
+ }
126
+ }
127
+ }
128
+ return found ? result : undefined;
129
+ }
130
+ catch {
131
+ // Invalid regex — skip header filtering
132
+ return undefined;
133
+ }
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhY2tib3guaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2JsYWNrYm94L2JsYWNrYm94LmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUVILE9BQU8sRUFBa0MsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdkQsZ0VBQWdFO0FBQ2hFLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUV0Qyw0RUFBNEU7QUFDNUUsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUM7QUFFOUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDcEUsaUNBQWlDO0lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDakUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTdCLHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO0tBQ2pFLENBQUMsQ0FBQztJQUVILDBCQUEwQjtJQUMxQixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxHQUF1QjtnQkFDL0IsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxhQUFhO2dCQUMzQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUztnQkFDbEMsY0FBYztnQkFDZCxlQUFlLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO2dCQUMzRCxZQUFZO2FBQ2IsQ0FBQztZQUNGLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ25CLE1BQU0sSUFBSSxHQUF1QjtZQUMvQixTQUFTLEVBQUUsU0FBUztZQUNwQixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdkIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxhQUFhO1lBQzNCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTO1lBQ2xDLGNBQWM7WUFDZCxZQUFZO1NBQ2IsQ0FBQztRQUNGLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLHdFQUF3RTtBQUV4RTs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxHQUF5QjtJQUMvQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2xFLGtEQUFrRDtJQUNsRCxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xELElBQUksQ0FBQztRQUNILHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FDcEIsT0FBK0QsRUFDL0QsT0FBZ0I7SUFFaEIsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUUvQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQ3BCLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCx3Q0FBd0M7UUFDeEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG1vZHVsZSBuZy11aS1zeXN0ZW0vYmxhY2tib3hcclxuICogSFRUUCBpbnRlcmNlcHRvciBmb3IgQmxhY2tCb3gg4oCUIGNhcHR1cmVzIHJlcXVlc3RzIG1hcmtlZCB3aXRoXHJcbiAqIHRoZSBgWC1VaS1CbGFja2JveGAgaGVhZGVyLlxyXG4gKlxyXG4gKiBAdXNhZ2VOb3Rlc1xyXG4gKiAjIyMgU2V0dXAgKGZ1bmN0aW9uYWwgaW50ZXJjZXB0b3IsIEFuZ3VsYXIgMTcrKVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIGFwcC5jb25maWcudHNcclxuICogaW1wb3J0IHsgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbiAqIGltcG9ydCB7IHVpQmxhY2tib3hJbnRlcmNlcHRvciB9IGZyb20gJ0BnbmdnbG4vbmctdWktc3lzdGVtJztcclxuICpcclxuICogZXhwb3J0IGNvbnN0IGFwcENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7XHJcbiAqICAgcHJvdmlkZXJzOiBbXHJcbiAqICAgICBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzKFt1aUJsYWNrYm94SW50ZXJjZXB0b3JdKSksXHJcbiAqICAgXSxcclxuICogfTtcclxuICogYGBgXHJcbiAqXHJcbiAqICMjIyBNYXJraW5nIGEgcmVxdWVzdFxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIHRoaXMuaHR0cC5nZXQoJy9hcGkvZGF0YScsIHtcclxuICogICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gKiAgICAgJ1gtVWktQmxhY2tib3gnOiAndHJ1ZScsXHJcbiAqICAgICAvLyBPcHRpb25hbDogZmlsdGVyIHJlc3BvbnNlIGhlYWRlcnMgdG8gY2FwdHVyZVxyXG4gKiAgICAgJ1gtVWktQmxhY2tib3gtSGVhZGVycyc6ICd4LXJlcXVlc3QtaWR8eC1jb3JyZWxhdGlvbi0uKicsXHJcbiAqICAgfSksXHJcbiAqIH0pO1xyXG4gKiBgYGBcclxuICovXHJcblxyXG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgVWlCbGFja2JveFNlcnZpY2UgfSBmcm9tICcuL2JsYWNrYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgdHlwZSB7IFVpQmxhY2tib3hIdHRwQ2FsbCB9IGZyb20gJy4vYmxhY2tib3gudHlwZXMnO1xyXG5cclxuLyoqIEhlYWRlciBuYW1lIHVzZWQgdG8gbWFyayBhIHJlcXVlc3QgZm9yIEJsYWNrQm94IHRyYWNraW5nLiAqL1xyXG5jb25zdCBNQVJLRVJfSEVBREVSID0gJ1gtVWktQmxhY2tib3gnO1xyXG5cclxuLyoqIEhlYWRlciBuYW1lIHNwZWNpZnlpbmcgYSByZWdleCB0byBmaWx0ZXIgcmVzcG9uc2UgaGVhZGVycyB0byBjYXB0dXJlLiAqL1xyXG5jb25zdCBIRUFERVJfRklMVEVSID0gJ1gtVWktQmxhY2tib3gtSGVhZGVycyc7XHJcblxyXG4vKipcclxuICogQW5ndWxhciBmdW5jdGlvbmFsIEhUVFAgaW50ZXJjZXB0b3IgZm9yIEJsYWNrQm94LlxyXG4gKlxyXG4gKiBPbmx5IHByb2Nlc3NlcyByZXF1ZXN0cyB0aGF0IGluY2x1ZGUgdGhlIGBYLVVpLUJsYWNrYm94YCBoZWFkZXIuXHJcbiAqIFN0cmlwcyB0aGUgY3VzdG9tIGhlYWRlcnMgYmVmb3JlIGZvcndhcmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci5cclxuICovXHJcbmV4cG9ydCBjb25zdCB1aUJsYWNrYm94SW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xyXG4gIC8vIE9ubHkgaW50ZXJjZXB0IG1hcmtlZCByZXF1ZXN0c1xyXG4gIGlmICghcmVxLmhlYWRlcnMuaGFzKE1BUktFUl9IRUFERVIpKSB7XHJcbiAgICByZXR1cm4gbmV4dChyZXEpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgYmxhY2tib3ggPSBpbmplY3QoVWlCbGFja2JveFNlcnZpY2UpO1xyXG4gIGNvbnN0IGhlYWRlckZpbHRlciA9IHJlcS5oZWFkZXJzLmdldChIRUFERVJfRklMVEVSKSA/PyB1bmRlZmluZWQ7XHJcbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuXHJcbiAgLy8gU3RyaXAgY3VzdG9tIGhlYWRlcnMgYmVmb3JlIGZvcndhcmRpbmdcclxuICBjb25zdCBjbGVhblJlcSA9IHJlcS5jbG9uZSh7XHJcbiAgICBoZWFkZXJzOiByZXEuaGVhZGVycy5kZWxldGUoTUFSS0VSX0hFQURFUikuZGVsZXRlKEhFQURFUl9GSUxURVIpLFxyXG4gIH0pO1xyXG5cclxuICAvLyBDYXB0dXJlIHJlcXVlc3QgcGF5bG9hZFxyXG4gIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gZXh0cmFjdFBheWxvYWQoY2xlYW5SZXEpO1xyXG5cclxuICByZXR1cm4gbmV4dChjbGVhblJlcSkucGlwZShcclxuICAgIHRhcCgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbDogVWlCbGFja2JveEh0dHBDYWxsID0ge1xyXG4gICAgICAgICAgdGltZXN0YW1wOiBzdGFydFRpbWUsXHJcbiAgICAgICAgICBtZXRob2Q6IGNsZWFuUmVxLm1ldGhvZCxcclxuICAgICAgICAgIHVybDogY2xlYW5SZXEudXJsV2l0aFBhcmFtcyxcclxuICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxyXG4gICAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSxcclxuICAgICAgICAgIHJlcXVlc3RQYXlsb2FkLFxyXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzOiBmaWx0ZXJIZWFkZXJzKGV2ZW50LmhlYWRlcnMsIGhlYWRlckZpbHRlciksXHJcbiAgICAgICAgICBoZWFkZXJGaWx0ZXIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBibGFja2JveC50cmFja0h0dHBDYWxsKGNhbGwpO1xyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbGw6IFVpQmxhY2tib3hIdHRwQ2FsbCA9IHtcclxuICAgICAgICB0aW1lc3RhbXA6IHN0YXJ0VGltZSxcclxuICAgICAgICBtZXRob2Q6IGNsZWFuUmVxLm1ldGhvZCxcclxuICAgICAgICB1cmw6IGNsZWFuUmVxLnVybFdpdGhQYXJhbXMsXHJcbiAgICAgICAgc3RhdHVzOiBlcnJvci5zdGF0dXMgPz8gMCxcclxuICAgICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRUaW1lLFxyXG4gICAgICAgIHJlcXVlc3RQYXlsb2FkLFxyXG4gICAgICAgIGhlYWRlckZpbHRlcixcclxuICAgICAgfTtcclxuICAgICAgYmxhY2tib3gudHJhY2tIdHRwQ2FsbChjYWxsKTtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgfSksXHJcbiAgKTtcclxufTtcclxuXHJcbi8vIOKUgOKUgOKUgCBIZWxwZXJzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3QgdGhlIHJlcXVlc3QgYm9keSBpbiBhIHNlcmlhbGlzYWJsZSBmb3JtLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIGV4dHJhY3RQYXlsb2FkKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pOiBhbnkge1xyXG4gIGlmIChyZXEuYm9keSA9PT0gbnVsbCB8fCByZXEuYm9keSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIC8vIEFscmVhZHkgc2VyaWFsaXNhYmxlIChvYmplY3QgLyBzdHJpbmcgLyBudW1iZXIpXHJcbiAgaWYgKHR5cGVvZiByZXEuYm9keSAhPT0gJ29iamVjdCcpIHJldHVybiByZXEuYm9keTtcclxuICB0cnkge1xyXG4gICAgLy8gRGVlcC1jbG9uZSB0byBhdm9pZCBtdXRhdGlvbiBpc3N1ZXNcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcS5ib2R5KSk7XHJcbiAgfSBjYXRjaCB7XHJcbiAgICByZXR1cm4gJ1t1bnNlcmlhbGl6YWJsZV0nO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbHRlciByZXNwb25zZSBoZWFkZXJzIHVzaW5nIGEgcmVnZXggcGF0dGVybi5cclxuICogUmV0dXJucyB1bmRlZmluZWQgaWYgbm8gcGF0dGVybiBpcyBwcm92aWRlZCBvciBubyBoZWFkZXJzIG1hdGNoLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIGZpbHRlckhlYWRlcnMoXHJcbiAgaGVhZGVyczogeyBrZXlzKCk6IHN0cmluZ1tdOyBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB9LFxyXG4gIHBhdHRlcm4/OiBzdHJpbmcsXHJcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xyXG4gIGlmICghcGF0dGVybikgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCAnaScpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBoZWFkZXJzLmtleXMoKSkge1xyXG4gICAgICBpZiAocmVnZXgudGVzdChrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXJzLmdldChrZXkpO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm91bmQgPyByZXN1bHQgOiB1bmRlZmluZWQ7XHJcbiAgfSBjYXRjaCB7XHJcbiAgICAvLyBJbnZhbGlkIHJlZ2V4IOKAlCBza2lwIGhlYWRlciBmaWx0ZXJpbmdcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,323 @@
1
+ /**
2
+ * @module ng-ui-system/blackbox
3
+ * Core BlackBox observability service — the main entry point for session
4
+ * recording, event buffering, and export.
5
+ *
6
+ * Architecture:
7
+ * - Root singleton (`providedIn: 'root'`)
8
+ * - On first inject: generates fingerprint, creates session, subscribes to Router events
9
+ * - Centralised in-memory buffer with periodic/threshold-based flush to IndexedDB
10
+ * - `window:beforeunload` triggers a final best-effort async flush
11
+ */
12
+ import { Injectable, inject, PLATFORM_ID, NgZone, } from '@angular/core';
13
+ import { isPlatformBrowser } from '@angular/common';
14
+ import { Router, NavigationEnd } from '@angular/router';
15
+ import { Subject } from 'rxjs';
16
+ import { filter, takeUntil } from 'rxjs/operators';
17
+ import { UI_BLACKBOX_DEFAULTS, } from './blackbox.types';
18
+ import { UiBlackboxFingerprintService } from './blackbox-fingerprint.service';
19
+ import { UiBlackboxStorageService } from './blackbox-storage.service';
20
+ import * as i0 from "@angular/core";
21
+ /**
22
+ * Central BlackBox observability service.
23
+ *
24
+ * Records navigation, UI interactions, form events, and HTTP calls
25
+ * into compressed sessions stored in IndexedDB.
26
+ *
27
+ * @usageNotes
28
+ * The service activates automatically when injected. Provide it at root level
29
+ * and it will start recording immediately.
30
+ *
31
+ * ```typescript
32
+ * // app.config.ts — just importing the service is enough
33
+ * import { UiBlackboxService } from '@gnggln/ng-ui-system';
34
+ *
35
+ * export const appConfig: ApplicationConfig = {
36
+ * providers: [
37
+ * // The service is providedIn: 'root', so it's auto-provided.
38
+ * // To force eager initialisation:
39
+ * { provide: APP_INITIALIZER, useFactory: () => () => inject(UiBlackboxService), multi: true },
40
+ * ],
41
+ * };
42
+ * ```
43
+ */
44
+ export class UiBlackboxService {
45
+ constructor() {
46
+ this.platformId = inject(PLATFORM_ID);
47
+ this.router = inject(Router);
48
+ this.zone = inject(NgZone);
49
+ this.fingerprint = inject(UiBlackboxFingerprintService);
50
+ this.storage = inject(UiBlackboxStorageService);
51
+ this.destroy$ = new Subject();
52
+ this.config = { ...UI_BLACKBOX_DEFAULTS };
53
+ this.currentStep = null;
54
+ this.initialised = false;
55
+ // ─── Centralised event buffer ──────────────────────────────────────
56
+ this.buffer = [];
57
+ this.flushTimerId = null;
58
+ this.beforeUnloadHandler = null;
59
+ if (isPlatformBrowser(this.platformId)) {
60
+ this.init();
61
+ }
62
+ }
63
+ // ─── Initialisation ────────────────────────────────────────────────
64
+ async init() {
65
+ // Generate session ID
66
+ const sessionId = this.generateUuid();
67
+ const fp = await this.fingerprint.getFingerprint();
68
+ this.session = {
69
+ sessionId,
70
+ fingerprint: fp,
71
+ startedAt: Date.now(),
72
+ userAgent: navigator.userAgent,
73
+ steps: [],
74
+ formEvents: [],
75
+ calls: [],
76
+ };
77
+ // Create initial step from current URL
78
+ this.currentStep = {
79
+ timestamp: Date.now(),
80
+ route: this.router.url,
81
+ actions: [],
82
+ };
83
+ this.session.steps.push(this.currentStep);
84
+ // Subscribe to router navigation
85
+ this.router.events
86
+ .pipe(filter((e) => e instanceof NavigationEnd), takeUntil(this.destroy$))
87
+ .subscribe((event) => {
88
+ const previousRoute = this.currentStep?.route;
89
+ this.currentStep = {
90
+ timestamp: Date.now(),
91
+ route: event.urlAfterRedirects,
92
+ previousRoute,
93
+ actions: [],
94
+ };
95
+ this.pushBufferEvent({ kind: 'step', payload: this.currentStep });
96
+ });
97
+ // Setup periodic flush (outside Angular zone to avoid triggering CD)
98
+ this.zone.runOutsideAngular(() => {
99
+ this.flushTimerId = setInterval(() => this.flush(), this.config.flushIntervalMs);
100
+ // Best-effort flush on tab close (IndexedDB is async, no sync fallback)
101
+ this.beforeUnloadHandler = () => {
102
+ this.session.endedAt = Date.now();
103
+ void this.flush();
104
+ };
105
+ window.addEventListener('beforeunload', this.beforeUnloadHandler);
106
+ });
107
+ this.initialised = true;
108
+ }
109
+ // ─── Public API: Configuration ─────────────────────────────────────
110
+ /**
111
+ * Update the BlackBox configuration.
112
+ * Can be called at any time; changes take effect immediately.
113
+ */
114
+ configure(config) {
115
+ this.config = {
116
+ ...this.config,
117
+ ...config,
118
+ formTracking: {
119
+ ...this.config.formTracking,
120
+ ...(config.formTracking ?? {}),
121
+ },
122
+ };
123
+ this.storage.setMaxStorageMb(this.config.maxStorageMb);
124
+ // Restart flush timer with new interval
125
+ if (this.flushTimerId !== null) {
126
+ clearInterval(this.flushTimerId);
127
+ this.zone.runOutsideAngular(() => {
128
+ this.flushTimerId = setInterval(() => this.flush(), this.config.flushIntervalMs);
129
+ });
130
+ }
131
+ }
132
+ /** Returns the current configuration (readonly snapshot). */
133
+ getConfig() {
134
+ return { ...this.config };
135
+ }
136
+ // ─── Public API: Tracking ──────────────────────────────────────────
137
+ /**
138
+ * Manually track a UI action (click).
139
+ *
140
+ * Called automatically by `UiButtonAreaComponent` and the `[uiTrack]` directive.
141
+ * Can also be called programmatically for custom interactions.
142
+ *
143
+ * @param trackId - Identifier for the action (e.g. button id, link name).
144
+ * @param meta - Optional metadata: `tag`, `text`, `id` of the element.
145
+ */
146
+ trackAction(trackId, meta) {
147
+ if (!this.initialised)
148
+ return;
149
+ const action = {
150
+ timestamp: Date.now(),
151
+ type: 'click',
152
+ target: {
153
+ tag: meta?.tag ?? 'unknown',
154
+ id: meta?.id,
155
+ trackId,
156
+ text: meta?.text?.substring(0, 50),
157
+ },
158
+ };
159
+ // Add to current step immediately (for in-memory session access)
160
+ this.currentStep?.actions.push(action);
161
+ // Also push to buffer for persistence
162
+ this.pushBufferEvent({
163
+ kind: 'action',
164
+ payload: { ...action, route: this.currentStep?.route ?? this.router.url },
165
+ });
166
+ }
167
+ /**
168
+ * Track a form interaction event.
169
+ *
170
+ * Called automatically by `UiFormBuilderComponent` when the BlackBox
171
+ * service is available.
172
+ */
173
+ trackFormEvent(event) {
174
+ if (!this.initialised)
175
+ return;
176
+ this.session.formEvents.push(event);
177
+ this.pushBufferEvent({ kind: 'formEvent', payload: event });
178
+ }
179
+ /**
180
+ * Track an intercepted HTTP call.
181
+ * Called by `UiBlackboxInterceptor`.
182
+ * @internal
183
+ */
184
+ trackHttpCall(call) {
185
+ if (!this.initialised)
186
+ return;
187
+ this.session.calls.push(call);
188
+ this.pushBufferEvent({ kind: 'httpCall', payload: call });
189
+ }
190
+ // ─── Public API: Session access ────────────────────────────────────
191
+ /**
192
+ * Returns the current in-memory session (live, not yet flushed).
193
+ * Useful for debugging or real-time inspection.
194
+ */
195
+ getCurrentSession() {
196
+ return this.session;
197
+ }
198
+ /**
199
+ * Retrieve all sessions stored in IndexedDB (decompressed).
200
+ */
201
+ async getSessionHistory() {
202
+ return this.storage.getAllSessions();
203
+ }
204
+ /**
205
+ * Retrieve sessions for the current device fingerprint.
206
+ */
207
+ async getSessionsForDevice() {
208
+ const fp = await this.fingerprint.getFingerprint();
209
+ return this.storage.getSessionsByFingerprint(fp);
210
+ }
211
+ // ─── Public API: Export ────────────────────────────────────────────
212
+ /**
213
+ * Export all sessions as a downloadable JSONL Blob.
214
+ *
215
+ * @returns A Blob containing JSONL data (one session per line).
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * const blob = await blackbox.exportSessions();
220
+ * const url = URL.createObjectURL(blob);
221
+ * const a = document.createElement('a');
222
+ * a.href = url;
223
+ * a.download = 'blackbox-sessions.jsonl';
224
+ * a.click();
225
+ * ```
226
+ */
227
+ async exportSessions() {
228
+ // Flush current session first
229
+ await this.flush();
230
+ return this.storage.exportDump();
231
+ }
232
+ // ─── Public API: Lifecycle ─────────────────────────────────────────
233
+ /**
234
+ * Explicitly end the current session.
235
+ * Flushes all buffered events and marks the session as ended.
236
+ */
237
+ async endSession() {
238
+ if (!this.initialised)
239
+ return;
240
+ this.session.endedAt = Date.now();
241
+ await this.flush();
242
+ }
243
+ /**
244
+ * Clear all stored sessions from IndexedDB.
245
+ */
246
+ async clearHistory() {
247
+ return this.storage.clearAll();
248
+ }
249
+ // ─── Buffer management ─────────────────────────────────────────────
250
+ /**
251
+ * Push an event into the centralised buffer.
252
+ * Triggers an immediate flush if the buffer exceeds the threshold.
253
+ * @internal
254
+ */
255
+ pushBufferEvent(event) {
256
+ this.buffer.push(event);
257
+ if (this.buffer.length >= this.config.flushThreshold) {
258
+ this.flush();
259
+ }
260
+ }
261
+ /**
262
+ * Flush buffered events to IndexedDB asynchronously.
263
+ * @internal
264
+ */
265
+ async flush() {
266
+ if (!this.initialised || this.buffer.length === 0)
267
+ return;
268
+ // Drain buffer
269
+ const events = this.buffer.splice(0);
270
+ // Apply step events to the session
271
+ for (const event of events) {
272
+ if (event.kind === 'step') {
273
+ // Steps are already pushed in real-time; ensure they're in the session
274
+ if (!this.session.steps.includes(event.payload)) {
275
+ this.session.steps.push(event.payload);
276
+ }
277
+ }
278
+ // Actions, formEvents, httpCalls are already pushed in real-time
279
+ // to the in-memory session by trackAction/trackFormEvent/trackHttpCall
280
+ }
281
+ // Save the full session snapshot
282
+ try {
283
+ await this.storage.saveSession(this.session);
284
+ }
285
+ catch (e) {
286
+ // storage error — re-enqueue events for next flush
287
+ console.warn('[UiBlackbox] Storage flush failed:', e);
288
+ }
289
+ }
290
+ // ─── Utilities ─────────────────────────────────────────────────────
291
+ /** Generate a UUID v4. */
292
+ generateUuid() {
293
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
294
+ return crypto.randomUUID();
295
+ }
296
+ // Fallback for older browsers
297
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
298
+ const r = (Math.random() * 16) | 0;
299
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
300
+ return v.toString(16);
301
+ });
302
+ }
303
+ // ─── Cleanup ───────────────────────────────────────────────────────
304
+ ngOnDestroy() {
305
+ this.destroy$.next();
306
+ this.destroy$.complete();
307
+ if (this.flushTimerId !== null) {
308
+ clearInterval(this.flushTimerId);
309
+ }
310
+ if (this.beforeUnloadHandler) {
311
+ window.removeEventListener('beforeunload', this.beforeUnloadHandler);
312
+ }
313
+ // Final flush
314
+ void this.flush();
315
+ }
316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBlackboxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
317
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBlackboxService, providedIn: 'root' }); }
318
+ }
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiBlackboxService, decorators: [{
320
+ type: Injectable,
321
+ args: [{ providedIn: 'root' }]
322
+ }], ctorParameters: () => [] });
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhY2tib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXVpLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvYmxhY2tib3gvYmxhY2tib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sV0FBVyxFQUVYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBU0wsb0JBQW9CLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQW9CNUI7UUFuQmlCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTNDLGFBQVEsR0FBRyxJQUFJLE9B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IjpbIi8qKlxyXG4gKiBAbW9kdWxlIG5nLXVpLXN5c3RlbS9ibGFja2JveFxyXG4gKiBDb3JlIEJsYWNrQm94IG9ic2VydmFiaWxpdHkgc2VydmljZSDigJQgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHNlc3Npb25cclxuICogcmVjb3JkaW5nLCBldmVudCBidWZmZXJpbmcsIGFuZCBleHBvcnQuXHJcbiAqXHJcbiAqIEFyY2hpdGVjdHVyZTpcclxuICogLSBSb290IHNpbmdsZXRvbiAoYHByb3ZpZGVkSW46ICdyb290J2ApXHJcbiAqIC0gT24gZmlyc3QgaW5qZWN0OiBnZW5lcmF0ZXMgZmluZ2VycHJpbnQsIGNyZWF0ZXMgc2Vzc2lvbiwgc3Vic2NyaWJlcyB0byBSb3V0ZXIgZXZlbnRzXHJcbiAqIC0gQ2VudHJhbGlzZWQgaW4tbWVtb3J5IGJ1ZmZlciB3aXRoIHBlcmlvZGljL3RocmVzaG9sZC1iYXNlZCBmbHVzaCB0byBJbmRleGVkREJcclxuICogLSBgd2luZG93OmJlZm9yZXVubG9hZGAgdHJpZ2dlcnMgYSBmaW5hbCBiZXN0LWVmZm9ydCBhc3luYyBmbHVzaFxyXG4gKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgSW5qZWN0YWJsZSxcclxuICBpbmplY3QsXHJcbiAgUExBVEZPUk1fSUQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE5nWm9uZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBVaUJsYWNrYm94Q29uZmlnLFxyXG4gIFVpQmxhY2tib3hGb3JtVHJhY2tpbmdDb25maWcsXHJcbiAgVWlCbGFja2JveFNlc3Npb24sXHJcbiAgVWlCbGFja2JveFN0ZXAsXHJcbiAgVWlCbGFja2JveEFjdGlvbixcclxuICBVaUJsYWNrYm94Rm9ybUV2ZW50LFxyXG4gIFVpQmxhY2tib3hIdHRwQ2FsbCxcclxuICBVaUJsYWNrYm94QnVmZmVyRXZlbnQsXHJcbiAgVUlfQkxBQ0tCT1hfREVGQVVMVFMsXHJcbn0gZnJvbSAnLi9ibGFja2JveC50eXBlcyc7XHJcbmltcG9ydCB7IFVpQmxhY2tib3hGaW5nZXJwcmludFNlcnZpY2UgfSBmcm9tICcuL2JsYWNrYm94LWZpbmdlcnByaW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUJsYWNrYm94U3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2JsYWNrYm94LXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQ2VudHJhbCBCbGFja0JveCBvYnNlcnZhYmlsaXR5IHNlcnZpY2UuXHJcbiAqXHJcbiAqIFJlY29yZHMgbmF2aWdhdGlvbiwgVUkgaW50ZXJhY3Rpb25zLCBmb3JtIGV2ZW50cywgYW5kIEhUVFAgY2FsbHNcclxuICogaW50byBjb21wcmVzc2VkIHNlc3Npb25zIHN0b3JlZCBpbiBJbmRleGVkREIuXHJcbiAqXHJcbiAqIEB1c2FnZU5vdGVzXHJcbiAqIFRoZSBzZXJ2aWNlIGFjdGl2YXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gaW5qZWN0ZWQuIFByb3ZpZGUgaXQgYXQgcm9vdCBsZXZlbFxyXG4gKiBhbmQgaXQgd2lsbCBzdGFydCByZWNvcmRpbmcgaW1tZWRpYXRlbHkuXHJcbiAqXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogLy8gYXBwLmNvbmZpZy50cyDigJQganVzdCBpbXBvcnRpbmcgdGhlIHNlcnZpY2UgaXMgZW5vdWdoXHJcbiAqIGltcG9ydCB7IFVpQmxhY2tib3hTZXJ2aWNlIH0gZnJvbSAnQGduZ2dsbi9uZy11aS1zeXN0ZW0nO1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgYXBwQ29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZyA9IHtcclxuICogICBwcm92aWRlcnM6IFtcclxuICogICAgIC8vIFRoZSBzZXJ2aWNlIGlzIHByb3ZpZGVkSW46ICdyb290Jywgc28gaXQncyBhdXRvLXByb3ZpZGVkLlxyXG4gKiAgICAgLy8gVG8gZm9yY2UgZWFnZXIgaW5pdGlhbGlzYXRpb246XHJcbiAqICAgICB7IHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUiwgdXNlRmFjdG9yeTogKCkgPT4gKCkgPT4gaW5qZWN0KFVpQmxhY2tib3hTZXJ2aWNlKSwgbXVsdGk6IHRydWUgfSxcclxuICogICBdLFxyXG4gKiB9O1xyXG4gKiBgYGBcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBVaUJsYWNrYm94U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmluZ2VycHJpbnQgPSBpbmplY3QoVWlCbGFja2JveEZpbmdlcnByaW50U2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlID0gaW5qZWN0KFVpQmxhY2tib3hTdG9yYWdlU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgY29uZmlnOiBVaUJsYWNrYm94Q29uZmlnID0geyAuLi5VSV9CTEFDS0JPWF9ERUZBVUxUUyB9O1xyXG5cclxuICAvLyDilIDilIDilIAgU2Vzc2lvbiBzdGF0ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBwcml2YXRlIHNlc3Npb24hOiBVaUJsYWNrYm94U2Vzc2lvbjtcclxuICBwcml2YXRlIGN1cnJlbnRTdGVwOiBVaUJsYWNrYm94U3RlcCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaW5pdGlhbGlzZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8g4pSA4pSA4pSAIENlbnRyYWxpc2VkIGV2ZW50IGJ1ZmZlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBwcml2YXRlIGJ1ZmZlcjogVWlCbGFja2JveEJ1ZmZlckV2ZW50W10gPSBbXTtcclxuICBwcml2YXRlIGZsdXNoVGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBiZWZvcmVVbmxvYWRIYW5kbGVyOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBJbml0aWFsaXNhdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gR2VuZXJhdGUgc2Vzc2lvbiBJRFxyXG4gICAgY29uc3Qgc2Vzc2lvbklkID0gdGhpcy5nZW5lcmF0ZVV1aWQoKTtcclxuICAgIGNvbnN0IGZwID0gYXdhaXQgdGhpcy5maW5nZXJwcmludC5nZXRGaW5nZXJwcmludCgpO1xyXG5cclxuICAgIHRoaXMuc2Vzc2lvbiA9IHtcclxuICAgICAgc2Vzc2lvbklkLFxyXG4gICAgICBmaW5nZXJwcmludDogZnAsXHJcbiAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgdXNlckFnZW50OiBuYXZpZ2F0b3IudXNlckFnZW50LFxyXG4gICAgICBzdGVwczogW10sXHJcbiAgICAgIGZvcm1FdmVudHM6IFtdLFxyXG4gICAgICBjYWxsczogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSBpbml0aWFsIHN0ZXAgZnJvbSBjdXJyZW50IFVSTFxyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IHtcclxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgICByb3V0ZTogdGhpcy5yb3V0ZXIudXJsLFxyXG4gICAgICBhY3Rpb25zOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNlc3Npb24uc3RlcHMucHVzaCh0aGlzLmN1cnJlbnRTdGVwKTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gcm91dGVyIG5hdmlnYXRpb25cclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoKGUpOiBlIGlzIE5hdmlnYXRpb25FbmQgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzUm91dGUgPSB0aGlzLmN1cnJlbnRTdGVwPy5yb3V0ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0ge1xyXG4gICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgcm91dGU6IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLFxyXG4gICAgICAgICAgcHJldmlvdXNSb3V0ZSxcclxuICAgICAgICAgIGFjdGlvbnM6IFtdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wdXNoQnVmZmVyRXZlbnQoeyBraW5kOiAnc3RlcCcsIHBheWxvYWQ6IHRoaXMuY3VycmVudFN0ZXAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFNldHVwIHBlcmlvZGljIGZsdXNoIChvdXRzaWRlIEFuZ3VsYXIgem9uZSB0byBhdm9pZCB0cmlnZ2VyaW5nIENEKVxyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5mbHVzaFRpbWVySWQgPSBzZXRJbnRlcnZhbChcclxuICAgICAgICAoKSA9PiB0aGlzLmZsdXNoKCksXHJcbiAgICAgICAgdGhpcy5jb25maWcuZmx1c2hJbnRlcnZhbE1zLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQmVzdC1lZmZvcnQgZmx1c2ggb24gdGFiIGNsb3NlIChJbmRleGVkREIgaXMgYXN5bmMsIG5vIHN5bmMgZmFsbGJhY2spXHJcbiAgICAgIHRoaXMuYmVmb3JlVW5sb2FkSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNlc3Npb24uZW5kZWRBdCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCB0aGlzLmJlZm9yZVVubG9hZEhhbmRsZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUHVibGljIEFQSTogQ29uZmlndXJhdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBCbGFja0JveCBjb25maWd1cmF0aW9uLlxyXG4gICAqIENhbiBiZSBjYWxsZWQgYXQgYW55IHRpbWU7IGNoYW5nZXMgdGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkuXHJcbiAgICovXHJcbiAgY29uZmlndXJlKGNvbmZpZzogUGFydGlhbDxPbWl0PFVpQmxhY2tib3hDb25maWcsICdmb3JtVHJhY2tpbmcnPj4gJiB7IGZvcm1UcmFja2luZz86IFBhcnRpYWw8VWlCbGFja2JveEZvcm1UcmFja2luZ0NvbmZpZz4gfSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxyXG4gICAgICAuLi5jb25maWcsXHJcbiAgICAgIGZvcm1UcmFja2luZzoge1xyXG4gICAgICAgIC4uLnRoaXMuY29uZmlnLmZvcm1UcmFja2luZyxcclxuICAgICAgICAuLi4oY29uZmlnLmZvcm1UcmFja2luZyA/PyB7fSksXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdG9yYWdlLnNldE1heFN0b3JhZ2VNYih0aGlzLmNvbmZpZy5tYXhTdG9yYWdlTWIpO1xyXG5cclxuICAgIC8vIFJlc3RhcnQgZmx1c2ggdGltZXIgd2l0aCBuZXcgaW50ZXJ2YWxcclxuICAgIGlmICh0aGlzLmZsdXNoVGltZXJJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcklkKTtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICB0aGlzLmZsdXNoVGltZXJJZCA9IHNldEludGVydmFsKFxyXG4gICAgICAgICAgKCkgPT4gdGhpcy5mbHVzaCgpLFxyXG4gICAgICAgICAgdGhpcy5jb25maWcuZmx1c2hJbnRlcnZhbE1zLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiAocmVhZG9ubHkgc25hcHNob3QpLiAqL1xyXG4gIGdldENvbmZpZygpOiBSZWFkb25seTxVaUJsYWNrYm94Q29uZmlnPiB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLmNvbmZpZyB9O1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIFB1YmxpYyBBUEk6IFRyYWNraW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKipcclxuICAgKiBNYW51YWxseSB0cmFjayBhIFVJIGFjdGlvbiAoY2xpY2spLlxyXG4gICAqXHJcbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgYFVpQnV0dG9uQXJlYUNvbXBvbmVudGAgYW5kIHRoZSBgW3VpVHJhY2tdYCBkaXJlY3RpdmUuXHJcbiAgICogQ2FuIGFsc28gYmUgY2FsbGVkIHByb2dyYW1tYXRpY2FsbHkgZm9yIGN1c3RvbSBpbnRlcmFjdGlvbnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdHJhY2tJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBhY3Rpb24gKGUuZy4gYnV0dG9uIGlkLCBsaW5rIG5hbWUpLlxyXG4gICAqIEBwYXJhbSBtZXRhIC0gT3B0aW9uYWwgbWV0YWRhdGE6IGB0YWdgLCBgdGV4dGAsIGBpZGAgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgdHJhY2tBY3Rpb24oXHJcbiAgICB0cmFja0lkOiBzdHJpbmcsXHJcbiAgICBtZXRhPzogeyB0YWc/OiBzdHJpbmc7IHRleHQ/OiBzdHJpbmc7IGlkPzogc3RyaW5nIH0sXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGlzZWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhY3Rpb246IFVpQmxhY2tib3hBY3Rpb24gPSB7XHJcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcclxuICAgICAgdHlwZTogJ2NsaWNrJyxcclxuICAgICAgdGFyZ2V0OiB7XHJcbiAgICAgICAgdGFnOiBtZXRhPy50YWcgPz8gJ3Vua25vd24nLFxyXG4gICAgICAgIGlkOiBtZXRhPy5pZCxcclxuICAgICAgICB0cmFja0lkLFxyXG4gICAgICAgIHRleHQ6IG1ldGE/LnRleHQ/LnN1YnN0cmluZygwLCA1MCksXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEFkZCB0byBjdXJyZW50IHN0ZXAgaW1tZWRpYXRlbHkgKGZvciBpbi1tZW1vcnkgc2Vzc2lvbiBhY2Nlc3MpXHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwPy5hY3Rpb25zLnB1c2goYWN0aW9uKTtcclxuXHJcbiAgICAvLyBBbHNvIHB1c2ggdG8gYnVmZmVyIGZvciBwZXJzaXN0ZW5jZVxyXG4gICAgdGhpcy5wdXNoQnVmZmVyRXZlbnQoe1xyXG4gICAgICBraW5kOiAnYWN0aW9uJyxcclxuICAgICAgcGF5bG9hZDogeyAuLi5hY3Rpb24sIHJvdXRlOiB0aGlzLmN1cnJlbnRTdGVwPy5yb3V0ZSA/PyB0aGlzLnJvdXRlci51cmwgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2sgYSBmb3JtIGludGVyYWN0aW9uIGV2ZW50LlxyXG4gICAqXHJcbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgYFVpRm9ybUJ1aWxkZXJDb21wb25lbnRgIHdoZW4gdGhlIEJsYWNrQm94XHJcbiAgICogc2VydmljZSBpcyBhdmFpbGFibGUuXHJcbiAgICovXHJcbiAgdHJhY2tGb3JtRXZlbnQoZXZlbnQ6IFVpQmxhY2tib3hGb3JtRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pbml0aWFsaXNlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2Vzc2lvbi5mb3JtRXZlbnRzLnB1c2goZXZlbnQpO1xyXG4gICAgdGhpcy5wdXNoQnVmZmVyRXZlbnQoeyBraW5kOiAnZm9ybUV2ZW50JywgcGF5bG9hZDogZXZlbnQgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFjayBhbiBpbnRlcmNlcHRlZCBIVFRQIGNhbGwuXHJcbiAgICogQ2FsbGVkIGJ5IGBVaUJsYWNrYm94SW50ZXJjZXB0b3JgLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHRyYWNrSHR0cENhbGwoY2FsbDogVWlCbGFja2JveEh0dHBDYWxsKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGlzZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNlc3Npb24uY2FsbHMucHVzaChjYWxsKTtcclxuICAgIHRoaXMucHVzaEJ1ZmZlckV2ZW50KHsga2luZDogJ2h0dHBDYWxsJywgcGF5bG9hZDogY2FsbCB9KTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBQdWJsaWMgQVBJOiBTZXNzaW9uIGFjY2VzcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBpbi1tZW1vcnkgc2Vzc2lvbiAobGl2ZSwgbm90IHlldCBmbHVzaGVkKS5cclxuICAgKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBvciByZWFsLXRpbWUgaW5zcGVjdGlvbi5cclxuICAgKi9cclxuICBnZXRDdXJyZW50U2Vzc2lvbigpOiBVaUJsYWNrYm94U2Vzc2lvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYWxsIHNlc3Npb25zIHN0b3JlZCBpbiBJbmRleGVkREIgKGRlY29tcHJlc3NlZCkuXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0U2Vzc2lvbkhpc3RvcnkoKTogUHJvbWlzZTxVaUJsYWNrYm94U2Vzc2lvbltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEFsbFNlc3Npb25zKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBzZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnQgZGV2aWNlIGZpbmdlcnByaW50LlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldFNlc3Npb25zRm9yRGV2aWNlKCk6IFByb21pc2U8VWlCbGFja2JveFNlc3Npb25bXT4ge1xyXG4gICAgY29uc3QgZnAgPSBhd2FpdCB0aGlzLmZpbmdlcnByaW50LmdldEZpbmdlcnByaW50KCk7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldFNlc3Npb25zQnlGaW5nZXJwcmludChmcCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUHVibGljIEFQSTogRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKipcclxuICAgKiBFeHBvcnQgYWxsIHNlc3Npb25zIGFzIGEgZG93bmxvYWRhYmxlIEpTT05MIEJsb2IuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBIEJsb2IgY29udGFpbmluZyBKU09OTCBkYXRhIChvbmUgc2Vzc2lvbiBwZXIgbGluZSkuXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCBibG9iID0gYXdhaXQgYmxhY2tib3guZXhwb3J0U2Vzc2lvbnMoKTtcclxuICAgKiBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAqIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICogYS5ocmVmID0gdXJsO1xyXG4gICAqIGEuZG93bmxvYWQgPSAnYmxhY2tib3gtc2Vzc2lvbnMuanNvbmwnO1xyXG4gICAqIGEuY2xpY2soKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBhc3luYyBleHBvcnRTZXNzaW9ucygpOiBQcm9taXNlPEJsb2I+IHtcclxuICAgIC8vIEZsdXNoIGN1cnJlbnQgc2Vzc2lvbiBmaXJzdFxyXG4gICAgYXdhaXQgdGhpcy5mbHVzaCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5leHBvcnREdW1wKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUHVibGljIEFQSTogTGlmZWN5Y2xlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKipcclxuICAgKiBFeHBsaWNpdGx5IGVuZCB0aGUgY3VycmVudCBzZXNzaW9uLlxyXG4gICAqIEZsdXNoZXMgYWxsIGJ1ZmZlcmVkIGV2ZW50cyBhbmQgbWFya3MgdGhlIHNlc3Npb24gYXMgZW5kZWQuXHJcbiAgICovXHJcbiAgYXN5bmMgZW5kU2Vzc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pbml0aWFsaXNlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZXNzaW9uLmVuZGVkQXQgPSBEYXRlLm5vdygpO1xyXG4gICAgYXdhaXQgdGhpcy5mbHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIHN0b3JlZCBzZXNzaW9ucyBmcm9tIEluZGV4ZWREQi5cclxuICAgKi9cclxuICBhc3luYyBjbGVhckhpc3RvcnkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmNsZWFyQWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgQnVmZmVyIG1hbmFnZW1lbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIC8qKlxyXG4gICAqIFB1c2ggYW4gZXZlbnQgaW50byB0aGUgY2VudHJhbGlzZWQgYnVmZmVyLlxyXG4gICAqIFRyaWdnZXJzIGFuIGltbWVkaWF0ZSBmbHVzaCBpZiB0aGUgYnVmZmVyIGV4Y2VlZHMgdGhlIHRocmVzaG9sZC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIHB1c2hCdWZmZXJFdmVudChldmVudDogVWlCbGFja2JveEJ1ZmZlckV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKGV2ZW50KTtcclxuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPj0gdGhpcy5jb25maWcuZmx1c2hUaHJlc2hvbGQpIHtcclxuICAgICAgdGhpcy5mbHVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmx1c2ggYnVmZmVyZWQgZXZlbnRzIHRvIEluZGV4ZWREQiBhc3luY2hyb25vdXNseS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmluaXRpYWxpc2VkIHx8IHRoaXMuYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIERyYWluIGJ1ZmZlclxyXG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5idWZmZXIuc3BsaWNlKDApO1xyXG5cclxuICAgIC8vIEFwcGx5IHN0ZXAgZXZlbnRzIHRvIHRoZSBzZXNzaW9uXHJcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xyXG4gICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgLy8gU3RlcHMgYXJlIGFscmVhZHkgcHVzaGVkIGluIHJlYWwtdGltZTsgZW5zdXJlIHRoZXkncmUgaW4gdGhlIHNlc3Npb25cclxuICAgICAgICBpZiAoIXRoaXMuc2Vzc2lvbi5zdGVwcy5pbmNsdWRlcyhldmVudC5wYXlsb2FkKSkge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uLnN0ZXBzLnB1c2goZXZlbnQucGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIEFjdGlvbnMsIGZvcm1FdmVudHMsIGh0dHBDYWxscyBhcmUgYWxyZWFkeSBwdXNoZWQgaW4gcmVhbC10aW1lXHJcbiAgICAgIC8vIHRvIHRoZSBpbi1tZW1vcnkgc2Vzc2lvbiBieSB0cmFja0FjdGlvbi90cmFja0Zvcm1FdmVudC90cmFja0h0dHBDYWxsXHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2F2ZSB0aGUgZnVsbCBzZXNzaW9uIHNuYXBzaG90XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2F2ZVNlc3Npb24odGhpcy5zZXNzaW9uKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gc3RvcmFnZSBlcnJvciDigJQgcmUtZW5xdWV1ZSBldmVudHMgZm9yIG5leHQgZmx1c2hcclxuICAgICAgY29uc29sZS53YXJuKCdbVWlCbGFja2JveF0gU3RvcmFnZSBmbHVzaCBmYWlsZWQ6JywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgVXRpbGl0aWVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKiogR2VuZXJhdGUgYSBVVUlEIHY0LiAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVVdWlkKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLnJhbmRvbVVVSUQpIHtcclxuICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XHJcbiAgICB9XHJcbiAgICAvLyBGYWxsYmFjayBmb3Igb2xkZXIgYnJvd3NlcnNcclxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XHJcbiAgICAgIGNvbnN0IHIgPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7XHJcbiAgICAgIGNvbnN0IHYgPSBjID09PSAneCcgPyByIDogKHIgJiAweDMpIHwgMHg4O1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBDbGVhbnVwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmZsdXNoVGltZXJJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZmx1c2hUaW1lcklkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5iZWZvcmVVbmxvYWRIYW5kbGVyKSB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCB0aGlzLmJlZm9yZVVubG9hZEhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZpbmFsIGZsdXNoXHJcbiAgICB2b2lkIHRoaXMuZmx1c2goKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module ng-ui-system/blackbox
3
+ * Types and interfaces for the BlackBox observability service.
4
+ *
5
+ * The BlackBox service acts as a "black box recorder" for user sessions,
6
+ * capturing navigation, UI interactions, form events and HTTP calls
7
+ * in a compressed, opaque format stored in IndexedDB.
8
+ */
9
+ // ─── Defaults ────────────────────────────────────────────────────────
10
+ /** Default configuration values. */
11
+ export const UI_BLACKBOX_DEFAULTS = {
12
+ maxStorageMb: 50,
13
+ flushIntervalMs: 5000,
14
+ flushThreshold: 20,
15
+ bufferDebounceMs: 500,
16
+ formTracking: {
17
+ trackValues: false,
18
+ trackFocus: true,
19
+ trackBlur: true,
20
+ trackValueChanges: true,
21
+ trackValidation: true,
22
+ debounceMs: 500,
23
+ },
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhY2tib3gudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2JsYWNrYm94L2JsYWNrYm94LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFtU0gsd0VBQXdFO0FBRXhFLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUI7SUFDcEQsWUFBWSxFQUFFLEVBQUU7SUFDaEIsZUFBZSxFQUFFLElBQUk7SUFDckIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixZQUFZLEVBQUU7UUFDWixXQUFXLEVBQUUsS0FBSztRQUNsQixVQUFVLEVBQUUsSUFBSTtRQUNoQixTQUFTLEVBQUUsSUFBSTtRQUNmLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsZUFBZSxFQUFFLElBQUk7UUFDckIsVUFBVSxFQUFFLEdBQUc7S0FDaEI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBtb2R1bGUgbmctdWktc3lzdGVtL2JsYWNrYm94XHJcbiAqIFR5cGVzIGFuZCBpbnRlcmZhY2VzIGZvciB0aGUgQmxhY2tCb3ggb2JzZXJ2YWJpbGl0eSBzZXJ2aWNlLlxyXG4gKlxyXG4gKiBUaGUgQmxhY2tCb3ggc2VydmljZSBhY3RzIGFzIGEgXCJibGFjayBib3ggcmVjb3JkZXJcIiBmb3IgdXNlciBzZXNzaW9ucyxcclxuICogY2FwdHVyaW5nIG5hdmlnYXRpb24sIFVJIGludGVyYWN0aW9ucywgZm9ybSBldmVudHMgYW5kIEhUVFAgY2FsbHNcclxuICogaW4gYSBjb21wcmVzc2VkLCBvcGFxdWUgZm9ybWF0IHN0b3JlZCBpbiBJbmRleGVkREIuXHJcbiAqL1xyXG5cclxuLy8g4pSA4pSA4pSAIENvbmZpZ3VyYXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKipcclxuICogRm9ybSB0cmFja2luZyBncmFudWxhcml0eSBmbGFncy5cclxuICpcclxuICogQ29udHJvbHMgd2hpY2ggZm9ybSBldmVudHMgYXJlIGNhcHR1cmVkIGJ5IHRoZSBCbGFja0JveCBzZXJ2aWNlLlxyXG4gKiBBbGwgZmxhZ3MgZGVmYXVsdCB0byBgdHJ1ZWAgZXhjZXB0IGB0cmFja1ZhbHVlc2Agd2hpY2ggZGVmYXVsdHMgdG8gYGZhbHNlYFxyXG4gKiBmb3IgcHJpdmFjeSByZWFzb25zLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUJsYWNrYm94Rm9ybVRyYWNraW5nQ29uZmlnIHtcclxuICAvKipcclxuICAgKiBXaGVuIGB0cnVlYCwgdGhlIGFjdHVhbCBmaWVsZCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBmb3JtIGV2ZW50cy5cclxuICAgKiBXaGVuIGBmYWxzZWAsIG9ubHkgdGhlIGZhY3QgdGhhdCBhIGNoYW5nZSBvY2N1cnJlZCBpcyByZWNvcmRlZC5cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIHRyYWNrVmFsdWVzOiBib29sZWFuO1xyXG5cclxuICAvKiogVHJhY2sgZm9jdXMgZXZlbnRzIG9uIGZvcm0gZmllbGRzLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgdHJhY2tGb2N1czogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFRyYWNrIGJsdXIgZXZlbnRzIG9uIGZvcm0gZmllbGRzLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgdHJhY2tCbHVyOiBib29sZWFuO1xyXG5cclxuICAvKiogVHJhY2sgdmFsdWUgY2hhbmdlIGV2ZW50cyBvbiBmb3JtIGZpZWxkcy4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gIHRyYWNrVmFsdWVDaGFuZ2VzOiBib29sZWFuO1xyXG5cclxuICAvKiogVHJhY2sgdmFsaWRhdGlvbiBlcnJvciBldmVudHMgb24gZm9ybSBmaWVsZHMuIEBkZWZhdWx0IHRydWUgKi9cclxuICB0cmFja1ZhbGlkYXRpb246IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYm91bmNlIGludGVydmFsIChtcykgZm9yIGB2YWx1ZUNoYW5nZXNgIHN1YnNjcmlwdGlvbnMuXHJcbiAgICogSGlnaGVyIHZhbHVlcyByZWR1Y2Ugbm9pc2UgYnV0IGluY3JlYXNlIGxhdGVuY3kuXHJcbiAgICogQGRlZmF1bHQgNTAwXHJcbiAgICovXHJcbiAgZGVib3VuY2VNczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogUm9vdCBjb25maWd1cmF0aW9uIGZvciB0aGUgQmxhY2tCb3ggc2VydmljZS5cclxuICpcclxuICogQWxsIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIOKAlCBzZW5zaWJsZSBkZWZhdWx0cyBhcmUgYXBwbGllZCB3aGVuIG9taXR0ZWQuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogYmxhY2tib3hTZXJ2aWNlLmNvbmZpZ3VyZSh7XHJcbiAqICAgbWF4U3RvcmFnZU1iOiAzMCxcclxuICogICBmb3JtVHJhY2tpbmc6IHsgdHJhY2tWYWx1ZXM6IHRydWUsIGRlYm91bmNlTXM6IDEwMDAgfSxcclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUJsYWNrYm94Q29uZmlnIHtcclxuICAvKipcclxuICAgKiBNYXhpbXVtIEluZGV4ZWREQiBzdG9yYWdlIHF1b3RhIGluIG1lZ2FieXRlcy5cclxuICAgKiBPbGRlc3Qgc2Vzc2lvbnMgYXJlIHBydW5lZCB3aGVuIHRoZSBxdW90YSBpcyBleGNlZWRlZC5cclxuICAgKiBAZGVmYXVsdCA1MFxyXG4gICAqL1xyXG4gIG1heFN0b3JhZ2VNYjogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlcnZhbCAobXMpIGF0IHdoaWNoIHRoZSBpbi1tZW1vcnkgYnVmZmVyIGlzIGZsdXNoZWQgdG8gSW5kZXhlZERCLlxyXG4gICAqIEBkZWZhdWx0IDUwMDBcclxuICAgKi9cclxuICBmbHVzaEludGVydmFsTXM6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogTnVtYmVyIG9mIGJ1ZmZlcmVkIGV2ZW50cyB0aGF0IHRyaWdnZXIgYW4gaW1tZWRpYXRlIGZsdXNoLlxyXG4gICAqIEBkZWZhdWx0IDIwXHJcbiAgICovXHJcbiAgZmx1c2hUaHJlc2hvbGQ6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2VudHJhbGlzZWQgZGVib3VuY2UgKG1zKSBhcHBsaWVkIHRvIHRoZSBldmVudCBidWZmZXIuXHJcbiAgICogQGRlZmF1bHQgNTAwXHJcbiAgICovXHJcbiAgYnVmZmVyRGVib3VuY2VNczogbnVtYmVyO1xyXG5cclxuICAvKiogUGVyLWZpZWxkIGZvcm0gdHJhY2tpbmcgY29uZmlndXJhdGlvbi4gKi9cclxuICBmb3JtVHJhY2tpbmc6IFVpQmxhY2tib3hGb3JtVHJhY2tpbmdDb25maWc7XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBGaW5nZXJwcmludCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKlxyXG4gKiBTdGFibGUgZGV2aWNlL2Jyb3dzZXIgZmluZ2VycHJpbnQgZ2VuZXJhdGVkIGJ5IEZpbmdlcnByaW50SlMgKG9wZW4tc291cmNlKS5cclxuICogUGVyc2lzdHMgYWNyb3NzIHNlc3Npb25zIGFuZCBpbmNvZ25pdG8gbW9kZS5cclxuICovXHJcbmV4cG9ydCB0eXBlIFVpQmxhY2tib3hGaW5nZXJwcmludCA9IHN0cmluZztcclxuXHJcbi8vIOKUgOKUgOKUgCBTZXNzaW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqXHJcbiAqIEEgc2luZ2xlIHJlY29yZGluZyBzZXNzaW9uLCBjb3JyZXNwb25kaW5nIHRvIG9uZSBicm93c2VyIHRhYiBsaWZlY3ljbGUuXHJcbiAqXHJcbiAqIFNlc3Npb25zIGFyZSBhc3NvY2lhdGVkIHRvIGEgc3RhYmxlIGBmaW5nZXJwcmludGAgc28gdGhhdCBtdWx0aXBsZVxyXG4gKiBzZXNzaW9ucyBmcm9tIHRoZSBzYW1lIGRldmljZSBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlCbGFja2JveFNlc3Npb24ge1xyXG4gIC8qKiBVbmlxdWUgc2Vzc2lvbiBpZGVudGlmaWVyIChVVUlEIHY0KS4gKi9cclxuICBzZXNzaW9uSWQ6IHN0cmluZztcclxuXHJcbiAgLyoqIFN0YWJsZSBkZXZpY2UvYnJvd3NlciBmaW5nZXJwcmludC4gKi9cclxuICBmaW5nZXJwcmludDogVWlCbGFja2JveEZpbmdlcnByaW50O1xyXG5cclxuICAvKiogVGltZXN0YW1wIChtcyBzaW5jZSBlcG9jaCkgd2hlbiB0aGUgc2Vzc2lvbiBzdGFydGVkLiAqL1xyXG4gIHN0YXJ0ZWRBdDogbnVtYmVyO1xyXG5cclxuICAvKiogVGltZXN0YW1wIChtcyBzaW5jZSBlcG9jaCkgd2hlbiB0aGUgc2Vzc2lvbiBlbmRlZCAodGFiIGNsb3NlZCkuICovXHJcbiAgZW5kZWRBdD86IG51bWJlcjtcclxuXHJcbiAgLyoqIFJhdyBgbmF2aWdhdG9yLnVzZXJBZ2VudGAgc3RyaW5nIGNhcHR1cmVkIGF0IHNlc3Npb24gc3RhcnQuICovXHJcbiAgdXNlckFnZW50OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBuYXZpZ2F0aW9uIHN0ZXBzIChyb3V0ZSBjaGFuZ2VzKS5cclxuICAgKiBFYWNoIHN0ZXAgY29udGFpbnMgdGhlIGFjdGlvbnMgcGVyZm9ybWVkIG9uIHRoYXQgcGFnZS5cclxuICAgKi9cclxuICBzdGVwczogVWlCbGFja2JveFN0ZXBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFyYWxsZWwgc3RyZWFtIG9mIGZvcm0gaW50ZXJhY3Rpb24gZXZlbnRzLlxyXG4gICAqIE9yZGVyZWQgYnkgdGltZXN0YW1wLCBjb3JyZWxhdGVkIHRvIHJvdXRlcyB2aWEgYHJvdXRlYCBmaWVsZC5cclxuICAgKi9cclxuICBmb3JtRXZlbnRzOiBVaUJsYWNrYm94Rm9ybUV2ZW50W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVyY2VwdGVkIEhUVFAgY2FsbHMsIG9yZGVyZWQgYnkgdGltZXN0YW1wLlxyXG4gICAqIE9ubHkgcmVxdWVzdHMgZXhwbGljaXRseSBtYXJrZWQgd2l0aCB0aGUgYFgtVWktQmxhY2tib3hgIGhlYWRlci5cclxuICAgKi9cclxuICBjYWxsczogVWlCbGFja2JveEh0dHBDYWxsW107XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBTdGVwIChSb3V0ZSBDaGFuZ2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqXHJcbiAqIEEgc2luZ2xlIG5hdmlnYXRpb24gc3RlcCBjcmVhdGVkIG9uIGV2ZXJ5IGBOYXZpZ2F0aW9uRW5kYCBldmVudC5cclxuICogQ29udGFpbnMgYWxsIFVJIGFjdGlvbnMgcGVyZm9ybWVkIGR1cmluZyB0aGlzIHJvdXRlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUJsYWNrYm94U3RlcCB7XHJcbiAgLyoqIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBuYXZpZ2F0aW9uIGV2ZW50LiAqL1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIHJvdXRlIFVSTCBuYXZpZ2F0ZWQgdG8uICovXHJcbiAgcm91dGU6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBwcmV2aW91cyByb3V0ZSBVUkwgKHVuZGVmaW5lZCBmb3IgdGhlIGZpcnN0IHN0ZXApLiAqL1xyXG4gIHByZXZpb3VzUm91dGU/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBVSSBhY3Rpb25zIChjbGlja3MpIHBlcmZvcm1lZCBvbiB0aGlzIHBhZ2UuXHJcbiAgICovXHJcbiAgYWN0aW9uczogVWlCbGFja2JveEFjdGlvbltdO1xyXG59XHJcblxyXG4vLyDilIDilIDilIAgQWN0aW9uIChVSSBDbGljaykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKipcclxuICogQSBzaW5nbGUgdHJhY2tlZCBVSSBhY3Rpb24sIHR5cGljYWxseSBhIGNsaWNrLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUJsYWNrYm94QWN0aW9uIHtcclxuICAvKiogVGltZXN0YW1wIChtcykgb2YgdGhlIGFjdGlvbi4gKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxuXHJcbiAgLyoqIFR5cGUgZGlzY3JpbWluYXRvci4gQ3VycmVudGx5IG9ubHkgYGNsaWNrYCBpcyBzdXBwb3J0ZWQuICovXHJcbiAgdHlwZTogJ2NsaWNrJztcclxuXHJcbiAgLyoqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjbGlja2VkIGVsZW1lbnQuICovXHJcbiAgdGFyZ2V0OiBVaUJsYWNrYm94QWN0aW9uVGFyZ2V0O1xyXG59XHJcblxyXG4vKipcclxuICogTWluaW1hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZWxlbWVudCB0aGF0IHdhcyBpbnRlcmFjdGVkIHdpdGguXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVpQmxhY2tib3hBY3Rpb25UYXJnZXQge1xyXG4gIC8qKiBIVE1MIHRhZyBuYW1lIChsb3dlcmNhc2UpLiAqL1xyXG4gIHRhZzogc3RyaW5nO1xyXG5cclxuICAvKiogRWxlbWVudCBgaWRgIGF0dHJpYnV0ZSwgaWYgcHJlc2VudC4gKi9cclxuICBpZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIHRyYWNraW5nIGlkZW50aWZpZXIsIHNldCB2aWEgYGRhdGEtdHJhY2staWRgIGF0dHJpYnV0ZVxyXG4gICAqIG9yIHRoZSBgW3VpVHJhY2tdYCBkaXJlY3RpdmUgdmFsdWUuXHJcbiAgICovXHJcbiAgdHJhY2tJZD86IHN0cmluZztcclxuXHJcbiAgLyoqIEZpcnN0IDUwIGNoYXJhY3RlcnMgb2YgYGlubmVyVGV4dGAgKHRyaW1tZWQpLiAqL1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBGb3JtIEV2ZW50IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqIERpc2NyaW1pbmF0b3IgZm9yIGZvcm0gZXZlbnQgdHlwZXMuICovXHJcbmV4cG9ydCB0eXBlIFVpQmxhY2tib3hGb3JtRXZlbnRUeXBlID1cclxuICB8ICdmb2N1cydcclxuICB8ICdibHVyJ1xyXG4gIHwgJ3ZhbHVlQ2hhbmdlJ1xyXG4gIHwgJ3ZhbGlkYXRpb25FcnJvcic7XHJcblxyXG4vKipcclxuICogQSBzaW5nbGUgZm9ybSBpbnRlcmFjdGlvbiBldmVudCBmcm9tIHRoZSBwYXJhbGxlbCBmb3JtIHN0cmVhbS5cclxuICpcclxuICogRWFjaCBldmVudCBpcyB0aW1lc3RhbXBlZCBhbmQgdGFnZ2VkIHdpdGggdGhlIGN1cnJlbnQgcm91dGUsIGFsbG93aW5nXHJcbiAqIGNvcnJlbGF0aW9uIHdpdGggbmF2aWdhdGlvbiBzdGVwcyBvbiBhIHNoYXJlZCB0aW1lbGluZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlCbGFja2JveEZvcm1FdmVudCB7XHJcbiAgLyoqIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBldmVudC4gKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxuXHJcbiAgLyoqIFJvdXRlIFVSTCB3aGVyZSB0aGUgZXZlbnQgb2NjdXJyZWQuICovXHJcbiAgcm91dGU6IHN0cmluZztcclxuXHJcbiAgLyoqIFNjaGVtYSBgaWRgIG9mIHRoZSBgVWlGb3JtQnVpbGRlckNvbXBvbmVudGAgdGhhdCBvd25zIHRoZSBmaWVsZC4gKi9cclxuICBmb3JtSWQ6IHN0cmluZztcclxuXHJcbiAgLyoqIGBrZXlgIG9mIHRoZSBmaWVsZCBkZXNjcmlwdG9yIGZyb20gdGhlIGZvcm0gc2NoZW1hLiAqL1xyXG4gIGZpZWxkS2V5OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUeXBlIG9mIGZvcm0gaW50ZXJhY3Rpb24uICovXHJcbiAgZXZlbnRUeXBlOiBVaUJsYWNrYm94Rm9ybUV2ZW50VHlwZTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIG1ldGFkYXRhIGRlcGVuZGluZyBvbiBldmVudCB0eXBlIGFuZCBjb25maWcuICovXHJcbiAgbWV0YWRhdGE/OiBVaUJsYWNrYm94Rm9ybUV2ZW50TWV0YWRhdGE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPcHRpb25hbCBtZXRhZGF0YSBhdHRhY2hlZCB0byBhIGBVaUJsYWNrYm94Rm9ybUV2ZW50YC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlCbGFja2JveEZvcm1FdmVudE1ldGFkYXRhIHtcclxuICAvKiogRmllbGQgdmFsdWUgKG9ubHkgY2FwdHVyZWQgd2hlbiBgY29uZmlnLmZvcm1UcmFja2luZy50cmFja1ZhbHVlc2AgaXMgYHRydWVgKS4gKi9cclxuICB2YWx1ZT86IGFueTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIGZpZWxkIGlzIGN1cnJlbnRseSB2YWxpZC4gKi9cclxuICB2YWxpZD86IGJvb2xlYW47XHJcblxyXG4gIC8qKiBMaXN0IG9mIGFjdGl2ZSB2YWxpZGF0aW9uIGVycm9yIGtleXMuICovXHJcbiAgZXJyb3JzPzogc3RyaW5nW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bGwgZm9ybSB2YWx1ZXMgc25hcHNob3QgYXQgdGhlIG1vbWVudCBvZiB0aGUgZXZlbnQuXHJcbiAgICogT25seSBjYXB0dXJlZCB3aGVuIGBjb25maWcuZm9ybVRyYWNraW5nLnRyYWNrVmFsdWVzYCBpcyBgdHJ1ZWAuXHJcbiAgICovXHJcbiAgZm9ybVZhbHVlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBIVFRQIENhbGwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4vKipcclxuICogQSBzaW5nbGUgaW50ZXJjZXB0ZWQgSFRUUCBjYWxsLlxyXG4gKlxyXG4gKiBPbmx5IHJlcXVlc3RzIGJlYXJpbmcgdGhlIGBYLVVpLUJsYWNrYm94YCBoZWFkZXIgYXJlIGNhcHR1cmVkLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUJsYWNrYm94SHR0cENhbGwge1xyXG4gIC8qKiBUaW1lc3RhbXAgKG1zKSB3aGVuIHRoZSByZXF1ZXN0IHdhcyBpbml0aWF0ZWQuICovXHJcbiAgdGltZXN0YW1wOiBudW1iZXI7XHJcblxyXG4gIC8qKiBIVFRQIG1ldGhvZCAoR0VULCBQT1NULCBQVVQsIERFTEVURSwg4oCmKS4gKi9cclxuICBtZXRob2Q6IHN0cmluZztcclxuXHJcbiAgLyoqIFJlcXVlc3QgVVJMLiAqL1xyXG4gIHVybDogc3RyaW5nO1xyXG5cclxuICAvKiogSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UgKHVuZGVmaW5lZCBpZiB0aGUgcmVxdWVzdCBmYWlsZWQpLiAqL1xyXG4gIHN0YXR1cz86IG51bWJlcjtcclxuXHJcbiAgLyoqIFJvdW5kLXRyaXAgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLiAqL1xyXG4gIGR1cmF0aW9uTXM/OiBudW1iZXI7XHJcblxyXG4gIC8qKiBSZXF1ZXN0IGJvZHkgcGF5bG9hZCAoc2VyaWFsaXNhYmxlKS4gKi9cclxuICByZXF1ZXN0UGF5bG9hZD86IGFueTtcclxuXHJcbiAgLyoqIFJlc3BvbnNlIGhlYWRlcnMgZmlsdGVyZWQgYnkgdGhlIGBYLVVpLUJsYWNrYm94LUhlYWRlcnNgIHJlZ2V4LiAqL1xyXG4gIHJlc3BvbnNlSGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIC8qKiBUaGUgcmVnZXggcGF0dGVybiB1c2VkIHRvIGZpbHRlciByZXNwb25zZSBoZWFkZXJzLiAqL1xyXG4gIGhlYWRlckZpbHRlcj86IHN0cmluZztcclxufVxyXG5cclxuLy8g4pSA4pSA4pSAIEludGVybmFsIEJ1ZmZlciBFdmVudCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKlxyXG4gKiBVbmlvbiB0eXBlIGZvciBhbGwgZXZlbnRzIGZsb3dpbmcgdGhyb3VnaCB0aGUgY2VudHJhbGlzZWQgYnVmZmVyLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCB0eXBlIFVpQmxhY2tib3hCdWZmZXJFdmVudCA9XHJcbiAgfCB7IGtpbmQ6ICdhY3Rpb24nOyBwYXlsb2FkOiBVaUJsYWNrYm94QWN0aW9uICYgeyByb3V0ZTogc3RyaW5nIH0gfVxyXG4gIHwgeyBraW5kOiAnZm9ybUV2ZW50JzsgcGF5bG9hZDogVWlCbGFja2JveEZvcm1FdmVudCB9XHJcbiAgfCB7IGtpbmQ6ICdodHRwQ2FsbCc7IHBheWxvYWQ6IFVpQmxhY2tib3hIdHRwQ2FsbCB9XHJcbiAgfCB7IGtpbmQ6ICdzdGVwJzsgcGF5bG9hZDogVWlCbGFja2JveFN0ZXAgfTtcclxuXHJcbi8vIOKUgOKUgOKUgCBEZWZhdWx0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbi8qKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzLiAqL1xyXG5leHBvcnQgY29uc3QgVUlfQkxBQ0tCT1hfREVGQVVMVFM6IFVpQmxhY2tib3hDb25maWcgPSB7XHJcbiAgbWF4U3RvcmFnZU1iOiA1MCxcclxuICBmbHVzaEludGVydmFsTXM6IDUwMDAsXHJcbiAgZmx1c2hUaHJlc2hvbGQ6IDIwLFxyXG4gIGJ1ZmZlckRlYm91bmNlTXM6IDUwMCxcclxuICBmb3JtVHJhY2tpbmc6IHtcclxuICAgIHRyYWNrVmFsdWVzOiBmYWxzZSxcclxuICAgIHRyYWNrRm9jdXM6IHRydWUsXHJcbiAgICB0cmFja0JsdXI6IHRydWUsXHJcbiAgICB0cmFja1ZhbHVlQ2hhbmdlczogdHJ1ZSxcclxuICAgIHRyYWNrVmFsaWRhdGlvbjogdHJ1ZSxcclxuICAgIGRlYm91bmNlTXM6IDUwMCxcclxuICB9LFxyXG59O1xyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ng-ui-system — BlackBox Observability entry point.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import {
7
+ * UiBlackboxService,
8
+ * UiBlackboxConfig,
9
+ * UiTrackDirective,
10
+ * uiBlackboxInterceptor,
11
+ * } from '@gnggln/ng-ui-system';
12
+ * ```
13
+ */
14
+ // Services
15
+ export { UiBlackboxService } from './blackbox.service';
16
+ export { UiBlackboxFingerprintService } from './blackbox-fingerprint.service';
17
+ export { UiBlackboxStorageService } from './blackbox-storage.service';
18
+ export { UiBlackboxDebuggerService } from './blackbox-debugger.service';
19
+ // Components
20
+ export { UiBlackboxDebuggerComponent } from './blackbox-debugger.component';
21
+ export { UiBlackboxJsonViewerComponent } from './blackbox-json-viewer.component';
22
+ // Interceptor
23
+ export { uiBlackboxInterceptor } from './blackbox.interceptor';
24
+ // Directives
25
+ export { UiTrackDirective } from './ui-track.directive';
26
+ export { UI_BLACKBOX_DEFAULTS } from './blackbox.types';
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2JsYWNrYm94L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILFdBQVc7QUFDWCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxhQUFhO0FBQ2IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakYsY0FBYztBQUNkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9ELGFBQWE7QUFDYixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWlCeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogbmctdWktc3lzdGVtIOKAlCBCbGFja0JveCBPYnNlcnZhYmlsaXR5IGVudHJ5IHBvaW50LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7XHJcbiAqICAgVWlCbGFja2JveFNlcnZpY2UsXHJcbiAqICAgVWlCbGFja2JveENvbmZpZyxcclxuICogICBVaVRyYWNrRGlyZWN0aXZlLFxyXG4gKiAgIHVpQmxhY2tib3hJbnRlcmNlcHRvcixcclxuICogfSBmcm9tICdAZ25nZ2xuL25nLXVpLXN5c3RlbSc7XHJcbiAqIGBgYFxyXG4gKi9cclxuXHJcbi8vIFNlcnZpY2VzXHJcbmV4cG9ydCB7IFVpQmxhY2tib3hTZXJ2aWNlIH0gZnJvbSAnLi9ibGFja2JveC5zZXJ2aWNlJztcclxuZXhwb3J0IHsgVWlCbGFja2JveEZpbmdlcnByaW50U2VydmljZSB9IGZyb20gJy4vYmxhY2tib3gtZmluZ2VycHJpbnQuc2VydmljZSc7XHJcbmV4cG9ydCB7IFVpQmxhY2tib3hTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYmxhY2tib3gtc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0IHsgVWlCbGFja2JveERlYnVnZ2VyU2VydmljZSB9IGZyb20gJy4vYmxhY2tib3gtZGVidWdnZXIuc2VydmljZSc7XHJcblxyXG4vLyBDb21wb25lbnRzXHJcbmV4cG9ydCB7IFVpQmxhY2tib3hEZWJ1Z2dlckNvbXBvbmVudCB9IGZyb20gJy4vYmxhY2tib3gtZGVidWdnZXIuY29tcG9uZW50JztcclxuZXhwb3J0IHsgVWlCbGFja2JveEpzb25WaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2JsYWNrYm94LWpzb24tdmlld2VyLmNvbXBvbmVudCc7XHJcblxyXG4vLyBJbnRlcmNlcHRvclxyXG5leHBvcnQgeyB1aUJsYWNrYm94SW50ZXJjZXB0b3IgfSBmcm9tICcuL2JsYWNrYm94LmludGVyY2VwdG9yJztcclxuXHJcbi8vIERpcmVjdGl2ZXNcclxuZXhwb3J0IHsgVWlUcmFja0RpcmVjdGl2ZSB9IGZyb20gJy4vdWktdHJhY2suZGlyZWN0aXZlJztcclxuXHJcbi8vIFR5cGVzXHJcbmV4cG9ydCB0eXBlIHtcclxuICBVaUJsYWNrYm94Q29uZmlnLFxyXG4gIFVpQmxhY2tib3hGb3JtVHJhY2tpbmdDb25maWcsXHJcbiAgVWlCbGFja2JveEZpbmdlcnByaW50LFxyXG4gIFVpQmxhY2tib3hTZXNzaW9uLFxyXG4gIFVpQmxhY2tib3hTdGVwLFxyXG4gIFVpQmxhY2tib3hBY3Rpb24sXHJcbiAgVWlCbGFja2JveEFjdGlvblRhcmdldCxcclxuICBVaUJsYWNrYm94Rm9ybUV2ZW50LFxyXG4gIFVpQmxhY2tib3hGb3JtRXZlbnRUeXBlLFxyXG4gIFVpQmxhY2tib3hGb3JtRXZlbnRNZXRhZGF0YSxcclxuICBVaUJsYWNrYm94SHR0cENhbGwsXHJcbn0gZnJvbSAnLi9ibGFja2JveC50eXBlcyc7XHJcblxyXG5leHBvcnQgeyBVSV9CTEFDS0JPWF9ERUZBVUxUUyB9IGZyb20gJy4vYmxhY2tib3gudHlwZXMnO1xyXG4iXX0=