@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.
- package/README.md +6 -6
- package/dist/auth/errors.d.ts +1 -0
- package/dist/auth/errors.js +1 -0
- package/dist/{states → browser/navigation}/navigation.svelte.js +1 -1
- package/dist/browser/navigation.d.ts +1 -0
- package/dist/browser/navigation.js +1 -0
- package/dist/config/README.md +1 -1
- package/dist/config/generators/imagetools.d.ts +2 -0
- package/dist/config/generators/imagetools.js +23 -10
- package/dist/config/generators/vite.js +1 -1
- package/dist/config/imagetools.d.ts +5 -5
- package/dist/config/typedef.d.ts +11 -0
- package/dist/config/typedef.js +17 -0
- package/dist/design/README.md +75 -0
- package/dist/design/generators/index.js +35 -0
- package/dist/design/themes/hkdev/components/buttons/button-text.css +20 -1
- package/dist/design/themes/hkdev/theme-ext.js +1 -1
- package/dist/{classes/data → generic/data/classes}/IterableTree.js +2 -2
- package/dist/{classes/data → generic/data/classes}/Selector.js +1 -1
- package/dist/generic/data/classes/typedef.d.ts +24 -0
- package/dist/generic/data/classes/typedef.js +14 -0
- package/dist/generic/data.d.ts +2 -0
- package/dist/generic/data.js +2 -0
- package/dist/generic/errors.d.ts +2 -0
- package/dist/generic/errors.js +2 -0
- package/dist/generic/events.d.ts +1 -0
- package/dist/generic/events.js +1 -0
- package/dist/{classes/promise → generic/promises/classes}/HkPromise.d.ts +17 -7
- package/dist/{classes/promise → generic/promises/classes}/HkPromise.js +20 -10
- package/dist/generic/promises.d.ts +1 -0
- package/dist/generic/promises.js +1 -0
- package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.d.ts +1 -1
- package/dist/{classes/streams → generic/streaming/classes}/ServerEventsStore.js +2 -2
- package/dist/generic/streaming.d.ts +3 -0
- package/dist/generic/streaming.js +3 -0
- package/dist/generic/typedef.d.ts +1 -0
- package/dist/generic/typedef.js +1 -0
- package/dist/index.js +1 -0
- package/dist/logging/errors.d.ts +7 -0
- package/dist/logging/errors.js +11 -0
- package/dist/logging/internal/adapters/console.d.ts +1 -16
- package/dist/logging/internal/adapters/console.js +320 -8
- package/dist/logging/internal/adapters/formatting.d.ts +69 -0
- package/dist/logging/internal/adapters/formatting.js +395 -0
- package/dist/logging/internal/adapters/pino.js +112 -21
- package/dist/logging/internal/adapters/typedef.d.ts +30 -0
- package/dist/logging/internal/adapters/typedef.js +11 -0
- package/dist/logging/internal/factories/server.js +11 -1
- package/dist/logging/internal/logger/Logger.d.ts +7 -5
- package/dist/logging/internal/logger/Logger.js +41 -6
- package/dist/logging/internal/test-errors.d.ts +35 -0
- package/dist/logging/internal/test-errors.js +138 -0
- package/dist/network/cache/IndexedDbCache.d.ts +1 -1
- package/dist/network/cache/MemoryResponseCache.d.ts +5 -0
- package/dist/network/cache/MemoryResponseCache.js +5 -2
- package/dist/network/errors.d.ts +2 -0
- package/dist/network/errors.js +2 -0
- package/dist/network/http/caching.js +1 -1
- package/dist/network/http/errors.d.ts +2 -2
- package/dist/network/http/errors.js +5 -13
- package/dist/network/http/http-request.js +1 -1
- package/dist/network/http/json-request.js +1 -1
- package/dist/network/http/response.js +1 -1
- package/dist/network/http/url.js +1 -1
- package/dist/network/loaders/README.md +14 -7
- package/dist/network/loaders/audio/AudioScene.svelte.js +3 -2
- package/dist/network/loaders/image/ImageLoader.svelte.d.ts +2 -2
- package/dist/network/loaders/image/ImageLoader.svelte.js +1 -1
- package/dist/network/loaders/image/ImageScene.svelte.d.ts +2 -2
- package/dist/network/loaders/image/ImageScene.svelte.js +9 -8
- package/dist/network/loaders/image/ImageVariantsLoader.svelte.d.ts +5 -5
- package/dist/network/loaders/image/ImageVariantsLoader.svelte.js +14 -13
- package/dist/network/loaders/image/utils/index.d.ts +2 -2
- package/dist/network/loaders/image/utils/index.js +9 -12
- package/dist/network/loaders/typedef.d.ts +0 -9
- package/dist/network/loaders/typedef.js +0 -12
- package/dist/network/states/NetworkLoader.svelte.d.ts +1 -1
- package/dist/network/states/NetworkLoader.svelte.js +3 -2
- package/dist/services/service-base/ServiceBase.d.ts +2 -2
- package/dist/services/service-base/ServiceBase.js +15 -11
- package/dist/services/service-base/typedef.d.ts +2 -31
- package/dist/services/service-base/typedef.js +3 -2
- package/dist/services/service-manager/ServiceManager.d.ts +3 -3
- package/dist/services/service-manager/ServiceManager.js +2 -2
- package/dist/services/service-manager/typedef.d.ts +3 -3
- package/dist/services/service-manager/typedef.js +3 -3
- package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.d.ts +1 -1
- package/dist/{classes/svelte → state/classes}/loading-state-machine/LoadingStateMachine.svelte.js +1 -1
- package/dist/state/classes/subscribers-count/index.d.ts +1 -0
- package/dist/state/classes/subscribers-count/index.js +1 -0
- package/dist/state/classes.d.ts +3 -0
- package/dist/state/classes.js +3 -0
- package/dist/{util/svelte/state-context/index.d.ts → state/context/state-context.d.ts} +1 -1
- package/dist/{util/svelte/state-context/index.js → state/context/state-context.js} +4 -4
- package/dist/state/context.d.ts +1 -0
- package/dist/state/context.js +1 -0
- package/dist/state/stores.d.ts +1 -0
- package/dist/state/stores.js +1 -0
- package/dist/ui/README.md +49 -0
- package/dist/ui/components/button-group/index.d.ts +1 -0
- package/dist/ui/components/button-group/index.js +1 -0
- package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte +1 -1
- package/dist/ui/{primitives → components}/drag-drop/DragDropContext.svelte.d.ts +1 -1
- package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte +2 -2
- package/dist/ui/{primitives → components}/drag-drop/Draggable.svelte.d.ts +1 -1
- package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte +4 -4
- package/dist/ui/{primitives → components}/drag-drop/DropZone.svelte.d.ts +3 -3
- package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte +3 -3
- package/dist/ui/{primitives → components}/drag-drop/DropZoneArea.svelte.d.ts +4 -4
- package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte +3 -3
- package/dist/ui/{primitives → components}/drag-drop/DropZoneList.svelte.d.ts +3 -3
- package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.d.ts +11 -11
- package/dist/ui/{primitives → components}/drag-drop/drag-state.svelte.js +5 -5
- package/dist/ui/components/drag-drop/typedef.d.ts +2 -0
- package/dist/ui/components/drag-drop/typedef.js +2 -0
- package/dist/ui/components/game-box/index.d.ts +1 -0
- package/dist/ui/components/game-box/index.js +1 -0
- package/dist/ui/components/grid-layers/index.d.ts +1 -0
- package/dist/ui/components/grid-layers/index.js +1 -0
- package/dist/ui/{primitives/layout → components}/grid-layers/util.js +1 -1
- package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.d.ts +3 -3
- package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.js +3 -4
- package/dist/ui/components/hk-app-layout/index.d.ts +1 -0
- package/dist/ui/components/hk-app-layout/index.js +1 -0
- package/dist/ui/components/image-box/ImageBox.svelte +2 -2
- package/dist/ui/components/image-box/ImageBox.svelte.d.ts +3 -3
- package/dist/ui/components/image-box/index.d.ts +1 -1
- package/dist/ui/components/presenter/ImageSlide.svelte +1 -1
- package/dist/ui/components/presenter/ImageSlide.svelte.d.ts +2 -2
- package/dist/ui/components/presenter/Presenter.state.svelte.d.ts +3 -3
- package/dist/ui/components/presenter/Presenter.state.svelte.js +1 -1
- package/dist/ui/components/presenter/Presenter.svelte +1 -1
- package/dist/ui/components/presenter/Presenter.svelte.d.ts +1 -1
- package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte.d.ts +1 -1
- package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte.d.ts +1 -1
- package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.d.ts +3 -3
- package/dist/ui/{primitives → components}/tab-bar/HkTabBar.state.svelte.js +4 -2
- package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte +2 -2
- package/dist/ui/{primitives → components}/tab-bar/HkTabBar.svelte.d.ts +2 -2
- package/dist/ui/components/tab-bar/HkTabBarSelector.state.svelte.d.ts +19 -0
- package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.state.svelte.js +2 -2
- package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte +1 -1
- package/dist/ui/{primitives → components}/tab-bar/HkTabBarSelector.svelte.d.ts +2 -2
- package/dist/ui/{primitives → components}/tab-bar/typedef.d.ts +1 -1
- package/dist/ui/{primitives → components}/tab-bar/typedef.js +1 -1
- package/dist/ui/components/typedef.d.ts +5 -0
- package/dist/ui/components/typedef.js +5 -0
- package/dist/ui/components/virtual-viewport/index.d.ts +1 -0
- package/dist/ui/components/virtual-viewport/index.js +1 -0
- package/dist/ui/components.d.ts +11 -0
- package/dist/ui/components.js +11 -0
- package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte +1 -1
- package/dist/ui/{primitives/debug → dev}/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +1 -1
- package/dist/ui/dev.d.ts +3 -0
- package/dist/ui/dev.js +3 -0
- package/dist/ui/primitives/buttons/button/Button.svelte.d.ts +1 -1
- package/dist/ui/primitives/typedef.d.ts +1 -0
- package/dist/ui/primitives/typedef.js +1 -0
- package/dist/ui/primitives.d.ts +5 -0
- package/dist/ui/primitives.js +5 -0
- package/dist/ui/typedef.d.ts +2 -0
- package/dist/ui/typedef.js +2 -0
- package/dist/util/array/index.js +1 -1
- package/dist/util/bases/base58.d.ts +3 -3
- package/dist/util/bases/base58.js +3 -3
- package/dist/util/compare/index.d.ts +4 -5
- package/dist/util/compare/index.js +3 -4
- package/dist/util/exceptions/index.js +1 -1
- package/dist/util/expect/arrays.d.ts +11 -11
- package/dist/util/expect/arrays.js +14 -6
- package/dist/util/expect/index.js +2 -2
- package/dist/util/expect/primitives.d.ts +6 -5
- package/dist/util/expect/primitives.js +15 -5
- package/dist/util/expect/url.d.ts +6 -5
- package/dist/util/expect/url.js +15 -5
- package/dist/util/function/index.d.ts +1 -14
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.js +13 -0
- package/dist/util/is/index.d.ts +3 -2
- package/dist/util/is/index.js +2 -1
- package/dist/util/iterate/index.d.ts +6 -8
- package/dist/util/iterate/index.js +5 -5
- package/dist/util/object/index.d.ts +1 -2
- package/dist/util/object/index.js +2 -3
- package/dist/util/ssr/index.d.ts +16 -0
- package/dist/util/ssr/index.js +44 -0
- package/dist/util/svelte/index.d.ts +1 -1
- package/dist/util/svelte/index.js +1 -1
- package/dist/util/time/index.d.ts +2 -2
- package/dist/util/time/index.js +1 -1
- package/dist/valibot/index.d.ts +1 -1
- package/dist/valibot/index.js +27 -1
- package/package.json +3 -3
- package/dist/assets/autospuiten/car-paint-picker/army-green.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/electric-blue.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/lemon-yellow.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/opaque-purple.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/rusty.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/sunset-orange.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/tomato-red.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker.d.ts +0 -17
- package/dist/assets/autospuiten/car-paint-picker.js +0 -41
- package/dist/assets/autospuiten/labels.d.ts +0 -7
- package/dist/assets/autospuiten/labels.js +0 -7
- package/dist/classes/data/index.d.ts +0 -2
- package/dist/classes/data/index.js +0 -2
- package/dist/classes/event-emitter/index.d.ts +0 -1
- package/dist/classes/event-emitter/index.js +0 -2
- package/dist/classes/index.d.ts +0 -4
- package/dist/classes/index.js +0 -4
- package/dist/classes/promise/index.d.ts +0 -1
- package/dist/classes/promise/index.js +0 -1
- package/dist/classes/stores/index.d.ts +0 -1
- package/dist/classes/stores/index.js +0 -1
- package/dist/classes/streams/index.d.ts +0 -3
- package/dist/classes/streams/index.js +0 -3
- package/dist/classes/svelte/index.d.ts +0 -1
- package/dist/classes/svelte/index.js +0 -1
- package/dist/errors/index.d.ts +0 -5
- package/dist/errors/index.js +0 -5
- package/dist/services/service-base/index.d.ts +0 -3
- package/dist/services/service-base/index.js +0 -3
- package/dist/states/index.d.ts +0 -1
- package/dist/states/index.js +0 -1
- package/dist/stores/index.d.ts +0 -1
- package/dist/stores/index.js +0 -1
- package/dist/typedef/index.d.ts +0 -3
- package/dist/typedef/index.js +0 -3
- package/dist/ui/primitives/debug/index.d.ts +0 -1
- package/dist/ui/primitives/debug/index.js +0 -1
- package/dist/ui/primitives/index.d.ts +0 -1
- package/dist/ui/primitives/index.js +0 -1
- package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
- package/dist/ui/primitives/layout/index.d.ts +0 -1
- package/dist/ui/primitives/layout/index.js +0 -1
- package/dist/ui/primitives/tab-bar/HkTabBarSelector.state.svelte.d.ts +0 -19
- /package/dist/{errors → auth/errors}/jwt.d.ts +0 -0
- /package/dist/{errors → auth/errors}/jwt.js +0 -0
- /package/dist/{states → browser/navigation}/navigation.svelte.d.ts +0 -0
- /package/dist/{classes/data → generic/data/classes}/IterableTree.d.ts +0 -0
- /package/dist/{classes/data → generic/data/classes}/Selector.d.ts +0 -0
- /package/dist/{classes → generic}/data/typedef.d.ts +0 -0
- /package/dist/{classes → generic}/data/typedef.js +0 -0
- /package/dist/{errors → generic/errors}/generic.d.ts +0 -0
- /package/dist/{errors → generic/errors}/generic.js +0 -0
- /package/dist/{errors → generic/errors}/promise.d.ts +0 -0
- /package/dist/{errors → generic/errors}/promise.js +0 -0
- /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.d.ts +0 -0
- /package/dist/{classes/event-emitter → generic/events/classes}/EventEmitter.js +0 -0
- /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.d.ts +0 -0
- /package/dist/{classes/streams → generic/streaming/classes}/LogTransformStream.js +0 -0
- /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.d.ts +0 -0
- /package/dist/{classes/streams → generic/streaming/classes}/TimeStampSource.js +0 -0
- /package/dist/{errors → network/errors}/api.d.ts +0 -0
- /package/dist/{errors → network/errors}/api.js +0 -0
- /package/dist/{errors → network/errors}/http.d.ts +0 -0
- /package/dist/{errors → network/errors}/http.js +0 -0
- /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.d.ts +0 -0
- /package/dist/{classes/svelte → state/classes}/finite-state-machine/FiniteStateMachine.svelte.js +0 -0
- /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.d.ts +0 -0
- /package/dist/{classes/svelte → state/classes}/finite-state-machine/index.js +0 -0
- /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.d.ts +0 -0
- /package/dist/{classes/svelte → state/classes}/loading-state-machine/constants.js +0 -0
- /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.d.ts +0 -0
- /package/dist/{classes/svelte → state/classes}/loading-state-machine/index.js +0 -0
- /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.d.ts +0 -0
- /package/dist/{classes/stores → state/classes/subscribers-count}/SubscribersCount.js +0 -0
- /package/dist/{typedef/context.d.ts → state/context/typedef.d.ts} +0 -0
- /package/dist/{typedef/context.js → state/context/typedef.js} +0 -0
- /package/dist/{stores → state/stores}/theme.d.ts +0 -0
- /package/dist/{stores → state/stores}/theme.js +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/DragController.d.ts +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/DragController.js +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/actions.d.ts +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/actions.js +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/index.d.ts +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/index.js +0 -0
- /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.d.ts +0 -0
- /package/dist/{typedef → ui/components/drag-drop/typedef}/drag.js +0 -0
- /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.d.ts +0 -0
- /package/dist/{typedef → ui/components/drag-drop/typedef}/drop.js +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/util.d.ts +0 -0
- /package/dist/ui/{primitives → components}/drag-drop/util.js +0 -0
- /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte +0 -0
- /package/dist/ui/{primitives/layout → components}/grid-layers/GridLayers.svelte.d.ts +0 -0
- /package/dist/ui/{primitives/layout → components}/grid-layers/util.d.ts +0 -0
- /package/dist/ui/{primitives → components}/rows/index.d.ts +0 -0
- /package/dist/ui/{primitives → components}/rows/index.js +0 -0
- /package/dist/ui/{primitives → components}/rows/panel-grid-row/PanelGridRow.svelte +0 -0
- /package/dist/ui/{primitives → components}/rows/panel-row-2/PanelRow2.svelte +0 -0
- /package/dist/ui/{primitives → components}/tab-bar/index.d.ts +0 -0
- /package/dist/ui/{primitives → components}/tab-bar/index.js +0 -0
- /package/dist/ui/{primitives/hkdev → dev}/blocks/TextBlock.svelte.d.ts +0 -0
- /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte +0 -0
- /package/dist/ui/{primitives/hkdev → dev}/buttons/CheckButton.svelte.d.ts +0 -0
- /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
|
|
@@ -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
|
|
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
|
|
47
|
+
const logData = this.#processLogData(details);
|
|
40
48
|
|
|
41
49
|
if (logData) {
|
|
42
|
-
console[this
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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;
|