@hkdigital/lib-core 0.3.11 → 0.3.13
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 +173 -149
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/data/IterableTree.js +242 -242
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/data/typedef.js +9 -9
- package/dist/classes/event-emitter/EventEmitter.js +273 -273
- package/dist/classes/event-emitter/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/promise/HkPromise.js +384 -384
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +111 -111
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/finite-state-machine/index.js +1 -1
- package/dist/classes/svelte/index.js +1 -11
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/config/README.md +197 -196
- package/dist/config/generators/imagetools.js +189 -189
- package/dist/config/generators/vite.js +148 -142
- package/dist/config/imagetools.d.ts +72 -72
- package/dist/config/vite.js +4 -4
- package/dist/constants/bases/index.js +13 -13
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +14 -14
- package/dist/constants/index.js +6 -6
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/README.md +96 -95
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.d.ts +4 -4
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/url.js +3 -3
- package/dist/constants/regexp/user.js +29 -29
- package/dist/constants/states/drag.js +6 -6
- package/dist/constants/states/drop.js +6 -6
- package/dist/constants/states/index.js +4 -4
- package/dist/constants/states/input.js +11 -11
- package/dist/constants/states/submit.js +4 -4
- package/dist/constants/time/index.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/README.md +405 -405
- package/dist/design/config/design-config.js +73 -73
- package/dist/design/generators/index.js +288 -288
- package/dist/design/index.js +96 -96
- package/dist/design/plugins/skeleton.js +208 -208
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/design/themes/README.md +102 -102
- package/dist/design/themes/hkdev/components/blocks/text-block.css +34 -34
- package/dist/design/themes/hkdev/components/boxes/game-box.css +11 -11
- package/dist/design/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/design/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/design/themes/hkdev/components/buttons/button.css +146 -146
- package/dist/design/themes/hkdev/components/buttons/skip-button.css +5 -5
- package/dist/design/themes/hkdev/components/drag-drop/draggable.css +73 -73
- package/dist/design/themes/hkdev/components/drag-drop/drop-zone.css +58 -58
- package/dist/design/themes/hkdev/components/icons/icon-steeze.css +15 -15
- package/dist/design/themes/hkdev/components/inputs/text-input.css +102 -102
- package/dist/design/themes/hkdev/components/panels/panel.css +25 -25
- package/dist/design/themes/hkdev/components/rows/panel-grid-row.css +4 -4
- package/dist/design/themes/hkdev/components/rows/panel-row-2.css +5 -5
- package/dist/design/themes/hkdev/components.css +29 -29
- package/dist/design/themes/hkdev/debug.css +1 -1
- package/dist/design/themes/hkdev/global/layout.css +32 -32
- package/dist/design/themes/hkdev/global/on-colors.css +32 -32
- package/dist/design/themes/hkdev/globals.css +3 -3
- package/dist/design/themes/hkdev/responsive.css +12 -12
- package/dist/design/themes/hkdev/theme-ext.js +12 -12
- package/dist/design/themes/hkdev/theme.css +218 -218
- package/dist/design/utils/clamp.js +66 -66
- package/dist/design/utils/root-vars.js +102 -102
- package/dist/design/utils/scaling.js +228 -228
- package/dist/design/utils/states.js +22 -22
- package/dist/errors/api.js +9 -9
- package/dist/errors/generic.js +20 -20
- package/dist/errors/http.js +16 -16
- package/dist/errors/index.js +5 -5
- package/dist/errors/jwt.js +5 -5
- package/dist/errors/promise.js +25 -25
- package/dist/logging/README.md +158 -0
- package/dist/logging/index.d.ts +3 -1
- package/dist/logging/index.js +11 -7
- package/dist/logging/internal/adapters/console.js +114 -114
- package/dist/logging/internal/adapters/index.js +2 -2
- package/dist/logging/internal/adapters/pino.js +160 -142
- package/dist/logging/internal/adapters/typedef.js +10 -10
- package/dist/logging/internal/{unified-logger/constants.js → constants.js} +22 -22
- package/dist/logging/internal/factories/client.d.ts +1 -1
- package/dist/logging/internal/factories/client.js +21 -21
- package/dist/logging/internal/factories/server.d.ts +1 -1
- package/dist/logging/internal/factories/server.js +22 -22
- package/dist/logging/internal/factories/universal.d.ts +2 -2
- package/dist/logging/internal/factories/universal.js +22 -22
- package/dist/logging/internal/{unified-logger → logger}/Logger.d.ts +2 -2
- package/dist/logging/internal/{unified-logger → logger}/Logger.js +217 -217
- package/dist/logging/internal/logger/index.d.ts +1 -0
- package/dist/logging/internal/logger/index.js +1 -0
- package/dist/logging/internal/{unified-logger/typedef.d.ts → typedef.d.ts} +2 -1
- package/dist/logging/internal/{unified-logger/typedef.js → typedef.js} +21 -17
- package/dist/network/README.md +172 -172
- package/dist/network/cache/IndexedDbCache.js +1407 -1407
- package/dist/network/cache/MemoryResponseCache.js +138 -138
- package/dist/network/cache/index.js +5 -5
- package/dist/network/cache/typedef.js +41 -41
- package/dist/network/cache.js +3 -3
- package/dist/network/http/caching.js +261 -261
- package/dist/network/http/errors.js +97 -97
- package/dist/network/http/headers.js +75 -75
- package/dist/network/http/http-request.js +578 -578
- package/dist/network/http/index.js +22 -22
- package/dist/network/http/json-request.js +224 -224
- package/dist/network/http/mocks.js +65 -65
- package/dist/network/http/response.js +318 -318
- package/dist/network/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/network/http/typedef.js +93 -93
- package/dist/network/http/url.js +52 -52
- package/dist/network/http.js +5 -5
- package/dist/network/loaders/README.md +254 -254
- package/dist/network/loaders/audio/AudioLoader.svelte.js +58 -58
- package/dist/network/loaders/audio/AudioScene.svelte.js +324 -324
- package/dist/network/loaders/audio/mocks.js +35 -35
- package/dist/network/loaders/audio.js +1 -1
- package/dist/network/loaders/image/ImageLoader.svelte.js +44 -44
- package/dist/network/loaders/image/ImageScene.svelte.js +248 -248
- package/dist/network/loaders/image/ImageVariantsLoader.svelte.js +150 -150
- package/dist/network/loaders/image/index.js +4 -4
- package/dist/network/loaders/image/mocks.js +35 -35
- package/dist/network/loaders/image/typedef.js +8 -8
- package/dist/network/loaders/image/utils/index.js +86 -86
- package/dist/network/loaders/image.js +7 -7
- package/dist/network/loaders/typedef.js +38 -38
- package/dist/network/loaders.js +2 -2
- package/dist/network/states/NetworkLoader.svelte.js +338 -338
- package/dist/network/states/constants.js +3 -3
- package/dist/network/states/index.js +3 -3
- package/dist/network/states/mocks.js +30 -30
- package/dist/network/states/typedef.js +8 -8
- package/dist/network/typedef.js +9 -9
- package/dist/services/README.md +200 -0
- package/dist/services/index.d.ts +6 -1
- package/dist/services/index.js +8 -1
- package/dist/services/{internal/service-base → service-base}/ServiceBase.d.ts +2 -2
- package/dist/services/{internal/service-base → service-base}/ServiceBase.js +462 -462
- package/dist/services/{internal/service-base → service-base}/constants.d.ts +0 -12
- package/dist/services/{internal/service-base → service-base}/constants.js +98 -110
- package/dist/services/{internal/service-base → service-base}/index.js +3 -3
- package/dist/services/{internal/service-base → service-base}/typedef.d.ts +1 -1
- package/dist/services/{internal/service-base → service-base}/typedef.js +101 -101
- package/dist/services/{internal/service-manager → service-manager}/ServiceManager.d.ts +2 -2
- package/dist/services/{internal/service-manager → service-manager}/ServiceManager.js +608 -608
- package/dist/services/{internal/service-manager → service-manager}/constants.js +6 -6
- package/dist/services/{internal/service-manager → service-manager}/typedef.js +90 -90
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/typedef/context.js +6 -6
- package/dist/typedef/drag.js +25 -25
- package/dist/typedef/drop.js +12 -12
- package/dist/typedef/index.d.ts +1 -0
- package/dist/typedef/index.js +4 -4
- package/dist/ui/components/button-group/ButtonGroup.svelte +82 -82
- package/dist/ui/components/button-group/typedef.js +10 -10
- package/dist/ui/components/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/ui/components/compare-left-right/index.js +1 -1
- package/dist/ui/components/game-box/GameBox.svelte +577 -577
- package/dist/ui/components/game-box/gamebox.util.js +83 -83
- package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/ui/components/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/ui/components/image-box/ImageBox.svelte +210 -210
- package/dist/ui/components/image-box/index.js +5 -5
- package/dist/ui/components/image-box/typedef.js +32 -32
- package/dist/ui/components/index.js +23 -23
- package/dist/ui/components/presenter/ImageSlide.svelte +64 -64
- package/dist/ui/components/presenter/Presenter.state.svelte.js +638 -638
- package/dist/ui/components/presenter/Presenter.svelte +142 -142
- package/dist/ui/components/presenter/constants.js +7 -7
- package/dist/ui/components/presenter/index.js +10 -10
- package/dist/ui/components/presenter/typedef.js +106 -106
- package/dist/ui/components/presenter/util.js +210 -210
- package/dist/ui/components/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/ui/primitives/area/HkArea.svelte +49 -49
- package/dist/ui/primitives/area/HkGridArea.svelte +77 -77
- package/dist/ui/primitives/area/index.js +2 -2
- package/dist/ui/primitives/buttons/button/Button.svelte +82 -82
- package/dist/ui/primitives/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/ui/primitives/buttons/button-text/TextButton.svelte +21 -21
- package/dist/ui/primitives/buttons/index.js +3 -3
- package/dist/ui/primitives/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/ui/primitives/debug/index.js +1 -1
- package/dist/ui/primitives/drag-drop/DragController.js +44 -44
- package/dist/ui/primitives/drag-drop/DragDropContext.svelte +111 -111
- package/dist/ui/primitives/drag-drop/Draggable.svelte +519 -519
- package/dist/ui/primitives/drag-drop/DropZone.svelte +258 -258
- package/dist/ui/primitives/drag-drop/DropZoneArea.svelte +119 -119
- package/dist/ui/primitives/drag-drop/DropZoneList.svelte +125 -125
- package/dist/ui/primitives/drag-drop/actions.js +26 -26
- package/dist/ui/primitives/drag-drop/drag-state.svelte.js +322 -322
- package/dist/ui/primitives/drag-drop/index.js +7 -7
- package/dist/ui/primitives/drag-drop/util.js +85 -85
- package/dist/ui/primitives/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/ui/primitives/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/ui/primitives/icons/HkIcon.svelte +86 -86
- package/dist/ui/primitives/icons/HkTabIcon.svelte +116 -116
- package/dist/ui/primitives/icons/SteezeIcon.svelte +97 -97
- package/dist/ui/primitives/icons/index.js +6 -6
- package/dist/ui/primitives/icons/typedef.js +16 -16
- package/dist/ui/primitives/index.js +2 -2
- package/dist/ui/primitives/inputs/index.js +1 -1
- package/dist/ui/primitives/inputs/text-input/TestTextInput.svelte__ +102 -0
- package/dist/ui/primitives/inputs/text-input/TextInput.svelte +223 -223
- package/dist/ui/primitives/inputs/text-input/TextInput.svelte___ +83 -0
- package/dist/ui/primitives/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/ui/primitives/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte +63 -63
- package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
- package/dist/ui/primitives/layout/grid-layers/util.js +74 -74
- package/dist/ui/primitives/layout/index.js +1 -1
- package/dist/ui/primitives/panels/index.js +1 -1
- package/dist/ui/primitives/panels/panel/Panel.svelte +43 -43
- package/dist/ui/primitives/rows/index.js +3 -3
- package/dist/ui/primitives/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/ui/primitives/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/ui/primitives/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/ui/primitives/tab-bar/HkTabBar.svelte +74 -74
- package/dist/ui/primitives/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/ui/primitives/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/ui/primitives/tab-bar/index.js +17 -17
- package/dist/ui/primitives/tab-bar/typedef.js +11 -11
- package/dist/util/array/index.js +436 -436
- package/dist/util/bases/base58.js +262 -262
- package/dist/util/bases/index.js +1 -1
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/env/index.js +9 -9
- package/dist/util/exceptions/index.d.ts +4 -3
- package/dist/util/exceptions/index.js +26 -23
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/geo/index.js +26 -26
- package/dist/util/index.js +7 -7
- package/dist/util/is/index.js +147 -147
- package/dist/util/iterate/index.js +204 -204
- package/dist/util/object/index.js +1345 -1345
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/array-path.js +75 -75
- package/dist/util/string/convert.js +54 -54
- package/dist/util/string/fs.js +226 -226
- package/dist/util/string/index.js +5 -5
- package/dist/util/string/interpolate.js +61 -61
- package/dist/util/string/pad.js +10 -10
- package/dist/util/svelte/index.js +4 -4
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +117 -117
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +101 -101
- package/dist/util/time/index.js +328 -328
- package/dist/util/unique/index.js +231 -231
- package/dist/valibot/README.md +61 -50
- package/dist/valibot/index.js +8 -8
- package/dist/valibot/parsers/date.js__ +10 -0
- package/dist/valibot/parsers/email.d.ts +12 -0
- package/dist/valibot/parsers/email.js +34 -0
- package/dist/valibot/parsers/url.js +110 -110
- package/dist/valibot/parsers/user.js +23 -23
- package/dist/valibot/parsers.js +3 -3
- package/package.json +131 -131
- package/dist/logging/internal/unified-logger/index.d.ts +0 -3
- package/dist/logging/internal/unified-logger/index.js +0 -6
- package/dist/services/internal/index.d.ts +0 -6
- package/dist/services/internal/index.js +0 -8
- /package/dist/logging/internal/{unified-logger/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/services/{internal/service-base → service-base}/index.d.ts +0 -0
- /package/dist/services/{internal/service-manager → service-manager}/constants.d.ts +0 -0
- /package/dist/services/{internal/service-manager → service-manager}/typedef.d.ts +0 -0
|
@@ -1,142 +1,160 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pino adapter for server-side logging
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import pino from 'pino';
|
|
6
|
-
import { dev } from '$app/environment';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Pino adapter that bridges Logger events to pino
|
|
10
|
-
*/
|
|
11
|
-
export class PinoAdapter {
|
|
12
|
-
#projectRoot = null;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Create a new PinoAdapter
|
|
16
|
-
*
|
|
17
|
-
* @param {Object} [options] - Pino configuration options
|
|
18
|
-
*/
|
|
19
|
-
constructor(options = {}) {
|
|
20
|
-
// Determine project root once for stack trace cleaning
|
|
21
|
-
this.#projectRoot = import.meta.env.VITE_PROJECT_ROOT || process.cwd();
|
|
22
|
-
const baseOptions = {
|
|
23
|
-
serializers: {
|
|
24
|
-
err: (err) => {
|
|
25
|
-
const chain = [];
|
|
26
|
-
let current = err;
|
|
27
|
-
let isFirst = true;
|
|
28
|
-
|
|
29
|
-
while (current) {
|
|
30
|
-
/** @type {import('./typedef').ErrorSummary} */
|
|
31
|
-
const serialized = {
|
|
32
|
-
name: current.name,
|
|
33
|
-
message: current.message,
|
|
34
|
-
...(isFirst &&
|
|
35
|
-
this.pino.level === 'debug' && {
|
|
36
|
-
stack: this.#cleanStackTrace(current.stack)
|
|
37
|
-
})
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
// Include HttpError-specific properties
|
|
41
|
-
if (current.status !== undefined) {
|
|
42
|
-
serialized.status = current.status;
|
|
43
|
-
}
|
|
44
|
-
if (current.details !== undefined) {
|
|
45
|
-
serialized.details = current.details;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
chain.push(serialized);
|
|
49
|
-
current = current.cause;
|
|
50
|
-
isFirst = false;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return { errorChain: chain };
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Pino adapter for server-side logging
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import pino from 'pino';
|
|
6
|
+
import { dev } from '$app/environment';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Pino adapter that bridges Logger events to pino
|
|
10
|
+
*/
|
|
11
|
+
export class PinoAdapter {
|
|
12
|
+
#projectRoot = null;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Create a new PinoAdapter
|
|
16
|
+
*
|
|
17
|
+
* @param {Object} [options] - Pino configuration options
|
|
18
|
+
*/
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
// Determine project root once for stack trace cleaning
|
|
21
|
+
this.#projectRoot = import.meta.env.VITE_PROJECT_ROOT || process.cwd();
|
|
22
|
+
const baseOptions = {
|
|
23
|
+
serializers: {
|
|
24
|
+
err: (err) => {
|
|
25
|
+
const chain = [];
|
|
26
|
+
let current = err;
|
|
27
|
+
let isFirst = true;
|
|
28
|
+
|
|
29
|
+
while (current) {
|
|
30
|
+
/** @type {import('./typedef').ErrorSummary} */
|
|
31
|
+
const serialized = {
|
|
32
|
+
name: current.name,
|
|
33
|
+
message: current.message,
|
|
34
|
+
...(isFirst &&
|
|
35
|
+
this.pino.level === 'debug' && {
|
|
36
|
+
stack: this.#cleanStackTrace(current.stack)
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Include HttpError-specific properties
|
|
41
|
+
if (current.status !== undefined) {
|
|
42
|
+
serialized.status = current.status;
|
|
43
|
+
}
|
|
44
|
+
if (current.details !== undefined) {
|
|
45
|
+
serialized.details = current.details;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
chain.push(serialized);
|
|
49
|
+
current = current.cause;
|
|
50
|
+
isFirst = false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return { errorChain: chain };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// Add error handling for missing pino-pretty in dev
|
|
59
|
+
if (dev) {
|
|
60
|
+
const devOptions = {
|
|
61
|
+
level: 'debug',
|
|
62
|
+
transport: {
|
|
63
|
+
target: 'pino-pretty',
|
|
64
|
+
options: {
|
|
65
|
+
colorize: true
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
this.pino = pino({ ...baseOptions, ...devOptions, ...options });
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (error.message.includes('pino-pretty')) {
|
|
74
|
+
const errorMessage = `
|
|
75
|
+
╭─────────────────────────────────────────────────────────────╮
|
|
76
|
+
│ Missing Dependency │
|
|
77
|
+
├─────────────────────────────────────────────────────────────┤
|
|
78
|
+
│ 'pino-pretty' is required for development logging │
|
|
79
|
+
│ Install it with: pnpm add -D pino-pretty │
|
|
80
|
+
╰─────────────────────────────────────────────────────────────╯`;
|
|
81
|
+
console.error(errorMessage);
|
|
82
|
+
throw new Error('pino-pretty is required for development mode');
|
|
83
|
+
}
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
this.pino = pino({ ...baseOptions, ...options });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Clean stack trace by removing project root path
|
|
93
|
+
*
|
|
94
|
+
* @param {string} stack - Original stack trace
|
|
95
|
+
* @returns {string} Cleaned stack trace
|
|
96
|
+
*/
|
|
97
|
+
#cleanStackTrace(stack) {
|
|
98
|
+
if (!stack || !this.#projectRoot) {
|
|
99
|
+
return stack;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Escape special regex characters in the project root path
|
|
103
|
+
const escapedRoot = this.#projectRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
104
|
+
|
|
105
|
+
// Replace project root path with relative path, but only after "at " to avoid
|
|
106
|
+
// accidental replacements in error messages or other parts of the stack
|
|
107
|
+
// Match the project root followed by a path separator
|
|
108
|
+
const regex = new RegExp(`(\\s+at\\s+.*\\()${escapedRoot}[\\/\\\\]`, 'g');
|
|
109
|
+
|
|
110
|
+
return stack.replace(regex, '$1');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Handle log events from Logger
|
|
115
|
+
*
|
|
116
|
+
* @param {Object} logEvent - Log event from Logger
|
|
117
|
+
*/
|
|
118
|
+
handleLog(logEvent) {
|
|
119
|
+
const { level, message, details, source, timestamp } = logEvent;
|
|
120
|
+
|
|
121
|
+
const logData = {
|
|
122
|
+
source,
|
|
123
|
+
timestamp
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// Check if details contains an error and promote it to err property for pino serializer
|
|
127
|
+
if (details) {
|
|
128
|
+
if (details instanceof Error) {
|
|
129
|
+
// details is directly an error
|
|
130
|
+
logData.err = details;
|
|
131
|
+
} else if (details.error instanceof Error) {
|
|
132
|
+
// details has an error property
|
|
133
|
+
logData.err = details.error;
|
|
134
|
+
// Include other details except the error
|
|
135
|
+
const { error, ...otherDetails } = details;
|
|
136
|
+
if (Object.keys(otherDetails).length > 0) {
|
|
137
|
+
logData.details = otherDetails;
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
// No error found in details, include all details
|
|
141
|
+
logData.details = details;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
this.pino[level](logData, message);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Create a child logger with additional context
|
|
150
|
+
*
|
|
151
|
+
* @param {Object} context - Additional context data
|
|
152
|
+
* @returns {PinoAdapter} New adapter instance with context
|
|
153
|
+
*/
|
|
154
|
+
child(context) {
|
|
155
|
+
const childPino = this.pino.child(context);
|
|
156
|
+
const adapter = new PinoAdapter();
|
|
157
|
+
adapter.pino = childPino;
|
|
158
|
+
return adapter;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {Object} ErrorSummary
|
|
3
|
-
* @property {string} name - The name of the exception/error
|
|
4
|
-
* @property {string} message - The error message
|
|
5
|
-
* @property {string} [stack] Stack trace (in debug mode for first exception)
|
|
6
|
-
* @property {number} [status] - HTTP status code (for HttpError instances)
|
|
7
|
-
* @property {*} [details] - Additional error details (for HttpError instances)
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default {};
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} ErrorSummary
|
|
3
|
+
* @property {string} name - The name of the exception/error
|
|
4
|
+
* @property {string} message - The error message
|
|
5
|
+
* @property {string} [stack] Stack trace (in debug mode for first exception)
|
|
6
|
+
* @property {number} [status] - HTTP status code (for HttpError instances)
|
|
7
|
+
* @property {*} [details] - Additional error details (for HttpError instances)
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export default {};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
// Log level and log event names
|
|
3
|
-
export const DEBUG = 'debug';
|
|
4
|
-
export const INFO = 'info';
|
|
5
|
-
export const WARN = 'warn';
|
|
6
|
-
export const ERROR = 'error';
|
|
7
|
-
|
|
8
|
-
// Use NONE to set log level to disable all logging
|
|
9
|
-
export const NONE = 'none';
|
|
10
|
-
|
|
11
|
-
// Level values for filtering (higher = more important)
|
|
12
|
-
export const LEVELS = {
|
|
13
|
-
[DEBUG]: 1,
|
|
14
|
-
[INFO]: 2,
|
|
15
|
-
[WARN]: 3,
|
|
16
|
-
[ERROR]: 4,
|
|
17
|
-
[NONE]: 5
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// Event name for generic events
|
|
21
|
-
export const LOG = 'log';
|
|
22
|
-
|
|
1
|
+
|
|
2
|
+
// Log level and log event names
|
|
3
|
+
export const DEBUG = 'debug';
|
|
4
|
+
export const INFO = 'info';
|
|
5
|
+
export const WARN = 'warn';
|
|
6
|
+
export const ERROR = 'error';
|
|
7
|
+
|
|
8
|
+
// Use NONE to set log level to disable all logging
|
|
9
|
+
export const NONE = 'none';
|
|
10
|
+
|
|
11
|
+
// Level values for filtering (higher = more important)
|
|
12
|
+
export const LEVELS = {
|
|
13
|
+
[DEBUG]: 1,
|
|
14
|
+
[INFO]: 2,
|
|
15
|
+
[WARN]: 3,
|
|
16
|
+
[ERROR]: 4,
|
|
17
|
+
[NONE]: 5
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Event name for generic events
|
|
21
|
+
export const LOG = 'log';
|
|
22
|
+
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Logger } from '../
|
|
2
|
-
import { ConsoleAdapter } from '../adapters/console.js';
|
|
3
|
-
import { INFO } from '../
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create a client-side logger with console adapter
|
|
7
|
-
*
|
|
8
|
-
* @param {string} name
|
|
9
|
-
* @param {string} [level=INFO] - Initial log level
|
|
10
|
-
* @param {Object} [consoleOptions] - Additional console options
|
|
11
|
-
* @returns {Logger} Configured logger instance
|
|
12
|
-
*/
|
|
13
|
-
export function createClientLogger(name, level = INFO, consoleOptions = {}) {
|
|
14
|
-
const logger = new Logger(name, level);
|
|
15
|
-
const adapter = new ConsoleAdapter({ ...consoleOptions, level });
|
|
16
|
-
|
|
17
|
-
// Connect adapter to logger events
|
|
18
|
-
logger.on('log', (logEvent) => adapter.handleLog(logEvent));
|
|
19
|
-
|
|
20
|
-
return logger;
|
|
21
|
-
}
|
|
1
|
+
import { Logger } from '../logger/index.js';
|
|
2
|
+
import { ConsoleAdapter } from '../adapters/console.js';
|
|
3
|
+
import { INFO } from '../constants.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a client-side logger with console adapter
|
|
7
|
+
*
|
|
8
|
+
* @param {string} name
|
|
9
|
+
* @param {string} [level=INFO] - Initial log level
|
|
10
|
+
* @param {Object} [consoleOptions] - Additional console options
|
|
11
|
+
* @returns {Logger} Configured logger instance
|
|
12
|
+
*/
|
|
13
|
+
export function createClientLogger(name, level = INFO, consoleOptions = {}) {
|
|
14
|
+
const logger = new Logger(name, level);
|
|
15
|
+
const adapter = new ConsoleAdapter({ ...consoleOptions, level });
|
|
16
|
+
|
|
17
|
+
// Connect adapter to logger events
|
|
18
|
+
logger.on('log', (logEvent) => adapter.handleLog(logEvent));
|
|
19
|
+
|
|
20
|
+
return logger;
|
|
21
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { Logger } from '../
|
|
2
|
-
|
|
3
|
-
import { PinoAdapter } from '../adapters/pino.js';
|
|
4
|
-
import { INFO } from '../
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Create a server-side logger with pino adapter
|
|
8
|
-
*
|
|
9
|
-
* @param {string} name
|
|
10
|
-
* @param {string} [level=INFO] - Initial log level
|
|
11
|
-
* @param {Object} [pinoOptions] - Additional pino options
|
|
12
|
-
* @returns {Logger} Configured logger instance
|
|
13
|
-
*/
|
|
14
|
-
export function createServerLogger(name, level = INFO, pinoOptions = {}) {
|
|
15
|
-
const logger = new Logger(name, level);
|
|
16
|
-
const adapter = new PinoAdapter(pinoOptions);
|
|
17
|
-
|
|
18
|
-
// Connect adapter to logger events
|
|
19
|
-
logger.on('log', (logEvent) => adapter.handleLog(logEvent));
|
|
20
|
-
|
|
21
|
-
return logger;
|
|
22
|
-
}
|
|
1
|
+
import { Logger } from '../logger/index.js';
|
|
2
|
+
|
|
3
|
+
import { PinoAdapter } from '../adapters/pino.js';
|
|
4
|
+
import { INFO } from '../constants.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Create a server-side logger with pino adapter
|
|
8
|
+
*
|
|
9
|
+
* @param {string} name
|
|
10
|
+
* @param {string} [level=INFO] - Initial log level
|
|
11
|
+
* @param {Object} [pinoOptions] - Additional pino options
|
|
12
|
+
* @returns {Logger} Configured logger instance
|
|
13
|
+
*/
|
|
14
|
+
export function createServerLogger(name, level = INFO, pinoOptions = {}) {
|
|
15
|
+
const logger = new Logger(name, level);
|
|
16
|
+
const adapter = new PinoAdapter(pinoOptions);
|
|
17
|
+
|
|
18
|
+
// Connect adapter to logger events
|
|
19
|
+
logger.on('log', (logEvent) => adapter.handleLog(logEvent));
|
|
20
|
+
|
|
21
|
+
return logger;
|
|
22
|
+
}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* @param {string} serviceName - Name of the service
|
|
5
5
|
* @param {string} [level] - Initial log level
|
|
6
6
|
* @param {Object} [options] - Additional options
|
|
7
|
-
* @returns {import('../
|
|
7
|
+
* @returns {import('../logger').Logger} Configured logger instance
|
|
8
8
|
*/
|
|
9
|
-
export function createLogger(serviceName: string, level?: string, options?: any): import("../
|
|
9
|
+
export function createLogger(serviceName: string, level?: string, options?: any): import("../logger").Logger;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Universal logger factory that auto-detects environment
|
|
3
|
-
*/
|
|
4
|
-
import { browser } from '$app/environment';
|
|
5
|
-
import { createServerLogger } from './server.js';
|
|
6
|
-
import { createClientLogger } from './client.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Create a logger that works in both server and client environments
|
|
10
|
-
*
|
|
11
|
-
* @param {string} serviceName - Name of the service
|
|
12
|
-
* @param {string} [level] - Initial log level
|
|
13
|
-
* @param {Object} [options] - Additional options
|
|
14
|
-
* @returns {import('../
|
|
15
|
-
*/
|
|
16
|
-
export function createLogger(serviceName, level, options = {}) {
|
|
17
|
-
if (browser) {
|
|
18
|
-
return createClientLogger(serviceName, level, options);
|
|
19
|
-
} else {
|
|
20
|
-
return createServerLogger(serviceName, level, options);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Universal logger factory that auto-detects environment
|
|
3
|
+
*/
|
|
4
|
+
import { browser } from '$app/environment';
|
|
5
|
+
import { createServerLogger } from './server.js';
|
|
6
|
+
import { createClientLogger } from './client.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Create a logger that works in both server and client environments
|
|
10
|
+
*
|
|
11
|
+
* @param {string} serviceName - Name of the service
|
|
12
|
+
* @param {string} [level] - Initial log level
|
|
13
|
+
* @param {Object} [options] - Additional options
|
|
14
|
+
* @returns {import('../logger').Logger} Configured logger instance
|
|
15
|
+
*/
|
|
16
|
+
export function createLogger(serviceName, level, options = {}) {
|
|
17
|
+
if (browser) {
|
|
18
|
+
return createClientLogger(serviceName, level, options);
|
|
19
|
+
} else {
|
|
20
|
+
return createServerLogger(serviceName, level, options);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -70,9 +70,9 @@ export default class Logger extends EventEmitter {
|
|
|
70
70
|
* forwarded to this logger.
|
|
71
71
|
*
|
|
72
72
|
* @param {string} eventName
|
|
73
|
-
* @param {import('
|
|
73
|
+
* @param {import('../typedef.js').LogEventData} eventData
|
|
74
74
|
*/
|
|
75
|
-
logFromEvent(eventName: string, eventData: import("
|
|
75
|
+
logFromEvent(eventName: string, eventData: import("../typedef.js").LogEventData): boolean;
|
|
76
76
|
#private;
|
|
77
77
|
}
|
|
78
78
|
import { EventEmitter } from '../../../classes/event-emitter';
|