@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,436 +1,436 @@
1
- /* ------------------------------------------------------------------ Imports */
2
-
3
- import * as expect from '../expect/index.js';
4
-
5
- import { smallestFirst, largestFirst } from '../compare/index.js';
6
-
7
- import { objectGet, PATH_SEPARATOR } from '../object/index.js';
8
-
9
- import Selector from '../../classes/data/Selector.js';
10
-
11
- /* ---------------------------------------------------------------- Internals */
12
-
13
- const arraySlice = Array.prototype.slice;
14
- const arrayConcat = Array.prototype.concat;
15
-
16
- /* ------------------------------------------------------------------ Exports */
17
-
18
- export { PATH_SEPARATOR } from '../object/index.js';
19
-
20
- export { smallestFirst, largestFirst };
21
-
22
- export { arraySlice, arrayConcat };
23
-
24
- /**
25
- * Convert a value to an array
26
- * - Converts an Arguments object to plain JS array
27
- * - If the value is undefined or null, an empty array is returned
28
- * - A primitive value is "wrapped" in an array
29
- *
30
- * @param {any} value - Item to convert
31
- *
32
- * @param {number} [start]
33
- * Index of the array to start extraction.
34
- * (the first element of the array is at index 0)
35
- *
36
- * @param {number} [end]
37
- * Index of the array where the extraction should end
38
- *
39
- * --
40
- *
41
- * @returns {Array} array
42
- *
43
- * --
44
- *
45
- * @example
46
- * toArray( [ 1, 2, 3, 4, 5 ], 2, 4 ) returns [ 3, 4 ]
47
- */
48
- export function toArray(value, start, end) {
49
- if (Array.isArray(value)) {
50
- //
51
- // Do not clone input value if it is already an array
52
- //
53
- // @note this behaviour differs from Array.from
54
- //
55
- if (undefined === start) {
56
- return value;
57
- }
58
-
59
- return value.slice(start, end);
60
- }
61
-
62
- if (undefined === value || null === value) {
63
- //
64
- // Return an empty array if value is undefined or null
65
- //
66
- // ==> this behaviour differs from Array.from() <==
67
- //
68
- return [];
69
- } else if (!(value instanceof Object)) {
70
- //
71
- // Wrap (non-object) in array (e.g. a string)
72
- //
73
- // @note this behaviour differs from Array.from
74
- //
75
- return [value];
76
- }
77
-
78
- if (undefined === start) {
79
- //
80
- // Construct a new array from the value
81
- //
82
- return Array.from(value);
83
- } else {
84
- return arraySlice.call(value, start, end);
85
- }
86
- }
87
-
88
- /**
89
- * Convert an async iterator to an array
90
- * - If no async iterator is passed, the value will be processed by `from()`
91
- *
92
- * @param {AsyncIterator|any} value
93
- * Async iterator or value to convert to array
94
- *
95
- * @returns {Promise<Array>} list of items returned by the iterator
96
- */
97
- export async function toArrayAsync(value) {
98
- if (
99
- value instanceof Object &&
100
- typeof value[Symbol.asyncIterator] === 'function'
101
- ) {
102
- // value is an async iterator
103
-
104
- const arr = [];
105
-
106
- for await (const item of value) {
107
- arr.push(item);
108
- }
109
-
110
- return arr;
111
- } else {
112
- // value is not an async iterator
113
-
114
- return toArray(value);
115
- }
116
- }
117
-
118
- /**
119
- * Convert a path string to an array path
120
- * - The path string will be spit at the `pathSeparator` token
121
- * - If the supplied path is already an array, the original array will
122
- * be returned
123
- *
124
- * @param {string|string[]} path
125
- * String or array path (e.g. "some.path.to")
126
- *
127
- * @param {string} [pathSeparator=PATH_SEPARATOR]
128
- * A custom path separator to use instead of the default "."
129
- *
130
- * @returns {string[]} array path (e.g. ["some", "path", "to"])
131
- */
132
- export function toArrayPath(path, pathSeparator = PATH_SEPARATOR) {
133
- if (typeof path === 'string') {
134
- return path.split(pathSeparator);
135
- } else if (Array.isArray(path)) {
136
- // path is already an array
137
- return path;
138
- } else {
139
- throw new Error(
140
- 'Missing or invalid parameter [path] (expected string or array)'
141
- );
142
- }
143
- }
144
-
145
- /**
146
- * Push a value to an array if it is not null, undefined or an empty string
147
- *
148
- * @template {array} T
149
- * @param {T} arr
150
- * @param {any} value
151
- *
152
- * @returns {T} arr
153
- */
154
- export function pushNotEmpty(arr, value) {
155
- expect.array(arr);
156
-
157
- if (value !== null && value !== undefined && value !== '') {
158
- arr.push(value);
159
- }
160
-
161
- return arr;
162
- }
163
-
164
- /**
165
- * Loop over the supplied array and call the callback for every element
166
- * - The callback will receive the current element of the array as
167
- * first argument
168
- * - Via [additionalArguments], additional arguments may be supplied that
169
- * will be passed to the callback function
170
- *
171
- * @param {array} arr - The array to loop
172
- * @param {function} callback - Callback to call for every element
173
- * @param {array} additionalArguments The additional arguments
174
- */
175
- export function loop(arr, callback, additionalArguments) {
176
- expect.function(callback);
177
-
178
- if (!arr) {
179
- return;
180
- }
181
-
182
- expect.array(arr);
183
-
184
- if (!arr.length) {
185
- // Nothing to do
186
- return;
187
- }
188
-
189
- // >> CASE A: no additional arguments
190
-
191
- if (!additionalArguments) {
192
- for (let j = 0, n = arr.length; j < n; j = j + 1) {
193
- callback(arr[j]);
194
- }
195
-
196
- return;
197
- }
198
-
199
- // >> CASE B: additional arguments
200
-
201
- expect.arrayLike(additionalArguments);
202
-
203
- const args = [null, ...additionalArguments];
204
-
205
- for (let j = 0, n = arr.length; j < n; j = j + 1) {
206
- args[0] = arr[j];
207
- callback(...args);
208
- }
209
- }
210
-
211
- /**
212
- * Get a list of all values from the items in the array at the
213
- * specified path
214
- *
215
- * @param {object[]} items
216
- *
217
- * @param {object} [options]
218
- *
219
- * @param {boolean} [options.outputAsSet=false]
220
- * Output a Set instead of an array
221
- *
222
- * @param {string} [options.pathSeparator=PATH_SEPARATOR]
223
- * A custom path separator to use instead of the default "."
224
- *
225
- *
226
- *
227
- * @returns {any[]|Set<any>} values
228
- */
229
- export function pathValues(items, path, options = {}) {
230
- // == Process parameters
231
-
232
- expect.array(items);
233
-
234
- const { outputAsSet = false, pathSeparator = PATH_SEPARATOR } = options;
235
-
236
- if (typeof path === 'string') {
237
- path = toArrayPath(path, pathSeparator);
238
- } else {
239
- expect.stringArray(path);
240
- }
241
-
242
- // >> CASE A: Output as plain Array
243
-
244
- if (!outputAsSet) {
245
- const values = [];
246
-
247
- for (let j = 0, n = items.length; j < n; j = j + 1) {
248
- const item = items[j];
249
-
250
- expect.object(item);
251
-
252
- values.push(objectGet(item, path));
253
- }
254
-
255
- return values;
256
- }
257
-
258
- // >> CASE B: Output as Set
259
-
260
- const values = new Set();
261
-
262
- for (let j = 0, n = items.length; j < n; j = j + 1) {
263
- const item = items[j];
264
-
265
- expect.object(item);
266
-
267
- values.add(objectGet(item, path));
268
- }
269
-
270
- return values;
271
- }
272
-
273
- /**
274
- * Sort function that sorts a list of objects by values encountered at the
275
- * specified key values of the object.
276
- * - Sorts array inline (no new array is returned)
277
- * - This method is faster than `sortByPathValue` since the value lookup in the
278
- * items can be done faster
279
- *
280
- * @param {Object[]} items - List of items to sort
281
- *
282
- * @param {string} key
283
- * Object key to use for getting the values in the items to compare.
284
- *
285
- * @param {function} [compareFn=smallestFirst]
286
- * Function to use to compare values. See `compare.js`.
287
- */
288
- export function sortByKeyValue(items, key, compareFn = smallestFirst) {
289
- expect.function(compareFn);
290
-
291
- expect.array(items);
292
-
293
- expect.string(key);
294
-
295
- items.sort((itemA, itemB) => {
296
- return compareFn(itemA[key], itemB[key]);
297
- });
298
- }
299
-
300
- /**
301
- * Sort function that sorts a list of objects by values encountered at the
302
- * specified key values of the object.
303
- * - Sorts array inline (no new array is returned)
304
- * - This method is faster than `sortByPathValue` since the value lookup in the
305
- * items can be done faster
306
- *
307
- * @param {Object[]} items - List of items to sort
308
- *
309
- * @param {string} key
310
- * Object key to use for getting the values in the items to compare.
311
- *
312
- * @param {function} [compareFn=smallestFirst]
313
- * Function to use to compare values. See `compare.js`.
314
- */
315
- export function sortByKeyValueReversed(items, key, compareFn = largestFirst) {
316
- expect.function(compareFn);
317
-
318
- expect.array(items);
319
-
320
- expect.string(key);
321
-
322
- items.sort((itemA, itemB) => {
323
- return compareFn(itemA[key], itemB[key]);
324
- });
325
- }
326
-
327
- /**
328
- * Sort function that sorts a list of objects by values encountered at the
329
- * specified object path.
330
- * - Sorts array inline (no new array is returned)
331
- *
332
- * @param {Object[]} items - List of items to sort
333
- *
334
- * @param {string[]|string} path
335
- * Path to use for getting the values in the items to compare.
336
- * If a string path has been supplied, the default path separator
337
- * (PATH_SEPARATOR) is assumed. Use `toArrayPath` to convert paths with
338
- * custom path separators.
339
- *
340
- * @param {function} [compareFn=smallestFirst]
341
- * Function to use to compare values. See `compare.js`.
342
- */
343
- export function sortByPathValue(items, path, compareFn = smallestFirst) {
344
- expect.function(compareFn);
345
-
346
- expect.array(items);
347
-
348
- if (typeof path === 'string') {
349
- path = toArrayPath(path);
350
- } else {
351
- expect.stringArray(path);
352
- }
353
-
354
- const cache = new Map();
355
-
356
- items.sort((itemA, itemB) => {
357
- let valueA = cache.get(itemA);
358
-
359
- if (undefined === valueA) {
360
- valueA = objectGet(itemA, path);
361
-
362
- if (undefined !== valueA) {
363
- cache.set(itemA, valueA);
364
- }
365
- }
366
-
367
- let valueB = cache.get(itemB);
368
-
369
- if (undefined === valueB) {
370
- valueB = objectGet(itemB, path);
371
-
372
- if (undefined !== valueB) {
373
- cache.set(itemB, valueB);
374
- }
375
- }
376
-
377
- return compareFn(valueA, valueB);
378
- });
379
-
380
- cache.clear();
381
- }
382
-
383
- /**
384
- * Find the first item in the list of objects that matches the selector
385
- * - All items in the supplied array must be objects
386
- *
387
- * @template {object} T
388
- * @param {T[]} arr
389
- * @param {object|null} selector
390
- *
391
- * @returns {T|null} first matched item
392
- */
393
- export function findFirst(arr, selector) {
394
- const selectorObj = new Selector(selector);
395
-
396
- return selectorObj.findFirst(arr);
397
- }
398
-
399
- /**
400
- * Returns all items from the list of items that match the selector
401
- * - All items in the supplied array must be objects
402
- *
403
- * @template {object} T
404
- * @param {T[]} arr
405
- * @param {object|null} selector
406
- *
407
- * @returns {T[]} matching items
408
- */
409
- export function findAll(arr, selector) {
410
- const selectorObj = new Selector(selector);
411
-
412
- return selectorObj.findAll(arr);
413
- }
414
-
415
- /**
416
- * Convert array to an object using a list of keys for each index
417
- *
418
- * @param {array} arr
419
- * @param {string[]} keys
420
- *
421
- * @returns {object}
422
- */
423
- export function arrayToObject(arr, keys) {
424
- expect.array(arr);
425
- expect.array(keys);
426
-
427
- const obj = {};
428
-
429
- const n = Math.min(arr.length, keys.length);
430
-
431
- for (let j = 0; j < n; j = j + 1) {
432
- obj[keys[j]] = arr[j];
433
- }
434
-
435
- return obj;
436
- }
1
+ /* ------------------------------------------------------------------ Imports */
2
+
3
+ import * as expect from '../expect/index.js';
4
+
5
+ import { smallestFirst, largestFirst } from '../compare/index.js';
6
+
7
+ import { objectGet, PATH_SEPARATOR } from '../object/index.js';
8
+
9
+ import Selector from '../../classes/data/Selector.js';
10
+
11
+ /* ---------------------------------------------------------------- Internals */
12
+
13
+ const arraySlice = Array.prototype.slice;
14
+ const arrayConcat = Array.prototype.concat;
15
+
16
+ /* ------------------------------------------------------------------ Exports */
17
+
18
+ export { PATH_SEPARATOR } from '../object/index.js';
19
+
20
+ export { smallestFirst, largestFirst };
21
+
22
+ export { arraySlice, arrayConcat };
23
+
24
+ /**
25
+ * Convert a value to an array
26
+ * - Converts an Arguments object to plain JS array
27
+ * - If the value is undefined or null, an empty array is returned
28
+ * - A primitive value is "wrapped" in an array
29
+ *
30
+ * @param {any} value - Item to convert
31
+ *
32
+ * @param {number} [start]
33
+ * Index of the array to start extraction.
34
+ * (the first element of the array is at index 0)
35
+ *
36
+ * @param {number} [end]
37
+ * Index of the array where the extraction should end
38
+ *
39
+ * --
40
+ *
41
+ * @returns {Array} array
42
+ *
43
+ * --
44
+ *
45
+ * @example
46
+ * toArray( [ 1, 2, 3, 4, 5 ], 2, 4 ) returns [ 3, 4 ]
47
+ */
48
+ export function toArray(value, start, end) {
49
+ if (Array.isArray(value)) {
50
+ //
51
+ // Do not clone input value if it is already an array
52
+ //
53
+ // @note this behaviour differs from Array.from
54
+ //
55
+ if (undefined === start) {
56
+ return value;
57
+ }
58
+
59
+ return value.slice(start, end);
60
+ }
61
+
62
+ if (undefined === value || null === value) {
63
+ //
64
+ // Return an empty array if value is undefined or null
65
+ //
66
+ // ==> this behaviour differs from Array.from() <==
67
+ //
68
+ return [];
69
+ } else if (!(value instanceof Object)) {
70
+ //
71
+ // Wrap (non-object) in array (e.g. a string)
72
+ //
73
+ // @note this behaviour differs from Array.from
74
+ //
75
+ return [value];
76
+ }
77
+
78
+ if (undefined === start) {
79
+ //
80
+ // Construct a new array from the value
81
+ //
82
+ return Array.from(value);
83
+ } else {
84
+ return arraySlice.call(value, start, end);
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Convert an async iterator to an array
90
+ * - If no async iterator is passed, the value will be processed by `from()`
91
+ *
92
+ * @param {AsyncIterator|any} value
93
+ * Async iterator or value to convert to array
94
+ *
95
+ * @returns {Promise<Array>} list of items returned by the iterator
96
+ */
97
+ export async function toArrayAsync(value) {
98
+ if (
99
+ value instanceof Object &&
100
+ typeof value[Symbol.asyncIterator] === 'function'
101
+ ) {
102
+ // value is an async iterator
103
+
104
+ const arr = [];
105
+
106
+ for await (const item of value) {
107
+ arr.push(item);
108
+ }
109
+
110
+ return arr;
111
+ } else {
112
+ // value is not an async iterator
113
+
114
+ return toArray(value);
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Convert a path string to an array path
120
+ * - The path string will be spit at the `pathSeparator` token
121
+ * - If the supplied path is already an array, the original array will
122
+ * be returned
123
+ *
124
+ * @param {string|string[]} path
125
+ * String or array path (e.g. "some.path.to")
126
+ *
127
+ * @param {string} [pathSeparator=PATH_SEPARATOR]
128
+ * A custom path separator to use instead of the default "."
129
+ *
130
+ * @returns {string[]} array path (e.g. ["some", "path", "to"])
131
+ */
132
+ export function toArrayPath(path, pathSeparator = PATH_SEPARATOR) {
133
+ if (typeof path === 'string') {
134
+ return path.split(pathSeparator);
135
+ } else if (Array.isArray(path)) {
136
+ // path is already an array
137
+ return path;
138
+ } else {
139
+ throw new Error(
140
+ 'Missing or invalid parameter [path] (expected string or array)'
141
+ );
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Push a value to an array if it is not null, undefined or an empty string
147
+ *
148
+ * @template {array} T
149
+ * @param {T} arr
150
+ * @param {any} value
151
+ *
152
+ * @returns {T} arr
153
+ */
154
+ export function pushNotEmpty(arr, value) {
155
+ expect.array(arr);
156
+
157
+ if (value !== null && value !== undefined && value !== '') {
158
+ arr.push(value);
159
+ }
160
+
161
+ return arr;
162
+ }
163
+
164
+ /**
165
+ * Loop over the supplied array and call the callback for every element
166
+ * - The callback will receive the current element of the array as
167
+ * first argument
168
+ * - Via [additionalArguments], additional arguments may be supplied that
169
+ * will be passed to the callback function
170
+ *
171
+ * @param {array} arr - The array to loop
172
+ * @param {function} callback - Callback to call for every element
173
+ * @param {array} additionalArguments The additional arguments
174
+ */
175
+ export function loop(arr, callback, additionalArguments) {
176
+ expect.function(callback);
177
+
178
+ if (!arr) {
179
+ return;
180
+ }
181
+
182
+ expect.array(arr);
183
+
184
+ if (!arr.length) {
185
+ // Nothing to do
186
+ return;
187
+ }
188
+
189
+ // >> CASE A: no additional arguments
190
+
191
+ if (!additionalArguments) {
192
+ for (let j = 0, n = arr.length; j < n; j = j + 1) {
193
+ callback(arr[j]);
194
+ }
195
+
196
+ return;
197
+ }
198
+
199
+ // >> CASE B: additional arguments
200
+
201
+ expect.arrayLike(additionalArguments);
202
+
203
+ const args = [null, ...additionalArguments];
204
+
205
+ for (let j = 0, n = arr.length; j < n; j = j + 1) {
206
+ args[0] = arr[j];
207
+ callback(...args);
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Get a list of all values from the items in the array at the
213
+ * specified path
214
+ *
215
+ * @param {object[]} items
216
+ *
217
+ * @param {object} [options]
218
+ *
219
+ * @param {boolean} [options.outputAsSet=false]
220
+ * Output a Set instead of an array
221
+ *
222
+ * @param {string} [options.pathSeparator=PATH_SEPARATOR]
223
+ * A custom path separator to use instead of the default "."
224
+ *
225
+ *
226
+ *
227
+ * @returns {any[]|Set<any>} values
228
+ */
229
+ export function pathValues(items, path, options = {}) {
230
+ // == Process parameters
231
+
232
+ expect.array(items);
233
+
234
+ const { outputAsSet = false, pathSeparator = PATH_SEPARATOR } = options;
235
+
236
+ if (typeof path === 'string') {
237
+ path = toArrayPath(path, pathSeparator);
238
+ } else {
239
+ expect.stringArray(path);
240
+ }
241
+
242
+ // >> CASE A: Output as plain Array
243
+
244
+ if (!outputAsSet) {
245
+ const values = [];
246
+
247
+ for (let j = 0, n = items.length; j < n; j = j + 1) {
248
+ const item = items[j];
249
+
250
+ expect.object(item);
251
+
252
+ values.push(objectGet(item, path));
253
+ }
254
+
255
+ return values;
256
+ }
257
+
258
+ // >> CASE B: Output as Set
259
+
260
+ const values = new Set();
261
+
262
+ for (let j = 0, n = items.length; j < n; j = j + 1) {
263
+ const item = items[j];
264
+
265
+ expect.object(item);
266
+
267
+ values.add(objectGet(item, path));
268
+ }
269
+
270
+ return values;
271
+ }
272
+
273
+ /**
274
+ * Sort function that sorts a list of objects by values encountered at the
275
+ * specified key values of the object.
276
+ * - Sorts array inline (no new array is returned)
277
+ * - This method is faster than `sortByPathValue` since the value lookup in the
278
+ * items can be done faster
279
+ *
280
+ * @param {Object[]} items - List of items to sort
281
+ *
282
+ * @param {string} key
283
+ * Object key to use for getting the values in the items to compare.
284
+ *
285
+ * @param {function} [compareFn=smallestFirst]
286
+ * Function to use to compare values. See `compare.js`.
287
+ */
288
+ export function sortByKeyValue(items, key, compareFn = smallestFirst) {
289
+ expect.function(compareFn);
290
+
291
+ expect.array(items);
292
+
293
+ expect.string(key);
294
+
295
+ items.sort((itemA, itemB) => {
296
+ return compareFn(itemA[key], itemB[key]);
297
+ });
298
+ }
299
+
300
+ /**
301
+ * Sort function that sorts a list of objects by values encountered at the
302
+ * specified key values of the object.
303
+ * - Sorts array inline (no new array is returned)
304
+ * - This method is faster than `sortByPathValue` since the value lookup in the
305
+ * items can be done faster
306
+ *
307
+ * @param {Object[]} items - List of items to sort
308
+ *
309
+ * @param {string} key
310
+ * Object key to use for getting the values in the items to compare.
311
+ *
312
+ * @param {function} [compareFn=smallestFirst]
313
+ * Function to use to compare values. See `compare.js`.
314
+ */
315
+ export function sortByKeyValueReversed(items, key, compareFn = largestFirst) {
316
+ expect.function(compareFn);
317
+
318
+ expect.array(items);
319
+
320
+ expect.string(key);
321
+
322
+ items.sort((itemA, itemB) => {
323
+ return compareFn(itemA[key], itemB[key]);
324
+ });
325
+ }
326
+
327
+ /**
328
+ * Sort function that sorts a list of objects by values encountered at the
329
+ * specified object path.
330
+ * - Sorts array inline (no new array is returned)
331
+ *
332
+ * @param {Object[]} items - List of items to sort
333
+ *
334
+ * @param {string[]|string} path
335
+ * Path to use for getting the values in the items to compare.
336
+ * If a string path has been supplied, the default path separator
337
+ * (PATH_SEPARATOR) is assumed. Use `toArrayPath` to convert paths with
338
+ * custom path separators.
339
+ *
340
+ * @param {function} [compareFn=smallestFirst]
341
+ * Function to use to compare values. See `compare.js`.
342
+ */
343
+ export function sortByPathValue(items, path, compareFn = smallestFirst) {
344
+ expect.function(compareFn);
345
+
346
+ expect.array(items);
347
+
348
+ if (typeof path === 'string') {
349
+ path = toArrayPath(path);
350
+ } else {
351
+ expect.stringArray(path);
352
+ }
353
+
354
+ const cache = new Map();
355
+
356
+ items.sort((itemA, itemB) => {
357
+ let valueA = cache.get(itemA);
358
+
359
+ if (undefined === valueA) {
360
+ valueA = objectGet(itemA, path);
361
+
362
+ if (undefined !== valueA) {
363
+ cache.set(itemA, valueA);
364
+ }
365
+ }
366
+
367
+ let valueB = cache.get(itemB);
368
+
369
+ if (undefined === valueB) {
370
+ valueB = objectGet(itemB, path);
371
+
372
+ if (undefined !== valueB) {
373
+ cache.set(itemB, valueB);
374
+ }
375
+ }
376
+
377
+ return compareFn(valueA, valueB);
378
+ });
379
+
380
+ cache.clear();
381
+ }
382
+
383
+ /**
384
+ * Find the first item in the list of objects that matches the selector
385
+ * - All items in the supplied array must be objects
386
+ *
387
+ * @template {object} T
388
+ * @param {T[]} arr
389
+ * @param {object|null} selector
390
+ *
391
+ * @returns {T|null} first matched item
392
+ */
393
+ export function findFirst(arr, selector) {
394
+ const selectorObj = new Selector(selector);
395
+
396
+ return selectorObj.findFirst(arr);
397
+ }
398
+
399
+ /**
400
+ * Returns all items from the list of items that match the selector
401
+ * - All items in the supplied array must be objects
402
+ *
403
+ * @template {object} T
404
+ * @param {T[]} arr
405
+ * @param {object|null} selector
406
+ *
407
+ * @returns {T[]} matching items
408
+ */
409
+ export function findAll(arr, selector) {
410
+ const selectorObj = new Selector(selector);
411
+
412
+ return selectorObj.findAll(arr);
413
+ }
414
+
415
+ /**
416
+ * Convert array to an object using a list of keys for each index
417
+ *
418
+ * @param {array} arr
419
+ * @param {string[]} keys
420
+ *
421
+ * @returns {object}
422
+ */
423
+ export function arrayToObject(arr, keys) {
424
+ expect.array(arr);
425
+ expect.array(keys);
426
+
427
+ const obj = {};
428
+
429
+ const n = Math.min(arr.length, keys.length);
430
+
431
+ for (let j = 0; j < n; j = j + 1) {
432
+ obj[keys[j]] = arr[j];
433
+ }
434
+
435
+ return obj;
436
+ }