@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,173 +1,173 @@
1
- # Network
2
-
3
- Network utilities for HTTP requests, responses, caching, and specialized media loaders.
4
-
5
- ## Quick Start
6
-
7
- ```javascript
8
- import * as http from '$lib/network/http.js';
9
- import * as cache from '$lib/network/cache.js';
10
- import * as loaders from '$lib/network/loaders.js';
11
- ```
12
-
13
- ## HTTP Utilities
14
-
15
- ### Making Requests
16
-
17
- ```javascript
18
- import { httpRequest, jsonRequest } from '$lib/network/http.js';
19
-
20
- // Basic HTTP request
21
- const response = await httpRequest('https://api.example.com/data');
22
-
23
- // JSON request with POST
24
- const result = await jsonRequest('https://api.example.com/users', {
25
- method: 'POST',
26
- body: { name: 'John', email: 'john@example.com' }
27
- });
28
- ```
29
-
30
- ### URL Utilities
31
-
32
- ```javascript
33
- import { toURL, addSearchParams } from '$lib/network/http.js';
34
-
35
- const url = toURL('https://example.com', { page: 1, limit: 10 });
36
- // Result: https://example.com?page=1&limit=10
37
- ```
38
-
39
- ### Headers and Response Handling
40
-
41
- ```javascript
42
- import {
43
- setRequestHeaders,
44
- waitForAndCheckResponse,
45
- getErrorFromResponse
46
- } from '$lib/network/http.js';
47
-
48
- // Set custom headers
49
- const headers = setRequestHeaders({ 'Authorization': 'Bearer token' });
50
-
51
- // Handle response with error checking
52
- const response = await fetch('/api/data');
53
- const result = await waitForAndCheckResponse(response);
54
- ```
55
-
56
- ## Caching
57
-
58
- ### Memory Cache (for temporary storage)
59
-
60
- ```javascript
61
- import { MemoryResponseCache } from '$lib/network/cache.js';
62
-
63
- const cache = new MemoryResponseCache();
64
-
65
- // Store response with 1-hour expiration
66
- const response = await fetch('https://api.example.com/data');
67
- await cache.set('api-data', response, { expiresIn: 3600000 });
68
-
69
- // Retrieve cached response
70
- const cached = await cache.get('api-data');
71
- if (cached) {
72
- console.log('Cached data:', cached.response);
73
- }
74
- ```
75
-
76
- ### IndexedDB Cache (for persistent storage)
77
-
78
- ```javascript
79
- import { IndexedDbCache } from '$lib/network/cache.js';
80
-
81
- const cache = new IndexedDbCache('my-app-cache');
82
-
83
- // Store response persistently
84
- const response = await fetch('https://api.example.com/users');
85
- await cache.set('users-list', response, {
86
- expiresIn: 86400000, // 24 hours
87
- etag: response.headers.get('etag')
88
- });
89
-
90
- // Check if cached version is still valid
91
- const cached = await cache.get('users-list');
92
- if (cached && !cache.isExpired(cached)) {
93
- return cached.response;
94
- }
95
- ```
96
-
97
- ## Media Loaders
98
-
99
- Advanced network-based loaders for media assets with loading state management and streaming support. See the [loaders documentation](./loaders/README.md) for detailed usage examples.
100
-
101
- ```javascript
102
- import { ImageLoader, AudioLoader, ImageScene } from '$lib/network/loaders.js';
103
-
104
- // Load a single image with progress tracking
105
- const imageLoader = new ImageLoader({ imageSource: { src: '/image.jpg' } });
106
- imageLoader.load();
107
-
108
- // Load multiple images as a scene
109
- const scene = new ImageScene();
110
- scene.defineImage({ label: 'hero', imageSource: heroImage });
111
- scene.load();
112
- ```
113
-
114
- ## Network State Management
115
-
116
- For managing loading states across network operations:
117
-
118
- ```javascript
119
- import { NetworkLoader } from '$lib/network/states/index.js';
120
-
121
- // Base class for custom network loaders
122
- class CustomLoader extends NetworkLoader {
123
- // Implementation
124
- }
125
- ```
126
-
127
- ## Available Exports
128
-
129
- ### HTTP (`$lib/network/http.js`)
130
- - `httpRequest()` - Make HTTP requests with configuration
131
- - `jsonRequest()` - Make JSON API requests
132
- - `toURL()` - Convert strings to URL objects with params
133
- - `setRequestHeaders()` - Set and merge request headers
134
- - `waitForAndCheckResponse()` - Handle responses with error checking
135
- - `getErrorFromResponse()` - Extract errors from failed responses
136
- - HTTP constants and error types
137
-
138
- ### Cache (`$lib/network/cache.js`)
139
- - `MemoryResponseCache` - In-memory response caching
140
- - `IndexedDbCache` - Persistent browser storage caching
141
- - Cache-related type definitions
142
-
143
- ### Loaders (`$lib/network/loaders.js`)
144
- - `ImageLoader` - Single image loading with progress tracking
145
- - `ImageVariantsLoader` - Responsive image variants loading
146
- - `ImageScene` - Multi-image loading and management
147
- - `AudioLoader` - Audio data loading and processing
148
- - `AudioScene` - Multi-audio loading and management
149
- - Media utilities and type definitions
150
-
151
- ### States (`$lib/network/states/`)
152
- - `NetworkLoader` - Base class for network-based loaders
153
- - Loading state management and progress tracking
154
-
155
- ## Error Handling
156
-
157
- All HTTP utilities throw structured errors:
158
-
159
- ```javascript
160
- import { httpRequest } from '$lib/network/http.js';
161
-
162
- try {
163
- const response = await httpRequest('/api/data');
164
- } catch (error) {
165
- if (error.name === 'AbortError') {
166
- console.log('Request was cancelled');
167
- } else if (error.name === 'TimeoutError') {
168
- console.log('Request timed out');
169
- } else {
170
- console.log('HTTP error:', error.message);
171
- }
172
- }
1
+ # Network
2
+
3
+ Network utilities for HTTP requests, responses, caching, and specialized media loaders.
4
+
5
+ ## Quick Start
6
+
7
+ ```javascript
8
+ import * as http from '$lib/network/http.js';
9
+ import * as cache from '$lib/network/cache.js';
10
+ import * as loaders from '$lib/network/loaders.js';
11
+ ```
12
+
13
+ ## HTTP Utilities
14
+
15
+ ### Making Requests
16
+
17
+ ```javascript
18
+ import { httpRequest, jsonRequest } from '$lib/network/http.js';
19
+
20
+ // Basic HTTP request
21
+ const response = await httpRequest('https://api.example.com/data');
22
+
23
+ // JSON request with POST
24
+ const result = await jsonRequest('https://api.example.com/users', {
25
+ method: 'POST',
26
+ body: { name: 'John', email: 'john@example.com' }
27
+ });
28
+ ```
29
+
30
+ ### URL Utilities
31
+
32
+ ```javascript
33
+ import { toURL, addSearchParams } from '$lib/network/http.js';
34
+
35
+ const url = toURL('https://example.com', { page: 1, limit: 10 });
36
+ // Result: https://example.com?page=1&limit=10
37
+ ```
38
+
39
+ ### Headers and Response Handling
40
+
41
+ ```javascript
42
+ import {
43
+ setRequestHeaders,
44
+ waitForAndCheckResponse,
45
+ getErrorFromResponse
46
+ } from '$lib/network/http.js';
47
+
48
+ // Set custom headers
49
+ const headers = setRequestHeaders({ 'Authorization': 'Bearer token' });
50
+
51
+ // Handle response with error checking
52
+ const response = await fetch('/api/data');
53
+ const result = await waitForAndCheckResponse(response);
54
+ ```
55
+
56
+ ## Caching
57
+
58
+ ### Memory Cache (for temporary storage)
59
+
60
+ ```javascript
61
+ import { MemoryResponseCache } from '$lib/network/cache.js';
62
+
63
+ const cache = new MemoryResponseCache();
64
+
65
+ // Store response with 1-hour expiration
66
+ const response = await fetch('https://api.example.com/data');
67
+ await cache.set('api-data', response, { expiresIn: 3600000 });
68
+
69
+ // Retrieve cached response
70
+ const cached = await cache.get('api-data');
71
+ if (cached) {
72
+ console.log('Cached data:', cached.response);
73
+ }
74
+ ```
75
+
76
+ ### IndexedDB Cache (for persistent storage)
77
+
78
+ ```javascript
79
+ import { IndexedDbCache } from '$lib/network/cache.js';
80
+
81
+ const cache = new IndexedDbCache('my-app-cache');
82
+
83
+ // Store response persistently
84
+ const response = await fetch('https://api.example.com/users');
85
+ await cache.set('users-list', response, {
86
+ expiresIn: 86400000, // 24 hours
87
+ etag: response.headers.get('etag')
88
+ });
89
+
90
+ // Check if cached version is still valid
91
+ const cached = await cache.get('users-list');
92
+ if (cached && !cache.isExpired(cached)) {
93
+ return cached.response;
94
+ }
95
+ ```
96
+
97
+ ## Media Loaders
98
+
99
+ Advanced network-based loaders for media assets with loading state management and streaming support. See the [loaders documentation](./loaders/README.md) for detailed usage examples.
100
+
101
+ ```javascript
102
+ import { ImageLoader, AudioLoader, ImageScene } from '$lib/network/loaders.js';
103
+
104
+ // Load a single image with progress tracking
105
+ const imageLoader = new ImageLoader({ imageSource: { src: '/image.jpg' } });
106
+ imageLoader.load();
107
+
108
+ // Load multiple images as a scene
109
+ const scene = new ImageScene();
110
+ scene.defineImage({ label: 'hero', imageSource: heroImage });
111
+ scene.load();
112
+ ```
113
+
114
+ ## Network State Management
115
+
116
+ For managing loading states across network operations:
117
+
118
+ ```javascript
119
+ import { NetworkLoader } from '$lib/network/states/index.js';
120
+
121
+ // Base class for custom network loaders
122
+ class CustomLoader extends NetworkLoader {
123
+ // Implementation
124
+ }
125
+ ```
126
+
127
+ ## Available Exports
128
+
129
+ ### HTTP (`$lib/network/http.js`)
130
+ - `httpRequest()` - Make HTTP requests with configuration
131
+ - `jsonRequest()` - Make JSON API requests
132
+ - `toURL()` - Convert strings to URL objects with params
133
+ - `setRequestHeaders()` - Set and merge request headers
134
+ - `waitForAndCheckResponse()` - Handle responses with error checking
135
+ - `getErrorFromResponse()` - Extract errors from failed responses
136
+ - HTTP constants and error types
137
+
138
+ ### Cache (`$lib/network/cache.js`)
139
+ - `MemoryResponseCache` - In-memory response caching
140
+ - `IndexedDbCache` - Persistent browser storage caching
141
+ - Cache-related type definitions
142
+
143
+ ### Loaders (`$lib/network/loaders.js`)
144
+ - `ImageLoader` - Single image loading with progress tracking
145
+ - `ImageVariantsLoader` - Responsive image variants loading
146
+ - `ImageScene` - Multi-image loading and management
147
+ - `AudioLoader` - Audio data loading and processing
148
+ - `AudioScene` - Multi-audio loading and management
149
+ - Media utilities and type definitions
150
+
151
+ ### States (`$lib/network/states/`)
152
+ - `NetworkLoader` - Base class for network-based loaders
153
+ - Loading state management and progress tracking
154
+
155
+ ## Error Handling
156
+
157
+ All HTTP utilities throw structured errors:
158
+
159
+ ```javascript
160
+ import { httpRequest } from '$lib/network/http.js';
161
+
162
+ try {
163
+ const response = await httpRequest('/api/data');
164
+ } catch (error) {
165
+ if (error.name === 'AbortError') {
166
+ console.log('Request was cancelled');
167
+ } else if (error.name === 'TimeoutError') {
168
+ console.log('Request timed out');
169
+ } else {
170
+ console.log('HTTP error:', error.message);
171
+ }
172
+ }
173
173
  ```