@hkdigital/lib-core 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/README.md +149 -0
  2. package/dist/assets/autospuiten/car-paint-picker/army-green.jpg +0 -0
  3. package/dist/assets/autospuiten/car-paint-picker/electric-blue.jpg +0 -0
  4. package/dist/assets/autospuiten/car-paint-picker/lemon-yellow.jpg +0 -0
  5. package/dist/assets/autospuiten/car-paint-picker/opaque-purple.jpg +0 -0
  6. package/dist/assets/autospuiten/car-paint-picker/rusty.jpg +0 -0
  7. package/dist/assets/autospuiten/car-paint-picker/sunset-orange.jpg +0 -0
  8. package/dist/assets/autospuiten/car-paint-picker/tomato-red.jpg +0 -0
  9. package/dist/assets/autospuiten/car-paint-picker.d.ts +17 -0
  10. package/dist/assets/autospuiten/car-paint-picker.js +41 -0
  11. package/dist/assets/autospuiten/labels.d.ts +7 -0
  12. package/dist/assets/autospuiten/labels.js +7 -0
  13. package/dist/classes/cache/IndexedDbCache.d.ts +216 -0
  14. package/dist/classes/cache/IndexedDbCache.js +1407 -0
  15. package/dist/classes/cache/MemoryResponseCache.d.ts +106 -0
  16. package/dist/classes/cache/MemoryResponseCache.js +138 -0
  17. package/dist/classes/cache/index.d.ts +3 -0
  18. package/dist/classes/cache/index.js +5 -0
  19. package/dist/classes/cache/typedef.d.ts +67 -0
  20. package/dist/classes/cache/typedef.js +41 -0
  21. package/dist/classes/data/IterableTree.d.ts +51 -0
  22. package/dist/classes/data/IterableTree.js +243 -0
  23. package/dist/classes/data/Selector.d.ts +30 -0
  24. package/dist/classes/data/Selector.js +190 -0
  25. package/dist/classes/data/index.d.ts +2 -0
  26. package/dist/classes/data/index.js +2 -0
  27. package/dist/classes/events/EventEmitter.d.ts +142 -0
  28. package/dist/classes/events/EventEmitter.js +275 -0
  29. package/dist/classes/events/index.d.ts +1 -0
  30. package/dist/classes/events/index.js +2 -0
  31. package/dist/classes/index.d.ts +4 -0
  32. package/dist/classes/index.js +4 -0
  33. package/dist/classes/logging/Logger.d.ts +78 -0
  34. package/dist/classes/logging/Logger.js +210 -0
  35. package/dist/classes/logging/constants.d.ts +12 -0
  36. package/dist/classes/logging/constants.js +16 -0
  37. package/dist/classes/logging/index.d.ts +2 -0
  38. package/dist/classes/logging/index.js +4 -0
  39. package/dist/classes/logging/typedef.d.ts +34 -0
  40. package/dist/classes/logging/typedef.js +17 -0
  41. package/dist/classes/promise/HkPromise.d.ts +121 -0
  42. package/dist/classes/promise/HkPromise.js +377 -0
  43. package/dist/classes/promise/index.d.ts +1 -0
  44. package/dist/classes/promise/index.js +1 -0
  45. package/dist/classes/services/ServiceBase.d.ts +163 -0
  46. package/dist/classes/services/ServiceBase.js +463 -0
  47. package/dist/classes/services/ServiceManager.d.ts +179 -0
  48. package/dist/classes/services/ServiceManager.js +614 -0
  49. package/dist/classes/services/index.d.ts +4 -0
  50. package/dist/classes/services/index.js +5 -0
  51. package/dist/classes/services/service-states.d.ts +159 -0
  52. package/dist/classes/services/service-states.js +205 -0
  53. package/dist/classes/services/typedef.d.ts +247 -0
  54. package/dist/classes/services/typedef.js +179 -0
  55. package/dist/classes/stores/SubscribersCount.d.ts +39 -0
  56. package/dist/classes/stores/SubscribersCount.js +107 -0
  57. package/dist/classes/stores/index.d.ts +1 -0
  58. package/dist/classes/stores/index.js +1 -0
  59. package/dist/classes/streams/LogTransformStream.d.ts +4 -0
  60. package/dist/classes/streams/LogTransformStream.js +19 -0
  61. package/dist/classes/streams/ServerEventsStore.d.ts +22 -0
  62. package/dist/classes/streams/ServerEventsStore.js +110 -0
  63. package/dist/classes/streams/TimeStampSource.d.ts +13 -0
  64. package/dist/classes/streams/TimeStampSource.js +26 -0
  65. package/dist/classes/streams/index.d.ts +3 -0
  66. package/dist/classes/streams/index.js +3 -0
  67. package/dist/classes/svelte/audio/AudioLoader.svelte.d.ts +30 -0
  68. package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -0
  69. package/dist/classes/svelte/audio/AudioScene.svelte.d.ts +74 -0
  70. package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -0
  71. package/dist/classes/svelte/audio/mocks.d.ts +7 -0
  72. package/dist/classes/svelte/audio/mocks.js +35 -0
  73. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.d.ts +50 -0
  74. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -0
  75. package/dist/classes/svelte/finite-state-machine/index.d.ts +1 -0
  76. package/dist/classes/svelte/finite-state-machine/index.js +1 -0
  77. package/dist/classes/svelte/image/ImageLoader.svelte.d.ts +19 -0
  78. package/dist/classes/svelte/image/ImageLoader.svelte.js +45 -0
  79. package/dist/classes/svelte/image/ImageScene.svelte.d.ts +78 -0
  80. package/dist/classes/svelte/image/ImageScene.svelte.js +249 -0
  81. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.d.ts +43 -0
  82. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -0
  83. package/dist/classes/svelte/image/index.d.ts +2 -0
  84. package/dist/classes/svelte/image/index.js +4 -0
  85. package/dist/classes/svelte/image/mocks.d.ts +7 -0
  86. package/dist/classes/svelte/image/mocks.js +35 -0
  87. package/dist/classes/svelte/image/typedef.d.ts +16 -0
  88. package/dist/classes/svelte/image/typedef.js +8 -0
  89. package/dist/classes/svelte/index.d.ts +9 -0
  90. package/dist/classes/svelte/index.js +14 -0
  91. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.d.ts +12 -0
  92. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -0
  93. package/dist/classes/svelte/loading-state-machine/constants.d.ts +12 -0
  94. package/dist/classes/svelte/loading-state-machine/constants.js +16 -0
  95. package/dist/classes/svelte/loading-state-machine/index.d.ts +2 -0
  96. package/dist/classes/svelte/loading-state-machine/index.js +3 -0
  97. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.d.ts +91 -0
  98. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -0
  99. package/dist/classes/svelte/network-loader/constants.d.ts +2 -0
  100. package/dist/classes/svelte/network-loader/constants.js +3 -0
  101. package/dist/classes/svelte/network-loader/index.d.ts +2 -0
  102. package/dist/classes/svelte/network-loader/index.js +3 -0
  103. package/dist/classes/svelte/network-loader/mocks.d.ts +7 -0
  104. package/dist/classes/svelte/network-loader/mocks.js +30 -0
  105. package/dist/classes/svelte/network-loader/typedef.d.ts +7 -0
  106. package/dist/classes/svelte/network-loader/typedef.js +8 -0
  107. package/dist/components/area/HkArea.svelte +49 -0
  108. package/dist/components/area/HkArea.svelte.d.ts +26 -0
  109. package/dist/components/area/HkGridArea.svelte +77 -0
  110. package/dist/components/area/HkGridArea.svelte.d.ts +42 -0
  111. package/dist/components/area/index.d.ts +2 -0
  112. package/dist/components/area/index.js +2 -0
  113. package/dist/components/buttons/button/Button.svelte +82 -0
  114. package/dist/components/buttons/button/Button.svelte.d.ts +44 -0
  115. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -0
  116. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte.d.ts +16 -0
  117. package/dist/components/buttons/button-text/TextButton.svelte +21 -0
  118. package/dist/components/buttons/button-text/TextButton.svelte.d.ts +12 -0
  119. package/dist/components/buttons/index.d.ts +3 -0
  120. package/dist/components/buttons/index.js +3 -0
  121. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -0
  122. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +6 -0
  123. package/dist/components/debug/index.d.ts +1 -0
  124. package/dist/components/debug/index.js +1 -0
  125. package/dist/components/drag-drop/DragController.d.ts +20 -0
  126. package/dist/components/drag-drop/DragController.js +44 -0
  127. package/dist/components/drag-drop/DragDropContext.svelte +111 -0
  128. package/dist/components/drag-drop/DragDropContext.svelte.d.ts +18 -0
  129. package/dist/components/drag-drop/Draggable.svelte +519 -0
  130. package/dist/components/drag-drop/Draggable.svelte.d.ts +95 -0
  131. package/dist/components/drag-drop/DropZone.svelte +258 -0
  132. package/dist/components/drag-drop/DropZone.svelte.d.ts +96 -0
  133. package/dist/components/drag-drop/DropZoneArea.svelte +119 -0
  134. package/dist/components/drag-drop/DropZoneArea.svelte.d.ts +90 -0
  135. package/dist/components/drag-drop/DropZoneList.svelte +125 -0
  136. package/dist/components/drag-drop/DropZoneList.svelte.d.ts +92 -0
  137. package/dist/components/drag-drop/actions.d.ts +9 -0
  138. package/dist/components/drag-drop/actions.js +26 -0
  139. package/dist/components/drag-drop/drag-state.svelte.d.ts +97 -0
  140. package/dist/components/drag-drop/drag-state.svelte.js +322 -0
  141. package/dist/components/drag-drop/index.d.ts +6 -0
  142. package/dist/components/drag-drop/index.js +7 -0
  143. package/dist/components/drag-drop/util.d.ts +0 -0
  144. package/dist/components/drag-drop/util.js +85 -0
  145. package/dist/components/hkdev/blocks/TextBlock.svelte +47 -0
  146. package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +24 -0
  147. package/dist/components/hkdev/buttons/CheckButton.svelte +63 -0
  148. package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +34 -0
  149. package/dist/components/icons/HkIcon.svelte +86 -0
  150. package/dist/components/icons/HkIcon.svelte.d.ts +22 -0
  151. package/dist/components/icons/HkTabIcon.svelte +116 -0
  152. package/dist/components/icons/HkTabIcon.svelte.d.ts +40 -0
  153. package/dist/components/icons/SteezeIcon.svelte +97 -0
  154. package/dist/components/icons/SteezeIcon.svelte.d.ts +22 -0
  155. package/dist/components/icons/index.d.ts +4 -0
  156. package/dist/components/icons/index.js +6 -0
  157. package/dist/components/icons/typedef.d.ts +13 -0
  158. package/dist/components/icons/typedef.js +16 -0
  159. package/dist/components/index.d.ts +0 -0
  160. package/dist/components/index.js +2 -0
  161. package/dist/components/inputs/index.d.ts +1 -0
  162. package/dist/components/inputs/index.js +1 -0
  163. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -0
  164. package/dist/components/inputs/text-input/TextInput.svelte +223 -0
  165. package/dist/components/inputs/text-input/TextInput.svelte.d.ts +56 -0
  166. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -0
  167. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -0
  168. package/dist/components/inputs/text-input/assets/IconInvalid.svelte.d.ts +26 -0
  169. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -0
  170. package/dist/components/inputs/text-input/assets/IconValid.svelte.d.ts +26 -0
  171. package/dist/components/layout/grid-layers/GridLayers.svelte +63 -0
  172. package/dist/components/layout/grid-layers/GridLayers.svelte.d.ts +26 -0
  173. package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
  174. package/dist/components/layout/grid-layers/util.d.ts +19 -0
  175. package/dist/components/layout/grid-layers/util.js +74 -0
  176. package/dist/components/layout/index.d.ts +1 -0
  177. package/dist/components/layout/index.js +1 -0
  178. package/dist/components/panels/index.d.ts +1 -0
  179. package/dist/components/panels/index.js +1 -0
  180. package/dist/components/panels/panel/Panel.svelte +43 -0
  181. package/dist/components/panels/panel/Panel.svelte.d.ts +24 -0
  182. package/dist/components/rows/index.d.ts +2 -0
  183. package/dist/components/rows/index.js +3 -0
  184. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -0
  185. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +26 -0
  186. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -0
  187. package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +26 -0
  188. package/dist/components/tab-bar/HkTabBar.state.svelte.d.ts +54 -0
  189. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -0
  190. package/dist/components/tab-bar/HkTabBar.svelte +74 -0
  191. package/dist/components/tab-bar/HkTabBar.svelte.d.ts +34 -0
  192. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.d.ts +19 -0
  193. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -0
  194. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -0
  195. package/dist/components/tab-bar/HkTabBarSelector.svelte.d.ts +36 -0
  196. package/dist/components/tab-bar/index.d.ts +5 -0
  197. package/dist/components/tab-bar/index.js +17 -0
  198. package/dist/components/tab-bar/typedef.d.ts +8 -0
  199. package/dist/components/tab-bar/typedef.js +11 -0
  200. package/dist/config/imagetools-config.d.ts +26 -0
  201. package/dist/config/imagetools-config.js +189 -0
  202. package/dist/config/imagetools.d.ts +72 -0
  203. package/dist/constants/bases.d.ts +10 -0
  204. package/dist/constants/bases.js +13 -0
  205. package/dist/constants/errors/api.d.ts +10 -0
  206. package/dist/constants/errors/api.js +9 -0
  207. package/dist/constants/errors/generic.d.ts +20 -0
  208. package/dist/constants/errors/generic.js +20 -0
  209. package/dist/constants/errors/http.d.ts +16 -0
  210. package/dist/constants/errors/http.js +16 -0
  211. package/dist/constants/errors/index.d.ts +4 -0
  212. package/dist/constants/errors/index.js +4 -0
  213. package/dist/constants/errors/jwt.d.ts +8 -0
  214. package/dist/constants/errors/jwt.js +5 -0
  215. package/dist/constants/http/headers.d.ts +5 -0
  216. package/dist/constants/http/headers.js +6 -0
  217. package/dist/constants/http/index.d.ts +2 -0
  218. package/dist/constants/http/index.js +2 -0
  219. package/dist/constants/http/methods.d.ts +7 -0
  220. package/dist/constants/http/methods.js +14 -0
  221. package/dist/constants/index.d.ts +2 -0
  222. package/dist/constants/index.js +3 -0
  223. package/dist/constants/mime/application.d.ts +3 -0
  224. package/dist/constants/mime/application.js +5 -0
  225. package/dist/constants/mime/audio.d.ts +10 -0
  226. package/dist/constants/mime/audio.js +13 -0
  227. package/dist/constants/mime/image.d.ts +3 -0
  228. package/dist/constants/mime/image.js +3 -0
  229. package/dist/constants/mime/index.d.ts +4 -0
  230. package/dist/constants/mime/index.js +4 -0
  231. package/dist/constants/mime/text.d.ts +2 -0
  232. package/dist/constants/mime/text.js +2 -0
  233. package/dist/constants/regexp/index.d.ts +3 -0
  234. package/dist/constants/regexp/index.js +31 -0
  235. package/dist/constants/regexp/inspiratie.js__ +95 -0
  236. package/dist/constants/regexp/text.d.ts +47 -0
  237. package/dist/constants/regexp/text.js +49 -0
  238. package/dist/constants/regexp/user.d.ts +6 -0
  239. package/dist/constants/regexp/user.js +33 -0
  240. package/dist/constants/regexp/web.d.ts +1 -0
  241. package/dist/constants/regexp/web.js +3 -0
  242. package/dist/constants/state-labels/drag-states.d.ts +5 -0
  243. package/dist/constants/state-labels/drag-states.js +6 -0
  244. package/dist/constants/state-labels/drop-states.d.ts +4 -0
  245. package/dist/constants/state-labels/drop-states.js +6 -0
  246. package/dist/constants/state-labels/input-states.d.ts +8 -0
  247. package/dist/constants/state-labels/input-states.js +11 -0
  248. package/dist/constants/state-labels/submit-states.d.ts +4 -0
  249. package/dist/constants/state-labels/submit-states.js +4 -0
  250. package/dist/constants/time.d.ts +18 -0
  251. package/dist/constants/time.js +28 -0
  252. package/dist/css/utilities.css +43 -0
  253. package/dist/design/design-config.d.ts +157 -0
  254. package/dist/design/design-config.js +73 -0
  255. package/dist/design/tailwind-theme-extend.d.ts +23 -0
  256. package/dist/design/tailwind-theme-extend.js +158 -0
  257. package/dist/features/button-group/ButtonGroup.svelte +82 -0
  258. package/dist/features/button-group/ButtonGroup.svelte.d.ts +34 -0
  259. package/dist/features/button-group/typedef.d.ts +7 -0
  260. package/dist/features/button-group/typedef.js +10 -0
  261. package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -0
  262. package/dist/features/compare-left-right/CompareLeftRight.svelte.d.ts +18 -0
  263. package/dist/features/compare-left-right/index.d.ts +1 -0
  264. package/dist/features/compare-left-right/index.js +1 -0
  265. package/dist/features/game-box/GameBox.svelte +577 -0
  266. package/dist/features/game-box/GameBox.svelte.d.ts +140 -0
  267. package/dist/features/game-box/gamebox.util.d.ts +32 -0
  268. package/dist/features/game-box/gamebox.util.js +83 -0
  269. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.d.ts +6 -0
  270. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -0
  271. package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -0
  272. package/dist/features/hk-app-layout/HkAppLayout.svelte.d.ts +19 -0
  273. package/dist/features/image-box/ImageBox.svelte +210 -0
  274. package/dist/features/image-box/ImageBox.svelte.d.ts +38 -0
  275. package/dist/features/image-box/index.d.ts +4 -0
  276. package/dist/features/image-box/index.js +5 -0
  277. package/dist/features/image-box/typedef.d.ts +4 -0
  278. package/dist/features/image-box/typedef.js +32 -0
  279. package/dist/features/index.d.ts +11 -0
  280. package/dist/features/index.js +23 -0
  281. package/dist/features/presenter/ImageSlide.svelte +64 -0
  282. package/dist/features/presenter/ImageSlide.svelte.d.ts +36 -0
  283. package/dist/features/presenter/Presenter.state.svelte.d.ts +74 -0
  284. package/dist/features/presenter/Presenter.state.svelte.js +638 -0
  285. package/dist/features/presenter/Presenter.svelte +142 -0
  286. package/dist/features/presenter/Presenter.svelte.d.ts +18 -0
  287. package/dist/features/presenter/constants.d.ts +5 -0
  288. package/dist/features/presenter/constants.js +7 -0
  289. package/dist/features/presenter/index.d.ts +6 -0
  290. package/dist/features/presenter/index.js +10 -0
  291. package/dist/features/presenter/typedef.d.ts +92 -0
  292. package/dist/features/presenter/typedef.js +106 -0
  293. package/dist/features/presenter/util.d.ts +63 -0
  294. package/dist/features/presenter/util.js +210 -0
  295. package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -0
  296. package/dist/features/virtual-viewport/VirtualViewport.svelte.d.ts +42 -0
  297. package/dist/index.d.ts +0 -0
  298. package/dist/index.js +0 -0
  299. package/dist/logging/adapters/console.d.ts +48 -0
  300. package/dist/logging/adapters/console.js +114 -0
  301. package/dist/logging/adapters/pino.d.ts +25 -0
  302. package/dist/logging/adapters/pino.js +60 -0
  303. package/dist/logging/constants.d.ts +1 -0
  304. package/dist/logging/constants.js +1 -0
  305. package/dist/logging/factories/client.d.ts +10 -0
  306. package/dist/logging/factories/client.js +21 -0
  307. package/dist/logging/factories/server.d.ts +10 -0
  308. package/dist/logging/factories/server.js +22 -0
  309. package/dist/logging/factories/universal.d.ts +9 -0
  310. package/dist/logging/factories/universal.js +23 -0
  311. package/dist/logging/index.d.ts +5 -0
  312. package/dist/logging/index.js +8 -0
  313. package/dist/schemas/index.d.ts +1 -0
  314. package/dist/schemas/index.js +1 -0
  315. package/dist/schemas/validate-url.d.ts +30 -0
  316. package/dist/schemas/validate-url.js +180 -0
  317. package/dist/server/index.d.ts +1 -0
  318. package/dist/server/index.js +1 -0
  319. package/dist/server/logger.d.ts +25 -0
  320. package/dist/server/logger.js +94 -0
  321. package/dist/states/index.d.ts +1 -0
  322. package/dist/states/index.js +1 -0
  323. package/dist/states/navigation.svelte.d.ts +23 -0
  324. package/dist/states/navigation.svelte.js +55 -0
  325. package/dist/stores/index.d.ts +1 -0
  326. package/dist/stores/index.js +1 -0
  327. package/dist/stores/theme.d.ts +28 -0
  328. package/dist/stores/theme.js +80 -0
  329. package/dist/themes/hkdev/components/blocks/text-block.css +34 -0
  330. package/dist/themes/hkdev/components/boxes/game-box.css +11 -0
  331. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -0
  332. package/dist/themes/hkdev/components/buttons/button-text.css +32 -0
  333. package/dist/themes/hkdev/components/buttons/button.css +146 -0
  334. package/dist/themes/hkdev/components/buttons/skip-button.css +5 -0
  335. package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -0
  336. package/dist/themes/hkdev/components/drag-drop/drop-zone.css +58 -0
  337. package/dist/themes/hkdev/components/icons/icon-steeze.css +16 -0
  338. package/dist/themes/hkdev/components/inputs/text-input.css +102 -0
  339. package/dist/themes/hkdev/components/panels/panel.css +25 -0
  340. package/dist/themes/hkdev/components/rows/panel-grid-row.css +4 -0
  341. package/dist/themes/hkdev/components/rows/panel-row-2.css +5 -0
  342. package/dist/themes/hkdev/components.css +29 -0
  343. package/dist/themes/hkdev/debug.css +2 -0
  344. package/dist/themes/hkdev/global/layout.css +32 -0
  345. package/dist/themes/hkdev/global/on-colors.css +32 -0
  346. package/dist/themes/hkdev/globals.css +4 -0
  347. package/dist/themes/hkdev/responsive.css +12 -0
  348. package/dist/themes/hkdev/theme-ext.d.ts +4 -0
  349. package/dist/themes/hkdev/theme-ext.js +12 -0
  350. package/dist/themes/hkdev/theme.css +219 -0
  351. package/dist/themes/index.d.ts +1 -0
  352. package/dist/themes/index.js +1 -0
  353. package/dist/typedef/context.d.ts +3 -0
  354. package/dist/typedef/context.js +6 -0
  355. package/dist/typedef/drag.d.ts +29 -0
  356. package/dist/typedef/drag.js +25 -0
  357. package/dist/typedef/drop.d.ts +15 -0
  358. package/dist/typedef/drop.js +12 -0
  359. package/dist/typedef/image.d.ts +12 -0
  360. package/dist/typedef/image.js +38 -0
  361. package/dist/typedef/index.d.ts +4 -0
  362. package/dist/typedef/index.js +4 -0
  363. package/dist/util/array/index.d.ts +183 -0
  364. package/dist/util/array/index.js +436 -0
  365. package/dist/util/bases/base58.d.ts +58 -0
  366. package/dist/util/bases/base58.js +262 -0
  367. package/dist/util/bases/index.d.ts +1 -0
  368. package/dist/util/bases/index.js +1 -0
  369. package/dist/util/compare/index.d.ts +68 -0
  370. package/dist/util/compare/index.js +247 -0
  371. package/dist/util/css/css-vars.d.ts +24 -0
  372. package/dist/util/css/css-vars.js +83 -0
  373. package/dist/util/css/index.d.ts +1 -0
  374. package/dist/util/css/index.js +1 -0
  375. package/dist/util/design-system/components/states.d.ts +15 -0
  376. package/dist/util/design-system/components/states.js +22 -0
  377. package/dist/util/design-system/css/clamp.d.ts +17 -0
  378. package/dist/util/design-system/css/clamp.js +66 -0
  379. package/dist/util/design-system/css/root-design-vars.d.ts +77 -0
  380. package/dist/util/design-system/css/root-design-vars.js +102 -0
  381. package/dist/util/design-system/index.d.ts +5 -0
  382. package/dist/util/design-system/index.js +5 -0
  383. package/dist/util/design-system/layout/scaling.d.ts +98 -0
  384. package/dist/util/design-system/layout/scaling.js +228 -0
  385. package/dist/util/design-system/skeleton.d.ts +41 -0
  386. package/dist/util/design-system/skeleton.js +208 -0
  387. package/dist/util/design-system/tailwind.d.ts +183 -0
  388. package/dist/util/design-system/tailwind.js +288 -0
  389. package/dist/util/env/index.d.ts +1 -0
  390. package/dist/util/env/index.js +9 -0
  391. package/dist/util/exceptions/index.d.ts +15 -0
  392. package/dist/util/exceptions/index.js +23 -0
  393. package/dist/util/expect/arrays.d.ts +30 -0
  394. package/dist/util/expect/arrays.js +47 -0
  395. package/dist/util/expect/index.d.ts +103 -0
  396. package/dist/util/expect/index.js +259 -0
  397. package/dist/util/expect/primitives.d.ts +30 -0
  398. package/dist/util/expect/primitives.js +55 -0
  399. package/dist/util/expect/url.d.ts +32 -0
  400. package/dist/util/expect/url.js +60 -0
  401. package/dist/util/function/index.d.ts +34 -0
  402. package/dist/util/function/index.js +218 -0
  403. package/dist/util/geo/index.d.ts +10 -0
  404. package/dist/util/geo/index.js +26 -0
  405. package/dist/util/http/caching.d.ts +28 -0
  406. package/dist/util/http/caching.js +263 -0
  407. package/dist/util/http/errors.d.ts +18 -0
  408. package/dist/util/http/errors.js +97 -0
  409. package/dist/util/http/headers.d.ts +40 -0
  410. package/dist/util/http/headers.js +75 -0
  411. package/dist/util/http/http-request.d.ts +267 -0
  412. package/dist/util/http/http-request.js +578 -0
  413. package/dist/util/http/index.d.ts +6 -0
  414. package/dist/util/http/index.js +22 -0
  415. package/dist/util/http/json-request.d.ts +84 -0
  416. package/dist/util/http/json-request.js +224 -0
  417. package/dist/util/http/mocks.d.ts +20 -0
  418. package/dist/util/http/mocks.js +65 -0
  419. package/dist/util/http/response.d.ts +125 -0
  420. package/dist/util/http/response.js +294 -0
  421. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  422. package/dist/util/http/typedef.d.ts +184 -0
  423. package/dist/util/http/typedef.js +93 -0
  424. package/dist/util/http/url.d.ts +25 -0
  425. package/dist/util/http/url.js +52 -0
  426. package/dist/util/image/index.d.ts +25 -0
  427. package/dist/util/image/index.js +86 -0
  428. package/dist/util/index.d.ts +3 -0
  429. package/dist/util/index.js +3 -0
  430. package/dist/util/is/index.d.ts +68 -0
  431. package/dist/util/is/index.js +140 -0
  432. package/dist/util/iterate/index.d.ts +131 -0
  433. package/dist/util/iterate/index.js +234 -0
  434. package/dist/util/object/index.d.ts +326 -0
  435. package/dist/util/object/index.js +1361 -0
  436. package/dist/util/singleton/index.d.ts +34 -0
  437. package/dist/util/singleton/index.js +97 -0
  438. package/dist/util/string/array-path.d.ts +15 -0
  439. package/dist/util/string/array-path.js +75 -0
  440. package/dist/util/string/convert.d.ts +22 -0
  441. package/dist/util/string/convert.js +54 -0
  442. package/dist/util/string/fs.d.ts +55 -0
  443. package/dist/util/string/fs.js +226 -0
  444. package/dist/util/string/index.d.ts +5 -0
  445. package/dist/util/string/index.js +5 -0
  446. package/dist/util/string/interpolate.d.ts +22 -0
  447. package/dist/util/string/interpolate.js +61 -0
  448. package/dist/util/string/pad.d.ts +8 -0
  449. package/dist/util/string/pad.js +10 -0
  450. package/dist/util/svelte/index.d.ts +3 -0
  451. package/dist/util/svelte/index.js +4 -0
  452. package/dist/util/svelte/loading/loading-tracker.svelte.d.ts +31 -0
  453. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -0
  454. package/dist/util/svelte/observe/index.d.ts +10 -0
  455. package/dist/util/svelte/observe/index.js +49 -0
  456. package/dist/util/svelte/state-context/index.d.ts +18 -0
  457. package/dist/util/svelte/state-context/index.js +117 -0
  458. package/dist/util/svelte/wait/index.d.ts +15 -0
  459. package/dist/util/svelte/wait/index.js +38 -0
  460. package/dist/util/sveltekit/index.d.ts +1 -0
  461. package/dist/util/sveltekit/index.js +1 -0
  462. package/dist/util/sveltekit/route-folders/index.d.ts +28 -0
  463. package/dist/util/sveltekit/route-folders/index.js +101 -0
  464. package/dist/util/time/index.d.ts +108 -0
  465. package/dist/util/time/index.js +323 -0
  466. package/dist/util/unique/index.d.ts +81 -0
  467. package/dist/util/unique/index.js +249 -0
  468. package/dist/valibot/date.js__ +10 -0
  469. package/dist/valibot/index.d.ts +4 -0
  470. package/dist/valibot/index.js +9 -0
  471. package/dist/valibot/url.d.ts +26 -0
  472. package/dist/valibot/url.js +95 -0
  473. package/dist/valibot/user.d.ts +6 -0
  474. package/dist/valibot/user.js +23 -0
  475. package/dist/zod/all.d.ts +6 -0
  476. package/dist/zod/all.js +33 -0
  477. package/dist/zod/generic.d.ts +6 -0
  478. package/dist/zod/generic.js +11 -0
  479. package/dist/zod/javascript.d.ts +8 -0
  480. package/dist/zod/javascript.js +32 -0
  481. package/dist/zod/user.d.ts +9 -0
  482. package/dist/zod/user.js +16 -0
  483. package/dist/zod/web.d.ts +21 -0
  484. package/dist/zod/web.js +52 -0
  485. package/package.json +133 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Returns the unchanged image meta object or the last item of
