@hkdigital/lib-sveltekit 0.2.7 → 0.2.8

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 (242) hide show
  1. package/README.md +135 -135
  2. package/dist/assets/autospuiten/car-paint-picker.js +41 -41
  3. package/dist/assets/autospuiten/labels.js +7 -7
  4. package/dist/classes/cache/IndexedDbCache.js +1407 -1407
  5. package/dist/classes/cache/MemoryResponseCache.js +138 -138
  6. package/dist/classes/cache/index.js +5 -5
  7. package/dist/classes/cache/typedef.js +41 -41
  8. package/dist/classes/data/IterableTree.js +243 -243
  9. package/dist/classes/data/Selector.js +190 -190
  10. package/dist/classes/data/index.js +2 -2
  11. package/dist/classes/events/EventEmitter.js +275 -275
  12. package/dist/classes/events/index.js +2 -2
  13. package/dist/classes/index.js +4 -4
  14. package/dist/classes/logging/Logger.js +158 -158
  15. package/dist/classes/logging/constants.js +18 -18
  16. package/dist/classes/logging/index.js +4 -4
  17. package/dist/classes/promise/HkPromise.js +377 -377
  18. package/dist/classes/promise/index.js +1 -1
  19. package/dist/classes/services/ServiceBase.js +409 -409
  20. package/dist/classes/services/ServiceManager.js +1114 -1114
  21. package/dist/classes/services/constants.js +12 -12
  22. package/dist/classes/services/index.js +5 -5
  23. package/dist/classes/stores/SubscribersCount.js +107 -107
  24. package/dist/classes/stores/index.js +1 -1
  25. package/dist/classes/streams/LogTransformStream.js +19 -19
  26. package/dist/classes/streams/ServerEventsStore.js +110 -110
  27. package/dist/classes/streams/TimeStampSource.js +26 -26
  28. package/dist/classes/streams/index.js +3 -3
  29. package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
  30. package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -324
  31. package/dist/classes/svelte/audio/mocks.js +35 -35
  32. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
  33. package/dist/classes/svelte/finite-state-machine/index.js +1 -1
  34. package/dist/classes/svelte/image/ImageLoader.svelte.js +45 -45
  35. package/dist/classes/svelte/image/ImageScene.svelte.js +249 -249
  36. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
  37. package/dist/classes/svelte/image/index.js +4 -4
  38. package/dist/classes/svelte/image/mocks.js +35 -35
  39. package/dist/classes/svelte/image/typedef.js +8 -8
  40. package/dist/classes/svelte/index.js +14 -14
  41. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  42. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  43. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  44. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -338
  45. package/dist/classes/svelte/network-loader/constants.js +3 -3
  46. package/dist/classes/svelte/network-loader/index.js +3 -3
  47. package/dist/classes/svelte/network-loader/mocks.js +30 -30
  48. package/dist/classes/svelte/network-loader/typedef.js +8 -8
  49. package/dist/components/area/HkArea.svelte +49 -49
  50. package/dist/components/area/HkGridArea.svelte +77 -77
  51. package/dist/components/area/index.js +2 -2
  52. package/dist/components/buttons/button/Button.svelte +82 -82
  53. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
  54. package/dist/components/buttons/button-text/TextButton.svelte +21 -21
  55. package/dist/components/buttons/index.js +3 -3
  56. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
  57. package/dist/components/debug/index.js +1 -1
  58. package/dist/components/drag-drop/DragController.js +44 -44
  59. package/dist/components/drag-drop/DragDropContext.svelte +110 -110
  60. package/dist/components/drag-drop/Draggable.svelte +512 -512
  61. package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
  62. package/dist/components/drag-drop/DropZoneList.svelte +125 -125
  63. package/dist/components/drag-drop/{DropZone.svelte → Dropzone.svelte} +258 -258
  64. package/dist/components/drag-drop/drag-state.svelte.js +319 -319
  65. package/dist/components/drag-drop/index.js +7 -7
  66. package/dist/components/drag-drop/util.js +85 -85
  67. package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
  68. package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
  69. package/dist/components/icons/HkIcon.svelte +86 -86
  70. package/dist/components/icons/HkTabIcon.svelte +116 -116
  71. package/dist/components/icons/SteezeIcon.svelte +97 -97
  72. package/dist/components/icons/index.js +6 -6
  73. package/dist/components/icons/typedef.js +16 -16
  74. package/dist/components/index.js +2 -2
  75. package/dist/components/inputs/index.js +1 -1
  76. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
  77. package/dist/components/inputs/text-input/TextInput.svelte +223 -223
  78. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
  79. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
  80. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
  81. package/dist/components/layout/grid-layers/GridLayers.svelte +63 -63
  82. package/dist/components/layout/grid-layers/util.js +74 -74
  83. package/dist/components/layout/index.js +1 -1
  84. package/dist/components/panels/index.js +1 -1
  85. package/dist/components/panels/panel/Panel.svelte +43 -43
  86. package/dist/components/rows/index.js +3 -3
  87. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  88. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  89. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  90. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  91. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  92. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  93. package/dist/components/tab-bar/index.js +17 -17
  94. package/dist/components/tab-bar/typedef.js +11 -11
  95. package/dist/config/imagetools-config.js +189 -189
  96. package/dist/config/imagetools.d.ts +72 -72
  97. package/dist/constants/bases.js +13 -13
  98. package/dist/constants/errors/api.js +9 -9
  99. package/dist/constants/errors/generic.js +5 -5
  100. package/dist/constants/errors/index.js +3 -3
  101. package/dist/constants/errors/jwt.js +5 -5
  102. package/dist/constants/http/headers.js +6 -6
  103. package/dist/constants/http/index.js +2 -2
  104. package/dist/constants/http/methods.js +2 -2
  105. package/dist/constants/index.js +3 -3
  106. package/dist/constants/mime/application.js +5 -5
  107. package/dist/constants/mime/audio.js +13 -13
  108. package/dist/constants/mime/image.js +3 -3
  109. package/dist/constants/mime/index.js +4 -4
  110. package/dist/constants/mime/text.js +2 -2
  111. package/dist/constants/regexp/index.js +31 -31
  112. package/dist/constants/regexp/inspiratie.js__ +95 -95
  113. package/dist/constants/regexp/text.js +49 -49
  114. package/dist/constants/regexp/user.js +32 -32
  115. package/dist/constants/regexp/web.js +3 -3
  116. package/dist/constants/state-labels/drag-states.js +6 -6
  117. package/dist/constants/state-labels/drop-states.js +6 -6
  118. package/dist/constants/state-labels/input-states.js +11 -11
  119. package/dist/constants/state-labels/submit-states.js +4 -4
  120. package/dist/constants/time.js +28 -28
  121. package/dist/css/utilities.css +43 -43
  122. package/dist/design/design-config.js +73 -73
  123. package/dist/design/tailwind-theme-extend.js +158 -158
  124. package/dist/features/button-group/ButtonGroup.svelte +82 -82
  125. package/dist/features/button-group/typedef.js +10 -10
  126. package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
  127. package/dist/features/compare-left-right/index.js +1 -1
  128. package/dist/features/game-box/GameBox.svelte +577 -577
  129. package/dist/features/game-box/gamebox.util.js +83 -83
  130. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  131. package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
  132. package/dist/features/image-box/ImageBox.svelte +210 -210
  133. package/dist/features/image-box/index.js +5 -5
  134. package/dist/features/image-box/typedef.js +32 -32
  135. package/dist/features/index.js +23 -23
  136. package/dist/features/presenter/ImageSlide.svelte +64 -64
  137. package/dist/features/presenter/Presenter.state.svelte.js +638 -638
  138. package/dist/features/presenter/Presenter.svelte +142 -142
  139. package/dist/features/presenter/constants.js +7 -7
  140. package/dist/features/presenter/index.js +10 -10
  141. package/dist/features/presenter/typedef.js +106 -106
  142. package/dist/features/presenter/util.js +210 -210
  143. package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
  144. package/dist/schemas/index.js +1 -1
  145. package/dist/schemas/validate-url.js +180 -180
  146. package/dist/server/index.js +1 -1
  147. package/dist/server/logger.js +94 -94
  148. package/dist/states/index.js +1 -1
  149. package/dist/states/navigation.svelte.js +55 -55
  150. package/dist/stores/index.js +1 -1
  151. package/dist/stores/theme.js +80 -80
  152. package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
  153. package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
  154. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  155. package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
  156. package/dist/themes/hkdev/components/buttons/button.css +146 -146
  157. package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
  158. package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
  159. package/dist/themes/hkdev/components/drag-drop/drop-zone.css +48 -48
  160. package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
  161. package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
  162. package/dist/themes/hkdev/components/panels/panel.css +27 -27
  163. package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
  164. package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
  165. package/dist/themes/hkdev/components.css +53 -53
  166. package/dist/themes/hkdev/debug.css +1 -1
  167. package/dist/themes/hkdev/global/layout.css +39 -39
  168. package/dist/themes/hkdev/global/on-colors.css +53 -53
  169. package/dist/themes/hkdev/globals.css +11 -11
  170. package/dist/themes/hkdev/responsive.css +12 -12
  171. package/dist/themes/hkdev/theme-ext.js +15 -15
  172. package/dist/themes/hkdev/theme.js +235 -235
  173. package/dist/themes/index.js +1 -1
  174. package/dist/typedef/context.js +6 -6
  175. package/dist/typedef/drag.js +25 -25
  176. package/dist/typedef/drop.js +12 -12
  177. package/dist/typedef/image.js +38 -38
  178. package/dist/typedef/index.js +4 -4
  179. package/dist/util/array/index.js +436 -436
  180. package/dist/util/bases/base58.js +262 -262
  181. package/dist/util/bases/index.js +1 -1
  182. package/dist/util/compare/index.js +247 -247
  183. package/dist/util/css/css-vars.js +83 -83
  184. package/dist/util/css/index.js +1 -1
  185. package/dist/util/design-system/components/states.js +22 -22
  186. package/dist/util/design-system/css/clamp.js +66 -66
  187. package/dist/util/design-system/css/root-design-vars.js +102 -102
  188. package/dist/util/design-system/index.js +5 -5
  189. package/dist/util/design-system/layout/scaling.js +228 -228
  190. package/dist/util/design-system/skeleton.js +208 -208
  191. package/dist/util/design-system/tailwind.js +288 -288
  192. package/dist/util/env/index.js +9 -9
  193. package/dist/util/expect/arrays.js +47 -47
  194. package/dist/util/expect/index.js +259 -259
  195. package/dist/util/expect/primitives.js +55 -55
  196. package/dist/util/expect/url.js +60 -60
  197. package/dist/util/function/index.js +218 -218
  198. package/dist/util/geo/index.js +26 -26
  199. package/dist/util/http/caching.js +263 -263
  200. package/dist/util/http/errors.js +97 -97
  201. package/dist/util/http/headers.js +75 -75
  202. package/dist/util/http/http-request.js +379 -379
  203. package/dist/util/http/index.js +22 -22
  204. package/dist/util/http/json-request.js +224 -224
  205. package/dist/util/http/mocks.js +65 -65
  206. package/dist/util/http/response.js +294 -294
  207. package/dist/util/http/typedef.js +93 -93
  208. package/dist/util/http/url.js +52 -52
  209. package/dist/util/image/index.js +86 -86
  210. package/dist/util/index.js +2 -2
  211. package/dist/util/is/index.js +140 -140
  212. package/dist/util/iterate/index.js +234 -234
  213. package/dist/util/object/index.js +1361 -1361
  214. package/dist/util/singleton/index.js +97 -97
  215. package/dist/util/string/array-path.js +75 -75
  216. package/dist/util/string/convert.js +54 -54
  217. package/dist/util/string/fs.js +226 -226
  218. package/dist/util/string/index.js +5 -5
  219. package/dist/util/string/interpolate.js +61 -61
  220. package/dist/util/string/pad.js +10 -10
  221. package/dist/util/svelte/index.js +4 -4
  222. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  223. package/dist/util/svelte/observe/index.js +49 -49
  224. package/dist/util/svelte/state-context/index.js +117 -117
  225. package/dist/util/svelte/wait/index.js +38 -38
  226. package/dist/util/sveltekit/index.js +1 -1
  227. package/dist/util/sveltekit/route-folders/index.js +101 -101
  228. package/dist/util/time/index.js +323 -323
  229. package/dist/util/unique/index.js +249 -249
  230. package/dist/valibot/date.js__ +10 -10
  231. package/dist/valibot/index.js +9 -9
  232. package/dist/valibot/url.js +95 -95
  233. package/dist/valibot/user.js +23 -23
  234. package/dist/zod/all.js +33 -33
  235. package/dist/zod/generic.js +11 -11
  236. package/dist/zod/javascript.js +32 -32
  237. package/dist/zod/user.js +16 -16
  238. package/dist/zod/web.js +52 -52
  239. package/package.json +112 -112
  240. package/dist/components/drag-drop/drag-state.svelte.js__ +0 -323
  241. package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
  242. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
