@hkdigital/lib-core 0.3.14 → 0.4.3

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 (324) hide show
  1. package/README.md +18 -9
  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 +5 -5
  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 +211 -66
  15. package/dist/design/config/{design-config.d.ts → design-tokens.d.ts} +23 -10
  16. package/dist/design/config/design-tokens.js +107 -0
  17. package/dist/design/generators/index.d.ts +51 -0
  18. package/dist/design/generators/index.js +124 -0
  19. package/dist/design/index.d.ts +3 -4
  20. package/dist/design/index.js +24 -41
  21. package/dist/design/plugins/skeleton.d.ts +4 -2
  22. package/dist/design/plugins/skeleton.js +3 -2
  23. package/dist/design/themes/hkdev/components/buttons/button-text.css +38 -25
  24. package/dist/design/themes/hkdev/theme-ext.js +1 -1
  25. package/dist/design/utils/clamp.js +1 -1
  26. package/dist/design/utils/root-vars.d.ts +50 -39
  27. package/dist/design/utils/root-vars.js +127 -29
  28. package/dist/{classes/data → generic/data/classes}/IterableTree.js +2 -2
  29. package/dist/{classes/data → generic/data/classes}/Selector.js +1 -1
  30. package/dist/generic/data/classes/typedef.d.ts +24 -0
  31. package/dist/generic/data/classes/typedef.js +14 -0
  32. package/dist/generic/data.d.ts +2 -0
  33. package/dist/generic/data.js +2 -0
  34. package/dist/generic/errors.d.ts +2 -0
  35. package/dist/generic/errors.js +2 -0
  36. package/dist/generic/events.d.ts +1 -0
  37. package/dist/generic/events.js +1 -0
  38. package/dist/{classes/promise → generic/promises/classes}/HkPromise.d.ts +17 -7
  39. package/dist/{classes/promise → generic/promises/classes}/HkPromise.js +20 -10
  40. package/dist/generic/promises.d.ts +1 -0
  41. package/dist/generic/promises.js +1 -0
  42. package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.d.ts +1 -1
  43. package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.js +2 -2
  44. package/dist/generic/streaming.d.ts +3 -0
  45. package/dist/generic/streaming.js +3 -0
  46. package/dist/generic/typedef.d.ts +1 -0
  47. package/dist/generic/typedef.js +1 -0
  48. package/dist/index.js +1 -0
  49. package/dist/logging/errors.d.ts +7 -0
  50. package/dist/logging/errors.js +11 -0
  51. package/dist/logging/index.d.ts +2 -3
  52. package/dist/logging/index.js +3 -4
  53. package/dist/logging/internal/adapters/console.d.ts +1 -16
  54. package/dist/logging/internal/adapters/console.js +322 -14
  55. package/dist/logging/internal/adapters/formatting.d.ts +69 -0
  56. package/dist/logging/internal/adapters/formatting.js +395 -0
  57. package/dist/logging/internal/adapters/pino.js +128 -27
  58. package/dist/logging/internal/adapters/typedef.d.ts +30 -0
  59. package/dist/logging/internal/adapters/typedef.js +11 -0
  60. package/dist/logging/internal/factories/client.js +1 -1
  61. package/dist/logging/internal/factories/server.js +12 -2
  62. package/dist/logging/internal/logger/Logger.d.ts +9 -7
  63. package/dist/logging/internal/logger/Logger.js +44 -9
  64. package/dist/logging/internal/test-errors.d.ts +35 -0
  65. package/dist/logging/internal/test-errors.js +137 -0
  66. package/dist/network/cache/IndexedDbCache.d.ts +1 -1
  67. package/dist/network/cache/MemoryResponseCache.d.ts +5 -0
  68. package/dist/network/cache/MemoryResponseCache.js +5 -2
  69. package/dist/network/errors.d.ts +2 -0
  70. package/dist/network/errors.js +2 -0
  71. package/dist/network/http/caching.js +1 -1
  72. package/dist/network/http/errors.d.ts +2 -2
  73. package/dist/network/http/errors.js +5 -13
  74. package/dist/network/http/http-request.js +1 -1
  75. package/dist/network/http/json-request.js +1 -1
  76. package/dist/network/http/response.js +1 -1
  77. package/dist/network/http/url.js +1 -1
  78. package/dist/network/loaders/README.md +14 -7
  79. package/dist/network/loaders/audio/AudioScene.svelte.js +3 -2
  80. package/dist/network/loaders/image/ImageLoader.svelte.d.ts +2 -2
  81. package/dist/network/loaders/image/ImageLoader.svelte.js +1 -1
  82. package/dist/network/loaders/image/ImageScene.svelte.d.ts +2 -2
  83. package/dist/network/loaders/image/ImageScene.svelte.js +9 -8
  84. package/dist/network/loaders/image/ImageVariantsLoader.svelte.d.ts +5 -5
  85. package/dist/network/loaders/image/ImageVariantsLoader.svelte.js +14 -13
  86. package/dist/network/loaders/image/utils/index.d.ts +2 -2
  87. package/dist/network/loaders/image/utils/index.js +9 -12
  88. package/dist/network/loaders/typedef.d.ts +0 -9
  89. package/dist/network/loaders/typedef.js +0 -12
  90. package/dist/network/states/NetworkLoader.svelte.d.ts +1 -1
  91. package/dist/network/states/NetworkLoader.svelte.js +3 -2
  92. package/dist/services/index.d.ts +0 -2
  93. package/dist/services/index.js +0 -3
  94. package/dist/services/service-base/ServiceBase.d.ts +2 -2
  95. package/dist/services/service-base/ServiceBase.js +15 -11
  96. package/dist/services/service-base/typedef.d.ts +2 -31
  97. package/dist/services/service-base/typedef.js +3 -2
  98. package/dist/services/service-manager/ServiceManager.d.ts +3 -3
  99. package/dist/services/service-manager/ServiceManager.js +2 -2
  100. package/dist/services/service-manager/typedef.d.ts +3 -3
  101. package/dist/services/service-manager/typedef.js +3 -3
  102. package/dist/services/typedef.d.ts +2 -0
  103. package/dist/services/typedef.js +2 -0
  104. package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.d.ts +1 -1
  105. package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.js +1 -1
  106. package/dist/state/classes/subscribers-count/index.d.ts +1 -0
  107. package/dist/state/classes/subscribers-count/index.js +1 -0
  108. package/dist/state/classes.d.ts +3 -0
  109. package/dist/state/classes.js +3 -0
  110. package/dist/{util/svelte/state-context/index.d.ts → state/context/state-context.d.ts} +1 -1
  111. package/dist/{util/svelte/state-context/index.js → state/context/state-context.js} +4 -4
  112. package/dist/state/context.d.ts +1 -0
  113. package/dist/state/context.js +1 -0
  114. package/dist/state/stores.d.ts +1 -0
  115. package/dist/state/stores.js +1 -0
  116. package/dist/ui/README.md +49 -0
  117. package/dist/ui/components/button-group/index.d.ts +1 -0
  118. package/dist/ui/components/button-group/index.js +1 -0
  119. package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte +1 -1
  120. package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte.d.ts +1 -1
  121. package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte +2 -2
  122. package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte.d.ts +1 -1
  123. package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte +4 -4
  124. package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte.d.ts +3 -3
  125. package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte +3 -3
  126. package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte.d.ts +4 -4
  127. package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte +3 -3
  128. package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte.d.ts +3 -3
  129. package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.d.ts +11 -11
  130. package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.js +5 -5
  131. package/dist/ui/components/drag-drop/typedef.d.ts +2 -0
  132. package/dist/ui/components/drag-drop/typedef.js +2 -0
  133. package/dist/ui/components/game-box/GameBox.svelte +1 -1
  134. package/dist/ui/components/game-box/index.d.ts +1 -0
  135. package/dist/ui/components/game-box/index.js +1 -0
  136. package/dist/ui/components/grid-layers/index.d.ts +1 -0
  137. package/dist/ui/components/grid-layers/index.js +1 -0
  138. package/dist/ui/{primitives/layout → components}/grid-layers/util.js +1 -1
  139. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.d.ts +3 -3
  140. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.js +3 -4
  141. package/dist/ui/components/hk-app-layout/index.d.ts +1 -0
  142. package/dist/ui/components/hk-app-layout/index.js +1 -0
  143. package/dist/ui/components/image-box/ImageBox.svelte +2 -2
  144. package/dist/ui/components/image-box/ImageBox.svelte.d.ts +3 -3
  145. package/dist/ui/components/image-box/index.d.ts +1 -1
  146. package/dist/ui/components/presenter/ImageSlide.svelte +1 -1
  147. package/dist/ui/components/presenter/ImageSlide.svelte.d.ts +2 -2
  148. package/dist/ui/components/presenter/Presenter.state.svelte.d.ts +3 -3
  149. package/dist/ui/components/presenter/Presenter.state.svelte.js +1 -1
  150. package/dist/ui/components/presenter/Presenter.svelte +1 -1
  151. package/dist/ui/components/presenter/Presenter.svelte.d.ts +1 -1
  152. package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte.d.ts +1 -1
  153. package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte.d.ts +1 -1
  154. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.d.ts +3 -3
  155. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.js +4 -2
  156. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte +2 -2
  157. package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte.d.ts +2 -2
  158. package/dist/ui/components/tab-bar/HkTabBarSelector.state.svelte.d.ts +19 -0
  159. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.state.svelte.js +2 -2
  160. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte +1 -1
  161. package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte.d.ts +2 -2
  162. package/dist/ui/{primitives → components}/tab-bar/typedef.d.ts +1 -1
  163. package/dist/ui/{primitives → components}/tab-bar/typedef.js +1 -1
  164. package/dist/ui/components/typedef.d.ts +5 -0
  165. package/dist/ui/components/typedef.js +5 -0
  166. package/dist/ui/components/virtual-viewport/index.d.ts +1 -0
  167. package/dist/ui/components/virtual-viewport/index.js +1 -0
  168. package/dist/ui/components.d.ts +11 -0
  169. package/dist/ui/components.js +11 -0
  170. package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte +1 -1
  171. package/dist/ui/{primitives/debug → dev}/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +8 -8
  172. package/dist/ui/dev.d.ts +3 -0
  173. package/dist/ui/dev.js +3 -0
  174. package/dist/ui/primitives/buttons/button/Button.svelte.d.ts +1 -1
  175. package/dist/ui/primitives/buttons/button-text/TextButton.svelte +1 -1
  176. package/dist/ui/primitives/typedef.d.ts +1 -0
  177. package/dist/ui/primitives/typedef.js +1 -0
  178. package/dist/ui/primitives.d.ts +5 -0
  179. package/dist/ui/primitives.js +5 -0
  180. package/dist/ui/typedef.d.ts +2 -0
  181. package/dist/ui/typedef.js +2 -0
  182. package/dist/util/array/index.js +1 -1
  183. package/dist/util/bases/base58.d.ts +3 -3
  184. package/dist/util/bases/base58.js +3 -3
  185. package/dist/util/compare/index.d.ts +4 -5
  186. package/dist/util/compare/index.js +3 -4
  187. package/dist/util/exceptions/index.js +1 -1
  188. package/dist/util/expect/arrays.d.ts +11 -11
  189. package/dist/util/expect/arrays.js +14 -6
  190. package/dist/util/expect/index.js +2 -2
  191. package/dist/util/expect/primitives.d.ts +6 -5
  192. package/dist/util/expect/primitives.js +15 -5
  193. package/dist/util/expect/url.d.ts +6 -5
  194. package/dist/util/expect/url.js +15 -5
  195. package/dist/util/function/index.d.ts +1 -14
  196. package/dist/util/index.d.ts +5 -0
  197. package/dist/util/index.js +13 -0
  198. package/dist/util/is/index.d.ts +3 -2
  199. package/dist/util/is/index.js +2 -1
  200. package/dist/util/iterate/index.d.ts +6 -8
  201. package/dist/util/iterate/index.js +5 -5
  202. package/dist/util/object/index.d.ts +1 -2
  203. package/dist/util/object/index.js +2 -3
  204. package/dist/util/ssr/index.d.ts +16 -0
  205. package/dist/util/ssr/index.js +44 -0
  206. package/dist/util/svelte/index.d.ts +1 -1
  207. package/dist/util/svelte/index.js +1 -1
  208. package/dist/util/time/index.d.ts +2 -2
  209. package/dist/util/time/index.js +1 -1
  210. package/dist/valibot/index.d.ts +1 -1
  211. package/dist/valibot/index.js +27 -1
  212. package/package.json +4 -4
  213. package/dist/assets/autospuiten/car-paint-picker/army-green.jpg +0 -0
  214. package/dist/assets/autospuiten/car-paint-picker/electric-blue.jpg +0 -0
  215. package/dist/assets/autospuiten/car-paint-picker/lemon-yellow.jpg +0 -0
  216. package/dist/assets/autospuiten/car-paint-picker/opaque-purple.jpg +0 -0
  217. package/dist/assets/autospuiten/car-paint-picker/rusty.jpg +0 -0
  218. package/dist/assets/autospuiten/car-paint-picker/sunset-orange.jpg +0 -0
  219. package/dist/assets/autospuiten/car-paint-picker/tomato-red.jpg +0 -0
  220. package/dist/assets/autospuiten/car-paint-picker.d.ts +0 -17
  221. package/dist/assets/autospuiten/car-paint-picker.js +0 -41
  222. package/dist/assets/autospuiten/labels.d.ts +0 -7
  223. package/dist/assets/autospuiten/labels.js +0 -7
  224. package/dist/classes/data/index.d.ts +0 -2
  225. package/dist/classes/data/index.js +0 -2
  226. package/dist/classes/event-emitter/index.d.ts +0 -1
  227. package/dist/classes/event-emitter/index.js +0 -2
  228. package/dist/classes/index.d.ts +0 -4
  229. package/dist/classes/index.js +0 -4
  230. package/dist/classes/promise/index.d.ts +0 -1
  231. package/dist/classes/promise/index.js +0 -1
  232. package/dist/classes/stores/index.d.ts +0 -1
  233. package/dist/classes/stores/index.js +0 -1
  234. package/dist/classes/streams/index.d.ts +0 -3
  235. package/dist/classes/streams/index.js +0 -3
  236. package/dist/classes/svelte/index.d.ts +0 -1
  237. package/dist/classes/svelte/index.js +0 -1
  238. package/dist/design/config/design-config.js +0 -73
  239. package/dist/design/tailwind-theme-extend.d.ts +0 -23
  240. package/dist/design/tailwind-theme-extend.js +0 -158
  241. package/dist/errors/index.d.ts +0 -5
  242. package/dist/errors/index.js +0 -5
  243. package/dist/logging/internal/factories/universal.d.ts +0 -9
  244. package/dist/logging/internal/factories/universal.js +0 -22
  245. package/dist/services/service-base/index.d.ts +0 -3
  246. package/dist/services/service-base/index.js +0 -3
  247. package/dist/states/index.d.ts +0 -1
  248. package/dist/states/index.js +0 -1
  249. package/dist/stores/index.d.ts +0 -1
  250. package/dist/stores/index.js +0 -1
  251. package/dist/typedef/index.d.ts +0 -4
  252. package/dist/typedef/index.js +0 -4
  253. package/dist/ui/primitives/debug/index.d.ts +0 -1
  254. package/dist/ui/primitives/debug/index.js +0 -1
  255. package/dist/ui/primitives/index.d.ts +0 -0
  256. package/dist/ui/primitives/index.js +0 -2
  257. package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
  258. package/dist/ui/primitives/layout/index.d.ts +0 -1
  259. package/dist/ui/primitives/layout/index.js +0 -1
  260. package/dist/ui/primitives/tab-bar/HkTabBarSelector.state.svelte.d.ts +0 -19
  261. /package/dist/{errors → auth/errors}/jwt.d.ts +0 -0
  262. /package/dist/{errors → auth/errors}/jwt.js +0 -0
  263. /package/dist/{states → browser/navigation}/navigation.svelte.d.ts +0 -0
  264. /package/dist/{classes/data → generic/data/classes}/IterableTree.d.ts +0 -0
  265. /package/dist/{classes/data → generic/data/classes}/Selector.d.ts +0 -0
  266. /package/dist/{classes → generic}/data/typedef.d.ts +0 -0
  267. /package/dist/{classes → generic}/data/typedef.js +0 -0
  268. /package/dist/{errors → generic/errors}/generic.d.ts +0 -0
  269. /package/dist/{errors → generic/errors}/generic.js +0 -0
  270. /package/dist/{errors → generic/errors}/promise.d.ts +0 -0
  271. /package/dist/{errors → generic/errors}/promise.js +0 -0
  272. /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.d.ts +0 -0
  273. /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.js +0 -0
  274. /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.d.ts +0 -0
  275. /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.js +0 -0
  276. /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.d.ts +0 -0
  277. /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.js +0 -0
  278. /package/dist/logging/{internal/constants.d.ts → constants.d.ts} +0 -0
  279. /package/dist/logging/{internal/constants.js → constants.js} +0 -0
  280. /package/dist/logging/{internal/typedef.d.ts → typedef.d.ts} +0 -0
  281. /package/dist/logging/{internal/typedef.js → typedef.js} +0 -0
  282. /package/dist/{errors → network/errors}/api.d.ts +0 -0
  283. /package/dist/{errors → network/errors}/api.js +0 -0
  284. /package/dist/{errors → network/errors}/http.d.ts +0 -0
  285. /package/dist/{errors → network/errors}/http.js +0 -0
  286. /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.d.ts +0 -0
  287. /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.js +0 -0
  288. /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.d.ts +0 -0
  289. /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.js +0 -0
  290. /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.d.ts +0 -0
  291. /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.js +0 -0
  292. /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.d.ts +0 -0
  293. /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.js +0 -0
  294. /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.d.ts +0 -0
  295. /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.js +0 -0
  296. /package/dist/{typedef/context.d.ts → state/context/typedef.d.ts} +0 -0
  297. /package/dist/{typedef/context.js → state/context/typedef.js} +0 -0
  298. /package/dist/{stores → state/stores}/theme.d.ts +0 -0
  299. /package/dist/{stores → state/stores}/theme.js +0 -0
  300. /package/dist/ui/{primitives → components}/drag-drop/DragController.d.ts +0 -0
  301. /package/dist/ui/{primitives → components}/drag-drop/DragController.js +0 -0
  302. /package/dist/ui/{primitives → components}/drag-drop/actions.d.ts +0 -0
  303. /package/dist/ui/{primitives → components}/drag-drop/actions.js +0 -0
  304. /package/dist/ui/{primitives → components}/drag-drop/index.d.ts +0 -0
  305. /package/dist/ui/{primitives → components}/drag-drop/index.js +0 -0
  306. /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.d.ts +0 -0
  307. /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.js +0 -0
  308. /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.d.ts +0 -0
  309. /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.js +0 -0
  310. /package/dist/ui/{primitives → components}/drag-drop/util.d.ts +0 -0
  311. /package/dist/ui/{primitives → components}/drag-drop/util.js +0 -0
  312. /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte +0 -0
  313. /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte.d.ts +0 -0
  314. /package/dist/ui/{primitives/layout → components}/grid-layers/util.d.ts +0 -0
  315. /package/dist/ui/{primitives → components}/rows/index.d.ts +0 -0
  316. /package/dist/ui/{primitives → components}/rows/index.js +0 -0
  317. /package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte +0 -0
  318. /package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte +0 -0
  319. /package/dist/ui/{primitives → components}/tab-bar/index.d.ts +0 -0
  320. /package/dist/ui/{primitives → components}/tab-bar/index.js +0 -0
  321. /package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte.d.ts +0 -0
  322. /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte +0 -0
  323. /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte.d.ts +0 -0
  324. /package/dist/ui/{primitives/debug → dev}/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +0 -0
