@hkdigital/lib-core 0.3.15 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.md +6 -6
  2. package/dist/auth/errors.d.ts +1 -0
  3. package/dist/auth/errors.js +1 -0
  4. package/dist/{states → browser/navigation}/navigation.svelte.js +1 -1
  5. package/dist/browser/navigation.d.ts +1 -0
  6. package/dist/browser/navigation.js +1 -0
  7. package/dist/config/README.md +1 -1
  8. package/dist/config/generators/imagetools.d.ts +2 -0
  9. package/dist/config/generators/imagetools.js +23 -10
  10. package/dist/config/generators/vite.js +1 -1
  11. package/dist/config/imagetools.d.ts +5 -5
  12. package/dist/config/typedef.d.ts +11 -0
  13. package/dist/config/typedef.js +17 -0
  14. package/dist/design/README.md +75 -0
  15. package/dist/design/generators/index.js +35 -0
  16. package/dist/design/themes/hkdev/components/buttons/button-text.css +20 -1
  17. package/dist/design/themes/hkdev/theme-ext.js +1 -1
  18. package/dist/{classes/data → generic/data/classes}/IterableTree.js +2 -2
  19. package/dist/{classes/data → generic/data/classes}/Selector.js +1 -1
  20. package/dist/generic/data/classes/typedef.d.ts +24 -0
  21. package/dist/generic/data/classes/typedef.js +14 -0
  22. package/dist/generic/data.d.ts +2 -0
  23. package/dist/generic/data.js +2 -0
  24. package/dist/generic/errors.d.ts +2 -0
  25. package/dist/generic/errors.js +2 -0
  26. package/dist/generic/events.d.ts +1 -0
  27. package/dist/generic/events.js +1 -0
  28. package/dist/{classes/promise → generic/promises/classes}/HkPromise.d.ts +17 -7
  29. package/dist/{classes/promise → generic/promises/classes}/HkPromise.js +20 -10
  30. package/dist/generic/promises.d.ts +1 -0
  31. package/dist/generic/promises.js +1 -0
  32. package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.d.ts +1 -1
  33. package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.js +2 -2
  34. package/dist/generic/streaming.d.ts +3 -0
  35. package/dist/generic/streaming.js +3 -0
  36. package/dist/generic/typedef.d.ts +1 -0
  37. package/dist/generic/typedef.js +1 -0
  38. package/dist/index.js +1 -0
  39. package/dist/logging/errors.d.ts +7 -0
  40. package/dist/logging/errors.js +11 -0
  41. package/dist/logging/internal/adapters/console.d.ts +1 -16
  42. package/dist/logging/internal/adapters/console.js +320 -8
  43. package/dist/logging/internal/adapters/formatting.d.ts +69 -0
  44. package/dist/logging/internal/adapters/formatting.js +395 -0
  45. package/dist/logging/internal/adapters/pino.js +112 -21
  46. package/dist/logging/internal/adapters/typedef.d.ts +30 -0
  47. package/dist/logging/internal/adapters/typedef.js +11 -0
  48. package/dist/logging/internal/factories/server.js +11 -1
  49. package/dist/logging/internal/logger/Logger.d.ts +7 -5
  50. package/dist/logging/internal/logger/Logger.js +41 -6
  51. package/dist/logging/internal/test-errors.d.ts +35 -0
  52. package/dist/logging/internal/test-errors.js +138 -0
  53. package/dist/network/cache/IndexedDbCache.d.ts +1 -1
  54. package/dist/network/cache/MemoryResponseCache.d.ts +5 -0
  55. package/dist/network/cache/MemoryResponseCache.js +5 -2
  56. package/dist/network/errors.d.ts +2 -0
  57. package/dist/network/errors.js +2 -0
  58. package/dist/network/http/caching.js +1 -1
  59. package/dist/network/http/errors.d.ts +2 -2
  60. package/dist/network/http/errors.js +5 -13
  61. package/dist/network/http/http-request.js +1 -1
  62. package/dist/network/http/json-request.js +1 -1
  63. package/dist/network/http/response.js +1 -1
  64. package/dist/network/http/url.js +1 -1
  65. package/dist/network/loaders/README.md +14 -7
  66. package/dist/network/loaders/audio/AudioScene.svelte.js +3 -2
  67. package/dist/network/loaders/image/ImageLoader.svelte.d.ts +2 -2
  68. package/dist/network/loaders/image/ImageLoader.svelte.js +1 -1
  69. package/dist/network/loaders/image/ImageScene.svelte.d.ts +2 -2
  70. package/dist/network/loaders/image/ImageScene.svelte.js +9 -8
  71. package/dist/network/loaders/image/ImageVariantsLoader.svelte.d.ts +5 -5
  72. package/dist/network/loaders/image/ImageVariantsLoader.svelte.js +14 -13
  73. package/dist/network/loaders/image/utils/index.d.ts +2 -2
  74. package/dist/network/loaders/image/utils/index.js +9 -12
  75. package/dist/network/loaders/typedef.d.ts +0 -9
  76. package/dist/network/loaders/typedef.js +0 -12
  77. package/dist/network/states/NetworkLoader.svelte.d.ts +1 -1
  78. package/dist/network/states/NetworkLoader.svelte.js +3 -2
  79. package/dist/services/service-base/ServiceBase.d.ts +2 -2
  80. package/dist/services/service-base/ServiceBase.js +15 -11
  81. package/dist/services/service-base/typedef.d.ts +2 -31
  82. package/dist/services/service-base/typedef.js +3 -2
  83. package/dist/services/service-manager/ServiceManager.d.ts +3 -3
  84. package/dist/services/service-manager/ServiceManager.js +2 -2
  85. package/dist/services/service-manager/typedef.d.ts +3 -3
  86. package/dist/services/service-manager/typedef.js +3 -3
  87. package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.d.ts +1 -1
  88. package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.js +1 -1
  89. package/dist/state/classes/subscribers-count/index.d.ts +1 -0
  90. package/dist/state/classes/subscribers-count/index.js +1 -0
  91. package/dist/state/classes.d.ts +3 -0
  92. package/dist/state/classes.js +3 -0
  93. package/dist/{util/svelte/state-context/index.d.ts → state/context/state-context.d.ts} +1 -1
  94. package/dist/{util/svelte/state-context/index.js → state/context/state-context.js} +4 -4
  95. package/dist/state/context.d.ts +1 -0
  96. package/dist/state/context.js +1 -0
  97. package/dist/state/stores.d.ts +1 -0
  98. package/dist/state/stores.js +1 -0
  99. package/dist/ui/README.md +49 -0
  100. package/dist/ui/components/button-group/index.d.ts +1 -0
  101. package/dist/ui/components/button-group/index.js +1 -0
  102. package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte +1 -1
  103. package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte.d.ts +1 -1
  104. package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte +2 -2
  105. package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte.d.ts +1 -1
  106. package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte +4 -4
  107. package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte.d.ts +3 -3
  108. package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte +3 -3
  109. package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte.d.ts +4 -4
  110. package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte +3 -3
  111. package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte.d.ts +3 -3
  112. package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.d.ts +11 -11
  113. package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.js +5 -5
  114. package/dist/ui/components/drag-drop/typedef.d.ts +2 -0
  115. package/dist/ui/components/drag-drop/typedef.js +2 -0
  116. package/dist/ui/components/game-box/index.d.ts +1 -0
  117. package/dist/ui/components/game-box/index.js +1 -0
  118. package/dist/ui/components/grid-layers/index.d.ts +1 -0
  119. package/dist/ui/components/grid-layers/index.js +1 -0
  120. package/dist/ui/{primitives/layout → components}/grid-layers/util.js +1 -1
  121. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.d.ts +3 -3
  122. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.js +3 -4
  123. package/dist/ui/components/hk-app-layout/index.d.ts +1 -0
  124. package/dist/ui/components/hk-app-layout/index.js +1 -0
  125. package/dist/ui/components/image-box/ImageBox.svelte +2 -2
  126. package/dist/ui/components/image-box/ImageBox.svelte.d.ts +3 -3
  127. package/dist/ui/components/image-box/index.d.ts +1 -1
  128. package/dist/ui/components/presenter/ImageSlide.svelte +1 -1
  129. package/dist/ui/components/presenter/ImageSlide.svelte.d.ts +2 -2
  130. package/dist/ui/components/presenter/Presenter.state.svelte.d.ts +3 -3
  131. package/dist/ui/components/presenter/Presenter.state.svelte.js +1 -1
  132. package/dist/ui/components/presenter/Presenter.svelte +1 -1
  133. package/dist/ui/components/presenter/Presenter.svelte.d.ts +1 -1
  134. package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte.d.ts +1 -1
  135. package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte.d.ts +1 -1
  136. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.d.ts +3 -3
  137. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.js +4 -2
  138. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte +2 -2
  139. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte.d.ts +2 -2
  140. package/dist/ui/components/tab-bar/HkTabBarSelector.state.svelte.d.ts +19 -0
  141. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.state.svelte.js +2 -2
  142. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte +1 -1
  143. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte.d.ts +2 -2
  144. package/dist/ui/{primitives → components}/tab-bar/typedef.d.ts +1 -1
  145. package/dist/ui/{primitives → components}/tab-bar/typedef.js +1 -1
  146. package/dist/ui/components/typedef.d.ts +5 -0
  147. package/dist/ui/components/typedef.js +5 -0
  148. package/dist/ui/components/virtual-viewport/index.d.ts +1 -0
  149. package/dist/ui/components/virtual-viewport/index.js +1 -0
  150. package/dist/ui/components.d.ts +11 -0
  151. package/dist/ui/components.js +11 -0
  152. package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte +1 -1
  153. package/dist/ui/{primitives/debug → dev}/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +1 -1
  154. package/dist/ui/dev.d.ts +3 -0
  155. package/dist/ui/dev.js +3 -0
  156. package/dist/ui/primitives/buttons/button/Button.svelte.d.ts +1 -1
  157. package/dist/ui/primitives/typedef.d.ts +1 -0
  158. package/dist/ui/primitives/typedef.js +1 -0
  159. package/dist/ui/primitives.d.ts +5 -0
  160. package/dist/ui/primitives.js +5 -0
  161. package/dist/ui/typedef.d.ts +2 -0
  162. package/dist/ui/typedef.js +2 -0
  163. package/dist/util/array/index.js +1 -1
  164. package/dist/util/bases/base58.d.ts +3 -3
  165. package/dist/util/bases/base58.js +3 -3
  166. package/dist/util/compare/index.d.ts +4 -5
  167. package/dist/util/compare/index.js +3 -4
  168. package/dist/util/exceptions/index.js +1 -1
  169. package/dist/util/expect/arrays.d.ts +11 -11
  170. package/dist/util/expect/arrays.js +14 -6
  171. package/dist/util/expect/index.js +2 -2
  172. package/dist/util/expect/primitives.d.ts +6 -5
  173. package/dist/util/expect/primitives.js +15 -5
  174. package/dist/util/expect/url.d.ts +6 -5
  175. package/dist/util/expect/url.js +15 -5
  176. package/dist/util/function/index.d.ts +1 -14
  177. package/dist/util/index.d.ts +5 -0
  178. package/dist/util/index.js +13 -0
  179. package/dist/util/is/index.d.ts +3 -2
  180. package/dist/util/is/index.js +2 -1
  181. package/dist/util/iterate/index.d.ts +6 -8
  182. package/dist/util/iterate/index.js +5 -5
  183. package/dist/util/object/index.d.ts +1 -2
  184. package/dist/util/object/index.js +2 -3
  185. package/dist/util/ssr/index.d.ts +16 -0
  186. package/dist/util/ssr/index.js +44 -0
  187. package/dist/util/svelte/index.d.ts +1 -1
  188. package/dist/util/svelte/index.js +1 -1
  189. package/dist/util/time/index.d.ts +2 -2
  190. package/dist/util/time/index.js +1 -1
  191. package/dist/valibot/index.d.ts +1 -1
  192. package/dist/valibot/index.js +27 -1
  193. package/package.json +3 -3
  194. package/dist/assets/autospuiten/car-paint-picker/army-green.jpg +0 -0
  195. package/dist/assets/autospuiten/car-paint-picker/electric-blue.jpg +0 -0
  196. package/dist/assets/autospuiten/car-paint-picker/lemon-yellow.jpg +0 -0
  197. package/dist/assets/autospuiten/car-paint-picker/opaque-purple.jpg +0 -0
  198. package/dist/assets/autospuiten/car-paint-picker/rusty.jpg +0 -0
  199. package/dist/assets/autospuiten/car-paint-picker/sunset-orange.jpg +0 -0
  200. package/dist/assets/autospuiten/car-paint-picker/tomato-red.jpg +0 -0
  201. package/dist/assets/autospuiten/car-paint-picker.d.ts +0 -17
  202. package/dist/assets/autospuiten/car-paint-picker.js +0 -41
  203. package/dist/assets/autospuiten/labels.d.ts +0 -7
  204. package/dist/assets/autospuiten/labels.js +0 -7
  205. package/dist/classes/data/index.d.ts +0 -2
  206. package/dist/classes/data/index.js +0 -2
  207. package/dist/classes/event-emitter/index.d.ts +0 -1
  208. package/dist/classes/event-emitter/index.js +0 -2
  209. package/dist/classes/index.d.ts +0 -4
  210. package/dist/classes/index.js +0 -4
  211. package/dist/classes/promise/index.d.ts +0 -1
  212. package/dist/classes/promise/index.js +0 -1
  213. package/dist/classes/stores/index.d.ts +0 -1
  214. package/dist/classes/stores/index.js +0 -1
  215. package/dist/classes/streams/index.d.ts +0 -3
  216. package/dist/classes/streams/index.js +0 -3
  217. package/dist/classes/svelte/index.d.ts +0 -1
  218. package/dist/classes/svelte/index.js +0 -1
  219. package/dist/errors/index.d.ts +0 -5
  220. package/dist/errors/index.js +0 -5
  221. package/dist/services/service-base/index.d.ts +0 -3
  222. package/dist/services/service-base/index.js +0 -3
  223. package/dist/states/index.d.ts +0 -1
  224. package/dist/states/index.js +0 -1
  225. package/dist/stores/index.d.ts +0 -1
  226. package/dist/stores/index.js +0 -1
  227. package/dist/typedef/index.d.ts +0 -3
  228. package/dist/typedef/index.js +0 -3
  229. package/dist/ui/primitives/debug/index.d.ts +0 -1
  230. package/dist/ui/primitives/debug/index.js +0 -1
  231. package/dist/ui/primitives/index.d.ts +0 -1
  232. package/dist/ui/primitives/index.js +0 -1
  233. package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
  234. package/dist/ui/primitives/layout/index.d.ts +0 -1
  235. package/dist/ui/primitives/layout/index.js +0 -1
  236. package/dist/ui/primitives/tab-bar/HkTabBarSelector.state.svelte.d.ts +0 -19
  237. /package/dist/{errors → auth/errors}/jwt.d.ts +0 -0
  238. /package/dist/{errors → auth/errors}/jwt.js +0 -0
  239. /package/dist/{states → browser/navigation}/navigation.svelte.d.ts +0 -0
  240. /package/dist/{classes/data → generic/data/classes}/IterableTree.d.ts +0 -0
  241. /package/dist/{classes/data → generic/data/classes}/Selector.d.ts +0 -0
  242. /package/dist/{classes → generic}/data/typedef.d.ts +0 -0
  243. /package/dist/{classes → generic}/data/typedef.js +0 -0
  244. /package/dist/{errors → generic/errors}/generic.d.ts +0 -0
  245. /package/dist/{errors → generic/errors}/generic.js +0 -0
  246. /package/dist/{errors → generic/errors}/promise.d.ts +0 -0
  247. /package/dist/{errors → generic/errors}/promise.js +0 -0
  248. /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.d.ts +0 -0
  249. /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.js +0 -0
  250. /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.d.ts +0 -0
  251. /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.js +0 -0
  252. /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.d.ts +0 -0
  253. /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.js +0 -0
  254. /package/dist/{errors → network/errors}/api.d.ts +0 -0
  255. /package/dist/{errors → network/errors}/api.js +0 -0
  256. /package/dist/{errors → network/errors}/http.d.ts +0 -0
  257. /package/dist/{errors → network/errors}/http.js +0 -0
  258. /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.d.ts +0 -0
  259. /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.js +0 -0
  260. /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.d.ts +0 -0
  261. /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.js +0 -0
  262. /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.d.ts +0 -0
  263. /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.js +0 -0
  264. /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.d.ts +0 -0
  265. /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.js +0 -0
  266. /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.d.ts +0 -0
  267. /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.js +0 -0
  268. /package/dist/{typedef/context.d.ts → state/context/typedef.d.ts} +0 -0
  269. /package/dist/{typedef/context.js → state/context/typedef.js} +0 -0
  270. /package/dist/{stores → state/stores}/theme.d.ts +0 -0
  271. /package/dist/{stores → state/stores}/theme.js +0 -0
  272. /package/dist/ui/{primitives → components}/drag-drop/DragController.d.ts +0 -0
  273. /package/dist/ui/{primitives → components}/drag-drop/DragController.js +0 -0
  274. /package/dist/ui/{primitives → components}/drag-drop/actions.d.ts +0 -0
  275. /package/dist/ui/{primitives → components}/drag-drop/actions.js +0 -0
  276. /package/dist/ui/{primitives → components}/drag-drop/index.d.ts +0 -0
  277. /package/dist/ui/{primitives → components}/drag-drop/index.js +0 -0
  278. /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.d.ts +0 -0
  279. /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.js +0 -0
  280. /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.d.ts +0 -0
  281. /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.js +0 -0
  282. /package/dist/ui/{primitives → components}/drag-drop/util.d.ts +0 -0
  283. /package/dist/ui/{primitives → components}/drag-drop/util.js +0 -0
  284. /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte +0 -0
  285. /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte.d.ts +0 -0
  286. /package/dist/ui/{primitives/layout → components}/grid-layers/util.d.ts +0 -0
  287. /package/dist/ui/{primitives → components}/rows/index.d.ts +0 -0
  288. /package/dist/ui/{primitives → components}/rows/index.js +0 -0
  289. /package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte +0 -0
  290. /package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte +0 -0
  291. /package/dist/ui/{primitives → components}/tab-bar/index.d.ts +0 -0
  292. /package/dist/ui/{primitives → components}/tab-bar/index.js +0 -0
  293. /package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte.d.ts +0 -0
  294. /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte +0 -0
  295. /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte.d.ts +0 -0
  296. /package/dist/ui/{primitives/debug → dev}/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +0 -0
