@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,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates state classes from an object of state variables
|
|
3
|
-
*
|
|
4
|
-
* @param {Object.<string, boolean>} stateObject
|
|
5
|
-
* Object with state names as keys and boolean values
|
|
6
|
-
*
|
|
7
|
-
* @returns {string} Space-separated string of state classes
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* // Returns "state-selected state-error"
|
|
11
|
-
* toStateClasses({ selected: true, loading: false, error: true });
|
|
12
|
-
*/
|
|
13
|
-
export function toStateClasses(stateObject) {
|
|
14
|
-
if (!stateObject || typeof stateObject !== 'object') {
|
|
15
|
-
return '';
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return Object.entries(stateObject)
|
|
19
|
-
.filter((entry) => entry[1] === true)
|
|
20
|
-
.map(([state]) => `state-${state}`)
|
|
21
|
-
.join(' ');
|
|
22
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Generates state classes from an object of state variables
|
|
3
|
+
*
|
|
4
|
+
* @param {Object.<string, boolean>} stateObject
|
|
5
|
+
* Object with state names as keys and boolean values
|
|
6
|
+
*
|
|
7
|
+
* @returns {string} Space-separated string of state classes
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Returns "state-selected state-error"
|
|
11
|
+
* toStateClasses({ selected: true, loading: false, error: true });
|
|
12
|
+
*/
|
|
13
|
+
export function toStateClasses(stateObject) {
|
|
14
|
+
if (!stateObject || typeof stateObject !== 'object') {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return Object.entries(stateObject)
|
|
19
|
+
.filter((entry) => entry[1] === true)
|
|
20
|
+
.map(([state]) => `state-${state}`)
|
|
21
|
+
.join(' ');
|
|
22
|
+
}
|
package/dist/errors/api.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export class ResponseError extends Error {}
|
|
2
|
-
|
|
3
|
-
export class AuthenticationError extends Error {}
|
|
4
|
-
|
|
5
|
-
export class BadRequestError extends Error {}
|
|
6
|
-
|
|
7
|
-
export class AbortError extends Error {}
|
|
8
|
-
|
|
9
|
-
export class TimeoutError extends Error {}
|
|
1
|
+
export class ResponseError extends Error {}
|
|
2
|
+
|
|
3
|
+
export class AuthenticationError extends Error {}
|
|
4
|
+
|
|
5
|
+
export class BadRequestError extends Error {}
|
|
6
|
+
|
|
7
|
+
export class AbortError extends Error {}
|
|
8
|
+
|
|
9
|
+
export class TimeoutError extends Error {}
|
package/dist/errors/generic.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export class TypeOrValueError extends Error {}
|
|
2
|
-
|
|
3
|
-
export class InternalError extends Error {}
|
|
4
|
-
|
|
5
|
-
export class InternalEventOrLogError extends Error {}
|
|
6
|
-
|
|
7
|
-
export class DetailedError extends Error
|
|
8
|
-
{
|
|
9
|
-
/**
|
|
10
|
-
* @param {string} message - Error message
|
|
11
|
-
* @param {string|{[key: string]: any}|null} [details] - Additional details
|
|
12
|
-
* @param {Error|string} [cause] - Original error
|
|
13
|
-
*/
|
|
14
|
-
constructor(message, details, cause ) {
|
|
15
|
-
super(message);
|
|
16
|
-
this.name = 'DetailedError';
|
|
17
|
-
this.details = details ?? null;
|
|
18
|
-
this.cause = cause;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
export class TypeOrValueError extends Error {}
|
|
2
|
+
|
|
3
|
+
export class InternalError extends Error {}
|
|
4
|
+
|
|
5
|
+
export class InternalEventOrLogError extends Error {}
|
|
6
|
+
|
|
7
|
+
export class DetailedError extends Error
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* @param {string} message - Error message
|
|
11
|
+
* @param {string|{[key: string]: any}|null} [details] - Additional details
|
|
12
|
+
* @param {Error|string} [cause] - Original error
|
|
13
|
+
*/
|
|
14
|
+
constructor(message, details, cause ) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = 'DetailedError';
|
|
17
|
+
this.details = details ?? null;
|
|
18
|
+
this.cause = cause;
|
|
19
|
+
}
|
|
20
|
+
}
|
package/dist/errors/http.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export class HttpError extends Error
|
|
2
|
-
{
|
|
3
|
-
/**
|
|
4
|
-
* @param {number} status - HTTP status
|
|
5
|
-
* @param {string} message - Error message
|
|
6
|
-
* @param {string|{[key: string]: any}|null} [details] - Additional details
|
|
7
|
-
* @param {Error|string} [cause] - Original error
|
|
8
|
-
*/
|
|
9
|
-
constructor(status, message, details, cause ) {
|
|
10
|
-
super(message);
|
|
11
|
-
this.status = status;
|
|
12
|
-
this.name = 'HttpError';
|
|
13
|
-
this.details = details ?? null;
|
|
14
|
-
this.cause = cause;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
export class HttpError extends Error
|
|
2
|
+
{
|
|
3
|
+
/**
|
|
4
|
+
* @param {number} status - HTTP status
|
|
5
|
+
* @param {string} message - Error message
|
|
6
|
+
* @param {string|{[key: string]: any}|null} [details] - Additional details
|
|
7
|
+
* @param {Error|string} [cause] - Original error
|
|
8
|
+
*/
|
|
9
|
+
constructor(status, message, details, cause ) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.status = status;
|
|
12
|
+
this.name = 'HttpError';
|
|
13
|
+
this.details = details ?? null;
|
|
14
|
+
this.cause = cause;
|
|
15
|
+
}
|
|
16
|
+
}
|
package/dist/errors/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './api.js';
|
|
2
|
-
export * from './generic.js';
|
|
3
|
-
export * from './http.js';
|
|
4
|
-
export * from './jwt.js';
|
|
5
|
-
export * from './promise.js';
|
|
1
|
+
export * from './api.js';
|
|
2
|
+
export * from './generic.js';
|
|
3
|
+
export * from './http.js';
|
|
4
|
+
export * from './jwt.js';
|
|
5
|
+
export * from './promise.js';
|
package/dist/errors/jwt.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export class SecretKeyError extends Error {}
|
|
2
|
-
export class TokenExpiredError extends Error {}
|
|
3
|
-
|
|
4
|
-
export class JsonWebTokenError extends Error {}
|
|
5
|
-
export class InvalidSignatureError extends Error {}
|
|
1
|
+
export class SecretKeyError extends Error {}
|
|
2
|
+
export class TokenExpiredError extends Error {}
|
|
3
|
+
|
|
4
|
+
export class JsonWebTokenError extends Error {}
|
|
5
|
+
export class InvalidSignatureError extends Error {}
|
package/dist/errors/promise.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Promise-related error classes
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Error class specifically for HkPromise operations
|
|
7
|
-
* Provides timeout and cancelled properties with proper type safety
|
|
8
|
-
*/
|
|
9
|
-
export class PromiseError extends Error {
|
|
10
|
-
/**
|
|
11
|
-
* @param {string} message - Error message
|
|
12
|
-
* @param {object} [options] - Error options
|
|
13
|
-
* @param {boolean} [options.timeout=false] - Whether this is a timeout error
|
|
14
|
-
* @param {boolean} [options.cancelled=false] - Whether this is a cancellation error
|
|
15
|
-
* @param {Error|*} [options.cause] - Original error or cause
|
|
16
|
-
* @param {*} [options.details] - Additional details object
|
|
17
|
-
*/
|
|
18
|
-
constructor(message, options = {}) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.name = 'PromiseError';
|
|
21
|
-
this.timeout = options.timeout ?? false;
|
|
22
|
-
this.cancelled = options.cancelled ?? false;
|
|
23
|
-
this.cause = options.cause;
|
|
24
|
-
this.details = options.details;
|
|
25
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Promise-related error classes
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Error class specifically for HkPromise operations
|
|
7
|
+
* Provides timeout and cancelled properties with proper type safety
|
|
8
|
+
*/
|
|
9
|
+
export class PromiseError extends Error {
|
|
10
|
+
/**
|
|
11
|
+
* @param {string} message - Error message
|
|
12
|
+
* @param {object} [options] - Error options
|
|
13
|
+
* @param {boolean} [options.timeout=false] - Whether this is a timeout error
|
|
14
|
+
* @param {boolean} [options.cancelled=false] - Whether this is a cancellation error
|
|
15
|
+
* @param {Error|*} [options.cause] - Original error or cause
|
|
16
|
+
* @param {*} [options.details] - Additional details object
|
|
17
|
+
*/
|
|
18
|
+
constructor(message, options = {}) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'PromiseError';
|
|
21
|
+
this.timeout = options.timeout ?? false;
|
|
22
|
+
this.cancelled = options.cancelled ?? false;
|
|
23
|
+
this.cause = options.cause;
|
|
24
|
+
this.details = options.details;
|
|
25
|
+
}
|
|
26
26
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Logging
|
|
2
|
+
|
|
3
|
+
Universal logging utilities for SvelteKit applications with server/client/universal logger factories.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add -D pino-pretty
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import { createServerLogger,
|
|
15
|
+
createClientLogger,
|
|
16
|
+
createLogger } from '@hkdigital/lib-core/logging/index.js';
|
|
17
|
+
|
|
18
|
+
// Server-side logging (uses pino)
|
|
19
|
+
const serverLogger = createServerLogger('app');
|
|
20
|
+
|
|
21
|
+
// Client-side logging (uses console)
|
|
22
|
+
const clientLogger = createClientLogger('app');
|
|
23
|
+
|
|
24
|
+
// Universal logger (works on both server and client)
|
|
25
|
+
const logger = createLogger('app');
|
|
26
|
+
|
|
27
|
+
// Log at different levels
|
|
28
|
+
logger.debug('Debug info', { data: 'details' });
|
|
29
|
+
logger.info('Info message');
|
|
30
|
+
logger.warn('Warning message');
|
|
31
|
+
logger.error('Error message', { error: new Error('Something went wrong') });
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## SvelteKit Integration
|
|
35
|
+
|
|
36
|
+
### Server-side logging (src/hooks.server.js)
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
import { createServerLogger } from '@hkdigital/lib-core/logging/index.js';
|
|
40
|
+
|
|
41
|
+
let logger;
|
|
42
|
+
|
|
43
|
+
// Initialize server logging and services
|
|
44
|
+
export async function init() {
|
|
45
|
+
logger = createServerLogger('server');
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
logger.info('Initializing server');
|
|
49
|
+
|
|
50
|
+
// Initialize your services here
|
|
51
|
+
// const serviceManager = new ServiceManager();
|
|
52
|
+
// await serviceManager.startAll();
|
|
53
|
+
|
|
54
|
+
logger.info('Server initialization complete');
|
|
55
|
+
} catch (error) {
|
|
56
|
+
logger.error('Server initialization failed:', error);
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Graceful shutdown
|
|
62
|
+
export async function destroy() {
|
|
63
|
+
if (logger) {
|
|
64
|
+
logger.info('Shutting down server');
|
|
65
|
+
|
|
66
|
+
// Clean up services here
|
|
67
|
+
// if (serviceManager) {
|
|
68
|
+
// await serviceManager.stopAll();
|
|
69
|
+
// }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** @type {import('@sveltejs/kit').Handle} */
|
|
74
|
+
export async function handle({ event, resolve }) {
|
|
75
|
+
const start = Date.now();
|
|
76
|
+
|
|
77
|
+
logger?.info('Request started', {
|
|
78
|
+
method: event.request.method,
|
|
79
|
+
url: event.url.pathname,
|
|
80
|
+
userAgent: event.request.headers.get('user-agent')
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
const response = await resolve(event);
|
|
85
|
+
const duration = Date.now() - start;
|
|
86
|
+
|
|
87
|
+
logger?.info('Request completed', {
|
|
88
|
+
method: event.request.method,
|
|
89
|
+
url: event.url.pathname,
|
|
90
|
+
status: response.status,
|
|
91
|
+
duration: `${duration}ms`
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return response;
|
|
95
|
+
} catch (error) {
|
|
96
|
+
logger?.error('Request failed', {
|
|
97
|
+
method: event.request.method,
|
|
98
|
+
url: event.url.pathname,
|
|
99
|
+
error: error.message,
|
|
100
|
+
stack: error.stack
|
|
101
|
+
});
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Client-side logging (src/hooks.client.js)
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
import { createClientLogger } from '@hkdigital/lib-core/logging/index.js';
|
|
111
|
+
|
|
112
|
+
const logger = createClientLogger('client');
|
|
113
|
+
|
|
114
|
+
/** @type {import('@sveltejs/kit').HandleClientError} */
|
|
115
|
+
export function handleError({ error, event }) {
|
|
116
|
+
logger.error('Client error occurred', {
|
|
117
|
+
message: error.message,
|
|
118
|
+
stack: error.stack,
|
|
119
|
+
url: event.url?.pathname,
|
|
120
|
+
userAgent: navigator.userAgent
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Initialize client-side logging
|
|
125
|
+
export function init() {
|
|
126
|
+
logger.info('Client application initialized', {
|
|
127
|
+
userAgent: navigator.userAgent,
|
|
128
|
+
viewport: `${window.innerWidth}x${window.innerHeight}`
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Log unhandled errors
|
|
132
|
+
window.addEventListener('error', (event) => {
|
|
133
|
+
logger.error('Unhandled error', {
|
|
134
|
+
message: event.error?.message || event.message,
|
|
135
|
+
filename: event.filename,
|
|
136
|
+
lineno: event.lineno,
|
|
137
|
+
colno: event.colno
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Log unhandled promise rejections
|
|
142
|
+
window.addEventListener('unhandledrejection', (event) => {
|
|
143
|
+
logger.error('Unhandled promise rejection', {
|
|
144
|
+
reason: event.reason
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Cleanup when app is destroyed
|
|
150
|
+
export function destroy() {
|
|
151
|
+
logger.info('Client application destroyed');
|
|
152
|
+
// Note: Console adapter doesn't require cleanup
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Development
|
|
157
|
+
|
|
158
|
+
Requires `pino-pretty` as peer dependency for development mode formatting.
|
package/dist/logging/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { createServerLogger } from "./internal/factories/server.js";
|
|
2
2
|
export { createClientLogger } from "./internal/factories/client.js";
|
|
3
3
|
export { createLogger } from "./internal/factories/universal.js";
|
|
4
|
-
export
|
|
4
|
+
export { Logger } from "./internal/logger/index.js";
|
|
5
|
+
export * from "./internal/constants.js";
|
|
6
|
+
export * from "./internal/typedef.js";
|
package/dist/logging/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
// Factories
|
|
2
|
-
export { createServerLogger } from './internal/factories/server.js';
|
|
3
|
-
export { createClientLogger } from './internal/factories/client.js';
|
|
4
|
-
export { createLogger } from './internal/factories/universal.js';
|
|
5
|
-
|
|
6
|
-
// Logger
|
|
7
|
-
export
|
|
1
|
+
// Factories
|
|
2
|
+
export { createServerLogger } from './internal/factories/server.js';
|
|
3
|
+
export { createClientLogger } from './internal/factories/client.js';
|
|
4
|
+
export { createLogger } from './internal/factories/universal.js';
|
|
5
|
+
|
|
6
|
+
// Logger (advanced usage)
|
|
7
|
+
export { Logger } from './internal/logger/index.js';
|
|
8
|
+
|
|
9
|
+
// Constants and typedefs
|
|
10
|
+
export * from './internal/constants.js';
|
|
11
|
+
export * from './internal/typedef.js';
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
import { LEVELS } from '../
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* (Browser) console adapter that uses native DevTools styling
|
|
5
|
-
*/
|
|
6
|
-
export class ConsoleAdapter {
|
|
7
|
-
/**
|
|
8
|
-
* Create a new ConsoleAdapter
|
|
9
|
-
*
|
|
10
|
-
* @param {Object} [options] - Browser configuration options
|
|
11
|
-
* @param {string} [options.level] - Minimum log level
|
|
12
|
-
* @param {Object} [options.context]
|
|
13
|
-
* Additional context data to include with all logs
|
|
14
|
-
*/
|
|
15
|
-
constructor(options = {}) {
|
|
16
|
-
this.level = options.level || 'info';
|
|
17
|
-
this.context = options.context || {};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Handle log events from Logger
|
|
22
|
-
*
|
|
23
|
-
* @param {Object} logEvent - Log event from Logger
|
|
24
|
-
*/
|
|
25
|
-
handleLog(logEvent) {
|
|
26
|
-
// eslint-disable-next-line no-unused-vars
|
|
27
|
-
const { level, message, details, source, timestamp } = logEvent;
|
|
28
|
-
|
|
29
|
-
// Filter by level
|
|
30
|
-
if (LEVELS[level] < LEVELS[this.level]) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Use browser console styling
|
|
35
|
-
const styles = this._getStyles(level);
|
|
36
|
-
const prefix = `%c[${source}]`;
|
|
37
|
-
|
|
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;
|
|
44
|
-
|
|
45
|
-
if (logData) {
|
|
46
|
-
console[this._getConsoleMethod(level)](prefix, styles, message, logData);
|
|
47
|
-
} else {
|
|
48
|
-
console[this._getConsoleMethod(level)](prefix, styles, message);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get CSS styles for browser console
|
|
54
|
-
*
|
|
55
|
-
* @param {string} level - Log level
|
|
56
|
-
* @returns {string} CSS styles
|
|
57
|
-
* @private
|
|
58
|
-
*/
|
|
59
|
-
_getStyles(level) {
|
|
60
|
-
const baseStyle =
|
|
61
|
-
'padding: 2px 4px; border-radius: 2px; font-weight: bold;';
|
|
62
|
-
|
|
63
|
-
switch (level) {
|
|
64
|
-
case 'debug':
|
|
65
|
-
return `${baseStyle} background: #e3f2fd; color: #1976d2;`;
|
|
66
|
-
case 'info':
|
|
67
|
-
return `${baseStyle} background: #e8f5e8; color: #2e7d32;`;
|
|
68
|
-
case 'warn':
|
|
69
|
-
return `${baseStyle} background: #fff3e0; color: #f57c00;`;
|
|
70
|
-
case 'error':
|
|
71
|
-
return `${baseStyle} background: #ffebee; color: #d32f2f;`;
|
|
72
|
-
case 'fatal':
|
|
73
|
-
return `${baseStyle} background: #d32f2f; color: white;`;
|
|
74
|
-
default:
|
|
75
|
-
return baseStyle;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Get appropriate console method for log level
|
|
81
|
-
*
|
|
82
|
-
* @param {string} level - Log level
|
|
83
|
-
* @returns {string} Console method name
|
|
84
|
-
* @private
|
|
85
|
-
*/
|
|
86
|
-
_getConsoleMethod(level) {
|
|
87
|
-
switch (level) {
|
|
88
|
-
case 'debug':
|
|
89
|
-
return 'debug';
|
|
90
|
-
case 'info':
|
|
91
|
-
return 'info';
|
|
92
|
-
case 'warn':
|
|
93
|
-
return 'warn';
|
|
94
|
-
case 'error':
|
|
95
|
-
case 'fatal':
|
|
96
|
-
return 'error';
|
|
97
|
-
default:
|
|
98
|
-
return 'log';
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Create a child logger with additional context
|
|
104
|
-
*
|
|
105
|
-
* @param {Object} context - Additional context data
|
|
106
|
-
* @returns {ConsoleAdapter} New adapter instance with context
|
|
107
|
-
*/
|
|
108
|
-
child(context) {
|
|
109
|
-
return new ConsoleAdapter({
|
|
110
|
-
level: this.level,
|
|
111
|
-
context: { ...this.context, ...context }
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
1
|
+
import { LEVELS } from '../constants.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* (Browser) console adapter that uses native DevTools styling
|
|
5
|
+
*/
|
|
6
|
+
export class ConsoleAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Create a new ConsoleAdapter
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} [options] - Browser configuration options
|
|
11
|
+
* @param {string} [options.level] - Minimum log level
|
|
12
|
+
* @param {Object} [options.context]
|
|
13
|
+
* Additional context data to include with all logs
|
|
14
|
+
*/
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.level = options.level || 'info';
|
|
17
|
+
this.context = options.context || {};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Handle log events from Logger
|
|
22
|
+
*
|
|
23
|
+
* @param {Object} logEvent - Log event from Logger
|
|
24
|
+
*/
|
|
25
|
+
handleLog(logEvent) {
|
|
26
|
+
// eslint-disable-next-line no-unused-vars
|
|
27
|
+
const { level, message, details, source, timestamp } = logEvent;
|
|
28
|
+
|
|
29
|
+
// Filter by level
|
|
30
|
+
if (LEVELS[level] < LEVELS[this.level]) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Use browser console styling
|
|
35
|
+
const styles = this._getStyles(level);
|
|
36
|
+
const prefix = `%c[${source}]`;
|
|
37
|
+
|
|
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;
|
|
44
|
+
|
|
45
|
+
if (logData) {
|
|
46
|
+
console[this._getConsoleMethod(level)](prefix, styles, message, logData);
|
|
47
|
+
} else {
|
|
48
|
+
console[this._getConsoleMethod(level)](prefix, styles, message);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get CSS styles for browser console
|
|
54
|
+
*
|
|
55
|
+
* @param {string} level - Log level
|
|
56
|
+
* @returns {string} CSS styles
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
_getStyles(level) {
|
|
60
|
+
const baseStyle =
|
|
61
|
+
'padding: 2px 4px; border-radius: 2px; font-weight: bold;';
|
|
62
|
+
|
|
63
|
+
switch (level) {
|
|
64
|
+
case 'debug':
|
|
65
|
+
return `${baseStyle} background: #e3f2fd; color: #1976d2;`;
|
|
66
|
+
case 'info':
|
|
67
|
+
return `${baseStyle} background: #e8f5e8; color: #2e7d32;`;
|
|
68
|
+
case 'warn':
|
|
69
|
+
return `${baseStyle} background: #fff3e0; color: #f57c00;`;
|
|
70
|
+
case 'error':
|
|
71
|
+
return `${baseStyle} background: #ffebee; color: #d32f2f;`;
|
|
72
|
+
case 'fatal':
|
|
73
|
+
return `${baseStyle} background: #d32f2f; color: white;`;
|
|
74
|
+
default:
|
|
75
|
+
return baseStyle;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Get appropriate console method for log level
|
|
81
|
+
*
|
|
82
|
+
* @param {string} level - Log level
|
|
83
|
+
* @returns {string} Console method name
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
_getConsoleMethod(level) {
|
|
87
|
+
switch (level) {
|
|
88
|
+
case 'debug':
|
|
89
|
+
return 'debug';
|
|
90
|
+
case 'info':
|
|
91
|
+
return 'info';
|
|
92
|
+
case 'warn':
|
|
93
|
+
return 'warn';
|
|
94
|
+
case 'error':
|
|
95
|
+
case 'fatal':
|
|
96
|
+
return 'error';
|
|
97
|
+
default:
|
|
98
|
+
return 'log';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Create a child logger with additional context
|
|
104
|
+
*
|
|
105
|
+
* @param {Object} context - Additional context data
|
|
106
|
+
* @returns {ConsoleAdapter} New adapter instance with context
|
|
107
|
+
*/
|
|
108
|
+
child(context) {
|
|
109
|
+
return new ConsoleAdapter({
|
|
110
|
+
level: this.level,
|
|
111
|
+
context: { ...this.context, ...context }
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './console.js';
|
|
2
|
-
export * from './pino.js';
|
|
1
|
+
export * from './console.js';
|
|
2
|
+
export * from './pino.js';
|