3
+ * an array of ImageMeta objects. This is assumed to be a list
4
+ * of sorted responsive image formats, so it should be the
5
+ * largest image.
6
+ *
7
+ * @param {ImageMeta|ImageMeta[]} imageMeta
8
+ */
9
+ export function toSingleImageMeta(imageMeta) {
10
+ if (Array.isArray(imageMeta)) {
11
+ if (!imageMeta.length) {
12
+ throw new Error('List of ImageMeta objects is empty');
13
+ }
14
+ imageMeta = imageMeta[imageMeta.length - 1];
15
+ }
16
+
17
+ if (typeof imageMeta === 'object') {
18
+ return imageMeta;
19
+ } else if (!imageMeta) {
20
+ throw new Error('Missing [imageMeta]');
21
+ }
22
+
23
+ throw new Error('Invalid value for parameter [imageMeta]');
24
+ }
25
+
26
+ /**
27
+ * Calculate effective width based on container dimensions and fit mode
28
+ *
29
+ * @param {object} params
30
+ * @param {number} [params.containerWidth] Container width in pixels
31
+ * @param {number} [params.containerHeight] Container height in pixels
32
+ * @param {number} params.imageAspectRatio Original image aspect ratio (width/height)
33
+ * @param {'cover'|'contain'|'fill'} [params.fit='contain'] Fit mode
34
+ * @returns {number} Effective width needed
35
+ */
36
+ export function calculateEffectiveWidth({
37
+ containerWidth,
38
+ containerHeight,
39
+ imageAspectRatio,
40
+ fit = 'contain'
41
+ }) {
42
+ if (containerWidth && !containerHeight) {
43
+ // If only width is provided, use it
44
+
45
+ return containerWidth;
46
+ }
47
+
48
+ if (!containerWidth && containerHeight) {
49
+ // If only height is provided, calculate width based on aspect ratio
50
+
51
+ return containerHeight * imageAspectRatio;
52
+ }
53
+
54
+ if (containerWidth && containerHeight) {
55
+ // If both dimensions are provided, calculate based on fit mode
56
+
57
+ const containerAspectRatio = containerWidth / containerHeight;
58
+
59
+ switch (fit) {
60
+ case 'fill':
61
+ return containerWidth;
62
+
63
+ case 'contain':
64
+ if (containerAspectRatio > imageAspectRatio) {
65
+ // Height constrained, scale width accordingly
66
+
67
+ return containerHeight * imageAspectRatio;
68
+ }
69
+ return containerWidth;
70
+
71
+ case 'cover':
72
+ if (containerAspectRatio < imageAspectRatio) {
73
+ // Height constrained, scale width accordingly
74
+
75
+ return containerHeight * imageAspectRatio;
76
+ }
77
+ return containerWidth;
78
+
79
+ default:
80
+ return containerWidth;
81
+ }
82
+ }
83
+
84
+ // Fallback if neither dimension is provided
85
+ throw new Error('Either containerWidth or containerHeight must be provided');
86
+ }
@@ -0,0 +1,3 @@
1
+ export * as exceptions from "./exceptions/index.js";
2
+ export * as expect from "./expect/index.js";
3
+ export * as singleton from "./singleton/index.js";
@@ -0,0 +1,3 @@
1
+ export * as exceptions from './exceptions/index.js';
2
+ export * as expect from './expect/index.js';
3
+ export * as singleton from './singleton/index.js';
@@ -0,0 +1,68 @@
1
+ /** Exports */
2
+ /**
3
+ * Check if a value looks like an array
4
+ *
5
+ * @param {any} item - Item to check
6
+ *
7
+ * @return {boolean} true if the value looks like an array
8
+ */
9
+ export function isArrayLike(item: any): boolean;
10
+ /**
11
+ * Check if a value is an Arguments object
12
+ *
13
+ * @param {any} value
14
+ *
15
+ * @returns {boolean} true if the value is an Arguments object
16
+ */
17
+ export function isArguments(value: any): boolean;
18
+ /**
19
+ * Check if a value is an array that only contains primitives
20
+ * - A primitive is a not-object value
21
+ *
22
+ * @param {any} value - value to check
23
+ *
24
+ * @return {boolean} true if the value is an array of primitives
25
+ */
26
+ export function isArrayOfPrimitives(arr: any): boolean;
27
+ /**
28
+ * Check if the supplied value is async iterable
29
+ * - Aync iterable objects must implement the "@@asyncIterator" method
30
+ *
31
+ * @param {any} value
32
+ *
33
+ * @returns {boolean} true if the value is async iterable
34
+ */
35
+ export function isAsyncIterator(value: any): boolean;
36
+ /**
37
+ * Check if the supplied value is an async function
38
+ * - Returns true for functions declared as "async function" or
39
+ * async () => {}
40
+ *
41
+ * @warning this function does not return [true] for (sync) functions that
42
+ * return a promise.
43
+ *
44
+ * @param {any} value
45
+ *
46
+ * @returns {boolean} true if the value is an async function
47
+ */
48
+ export function isAsyncFunction(value: any): boolean;
49
+ /**
50
+ * Check if the supplied value is iterable
51
+ * - Iterable objects must implement the "@@iterator" method
52
+ * - Generators are also iterable
53
+ *
54
+ * @param {any} value
55
+ *
56
+ * @returns {boolean} true if the value is (not async) iterable
57
+ */
58
+ export function isIterable(value: any): boolean;
59
+ /**
60
+ * Check if the supplied value is an object bu not a promise
61
+ * - Promises return false
62
+ * - Arrays return true
63
+ *
64
+ * @param {any} value
65
+ *
66
+ * @returns {boolean} true if the value is an Object, but not a Promise
67
+ */
68
+ export function isObject(value: any): boolean;
@@ -0,0 +1,140 @@
1
+ /** Internals */
2
+
3
+ //
4
+ // @see https://developer.mozilla.org/
5
+ // en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction
6
+ //
7
+ const AsyncFunction = Object.getPrototypeOf(async () => {}).constructor;
8
+ const objectToString = Object.prototype.toString;
9
+
10
+ /** Exports */
11
+
12
+ /**
13
+ * Check if a value looks like an array
14
+ *
15
+ * @param {any} item - Item to check
16
+ *
17
+ * @return {boolean} true if the value looks like an array
18
+ */
19
+ export function isArrayLike(item) {
20
+ if (!(item instanceof Object)) {
21
+ return false;
22
+ }
23
+
24
+ if ('length' in item) {
25
+ return true;
26
+ }
27
+
28
+ return false;
29
+ }
30
+
31
+ /**
32
+ * Check if a value is an Arguments object
33
+ *
34
+ * @param {any} value
35
+ *
36
+ * @returns {boolean} true if the value is an Arguments object
37
+ */
38
+ export function isArguments(value) {
39
+ return objectToString.call(value) === '[object Arguments]';
40
+ }
41
+
42
+ /**
43
+ * Check if a value is an array that only contains primitives
44
+ * - A primitive is a not-object value
45
+ *
46
+ * @param {any} value - value to check
47
+ *
48
+ * @return {boolean} true if the value is an array of primitives
49
+ */
50
+ export function isArrayOfPrimitives(arr) {
51
+ if (!Array.isArray(arr)) {
52
+ return false;
53
+ }
54
+
55
+ for (let j = 0, n = arr.length; j < n; j = j + 1) {
56
+ if (arr[j] instanceof Object) {
57
+ // current value is not a primitive
58
+ return false;
59
+ }
60
+ }
61
+
62
+ return true;
63
+ }
64
+
65
+ /**
66
+ * Check if the supplied value is async iterable
67
+ * - Aync iterable objects must implement the "@@asyncIterator" method
68
+ *
69
+ * @param {any} value
70
+ *
71
+ * @returns {boolean} true if the value is async iterable
72
+ */
73
+ export function isAsyncIterator(value) {
74
+ if (!(value instanceof Object) || typeof value[Symbol.asyncIterator] !== 'function') {
75
+ return false;
76
+ }
77
+
78
+ return true;
79
+ }
80
+
81
+ /**
82
+ * Check if the supplied value is an async function
83
+ * - Returns true for functions declared as "async function" or
84
+ * async () => {}
85
+ *
86
+ * @warning this function does not return [true] for (sync) functions that
87
+ * return a promise.
88
+ *
89
+ * @param {any} value
90
+ *
91
+ * @returns {boolean} true if the value is an async function
92
+ */
93
+ export function isAsyncFunction(value) {
94
+ if (value instanceof AsyncFunction) {
95
+ return true;
96
+ }
97
+
98
+ return false;
99
+ }
100
+
101
+ /**
102
+ * Check if the supplied value is iterable
103
+ * - Iterable objects must implement the "@@iterator" method
104
+ * - Generators are also iterable
105
+ *
106
+ * @param {any} value
107
+ *
108
+ * @returns {boolean} true if the value is (not async) iterable
109
+ */
110
+ export function isIterable(value) {
111
+ if (!(value instanceof Object) || typeof value[Symbol.iterator] !== 'function') {
112
+ return false;
113
+ }
114
+
115
+ return true;
116
+ }
117
+
118
+ /**
119
+ * Check if the supplied value is an object bu not a promise
120
+ * - Promises return false
121
+ * - Arrays return true
122
+ *
123
+ * @param {any} value
124
+ *
125
+ * @returns {boolean} true if the value is an Object, but not a Promise
126
+ */
127
+ export function isObject(value) {
128
+ if (!(value instanceof Object)) {
129
+ if (value && typeof value === 'object') {
130
+ // e.g. obj = Object.create(null);
131
+ return true;
132
+ }
133
+
134
+ return false;
135
+ } else if (value instanceof Promise) {
136
+ return false;
137
+ }
138
+
139
+ return true;
140
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Filter all iterated elements
3
+ *
4
+ * @param {Iterable} iterable
5
+ * @param {function} filterFn
6
+ *
7
+ * @returns {Generator} generator that produces items that pass the filter
8
+ */
9
+ export function filter(iterable: Iterable<any>, filterFn: Function): Generator;
10
+ /**
11
+ * Map all iterated items
12
+ * - Outputs transformed items
13
+ *
14
+ * @param {Iterable} iterable
15
+ * @param {function} transformFn
16
+ *
17
+ * @returns {Generator} generator that produces transformed items
18
+ */
19
+ export function map(iterable: Iterable<any>, transformFn: Function): Generator;
20
+ /**
21
+ * Get an Iterator object that can be used to iterate over all
22
+ * [ path, value ] entries in the object
23
+ *
24
+ * @param {Object} obj - Object to iterate
25
+ *
26
+ * @param {Object} [options] - Iteration options
27
+ *
28
+ * @param {boolean} [options.walkArrays=false]
29
+ * If set to true, the iterator will also iterate through Array objects
30
+ *
31
+ * @param {object} [options.expandPathKeys=false]
32
+ * If true, keys in the root object like "some.path.to" will be interpreted
33
+ * as paths in the object
34
+ *
35
+ * @param {object} [options.outputIntermediateNodes=false]
36
+ * If true, intermediate object nodes (not leaves) will be outputted too
37
+ *
38
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
39
+ * If true, no output will be generated for empty objects at the leaves of
40
+ * the object tree
41
+ *
42
+ * @return {Iterator} iterator object
43
+ */
44
+ export function iterateObjectEntries(obj: any, options?: {
45
+ walkArrays?: boolean;
46
+ expandPathKeys?: object;
47
+ outputIntermediateNodes?: object;
48
+ ignoreEmptyObjectLeaves?: object;
49
+ }): Iterator<any, any, any>;
50
+ /**
51
+ * Get an Iterator object that can be used to iterate over all paths in
52
+ * the object
53
+ *
54
+ * @param {Object} obj - Object to iterate
55
+ *
56
+ * @param {Object} [options] - Iteration options
57
+ *
58
+ * @param {boolean} [options.walkArrays=false]
59
+ * If set to true, the iterator will also iterate through Array objects
60
+ *
61
+ * @param {object} [options.expandPathKeys=false]
62
+ * If true, keys in the root object like "some.path.to" will be interpreted
63
+ * as paths in the object
64
+ *
65
+ * @param {object} [options.outputIntermediateNodes=false]
66
+ * If true, intermediate object nodes (not leaves) will be outputted too
67
+ *
68
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
69
+ * If true, no output will be generated for empty objects at the leaves of
70
+ * the object tree
71
+ *
72
+ * @return {Iterator} iterator object
73
+ */
74
+ export function iterateObjectPaths(obj: any, options?: {
75
+ walkArrays?: boolean;
76
+ expandPathKeys?: object;
77
+ outputIntermediateNodes?: object;
78
+ ignoreEmptyObjectLeaves?: object;
79
+ }): Iterator<any, any, any>;
80
+ /**
81
+ * Get an Iterator object that can be used to iterate over all values in
82
+ * the object (at the leaves of the object tree)
83
+ *
84
+ * @param {Object} obj - Object to iterate
85
+ *
86
+ * @param {Object} [options] - Iteration options
87
+ *
88
+ * @param {boolean} [options.walkArrays=false]
89
+ * If set to true, the iterator will also iterate through Array objects
90
+ *
91
+ * @param {object} [options.expandPathKeys=false]
92
+ * If true, keys in the root object like "some.path.to" will be interpreted
93
+ * as paths in the object
94
+ *
95
+ * @param {object} [options.outputIntermediateNodes=false]
96
+ * If true, intermediate object nodes (not leaves) will be outputted too
97
+ *
98
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
99
+ * If true, no output will be generated for empty objects at the leaves of
100
+ * the object tree
101
+ *
102
+ * @return {Iterator} iterator object
103
+ */
104
+ export function iterateObjectValues(obj: any, options?: {
105
+ walkArrays?: boolean;
106
+ expandPathKeys?: object;
107
+ outputIntermediateNodes?: object;
108
+ ignoreEmptyObjectLeaves?: object;
109
+ }): Iterator<any, any, any>;
110
+ /**
111
+ * Get a list of objects returned by an iterator in sorted order
112
+ *
113
+ * --
114
+ *
115
+ * @note Sorting requires that all values are evaluated, so all items must be
116
+ * iterated
117
+ *
118
+ * --
119
+ *
120
+ * @param {Iterable} it - Iterable items
121
+ *
122
+ * @param {function} getValueFn
123
+ * Function that gets the value from the iterated objects
124
+ *
125
+ * @param {boolean} [reversed=false]
126
+ * Sort in reversed order
127
+ *
128
+ *
129
+ * @returns {array} objects outputted in sorted order
130
+ */
131
+ export function sortObjects({ it, getValueFn, reversed }: Iterable<any>): any[];
@@ -0,0 +1,234 @@
1
+ /* ------------------------------------------------------------------ Imports */
2
+
3
+ import * as expect from '../expect/index.js';
4
+ import { smallestFirst, largestFirst } from '../compare/index.js';
5
+
6
+ import IterableTree from '../../classes/data/IterableTree.js';
7
+
8
+ /* ------------------------------------------------------------------ Exports */
9
+
10
+ /**
11
+ * Filter all iterated elements
12
+ *
13
+ * @param {Iterable} iterable
14
+ * @param {function} filterFn
15
+ *
16
+ * @returns {Generator} generator that produces items that pass the filter
17
+ */
18
+ export function* filter(iterable, filterFn) {
19
+ expect.iterable(iterable);
20
+ expect.function(filterFn);
21
+
22
+ for (const value of iterable) {
23
+ if (filterFn(value)) {
24
+ yield value;
25
+ }
26
+ }
27
+ }
28
+
29
+ // ---------------------------------------------------------------------- Method
30
+
31
+ /**
32
+ * Map all iterated items
33
+ * - Outputs transformed items
34
+ *
35
+ * @param {Iterable} iterable
36
+ * @param {function} transformFn
37
+ *
38
+ * @returns {Generator} generator that produces transformed items
39
+ */
40
+ export function* map(iterable, transformFn) {
41
+ expect.iterable(iterable);
42
+ expect.function(transformFn);
43
+
44
+ for (const value of iterable) {
45
+ yield transformFn(value);
46
+ }
47
+ }
48
+
49
+ // ---------------------------------------------------------------------- Method
50
+
51
+ /**
52
+ * Get an Iterator object that can be used to iterate over all
53
+ * [ path, value ] entries in the object
54
+ *
55
+ * @param {Object} obj - Object to iterate
56
+ *
57
+ * @param {Object} [options] - Iteration options
58
+ *
59
+ * @param {boolean} [options.walkArrays=false]
60
+ * If set to true, the iterator will also iterate through Array objects
61
+ *
62
+ * @param {object} [options.expandPathKeys=false]
63
+ * If true, keys in the root object like "some.path.to" will be interpreted
64
+ * as paths in the object
65
+ *
66
+ * @param {object} [options.outputIntermediateNodes=false]
67
+ * If true, intermediate object nodes (not leaves) will be outputted too
68
+ *
69
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
70
+ * If true, no output will be generated for empty objects at the leaves of
71
+ * the object tree
72
+ *
73
+ * @return {Iterator} iterator object
74
+ */
75
+ export function iterateObjectEntries(obj, options = {}) {
76
+ let objectIterator;
77
+
78
+ const depthFirst = undefined === options.depthFirst ? true : options.depthFirst;
79
+
80
+ options = Object.assign({}, options);
81
+
82
+ delete options.depthFirst;
83
+
84
+ if (depthFirst) {
85
+ objectIterator = new IterableTree(obj, options);
86
+ } else {
87
+ throw new Error('NOT IMPLEMENTED YET');
88
+
89
+ // objectIterator
90
+ // = new hk.iterate._BreadthFirstIterableTree( obj, options );
91
+ }
92
+
93
+ return objectIterator.entries(); /* entry = [ arrPath, value ] */
94
+ }
95
+
96
+ // ---------------------------------------------------------------------- Method
97
+
98
+ /**
99
+ * Get an Iterator object that can be used to iterate over all paths in
100
+ * the object
101
+ *
102
+ * @param {Object} obj - Object to iterate
103
+ *
104
+ * @param {Object} [options] - Iteration options
105
+ *
106
+ * @param {boolean} [options.walkArrays=false]
107
+ * If set to true, the iterator will also iterate through Array objects
108
+ *
109
+ * @param {object} [options.expandPathKeys=false]
110
+ * If true, keys in the root object like "some.path.to" will be interpreted
111
+ * as paths in the object
112
+ *
113
+ * @param {object} [options.outputIntermediateNodes=false]
114
+ * If true, intermediate object nodes (not leaves) will be outputted too
115
+ *
116
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
117
+ * If true, no output will be generated for empty objects at the leaves of
118
+ * the object tree
119
+ *
120
+ * @return {Iterator} iterator object
121
+ */
122
+ export function iterateObjectPaths(obj, options = {}) {
123
+ let objectIterator;
124
+
125
+ const depthFirst = undefined === options.depthFirst ? true : options.depthFirst;
126
+
127
+ options = Object.assign({}, options);
128
+
129
+ delete options.depthFirst;
130
+
131
+ if (depthFirst) {
132
+ objectIterator = new IterableTree(obj, options);
133
+ } else {
134
+ throw new Error('NOT IMPLEMENTED YET');
135
+
136
+ // objectIterator
137
+ // = new hk.iterate._BreadthFirstIterableTree( obj, options );
138
+ }
139
+
140
+ return objectIterator.paths();
141
+ }
142
+
143
+ // ---------------------------------------------------------------------- Method
144
+
145
+ /**
146
+ * Get an Iterator object that can be used to iterate over all values in
147
+ * the object (at the leaves of the object tree)
148
+ *
149
+ * @param {Object} obj - Object to iterate
150
+ *
151
+ * @param {Object} [options] - Iteration options
152
+ *
153
+ * @param {boolean} [options.walkArrays=false]
154
+ * If set to true, the iterator will also iterate through Array objects
155
+ *
156
+ * @param {object} [options.expandPathKeys=false]
157
+ * If true, keys in the root object like "some.path.to" will be interpreted
158
+ * as paths in the object
159
+ *
160
+ * @param {object} [options.outputIntermediateNodes=false]
161
+ * If true, intermediate object nodes (not leaves) will be outputted too
162
+ *
163
+ * @param {object} [options.ignoreEmptyObjectLeaves=false]
164
+ * If true, no output will be generated for empty objects at the leaves of
165
+ * the object tree
166
+ *
167
+ * @return {Iterator} iterator object
168
+ */
169
+ export function iterateObjectValues(obj, options) {
170
+ const objectIterator = new IterableTree(obj, options);
171
+
172
+ return objectIterator.values();
173
+ }
174
+
175
+ // ---------------------------------------------------------------------- Method
176
+
177
+ /**
178
+ * Get a list of objects returned by an iterator in sorted order
179
+ *
180
+ * --
181
+ *
182
+ * @note Sorting requires that all values are evaluated, so all items must be
183
+ * iterated
184
+ *
185
+ * --
186
+ *
187
+ * @param {Iterable} it - Iterable items
188
+ *
189
+ * @param {function} getValueFn
190
+ * Function that gets the value from the iterated objects
191
+ *
192
+ * @param {boolean} [reversed=false]
193
+ * Sort in reversed order
194
+ *
195
+ *
196
+ * @returns {array} objects outputted in sorted order
197
+ */
198
+ export async function sortObjects({ it, getValueFn, reversed = false }) {
199
+ expect.iterable(it);
200
+ expect.function(getValueFn);
201
+
202
+ const allItems = [];
203
+ const valuesByItem = new WeakMap();
204
+
205
+ // -- Gather all items and sort values in arrays
206
+
207
+ for (const item of it) {
208
+ allItems.push(item);
209
+ valuesByItem.set(item, getValueFn(item));
210
+ }
211
+
212
+ // console.log( { sortValues } );
213
+
214
+ // -- Sort all items using sortValues
215
+
216
+ let compareFn;
217
+
218
+ if (!reversed) {
219
+ compareFn = smallestFirst;
220
+ } else {
221
+ compareFn = largestFirst;
222
+ }
223
+
224
+ allItems.sort((itemA, itemB) => {
225
+ const valueA = valuesByItem.get(itemA);
226
+ const valueB = valuesByItem.get(itemB);
227
+
228
+ return compareFn(valueA, valueB);
229
+ });
230
+
231
+ // -- Return result
232
+
233
+ return allItems;
234
+ }