@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.
Files changed (293) hide show
  1. package/README.md +173 -149
  2. package/dist/assets/autospuiten/car-paint-picker.js +41 -41
  3. package/dist/assets/autospuiten/labels.js +7 -7
  4. package/dist/classes/data/IterableTree.js +242 -242
  5. package/dist/classes/data/Selector.js +190 -190
  6. package/dist/classes/data/index.js +2 -2
  7. package/dist/classes/data/typedef.js +9 -9
  8. package/dist/classes/event-emitter/EventEmitter.js +273 -273
  9. package/dist/classes/event-emitter/index.js +2 -2
  10. package/dist/classes/index.js +4 -4
  11. package/dist/classes/promise/HkPromise.js +384 -384
  12. package/dist/classes/promise/index.js +1 -1
  13. package/dist/classes/stores/SubscribersCount.js +107 -107
  14. package/dist/classes/stores/index.js +1 -1
  15. package/dist/classes/streams/LogTransformStream.js +19 -19
  16. package/dist/classes/streams/ServerEventsStore.js +111 -111
  17. package/dist/classes/streams/TimeStampSource.js +26 -26
  18. package/dist/classes/streams/index.js +3 -3
  19. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
  20. package/dist/classes/svelte/finite-state-machine/index.js +1 -1
  21. package/dist/classes/svelte/index.js +1 -11
  22. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  23. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  24. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  25. package/dist/config/README.md +197 -196
  26. package/dist/config/generators/imagetools.js +189 -189
  27. package/dist/config/generators/vite.js +148 -142
  28. package/dist/config/imagetools.d.ts +72 -72
  29. package/dist/config/vite.js +4 -4
  30. package/dist/constants/bases/index.js +13 -13
  31. package/dist/constants/http/headers.js +6 -6
  32. package/dist/constants/http/index.js +2 -2
  33. package/dist/constants/http/methods.js +14 -14
  34. package/dist/constants/index.js +6 -6
  35. package/dist/constants/mime/application.js +5 -5
  36. package/dist/constants/mime/audio.js +13 -13
  37. package/dist/constants/mime/image.js +3 -3
  38. package/dist/constants/mime/index.js +4 -4
  39. package/dist/constants/mime/text.js +2 -2
  40. package/dist/constants/regexp/README.md +96 -95
  41. package/dist/constants/regexp/index.js +31 -31
  42. package/dist/constants/regexp/inspiratie.js__ +95 -95
  43. package/dist/constants/regexp/text.d.ts +4 -4
  44. package/dist/constants/regexp/text.js +49 -49
  45. package/dist/constants/regexp/url.js +3 -3
  46. package/dist/constants/regexp/user.js +29 -29
  47. package/dist/constants/states/drag.js +6 -6
  48. package/dist/constants/states/drop.js +6 -6
  49. package/dist/constants/states/index.js +4 -4
  50. package/dist/constants/states/input.js +11 -11
  51. package/dist/constants/states/submit.js +4 -4
  52. package/dist/constants/time/index.js +28 -28
  53. package/dist/css/utilities.css +43 -43
  54. package/dist/design/README.md +405 -405
  55. package/dist/design/config/design-config.js +73 -73
  56. package/dist/design/generators/index.js +288 -288
  57. package/dist/design/index.js +96 -96
  58. package/dist/design/plugins/skeleton.js +208 -208
  59. package/dist/design/tailwind-theme-extend.js +158 -158
  60. package/dist/design/themes/README.md +102 -102
  61. package/dist/design/themes/hkdev/components/blocks/text-block.css +34 -34
  62. package/dist/design/themes/hkdev/components/boxes/game-box.css +11 -11
  63. package/dist/design/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  64. package/dist/design/themes/hkdev/components/buttons/button-text.css +32 -32
  65. package/dist/design/themes/hkdev/components/buttons/button.css +146 -146
  66. package/dist/design/themes/hkdev/components/buttons/skip-button.css +5 -5
  67. package/dist/design/themes/hkdev/components/drag-drop/draggable.css +73 -73
  68. package/dist/design/themes/hkdev/components/drag-drop/drop-zone.css +58 -58
  69. package/dist/design/themes/hkdev/components/icons/icon-steeze.css +15 -15
  70. package/dist/design/themes/hkdev/components/inputs/text-input.css +102 -102
  71. package/dist/design/themes/hkdev/components/panels/panel.css +25 -25
  72. package/dist/design/themes/hkdev/components/rows/panel-grid-row.css +4 -4
  73. package/dist/design/themes/hkdev/components/rows/panel-row-2.css +5 -5
  74. package/dist/design/themes/hkdev/components.css +29 -29
  75. package/dist/design/themes/hkdev/debug.css +1 -1
  76. package/dist/design/themes/hkdev/global/layout.css +32 -32
  77. package/dist/design/themes/hkdev/global/on-colors.css +32 -32
  78. package/dist/design/themes/hkdev/globals.css +3 -3
  79. package/dist/design/themes/hkdev/responsive.css +12 -12
  80. package/dist/design/themes/hkdev/theme-ext.js +12 -12
  81. package/dist/design/themes/hkdev/theme.css +218 -218
  82. package/dist/design/utils/clamp.js +66 -66
  83. package/dist/design/utils/root-vars.js +102 -102
  84. package/dist/design/utils/scaling.js +228 -228
  85. package/dist/design/utils/states.js +22 -22
  86. package/dist/errors/api.js +9 -9
  87. package/dist/errors/generic.js +20 -20
  88. package/dist/errors/http.js +16 -16
  89. package/dist/errors/index.js +5 -5
  90. package/dist/errors/jwt.js +5 -5
  91. package/dist/errors/promise.js +25 -25
  92. package/dist/logging/README.md +158 -0
  93. package/dist/logging/index.d.ts +3 -1
  94. package/dist/logging/index.js +11 -7
  95. package/dist/logging/internal/adapters/console.js +114 -114
  96. package/dist/logging/internal/adapters/index.js +2 -2
  97. package/dist/logging/internal/adapters/pino.js +160 -142
  98. package/dist/logging/internal/adapters/typedef.js +10 -10
  99. package/dist/logging/internal/{unified-logger/constants.js → constants.js} +22 -22
  100. package/dist/logging/internal/factories/client.d.ts +1 -1
  101. package/dist/logging/internal/factories/client.js +21 -21
  102. package/dist/logging/internal/factories/server.d.ts +1 -1
  103. package/dist/logging/internal/factories/server.js +22 -22
  104. package/dist/logging/internal/factories/universal.d.ts +2 -2
  105. package/dist/logging/internal/factories/universal.js +22 -22
  106. package/dist/logging/internal/{unified-logger → logger}/Logger.d.ts +2 -2
  107. package/dist/logging/internal/{unified-logger → logger}/Logger.js +217 -217
  108. package/dist/logging/internal/logger/index.d.ts +1 -0
  109. package/dist/logging/internal/logger/index.js +1 -0
  110. package/dist/logging/internal/{unified-logger/typedef.d.ts → typedef.d.ts} +2 -1
  111. package/dist/logging/internal/{unified-logger/typedef.js → typedef.js} +21 -17
  112. package/dist/network/README.md +172 -172
  113. package/dist/network/cache/IndexedDbCache.js +1407 -1407
  114. package/dist/network/cache/MemoryResponseCache.js +138 -138
  115. package/dist/network/cache/index.js +5 -5
  116. package/dist/network/cache/typedef.js +41 -41
  117. package/dist/network/cache.js +3 -3
  118. package/dist/network/http/caching.js +261 -261
  119. package/dist/network/http/errors.js +97 -97
  120. package/dist/network/http/headers.js +75 -75
  121. package/dist/network/http/http-request.js +578 -578
  122. package/dist/network/http/index.js +22 -22
  123. package/dist/network/http/json-request.js +224 -224
  124. package/dist/network/http/mocks.js +65 -65
  125. package/dist/network/http/response.js +318 -318
  126. package/dist/network/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  127. package/dist/network/http/typedef.js +93 -93
  128. package/dist/network/http/url.js +52 -52
  129. package/dist/network/http.js +5 -5
  130. package/dist/network/loaders/README.md +254 -254
  131. package/dist/network/loaders/audio/AudioLoader.svelte.js +58 -58
  132. package/dist/network/loaders/audio/AudioScene.svelte.js +324 -324
  133. package/dist/network/loaders/audio/mocks.js +35 -35
  134. package/dist/network/loaders/audio.js +1 -1
  135. package/dist/network/loaders/image/ImageLoader.svelte.js +44 -44
  136. package/dist/network/loaders/image/ImageScene.svelte.js +248 -248
  137. package/dist/network/loaders/image/ImageVariantsLoader.svelte.js +150 -150
  138. package/dist/network/loaders/image/index.js +4 -4
  139. package/dist/network/loaders/image/mocks.js +35 -35
  140. package/dist/network/loaders/image/typedef.js +8 -8
  141. package/dist/network/loaders/image/utils/index.js +86 -86
  142. package/dist/network/loaders/image.js +7 -7
  143. package/dist/network/loaders/typedef.js +38 -38
  144. package/dist/network/loaders.js +2 -2
  145. package/dist/network/states/NetworkLoader.svelte.js +338 -338
  146. package/dist/network/states/constants.js +3 -3
  147. package/dist/network/states/index.js +3 -3
  148. package/dist/network/states/mocks.js +30 -30
  149. package/dist/network/states/typedef.js +8 -8
  150. package/dist/network/typedef.js +9 -9
  151. package/dist/services/README.md +200 -0
  152. package/dist/services/index.d.ts +6 -1
  153. package/dist/services/index.js +8 -1
  154. package/dist/services/{internal/service-base → service-base}/ServiceBase.d.ts +2 -2
  155. package/dist/services/{internal/service-base → service-base}/ServiceBase.js +462 -462
  156. package/dist/services/{internal/service-base → service-base}/constants.d.ts +0 -12
  157. package/dist/services/{internal/service-base → service-base}/constants.js +98 -110
  158. package/dist/services/{internal/service-base → service-base}/index.js +3 -3
  159. package/dist/services/{internal/service-base → service-base}/typedef.d.ts +1 -1
  160. package/dist/services/{internal/service-base → service-base}/typedef.js +101 -101
  161. package/dist/services/{internal/service-manager → service-manager}/ServiceManager.d.ts +2 -2
  162. package/dist/services/{internal/service-manager → service-manager}/ServiceManager.js +608 -608
  163. package/dist/services/{internal/service-manager → service-manager}/constants.js +6 -6
  164. package/dist/services/{internal/service-manager → service-manager}/typedef.js +90 -90
  165. package/dist/states/index.js +1 -1
  166. package/dist/states/navigation.svelte.js +55 -55
  167. package/dist/stores/index.js +1 -1
  168. package/dist/stores/theme.js +80 -80
  169. package/dist/typedef/context.js +6 -6
  170. package/dist/typedef/drag.js +25 -25
  171. package/dist/typedef/drop.js +12 -12
  172. package/dist/typedef/index.d.ts +1 -0
  173. package/dist/typedef/index.js +4 -4
  174. package/dist/ui/components/button-group/ButtonGroup.svelte +82 -82
  175. package/dist/ui/components/button-group/typedef.js +10 -10
  176. package/dist/ui/components/compare-left-right/CompareLeftRight.svelte +179 -179
  177. package/dist/ui/components/compare-left-right/index.js +1 -1
  178. package/dist/ui/components/game-box/GameBox.svelte +577 -577
  179. package/dist/ui/components/game-box/gamebox.util.js +83 -83
  180. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  181. package/dist/ui/components/hk-app-layout/HkAppLayout.svelte +251 -251
  182. package/dist/ui/components/image-box/ImageBox.svelte +210 -210
  183. package/dist/ui/components/image-box/index.js +5 -5
  184. package/dist/ui/components/image-box/typedef.js +32 -32
  185. package/dist/ui/components/index.js +23 -23
  186. package/dist/ui/components/presenter/ImageSlide.svelte +64 -64
  187. package/dist/ui/components/presenter/Presenter.state.svelte.js +638 -638
  188. package/dist/ui/components/presenter/Presenter.svelte +142 -142
  189. package/dist/ui/components/presenter/constants.js +7 -7
  190. package/dist/ui/components/presenter/index.js +10 -10
  191. package/dist/ui/components/presenter/typedef.js +106 -106
  192. package/dist/ui/components/presenter/util.js +210 -210
  193. package/dist/ui/components/virtual-viewport/VirtualViewport.svelte +196 -196
  194. package/dist/ui/primitives/area/HkArea.svelte +49 -49
  195. package/dist/ui/primitives/area/HkGridArea.svelte +77 -77
  196. package/dist/ui/primitives/area/index.js +2 -2
  197. package/dist/ui/primitives/buttons/button/Button.svelte +82 -82
  198. package/dist/ui/primitives/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
  199. package/dist/ui/primitives/buttons/button-text/TextButton.svelte +21 -21
  200. package/dist/ui/primitives/buttons/index.js +3 -3
  201. package/dist/ui/primitives/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
  202. package/dist/ui/primitives/debug/index.js +1 -1
  203. package/dist/ui/primitives/drag-drop/DragController.js +44 -44
  204. package/dist/ui/primitives/drag-drop/DragDropContext.svelte +111 -111
  205. package/dist/ui/primitives/drag-drop/Draggable.svelte +519 -519
  206. package/dist/ui/primitives/drag-drop/DropZone.svelte +258 -258
  207. package/dist/ui/primitives/drag-drop/DropZoneArea.svelte +119 -119
  208. package/dist/ui/primitives/drag-drop/DropZoneList.svelte +125 -125
  209. package/dist/ui/primitives/drag-drop/actions.js +26 -26
  210. package/dist/ui/primitives/drag-drop/drag-state.svelte.js +322 -322
  211. package/dist/ui/primitives/drag-drop/index.js +7 -7
  212. package/dist/ui/primitives/drag-drop/util.js +85 -85
  213. package/dist/ui/primitives/hkdev/blocks/TextBlock.svelte +46 -46
  214. package/dist/ui/primitives/hkdev/buttons/CheckButton.svelte +62 -62
  215. package/dist/ui/primitives/icons/HkIcon.svelte +86 -86
  216. package/dist/ui/primitives/icons/HkTabIcon.svelte +116 -116
  217. package/dist/ui/primitives/icons/SteezeIcon.svelte +97 -97
  218. package/dist/ui/primitives/icons/index.js +6 -6
  219. package/dist/ui/primitives/icons/typedef.js +16 -16
  220. package/dist/ui/primitives/index.js +2 -2
  221. package/dist/ui/primitives/inputs/index.js +1 -1
  222. package/dist/ui/primitives/inputs/text-input/TestTextInput.svelte__ +102 -0
  223. package/dist/ui/primitives/inputs/text-input/TextInput.svelte +223 -223
  224. package/dist/ui/primitives/inputs/text-input/TextInput.svelte___ +83 -0
  225. package/dist/ui/primitives/inputs/text-input/assets/IconInvalid.svelte +14 -14
  226. package/dist/ui/primitives/inputs/text-input/assets/IconValid.svelte +12 -12
  227. package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte +63 -63
  228. package/dist/ui/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
  229. package/dist/ui/primitives/layout/grid-layers/util.js +74 -74
  230. package/dist/ui/primitives/layout/index.js +1 -1
  231. package/dist/ui/primitives/panels/index.js +1 -1
  232. package/dist/ui/primitives/panels/panel/Panel.svelte +43 -43
  233. package/dist/ui/primitives/rows/index.js +3 -3
  234. package/dist/ui/primitives/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  235. package/dist/ui/primitives/rows/panel-row-2/PanelRow2.svelte +40 -40
  236. package/dist/ui/primitives/tab-bar/HkTabBar.state.svelte.js +149 -149
  237. package/dist/ui/primitives/tab-bar/HkTabBar.svelte +74 -74
  238. package/dist/ui/primitives/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  239. package/dist/ui/primitives/tab-bar/HkTabBarSelector.svelte +49 -49
  240. package/dist/ui/primitives/tab-bar/index.js +17 -17
  241. package/dist/ui/primitives/tab-bar/typedef.js +11 -11
  242. package/dist/util/array/index.js +436 -436
  243. package/dist/util/bases/base58.js +262 -262
  244. package/dist/util/bases/index.js +1 -1
  245. package/dist/util/compare/index.js +247 -247
  246. package/dist/util/css/css-vars.js +83 -83
  247. package/dist/util/css/index.js +1 -1
  248. package/dist/util/env/index.js +9 -9
  249. package/dist/util/exceptions/index.d.ts +4 -3
  250. package/dist/util/exceptions/index.js +26 -23
  251. package/dist/util/expect/arrays.js +47 -47
  252. package/dist/util/expect/index.js +259 -259
  253. package/dist/util/expect/primitives.js +55 -55
  254. package/dist/util/expect/url.js +60 -60
  255. package/dist/util/function/index.js +218 -218
  256. package/dist/util/geo/index.js +26 -26
  257. package/dist/util/index.js +7 -7
  258. package/dist/util/is/index.js +147 -147
  259. package/dist/util/iterate/index.js +204 -204
  260. package/dist/util/object/index.js +1345 -1345
  261. package/dist/util/singleton/index.js +97 -97
  262. package/dist/util/string/array-path.js +75 -75
  263. package/dist/util/string/convert.js +54 -54
  264. package/dist/util/string/fs.js +226 -226
  265. package/dist/util/string/index.js +5 -5
  266. package/dist/util/string/interpolate.js +61 -61
  267. package/dist/util/string/pad.js +10 -10
  268. package/dist/util/svelte/index.js +4 -4
  269. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  270. package/dist/util/svelte/observe/index.js +49 -49
  271. package/dist/util/svelte/state-context/index.js +117 -117
  272. package/dist/util/svelte/wait/index.js +38 -38
  273. package/dist/util/sveltekit/index.js +1 -1
  274. package/dist/util/sveltekit/route-folders/index.js +101 -101
  275. package/dist/util/time/index.js +328 -328
  276. package/dist/util/unique/index.js +231 -231
  277. package/dist/valibot/README.md +61 -50
  278. package/dist/valibot/index.js +8 -8
  279. package/dist/valibot/parsers/date.js__ +10 -0
  280. package/dist/valibot/parsers/email.d.ts +12 -0
  281. package/dist/valibot/parsers/email.js +34 -0
  282. package/dist/valibot/parsers/url.js +110 -110
  283. package/dist/valibot/parsers/user.js +23 -23
  284. package/dist/valibot/parsers.js +3 -3
  285. package/package.json +131 -131
  286. package/dist/logging/internal/unified-logger/index.d.ts +0 -3
  287. package/dist/logging/internal/unified-logger/index.js +0 -6
  288. package/dist/services/internal/index.d.ts +0 -6
  289. package/dist/services/internal/index.js +0 -8
  290. /package/dist/logging/internal/{unified-logger/constants.d.ts → constants.d.ts} +0 -0
  291. /package/dist/services/{internal/service-base → service-base}/index.d.ts +0 -0
  292. /package/dist/services/{internal/service-manager → service-manager}/constants.d.ts +0 -0
  293. /package/dist/services/{internal/service-manager → service-manager}/typedef.d.ts +0 -0