package/dist/index.js CHANGED
@@ -0,0 +1 @@
1
+ // Leave this file here or publish wont work
@@ -0,0 +1,7 @@
1
+ export class LoggerError extends Error {
2
+ /**
3
+ * @param {Error} originalError
4
+ */
5
+ constructor(originalError: Error);
6
+ cause: Error;
7
+ }
@@ -0,0 +1,11 @@
1
+ export class LoggerError extends Error
2
+ {
3
+ /**
4
+ * @param {Error} originalError
5
+ */
6
+ constructor( originalError ) {
7
+ super('LoggerError');
8
+ this.name = 'LoggerError';
9
+ this.cause = originalError;
10
+ }
11
+ }
@@ -22,22 +22,6 @@ export class ConsoleAdapter {
22
22
  * @param {Object} logEvent - Log event from Logger
23
23
  */
24
24
  handleLog(logEvent: any): void;
25
- /**
26
- * Get CSS styles for browser console
27
- *
28
- * @param {string} level - Log level
29
- * @returns {string} CSS styles
30
- * @private
31
- */
32
- private _getStyles;
33
- /**
34
- * Get appropriate console method for log level
35
- *
36
- * @param {string} level - Log level
37
- * @returns {string} Console method name
38
- * @private
39
- */
40
- private _getConsoleMethod;
41
25
  /**
42
26
  * Create a child logger with additional context
43
27
  *
@@ -45,4 +29,5 @@ export class ConsoleAdapter {
45
29
  * @returns {ConsoleAdapter} New adapter instance with context
46
30
  */
47
31
  child(context: any): ConsoleAdapter;
32
+ #private;
48
33
  }