@@ -1,4 +1,12 @@
1
- import { LEVELS } from '../constants.js';
1
+ import { dev } from '$app/environment';
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,20 +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
- // Merge context with details
39
- const logData = details
40
- ? { ...this.context, ...details }
41
- : Object.keys(this.context).length > 0
42
- ? this.context
43
- : undefined;
46
+ // Process details for better error formatting
47
+ const logData = this.#processLogData(details);
44
48
 
45
49
  if (logData) {
46
- 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
+ }
47
130
  } else {
48
- console[this._getConsoleMethod(level)](prefix, styles, message);
131
+ console[this.#getConsoleMethod(level)](prefix, styles, message);
49
132
  }
50
133
  }
51
134
 
@@ -54,9 +137,8 @@ export class ConsoleAdapter {
54
137
  *
55
138
  * @param {string} level - Log level
56
139
  * @returns {string} CSS styles
57
- * @private
58
140
  */
59
- _getStyles(level) {
141
+ #getStyles(level) {
60
142
  const baseStyle =
61
143
  'padding: 2px 4px; border-radius: 2px; font-weight: bold;';
62
144
 
@@ -81,9 +163,8 @@ export class ConsoleAdapter {
81
163
  *
82
164
  * @param {string} level - Log level
83
165
  * @returns {string} Console method name
84
- * @private
85
166
  */
86
- _getConsoleMethod(level) {
167
+ #getConsoleMethod(level) {
87
168
  switch (level) {
88
169
  case 'debug':
89
170
  return 'debug';
@@ -99,6 +180,233 @@ export class ConsoleAdapter {
99
180
  }
100
181
  }
101
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
+
102
410
  /**
103
411
  * Create a child logger with additional context
104
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;