@hkdigital/lib-core 0.3.1
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 +149 -0
- package/dist/assets/autospuiten/car-paint-picker/army-green.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/electric-blue.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/lemon-yellow.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/opaque-purple.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/rusty.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/sunset-orange.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker/tomato-red.jpg +0 -0
- package/dist/assets/autospuiten/car-paint-picker.d.ts +17 -0
- package/dist/assets/autospuiten/car-paint-picker.js +41 -0
- package/dist/assets/autospuiten/labels.d.ts +7 -0
- package/dist/assets/autospuiten/labels.js +7 -0
- package/dist/classes/cache/IndexedDbCache.d.ts +216 -0
- package/dist/classes/cache/IndexedDbCache.js +1407 -0
- package/dist/classes/cache/MemoryResponseCache.d.ts +106 -0
- package/dist/classes/cache/MemoryResponseCache.js +138 -0
- package/dist/classes/cache/index.d.ts +3 -0
- package/dist/classes/cache/index.js +5 -0
- package/dist/classes/cache/typedef.d.ts +67 -0
- package/dist/classes/cache/typedef.js +41 -0
- package/dist/classes/data/IterableTree.d.ts +51 -0
- package/dist/classes/data/IterableTree.js +243 -0
- package/dist/classes/data/Selector.d.ts +30 -0
- package/dist/classes/data/Selector.js +190 -0
- package/dist/classes/data/index.d.ts +2 -0
- package/dist/classes/data/index.js +2 -0
- package/dist/classes/events/EventEmitter.d.ts +142 -0
- package/dist/classes/events/EventEmitter.js +275 -0
- package/dist/classes/events/index.d.ts +1 -0
- package/dist/classes/events/index.js +2 -0
- package/dist/classes/index.d.ts +4 -0
- package/dist/classes/index.js +4 -0
- package/dist/classes/logging/Logger.d.ts +78 -0
- package/dist/classes/logging/Logger.js +210 -0
- package/dist/classes/logging/constants.d.ts +12 -0
- package/dist/classes/logging/constants.js +16 -0
- package/dist/classes/logging/index.d.ts +2 -0
- package/dist/classes/logging/index.js +4 -0
- package/dist/classes/logging/typedef.d.ts +34 -0
- package/dist/classes/logging/typedef.js +17 -0
- package/dist/classes/promise/HkPromise.d.ts +121 -0
- package/dist/classes/promise/HkPromise.js +377 -0
- package/dist/classes/promise/index.d.ts +1 -0
- package/dist/classes/promise/index.js +1 -0
- package/dist/classes/services/ServiceBase.d.ts +163 -0
- package/dist/classes/services/ServiceBase.js +463 -0
- package/dist/classes/services/ServiceManager.d.ts +179 -0
- package/dist/classes/services/ServiceManager.js +614 -0
- package/dist/classes/services/index.d.ts +4 -0
- package/dist/classes/services/index.js +5 -0
- package/dist/classes/services/service-states.d.ts +159 -0
- package/dist/classes/services/service-states.js +205 -0
- package/dist/classes/services/typedef.d.ts +247 -0
- package/dist/classes/services/typedef.js +179 -0
- package/dist/classes/stores/SubscribersCount.d.ts +39 -0
- package/dist/classes/stores/SubscribersCount.js +107 -0
- package/dist/classes/stores/index.d.ts +1 -0
- package/dist/classes/stores/index.js +1 -0
- package/dist/classes/streams/LogTransformStream.d.ts +4 -0
- package/dist/classes/streams/LogTransformStream.js +19 -0
- package/dist/classes/streams/ServerEventsStore.d.ts +22 -0
- package/dist/classes/streams/ServerEventsStore.js +110 -0
- package/dist/classes/streams/TimeStampSource.d.ts +13 -0
- package/dist/classes/streams/TimeStampSource.js +26 -0
- package/dist/classes/streams/index.d.ts +3 -0
- package/dist/classes/streams/index.js +3 -0
- package/dist/classes/svelte/audio/AudioLoader.svelte.d.ts +30 -0
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -0
- package/dist/classes/svelte/audio/AudioScene.svelte.d.ts +74 -0
- package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -0
- package/dist/classes/svelte/audio/mocks.d.ts +7 -0
- package/dist/classes/svelte/audio/mocks.js +35 -0
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.d.ts +50 -0
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -0
- package/dist/classes/svelte/finite-state-machine/index.d.ts +1 -0
- package/dist/classes/svelte/finite-state-machine/index.js +1 -0
- package/dist/classes/svelte/image/ImageLoader.svelte.d.ts +19 -0
- package/dist/classes/svelte/image/ImageLoader.svelte.js +45 -0
- package/dist/classes/svelte/image/ImageScene.svelte.d.ts +78 -0
- package/dist/classes/svelte/image/ImageScene.svelte.js +249 -0
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.d.ts +43 -0
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -0
- package/dist/classes/svelte/image/index.d.ts +2 -0
- package/dist/classes/svelte/image/index.js +4 -0
- package/dist/classes/svelte/image/mocks.d.ts +7 -0
- package/dist/classes/svelte/image/mocks.js +35 -0
- package/dist/classes/svelte/image/typedef.d.ts +16 -0
- package/dist/classes/svelte/image/typedef.js +8 -0
- package/dist/classes/svelte/index.d.ts +9 -0
- package/dist/classes/svelte/index.js +14 -0
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.d.ts +12 -0
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -0
- package/dist/classes/svelte/loading-state-machine/constants.d.ts +12 -0
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -0
- package/dist/classes/svelte/loading-state-machine/index.d.ts +2 -0
- package/dist/classes/svelte/loading-state-machine/index.js +3 -0
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.d.ts +91 -0
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -0
- package/dist/classes/svelte/network-loader/constants.d.ts +2 -0
- package/dist/classes/svelte/network-loader/constants.js +3 -0
- package/dist/classes/svelte/network-loader/index.d.ts +2 -0
- package/dist/classes/svelte/network-loader/index.js +3 -0
- package/dist/classes/svelte/network-loader/mocks.d.ts +7 -0
- package/dist/classes/svelte/network-loader/mocks.js +30 -0
- package/dist/classes/svelte/network-loader/typedef.d.ts +7 -0
- package/dist/classes/svelte/network-loader/typedef.js +8 -0
- package/dist/components/area/HkArea.svelte +49 -0
- package/dist/components/area/HkArea.svelte.d.ts +26 -0
- package/dist/components/area/HkGridArea.svelte +77 -0
- package/dist/components/area/HkGridArea.svelte.d.ts +42 -0
- package/dist/components/area/index.d.ts +2 -0
- package/dist/components/area/index.js +2 -0
- package/dist/components/buttons/button/Button.svelte +82 -0
- package/dist/components/buttons/button/Button.svelte.d.ts +44 -0
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -0
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte.d.ts +16 -0
- package/dist/components/buttons/button-text/TextButton.svelte +21 -0
- package/dist/components/buttons/button-text/TextButton.svelte.d.ts +12 -0
- package/dist/components/buttons/index.d.ts +3 -0
- package/dist/components/buttons/index.js +3 -0
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -0
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +6 -0
- package/dist/components/debug/index.d.ts +1 -0
- package/dist/components/debug/index.js +1 -0
- package/dist/components/drag-drop/DragController.d.ts +20 -0
- package/dist/components/drag-drop/DragController.js +44 -0
- package/dist/components/drag-drop/DragDropContext.svelte +111 -0
- package/dist/components/drag-drop/DragDropContext.svelte.d.ts +18 -0
- package/dist/components/drag-drop/Draggable.svelte +519 -0
- package/dist/components/drag-drop/Draggable.svelte.d.ts +95 -0
- package/dist/components/drag-drop/DropZone.svelte +258 -0
- package/dist/components/drag-drop/DropZone.svelte.d.ts +96 -0
- package/dist/components/drag-drop/DropZoneArea.svelte +119 -0
- package/dist/components/drag-drop/DropZoneArea.svelte.d.ts +90 -0
- package/dist/components/drag-drop/DropZoneList.svelte +125 -0
- package/dist/components/drag-drop/DropZoneList.svelte.d.ts +92 -0
- package/dist/components/drag-drop/actions.d.ts +9 -0
- package/dist/components/drag-drop/actions.js +26 -0
- package/dist/components/drag-drop/drag-state.svelte.d.ts +97 -0
- package/dist/components/drag-drop/drag-state.svelte.js +322 -0
- package/dist/components/drag-drop/index.d.ts +6 -0
- package/dist/components/drag-drop/index.js +7 -0
- package/dist/components/drag-drop/util.d.ts +0 -0
- package/dist/components/drag-drop/util.js +85 -0
- package/dist/components/hkdev/blocks/TextBlock.svelte +47 -0
- package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +24 -0
- package/dist/components/hkdev/buttons/CheckButton.svelte +63 -0
- package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +34 -0
- package/dist/components/icons/HkIcon.svelte +86 -0
- package/dist/components/icons/HkIcon.svelte.d.ts +22 -0
- package/dist/components/icons/HkTabIcon.svelte +116 -0
- package/dist/components/icons/HkTabIcon.svelte.d.ts +40 -0
- package/dist/components/icons/SteezeIcon.svelte +97 -0
- package/dist/components/icons/SteezeIcon.svelte.d.ts +22 -0
- package/dist/components/icons/index.d.ts +4 -0
- package/dist/components/icons/index.js +6 -0
- package/dist/components/icons/typedef.d.ts +13 -0
- package/dist/components/icons/typedef.js +16 -0
- package/dist/components/index.d.ts +0 -0
- package/dist/components/index.js +2 -0
- package/dist/components/inputs/index.d.ts +1 -0
- package/dist/components/inputs/index.js +1 -0
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -0
- package/dist/components/inputs/text-input/TextInput.svelte +223 -0
- package/dist/components/inputs/text-input/TextInput.svelte.d.ts +56 -0
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -0
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -0
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte.d.ts +26 -0
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -0
- package/dist/components/inputs/text-input/assets/IconValid.svelte.d.ts +26 -0
- package/dist/components/layout/grid-layers/GridLayers.svelte +63 -0
- package/dist/components/layout/grid-layers/GridLayers.svelte.d.ts +26 -0
- package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
- package/dist/components/layout/grid-layers/util.d.ts +19 -0
- package/dist/components/layout/grid-layers/util.js +74 -0
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.js +1 -0
- package/dist/components/panels/index.d.ts +1 -0
- package/dist/components/panels/index.js +1 -0
- package/dist/components/panels/panel/Panel.svelte +43 -0
- package/dist/components/panels/panel/Panel.svelte.d.ts +24 -0
- package/dist/components/rows/index.d.ts +2 -0
- package/dist/components/rows/index.js +3 -0
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -0
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +26 -0
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -0
- package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +26 -0
- package/dist/components/tab-bar/HkTabBar.state.svelte.d.ts +54 -0
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -0
- package/dist/components/tab-bar/HkTabBar.svelte +74 -0
- package/dist/components/tab-bar/HkTabBar.svelte.d.ts +34 -0
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.d.ts +19 -0
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -0
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -0
- package/dist/components/tab-bar/HkTabBarSelector.svelte.d.ts +36 -0
- package/dist/components/tab-bar/index.d.ts +5 -0
- package/dist/components/tab-bar/index.js +17 -0
- package/dist/components/tab-bar/typedef.d.ts +8 -0
- package/dist/components/tab-bar/typedef.js +11 -0
- package/dist/config/imagetools-config.d.ts +26 -0
- package/dist/config/imagetools-config.js +189 -0
- package/dist/config/imagetools.d.ts +72 -0
- package/dist/constants/bases.d.ts +10 -0
- package/dist/constants/bases.js +13 -0
- package/dist/constants/errors/api.d.ts +10 -0
- package/dist/constants/errors/api.js +9 -0
- package/dist/constants/errors/generic.d.ts +20 -0
- package/dist/constants/errors/generic.js +20 -0
- package/dist/constants/errors/http.d.ts +16 -0
- package/dist/constants/errors/http.js +16 -0
- package/dist/constants/errors/index.d.ts +4 -0
- package/dist/constants/errors/index.js +4 -0
- package/dist/constants/errors/jwt.d.ts +8 -0
- package/dist/constants/errors/jwt.js +5 -0
- package/dist/constants/http/headers.d.ts +5 -0
- package/dist/constants/http/headers.js +6 -0
- package/dist/constants/http/index.d.ts +2 -0
- package/dist/constants/http/index.js +2 -0
- package/dist/constants/http/methods.d.ts +7 -0
- package/dist/constants/http/methods.js +14 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/mime/application.d.ts +3 -0
- package/dist/constants/mime/application.js +5 -0
- package/dist/constants/mime/audio.d.ts +10 -0
- package/dist/constants/mime/audio.js +13 -0
- package/dist/constants/mime/image.d.ts +3 -0
- package/dist/constants/mime/image.js +3 -0
- package/dist/constants/mime/index.d.ts +4 -0
- package/dist/constants/mime/index.js +4 -0
- package/dist/constants/mime/text.d.ts +2 -0
- package/dist/constants/mime/text.js +2 -0
- package/dist/constants/regexp/index.d.ts +3 -0
- package/dist/constants/regexp/index.js +31 -0
- package/dist/constants/regexp/inspiratie.js__ +95 -0
- package/dist/constants/regexp/text.d.ts +47 -0
- package/dist/constants/regexp/text.js +49 -0
- package/dist/constants/regexp/user.d.ts +6 -0
- package/dist/constants/regexp/user.js +33 -0
- package/dist/constants/regexp/web.d.ts +1 -0
- package/dist/constants/regexp/web.js +3 -0
- package/dist/constants/state-labels/drag-states.d.ts +5 -0
- package/dist/constants/state-labels/drag-states.js +6 -0
- package/dist/constants/state-labels/drop-states.d.ts +4 -0
- package/dist/constants/state-labels/drop-states.js +6 -0
- package/dist/constants/state-labels/input-states.d.ts +8 -0
- package/dist/constants/state-labels/input-states.js +11 -0
- package/dist/constants/state-labels/submit-states.d.ts +4 -0
- package/dist/constants/state-labels/submit-states.js +4 -0
- package/dist/constants/time.d.ts +18 -0
- package/dist/constants/time.js +28 -0
- package/dist/css/utilities.css +43 -0
- package/dist/design/design-config.d.ts +157 -0
- package/dist/design/design-config.js +73 -0
- package/dist/design/tailwind-theme-extend.d.ts +23 -0
- package/dist/design/tailwind-theme-extend.js +158 -0
- package/dist/features/button-group/ButtonGroup.svelte +82 -0
- package/dist/features/button-group/ButtonGroup.svelte.d.ts +34 -0
- package/dist/features/button-group/typedef.d.ts +7 -0
- package/dist/features/button-group/typedef.js +10 -0
- package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -0
- package/dist/features/compare-left-right/CompareLeftRight.svelte.d.ts +18 -0
- package/dist/features/compare-left-right/index.d.ts +1 -0
- package/dist/features/compare-left-right/index.js +1 -0
- package/dist/features/game-box/GameBox.svelte +577 -0
- package/dist/features/game-box/GameBox.svelte.d.ts +140 -0
- package/dist/features/game-box/gamebox.util.d.ts +32 -0
- package/dist/features/game-box/gamebox.util.js +83 -0
- package/dist/features/hk-app-layout/HkAppLayout.state.svelte.d.ts +6 -0
- package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -0
- package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -0
- package/dist/features/hk-app-layout/HkAppLayout.svelte.d.ts +19 -0
- package/dist/features/image-box/ImageBox.svelte +210 -0
- package/dist/features/image-box/ImageBox.svelte.d.ts +38 -0
- package/dist/features/image-box/index.d.ts +4 -0
- package/dist/features/image-box/index.js +5 -0
- package/dist/features/image-box/typedef.d.ts +4 -0
- package/dist/features/image-box/typedef.js +32 -0
- package/dist/features/index.d.ts +11 -0
- package/dist/features/index.js +23 -0
- package/dist/features/presenter/ImageSlide.svelte +64 -0
- package/dist/features/presenter/ImageSlide.svelte.d.ts +36 -0
- package/dist/features/presenter/Presenter.state.svelte.d.ts +74 -0
- package/dist/features/presenter/Presenter.state.svelte.js +638 -0
- package/dist/features/presenter/Presenter.svelte +142 -0
- package/dist/features/presenter/Presenter.svelte.d.ts +18 -0
- package/dist/features/presenter/constants.d.ts +5 -0
- package/dist/features/presenter/constants.js +7 -0
- package/dist/features/presenter/index.d.ts +6 -0
- package/dist/features/presenter/index.js +10 -0
- package/dist/features/presenter/typedef.d.ts +92 -0
- package/dist/features/presenter/typedef.js +106 -0
- package/dist/features/presenter/util.d.ts +63 -0
- package/dist/features/presenter/util.js +210 -0
- package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -0
- package/dist/features/virtual-viewport/VirtualViewport.svelte.d.ts +42 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/dist/logging/adapters/console.d.ts +48 -0
- package/dist/logging/adapters/console.js +114 -0
- package/dist/logging/adapters/pino.d.ts +25 -0
- package/dist/logging/adapters/pino.js +60 -0
- package/dist/logging/constants.d.ts +1 -0
- package/dist/logging/constants.js +1 -0
- package/dist/logging/factories/client.d.ts +10 -0
- package/dist/logging/factories/client.js +21 -0
- package/dist/logging/factories/server.d.ts +10 -0
- package/dist/logging/factories/server.js +22 -0
- package/dist/logging/factories/universal.d.ts +9 -0
- package/dist/logging/factories/universal.js +23 -0
- package/dist/logging/index.d.ts +5 -0
- package/dist/logging/index.js +8 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/validate-url.d.ts +30 -0
- package/dist/schemas/validate-url.js +180 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/logger.d.ts +25 -0
- package/dist/server/logger.js +94 -0
- package/dist/states/index.d.ts +1 -0
- package/dist/states/index.js +1 -0
- package/dist/states/navigation.svelte.d.ts +23 -0
- package/dist/states/navigation.svelte.js +55 -0
- package/dist/stores/index.d.ts +1 -0
- package/dist/stores/index.js +1 -0
- package/dist/stores/theme.d.ts +28 -0
- package/dist/stores/theme.js +80 -0
- package/dist/themes/hkdev/components/blocks/text-block.css +34 -0
- package/dist/themes/hkdev/components/boxes/game-box.css +11 -0
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -0
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -0
- package/dist/themes/hkdev/components/buttons/button.css +146 -0
- package/dist/themes/hkdev/components/buttons/skip-button.css +5 -0
- package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -0
- package/dist/themes/hkdev/components/drag-drop/drop-zone.css +58 -0
- package/dist/themes/hkdev/components/icons/icon-steeze.css +16 -0
- package/dist/themes/hkdev/components/inputs/text-input.css +102 -0
- package/dist/themes/hkdev/components/panels/panel.css +25 -0
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +4 -0
- package/dist/themes/hkdev/components/rows/panel-row-2.css +5 -0
- package/dist/themes/hkdev/components.css +29 -0
- package/dist/themes/hkdev/debug.css +2 -0
- package/dist/themes/hkdev/global/layout.css +32 -0
- package/dist/themes/hkdev/global/on-colors.css +32 -0
- package/dist/themes/hkdev/globals.css +4 -0
- package/dist/themes/hkdev/responsive.css +12 -0
- package/dist/themes/hkdev/theme-ext.d.ts +4 -0
- package/dist/themes/hkdev/theme-ext.js +12 -0
- package/dist/themes/hkdev/theme.css +219 -0
- package/dist/themes/index.d.ts +1 -0
- package/dist/themes/index.js +1 -0
- package/dist/typedef/context.d.ts +3 -0
- package/dist/typedef/context.js +6 -0
- package/dist/typedef/drag.d.ts +29 -0
- package/dist/typedef/drag.js +25 -0
- package/dist/typedef/drop.d.ts +15 -0
- package/dist/typedef/drop.js +12 -0
- package/dist/typedef/image.d.ts +12 -0
- package/dist/typedef/image.js +38 -0
- package/dist/typedef/index.d.ts +4 -0
- package/dist/typedef/index.js +4 -0
- package/dist/util/array/index.d.ts +183 -0
- package/dist/util/array/index.js +436 -0
- package/dist/util/bases/base58.d.ts +58 -0
- package/dist/util/bases/base58.js +262 -0
- package/dist/util/bases/index.d.ts +1 -0
- package/dist/util/bases/index.js +1 -0
- package/dist/util/compare/index.d.ts +68 -0
- package/dist/util/compare/index.js +247 -0
- package/dist/util/css/css-vars.d.ts +24 -0
- package/dist/util/css/css-vars.js +83 -0
- package/dist/util/css/index.d.ts +1 -0
- package/dist/util/css/index.js +1 -0
- package/dist/util/design-system/components/states.d.ts +15 -0
- package/dist/util/design-system/components/states.js +22 -0
- package/dist/util/design-system/css/clamp.d.ts +17 -0
- package/dist/util/design-system/css/clamp.js +66 -0
- package/dist/util/design-system/css/root-design-vars.d.ts +77 -0
- package/dist/util/design-system/css/root-design-vars.js +102 -0
- package/dist/util/design-system/index.d.ts +5 -0
- package/dist/util/design-system/index.js +5 -0
- package/dist/util/design-system/layout/scaling.d.ts +98 -0
- package/dist/util/design-system/layout/scaling.js +228 -0
- package/dist/util/design-system/skeleton.d.ts +41 -0
- package/dist/util/design-system/skeleton.js +208 -0
- package/dist/util/design-system/tailwind.d.ts +183 -0
- package/dist/util/design-system/tailwind.js +288 -0
- package/dist/util/env/index.d.ts +1 -0
- package/dist/util/env/index.js +9 -0
- package/dist/util/exceptions/index.d.ts +15 -0
- package/dist/util/exceptions/index.js +23 -0
- package/dist/util/expect/arrays.d.ts +30 -0
- package/dist/util/expect/arrays.js +47 -0
- package/dist/util/expect/index.d.ts +103 -0
- package/dist/util/expect/index.js +259 -0
- package/dist/util/expect/primitives.d.ts +30 -0
- package/dist/util/expect/primitives.js +55 -0
- package/dist/util/expect/url.d.ts +32 -0
- package/dist/util/expect/url.js +60 -0
- package/dist/util/function/index.d.ts +34 -0
- package/dist/util/function/index.js +218 -0
- package/dist/util/geo/index.d.ts +10 -0
- package/dist/util/geo/index.js +26 -0
- package/dist/util/http/caching.d.ts +28 -0
- package/dist/util/http/caching.js +263 -0
- package/dist/util/http/errors.d.ts +18 -0
- package/dist/util/http/errors.js +97 -0
- package/dist/util/http/headers.d.ts +40 -0
- package/dist/util/http/headers.js +75 -0
- package/dist/util/http/http-request.d.ts +267 -0
- package/dist/util/http/http-request.js +578 -0
- package/dist/util/http/index.d.ts +6 -0
- package/dist/util/http/index.js +22 -0
- package/dist/util/http/json-request.d.ts +84 -0
- package/dist/util/http/json-request.js +224 -0
- package/dist/util/http/mocks.d.ts +20 -0
- package/dist/util/http/mocks.js +65 -0
- package/dist/util/http/response.d.ts +125 -0
- package/dist/util/http/response.js +294 -0
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/util/http/typedef.d.ts +184 -0
- package/dist/util/http/typedef.js +93 -0
- package/dist/util/http/url.d.ts +25 -0
- package/dist/util/http/url.js +52 -0
- package/dist/util/image/index.d.ts +25 -0
- package/dist/util/image/index.js +86 -0
- package/dist/util/index.d.ts +3 -0
- package/dist/util/index.js +3 -0
- package/dist/util/is/index.d.ts +68 -0
- package/dist/util/is/index.js +140 -0
- package/dist/util/iterate/index.d.ts +131 -0
- package/dist/util/iterate/index.js +234 -0
- package/dist/util/object/index.d.ts +326 -0
- package/dist/util/object/index.js +1361 -0
- package/dist/util/singleton/index.d.ts +34 -0
- package/dist/util/singleton/index.js +97 -0
- package/dist/util/string/array-path.d.ts +15 -0
- package/dist/util/string/array-path.js +75 -0
- package/dist/util/string/convert.d.ts +22 -0
- package/dist/util/string/convert.js +54 -0
- package/dist/util/string/fs.d.ts +55 -0
- package/dist/util/string/fs.js +226 -0
- package/dist/util/string/index.d.ts +5 -0
- package/dist/util/string/index.js +5 -0
- package/dist/util/string/interpolate.d.ts +22 -0
- package/dist/util/string/interpolate.js +61 -0
- package/dist/util/string/pad.d.ts +8 -0
- package/dist/util/string/pad.js +10 -0
- package/dist/util/svelte/index.d.ts +3 -0
- package/dist/util/svelte/index.js +4 -0
- package/dist/util/svelte/loading/loading-tracker.svelte.d.ts +31 -0
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -0
- package/dist/util/svelte/observe/index.d.ts +10 -0
- package/dist/util/svelte/observe/index.js +49 -0
- package/dist/util/svelte/state-context/index.d.ts +18 -0
- package/dist/util/svelte/state-context/index.js +117 -0
- package/dist/util/svelte/wait/index.d.ts +15 -0
- package/dist/util/svelte/wait/index.js +38 -0
- package/dist/util/sveltekit/index.d.ts +1 -0
- package/dist/util/sveltekit/index.js +1 -0
- package/dist/util/sveltekit/route-folders/index.d.ts +28 -0
- package/dist/util/sveltekit/route-folders/index.js +101 -0
- package/dist/util/time/index.d.ts +108 -0
- package/dist/util/time/index.js +323 -0
- package/dist/util/unique/index.d.ts +81 -0
- package/dist/util/unique/index.js +249 -0
- package/dist/valibot/date.js__ +10 -0
- package/dist/valibot/index.d.ts +4 -0
- package/dist/valibot/index.js +9 -0
- package/dist/valibot/url.d.ts +26 -0
- package/dist/valibot/url.js +95 -0
- package/dist/valibot/user.d.ts +6 -0
- package/dist/valibot/user.js +23 -0
- package/dist/zod/all.d.ts +6 -0
- package/dist/zod/all.js +33 -0
- package/dist/zod/generic.d.ts +6 -0
- package/dist/zod/generic.js +11 -0
- package/dist/zod/javascript.d.ts +8 -0
- package/dist/zod/javascript.js +32 -0
- package/dist/zod/user.d.ts +9 -0
- package/dist/zod/user.js +16 -0
- package/dist/zod/web.d.ts +21 -0
- package/dist/zod/web.js +52 -0
- package/package.json +133 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { METHOD_GET, METHOD_POST } from '../../constants/http/methods.js';
|
|
2
|
+
|
|
3
|
+
import { APPLICATION_JSON } from '../../constants/mime/application.js';
|
|
4
|
+
import { CONTENT_TYPE } from '../../constants/http/headers.js';
|
|
5
|
+
import { ResponseError } from '../../constants/errors/index.js';
|
|
6
|
+
|
|
7
|
+
import * as expect from '../expect/index.js';
|
|
8
|
+
|
|
9
|
+
import { toURL } from './url.js';
|
|
10
|
+
import { httpRequest } from './http-request.js';
|
|
11
|
+
import { waitForAndCheckResponse } from './response.js';
|
|
12
|
+
|
|
13
|
+
const ACCEPT = 'accept';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Make a GET request to fetch JSON encoded data
|
|
17
|
+
*
|
|
18
|
+
* This function performs a GET request and expects a JSON response from the server.
|
|
19
|
+
* It handles common error cases and parses the JSON response.
|
|
20
|
+
*
|
|
21
|
+
* @param {import('./typedef').JsonGetOptions} options
|
|
22
|
+
* Request configuration options
|
|
23
|
+
*
|
|
24
|
+
* @returns {Promise<any>} Parsed JSON data
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // Basic JSON GET request
|
|
28
|
+
* try {
|
|
29
|
+
* const data = await jsonGet({
|
|
30
|
+
* url: 'https://api.example.com/users/123'
|
|
31
|
+
* });
|
|
32
|
+
* console.log(data); // { id: 123, name: "John Doe", ... }
|
|
33
|
+
* } catch (error) {
|
|
34
|
+
* console.error('Failed to fetch user data:', error.message);
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // JSON GET request with parameters
|
|
39
|
+
* const data = await jsonGet({
|
|
40
|
+
* url: 'https://api.example.com/search',
|
|
41
|
+
* urlSearchParams: new URLSearchParams({ q: 'search term' }),
|
|
42
|
+
* withCredentials: true
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // Using advanced options
|
|
47
|
+
* const data = await jsonGet({
|
|
48
|
+
* url: 'https://api.example.com/data',
|
|
49
|
+
* timeoutMs: 5000,
|
|
50
|
+
* requestHandler: ({ abort }) => {
|
|
51
|
+
* // Store abort function
|
|
52
|
+
* window.abortDataRequest = abort;
|
|
53
|
+
* }
|
|
54
|
+
* });
|
|
55
|
+
*/
|
|
56
|
+
export async function jsonGet(options) {
|
|
57
|
+
// Extract specific parameters needed for this function
|
|
58
|
+
const {
|
|
59
|
+
url: rawUrl,
|
|
60
|
+
urlSearchParams,
|
|
61
|
+
headers,
|
|
62
|
+
withCredentials,
|
|
63
|
+
...otherOptions
|
|
64
|
+
} = options;
|
|
65
|
+
|
|
66
|
+
const url = toURL(rawUrl);
|
|
67
|
+
|
|
68
|
+
// Apply JSON-specific defaults
|
|
69
|
+
const jsonHeaders = headers || {};
|
|
70
|
+
jsonHeaders[ACCEPT] = APPLICATION_JSON;
|
|
71
|
+
|
|
72
|
+
// Create request with all options
|
|
73
|
+
const responsePromise = httpRequest({
|
|
74
|
+
method: METHOD_GET,
|
|
75
|
+
url,
|
|
76
|
+
urlSearchParams,
|
|
77
|
+
headers: jsonHeaders,
|
|
78
|
+
withCredentials,
|
|
79
|
+
...otherOptions // Pass through any other options
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const response = await waitForAndCheckResponse(responsePromise, url);
|
|
83
|
+
|
|
84
|
+
let parsedResponse;
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
//
|
|
88
|
+
// @note when security on the client side fails, an `opaque` response
|
|
89
|
+
// is returned by the browser (empty body) -> parsing fails
|
|
90
|
+
// (use CORS to fix this)
|
|
91
|
+
//
|
|
92
|
+
parsedResponse = await response.json();
|
|
93
|
+
} catch (e) {
|
|
94
|
+
throw new ResponseError(
|
|
95
|
+
`Failed to JSON decode server response from [${decodeURI(url.href)}]`,
|
|
96
|
+
{
|
|
97
|
+
cause: e
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (parsedResponse.error) {
|
|
103
|
+
throw new ResponseError(
|
|
104
|
+
`Server returned response error message [${parsedResponse.error}]`
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return parsedResponse;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Make a POST request to fetch JSON encoded data
|
|
113
|
+
*
|
|
114
|
+
* This function performs a POST request with JSON data and expects a JSON
|
|
115
|
+
* response from the server. It handles common error cases and parses the JSON response.
|
|
116
|
+
*
|
|
117
|
+
* @param {import('./typedef').JsonPostOptions} options
|
|
118
|
+
* Request configuration options
|
|
119
|
+
*
|
|
120
|
+
* @returns {Promise<any>} Parsed JSON data
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* // Basic JSON POST request
|
|
124
|
+
* try {
|
|
125
|
+
* const newUser = {
|
|
126
|
+
* name: "Jane Smith",
|
|
127
|
+
* email: "jane@example.com"
|
|
128
|
+
* };
|
|
129
|
+
*
|
|
130
|
+
* const data = await jsonPost({
|
|
131
|
+
* url: 'https://api.example.com/users',
|
|
132
|
+
* body: JSON.stringify(newUser)
|
|
133
|
+
* });
|
|
134
|
+
*
|
|
135
|
+
* console.log('Created user with ID:', data.id);
|
|
136
|
+
* } catch (error) {
|
|
137
|
+
* console.error('Failed to create user:', error.message);
|
|
138
|
+
* }
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* // JSON POST with authentication and timeout
|
|
142
|
+
* const data = await jsonPost({
|
|
143
|
+
* url: 'https://api.example.com/protected/resource',
|
|
144
|
+
* body: JSON.stringify({ action: 'update' }),
|
|
145
|
+
* headers: {
|
|
146
|
+
* 'authorization': 'Bearer ' + token
|
|
147
|
+
* },
|
|
148
|
+
* withCredentials: true,
|
|
149
|
+
* timeoutMs: 5000
|
|
150
|
+
* });
|
|
151
|
+
*/
|
|
152
|
+
export async function jsonPost(options) {
|
|
153
|
+
// Extract specific parameters needed for this function
|
|
154
|
+
const {
|
|
155
|
+
url: rawUrl,
|
|
156
|
+
body,
|
|
157
|
+
urlSearchParams,
|
|
158
|
+
headers,
|
|
159
|
+
withCredentials,
|
|
160
|
+
...otherOptions
|
|
161
|
+
} = options;
|
|
162
|
+
|
|
163
|
+
const url = toURL(rawUrl);
|
|
164
|
+
|
|
165
|
+
// Apply JSON-specific defaults and validation
|
|
166
|
+
expect.defined(body);
|
|
167
|
+
|
|
168
|
+
const jsonHeaders = headers || {};
|
|
169
|
+
jsonHeaders[ACCEPT] = APPLICATION_JSON;
|
|
170
|
+
jsonHeaders[CONTENT_TYPE] = APPLICATION_JSON;
|
|
171
|
+
|
|
172
|
+
// Check if body is a string when using application/json
|
|
173
|
+
if (
|
|
174
|
+
jsonHeaders[CONTENT_TYPE] === APPLICATION_JSON &&
|
|
175
|
+
typeof body !== 'string'
|
|
176
|
+
) {
|
|
177
|
+
throw new Error(
|
|
178
|
+
`Trying to send request with [content-type:${APPLICATION_JSON}], ` +
|
|
179
|
+
'but body is not a (JSON encoded) string.'
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Create request with all options
|
|
184
|
+
const responsePromise = httpRequest({
|
|
185
|
+
method: METHOD_POST,
|
|
186
|
+
url,
|
|
187
|
+
body,
|
|
188
|
+
urlSearchParams,
|
|
189
|
+
headers: jsonHeaders,
|
|
190
|
+
withCredentials,
|
|
191
|
+
...otherOptions // Pass through any other options
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const response = await waitForAndCheckResponse(responsePromise, url);
|
|
195
|
+
|
|
196
|
+
let parsedResponse;
|
|
197
|
+
|
|
198
|
+
try {
|
|
199
|
+
//
|
|
200
|
+
// @note when security on the client side fails, an `opaque` response
|
|
201
|
+
// is returned by the browser (empty body) -> parsing fails
|
|
202
|
+
// (use CORS to fix this)
|
|
203
|
+
//
|
|
204
|
+
parsedResponse = await response.json();
|
|
205
|
+
} catch (e) {
|
|
206
|
+
throw new ResponseError(
|
|
207
|
+
`Failed to JSON decode server response from [${decodeURI(url.href)}]`,
|
|
208
|
+
{
|
|
209
|
+
cause: e
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (parsedResponse.error) {
|
|
215
|
+
//
|
|
216
|
+
// @note this is API specific, but it's quite logical
|
|
217
|
+
//
|
|
218
|
+
throw new ResponseError(
|
|
219
|
+
`Server returned response error message [${parsedResponse.error}]`
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return parsedResponse;
|
|
224
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a response value that can be used by a mocked fetch function
|
|
3
|
+
*
|
|
4
|
+
* @template T
|
|
5
|
+
*
|
|
6
|
+
* @param {T} data
|
|
7
|
+
*
|
|
8
|
+
* @returns {{ json: () => Promise<T>}}
|
|
9
|
+
*/
|
|
10
|
+
export function createJsonFetchResponse<T>(data: T): {
|
|
11
|
+
json: () => Promise<T>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Create a response value that can be used by a mocked fetch function
|
|
15
|
+
*
|
|
16
|
+
* @param {ArrayBuffer} arrayBuffer
|
|
17
|
+
*
|
|
18
|
+
* @returns {Response}
|
|
19
|
+
*/
|
|
20
|
+
export function createStreamedResponse(arrayBuffer: ArrayBuffer): Response;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CONTENT_TYPE, CONTENT_LENGTH } from '../../constants/http/index.js';
|
|
2
|
+
|
|
3
|
+
import { OCTET_STREAM } from '../../constants/mime/index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a response value that can be used by a mocked fetch function
|
|
7
|
+
*
|
|
8
|
+
* @template T
|
|
9
|
+
*
|
|
10
|
+
* @param {T} data
|
|
11
|
+
*
|
|
12
|
+
* @returns {{ json: () => Promise<T>}}
|
|
13
|
+
*/
|
|
14
|
+
export function createJsonFetchResponse(data /* , options */) {
|
|
15
|
+
return { json: () => new Promise((resolve) => resolve(data)) };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create a response value that can be used by a mocked fetch function
|
|
20
|
+
*
|
|
21
|
+
* @param {ArrayBuffer} arrayBuffer
|
|
22
|
+
*
|
|
23
|
+
* @returns {Response}
|
|
24
|
+
*/
|
|
25
|
+
export function createStreamedResponse(arrayBuffer /*, options */) {
|
|
26
|
+
const byteLength = arrayBuffer.byteLength;
|
|
27
|
+
const chunkSize = Math.ceil(byteLength / 10);
|
|
28
|
+
|
|
29
|
+
const body = new ReadableStream({
|
|
30
|
+
start(controller) {
|
|
31
|
+
let offset = 0;
|
|
32
|
+
|
|
33
|
+
function pushChunk() {
|
|
34
|
+
if (offset >= byteLength) {
|
|
35
|
+
controller.close();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Calculate the size of the current chunk
|
|
40
|
+
const currentChunkSize = Math.min(chunkSize, byteLength - offset);
|
|
41
|
+
|
|
42
|
+
// Create a new ArrayBuffer for this chunk
|
|
43
|
+
const chunk = arrayBuffer.slice(offset, offset + currentChunkSize);
|
|
44
|
+
|
|
45
|
+
controller.enqueue(chunk);
|
|
46
|
+
offset += currentChunkSize;
|
|
47
|
+
|
|
48
|
+
// Schedule next chunk
|
|
49
|
+
setTimeout(pushChunk, 0);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Start pushing chunks
|
|
53
|
+
pushChunk();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const response = new Response(body, {
|
|
58
|
+
headers: new Headers({
|
|
59
|
+
[CONTENT_TYPE]: OCTET_STREAM,
|
|
60
|
+
[CONTENT_LENGTH]: String(byteLength)
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Callback function that reports progress of data loading
|
|
3
|
+
*
|
|
4
|
+
* @callback progressCallback
|
|
5
|
+
*
|
|
6
|
+
* @param {object} _
|
|
7
|
+
* @param {number} _.bytesLoaded - Number of bytes loaded so far
|
|
8
|
+
* @param {number} _.size - Total size of the response in bytes (0 if unknown)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Check if the response status is ok (in 200-299 range)
|
|
12
|
+
* This function examines HTTP status codes and throws appropriate errors for
|
|
13
|
+
* non-successful responses, with special handling for 401 Unauthorized.
|
|
14
|
+
*
|
|
15
|
+
* @param {object} response - Fetch Response object to check
|
|
16
|
+
*
|
|
17
|
+
* @param {string} url - The URL used for the request (for error messages)
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} When response has 401 status with authorization details
|
|
20
|
+
* @throws {ResponseError} When response has other non-successful status codes
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // Check if response was successful
|
|
24
|
+
* try {
|
|
25
|
+
* await expectResponseOk(response, 'https://api.example.com/data');
|
|
26
|
+
* // Process successful response here
|
|
27
|
+
* } catch (error) {
|
|
28
|
+
* // Handle specific error types
|
|
29
|
+
* if (error.message.includes('401')) {
|
|
30
|
+
* // Handle unauthorized error
|
|
31
|
+
* }
|
|
32
|
+
* }
|
|
33
|
+
*/
|
|
34
|
+
export function expectResponseOk(response: object, url: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the response size from the content-length response header
|
|
37
|
+
*
|
|
38
|
+
* @param {Response} response - Fetch Response object
|
|
39
|
+
*
|
|
40
|
+
* @returns {number} Response size in bytes, or 0 if content-length is not set
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const response = await fetch('https://example.com/large-file.zip');
|
|
44
|
+
* const size = getResponseSize(response);
|
|
45
|
+
* console.log(`Download size: ${size} bytes`);
|
|
46
|
+
*/
|
|
47
|
+
export function getResponseSize(response: Response): number;
|
|
48
|
+
/**
|
|
49
|
+
* Wait for a response and check if the response is ok
|
|
50
|
+
* This function awaits a response promise and performs error checking,
|
|
51
|
+
* wrapping network errors in a standardized ResponseError format.
|
|
52
|
+
*
|
|
53
|
+
* @param {Promise<Response>} responsePromise - Promise that resolves to a Response
|
|
54
|
+
*
|
|
55
|
+
* @param {string|URL} url - URL used for the request (for error messages)
|
|
56
|
+
*
|
|
57
|
+
* @throws {ResponseError} When a network error occurs or response is not ok
|
|
58
|
+
*
|
|
59
|
+
* @returns {Promise<Response>} The response if successful
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* // Handle a fetch promise with proper error handling
|
|
63
|
+
* const responsePromise = fetch('https://api.example.com/data');
|
|
64
|
+
* try {
|
|
65
|
+
* const response = await waitForAndCheckResponse(
|
|
66
|
+
* responsePromise,
|
|
67
|
+
* 'https://api.example.com/data'
|
|
68
|
+
* );
|
|
69
|
+
* // Process response
|
|
70
|
+
* } catch (error) {
|
|
71
|
+
* // Handle standardized ResponseError
|
|
72
|
+
* console.error(error.message);
|
|
73
|
+
* }
|
|
74
|
+
*/
|
|
75
|
+
export function waitForAndCheckResponse(responsePromise: Promise<Response>, url: string | URL): Promise<Response>;
|
|
76
|
+
/**
|
|
77
|
+
* Load response body as ArrayBuffer with progress monitoring and abort capability
|
|
78
|
+
*
|
|
79
|
+
* This function reads a response body stream chunk by chunk, with optional
|
|
80
|
+
* progress reporting. It provides an abort mechanism to cancel an in-progress
|
|
81
|
+
* download.
|
|
82
|
+
*
|
|
83
|
+
* @param {Response} response - Fetch Response object to read
|
|
84
|
+
*
|
|
85
|
+
* @param {progressCallback} [onProgress] - Optional callback for progress updates
|
|
86
|
+
*
|
|
87
|
+
* @returns {{
|
|
88
|
+
* bufferPromise: Promise<ArrayBuffer>,
|
|
89
|
+
* abort: () => void
|
|
90
|
+
* }} Object containing the buffer promise and abort function
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* // Download a file with progress monitoring and abort capability
|
|
94
|
+
* const response = await fetch('https://example.com/large-file.zip');
|
|
95
|
+
*
|
|
96
|
+
* const { bufferPromise, abort } = loadResponseBuffer(
|
|
97
|
+
* response,
|
|
98
|
+
* ({ bytesLoaded, size }) => {
|
|
99
|
+
* // Update progress UI
|
|
100
|
+
* const percent = size ? Math.round((bytesLoaded / size) * 100) : 0;
|
|
101
|
+
* console.log(`Downloaded ${bytesLoaded} bytes (${percent}%)`);
|
|
102
|
+
* }
|
|
103
|
+
* );
|
|
104
|
+
*
|
|
105
|
+
* // To abort the download:
|
|
106
|
+
* // abort();
|
|
107
|
+
*
|
|
108
|
+
* try {
|
|
109
|
+
* const buffer = await bufferPromise;
|
|
110
|
+
* // Process the complete buffer
|
|
111
|
+
* } catch (error) {
|
|
112
|
+
* console.error('Download failed or was aborted', error);
|
|
113
|
+
* }
|
|
114
|
+
*/
|
|
115
|
+
export function loadResponseBuffer(response: Response, onProgress?: progressCallback): {
|
|
116
|
+
bufferPromise: Promise<ArrayBuffer>;
|
|
117
|
+
abort: () => void;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Callback function that reports progress of data loading
|
|
121
|
+
*/
|
|
122
|
+
export type progressCallback = (_: {
|
|
123
|
+
bytesLoaded: number;
|
|
124
|
+
size: number;
|
|
125
|
+
}) => any;
|