@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
package/dist/network/README.md
CHANGED
|
@@ -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
|
```
|