@hkdigital/lib-core 0.3.10 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +149 -149
  2. package/dist/assets/autospuiten/car-paint-picker.d.ts +7 -7
  3. package/dist/assets/autospuiten/car-paint-picker.js +41 -41
  4. package/dist/assets/autospuiten/labels.js +7 -7
  5. package/dist/classes/data/IterableTree.d.ts +13 -6
  6. package/dist/classes/data/IterableTree.js +242 -229
  7. package/dist/classes/data/Selector.js +190 -190
  8. package/dist/classes/data/index.js +2 -2
  9. package/dist/classes/data/typedef.js +9 -9
  10. package/dist/classes/event-emitter/EventEmitter.js +273 -273
  11. package/dist/classes/event-emitter/index.js +2 -2
  12. package/dist/classes/index.js +4 -4
  13. package/dist/classes/promise/HkPromise.d.ts +18 -17
  14. package/dist/classes/promise/HkPromise.js +384 -377
  15. package/dist/classes/promise/index.js +1 -1
  16. package/dist/classes/stores/SubscribersCount.js +107 -107
  17. package/dist/classes/stores/index.js +1 -1
  18. package/dist/classes/streams/LogTransformStream.js +19 -19
  19. package/dist/classes/streams/ServerEventsStore.d.ts +2 -3
  20. package/dist/classes/streams/ServerEventsStore.js +111 -110
  21. package/dist/classes/streams/TimeStampSource.js +26 -26
  22. package/dist/classes/streams/index.js +3 -3
  23. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
  24. package/dist/classes/svelte/finite-state-machine/index.js +1 -1
  25. package/dist/classes/svelte/index.d.ts +0 -8
  26. package/dist/classes/svelte/index.js +11 -14
  27. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  28. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  29. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  30. package/dist/config/README.md +196 -0
  31. package/dist/config/{imagetools-config.js → generators/imagetools.js} +189 -189
  32. package/dist/config/generators/vite.d.ts +47 -0
  33. package/dist/config/generators/vite.js +142 -0
  34. package/dist/config/imagetools.d.ts +72 -72
  35. package/dist/config/vite.d.ts +1 -0
  36. package/dist/config/vite.js +5 -0
  37. package/dist/constants/bases/index.js +13 -13
  38. package/dist/constants/http/headers.js +6 -6
  39. package/dist/constants/http/index.js +2 -2
  40. package/dist/constants/http/methods.js +14 -14
  41. package/dist/constants/index.js +6 -6
  42. package/dist/constants/mime/application.js +5 -5
  43. package/dist/constants/mime/audio.js +13 -13
  44. package/dist/constants/mime/image.js +3 -3
  45. package/dist/constants/mime/index.js +4 -4
  46. package/dist/constants/mime/text.js +2 -2
  47. package/dist/constants/regexp/README.md +95 -0
  48. package/dist/constants/regexp/index.d.ts +1 -1
  49. package/dist/constants/regexp/index.js +31 -31
  50. package/dist/constants/regexp/inspiratie.js__ +95 -95
  51. package/dist/constants/regexp/text.d.ts +3 -3
  52. package/dist/constants/regexp/text.js +49 -49
  53. package/dist/constants/regexp/url.d.ts +1 -0
  54. package/dist/constants/regexp/url.js +3 -0
  55. package/dist/constants/regexp/user.d.ts +0 -1
  56. package/dist/constants/regexp/user.js +29 -33
  57. package/dist/constants/states/drag.js +6 -6
  58. package/dist/constants/states/drop.js +6 -6
  59. package/dist/constants/states/index.js +4 -4
  60. package/dist/constants/states/input.js +11 -11
  61. package/dist/constants/states/submit.js +4 -4
  62. package/dist/constants/time/index.js +28 -28
  63. package/dist/css/utilities.css +43 -43
  64. package/dist/design/README.md +405 -0
  65. package/dist/design/{design-config.js → config/design-config.js} +73 -73
  66. package/dist/{util/design-system/tailwind.js → design/generators/index.js} +288 -288
  67. package/dist/design/index.d.ts +8 -0
  68. package/dist/design/index.js +97 -0
  69. package/dist/{util/design-system → design/plugins}/skeleton.js +208 -208
  70. package/dist/design/tailwind-theme-extend.js +158 -158
  71. package/dist/design/themes/README.md +103 -0
  72. package/dist/{themes → design/themes}/hkdev/components/blocks/text-block.css +34 -34
  73. package/dist/{themes → design/themes}/hkdev/components/boxes/game-box.css +11 -11
  74. package/dist/{themes → design/themes}/hkdev/components/buttons/button-icon-steeze.css +22 -22
  75. package/dist/{themes → design/themes}/hkdev/components/buttons/button-text.css +32 -32
  76. package/dist/{themes → design/themes}/hkdev/components/buttons/button.css +146 -146
  77. package/dist/{themes → design/themes}/hkdev/components/buttons/skip-button.css +5 -5
  78. package/dist/{themes → design/themes}/hkdev/components/drag-drop/draggable.css +73 -73
  79. package/dist/{themes → design/themes}/hkdev/components/drag-drop/drop-zone.css +58 -58
  80. package/dist/{themes → design/themes}/hkdev/components/icons/icon-steeze.css +15 -15
  81. package/dist/{themes → design/themes}/hkdev/components/inputs/text-input.css +102 -102
  82. package/dist/{themes → design/themes}/hkdev/components/panels/panel.css +25 -25
  83. package/dist/{themes → design/themes}/hkdev/components/rows/panel-grid-row.css +4 -4
  84. package/dist/{themes → design/themes}/hkdev/components/rows/panel-row-2.css +5 -5
  85. package/dist/{themes → design/themes}/hkdev/components.css +29 -29
  86. package/dist/design/themes/hkdev/debug.css +2 -0
  87. package/dist/{themes → design/themes}/hkdev/global/layout.css +32 -32
  88. package/dist/{themes → design/themes}/hkdev/global/on-colors.css +32 -32
  89. package/dist/{themes → design/themes}/hkdev/globals.css +3 -3
  90. package/dist/{themes → design/themes}/hkdev/responsive.css +12 -12
  91. package/dist/{themes → design/themes}/hkdev/theme-ext.js +12 -12
  92. package/dist/{themes → design/themes}/hkdev/theme.css +218 -218
  93. package/dist/{util/design-system/css → design/utils}/clamp.js +66 -66
  94. package/dist/{util/design-system/css/root-design-vars.d.ts → design/utils/root-vars.d.ts} +2 -2
  95. package/dist/{util/design-system/css/root-design-vars.js → design/utils/root-vars.js} +102 -102
  96. package/dist/{util/design-system/layout → design/utils}/scaling.js +228 -228
  97. package/dist/{util/design-system/components → design/utils}/states.js +22 -22
  98. package/dist/errors/api.js +9 -9
  99. package/dist/errors/generic.js +20 -20
  100. package/dist/errors/http.js +16 -16
  101. package/dist/errors/index.d.ts +1 -0
  102. package/dist/errors/index.js +5 -4
  103. package/dist/errors/jwt.js +5 -5
  104. package/dist/errors/promise.d.ts +27 -0
  105. package/dist/errors/promise.js +26 -0
  106. package/dist/logging/index.js +7 -7
  107. package/dist/logging/internal/adapters/console.js +114 -114
  108. package/dist/logging/internal/adapters/index.js +2 -2
  109. package/dist/logging/internal/adapters/pino.js +142 -142
  110. package/dist/logging/internal/adapters/typedef.js +10 -10
  111. package/dist/logging/internal/factories/client.js +21 -21
  112. package/dist/logging/internal/factories/server.js +22 -22
  113. package/dist/logging/internal/factories/universal.js +22 -22
  114. package/dist/logging/internal/unified-logger/Logger.js +217 -217
  115. package/dist/logging/internal/unified-logger/constants.js +22 -22
  116. package/dist/logging/internal/unified-logger/index.js +6 -6
  117. package/dist/logging/internal/unified-logger/typedef.js +17 -17
  118. package/dist/network/README.md +173 -0
  119. package/dist/{classes → network}/cache/IndexedDbCache.js +1407 -1407
  120. package/dist/{classes → network}/cache/MemoryResponseCache.js +138 -138
  121. package/dist/{classes → network}/cache/index.js +5 -5
  122. package/dist/{classes → network}/cache/typedef.js +41 -41
  123. package/dist/network/cache.d.ts +3 -0
  124. package/dist/network/cache.js +4 -0
  125. package/dist/{util → network}/http/caching.js +261 -263
  126. package/dist/{util → network}/http/errors.js +97 -97
  127. package/dist/{util → network}/http/headers.js +75 -75
  128. package/dist/{util → network}/http/http-request.js +578 -578
  129. package/dist/{util → network}/http/index.js +22 -22
  130. package/dist/{util → network}/http/json-request.js +224 -224
  131. package/dist/{util → network}/http/mocks.js +65 -65
  132. package/dist/{util → network}/http/response.js +318 -318
  133. package/dist/{util → network}/http/typedef.js +93 -93
  134. package/dist/{util → network}/http/url.js +52 -52
  135. package/dist/network/http.d.ts +6 -0
  136. package/dist/network/http.js +6 -0
  137. package/dist/network/loaders/README.md +255 -0
  138. package/dist/{classes/svelte → network/loaders}/audio/AudioLoader.svelte.d.ts +1 -1
  139. package/dist/{classes/svelte → network/loaders}/audio/AudioLoader.svelte.js +58 -58
  140. package/dist/{classes/svelte → network/loaders}/audio/AudioScene.svelte.js +324 -324
  141. package/dist/{classes/svelte → network/loaders}/audio/mocks.js +35 -35
  142. package/dist/network/loaders/audio.d.ts +2 -0
  143. package/dist/network/loaders/audio.js +2 -0
  144. package/dist/{classes/svelte → network/loaders}/image/ImageLoader.svelte.d.ts +3 -6
  145. package/dist/{classes/svelte → network/loaders}/image/ImageLoader.svelte.js +44 -45
  146. package/dist/{classes/svelte → network/loaders}/image/ImageScene.svelte.d.ts +5 -7
  147. package/dist/{classes/svelte → network/loaders}/image/ImageScene.svelte.js +248 -249
  148. package/dist/{classes/svelte → network/loaders}/image/ImageVariantsLoader.svelte.d.ts +4 -4
  149. package/dist/{classes/svelte → network/loaders}/image/ImageVariantsLoader.svelte.js +150 -152
  150. package/dist/{classes/svelte → network/loaders}/image/index.js +4 -4
  151. package/dist/{classes/svelte → network/loaders}/image/mocks.js +35 -35
  152. package/dist/{classes/svelte → network/loaders}/image/typedef.js +8 -8
  153. package/dist/{util/image → network/loaders/image/utils}/index.d.ts +2 -2
  154. package/dist/{util/image → network/loaders/image/utils}/index.js +86 -86
  155. package/dist/network/loaders/image.d.ts +5 -0
  156. package/dist/network/loaders/image.js +8 -0
  157. package/dist/{typedef/image.js → network/loaders/typedef.js} +38 -38
  158. package/dist/network/loaders.d.ts +2 -0
  159. package/dist/network/loaders.js +2 -0
  160. package/dist/{classes/svelte/network-loader → network/states}/NetworkLoader.svelte.d.ts +1 -1
  161. package/dist/{classes/svelte/network-loader → network/states}/NetworkLoader.svelte.js +338 -338
  162. package/dist/{classes/svelte/network-loader → network/states}/constants.js +3 -3
  163. package/dist/{classes/svelte/network-loader → network/states}/index.js +3 -3
  164. package/dist/{classes/svelte/network-loader → network/states}/mocks.js +30 -30
  165. package/dist/{classes/svelte/network-loader → network/states}/typedef.js +8 -8
  166. package/dist/network/typedef.d.ts +4 -0
  167. package/dist/network/typedef.js +10 -0
  168. package/dist/services/index.js +1 -1
  169. package/dist/services/internal/index.js +8 -8
  170. package/dist/services/internal/service-base/ServiceBase.js +462 -462
  171. package/dist/services/internal/service-base/constants.js +110 -110
  172. package/dist/services/internal/service-base/index.js +3 -3
  173. package/dist/services/internal/service-base/typedef.js +101 -101
  174. package/dist/services/internal/service-manager/ServiceManager.js +608 -608
  175. package/dist/services/internal/service-manager/constants.js +6 -6
  176. package/dist/services/internal/service-manager/typedef.js +90 -90
  177. package/dist/states/index.js +1 -1
  178. package/dist/states/navigation.svelte.js +55 -55
  179. package/dist/stores/index.js +1 -1
  180. package/dist/stores/theme.js +80 -80
  181. package/dist/typedef/context.js +6 -6
  182. package/dist/typedef/drag.js +25 -25
  183. package/dist/typedef/drop.js +12 -12
  184. package/dist/typedef/index.d.ts +0 -1
  185. package/dist/typedef/index.js +4 -4
  186. package/dist/{components → ui/components}/button-group/ButtonGroup.svelte +82 -82
  187. package/dist/{components → ui/components}/button-group/typedef.js +10 -10
  188. package/dist/{components → ui/components}/compare-left-right/CompareLeftRight.svelte +179 -179
  189. package/dist/{components → ui/components}/compare-left-right/index.js +1 -1
  190. package/dist/{components → ui/components}/game-box/GameBox.svelte +577 -577
  191. package/dist/{components → ui/components}/game-box/gamebox.util.js +83 -83
  192. package/dist/ui/components/hk-app-layout/HkAppLayout.state.svelte.d.ts +6 -0
  193. package/dist/{components → ui/components}/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  194. package/dist/{components → ui/components}/hk-app-layout/HkAppLayout.svelte +251 -251
  195. package/dist/{components → ui/components}/image-box/ImageBox.svelte +210 -210
  196. package/dist/{components → ui/components}/image-box/ImageBox.svelte.d.ts +6 -6
  197. package/dist/ui/components/image-box/index.js +5 -0
  198. package/dist/{components → ui/components}/image-box/typedef.js +32 -32
  199. package/dist/{components → ui/components}/index.js +23 -23
  200. package/dist/{components → ui/components}/presenter/ImageSlide.svelte +64 -64
  201. package/dist/{components → ui/components}/presenter/ImageSlide.svelte.d.ts +2 -2
  202. package/dist/{components → ui/components}/presenter/Presenter.state.svelte.d.ts +1 -1
  203. package/dist/{components → ui/components}/presenter/Presenter.state.svelte.js +638 -638
  204. package/dist/{components → ui/components}/presenter/Presenter.svelte +142 -142
  205. package/dist/{components → ui/components}/presenter/constants.js +7 -7
  206. package/dist/{components → ui/components}/presenter/index.js +10 -10
  207. package/dist/{components → ui/components}/presenter/typedef.js +106 -106
  208. package/dist/{components → ui/components}/presenter/util.js +210 -210
  209. package/dist/{components → ui/components}/virtual-viewport/VirtualViewport.svelte +196 -196
  210. package/dist/{primitives → ui/primitives}/area/HkArea.svelte +49 -49
  211. package/dist/{primitives → ui/primitives}/area/HkGridArea.svelte +77 -77
  212. package/dist/{primitives → ui/primitives}/area/index.js +2 -2
  213. package/dist/{primitives → ui/primitives}/buttons/button/Button.svelte +82 -82
  214. package/dist/{primitives → ui/primitives}/buttons/button/Button.svelte.d.ts +1 -1
  215. package/dist/{primitives → ui/primitives}/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
  216. package/dist/{primitives → ui/primitives}/buttons/button-text/TextButton.svelte +21 -21
  217. package/dist/{primitives → ui/primitives}/buttons/index.js +3 -3
  218. package/dist/{primitives → ui/primitives}/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
  219. package/dist/{primitives → ui/primitives}/debug/index.js +1 -1
  220. package/dist/{primitives → ui/primitives}/drag-drop/DragController.js +44 -44
  221. package/dist/{primitives → ui/primitives}/drag-drop/DragDropContext.svelte +111 -111
  222. package/dist/{primitives → ui/primitives}/drag-drop/DragDropContext.svelte.d.ts +1 -1
  223. package/dist/{primitives → ui/primitives}/drag-drop/Draggable.svelte +519 -519
  224. package/dist/{primitives → ui/primitives}/drag-drop/Draggable.svelte.d.ts +1 -1
  225. package/dist/{primitives → ui/primitives}/drag-drop/DropZone.svelte +258 -258
  226. package/dist/{primitives → ui/primitives}/drag-drop/DropZone.svelte.d.ts +3 -3
  227. package/dist/{primitives → ui/primitives}/drag-drop/DropZoneArea.svelte +119 -119
  228. package/dist/{primitives → ui/primitives}/drag-drop/DropZoneArea.svelte.d.ts +3 -3
  229. package/dist/{primitives → ui/primitives}/drag-drop/DropZoneList.svelte +125 -125
  230. package/dist/{primitives → ui/primitives}/drag-drop/DropZoneList.svelte.d.ts +3 -3
  231. package/dist/{primitives → ui/primitives}/drag-drop/actions.js +26 -26
  232. package/dist/{primitives → ui/primitives}/drag-drop/drag-state.svelte.d.ts +11 -11
  233. package/dist/{primitives → ui/primitives}/drag-drop/drag-state.svelte.js +322 -322
  234. package/dist/{primitives → ui/primitives}/drag-drop/index.js +7 -7
  235. package/dist/{primitives → ui/primitives}/drag-drop/util.js +85 -85
  236. package/dist/{primitives → ui/primitives}/hkdev/blocks/TextBlock.svelte +46 -46
  237. package/dist/{primitives → ui/primitives}/hkdev/buttons/CheckButton.svelte +62 -62
  238. package/dist/{primitives → ui/primitives}/icons/HkIcon.svelte +86 -86
  239. package/dist/{primitives → ui/primitives}/icons/HkTabIcon.svelte +116 -116
  240. package/dist/{primitives → ui/primitives}/icons/SteezeIcon.svelte +97 -97
  241. package/dist/{primitives → ui/primitives}/icons/index.js +6 -6
  242. package/dist/{primitives → ui/primitives}/icons/typedef.js +16 -16
  243. package/dist/{primitives → ui/primitives}/index.js +2 -2
  244. package/dist/{primitives → ui/primitives}/inputs/index.js +1 -1
  245. package/dist/{primitives → ui/primitives}/inputs/text-input/TextInput.svelte +223 -223
  246. package/dist/{primitives → ui/primitives}/inputs/text-input/assets/IconInvalid.svelte +14 -14
  247. package/dist/{primitives → ui/primitives}/inputs/text-input/assets/IconValid.svelte +12 -12
  248. package/dist/{primitives → ui/primitives}/layout/grid-layers/GridLayers.svelte +63 -63
  249. package/dist/{primitives → ui/primitives}/layout/grid-layers/util.js +74 -74
  250. package/dist/{primitives → ui/primitives}/layout/index.js +1 -1
  251. package/dist/{primitives → ui/primitives}/panels/index.js +1 -1
  252. package/dist/{primitives → ui/primitives}/panels/panel/Panel.svelte +43 -43
  253. package/dist/{primitives → ui/primitives}/rows/index.js +3 -3
  254. package/dist/{primitives → ui/primitives}/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  255. package/dist/{primitives → ui/primitives}/rows/panel-row-2/PanelRow2.svelte +40 -40
  256. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBar.state.svelte.d.ts +3 -3
  257. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBar.state.svelte.js +149 -149
  258. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBar.svelte +74 -74
  259. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBarSelector.state.svelte.d.ts +3 -3
  260. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  261. package/dist/{primitives → ui/primitives}/tab-bar/HkTabBarSelector.svelte +49 -49
  262. package/dist/{primitives → ui/primitives}/tab-bar/index.js +17 -17
  263. package/dist/{primitives → ui/primitives}/tab-bar/typedef.js +11 -11
  264. package/dist/util/array/index.js +436 -436
  265. package/dist/util/bases/base58.js +262 -262
  266. package/dist/util/bases/index.js +1 -1
  267. package/dist/util/compare/index.js +247 -247
  268. package/dist/util/css/css-vars.js +83 -83
  269. package/dist/util/css/index.js +1 -1
  270. package/dist/util/env/index.js +9 -9
  271. package/dist/util/exceptions/index.js +23 -23
  272. package/dist/util/expect/arrays.js +47 -47
  273. package/dist/util/expect/index.js +259 -259
  274. package/dist/util/expect/primitives.js +55 -55
  275. package/dist/util/expect/url.d.ts +6 -6
  276. package/dist/util/expect/url.js +60 -60
  277. package/dist/util/function/index.js +218 -218
  278. package/dist/util/geo/index.js +26 -26
  279. package/dist/util/index.js +7 -7
  280. package/dist/util/is/index.js +147 -147
  281. package/dist/util/iterate/index.d.ts +4 -4
  282. package/dist/util/iterate/index.js +204 -204
  283. package/dist/util/object/index.js +1345 -1345
  284. package/dist/util/singleton/index.js +97 -97
  285. package/dist/util/string/array-path.js +75 -75
  286. package/dist/util/string/convert.js +54 -54
  287. package/dist/util/string/fs.js +226 -226
  288. package/dist/util/string/index.js +5 -5
  289. package/dist/util/string/interpolate.js +61 -61
  290. package/dist/util/string/pad.js +10 -10
  291. package/dist/util/svelte/index.js +4 -4
  292. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  293. package/dist/util/svelte/observe/index.js +49 -49
  294. package/dist/util/svelte/state-context/index.js +117 -117
  295. package/dist/util/svelte/wait/index.js +38 -38
  296. package/dist/util/sveltekit/index.js +1 -1
  297. package/dist/util/sveltekit/route-folders/index.js +101 -101
  298. package/dist/util/time/index.js +328 -328
  299. package/dist/util/unique/index.js +231 -231
  300. package/dist/valibot/README.md +50 -0
  301. package/dist/valibot/index.d.ts +4 -4
  302. package/dist/valibot/index.js +8 -9
  303. package/dist/valibot/{url.d.ts → parsers/url.d.ts} +13 -5
  304. package/dist/valibot/{url.js → parsers/url.js} +111 -95
  305. package/dist/valibot/{user.js → parsers/user.js} +23 -23
  306. package/dist/valibot/parsers.d.ts +2 -0
  307. package/dist/valibot/parsers.js +4 -0
  308. package/package.json +131 -133
  309. package/dist/components/hk-app-layout/HkAppLayout.state.svelte.d.ts +0 -6
  310. package/dist/components/image-box/index.js +0 -5
  311. package/dist/constants/regexp/web.d.ts +0 -1
  312. package/dist/constants/regexp/web.js +0 -3
  313. package/dist/primitives/inputs/text-input/TestTextInput.svelte__ +0 -102
  314. package/dist/primitives/inputs/text-input/TextInput.svelte___ +0 -83
  315. package/dist/primitives/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
  316. package/dist/schemas/index.d.ts +0 -1
  317. package/dist/schemas/index.js +0 -1
  318. package/dist/schemas/validate-url.d.ts +0 -30
  319. package/dist/schemas/validate-url.js +0 -180
  320. package/dist/themes/hkdev/debug.css +0 -2
  321. package/dist/themes/index.d.ts +0 -1
  322. package/dist/themes/index.js +0 -1
  323. package/dist/util/design-system/index.d.ts +0 -5
  324. package/dist/util/design-system/index.js +0 -5
  325. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  326. package/dist/valibot/date.js__ +0 -10
  327. package/dist/zod/all.d.ts +0 -6
  328. package/dist/zod/all.js +0 -33
  329. package/dist/zod/generic.d.ts +0 -6
  330. package/dist/zod/generic.js +0 -11
  331. package/dist/zod/javascript.d.ts +0 -8
  332. package/dist/zod/javascript.js +0 -32
  333. package/dist/zod/user.d.ts +0 -9
  334. package/dist/zod/user.js +0 -16
  335. package/dist/zod/web.d.ts +0 -21
  336. package/dist/zod/web.js +0 -52
  337. /package/dist/config/{imagetools-config.d.ts → generators/imagetools.d.ts} +0 -0
  338. /package/dist/design/{design-config.d.ts → config/design-config.d.ts} +0 -0
  339. /package/dist/{util/design-system/tailwind.d.ts → design/generators/index.d.ts} +0 -0
  340. /package/dist/{util/design-system → design/plugins}/skeleton.d.ts +0 -0
  341. /package/dist/{themes → design/themes}/hkdev/theme-ext.d.ts +0 -0
  342. /package/dist/{util/design-system/css → design/utils}/clamp.d.ts +0 -0
  343. /package/dist/{util/design-system/layout → design/utils}/scaling.d.ts +0 -0
  344. /package/dist/{util/design-system/components → design/utils}/states.d.ts +0 -0
  345. /package/dist/{classes → network}/cache/IndexedDbCache.d.ts +0 -0
  346. /package/dist/{classes → network}/cache/MemoryResponseCache.d.ts +0 -0
  347. /package/dist/{classes → network}/cache/index.d.ts +0 -0
  348. /package/dist/{classes → network}/cache/typedef.d.ts +0 -0
  349. /package/dist/{util → network}/http/caching.d.ts +0 -0
  350. /package/dist/{util → network}/http/errors.d.ts +0 -0
  351. /package/dist/{util → network}/http/headers.d.ts +0 -0
  352. /package/dist/{util → network}/http/http-request.d.ts +0 -0
  353. /package/dist/{util → network}/http/index.d.ts +0 -0
  354. /package/dist/{util → network}/http/json-request.d.ts +0 -0
  355. /package/dist/{util → network}/http/mocks.d.ts +0 -0
  356. /package/dist/{util → network}/http/response.d.ts +0 -0
  357. /package/dist/{util → network}/http/typedef.d.ts +0 -0
  358. /package/dist/{util → network}/http/url.d.ts +0 -0
  359. /package/dist/{classes/svelte → network/loaders}/audio/AudioScene.svelte.d.ts +0 -0
  360. /package/dist/{classes/svelte → network/loaders}/audio/mocks.d.ts +0 -0
  361. /package/dist/{classes/svelte → network/loaders}/image/index.d.ts +0 -0
  362. /package/dist/{classes/svelte → network/loaders}/image/mocks.d.ts +0 -0
  363. /package/dist/{classes/svelte → network/loaders}/image/typedef.d.ts +0 -0
  364. /package/dist/{typedef/image.d.ts → network/loaders/typedef.d.ts} +0 -0
  365. /package/dist/{classes/svelte/network-loader → network/states}/constants.d.ts +0 -0
  366. /package/dist/{classes/svelte/network-loader → network/states}/index.d.ts +0 -0
  367. /package/dist/{classes/svelte/network-loader → network/states}/mocks.d.ts +0 -0
  368. /package/dist/{classes/svelte/network-loader → network/states}/typedef.d.ts +0 -0
  369. /package/dist/{components → ui/components}/button-group/ButtonGroup.svelte.d.ts +0 -0
  370. /package/dist/{components → ui/components}/button-group/typedef.d.ts +0 -0
  371. /package/dist/{components → ui/components}/compare-left-right/CompareLeftRight.svelte.d.ts +0 -0
  372. /package/dist/{components → ui/components}/compare-left-right/index.d.ts +0 -0
  373. /package/dist/{components → ui/components}/game-box/GameBox.svelte.d.ts +0 -0
  374. /package/dist/{components → ui/components}/game-box/gamebox.util.d.ts +0 -0
  375. /package/dist/{components → ui/components}/hk-app-layout/HkAppLayout.svelte.d.ts +0 -0
  376. /package/dist/{components → ui/components}/image-box/index.d.ts +0 -0
  377. /package/dist/{components → ui/components}/image-box/typedef.d.ts +0 -0
  378. /package/dist/{components → ui/components}/index.d.ts +0 -0
  379. /package/dist/{components → ui/components}/presenter/Presenter.svelte.d.ts +0 -0
  380. /package/dist/{components → ui/components}/presenter/constants.d.ts +0 -0
  381. /package/dist/{components → ui/components}/presenter/index.d.ts +0 -0
  382. /package/dist/{components → ui/components}/presenter/typedef.d.ts +0 -0
  383. /package/dist/{components → ui/components}/presenter/util.d.ts +0 -0
  384. /package/dist/{components → ui/components}/virtual-viewport/VirtualViewport.svelte.d.ts +0 -0
  385. /package/dist/{primitives → ui/primitives}/area/HkArea.svelte.d.ts +0 -0
  386. /package/dist/{primitives → ui/primitives}/area/HkGridArea.svelte.d.ts +0 -0
  387. /package/dist/{primitives → ui/primitives}/area/index.d.ts +0 -0
  388. /package/dist/{primitives → ui/primitives}/buttons/button-icon-steeze/SteezeIconButton.svelte.d.ts +0 -0
  389. /package/dist/{primitives → ui/primitives}/buttons/button-text/TextButton.svelte.d.ts +0 -0
  390. /package/dist/{primitives → ui/primitives}/buttons/index.d.ts +0 -0
  391. /package/dist/{primitives → ui/primitives}/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +0 -0
  392. /package/dist/{primitives → ui/primitives}/debug/index.d.ts +0 -0
  393. /package/dist/{primitives → ui/primitives}/drag-drop/DragController.d.ts +0 -0
  394. /package/dist/{primitives → ui/primitives}/drag-drop/actions.d.ts +0 -0
  395. /package/dist/{primitives → ui/primitives}/drag-drop/index.d.ts +0 -0
  396. /package/dist/{primitives → ui/primitives}/drag-drop/util.d.ts +0 -0
  397. /package/dist/{primitives → ui/primitives}/hkdev/blocks/TextBlock.svelte.d.ts +0 -0
  398. /package/dist/{primitives → ui/primitives}/hkdev/buttons/CheckButton.svelte.d.ts +0 -0
  399. /package/dist/{primitives → ui/primitives}/icons/HkIcon.svelte.d.ts +0 -0
  400. /package/dist/{primitives → ui/primitives}/icons/HkTabIcon.svelte.d.ts +0 -0
  401. /package/dist/{primitives → ui/primitives}/icons/SteezeIcon.svelte.d.ts +0 -0
  402. /package/dist/{primitives → ui/primitives}/icons/index.d.ts +0 -0
  403. /package/dist/{primitives → ui/primitives}/icons/typedef.d.ts +0 -0
  404. /package/dist/{primitives → ui/primitives}/index.d.ts +0 -0
  405. /package/dist/{primitives → ui/primitives}/inputs/index.d.ts +0 -0
  406. /package/dist/{primitives → ui/primitives}/inputs/text-input/TextInput.svelte.d.ts +0 -0
  407. /package/dist/{primitives → ui/primitives}/inputs/text-input/assets/IconInvalid.svelte.d.ts +0 -0
  408. /package/dist/{primitives → ui/primitives}/inputs/text-input/assets/IconValid.svelte.d.ts +0 -0
  409. /package/dist/{primitives → ui/primitives}/layout/grid-layers/GridLayers.svelte.d.ts +0 -0
  410. /package/dist/{primitives → ui/primitives}/layout/grid-layers/util.d.ts +0 -0
  411. /package/dist/{primitives → ui/primitives}/layout/index.d.ts +0 -0
  412. /package/dist/{primitives → ui/primitives}/panels/index.d.ts +0 -0
  413. /package/dist/{primitives → ui/primitives}/panels/panel/Panel.svelte.d.ts +0 -0
  414. /package/dist/{primitives → ui/primitives}/rows/index.d.ts +0 -0
  415. /package/dist/{primitives → ui/primitives}/rows/panel-grid-row/PanelGridRow.svelte.d.ts +0 -0
  416. /package/dist/{primitives → ui/primitives}/rows/panel-row-2/PanelRow2.svelte.d.ts +0 -0
  417. /package/dist/{primitives → ui/primitives}/tab-bar/HkTabBar.svelte.d.ts +0 -0
  418. /package/dist/{primitives → ui/primitives}/tab-bar/HkTabBarSelector.svelte.d.ts +0 -0
  419. /package/dist/{primitives → ui/primitives}/tab-bar/index.d.ts +0 -0
  420. /package/dist/{primitives → ui/primitives}/tab-bar/typedef.d.ts +0 -0
  421. /package/dist/valibot/{user.d.ts → parsers/user.d.ts} +0 -0