@@ -1,12 +1,12 @@
1
-
2
- export const CREATED = 'created';
3
- export const INITIALIZING = 'initializing';
4
- export const INITIALIZED = 'initialized';
5
- export const STARTING = 'starting';
6
- export const RUNNING = 'running';
7
- export const STOPPING = 'stopping';
8
- export const STOPPED = 'stopped';
9
- export const DESTROYING = 'destroying';
10
- export const DESTROYED = 'destroyed';
11
- export const ERROR = 'error';
12
- export const RECOVERING = 'recovering';
1
+
2
+ export const CREATED = 'created';
3
+ export const INITIALIZING = 'initializing';
4
+ export const INITIALIZED = 'initialized';
5
+ export const STARTING = 'starting';
6
+ export const RUNNING = 'running';
7
+ export const STOPPING = 'stopping';
8
+ export const STOPPED = 'stopped';
9
+ export const DESTROYING = 'destroying';
10
+ export const DESTROYED = 'destroyed';
11
+ export const ERROR = 'error';
12
+ export const RECOVERING = 'recovering';
@@ -1,5 +1,5 @@
1
-
2
- export { default as ServiceBase } from './ServiceBase.js';
3
- export { default as ServiceManager } from './ServiceManager.js';
4
-
5
- export * from './constants.js';
1
+
2
+ export { default as ServiceBase } from './ServiceBase.js';
3
+ export { default as ServiceManager } from './ServiceManager.js';
4
+
5
+ export * from './constants.js';
@@ -1,107 +1,107 @@
1
- import { writable, get } from 'svelte/store';
2
-
3
- /**
4
- * Class that can be used to add a `SubscribersCount` store to classes
5
- * or other objects
6
- */
7
- export default class SubscribersCount {
8
- #count;
9
-
10
- constructor() {
11
- this.#count = writable(0);
12
- }
13
-
14
- increment() {
15
- this.#count.update((value) => value + 1);
16
- }
17
-
18
- decrement() {
19
- this.#count.update((value) => value - 1);
20
- }
21
-
22
- /**
23
- * Subscribe to `SubscribersCount` store
24
- *
25
- * @param {(value:number)=>void} fn
26
- *
27
- * @returns {()=>void} unsubscribe
28
- */
29
- subscribe(fn) {
30
- return this.#count.subscribe(fn);
31
- }
32
-
33
- /**
34
- * Subscribe to `SubscribersCount` store and receive an update once if the
35
- * count is zero.
36
- *
37
- * @param {(value:number)=>void} fn
38
- *
39
- * @returns {()=>void} unsubscribe
40
- */
41
- onceEmpty(fn) {
42
- let unsubscribe = this.#count.subscribe((value) => {
43
- if (value === 0) {
44
- unsubscribe();
45
- fn(value);
46
- }
47
- });
48
-
49
- return unsubscribe;
50
- }
51
-
52
- /**
53
- * Create a writable store with added 'subscribeCount' functionality
54
- */
55
- static writable() {
56
- const store = writable(...arguments);
57
-
58
- return SubscribersCount.wrap(store);
59
- }
60
-
61
- /**
62
- * Add subscriber count functionality to an existing store by wrapping
63
- * the store with a Proxy
64
- *
65
- * @template T;
66
- *
67
- * @param {import('svelte/store').Writable<T>} store
68
- */
69
- static wrap(store) {
70
- // expect.store( store );
71
-
72
- const counter = new SubscribersCount();
73
-
74
- const handler = {
75
- /**
76
- * @param {any} target
77
- * @param {string} prop
78
- */
79
- get(target, prop) {
80
- switch (prop) {
81
- case 'subscribe': {
82
- return /* subscribe */ function () {
83
- counter.increment();
84
- const unsubscribe = target[prop](...arguments);
85
-
86
- return /* unsubscribe */ () => {
87
- counter.decrement();
88
- unsubscribe();
89
- };
90
- };
91
- }
92
-
93
- case 'value':
94
- return get(store);
95
-
96
- case 'subscribersCount':
97
- return counter;
98
- }
99
-
100
- return Reflect.get(target, prop);
101
- // return target[prop];
102
- }
103
- };
104
-
105
- return new Proxy(store, handler);
106
- }
107
- }
1
+ import { writable, get } from 'svelte/store';
2
+
3
+ /**
4
+ * Class that can be used to add a `SubscribersCount` store to classes
5
+ * or other objects
6
+ */
7
+ export default class SubscribersCount {
8
+ #count;
9
+
10
+ constructor() {
11
+ this.#count = writable(0);
12
+ }
13
+
14
+ increment() {
15
+ this.#count.update((value) => value + 1);
16
+ }
17
+
18
+ decrement() {
19
+ this.#count.update((value) => value - 1);
20
+ }
21
+
22
+ /**
23
+ * Subscribe to `SubscribersCount` store
24
+ *
25
+ * @param {(value:number)=>void} fn
26
+ *
27
+ * @returns {()=>void} unsubscribe
28
+ */
29
+ subscribe(fn) {
30
+ return this.#count.subscribe(fn);
31
+ }
32
+
33
+ /**
34
+ * Subscribe to `SubscribersCount` store and receive an update once if the
35
+ * count is zero.
36
+ *
37
+ * @param {(value:number)=>void} fn
38
+ *
39
+ * @returns {()=>void} unsubscribe
40
+ */
41
+ onceEmpty(fn) {
42
+ let unsubscribe = this.#count.subscribe((value) => {
43
+ if (value === 0) {
44
+ unsubscribe();
45
+ fn(value);
46
+ }
47
+ });
48
+
49
+ return unsubscribe;
50
+ }
51
+
52
+ /**
53
+ * Create a writable store with added 'subscribeCount' functionality
54
+ */
55
+ static writable() {
56
+ const store = writable(...arguments);
57
+
58
+ return SubscribersCount.wrap(store);
59
+ }
60
+
61
+ /**
62
+ * Add subscriber count functionality to an existing store by wrapping
63
+ * the store with a Proxy
64
+ *
65
+ * @template T;
66
+ *
67
+ * @param {import('svelte/store').Writable<T>} store
68
+ */
69
+ static wrap(store) {
70
+ // expect.store( store );
71
+
72
+ const counter = new SubscribersCount();
73
+
74
+ const handler = {
75
+ /**
76
+ * @param {any} target
77
+ * @param {string} prop
78
+ */
79
+ get(target, prop) {
80
+ switch (prop) {
81
+ case 'subscribe': {
82
+ return /* subscribe */ function () {
83
+ counter.increment();
84
+ const unsubscribe = target[prop](...arguments);
85
+
86
+ return /* unsubscribe */ () => {
87
+ counter.decrement();
88
+ unsubscribe();
89
+ };
90
+ };
91
+ }
92
+
93
+ case 'value':
94
+ return get(store);
95
+
96
+ case 'subscribersCount':
97
+ return counter;
98
+ }
99
+
100
+ return Reflect.get(target, prop);
101
+ // return target[prop];
102
+ }
103
+ };
104
+
105
+ return new Proxy(store, handler);
106
+ }
107
+ }
@@ -1 +1 @@
1
- export { default as SubscribersCount } from './SubscribersCount.js';
1
+ export { default as SubscribersCount } from './SubscribersCount.js';
@@ -1,19 +1,19 @@
1
- export default class LogTransformStream extends TransformStream {
2
- constructor() {
3
- const transformer = {
4
- /**
5
- * Log the chunk and enqueue the unchanged chunk
6
- *
7
- * @param {any} chunk
8
- * @param {any} controller
9
- */
10
- transform: (chunk, controller) => {
11
- console.log('log', chunk);
12
- controller.enqueue(chunk);
13
- }
14
- };
15
-
16
- super(transformer);
17
- }
18
- start() {}
19
- }
1
+ export default class LogTransformStream extends TransformStream {
2
+ constructor() {
3
+ const transformer = {
4
+ /**
5
+ * Log the chunk and enqueue the unchanged chunk
6
+ *
7
+ * @param {any} chunk
8
+ * @param {any} controller
9
+ */
10
+ transform: (chunk, controller) => {
11
+ console.log('log', chunk);
12
+ controller.enqueue(chunk);
13
+ }
14
+ };
15
+
16
+ super(transformer);
17
+ }
18
+ start() {}
19
+ }
@@ -1,110 +1,110 @@
1
- import { writable } from 'svelte/store';
2
-
3
- // eslint-disable-next-line no-unused-vars
4
- import * as Zods from '../../zod/all.js';
5
-
6
- import SubscribersCount from '../stores/SubscribersCount.js';
7
-
8
- // > Class
9
-
10
- export default class ServerEventsStore {
11
- /** @type {Zods.AbsOrRelUrl} */
12
- #url;
13
-
14
- /** @type {import("svelte/store").Writable<object|null>} */
15
- #store;
16
-
17
- /** @type {boolean} */
18
- #starting = false;
19
-
20
- /** @type {ReadableStream<Uint8Array>|null} */
21
- #stream = null;
22
-
23
- /** @type {SubscribersCount} */
24
- subscribersCount;
25
-
26
- /**
27
- * @param {object} _
28
- * @param {Zods.AbsOrRelUrl} _.url
29
- */
30
- constructor({ url }) {
31
- this.#url = Zods.AbsOrRelUrl.parse(url);
32
-
33
- this.#store = writable(null);
34
-
35
- this.subscribersCount = new SubscribersCount();
36
- }
37
-
38
- /**
39
- * Subscribe to Server Send Events
40
- *
41
- * @param {import("svelte/store").Subscriber<object|null>} fn
42
- *
43
- * @returns {()=>void} unsubscribe
44
- */
45
- subscribe(fn) {
46
- this.subscribersCount.increment();
47
-
48
- const unsubscribe = this.#store?.subscribe(fn);
49
-
50
- this.#tryStartStream();
51
-
52
- return () => {
53
- this.subscribersCount.decrement();
54
- unsubscribe?.();
55
- };
56
- }
57
-
58
- async #tryStartStream() {
59
- if (this.#stream || this.#starting) {
60
- return;
61
- }
62
-
63
- try {
64
- this.#starting = true;
65
-
66
- const aborter = new AbortController();
67
- const signal = aborter.signal;
68
-
69
- const response = await fetch(this.#url, { signal });
70
-
71
- const stream = (this.#stream = response.body);
72
-
73
- this.#starting = false;
74
-
75
- const reader =
76
- // @ts-ignore
77
- stream.pipeThrough(new TextDecoderStream()).getReader();
78
-
79
- // const textDecoder = new TextDecoder('utf-8');
80
-
81
- while (!signal.aborted) {
82
- const { value, done } = await reader.read();
83
-
84
- if (undefined === value) {
85
- break;
86
- }
87
-
88
- const obj = JSON.parse(value);
89
- // const obj = JSON.parse(textDecoder.decode(value));
90
-
91
- if (!done) {
92
- this.#store.set(obj);
93
- }
94
-
95
- // console.log({ ...obj, done });
96
-
97
- if (done) {
98
- break;
99
- }
100
- } // end for
101
- } catch (e) {
102
- this.#starting = false;
103
- this.#stream = null;
104
-
105
- if (e instanceof Error && e.name !== 'AbortError') {
106
- throw e;
107
- }
108
- }
109
- }
110
- }
1
+ import { writable } from 'svelte/store';
2
+
3
+ // eslint-disable-next-line no-unused-vars
4
+ import * as Zods from '../../zod/all.js';
5
+
6
+ import SubscribersCount from '../stores/SubscribersCount.js';
7
+
8
+ // > Class
9
+
10
+ export default class ServerEventsStore {
11
+ /** @type {Zods.AbsOrRelUrl} */
12
+ #url;
13
+
14
+ /** @type {import("svelte/store").Writable<object|null>} */
15
+ #store;
16
+
17
+ /** @type {boolean} */
18
+ #starting = false;
19
+
20
+ /** @type {ReadableStream<Uint8Array>|null} */
21
+ #stream = null;
22
+
23
+ /** @type {SubscribersCount} */
24
+ subscribersCount;
25
+
26
+ /**
27
+ * @param {object} _
28
+ * @param {Zods.AbsOrRelUrl} _.url
29
+ */
30
+ constructor({ url }) {
31
+ this.#url = Zods.AbsOrRelUrl.parse(url);
32
+
33
+ this.#store = writable(null);
34
+
35
+ this.subscribersCount = new SubscribersCount();
36
+ }
37
+
38
+ /**
39
+ * Subscribe to Server Send Events
40
+ *
41
+ * @param {import("svelte/store").Subscriber<object|null>} fn
42
+ *
43
+ * @returns {()=>void} unsubscribe
44
+ */
45
+ subscribe(fn) {
46
+ this.subscribersCount.increment();
47
+
48
+ const unsubscribe = this.#store?.subscribe(fn);
49
+
50
+ this.#tryStartStream();
51
+
52
+ return () => {
53
+ this.subscribersCount.decrement();
54
+ unsubscribe?.();
55
+ };
56
+ }
57
+
58
+ async #tryStartStream() {
59
+ if (this.#stream || this.#starting) {
60
+ return;
61
+ }
62
+
63
+ try {
64
+ this.#starting = true;
65
+
66
+ const aborter = new AbortController();
67
+ const signal = aborter.signal;
68
+
69
+ const response = await fetch(this.#url, { signal });
70
+
71
+ const stream = (this.#stream = response.body);
72
+
73
+ this.#starting = false;
74
+
75
+ const reader =
76
+ // @ts-ignore
77
+ stream.pipeThrough(new TextDecoderStream()).getReader();
78
+
79
+ // const textDecoder = new TextDecoder('utf-8');
80
+
81
+ while (!signal.aborted) {
82
+ const { value, done } = await reader.read();
83
+
84
+ if (undefined === value) {
85
+ break;
86
+ }
87
+
88
+ const obj = JSON.parse(value);
89
+ // const obj = JSON.parse(textDecoder.decode(value));
90
+
91
+ if (!done) {
92
+ this.#store.set(obj);
93
+ }
94
+
95
+ // console.log({ ...obj, done });
96
+
97
+ if (done) {
98
+ break;
99
+ }
100
+ } // end for
101
+ } catch (e) {
102
+ this.#starting = false;
103
+ this.#stream = null;
104
+
105
+ if (e instanceof Error && e.name !== 'AbortError') {
106
+ throw e;
107
+ }
108
+ }
109
+ }
110
+ }
@@ -1,26 +1,26 @@
1
- export default class TimestampSource {
2
- /** @type {number|NodeJS.Timeout|undefined} */
3
- #interval;
4
-
5
- constructor() {}
6
-
7
- /**
8
- * Stream start function
9
- *
10
- * @param {ReadableStreamDefaultController} ctr
11
- */
12
- start(ctr) {
13
- ctr.enqueue(JSON.stringify({ now: Date.now() }));
14
-
15
- this.#interval = setInterval(() => {
16
- return ctr.enqueue(JSON.stringify({ now: Date.now() }));
17
- }, 1000);
18
- }
19
-
20
- /**
21
- * Stop generation of new stream output
22
- */
23
- cancel() {
24
- clearInterval(this.#interval);
25
- }
26
- }
1
+ export default class TimestampSource {
2
+ /** @type {number|NodeJS.Timeout|undefined} */
3
+ #interval;
4
+
5
+ constructor() {}
6
+
7
+ /**
8
+ * Stream start function
9
+ *
10
+ * @param {ReadableStreamDefaultController} ctr
11
+ */
12
+ start(ctr) {
13
+ ctr.enqueue(JSON.stringify({ now: Date.now() }));
14
+
15
+ this.#interval = setInterval(() => {
16
+ return ctr.enqueue(JSON.stringify({ now: Date.now() }));
17
+ }, 1000);
18
+ }
19
+
20
+ /**
21
+ * Stop generation of new stream output
22
+ */
23
+ cancel() {
24
+ clearInterval(this.#interval);
25
+ }
26
+ }
@@ -1,3 +1,3 @@
1
- export { default as LogTransformStream } from './LogTransformStream.js';
2
- export { default as ServerEventsStore } from './ServerEventsStore.js';
3
- export { default as TimeStampSource } from './TimeStampSource.js';
1
+ export { default as LogTransformStream } from './LogTransformStream.js';
2
+ export { default as ServerEventsStore } from './ServerEventsStore.js';
3
+ export { default as TimeStampSource } from './TimeStampSource.js';