@@ -1,4 +1,12 @@
1
+ import { dev } from '$app/environment';
1
2
  import { LEVELS } from '../../constants.js';
3
+ import {
4
+ findRelevantFrameIndex,
5
+ detectErrorMeta,
6
+ formatErrorDisplay,
7
+ isMeaningfulFunctionName,
8
+ parseFunctionName
9
+ } from './formatting.js';
2
10
 
3
11
  /**
4
12
  * (Browser) console adapter that uses native DevTools styling
@@ -32,16 +40,95 @@ export class ConsoleAdapter {
32
40
  }
33
41
 
34
42
  // Use browser console styling
35
- const styles = this._getStyles(level);
43
+ const styles = this.#getStyles(level);
36
44
  const prefix = `%c[${source}]`;
37
45
 
38
46
  // Process details for better error formatting
39
- const logData = this._processLogData(details);
47
+ const logData = this.#processLogData(details);
40
48
 
41
49
  if (logData) {
42
- console[this._getConsoleMethod(level)](prefix, styles, message, logData);
50
+ const consoleMethod = console[this.#getConsoleMethod(level)];
51
+
52
+ if (dev && (logData.error || logData.errors)) {
53
+ // In development mode, expand errors automatically - use black for main message
54
+ console.log(
55
+ `%c${message} %c[${source}]`,
56
+ 'color: #d32f2f; font-weight: bold;',
57
+ 'color: #000; font-weight: normal;'
58
+ );
59
+ if (logData.errors) {
60
+ logData.errors.forEach((error, index) => {
61
+ const appendix = error.errorType ? error.errorType : error.name;
62
+
63
+ console.group(
64
+ `%c${index + 1}. ${error.message} %c(${appendix})`,
65
+ 'color: #d32f2f; font-weight: normal;',
66
+ 'color: #000; font-weight: normal;'
67
+ );
68
+ if (error.stack) {
69
+ console.groupCollapsed(`Stack (${error.stack.length} frames)`);
70
+ error.stack.forEach((frame, index) => {
71
+ // Highlight the relevant frame in bold
72
+ const isRelevant = error.relevantFrameIndex === index;
73
+ console.log(
74
+ `%c${index}: %c${frame}`,
75
+ 'color: #666;',
76
+ isRelevant ? 'color: #000; font-weight: bold;' : 'color: #000;'
77
+ );
78
+ });
79
+ console.groupEnd();
80
+ }
81
+ if (error.details) {
82
+ console.log('Details:', error.details);
83
+ }
84
+ if (error.status) {
85
+ console.log('Status:', error.status);
86
+ }
87
+ console.groupEnd();
88
+ });
89
+ } else if (logData.error) {
90
+ const appendix = logData.error.errorType ? logData.error.errorType : logData.error.name;
91
+
92
+ console.group(
93
+ `%c${logData.error.name}: ${logData.error.message} (${appendix})`,
94
+ 'color: #d32f2f; font-weight: bold;'
95
+ );
96
+ if (logData.error.stack) {
97
+ console.groupCollapsed(
98
+ `Stack (${logData.error.stack.length} frames)`
99
+ );
100
+ logData.error.stack.forEach((frame, index) => {
101
+ // Highlight the relevant frame in bold
102
+ const isRelevant = logData.error.relevantFrameIndex === index;
103
+ console.log(
104
+ `%c${index}: %c${frame}`,
105
+ 'color: #666;',
106
+ isRelevant ? 'color: #000; font-weight: bold;' : 'color: #000;'
107
+ );
108
+ });
109
+ console.groupEnd();
110
+ }
111
+ if (logData.error.details) {
112
+ console.log('Details:', logData.error.details);
113
+ }
114
+ if (logData.error.status) {
115
+ console.log('Status:', logData.error.status);
116
+ }
117
+ console.groupEnd();
118
+ }
119
+
120
+ // Log any other properties
121
+ // eslint-disable-next-line no-unused-vars
122
+ const { error, errors, loggedAt } = logData;
123
+ if (loggedAt) {
124
+ console.log('Logged at:', loggedAt);
125
+ }
126
+ } else {
127
+ // Production mode or non-error data - use compact format
128
+ consoleMethod(prefix, styles, message, logData);
129
+ }
43
130
  } else {
44
- console[this._getConsoleMethod(level)](prefix, styles, message);
131
+ console[this.#getConsoleMethod(level)](prefix, styles, message);
45
132
  }
46
133
  }
47
134
 
@@ -50,9 +137,8 @@ export class ConsoleAdapter {
50
137
  *
51
138
  * @param {string} level - Log level
52
139
  * @returns {string} CSS styles
53
- * @private
54
140
  */