@@ -1,328 +1,328 @@
1
- /**
2
- * time.js
3
- *
4
- * @description
5
- * This file contains time related functionality
6
- *
7
- * @example
8
- *
9
- * import { delay, now } from './time.js';
10
- *
11
- * async function test()
12
- * {
13
- * console.log( `Current timestamp [${now()}]` );
14
- *
15
- * await delay( 1000 );
16
- *
17
- * console.log( `Current timestamp [${now()}]` );
18
- * }
19
- */
20
-
21
- /**
22
- * FIXME: use Intl.DateTimeFormat instead of custom conversions
23
- *
24
- * e.g.
25
- * return new Intl.DateTimeFormat('nl-NL', {
26
- * month: "long",
27
- * timeZone: 'Europe/Amsterdam'
28
- * }).format(d);
29
- */
30
-
31
- import {
32
- SECOND_MS,
33
- MINUTE_MS,
34
- HOUR_MS,
35
- DAY_MS,
36
- TIME_2025_01_01
37
- } from '../../constants/time/index.js';
38
-
39
- import * as expect from '../expect';
40
- import { HkPromise } from '../../classes/promise/index.js';
41
-
42
- /**
43
- * Returns a promise that resolves after a specified timeout
44
- * - If the returned promise is rejected, the timeout is cancelled
45
- *
46
- * @param {number} delayOrMinDelayMs
47
- * Number of milliseconds to wait before promise resolves
48
- *
49
- * @param {number} [maxDelayMs=delayOrMinDelayMs]
50
- * Maximum number of milliseconds to wait before the returned promise
51
- * resolves. If this parameter is set, the delay will be chosen randomly
52
- * between the values [delayOrMinDelayMs, maxDelayMs]
53
- *
54
- * @returns {HkPromise} promise that resolves after a specified timeout
55
- */
56
- export function delay(delayOrMinDelayMs, maxDelayMs) {
57
- expect.number(delayOrMinDelayMs);
58
-
59
- if (maxDelayMs) {
60
- //
61
- // maxDelayMs was set -> generate random delay
62
- //
63
- if (maxDelayMs > delayOrMinDelayMs) {
64
- delayOrMinDelayMs = Math.floor(
65
- delayOrMinDelayMs + Math.random() * (maxDelayMs - delayOrMinDelayMs)
66
- );
67
- }
68
- }
69
-
70
- const promise = new HkPromise();
71
-
72
- let timer = setTimeout(() => {
73
- timer = null;
74
- promise.resolve();
75
- }, delayOrMinDelayMs);
76
-
77
- // Register catch method to cancel timer when promise is rejected
78
- promise.catch(() => {
79
- if (timer) {
80
- clearTimeout(timer);
81
- timer = null;
82
- }
83
- });
84
-
85
- return promise;
86
- }
87
-
88
- /**
89
- * Get the number of milliseconds since the specified time stamp of the default
90
- * reference time stamp TIME_2025_01_01
91
- *
92
- * @param {number} [sinceMs=TIME_2025_01_01]
93
- *
94
- * @returns {number} number of milliseconds since the specified time
95
- */
96
- export function sinceMs(sinceMs = TIME_2025_01_01) {
97
- return Date.now() - sinceMs;
98
- }
99
-
100
- /**
101
- * Get a string that represents the time in a readable
102
- * string format: [DD:][HH:]MM:SS.mmm
103
- *
104
- * @param {number} timeMs [description]
105
- *
106
- * @returns {string} time in human readable format
107
- */
108
- export function timeToString(timeMs) {
109
- const days = Math.floor(timeMs / DAY_MS);
110
-
111
- let restMs = timeMs - days * DAY_MS;
112
-
113
- const hours = Math.floor(restMs / HOUR_MS);
114
-
115
- restMs = restMs - hours * HOUR_MS;
116
-
117
- const minutes = Math.floor(restMs / MINUTE_MS);
118
-
119
- restMs = restMs - minutes * MINUTE_MS;
120
-
121
- const seconds = Math.floor(restMs / SECOND_MS);
122
-
123
- restMs = restMs - seconds * SECOND_MS;
124
-
125
- let str = '';
126
-
127
- if (days) {
128
- str += `${days.toString().padStart(2, '0')}:`;
129
- str += `${hours.toString().padStart(2, '0')}:`;
130
- } else if (hours) {
131
- str += `${hours.toString().padStart(2, '0')}:`;
132
- }
133
-
134
- str += `${minutes.toString().padStart(2, '0')}:`;
135
- str += `${seconds.toString().padStart(2, '0')}.`;
136
- str += `${restMs.toString().padStart(3, '0')}`;
137
-
138
- return str;
139
- }
140
-
141
- /**
142
- * Returns a Date object
143
- * - The input can be a Date object or a numeric timestamp
144
- *
145
- * @param {Date|number} dateOrTimestamp
146
- *
147
- * @returns {Date} date object
148
- */
149
- export function toDate(dateOrTimestamp) {
150
- if (dateOrTimestamp instanceof Date) {
151
- return dateOrTimestamp;
152
- }
153
-
154
- if (typeof dateOrTimestamp === 'number') {
155
- return new Date(dateOrTimestamp);
156
- }
157
-
158
- throw new Error('Missing or invalid parameter [dateOrTimestamp]');
159
- }
160
-
161
- /**
162
- * Get the ISO 8601 week number of the specified date
163
- *
164
- * @see https://stackoverflow.com
165
- * /questions/6117814/get-week-of-year-in-javascript-like-in-php
166
- *
167
- * @param {Date|number} dateOrTimestamp
168
- *
169
- * @returns {number} week number
170
- */
171
- export function getWeekNumber(dateOrTimestamp) {
172
- const date = toDate(dateOrTimestamp);
173
-
174
- //
175
- // Create a copy of this date object
176
- //
177
- const target = new Date(date.valueOf());
178
-
179
- //
180
- // ISO week date weeks start on Monday, so correct the day number
181
- //
182
- const dayNumber = (date.getDay() + 6) % 7;
183
-
184
- //
185
- // ISO 8601 states that week 1 is the week with the first Thursday
186
- // of that year.
187
- //
188
- // Set the target date to the Thursday in the target week
189
- //
190
- target.setDate(target.getDate() - dayNumber + 3);
191
-
192
- //
193
- // Store the millisecond value of the target date
194
- //
195
- const firstThursday = target.valueOf();
196
-
197
- // Set the target to the first Thursday of the year
198
- // First, set the target to January 1st
199
- target.setMonth(0, 1);
200
-
201
- //
202
- // Not a Thursday? Correct the date to the next Thursday
203
- //
204
- if (target.getDay() !== 4) {
205
- target.setMonth(0, 1 + ((4 - target.getDay() + 7) % 7));
206
- }
207
-
208
- //
209
- // The week number is the number of weeks between the first Thursday
210
- // of the year and the Thursday in the target week
211
- // (604800000 = 7 * 24 * 3600 * 1000)
212
- //
213
- return 1 + Math.ceil((firstThursday - target.getTime()) / 604800000);
214
- }
215
-
216
- /**
217
- * Get the name of the month
218
- * - Returns the month name using Intl.DateTimeFormat
219
- * - By default uses English locale, but locale can be specified
220
- *
221
- * @param {Date|number} dateOrTimestamp - Date object or timestamp
222
- * @param {string} [locale='nl-NL'] - The locale to use for the month name
223
- *
224
- * @param {Object} [options]
225
- * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [options.month='long']
226
- * @param {string} [options.timeZone] - Optional timezone
227
- *
228
- * @returns {string} name of the month in the specified locale
229
- */
230
- export function getMonthName(
231
- dateOrTimestamp,
232
- locale = 'nl-NL',
233
- options = { month: 'long' }
234
- ) {
235
- const date = toDate(dateOrTimestamp);
236
-
237
- // Create formatter with provided locale and options
238
- // @ts-ignore - TypeScript kan hier strikter zijn dan nodig met de options
239
- const formatter = new Intl.DateTimeFormat(locale, {
240
- month: options?.month || 'long',
241
- ...(options?.timeZone ? { timeZone: options.timeZone } : {})
242
- });
243
-
244
- return formatter.format(date);
245
- }
246
-
247
- /**
248
- * Get the name of the day of the week
249
- * - Returns the day name using Intl.DateTimeFormat
250
- * - By default uses English locale, but locale can be specified
251
- *
252
- * @param {Date|number} dateOrTimestamp - Date object or timestamp
253
- * @param {string} [locale='nl-NL'] - The locale to use for the day name
254
- *
255
- * @param {Object} [options]
256
- * @param {'narrow'|'short'|'long'} [options.weekday='long']
257
- * @param {string} [options.timeZone] - Optional timezone
258
- *
259
- * @returns {string} name of the day in the specified locale
260
- */
261
- export function getDayName(
262
- dateOrTimestamp,
263
- locale = 'nl-NL',
264
- options = { weekday: 'long' }
265
- ) {
266
- const date = toDate(dateOrTimestamp);
267
-
268
- // Create formatter with provided locale and options
269
- // @ts-ignore - TypeScript kan hier strikter zijn dan nodig met de options
270
- const formatter = new Intl.DateTimeFormat(locale, {
271
- weekday: options?.weekday || 'long',
272
- ...(options?.timeZone ? { timeZone: options.timeZone } : {})
273
- });
274
-
275
- return formatter.format(date);
276
- }
277
-
278
- /**
279
- * Return the timestamp of the start of the day
280
- * - Midnight
281
- *
282
- * @param {Date|number} [dateOrTimestamp]
283
- *
284
- * @returns {number} timestamp of start of the day (00:00:00:0000)
285
- */
286
- export function getTimeAtStartOfDay(dateOrTimestamp) {
287
- let d;
288
-
289
- if (dateOrTimestamp) {
290
- d = toDate(dateOrTimestamp);
291
- } else {
292
- // today, now
293
- d = new Date();
294
- }
295
-
296
- d.setHours(0);
297
- d.setMinutes(0);
298
- d.setSeconds(0);
299
- d.setMilliseconds(0);
300
-
301
- return d.getTime();
302
- }
303
-
304
- /**
305
- * Return the timestamp of the end of the day
306
- * - Midnight - 1 millisecond
307
- *
308
- * @param {Date|number} [dateOrTimestamp]
309
- *
310
- * @returns {number} timestamp of start of the day
311
- */
312
- export function getTimeAtEndOfDay(dateOrTimestamp) {
313
- let d;
314
-
315
- if (dateOrTimestamp) {
316
- d = toDate(dateOrTimestamp);
317
- } else {
318
- // today, now
319
- d = new Date();
320
- }
321
-
322
- d.setHours(23);
323
- d.setMinutes(59);
324
- d.setSeconds(59);
325
- d.setMilliseconds(999);
326
-
327
- return d.getTime();
328
- }
1
+ /**
2
+ * time.js
3
+ *
4
+ * @description
5
+ * This file contains time related functionality
6
+ *
7
+ * @example
8
+ *
9
+ * import { delay, now } from './time.js';
10
+ *
11
+ * async function test()
12
+ * {
13
+ * console.log( `Current timestamp [${now()}]` );
14
+ *
15
+ * await delay( 1000 );
16
+ *
17
+ * console.log( `Current timestamp [${now()}]` );
18
+ * }
19
+ */
20
+
21
+ /**
22
+ * FIXME: use Intl.DateTimeFormat instead of custom conversions
23
+ *
24
+ * e.g.
25
+ * return new Intl.DateTimeFormat('nl-NL', {
26
+ * month: "long",
27
+ * timeZone: 'Europe/Amsterdam'
28
+ * }).format(d);
29
+ */
30
+
31
+ import {
32
+ SECOND_MS,
33
+ MINUTE_MS,
34
+ HOUR_MS,
35
+ DAY_MS,
36
+ TIME_2025_01_01
37
+ } from '../../constants/time/index.js';
38
+
39
+ import * as expect from '../expect';
40
+ import { HkPromise } from '../../classes/promise/index.js';
41
+
42
+ /**
43
+ * Returns a promise that resolves after a specified timeout
44
+ * - If the returned promise is rejected, the timeout is cancelled
45
+ *
46
+ * @param {number} delayOrMinDelayMs
47
+ * Number of milliseconds to wait before promise resolves
48
+ *
49
+ * @param {number} [maxDelayMs=delayOrMinDelayMs]
50
+ * Maximum number of milliseconds to wait before the returned promise
51
+ * resolves. If this parameter is set, the delay will be chosen randomly
52
+ * between the values [delayOrMinDelayMs, maxDelayMs]
53
+ *
54
+ * @returns {HkPromise} promise that resolves after a specified timeout
55
+ */
56
+ export function delay(delayOrMinDelayMs, maxDelayMs) {
57
+ expect.number(delayOrMinDelayMs);
58
+
59
+ if (maxDelayMs) {
60
+ //
61
+ // maxDelayMs was set -> generate random delay
62
+ //
63
+ if (maxDelayMs > delayOrMinDelayMs) {
64
+ delayOrMinDelayMs = Math.floor(
65
+ delayOrMinDelayMs + Math.random() * (maxDelayMs - delayOrMinDelayMs)
66
+ );
67
+ }
68
+ }
69
+
70
+ const promise = new HkPromise();
71
+
72
+ let timer = setTimeout(() => {
73
+ timer = null;
74
+ promise.resolve();
75
+ }, delayOrMinDelayMs);
76
+
77
+ // Register catch method to cancel timer when promise is rejected
78
+ promise.catch(() => {
79
+ if (timer) {
80
+ clearTimeout(timer);
81
+ timer = null;
82
+ }
83
+ });
84
+
85
+ return promise;
86
+ }
87
+
88
+ /**
89
+ * Get the number of milliseconds since the specified time stamp of the default
90
+ * reference time stamp TIME_2025_01_01
91
+ *
92
+ * @param {number} [sinceMs=TIME_2025_01_01]
93
+ *
94
+ * @returns {number} number of milliseconds since the specified time
95
+ */
96
+ export function sinceMs(sinceMs = TIME_2025_01_01) {
97
+ return Date.now() - sinceMs;
98
+ }
99
+
100
+ /**
101
+ * Get a string that represents the time in a readable
102
+ * string format: [DD:][HH:]MM:SS.mmm
103
+ *
104
+ * @param {number} timeMs [description]
105
+ *
106
+ * @returns {string} time in human readable format
107
+ */
108
+ export function timeToString(timeMs) {
109
+ const days = Math.floor(timeMs / DAY_MS);
110
+
111
+ let restMs = timeMs - days * DAY_MS;
112
+
113
+ const hours = Math.floor(restMs / HOUR_MS);
114
+
115
+ restMs = restMs - hours * HOUR_MS;
116
+
117
+ const minutes = Math.floor(restMs / MINUTE_MS);
118
+
119
+ restMs = restMs - minutes * MINUTE_MS;
120
+
121
+ const seconds = Math.floor(restMs / SECOND_MS);
122
+
123
+ restMs = restMs - seconds * SECOND_MS;
124
+
125
+ let str = '';
126
+
127
+ if (days) {
128
+ str += `${days.toString().padStart(2, '0')}:`;
129
+ str += `${hours.toString().padStart(2, '0')}:`;
130
+ } else if (hours) {
131
+ str += `${hours.toString().padStart(2, '0')}:`;
132
+ }
133
+
134
+ str += `${minutes.toString().padStart(2, '0')}:`;
135
+ str += `${seconds.toString().padStart(2, '0')}.`;
136
+ str += `${restMs.toString().padStart(3, '0')}`;
137
+
138
+ return str;
139
+ }
140
+
141
+ /**
142
+ * Returns a Date object
143
+ * - The input can be a Date object or a numeric timestamp
144
+ *
145
+ * @param {Date|number} dateOrTimestamp
146
+ *
147
+ * @returns {Date} date object
148
+ */
149
+ export function toDate(dateOrTimestamp) {
150
+ if (dateOrTimestamp instanceof Date) {
151
+ return dateOrTimestamp;
152
+ }
153
+
154
+ if (typeof dateOrTimestamp === 'number') {
155
+ return new Date(dateOrTimestamp);
156
+ }
157
+
158
+ throw new Error('Missing or invalid parameter [dateOrTimestamp]');
159
+ }
160
+
161
+ /**
162
+ * Get the ISO 8601 week number of the specified date
163
+ *
164
+ * @see https://stackoverflow.com
165
+ * /questions/6117814/get-week-of-year-in-javascript-like-in-php
166
+ *
167
+ * @param {Date|number} dateOrTimestamp
168
+ *
169
+ * @returns {number} week number
170
+ */
171
+ export function getWeekNumber(dateOrTimestamp) {
172
+ const date = toDate(dateOrTimestamp);
173
+
174
+ //
175
+ // Create a copy of this date object
176
+ //
177
+ const target = new Date(date.valueOf());
178
+
179
+ //
180
+ // ISO week date weeks start on Monday, so correct the day number
181
+ //
182
+ const dayNumber = (date.getDay() + 6) % 7;
183
+
184
+ //
185
+ // ISO 8601 states that week 1 is the week with the first Thursday
186
+ // of that year.
187
+ //
188
+ // Set the target date to the Thursday in the target week
189
+ //
190
+ target.setDate(target.getDate() - dayNumber + 3);
191
+
192
+ //
193
+ // Store the millisecond value of the target date
194
+ //
195
+ const firstThursday = target.valueOf();
196
+
197
+ // Set the target to the first Thursday of the year
198
+ // First, set the target to January 1st
199
+ target.setMonth(0, 1);
200
+
201
+ //
202
+ // Not a Thursday? Correct the date to the next Thursday
203
+ //
204
+ if (target.getDay() !== 4) {
205
+ target.setMonth(0, 1 + ((4 - target.getDay() + 7) % 7));
206
+ }
207
+
208
+ //
209
+ // The week number is the number of weeks between the first Thursday
210
+ // of the year and the Thursday in the target week
211
+ // (604800000 = 7 * 24 * 3600 * 1000)
212
+ //
213
+ return 1 + Math.ceil((firstThursday - target.getTime()) / 604800000);
214
+ }
215
+
216
+ /**
217
+ * Get the name of the month
218
+ * - Returns the month name using Intl.DateTimeFormat
219
+ * - By default uses English locale, but locale can be specified
220
+ *
221
+ * @param {Date|number} dateOrTimestamp - Date object or timestamp
222
+ * @param {string} [locale='nl-NL'] - The locale to use for the month name
223
+ *
224
+ * @param {Object} [options]
225
+ * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [options.month='long']
226
+ * @param {string} [options.timeZone] - Optional timezone
227
+ *
228
+ * @returns {string} name of the month in the specified locale
229
+ */
230
+ export function getMonthName(
231
+ dateOrTimestamp,
232
+ locale = 'nl-NL',
233
+ options = { month: 'long' }
234
+ ) {
235
+ const date = toDate(dateOrTimestamp);
236
+
237
+ // Create formatter with provided locale and options
238
+ // @ts-ignore - TypeScript kan hier strikter zijn dan nodig met de options
239
+ const formatter = new Intl.DateTimeFormat(locale, {
240
+ month: options?.month || 'long',
241
+ ...(options?.timeZone ? { timeZone: options.timeZone } : {})
242
+ });
243
+
244
+ return formatter.format(date);
245
+ }
246
+
247
+ /**
248
+ * Get the name of the day of the week
249
+ * - Returns the day name using Intl.DateTimeFormat
250
+ * - By default uses English locale, but locale can be specified
251
+ *
252
+ * @param {Date|number} dateOrTimestamp - Date object or timestamp
253
+ * @param {string} [locale='nl-NL'] - The locale to use for the day name
254
+ *
255
+ * @param {Object} [options]
256
+ * @param {'narrow'|'short'|'long'} [options.weekday='long']
257
+ * @param {string} [options.timeZone] - Optional timezone
258
+ *
259
+ * @returns {string} name of the day in the specified locale
260
+ */
261
+ export function getDayName(
262
+ dateOrTimestamp,
263
+ locale = 'nl-NL',
264
+ options = { weekday: 'long' }
265
+ ) {
266
+ const date = toDate(dateOrTimestamp);
267
+
268
+ // Create formatter with provided locale and options
269
+ // @ts-ignore - TypeScript kan hier strikter zijn dan nodig met de options
270
+ const formatter = new Intl.DateTimeFormat(locale, {
271
+ weekday: options?.weekday || 'long',
272
+ ...(options?.timeZone ? { timeZone: options.timeZone } : {})
273
+ });
274
+
275
+ return formatter.format(date);
276
+ }
277
+
278
+ /**
279
+ * Return the timestamp of the start of the day
280
+ * - Midnight
281
+ *
282
+ * @param {Date|number} [dateOrTimestamp]
283
+ *
284
+ * @returns {number} timestamp of start of the day (00:00:00:0000)
285
+ */
286
+ export function getTimeAtStartOfDay(dateOrTimestamp) {
287
+ let d;
288
+
289
+ if (dateOrTimestamp) {
290
+ d = toDate(dateOrTimestamp);
291
+ } else {
292
+ // today, now
293
+ d = new Date();
294
+ }
295
+
296
+ d.setHours(0);
297
+ d.setMinutes(0);
298
+ d.setSeconds(0);
299
+ d.setMilliseconds(0);
300
+
301
+ return d.getTime();
302
+ }
303
+
304
+ /**
305
+ * Return the timestamp of the end of the day
306
+ * - Midnight - 1 millisecond
307
+ *
308
+ * @param {Date|number} [dateOrTimestamp]
309
+ *
310
+ * @returns {number} timestamp of start of the day
311
+ */
312
+ export function getTimeAtEndOfDay(dateOrTimestamp) {
313
+ let d;
314
+
315
+ if (dateOrTimestamp) {
316
+ d = toDate(dateOrTimestamp);
317
+ } else {
318
+ // today, now
319
+ d = new Date();
320
+ }
321
+
322
+ d.setHours(23);
323
+ d.setMinutes(59);
324
+ d.setSeconds(59);
325
+ d.setMilliseconds(999);
326
+
327
+ return d.getTime();
328
+ }