@hkdigital/lib-sveltekit 0.2.8 → 0.2.9

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 (243) 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 +112 -110
  60. package/dist/components/drag-drop/Draggable.svelte +498 -512
  61. package/dist/components/drag-drop/{Dropzone.svelte → DropZone.svelte} +258 -258
  62. package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
  63. package/dist/components/drag-drop/DropZoneList.svelte +125 -125
  64. package/dist/components/drag-drop/actions.d.ts +6 -0
  65. package/dist/components/drag-drop/actions.js +18 -0
  66. package/dist/components/drag-drop/drag-state.svelte.js +319 -319
  67. package/dist/components/drag-drop/index.js +7 -7
  68. package/dist/components/drag-drop/util.js +85 -85
  69. package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
  70. package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
  71. package/dist/components/icons/HkIcon.svelte +86 -86
  72. package/dist/components/icons/HkTabIcon.svelte +116 -116
  73. package/dist/components/icons/SteezeIcon.svelte +97 -97
  74. package/dist/components/icons/index.js +6 -6
  75. package/dist/components/icons/typedef.js +16 -16
  76. package/dist/components/index.js +2 -2
  77. package/dist/components/inputs/index.js +1 -1
  78. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
  79. package/dist/components/inputs/text-input/TextInput.svelte +223 -223
  80. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
  81. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
  82. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
  83. package/dist/components/layout/grid-layers/GridLayers.svelte +63 -63
  84. package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
  85. package/dist/components/layout/grid-layers/util.js +74 -74
  86. package/dist/components/layout/index.js +1 -1
  87. package/dist/components/panels/index.js +1 -1
  88. package/dist/components/panels/panel/Panel.svelte +43 -43
  89. package/dist/components/rows/index.js +3 -3
  90. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  91. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  92. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  93. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  94. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  95. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  96. package/dist/components/tab-bar/index.js +17 -17
  97. package/dist/components/tab-bar/typedef.js +11 -11
  98. package/dist/config/imagetools-config.js +189 -189
  99. package/dist/config/imagetools.d.ts +72 -72
  100. package/dist/constants/bases.js +13 -13
  101. package/dist/constants/errors/api.js +9 -9
  102. package/dist/constants/errors/generic.js +5 -5
  103. package/dist/constants/errors/index.js +3 -3
  104. package/dist/constants/errors/jwt.js +5 -5
  105. package/dist/constants/http/headers.js +6 -6
  106. package/dist/constants/http/index.js +2 -2
  107. package/dist/constants/http/methods.js +2 -2
  108. package/dist/constants/index.js +3 -3
  109. package/dist/constants/mime/application.js +5 -5
  110. package/dist/constants/mime/audio.js +13 -13
  111. package/dist/constants/mime/image.js +3 -3
  112. package/dist/constants/mime/index.js +4 -4
  113. package/dist/constants/mime/text.js +2 -2
  114. package/dist/constants/regexp/index.js +31 -31
  115. package/dist/constants/regexp/inspiratie.js__ +95 -95
  116. package/dist/constants/regexp/text.js +49 -49
  117. package/dist/constants/regexp/user.js +32 -32
  118. package/dist/constants/regexp/web.js +3 -3
  119. package/dist/constants/state-labels/drag-states.js +6 -6
  120. package/dist/constants/state-labels/drop-states.js +6 -6
  121. package/dist/constants/state-labels/input-states.js +11 -11
  122. package/dist/constants/state-labels/submit-states.js +4 -4
  123. package/dist/constants/time.js +28 -28
  124. package/dist/css/utilities.css +43 -43
  125. package/dist/design/design-config.js +73 -73
  126. package/dist/design/tailwind-theme-extend.js +158 -158
  127. package/dist/features/button-group/ButtonGroup.svelte +82 -82
  128. package/dist/features/button-group/typedef.js +10 -10
  129. package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
  130. package/dist/features/compare-left-right/index.js +1 -1
  131. package/dist/features/game-box/GameBox.svelte +577 -577
  132. package/dist/features/game-box/gamebox.util.js +83 -83
  133. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  134. package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
  135. package/dist/features/image-box/ImageBox.svelte +210 -210
  136. package/dist/features/image-box/index.js +5 -5
  137. package/dist/features/image-box/typedef.js +32 -32
  138. package/dist/features/index.js +23 -23
  139. package/dist/features/presenter/ImageSlide.svelte +64 -64
  140. package/dist/features/presenter/Presenter.state.svelte.js +638 -638
  141. package/dist/features/presenter/Presenter.svelte +142 -142
  142. package/dist/features/presenter/constants.js +7 -7
  143. package/dist/features/presenter/index.js +10 -10
  144. package/dist/features/presenter/typedef.js +106 -106
  145. package/dist/features/presenter/util.js +210 -210
  146. package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
  147. package/dist/schemas/index.js +1 -1
  148. package/dist/schemas/validate-url.js +180 -180
  149. package/dist/server/index.js +1 -1
  150. package/dist/server/logger.js +94 -94
  151. package/dist/states/index.js +1 -1
  152. package/dist/states/navigation.svelte.js +55 -55
  153. package/dist/stores/index.js +1 -1
  154. package/dist/stores/theme.js +80 -80
  155. package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
  156. package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
  157. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  158. package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
  159. package/dist/themes/hkdev/components/buttons/button.css +146 -146
  160. package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
  161. package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
  162. package/dist/themes/hkdev/components/drag-drop/drop-zone.css +48 -48
  163. package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
  164. package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
  165. package/dist/themes/hkdev/components/panels/panel.css +27 -27
  166. package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
  167. package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
  168. package/dist/themes/hkdev/components.css +53 -53
  169. package/dist/themes/hkdev/debug.css +1 -1
  170. package/dist/themes/hkdev/global/layout.css +39 -39
  171. package/dist/themes/hkdev/global/on-colors.css +53 -53
  172. package/dist/themes/hkdev/globals.css +11 -11
  173. package/dist/themes/hkdev/responsive.css +12 -12
  174. package/dist/themes/hkdev/theme-ext.js +15 -15
  175. package/dist/themes/hkdev/theme.js +235 -235
  176. package/dist/themes/index.js +1 -1
  177. package/dist/typedef/context.js +6 -6
  178. package/dist/typedef/drag.js +25 -25
  179. package/dist/typedef/drop.js +12 -12
  180. package/dist/typedef/image.js +38 -38
  181. package/dist/typedef/index.js +4 -4
  182. package/dist/util/array/index.js +436 -436
  183. package/dist/util/bases/base58.js +262 -262
  184. package/dist/util/bases/index.js +1 -1
  185. package/dist/util/compare/index.js +247 -247
  186. package/dist/util/css/css-vars.js +83 -83
  187. package/dist/util/css/index.js +1 -1
  188. package/dist/util/design-system/components/states.js +22 -22
  189. package/dist/util/design-system/css/clamp.js +66 -66
  190. package/dist/util/design-system/css/root-design-vars.js +102 -102
  191. package/dist/util/design-system/index.js +5 -5
  192. package/dist/util/design-system/layout/scaling.js +228 -228
  193. package/dist/util/design-system/skeleton.js +208 -208
  194. package/dist/util/design-system/tailwind.js +288 -288
  195. package/dist/util/env/index.js +9 -9
  196. package/dist/util/expect/arrays.js +47 -47
  197. package/dist/util/expect/index.js +259 -259
  198. package/dist/util/expect/primitives.js +55 -55
  199. package/dist/util/expect/url.js +60 -60
  200. package/dist/util/function/index.js +218 -218
  201. package/dist/util/geo/index.js +26 -26
  202. package/dist/util/http/caching.js +263 -263
  203. package/dist/util/http/errors.js +97 -97
  204. package/dist/util/http/headers.js +75 -75
  205. package/dist/util/http/http-request.js +379 -379
  206. package/dist/util/http/index.js +22 -22
  207. package/dist/util/http/json-request.js +224 -224
  208. package/dist/util/http/mocks.js +65 -65
  209. package/dist/util/http/response.js +294 -294
  210. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  211. package/dist/util/http/typedef.js +93 -93
  212. package/dist/util/http/url.js +52 -52
  213. package/dist/util/image/index.js +86 -86
  214. package/dist/util/index.js +2 -2
  215. package/dist/util/is/index.js +140 -140
  216. package/dist/util/iterate/index.js +234 -234
  217. package/dist/util/object/index.js +1361 -1361
  218. package/dist/util/singleton/index.js +97 -97
  219. package/dist/util/string/array-path.js +75 -75
  220. package/dist/util/string/convert.js +54 -54
  221. package/dist/util/string/fs.js +226 -226
  222. package/dist/util/string/index.js +5 -5
  223. package/dist/util/string/interpolate.js +61 -61
  224. package/dist/util/string/pad.js +10 -10
  225. package/dist/util/svelte/index.js +4 -4
  226. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  227. package/dist/util/svelte/observe/index.js +49 -49
  228. package/dist/util/svelte/state-context/index.js +117 -117
  229. package/dist/util/svelte/wait/index.js +38 -38
  230. package/dist/util/sveltekit/index.js +1 -1
  231. package/dist/util/sveltekit/route-folders/index.js +101 -101
  232. package/dist/util/time/index.js +323 -323
  233. package/dist/util/unique/index.js +249 -249
  234. package/dist/valibot/date.js__ +10 -10
  235. package/dist/valibot/index.js +9 -9
  236. package/dist/valibot/url.js +95 -95
  237. package/dist/valibot/user.js +23 -23
  238. package/dist/zod/all.js +33 -33
  239. package/dist/zod/generic.js +11 -11
  240. package/dist/zod/javascript.js +32 -32
  241. package/dist/zod/user.js +16 -16
  242. package/dist/zod/web.js +52 -52
  243. package/package.json +112 -112
@@ -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';