@@ -1,196 +1,197 @@
1
- # Config
2
-
3
- Reusable configuration generators for HKdigital projects.
4
-
5
- ## Vite Configuration
6
-
7
- The `vite.js` provides generators for common Vite setups used across HKdigital projects.
8
-
9
- ### Quick Start
10
-
11
- ```javascript
12
- // vite.config.js
13
- import { defineConfig } from 'vitest/config';
14
- import { sveltekit } from '@sveltejs/kit/vite';
15
- import { generateViteConfig } from '@hkdigital/lib-sveltekit/config/vite.js';
16
-
17
- export default defineConfig(
18
- await generateViteConfig({
19
- enableImagetools: true
20
- })
21
- );
22
- ```
23
-
24
- ### Functions
25
-
26
- #### `generateViteConfig(options)`
27
-
28
- Generates a complete Vite configuration with HKdigital defaults.
29
-
30
- **Options:**
31
- - `enableImagetools` (boolean, default: `true`) - Include vite-imagetools plugin
32
- - `enableVitest` (boolean, default: `true`) - Include Vitest test configuration
33
- - `customDefines` (object, default: `{}`) - Additional define values
34
- - `customPlugins` (array, default: `[]`) - Additional Vite plugins
35
- - `imagetoolsOptions` (object, default: `{}`) - Options passed to imagetools config
36
- - `packageJsonPath` (string, default: `'./package.json'`) - Path to package.json
37
-
38
- **Built-in defines:**
39
- - `import.meta.env.VITE_APP_VERSION` - Version from package.json
40
- - `import.meta.env.VITE_BUILD_TIMESTAMP` - Build timestamp
41
-
42
- **Example:**
43
- ```javascript
44
- export default defineConfig(
45
- await generateViteConfig({
46
- enableImagetools: true,
47
- enableVitest: true,
48
- customDefines: {
49
- 'import.meta.env.VITE_API_URL': JSON.stringify('https://api.example.com')
50
- },
51
- imagetoolsOptions: {
52
- widths: [640, 1024, 1536, 1920]
53
- }
54
- })
55
- );
56
- ```
57
-
58
- #### `generateViteDefines(options)`
59
-
60
- Generates only the define configuration (no plugins).
61
-
62
- **Options:**
63
- - `packageJsonPath` (string, default: `'./package.json'`) - Path to package.json
64
- - `customDefines` (object, default: `{}`) - Additional define values
65
-
66
- **Example:**
67
- ```javascript
68
- export default defineConfig({
69
- plugins: [sveltekit()],
70
- define: generateViteDefines({
71
- customDefines: {
72
- 'import.meta.env.VITE_API_URL': JSON.stringify(process.env.API_URL)
73
- }
74
- })
75
- });
76
- ```
77
-
78
- #### `generateVitestConfig(options)`
79
-
80
- Generates only the Vitest test configuration.
81
-
82
- **Options:**
83
- - `additionalPatterns` (array, default: `[]`) - Additional test file patterns
84
-
85
- **Example:**
86
- ```javascript
87
- export default defineConfig({
88
- plugins: [sveltekit()],
89
- test: generateVitestConfig({
90
- additionalPatterns: ['tests/**/*.integration.js']
91
- })
92
- });
93
- ```
94
-
95
- ## Imagetools Configuration
96
-
97
- When `enableImagetools: true`, the following dependencies are required in your project:
98
-
99
- ```bash
100
- pnpm add -D vite-imagetools
101
- ```
102
-
103
- ### TypeScript Support
104
-
105
- For TypeScript and JavaScript projects using VS Code or other TypeScript-aware editors, add to your `app.d.ts`:
106
-
107
- ```typescript
108
- import '@hkdigital/lib-sveltekit/config/imagetools.d.ts';
109
- ```
110
-
111
- **Why this is needed:**
112
- - Provides type definitions for image imports with query parameters (e.g., `hero.jpg?preset=photo`)
113
- - Enables IntelliSense and autocompletion for imagetools directives in your editor
114
- - Prevents TypeScript errors when importing processed images
115
- - Works for both TypeScript and JavaScript projects (VS Code uses TypeScript for JS intellisense)
116
-
117
- **What it enables:**
118
- ```javascript
119
- // These imports will have proper typing and editor support
120
- import heroImage from '$lib/assets/hero.jpg?preset=photo';
121
- import heroResponsive from '$lib/assets/hero.jpg?preset=photo&responsive';
122
- ```
123
-
124
- ### Image Usage
125
-
126
- With imagetools enabled, you can use images with processing directives:
127
-
128
- ```javascript
129
- // Basic usage
130
- import heroImage from '$lib/assets/hero.jpg?preset=photo';
131
-
132
- // Responsive images
133
- import heroResponsive from '$lib/assets/hero.jpg?preset=photo&responsive';
134
- ```
135
-
136
- **Available presets:**
137
- - `default` - AVIF format, 90% quality
138
- - `photo` - JPG format, 95% quality, returns metadata
139
- - `render` - JPG format, 95% quality, returns metadata
140
- - `gradient` - JPG format, 95% quality, returns metadata
141
- - `drawing` - AVIF format, 90% quality, returns metadata
142
- - `savedata` - AVIF format, 85% quality, returns metadata
143
- - `blur` - AVIF format, 50% quality with blur effect, returns metadata
144
-
145
- ## Migration from Direct Config
146
-
147
- ### Before
148
- ```javascript
149
- // vite.config.js
150
- import { defineConfig } from 'vitest/config';
151
- import { sveltekit } from '@sveltejs/kit/vite';
152
- import { imagetools } from 'vite-imagetools';
153
- import { readFileSync } from 'fs';
154
- import { resolve } from 'path';
155
-
156
- import {
157
- generateDefaultDirectives,
158
- generateResponseConfigs
159
- } from '@hkdigital/lib-sveltekit/config/imagetools-config.js';
160
-
161
- const packageJson = JSON.parse(
162
- readFileSync(resolve('./package.json'), 'utf-8')
163
- );
164
-
165
- export default defineConfig({
166
- plugins: [
167
- sveltekit(),
168
- imagetools({
169
- defaultDirectives: generateDefaultDirectives(),
170
- resolveConfigs: generateResponseConfigs()
171
- })
172
- ],
173
- define: {
174
- 'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version),
175
- 'import.meta.env.VITE_BUILD_TIMESTAMP': JSON.stringify(new Date().toISOString())
176
- },
177
- test: {
178
- include: [
179
- 'src/**/*.{test,spec}.{js,ts}',
180
- 'src/**/*.svelte.{test,spec}.{js,ts}'
181
- ]
182
- }
183
- });
184
- ```
185
-
186
- ### After
187
- ```javascript
188
- // vite.config.js
189
- import { defineConfig } from 'vitest/config';
190
- import { sveltekit } from '@sveltejs/kit/vite';
191
- import { generateViteConfig } from '@hkdigital/lib-sveltekit/config/vite.js';
192
-
193
- export default defineConfig(
194
- await generateViteConfig()
195
- );
196
- ```
1
+ # Config
2
+
3
+ Reusable configuration generators for HKdigital projects.
4
+
5
+ ## Vite Configuration
6
+
7
+ The `vite.js` provides generators for common Vite setups used across HKdigital projects.
8
+
9
+ ### Quick Start
10
+
11
+ ```javascript
12
+ // vite.config.js
13
+ import { defineConfig } from 'vitest/config';
14
+ import { sveltekit } from '@sveltejs/kit/vite';
15
+ import { generateViteConfig } from '@hkdigital/lib-sveltekit/config/vite.js';
16
+
17
+ export default defineConfig(
18
+ await generateViteConfig({
19
+ enableImagetools: true
20
+ })
21
+ );
22
+ ```
23
+
24
+ ### Functions
25
+
26
+ #### `generateViteConfig(options)`
27
+
28
+ Generates a complete Vite configuration with HKdigital defaults.
29
+
30
+ **Options:**
31
+ - `enableImagetools` (boolean, default: `true`) - Include vite-imagetools plugin
32
+ - `enableVitest` (boolean, default: `true`) - Include Vitest test configuration
33
+ - `enableSvelteKit` (boolean, default: `true`) - Include SvelteKit plugin
34
+ - `customDefines` (object, default: `{}`) - Additional define values
35
+ - `customPlugins` (array, default: `[]`) - Additional Vite plugins
36
+ - `imagetoolsOptions` (object, default: `{}`) - Options passed to imagetools config
37
+ - `packageJsonPath` (string, default: `'./package.json'`) - Path to package.json
38
+
39
+ **Built-in defines:**
40
+ - `import.meta.env.VITE_APP_VERSION` - Version from package.json
41
+ - `import.meta.env.VITE_BUILD_TIMESTAMP` - Build timestamp
42
+
43
+ **Example:**
44
+ ```javascript
45
+ export default defineConfig(
46
+ await generateViteConfig({
47
+ enableImagetools: true,
48
+ enableVitest: true,
49
+ customDefines: {
50
+ 'import.meta.env.VITE_API_URL': JSON.stringify('https://api.example.com')
51
+ },
52
+ imagetoolsOptions: {
53
+ widths: [640, 1024, 1536, 1920]
54
+ }
55
+ })
56
+ );
57
+ ```
58
+
59
+ #### `generateViteDefines(options)`
60
+
61
+ Generates only the define configuration (no plugins).
62
+
63
+ **Options:**
64
+ - `packageJsonPath` (string, default: `'./package.json'`) - Path to package.json
65
+ - `customDefines` (object, default: `{}`) - Additional define values
66
+
67
+ **Example:**
68
+ ```javascript
69
+ export default defineConfig({
70
+ plugins: [sveltekit()],
71
+ define: generateViteDefines({
72
+ customDefines: {
73
+ 'import.meta.env.VITE_API_URL': JSON.stringify(process.env.API_URL)
74
+ }
75
+ })
76
+ });
77
+ ```
78
+
79
+ #### `generateVitestConfig(options)`
80
+
81
+ Generates only the Vitest test configuration.
82
+
83
+ **Options:**
84
+ - `additionalPatterns` (array, default: `[]`) - Additional test file patterns
85
+
86
+ **Example:**
87
+ ```javascript
88
+ export default defineConfig({
89
+ plugins: [sveltekit()],
90
+ test: generateVitestConfig({
91
+ additionalPatterns: ['tests/**/*.integration.js']
92
+ })
93
+ });
94
+ ```
95
+
96
+ ## Imagetools Configuration
97
+
98
+ When `enableImagetools: true`, the following dependencies are required in your project:
99
+
100
+ ```bash
101
+ pnpm add -D vite-imagetools
102
+ ```
103
+
104
+ ### TypeScript Support
105
+
106
+ For TypeScript and JavaScript projects using VS Code or other TypeScript-aware editors, add to your `app.d.ts`:
107
+
108
+ ```typescript
109
+ import '@hkdigital/lib-sveltekit/config/imagetools.d.ts';
110
+ ```
111
+
112
+ **Why this is needed:**
113
+ - Provides type definitions for image imports with query parameters (e.g., `hero.jpg?preset=photo`)
114
+ - Enables IntelliSense and autocompletion for imagetools directives in your editor
115
+ - Prevents TypeScript errors when importing processed images
116
+ - Works for both TypeScript and JavaScript projects (VS Code uses TypeScript for JS intellisense)
117
+
118
+ **What it enables:**
119
+ ```javascript
120
+ // These imports will have proper typing and editor support
121
+ import heroImage from '$lib/assets/hero.jpg?preset=photo';
122
+ import heroResponsive from '$lib/assets/hero.jpg?preset=photo&responsive';
123
+ ```
124
+
125
+ ### Image Usage
126
+
127
+ With imagetools enabled, you can use images with processing directives:
128
+
129
+ ```javascript
130
+ // Basic usage
131
+ import heroImage from '$lib/assets/hero.jpg?preset=photo';
132
+
133
+ // Responsive images
134
+ import heroResponsive from '$lib/assets/hero.jpg?preset=photo&responsive';
135
+ ```
136
+
137
+ **Available presets:**
138
+ - `default` - AVIF format, 90% quality
139
+ - `photo` - JPG format, 95% quality, returns metadata
140
+ - `render` - JPG format, 95% quality, returns metadata
141
+ - `gradient` - JPG format, 95% quality, returns metadata
142
+ - `drawing` - AVIF format, 90% quality, returns metadata
143
+ - `savedata` - AVIF format, 85% quality, returns metadata
144
+ - `blur` - AVIF format, 50% quality with blur effect, returns metadata
145
+
146
+ ## Migration from Direct Config
147
+
148
+ ### Before
149
+ ```javascript
150
+ // vite.config.js
151
+ import { defineConfig } from 'vitest/config';
152
+ import { sveltekit } from '@sveltejs/kit/vite';
153
+ import { imagetools } from 'vite-imagetools';
154
+ import { readFileSync } from 'fs';
155
+ import { resolve } from 'path';
156
+
157
+ import {
158
+ generateDefaultDirectives,
159
+ generateResponseConfigs
160
+ } from '@hkdigital/lib-sveltekit/config/imagetools-config.js';
161
+
162
+ const packageJson = JSON.parse(
163
+ readFileSync(resolve('./package.json'), 'utf-8')
164
+ );
165
+
166
+ export default defineConfig({
167
+ plugins: [
168
+ sveltekit(),
169
+ imagetools({
170
+ defaultDirectives: generateDefaultDirectives(),
171
+ resolveConfigs: generateResponseConfigs()
172
+ })
173
+ ],
174
+ define: {
175
+ 'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version),
176
+ 'import.meta.env.VITE_BUILD_TIMESTAMP': JSON.stringify(new Date().toISOString())
177
+ },
178
+ test: {
179
+ include: [
180
+ 'src/**/*.{test,spec}.{js,ts}',
181
+ 'src/**/*.svelte.{test,spec}.{js,ts}'
182
+ ]
183
+ }
184
+ });
185
+ ```
186
+
187
+ ### After
188
+ ```javascript
189
+ // vite.config.js
190
+ import { defineConfig } from 'vitest/config';
191
+ import { sveltekit } from '@sveltejs/kit/vite';
192
+ import { generateViteConfig } from '@hkdigital/lib-sveltekit/config/vite.js';
193
+
194
+ export default defineConfig(
195
+ await generateViteConfig()
196
+ );
197
+ ```