@hkdigital/lib-sveltekit 0.2.19 → 0.2.21
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 +135 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/cache/IndexedDbCache.js +1407 -1407
- package/dist/classes/cache/MemoryResponseCache.js +138 -138
- package/dist/classes/cache/index.js +5 -5
- package/dist/classes/cache/typedef.js +41 -41
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/events/EventEmitter.js +275 -275
- package/dist/classes/events/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/logging/Logger.js +210 -210
- package/dist/classes/logging/constants.js +16 -16
- package/dist/classes/logging/index.js +4 -4
- package/dist/classes/logging/typedef.js +17 -17
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/services/ServiceBase.js +463 -463
- package/dist/classes/services/ServiceManager.js +614 -614
- package/dist/classes/services/index.js +5 -5
- package/dist/classes/services/service-states.js +205 -205
- package/dist/classes/services/typedef.js +179 -179
- 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 +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -324
- package/dist/classes/svelte/audio/mocks.js +35 -35
- 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/image/ImageLoader.svelte.js +45 -45
- package/dist/classes/svelte/image/ImageScene.svelte.js +249 -249
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/index.js +14 -14
- 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/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -338
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/index.js +2 -2
- package/dist/components/buttons/button/Button.svelte +82 -82
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/index.js +3 -3
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/components/debug/index.js +1 -1
- package/dist/components/drag-drop/DragController.js +44 -44
- package/dist/components/drag-drop/DragDropContext.svelte +111 -111
- package/dist/components/drag-drop/Draggable.svelte +519 -519
- package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
- package/dist/components/drag-drop/DropZoneList.svelte +125 -125
- package/dist/components/drag-drop/{DropZone.svelte → Dropzone.svelte} +258 -258
- package/dist/components/drag-drop/actions.js +26 -26
- package/dist/components/drag-drop/drag-state.svelte.js +322 -322
- package/dist/components/drag-drop/index.js +7 -7
- package/dist/components/drag-drop/util.js +85 -85
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/icons/HkIcon.svelte +86 -86
- package/dist/components/icons/HkTabIcon.svelte +116 -116
- package/dist/components/icons/SteezeIcon.svelte +97 -97
- package/dist/components/icons/index.js +6 -6
- package/dist/components/icons/typedef.js +16 -16
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +223 -223
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/grid-layers/GridLayers.svelte +63 -63
- package/dist/components/layout/grid-layers/util.js +74 -74
- package/dist/components/layout/index.js +1 -1
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/panel/Panel.svelte +43 -43
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +11 -11
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +72 -72
- package/dist/constants/bases.js +13 -13
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.d.ts +5 -0
- package/dist/constants/http/methods.js +14 -2
- package/dist/constants/index.js +3 -3
- 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/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/drag-states.js +6 -6
- package/dist/constants/state-labels/drop-states.js +6 -6
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/features/button-group/ButtonGroup.svelte +82 -82
- package/dist/features/button-group/typedef.js +10 -10
- package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/features/compare-left-right/index.js +1 -1
- package/dist/features/game-box/GameBox.svelte +577 -577
- package/dist/features/game-box/gamebox.util.js +83 -83
- package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/features/image-box/ImageBox.svelte +210 -210
- package/dist/features/image-box/index.js +5 -5
- package/dist/features/image-box/typedef.js +32 -32
- package/dist/features/index.js +23 -23
- package/dist/features/presenter/ImageSlide.svelte +64 -64
- package/dist/features/presenter/Presenter.state.svelte.js +638 -638
- package/dist/features/presenter/Presenter.svelte +142 -142
- package/dist/features/presenter/constants.js +7 -7
- package/dist/features/presenter/index.js +10 -10
- package/dist/features/presenter/typedef.js +106 -106
- package/dist/features/presenter/util.js +210 -210
- package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/logging/adapters/console.js +114 -114
- package/dist/logging/adapters/pino.js +60 -60
- package/dist/logging/constants.js +1 -1
- package/dist/logging/factories/client.js +21 -21
- package/dist/logging/factories/server.js +22 -22
- package/dist/logging/factories/universal.js +23 -23
- package/dist/logging/index.js +8 -8
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- 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/themes/hkdev/components/blocks/text-block.css +34 -41
- package/dist/themes/hkdev/components/boxes/game-box.css +11 -12
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/themes/hkdev/components/buttons/button.css +146 -146
- package/dist/themes/hkdev/components/buttons/skip-button.css +5 -6
- package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
- package/dist/themes/hkdev/components/drag-drop/drop-zone.css +58 -48
- package/dist/themes/hkdev/components/icons/icon-steeze.css +16 -22
- package/dist/themes/hkdev/components/inputs/text-input.css +102 -104
- package/dist/themes/hkdev/components/panels/panel.css +25 -27
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +4 -6
- package/dist/themes/hkdev/components/rows/panel-row-2.css +5 -7
- package/dist/themes/hkdev/components.css +29 -53
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +32 -39
- package/dist/themes/hkdev/global/on-colors.css +32 -53
- package/dist/themes/hkdev/globals.css +4 -11
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +12 -15
- package/dist/themes/hkdev/theme.css +219 -0
- package/dist/themes/index.d.ts +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/typedef/context.js +6 -6
- package/dist/typedef/drag.js +25 -25
- package/dist/typedef/drop.js +12 -12
- package/dist/typedef/image.js +38 -38
- package/dist/typedef/index.js +4 -4
- 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/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +102 -102
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +228 -228
- package/dist/util/design-system/skeleton.js +208 -208
- package/dist/util/design-system/tailwind.js +288 -288
- package/dist/util/env/index.js +9 -9
- 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/http/caching.js +263 -263
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +75 -75
- package/dist/util/http/http-request.d.ts +164 -0
- package/dist/util/http/http-request.js +578 -379
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +224 -224
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +294 -294
- package/dist/util/http/typedef.js +93 -93
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- 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 +323 -323
- package/dist/util/unique/index.js +249 -249
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +132 -112
- package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
- package/dist/themes/hkdev/theme.d.ts +0 -234
- package/dist/themes/hkdev/theme.js +0 -235
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
package/dist/util/http/errors.js
CHANGED
@@ -1,97 +1,97 @@
|
|
1
|
-
import * as expect from '../expect/index.js';
|
2
|
-
|
3
|
-
import { CONTENT_TYPE } from '../../constants/http/index.js';
|
4
|
-
|
5
|
-
import { APPLICATION_JSON } from '../../constants/mime/index.js';
|
6
|
-
|
7
|
-
/**
|
8
|
-
* Try to get error information from the server error response
|
9
|
-
*
|
10
|
-
* This method tries to get error info from JSON responses. The
|
11
|
-
* error info may be set as one of the following properties
|
12
|
-
*
|
13
|
-
* - message
|
14
|
-
* - error
|
15
|
-
* - messages (array)
|
16
|
-
* - errors (array)
|
17
|
-
*
|
18
|
-
* Otherwise tris method will use the plain text response
|
19
|
-
*
|
20
|
-
* @param {object} response
|
21
|
-
*
|
22
|
-
* @returns {Error} error
|
23
|
-
*/
|
24
|
-
export async function getErrorFromResponse(response) {
|
25
|
-
expect.object(response);
|
26
|
-
|
27
|
-
let message;
|
28
|
-
let details = null;
|
29
|
-
|
30
|
-
const headers = response.headers;
|
31
|
-
const contentType = headers.get(CONTENT_TYPE);
|
32
|
-
|
33
|
-
let content;
|
34
|
-
|
35
|
-
if (contentType === APPLICATION_JSON) {
|
36
|
-
content = await response.json();
|
37
|
-
|
38
|
-
if (content instanceof Object) {
|
39
|
-
if (typeof content.message === 'string') {
|
40
|
-
// Use string propery 'message' as error message
|
41
|
-
message = content.message;
|
42
|
-
} else if (typeof content.error === 'string') {
|
43
|
-
// Use string propery 'error' as error message
|
44
|
-
message = content.error;
|
45
|
-
} else {
|
46
|
-
if (Array.isArray(content.errors)) {
|
47
|
-
// Use array propery 'errors' for error messages
|
48
|
-
|
49
|
-
details = content.errors;
|
50
|
-
} else if (Array.isArray(content.messages)) {
|
51
|
-
// Use array propery 'messages' for error messages
|
52
|
-
|
53
|
-
details = content.messages;
|
54
|
-
}
|
55
|
-
|
56
|
-
if (details) {
|
57
|
-
// Multiple error messages (array) =>
|
58
|
-
// create string respresentation by combining
|
59
|
-
// text parts from all error messages
|
60
|
-
const tmp = [];
|
61
|
-
|
62
|
-
for (const current of details) {
|
63
|
-
if (typeof current === 'string') {
|
64
|
-
// Error is a string
|
65
|
-
tmp.push(current);
|
66
|
-
} else if (current instanceof Object && typeof current.message === 'string') {
|
67
|
-
// Error is an object with string property 'message'
|
68
|
-
tmp.push(current.message);
|
69
|
-
} else {
|
70
|
-
// JSON stringify everything else
|
71
|
-
tmp.push(JSON.stringify(current));
|
72
|
-
}
|
73
|
-
} // end for
|
74
|
-
|
75
|
-
message = tmp.join(', ');
|
76
|
-
}
|
77
|
-
}
|
78
|
-
}
|
79
|
-
} else {
|
80
|
-
const tmp = await response.text();
|
81
|
-
|
82
|
-
if (tmp.length) {
|
83
|
-
message = tmp;
|
84
|
-
} else {
|
85
|
-
message = response.statusText;
|
86
|
-
}
|
87
|
-
}
|
88
|
-
// console.log( "message", message );
|
89
|
-
|
90
|
-
const error = new Error(message);
|
91
|
-
|
92
|
-
if (details) {
|
93
|
-
error.details = details;
|
94
|
-
}
|
95
|
-
|
96
|
-
return error;
|
97
|
-
}
|
1
|
+
import * as expect from '../expect/index.js';
|
2
|
+
|
3
|
+
import { CONTENT_TYPE } from '../../constants/http/index.js';
|
4
|
+
|
5
|
+
import { APPLICATION_JSON } from '../../constants/mime/index.js';
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Try to get error information from the server error response
|
9
|
+
*
|
10
|
+
* This method tries to get error info from JSON responses. The
|
11
|
+
* error info may be set as one of the following properties
|
12
|
+
*
|
13
|
+
* - message
|
14
|
+
* - error
|
15
|
+
* - messages (array)
|
16
|
+
* - errors (array)
|
17
|
+
*
|
18
|
+
* Otherwise tris method will use the plain text response
|
19
|
+
*
|
20
|
+
* @param {object} response
|
21
|
+
*
|
22
|
+
* @returns {Error} error
|
23
|
+
*/
|
24
|
+
export async function getErrorFromResponse(response) {
|
25
|
+
expect.object(response);
|
26
|
+
|
27
|
+
let message;
|
28
|
+
let details = null;
|
29
|
+
|
30
|
+
const headers = response.headers;
|
31
|
+
const contentType = headers.get(CONTENT_TYPE);
|
32
|
+
|
33
|
+
let content;
|
34
|
+
|
35
|
+
if (contentType === APPLICATION_JSON) {
|
36
|
+
content = await response.json();
|
37
|
+
|
38
|
+
if (content instanceof Object) {
|
39
|
+
if (typeof content.message === 'string') {
|
40
|
+
// Use string propery 'message' as error message
|
41
|
+
message = content.message;
|
42
|
+
} else if (typeof content.error === 'string') {
|
43
|
+
// Use string propery 'error' as error message
|
44
|
+
message = content.error;
|
45
|
+
} else {
|
46
|
+
if (Array.isArray(content.errors)) {
|
47
|
+
// Use array propery 'errors' for error messages
|
48
|
+
|
49
|
+
details = content.errors;
|
50
|
+
} else if (Array.isArray(content.messages)) {
|
51
|
+
// Use array propery 'messages' for error messages
|
52
|
+
|
53
|
+
details = content.messages;
|
54
|
+
}
|
55
|
+
|
56
|
+
if (details) {
|
57
|
+
// Multiple error messages (array) =>
|
58
|
+
// create string respresentation by combining
|
59
|
+
// text parts from all error messages
|
60
|
+
const tmp = [];
|
61
|
+
|
62
|
+
for (const current of details) {
|
63
|
+
if (typeof current === 'string') {
|
64
|
+
// Error is a string
|
65
|
+
tmp.push(current);
|
66
|
+
} else if (current instanceof Object && typeof current.message === 'string') {
|
67
|
+
// Error is an object with string property 'message'
|
68
|
+
tmp.push(current.message);
|
69
|
+
} else {
|
70
|
+
// JSON stringify everything else
|
71
|
+
tmp.push(JSON.stringify(current));
|
72
|
+
}
|
73
|
+
} // end for
|
74
|
+
|
75
|
+
message = tmp.join(', ');
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
} else {
|
80
|
+
const tmp = await response.text();
|
81
|
+
|
82
|
+
if (tmp.length) {
|
83
|
+
message = tmp;
|
84
|
+
} else {
|
85
|
+
message = response.statusText;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
// console.log( "message", message );
|
89
|
+
|
90
|
+
const error = new Error(message);
|
91
|
+
|
92
|
+
if (details) {
|
93
|
+
error.details = details;
|
94
|
+
}
|
95
|
+
|
96
|
+
return error;
|
97
|
+
}
|
@@ -1,75 +1,75 @@
|
|
1
|
-
import * as expect from '../expect/index.js';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Set headers in an existing `Headers` object
|
5
|
-
*
|
6
|
-
* This function adds or updates headers in an existing Headers object.
|
7
|
-
* Existing headers with the same name will be overwritten.
|
8
|
-
* The supplied `Headers` object will be updated in place.
|
9
|
-
*
|
10
|
-
* @param {Headers} target
|
11
|
-
* Headers object to set the extra headers in
|
12
|
-
*
|
13
|
-
* @param {null|object|[string, string][]} [pairs]
|
14
|
-
* Headers to add, can be null, an object of name-value pairs,
|
15
|
-
* or an array of [name, value] pairs
|
16
|
-
*
|
17
|
-
* @throws {Error} If target is not a Headers object
|
18
|
-
* @throws {Error} If pairs is a Headers object
|
19
|
-
* @throws {Error} If pairs is not null, object, or array
|
20
|
-
* @throws {Error} If any header name or value is empty
|
21
|
-
*
|
22
|
-
* @example
|
23
|
-
* // Add headers from an object
|
24
|
-
* const headers = new Headers();
|
25
|
-
* setRequestHeaders(headers, {
|
26
|
-
* 'content-type': 'application/json',
|
27
|
-
* 'accept': 'application/json'
|
28
|
-
* });
|
29
|
-
*
|
30
|
-
* @example
|
31
|
-
* // Add headers from an array of pairs
|
32
|
-
* const headers = new Headers();
|
33
|
-
* setRequestHeaders(headers, [
|
34
|
-
* ['content-type', 'application/json'],
|
35
|
-
* ['authorization', 'Bearer token123']
|
36
|
-
* ]);
|
37
|
-
*
|
38
|
-
* @example
|
39
|
-
* // Passing null is valid and does nothing
|
40
|
-
* setRequestHeaders(headers, null);
|
41
|
-
*/
|
42
|
-
export function setRequestHeaders(target, pairs) {
|
43
|
-
if (!(target instanceof Headers)) {
|
44
|
-
throw new Error('Invalid parameter [target] (expected Headers object)');
|
45
|
-
}
|
46
|
-
|
47
|
-
// expect.objectNoArray(pairs);
|
48
|
-
|
49
|
-
if (pairs instanceof Headers) {
|
50
|
-
throw new Error(
|
51
|
-
'Invalid parameter [pairs] (should not be a Headers object)');
|
52
|
-
}
|
53
|
-
|
54
|
-
if (!pairs) {
|
55
|
-
return;
|
56
|
-
}
|
57
|
-
|
58
|
-
if (typeof pairs !== 'object') {
|
59
|
-
throw new Error('Invalid value for parameter [pairs]');
|
60
|
-
}
|
61
|
-
|
62
|
-
if (!Array.isArray(pairs)) {
|
63
|
-
pairs = Object.entries(pairs);
|
64
|
-
}
|
65
|
-
|
66
|
-
for (const [name, value] of pairs) {
|
67
|
-
expect.notEmptyString(name);
|
68
|
-
expect.notEmptyString(value);
|
69
|
-
|
70
|
-
// @note Headers should be encoded lowercase in HTTP2
|
71
|
-
const nameLower = name.toLowerCase();
|
72
|
-
|
73
|
-
target.set(nameLower, value); /* overwrites existing value */
|
74
|
-
}
|
75
|
-
}
|
1
|
+
import * as expect from '../expect/index.js';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Set headers in an existing `Headers` object
|
5
|
+
*
|
6
|
+
* This function adds or updates headers in an existing Headers object.
|
7
|
+
* Existing headers with the same name will be overwritten.
|
8
|
+
* The supplied `Headers` object will be updated in place.
|
9
|
+
*
|
10
|
+
* @param {Headers} target
|
11
|
+
* Headers object to set the extra headers in
|
12
|
+
*
|
13
|
+
* @param {null|object|[string, string][]} [pairs]
|
14
|
+
* Headers to add, can be null, an object of name-value pairs,
|
15
|
+
* or an array of [name, value] pairs
|
16
|
+
*
|
17
|
+
* @throws {Error} If target is not a Headers object
|
18
|
+
* @throws {Error} If pairs is a Headers object
|
19
|
+
* @throws {Error} If pairs is not null, object, or array
|
20
|
+
* @throws {Error} If any header name or value is empty
|
21
|
+
*
|
22
|
+
* @example
|
23
|
+
* // Add headers from an object
|
24
|
+
* const headers = new Headers();
|
25
|
+
* setRequestHeaders(headers, {
|
26
|
+
* 'content-type': 'application/json',
|
27
|
+
* 'accept': 'application/json'
|
28
|
+
* });
|
29
|
+
*
|
30
|
+
* @example
|
31
|
+
* // Add headers from an array of pairs
|
32
|
+
* const headers = new Headers();
|
33
|
+
* setRequestHeaders(headers, [
|
34
|
+
* ['content-type', 'application/json'],
|
35
|
+
* ['authorization', 'Bearer token123']
|
36
|
+
* ]);
|
37
|
+
*
|
38
|
+
* @example
|
39
|
+
* // Passing null is valid and does nothing
|
40
|
+
* setRequestHeaders(headers, null);
|
41
|
+
*/
|
42
|
+
export function setRequestHeaders(target, pairs) {
|
43
|
+
if (!(target instanceof Headers)) {
|
44
|
+
throw new Error('Invalid parameter [target] (expected Headers object)');
|
45
|
+
}
|
46
|
+
|
47
|
+
// expect.objectNoArray(pairs);
|
48
|
+
|
49
|
+
if (pairs instanceof Headers) {
|
50
|
+
throw new Error(
|
51
|
+
'Invalid parameter [pairs] (should not be a Headers object)');
|
52
|
+
}
|
53
|
+
|
54
|
+
if (!pairs) {
|
55
|
+
return;
|
56
|
+
}
|
57
|
+
|
58
|
+
if (typeof pairs !== 'object') {
|
59
|
+
throw new Error('Invalid value for parameter [pairs]');
|
60
|
+
}
|
61
|
+
|
62
|
+
if (!Array.isArray(pairs)) {
|
63
|
+
pairs = Object.entries(pairs);
|
64
|
+
}
|
65
|
+
|
66
|
+
for (const [name, value] of pairs) {
|
67
|
+
expect.notEmptyString(name);
|
68
|
+
expect.notEmptyString(value);
|
69
|
+
|
70
|
+
// @note Headers should be encoded lowercase in HTTP2
|
71
|
+
const nameLower = name.toLowerCase();
|
72
|
+
|
73
|
+
target.set(nameLower, value); /* overwrites existing value */
|
74
|
+
}
|
75
|
+
}
|
@@ -62,6 +62,170 @@ export function httpGet(options: import("./typedef").HttpRequestOptions): Promis
|
|
62
62
|
* });
|
63
63
|
*/
|
64
64
|
export function httpPost(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
65
|
+
/**
|
66
|
+
* Make a PUT request
|
67
|
+
*
|
68
|
+
* This function performs an HTTP PUT request, typically used for updating
|
69
|
+
* or replacing resources. It supports optional body, headers, credentials,
|
70
|
+
* and timeout functionality.
|
71
|
+
*
|
72
|
+
* @param {import('./typedef').HttpRequestOptions} options
|
73
|
+
* Request configuration options
|
74
|
+
*
|
75
|
+
* @returns {Promise<Response>} Response promise
|
76
|
+
*
|
77
|
+
* @example
|
78
|
+
* // Update a user resource
|
79
|
+
* const response = await httpPut({
|
80
|
+
* url: 'https://api.example.com/users/123',
|
81
|
+
* body: JSON.stringify({ name: 'John Doe', email: 'john.doe@example.com' }),
|
82
|
+
* headers: { 'content-type': 'application/json' }
|
83
|
+
* });
|
84
|
+
*
|
85
|
+
* @example
|
86
|
+
* // Replace a resource with timeout
|
87
|
+
* const response = await httpPut({
|
88
|
+
* url: 'https://api.example.com/documents/456',
|
89
|
+
* body: documentData,
|
90
|
+
* timeoutMs: 10000 // 10 seconds timeout
|
91
|
+
* });
|
92
|
+
*/
|
93
|
+
export function httpPut(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
94
|
+
/**
|
95
|
+
* Make a DELETE request
|
96
|
+
*
|
97
|
+
* This function performs an HTTP DELETE request, typically used for
|
98
|
+
* removing resources. It supports optional headers, credentials,
|
99
|
+
* and timeout functionality.
|
100
|
+
*
|
101
|
+
* @param {import('./typedef').HttpRequestOptions} options
|
102
|
+
* Request configuration options
|
103
|
+
*
|
104
|
+
* @returns {Promise<Response>} Response promise
|
105
|
+
*
|
106
|
+
* @example
|
107
|
+
* // Delete a user resource
|
108
|
+
* const response = await httpDelete({
|
109
|
+
* url: 'https://api.example.com/users/123'
|
110
|
+
* });
|
111
|
+
*
|
112
|
+
* @example
|
113
|
+
* // Delete with authorization and timeout
|
114
|
+
* const response = await httpDelete({
|
115
|
+
* url: 'https://api.example.com/posts/456',
|
116
|
+
* headers: { 'authorization': 'Bearer token123' },
|
117
|
+
* timeoutMs: 5000
|
118
|
+
* });
|
119
|
+
*/
|
120
|
+
export function httpDelete(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
121
|
+
/**
|
122
|
+
* Make a PATCH request
|
123
|
+
*
|
124
|
+
* This function performs an HTTP PATCH request, typically used for
|
125
|
+
* partial updates to resources. It supports optional body, headers,
|
126
|
+
* credentials, and timeout functionality.
|
127
|
+
*
|
128
|
+
* @param {import('./typedef').HttpRequestOptions} options
|
129
|
+
* Request configuration options
|
130
|
+
*
|
131
|
+
* @returns {Promise<Response>} Response promise
|
132
|
+
*
|
133
|
+
* @example
|
134
|
+
* // Partially update a user's email
|
135
|
+
* const response = await httpPatch({
|
136
|
+
* url: 'https://api.example.com/users/123',
|
137
|
+
* body: JSON.stringify({ email: 'newemail@example.com' }),
|
138
|
+
* headers: { 'content-type': 'application/json' }
|
139
|
+
* });
|
140
|
+
*
|
141
|
+
* @example
|
142
|
+
* // Apply JSON Patch operations
|
143
|
+
* const response = await httpPatch({
|
144
|
+
* url: 'https://api.example.com/documents/456',
|
145
|
+
* body: JSON.stringify([
|
146
|
+
* { op: 'replace', path: '/title', value: 'New Title' },
|
147
|
+
* { op: 'add', path: '/tags/-', value: 'updated' }
|
148
|
+
* ]),
|
149
|
+
* headers: { 'content-type': 'application/json-patch+json' }
|
150
|
+
* });
|
151
|
+
*/
|
152
|
+
export function httpPatch(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
153
|
+
/**
|
154
|
+
* Make an OPTIONS request
|
155
|
+
*
|
156
|
+
* This function performs an HTTP OPTIONS request, typically used for
|
157
|
+
* discovering allowed methods on a resource or for CORS preflight requests.
|
158
|
+
* It supports optional headers, credentials, and timeout functionality.
|
159
|
+
*
|
160
|
+
* @param {import('./typedef').HttpRequestOptions} options
|
161
|
+
* Request configuration options
|
162
|
+
*
|
163
|
+
* @returns {Promise<Response>} Response promise
|
164
|
+
*
|
165
|
+
* @example
|
166
|
+
* // Check allowed methods on a resource
|
167
|
+
* const response = await httpOptions({
|
168
|
+
* url: 'https://api.example.com/users/123'
|
169
|
+
* });
|
170
|
+
*
|
171
|
+
* const allowedMethods = response.headers.get('Allow');
|
172
|
+
* console.log('Allowed methods:', allowedMethods);
|
173
|
+
*
|
174
|
+
* @example
|
175
|
+
* // CORS preflight check
|
176
|
+
* const response = await httpOptions({
|
177
|
+
* url: 'https://api.example.com/data',
|
178
|
+
* headers: {
|
179
|
+
* 'Access-Control-Request-Method': 'POST',
|
180
|
+
* 'Access-Control-Request-Headers': 'Content-Type'
|
181
|
+
* }
|
182
|
+
* });
|
183
|
+
*/
|
184
|
+
export function httpOptions(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
185
|
+
/**
|
186
|
+
* Make a HEAD request
|
187
|
+
*
|
188
|
+
* This function performs an HTTP HEAD request, which returns only the
|
189
|
+
* headers of a response without the body. It's useful for checking
|
190
|
+
* resource existence, getting metadata, or cache validation.
|
191
|
+
*
|
192
|
+
* @param {import('./typedef').HttpRequestOptions} options
|
193
|
+
* Request configuration options
|
194
|
+
*
|
195
|
+
* @returns {Promise<Response>} Response promise (with empty body)
|
196
|
+
*
|
197
|
+
* @example
|
198
|
+
* // Check if a resource exists
|
199
|
+
* const response = await httpHead({
|
200
|
+
* url: 'https://api.example.com/users/123'
|
201
|
+
* });
|
202
|
+
*
|
203
|
+
* if (response.ok) {
|
204
|
+
* console.log('User exists');
|
205
|
+
* console.log('Last modified:', response.headers.get('Last-Modified'));
|
206
|
+
* }
|
207
|
+
*
|
208
|
+
* @example
|
209
|
+
* // Get content length without downloading
|
210
|
+
* const response = await httpHead({
|
211
|
+
* url: 'https://api.example.com/large-file.zip'
|
212
|
+
* });
|
213
|
+
*
|
214
|
+
* const contentLength = response.headers.get('Content-Length');
|
215
|
+
* console.log('File size:', contentLength, 'bytes');
|
216
|
+
*
|
217
|
+
* @example
|
218
|
+
* // Cache validation
|
219
|
+
* const response = await httpHead({
|
220
|
+
* url: 'https://api.example.com/data',
|
221
|
+
* headers: { 'If-None-Match': '"cached-etag-value"' }
|
222
|
+
* });
|
223
|
+
*
|
224
|
+
* if (response.status === 304) {
|
225
|
+
* console.log('Cache is still valid');
|
226
|
+
* }
|
227
|
+
*/
|
228
|
+
export function httpHead(options: import("./typedef").HttpRequestOptions): Promise<Response>;
|
65
229
|
/**
|
66
230
|
* Make an HTTP request (low-level function)
|
67
231
|
*
|