55
- _getStyles(level) {
141
+ #getStyles(level) {
56
142
  const baseStyle =
57
143
  'padding: 2px 4px; border-radius: 2px; font-weight: bold;';
58
144
 
@@ -77,9 +163,8 @@ export class ConsoleAdapter {
77
163
  *
78
164
  * @param {string} level - Log level
79
165
  * @returns {string} Console method name
80
- * @private
81
166
  */
82
- _getConsoleMethod(level) {
167
+ #getConsoleMethod(level) {
83
168
  switch (level) {
84
169
  case 'debug':
85
170
  return 'debug';
@@ -95,6 +180,233 @@ export class ConsoleAdapter {
95
180
  }
96
181
  }
97
182
 
183
+ /**
184
+ * Process log data for better formatting, especially errors
185
+ *
186
+ * @param {*} details - Log details
187
+ * @returns {Object|undefined} Processed log data
188
+ */
189
+ #processLogData(details) {
190
+ // Merge context first
191
+ let logData =
192
+ Object.keys(this.context).length > 0 ? { ...this.context } : {};
193
+
194
+ if (!details) {
195
+ return Object.keys(logData).length > 0 ? logData : undefined;
196
+ }
197
+
198
+ // Check if details contains an error with causes - serialize to array
199
+ if (details instanceof Error) {
200
+ if (details.cause) {
201
+ // Error has a cause chain - serialize to array
202
+ const serialized = this.#serializeErrorChain(details);
203
+ if (serialized.loggedAt) {
204
+ logData.loggedAt = serialized.loggedAt;
205
+ }
206
+ logData.errors = serialized.chain;
207
+ } else {
208
+ // Single error - keep as simple object
209
+ const cleanedStack = this.#cleanStackTrace(details.stack);
210
+ const relevantFrameIndex = findRelevantFrameIndex(details, cleanedStack);
211
+ const errorMeta = detectErrorMeta(details, cleanedStack);
212
+ logData.error = {
213
+ name: details.name,
214
+ message: details.message,
215
+ stack: cleanedStack,
216
+ errorType: formatErrorDisplay(errorMeta),
217
+ ...(relevantFrameIndex >= 0 && { relevantFrameIndex })
218
+ };
219
+ }
220
+ } else if (details.error instanceof Error) {
221
+ if (details.error.cause) {
222
+ // Error has a cause chain - serialize to array
223
+ const serialized = this.#serializeErrorChain(details.error);
224
+ if (serialized.loggedAt) {
225
+ logData.loggedAt = serialized.loggedAt;
226
+ }
227
+ logData.errors = serialized.chain;
228
+ } else {
229
+ // Single error - keep as simple object
230
+ const cleanedStack = this.#cleanStackTrace(details.error.stack);
231
+ const relevantFrameIndex = findRelevantFrameIndex(details.error, cleanedStack);
232
+ const errorMeta = detectErrorMeta(details.error, cleanedStack);
233
+ logData.error = {
234
+ name: details.error.name,
235
+ message: details.error.message,
236
+ stack: cleanedStack,
237
+ errorType: formatErrorDisplay(errorMeta),
238
+ ...(relevantFrameIndex >= 0 && { relevantFrameIndex })
239
+ };
240
+ }
241
+ // Include other details except the error
242
+ // eslint-disable-next-line no-unused-vars
243
+ const { error, ...otherDetails } = details;
244
+ if (Object.keys(otherDetails).length > 0) {
245
+ Object.assign(logData, otherDetails);
246
+ }
247
+ } else {
248
+ Object.assign(logData, details);
249
+ }
250
+
251
+ return Object.keys(logData).length > 0 ? logData : undefined;
252
+ }
253
+
254
+ /**
255
+ * Serialize error chain into consumable log format
256
+ *
257
+ * @param {Error} err
258
+ * @returns {{chain: import('./typedef.js').ErrorSummary[], loggedAt: string|null}} Object with error chain and optional logging location
259
+ */
260
+ #serializeErrorChain(err) {
261
+ const chain = [];
262
+ let loggedAt = null;
263
+
264
+ let current = err;
265
+ let isFirst = true;
266
+
267
+ while (current) {
268
+ // Check if this is the first error and it's a LoggerError - extract logging context
269
+ if (isFirst && current.name === 'LoggerError') {
270
+ if (current.stack) {
271
+ const cleanedStack = this.#cleanStackTrace(current.stack);
272
+
273
+ // For LoggerError, we know it's a logger.error call, so find the relevant frame
274
+ const loggerErrorIndex = cleanedStack.findIndex(frame =>
275
+ (frame.includes('Logger.error') && frame.includes('logger/Logger.js')) ||
276
+ (frame.includes('error@') && frame.includes('logger/Logger.js'))
277
+ );
278
+
279
+ if (loggerErrorIndex >= 0 && loggerErrorIndex + 1 < cleanedStack.length) {
280
+ const relevantFrame = cleanedStack[loggerErrorIndex + 1];
281
+ // Remove the "at " prefix for cleaner output
282
+ loggedAt = relevantFrame.replace(/^\d+→?\s*/, '').replace(/^at\s+/, '');
283
+ }
284
+ }
285
+
286
+ // Skip the LoggerError and move to the actual error
287
+ current = /** @type {Error} */ (current.cause);
288
+ isFirst = false;
289
+ continue;
290
+ }
291
+ const errorObj = {
292
+ name: current.name || 'Unknown',
293
+ message: current.message || 'No message'
294
+ };
295
+
296
+ // Add stack to every error for more information
297
+ if (current.stack) {
298
+ errorObj.stack = this.#cleanStackTrace(current.stack);
299
+
300
+ // Find and mark the most relevant frame for highlighting
301
+ const relevantFrameIndex = findRelevantFrameIndex(current, errorObj.stack);
302
+ if (relevantFrameIndex >= 0) {
303
+ errorObj.relevantFrameIndex = relevantFrameIndex;
304
+ }
305
+
306
+ // Detect error metadata for display
307
+ const errorMeta = detectErrorMeta(current, errorObj.stack);
308
+ errorObj.errorType = formatErrorDisplay(errorMeta);
309
+ }
310
+
311
+ // Include additional properties like details, status
312
+ if ('details' in current) {
313
+ errorObj.details = current.details;
314
+ }
315
+ if ('status' in current) {
316
+ errorObj.status = current.status;
317
+ }
318
+
319
+ chain.push(errorObj);
320
+ current = /** @type {Error} */ (current.cause);
321
+ isFirst = false;
322
+ }
323
+
324
+ return { chain, loggedAt };
325
+ }
326
+
327
+
328
+ /**
329
+ * Clean stack trace for browser display and convert to array
330
+ *
331
+ * @param {string} stack - Original stack trace
332
+ * @returns {Array<string>} Cleaned stack trace as array of relevant frames
333
+ */
334
+ #cleanStackTrace(stack) {
335
+ if (!stack) {
336
+ return [];
337
+ }
338
+
339
+ const lines = stack.split('\n');
340
+ const relevantFrames = [];
341
+
342
+ // Debug: log the original stack to see what we're working with
343
+ // console.debug('Original stack lines:', lines);
344
+
345
+ for (const line of lines) {
346
+ const trimmed = line.trim();
347
+
348
+ // Skip empty lines
349
+ if (!trimmed) {
350
+ continue;
351
+ }
352
+
353
+ // Detect stack frame lines:
354
+ // Firefox/Safari: "functionName@url:line:col"
355
+ // Chrome: "at functionName (url:line:col)" or "at url:line:col"
356
+ const isFirefoxFormat = trimmed.includes('@');
357
+ const isChromeFormat = trimmed.startsWith('at ');
358
+
359
+ if (!isFirefoxFormat && !isChromeFormat) {
360
+ continue; // Skip error message line
361
+ }
362
+
363
+ let cleaned = trimmed;
364
+
365
+ // Convert Chrome format to Firefox format for consistency
366
+ if (isChromeFormat) {
367
+ // "at functionName (url:line:col)" -> "functionName@url:line:col"
368
+ cleaned = cleaned.replace(/^at\s+(.+?)\s+\((.+)\)$/, '$1@$2');
369
+ // "at url:line:col" -> "url:line:col" (anonymous function)
370
+ cleaned = cleaned.replace(/^at\s+([^(]+)$/, '$1');
371
+ }
372
+
373
+ // Remove localhost URLs and make them relative
374
+ cleaned = cleaned.replace(/http:\/\/localhost:\d+\//g, '');
375
+
376
+ // Simplify vite dev dependencies
377
+ cleaned = cleaned.replace(
378
+ /node_modules\/\.vite\/deps\/[^?]+\?v=[a-f0-9]+/g,
379
+ 'node_modules/vite-deps'
380
+ );
381
+
382
+ // Clean up query parameters on source files
383
+ cleaned = cleaned.replace(/\?t=\d+/g, '');
384
+
385
+ // Skip vite-deps (Svelte framework internals) but keep other node_modules
386
+ if (cleaned.includes('node_modules/vite-deps')) {
387
+ continue;
388
+ }
389
+
390
+ // Skip .svelte-kit generated files (except first few)
391
+ if (
392
+ cleaned.includes('.svelte-kit/generated') &&
393
+ relevantFrames.length > 3
394
+ ) {
395
+ continue;
396
+ }
397
+
398
+ relevantFrames.push(cleaned);
399
+
400
+ // Limit to first 15 relevant frames to see more
401
+ if (relevantFrames.length >= 15) {
402
+ break;
403
+ }
404
+ }
405
+
406
+ // console.debug('Cleaned stack frames:', relevantFrames);
407
+ return relevantFrames;
408
+ }
409
+
98
410
  /**
99
411
  * Create a child logger with additional context
100
412
  *
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Shared error formatting logic for logging adapters
3
+ *
4
+ * This module contains reusable functions for analyzing and formatting
5
+ * errors with enhanced stack trace detection and error type identification.
6
+ */
7
+ /**
8
+ * Find the most relevant frame index for highlighting in stack traces
9
+ *
10
+ * @param {Error} error - The error object
11
+ * @param {string[]} cleanedStack - Array of cleaned stack trace frames
12
+ * @returns {number} Index of the most relevant frame to highlight
13
+ */
14
+ export function findRelevantFrameIndex(error: Error, cleanedStack: string[]): number;
15
+ /**
16
+ * Detect error metadata for structured logging and display
17
+ *
18
+ * @param {Error} error - The error object
19
+ * @param {string[]} cleanedStack - Array of cleaned stack trace frames
20
+ * @returns {import('./typedef.js').ErrorSummaryMeta} Error metadata
21
+ */
22
+ export function detectErrorMeta(error: Error, cleanedStack: string[]): import("./typedef.js").ErrorSummaryMeta;
23
+ /**
24
+ * Format error metadata for console display
25
+ *
26
+ * @param {{category: string, method: string, origin?: string|null}} errorMeta - Error metadata
27
+ * @returns {string} Formatted display string (e.g., "httpGet in myFunction")
28
+ */
29
+ export function formatErrorDisplay(errorMeta: {
30
+ category: string;
31
+ method: string;
32
+ origin?: string | null;
33
+ }): string;
34
+ /**
35
+ * Get the specific HkPromise method that caused the error
36
+ *
37
+ * @param {string[]} cleanedStack - Array of cleaned stack trace frames
38
+ * @returns {string|null} HkPromise method name or null
39
+ */
40
+ export function getHkPromiseMethod(cleanedStack: string[]): string | null;
41
+ /**
42
+ * Get the specific HTTP method that caused the error
43
+ *
44
+ * @param {string[]} cleanedStack - Array of cleaned stack trace frames
45
+ * @returns {string|null} HTTP method name or null
46
+ */
47
+ export function getHttpMethod(cleanedStack: string[]): string | null;
48
+ /**
49
+ * Extract user function name from stack trace
50
+ *
51
+ * @param {Error} error - The error object
52
+ * @param {string[]} cleanedStack - Array of cleaned stack trace frames
53
+ * @returns {string|null} User function name or null
54
+ */
55
+ export function extractUserFunctionName(error: Error, cleanedStack: string[]): string | null;
56
+ /**
57
+ * Check if function name is meaningful (not anonymous or framework code)
58
+ *
59
+ * @param {string} functionName - Function name to check
60
+ * @returns {boolean} True if the function name is meaningful
61
+ */
62
+ export function isMeaningfulFunctionName(functionName: string): boolean;
63
+ /**
64
+ * Parse function name from stack frame
65
+ *
66
+ * @param {string} frame - Stack trace frame
67
+ * @returns {string|null} Function name or null
68
+ */
69
+ export function parseFunctionName(frame: string): string | null;