@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,189 +1,189 @@
|
|
|
1
|
-
const DEFAULT_WIDTHS = [640, 1024, 1536, 1920];
|
|
2
|
-
|
|
3
|
-
const DEFAULT_PRESETS = {
|
|
4
|
-
default: {
|
|
5
|
-
format: 'avif',
|
|
6
|
-
quality: '90'
|
|
7
|
-
},
|
|
8
|
-
render: {
|
|
9
|
-
format: 'jpg',
|
|
10
|
-
quality: '95',
|
|
11
|
-
as: 'metadata'
|
|
12
|
-
},
|
|
13
|
-
photo: {
|
|
14
|
-
format: 'jpg',
|
|
15
|
-
quality: '95',
|
|
16
|
-
as: 'metadata'
|
|
17
|
-
},
|
|
18
|
-
gradient: {
|
|
19
|
-
format: 'jpg',
|
|
20
|
-
quality: '95',
|
|
21
|
-
as: 'metadata'
|
|
22
|
-
},
|
|
23
|
-
drawing: {
|
|
24
|
-
format: 'avif',
|
|
25
|
-
quality: '90',
|
|
26
|
-
as: 'metadata'
|
|
27
|
-
},
|
|
28
|
-
savedata: {
|
|
29
|
-
format: 'avif',
|
|
30
|
-
quality: '85',
|
|
31
|
-
as: 'metadata'
|
|
32
|
-
},
|
|
33
|
-
blur: {
|
|
34
|
-
format: 'avif',
|
|
35
|
-
quality: '50',
|
|
36
|
-
blur: '75',
|
|
37
|
-
as: 'metadata'
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Configures and returns a function that can be used as
|
|
43
|
-
* 'resolveConfigs' parameter in imagetools config
|
|
44
|
-
*
|
|
45
|
-
* @param {object} [options]
|
|
46
|
-
* @param {number[]} [options.widths=DEFAULT_WIDTHS]
|
|
47
|
-
*
|
|
48
|
-
* @returns {(
|
|
49
|
-
* entries: [string, string[]][]
|
|
50
|
-
* ) => (Record<string, string | string[]>[])}
|
|
51
|
-
*/
|
|
52
|
-
export function generateResponseConfigs(options) {
|
|
53
|
-
//
|
|
54
|
-
// @see https://github.com/JonasKruckenberg/imagetools
|
|
55
|
-
// /blob/main/docs/core/src/functions/resolveConfigs.md
|
|
56
|
-
//
|
|
57
|
-
return function resolveConfigs(entries /*, outputFormats*/) {
|
|
58
|
-
// console.log('resolveConfigs:entries', entries);
|
|
59
|
-
|
|
60
|
-
/** @type {Record<string, string | string[]>} */
|
|
61
|
-
const configPairs = {};
|
|
62
|
-
|
|
63
|
-
for (const current of entries) {
|
|
64
|
-
const key = current[0];
|
|
65
|
-
const value = current[1][0];
|
|
66
|
-
|
|
67
|
-
// @ts-ignore
|
|
68
|
-
configPairs[key] = value;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// @ts-ignore
|
|
72
|
-
const responsiveConfig = entries.find(([key]) => key === 'responsive');
|
|
73
|
-
|
|
74
|
-
if (!responsiveConfig) {
|
|
75
|
-
// Directive 'responsive' was not set => return original config
|
|
76
|
-
|
|
77
|
-
return [configPairs];
|
|
78
|
-
|
|
79
|
-
// Alternative: by returning undefined, the default resolveConfig is used
|
|
80
|
-
// return undefined;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const widths = options?.widths ?? DEFAULT_WIDTHS;
|
|
84
|
-
|
|
85
|
-
return widths.map((w) => {
|
|
86
|
-
return { ...configPairs, w: String(w) };
|
|
87
|
-
});
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Configures and returns a function that can be used as
|
|
93
|
-
* 'defaultDirectives' parameter in imagetools config
|
|
94
|
-
*
|
|
95
|
-
* - This function runs before 'resolveConfigs'
|
|
96
|
-
*
|
|
97
|
-
* @param {object} [options]
|
|
98
|
-
* @param {number[]} [options.presets=DEFAULT_PRESETS]
|
|
99
|
-
*/
|
|
100
|
-
export function generateDefaultDirectives(options) {
|
|
101
|
-
/**
|
|
102
|
-
* Function that sets a.o. format and quality directives if
|
|
103
|
-
* the 'preset' driective is set
|
|
104
|
-
*
|
|
105
|
-
* @param {URL} url
|
|
106
|
-
*/
|
|
107
|
-
return function defaultDirectives(url) {
|
|
108
|
-
// Check the directive in the URL to determine which preset to use
|
|
109
|
-
const params = url.searchParams;
|
|
110
|
-
|
|
111
|
-
let presetName = params.get('preset');
|
|
112
|
-
|
|
113
|
-
// > Return metadata if directive 'responsive' is set
|
|
114
|
-
|
|
115
|
-
if (params.has('responsive')) {
|
|
116
|
-
params.set('as', 'metadata');
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// > Process presets
|
|
120
|
-
|
|
121
|
-
if (presetName) {
|
|
122
|
-
params.delete('preset');
|
|
123
|
-
} else {
|
|
124
|
-
presetName = 'default';
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const presets = options?.presets || DEFAULT_PRESETS;
|
|
128
|
-
|
|
129
|
-
// @ts-ignore
|
|
130
|
-
let preset = presets[presetName];
|
|
131
|
-
|
|
132
|
-
// console.log(`defaultDirectives [url=${url}]`, preset);
|
|
133
|
-
|
|
134
|
-
if (!preset) {
|
|
135
|
-
preset = DEFAULT_PRESETS.default;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
for (const key in preset) {
|
|
139
|
-
params.set(key, preset[key]);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// TODO: process directive 'w''
|
|
143
|
-
// - generate only allowed widths
|
|
144
|
-
// - support width presets such as 'hd'
|
|
145
|
-
|
|
146
|
-
// let width = params.get('w');
|
|
147
|
-
|
|
148
|
-
// if (!width) {
|
|
149
|
-
// // Set max allowed width by default
|
|
150
|
-
// // width = 'hd';
|
|
151
|
-
// }
|
|
152
|
-
|
|
153
|
-
// let presets = {
|
|
154
|
-
// sm: '640',
|
|
155
|
-
// md: '1024',
|
|
156
|
-
// lg: '1536',
|
|
157
|
-
// hd: '1920'
|
|
158
|
-
// };
|
|
159
|
-
|
|
160
|
-
// // @ts-ignore
|
|
161
|
-
// let presetWidth = presets[width];
|
|
162
|
-
// console.log({ width, presetWidth });
|
|
163
|
-
|
|
164
|
-
// if (presetWidth) {
|
|
165
|
-
// params.set('w', presetWidth);
|
|
166
|
-
// } else if (responsive || width === null) {
|
|
167
|
-
// params.set('as', 'metadata');
|
|
168
|
-
// params.delete('w');
|
|
169
|
-
// // } else if (width === null) {
|
|
170
|
-
// // // Set largest size is width parameter is missing
|
|
171
|
-
// // params.set('w', presets.hd);
|
|
172
|
-
// } else {
|
|
173
|
-
// throw new Error(
|
|
174
|
-
// `Directive [w=${width}] is should be a preset value {sm,md,lg,hd,responsive}`
|
|
175
|
-
// );
|
|
176
|
-
|
|
177
|
-
// // let allowedWidths = new Set(['640', '1024', '1536', '1920']);
|
|
178
|
-
// // if (!allowedWidths.has(width)) {
|
|
179
|
-
// // throw new Error(`Width [${width}] is not in list of allowed widths`);
|
|
180
|
-
// // }
|
|
181
|
-
// }
|
|
182
|
-
|
|
183
|
-
// params.set('withoutEnlargement', 'true');
|
|
184
|
-
|
|
185
|
-
// console.log('defaultDirectives:output params', params);
|
|
186
|
-
|
|
187
|
-
return params;
|
|
188
|
-
};
|
|
189
|
-
}
|
|
1
|
+
const DEFAULT_WIDTHS = [640, 1024, 1536, 1920];
|
|
2
|
+
|
|
3
|
+
const DEFAULT_PRESETS = {
|
|
4
|
+
default: {
|
|
5
|
+
format: 'avif',
|
|
6
|
+
quality: '90'
|
|
7
|
+
},
|
|
8
|
+
render: {
|
|
9
|
+
format: 'jpg',
|
|
10
|
+
quality: '95',
|
|
11
|
+
as: 'metadata'
|
|
12
|
+
},
|
|
13
|
+
photo: {
|
|
14
|
+
format: 'jpg',
|
|
15
|
+
quality: '95',
|
|
16
|
+
as: 'metadata'
|
|
17
|
+
},
|
|
18
|
+
gradient: {
|
|
19
|
+
format: 'jpg',
|
|
20
|
+
quality: '95',
|
|
21
|
+
as: 'metadata'
|
|
22
|
+
},
|
|
23
|
+
drawing: {
|
|
24
|
+
format: 'avif',
|
|
25
|
+
quality: '90',
|
|
26
|
+
as: 'metadata'
|
|
27
|
+
},
|
|
28
|
+
savedata: {
|
|
29
|
+
format: 'avif',
|
|
30
|
+
quality: '85',
|
|
31
|
+
as: 'metadata'
|
|
32
|
+
},
|
|
33
|
+
blur: {
|
|
34
|
+
format: 'avif',
|
|
35
|
+
quality: '50',
|
|
36
|
+
blur: '75',
|
|
37
|
+
as: 'metadata'
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Configures and returns a function that can be used as
|
|
43
|
+
* 'resolveConfigs' parameter in imagetools config
|
|
44
|
+
*
|
|
45
|
+
* @param {object} [options]
|
|
46
|
+
* @param {number[]} [options.widths=DEFAULT_WIDTHS]
|
|
47
|
+
*
|
|
48
|
+
* @returns {(
|
|
49
|
+
* entries: [string, string[]][]
|
|
50
|
+
* ) => (Record<string, string | string[]>[])}
|
|
51
|
+
*/
|
|
52
|
+
export function generateResponseConfigs(options) {
|
|
53
|
+
//
|
|
54
|
+
// @see https://github.com/JonasKruckenberg/imagetools
|
|
55
|
+
// /blob/main/docs/core/src/functions/resolveConfigs.md
|
|
56
|
+
//
|
|
57
|
+
return function resolveConfigs(entries /*, outputFormats*/) {
|
|
58
|
+
// console.log('resolveConfigs:entries', entries);
|
|
59
|
+
|
|
60
|
+
/** @type {Record<string, string | string[]>} */
|
|
61
|
+
const configPairs = {};
|
|
62
|
+
|
|
63
|
+
for (const current of entries) {
|
|
64
|
+
const key = current[0];
|
|
65
|
+
const value = current[1][0];
|
|
66
|
+
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
configPairs[key] = value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
const responsiveConfig = entries.find(([key]) => key === 'responsive');
|
|
73
|
+
|
|
74
|
+
if (!responsiveConfig) {
|
|
75
|
+
// Directive 'responsive' was not set => return original config
|
|
76
|
+
|
|
77
|
+
return [configPairs];
|
|
78
|
+
|
|
79
|
+
// Alternative: by returning undefined, the default resolveConfig is used
|
|
80
|
+
// return undefined;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const widths = options?.widths ?? DEFAULT_WIDTHS;
|
|
84
|
+
|
|
85
|
+
return widths.map((w) => {
|
|
86
|
+
return { ...configPairs, w: String(w) };
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Configures and returns a function that can be used as
|
|
93
|
+
* 'defaultDirectives' parameter in imagetools config
|
|
94
|
+
*
|
|
95
|
+
* - This function runs before 'resolveConfigs'
|
|
96
|
+
*
|
|
97
|
+
* @param {object} [options]
|
|
98
|
+
* @param {number[]} [options.presets=DEFAULT_PRESETS]
|
|
99
|
+
*/
|
|
100
|
+
export function generateDefaultDirectives(options) {
|
|
101
|
+
/**
|
|
102
|
+
* Function that sets a.o. format and quality directives if
|
|
103
|
+
* the 'preset' driective is set
|
|
104
|
+
*
|
|
105
|
+
* @param {URL} url
|
|
106
|
+
*/
|
|
107
|
+
return function defaultDirectives(url) {
|
|
108
|
+
// Check the directive in the URL to determine which preset to use
|
|
109
|
+
const params = url.searchParams;
|
|
110
|
+
|
|
111
|
+
let presetName = params.get('preset');
|
|
112
|
+
|
|
113
|
+
// > Return metadata if directive 'responsive' is set
|
|
114
|
+
|
|
115
|
+
if (params.has('responsive')) {
|
|
116
|
+
params.set('as', 'metadata');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// > Process presets
|
|
120
|
+
|
|
121
|
+
if (presetName) {
|
|
122
|
+
params.delete('preset');
|
|
123
|
+
} else {
|
|
124
|
+
presetName = 'default';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const presets = options?.presets || DEFAULT_PRESETS;
|
|
128
|
+
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
let preset = presets[presetName];
|
|
131
|
+
|
|
132
|
+
// console.log(`defaultDirectives [url=${url}]`, preset);
|
|
133
|
+
|
|
134
|
+
if (!preset) {
|
|
135
|
+
preset = DEFAULT_PRESETS.default;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
for (const key in preset) {
|
|
139
|
+
params.set(key, preset[key]);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// TODO: process directive 'w''
|
|
143
|
+
// - generate only allowed widths
|
|
144
|
+
// - support width presets such as 'hd'
|
|
145
|
+
|
|
146
|
+
// let width = params.get('w');
|
|
147
|
+
|
|
148
|
+
// if (!width) {
|
|
149
|
+
// // Set max allowed width by default
|
|
150
|
+
// // width = 'hd';
|
|
151
|
+
// }
|
|
152
|
+
|
|
153
|
+
// let presets = {
|
|
154
|
+
// sm: '640',
|
|
155
|
+
// md: '1024',
|
|
156
|
+
// lg: '1536',
|
|
157
|
+
// hd: '1920'
|
|
158
|
+
// };
|
|
159
|
+
|
|
160
|
+
// // @ts-ignore
|
|
161
|
+
// let presetWidth = presets[width];
|
|
162
|
+
// console.log({ width, presetWidth });
|
|
163
|
+
|
|
164
|
+
// if (presetWidth) {
|
|
165
|
+
// params.set('w', presetWidth);
|
|
166
|
+
// } else if (responsive || width === null) {
|
|
167
|
+
// params.set('as', 'metadata');
|
|
168
|
+
// params.delete('w');
|
|
169
|
+
// // } else if (width === null) {
|
|
170
|
+
// // // Set largest size is width parameter is missing
|
|
171
|
+
// // params.set('w', presets.hd);
|
|
172
|
+
// } else {
|
|
173
|
+
// throw new Error(
|
|
174
|
+
// `Directive [w=${width}] is should be a preset value {sm,md,lg,hd,responsive}`
|
|
175
|
+
// );
|
|
176
|
+
|
|
177
|
+
// // let allowedWidths = new Set(['640', '1024', '1536', '1920']);
|
|
178
|
+
// // if (!allowedWidths.has(width)) {
|
|
179
|
+
// // throw new Error(`Width [${width}] is not in list of allowed widths`);
|
|
180
|
+
// // }
|
|
181
|
+
// }
|
|
182
|
+
|
|
183
|
+
// params.set('withoutEnlargement', 'true');
|
|
184
|
+
|
|
185
|
+
// console.log('defaultDirectives:output params', params);
|
|
186
|
+
|
|
187
|
+
return params;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
@@ -1,142 +1,148 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import { resolve } from 'path';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Generates a Vite configuration object with common HKdigital settings
|
|
6
|
-
*
|
|
7
|
-
* @param {object} [options] Configuration options
|
|
8
|
-
* @param {boolean} [options.enableImagetools=true] Enable vite-imagetools plugin
|
|
9
|
-
* @param {boolean} [options.enableVitest=true] Include Vitest configuration
|
|
10
|
-
* @param {boolean} [options.enableSvelteKit=true] Enable SvelteKit plugin
|
|
11
|
-
* @param {object} [options.customDefines={}] Additional define values
|
|
12
|
-
* @param {Array} [options.customPlugins=[]] Additional Vite plugins
|
|
13
|
-
* @param {object} [options.imagetoolsOptions={}] Options for imagetools config
|
|
14
|
-
* @param {string} [options.packageJsonPath='./package.json'] Path to package.json
|
|
15
|
-
*
|
|
16
|
-
* @returns {Promise<object>} Vite configuration object
|
|
17
|
-
*/
|
|
18
|
-
export async function generateViteConfig(options = {}) {
|
|
19
|
-
const {
|
|
20
|
-
enableImagetools = true,
|
|
21
|
-
enableVitest = true,
|
|
22
|
-
enableSvelteKit = true,
|
|
23
|
-
customDefines = {},
|
|
24
|
-
customPlugins = [],
|
|
25
|
-
imagetoolsOptions = {},
|
|
26
|
-
packageJsonPath = './package.json'
|
|
27
|
-
} = options;
|
|
28
|
-
|
|
29
|
-
// Read package.json for version
|
|
30
|
-
const packageJson = JSON.parse(
|
|
31
|
-
readFileSync(resolve(packageJsonPath), 'utf-8')
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
const plugins = [...customPlugins];
|
|
35
|
-
|
|
36
|
-
// Add SvelteKit plugin (provides $lib alias and other SvelteKit features)
|
|
37
|
-
if (enableSvelteKit) {
|
|
38
|
-
try {
|
|
39
|
-
const { sveltekit } = await import('@sveltejs/kit/vite');
|
|
40
|
-
plugins.push(sveltekit());
|
|
41
|
-
} catch (error) {
|
|
42
|
-
console.error(error);
|
|
43
|
-
console.warn(
|
|
44
|
-
'@sveltejs/kit/vite not found. Install it to enable SvelteKit support.'
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Conditionally add imagetools
|
|
50
|
-
if (enableImagetools) {
|
|
51
|
-
try {
|
|
52
|
-
const { imagetools } = await import('vite-imagetools');
|
|
53
|
-
const {
|
|
54
|
-
generateDefaultDirectives,
|
|
55
|
-
generateResponseConfigs
|
|
56
|
-
} = await import('./imagetools.js');
|
|
57
|
-
|
|
58
|
-
plugins.push(
|
|
59
|
-
imagetools({
|
|
60
|
-
defaultDirectives: generateDefaultDirectives(imagetoolsOptions),
|
|
61
|
-
resolveConfigs: generateResponseConfigs(imagetoolsOptions)
|
|
62
|
-
})
|
|
63
|
-
);
|
|
64
|
-
} catch (error) {
|
|
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
|
-
|
|
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
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { resolve } from 'path';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Generates a Vite configuration object with common HKdigital settings
|
|
6
|
+
*
|
|
7
|
+
* @param {object} [options] Configuration options
|
|
8
|
+
* @param {boolean} [options.enableImagetools=true] Enable vite-imagetools plugin
|
|
9
|
+
* @param {boolean} [options.enableVitest=true] Include Vitest configuration
|
|
10
|
+
* @param {boolean} [options.enableSvelteKit=true] Enable SvelteKit plugin
|
|
11
|
+
* @param {object} [options.customDefines={}] Additional define values
|
|
12
|
+
* @param {Array} [options.customPlugins=[]] Additional Vite plugins
|
|
13
|
+
* @param {object} [options.imagetoolsOptions={}] Options for imagetools config
|
|
14
|
+
* @param {string} [options.packageJsonPath='./package.json'] Path to package.json
|
|
15
|
+
*
|
|
16
|
+
* @returns {Promise<object>} Vite configuration object
|
|
17
|
+
*/
|
|
18
|
+
export async function generateViteConfig(options = {}) {
|
|
19
|
+
const {
|
|
20
|
+
enableImagetools = true,
|
|
21
|
+
enableVitest = true,
|
|
22
|
+
enableSvelteKit = true,
|
|
23
|
+
customDefines = {},
|
|
24
|
+
customPlugins = [],
|
|
25
|
+
imagetoolsOptions = {},
|
|
26
|
+
packageJsonPath = './package.json'
|
|
27
|
+
} = options;
|
|
28
|
+
|
|
29
|
+
// Read package.json for version
|
|
30
|
+
const packageJson = JSON.parse(
|
|
31
|
+
readFileSync(resolve(packageJsonPath), 'utf-8')
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const plugins = [...customPlugins];
|
|
35
|
+
|
|
36
|
+
// Add SvelteKit plugin (provides $lib alias and other SvelteKit features)
|
|
37
|
+
if (enableSvelteKit) {
|
|
38
|
+
try {
|
|
39
|
+
const { sveltekit } = await import('@sveltejs/kit/vite');
|
|
40
|
+
plugins.push(sveltekit());
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error(error);
|
|
43
|
+
console.warn(
|
|
44
|
+
'@sveltejs/kit/vite not found. Install it to enable SvelteKit support.'
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Conditionally add imagetools
|
|
50
|
+
if (enableImagetools) {
|
|
51
|
+
try {
|
|
52
|
+
const { imagetools } = await import('vite-imagetools');
|
|
53
|
+
const {
|
|
54
|
+
generateDefaultDirectives,
|
|
55
|
+
generateResponseConfigs
|
|
56
|
+
} = await import('./imagetools.js');
|
|
57
|
+
|
|
58
|
+
plugins.push(
|
|
59
|
+
imagetools({
|
|
60
|
+
defaultDirectives: generateDefaultDirectives(imagetoolsOptions),
|
|
61
|
+
resolveConfigs: generateResponseConfigs(imagetoolsOptions)
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
const errorMessage = `
|
|
66
|
+
╭─────────────────────────────────────────────────────────────╮
|
|
67
|
+
│ Missing Dependency │
|
|
68
|
+
├─────────────────────────────────────────────────────────────┤
|
|
69
|
+
│ 'vite-imagetools' is required when enableImagetools: true │
|
|
70
|
+
│ Install it with: pnpm add -D vite-imagetools │
|
|
71
|
+
│ Or set enableImagetools: false │
|
|
72
|
+
╰─────────────────────────────────────────────────────────────╯`;
|
|
73
|
+
console.error(errorMessage);
|
|
74
|
+
throw new Error('vite-imagetools is required when enableImagetools: true');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const config = {
|
|
79
|
+
plugins,
|
|
80
|
+
define: {
|
|
81
|
+
'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version),
|
|
82
|
+
'import.meta.env.VITE_BUILD_TIMESTAMP': JSON.stringify(
|
|
83
|
+
new Date().toISOString()
|
|
84
|
+
),
|
|
85
|
+
...customDefines
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
if (enableVitest) {
|
|
90
|
+
config.test = {
|
|
91
|
+
include: [
|
|
92
|
+
'src/**/*.{test,spec}.{js,ts}',
|
|
93
|
+
'src/**/*.svelte.{test,spec}.{js,ts}'
|
|
94
|
+
]
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return config;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Generates build-time defines for Vite
|
|
103
|
+
*
|
|
104
|
+
* @param {object} [options] Configuration options
|
|
105
|
+
* @param {string} [options.packageJsonPath='./package.json'] Path to package.json
|
|
106
|
+
* @param {object} [options.customDefines={}] Additional define values
|
|
107
|
+
*
|
|
108
|
+
* @returns {object} Define configuration object
|
|
109
|
+
*/
|
|
110
|
+
export function generateViteDefines(options = {}) {
|
|
111
|
+
const {
|
|
112
|
+
packageJsonPath = './package.json',
|
|
113
|
+
customDefines = {}
|
|
114
|
+
} = options;
|
|
115
|
+
|
|
116
|
+
const packageJson = JSON.parse(
|
|
117
|
+
readFileSync(resolve(packageJsonPath), 'utf-8')
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version),
|
|
122
|
+
'import.meta.env.VITE_BUILD_TIMESTAMP': JSON.stringify(
|
|
123
|
+
new Date().toISOString()
|
|
124
|
+
),
|
|
125
|
+
...customDefines
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Generates Vitest configuration
|
|
131
|
+
*
|
|
132
|
+
* @param {object} [options] Configuration options
|
|
133
|
+
* @param {string[]} [options.additionalPatterns=[]] Additional test patterns
|
|
134
|
+
*
|
|
135
|
+
* @returns {object} Vitest configuration object
|
|
136
|
+
*/
|
|
137
|
+
export function generateVitestConfig(options = {}) {
|
|
138
|
+
const { additionalPatterns = [] } = options;
|
|
139
|
+
|
|
140
|
+
const defaultPatterns = [
|
|
141
|
+
'src/**/*.{test,spec}.{js,ts}',
|
|
142
|
+
'src/**/*.svelte.{test,spec}.{js,ts}'
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
return {
|
|
146
|
+
include: [...defaultPatterns, ...additionalPatterns]
|
|
147
|
+
};
|
|
148
|
+
}
|