synstate 0.1.0

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 (268) hide show
  1. package/README.md +878 -0
  2. package/dist/core/class/child-observable-class.d.mts +37 -0
  3. package/dist/core/class/child-observable-class.d.mts.map +1 -0
  4. package/dist/core/class/child-observable-class.mjs +134 -0
  5. package/dist/core/class/child-observable-class.mjs.map +1 -0
  6. package/dist/core/class/index.d.mts +4 -0
  7. package/dist/core/class/index.d.mts.map +1 -0
  8. package/dist/core/class/index.mjs +4 -0
  9. package/dist/core/class/index.mjs.map +1 -0
  10. package/dist/core/class/observable-base-class.d.mts +28 -0
  11. package/dist/core/class/observable-base-class.d.mts.map +1 -0
  12. package/dist/core/class/observable-base-class.mjs +116 -0
  13. package/dist/core/class/observable-base-class.mjs.map +1 -0
  14. package/dist/core/class/root-observable-class.d.mts +12 -0
  15. package/dist/core/class/root-observable-class.d.mts.map +1 -0
  16. package/dist/core/class/root-observable-class.mjs +35 -0
  17. package/dist/core/class/root-observable-class.mjs.map +1 -0
  18. package/dist/core/combine/combine.d.mts +35 -0
  19. package/dist/core/combine/combine.d.mts.map +1 -0
  20. package/dist/core/combine/combine.mjs +94 -0
  21. package/dist/core/combine/combine.mjs.map +1 -0
  22. package/dist/core/combine/index.d.mts +4 -0
  23. package/dist/core/combine/index.d.mts.map +1 -0
  24. package/dist/core/combine/index.mjs +4 -0
  25. package/dist/core/combine/index.mjs.map +1 -0
  26. package/dist/core/combine/merge.d.mts +28 -0
  27. package/dist/core/combine/merge.d.mts.map +1 -0
  28. package/dist/core/combine/merge.mjs +52 -0
  29. package/dist/core/combine/merge.mjs.map +1 -0
  30. package/dist/core/combine/zip.d.mts +26 -0
  31. package/dist/core/combine/zip.d.mts.map +1 -0
  32. package/dist/core/combine/zip.mjs +63 -0
  33. package/dist/core/combine/zip.mjs.map +1 -0
  34. package/dist/core/create/from-array.d.mts +21 -0
  35. package/dist/core/create/from-array.d.mts.map +1 -0
  36. package/dist/core/create/from-array.mjs +47 -0
  37. package/dist/core/create/from-array.mjs.map +1 -0
  38. package/dist/core/create/from-promise.d.mts +25 -0
  39. package/dist/core/create/from-promise.d.mts.map +1 -0
  40. package/dist/core/create/from-promise.mjs +51 -0
  41. package/dist/core/create/from-promise.mjs.map +1 -0
  42. package/dist/core/create/from-subscribable.d.mts +3 -0
  43. package/dist/core/create/from-subscribable.d.mts.map +1 -0
  44. package/dist/core/create/from-subscribable.mjs +22 -0
  45. package/dist/core/create/from-subscribable.mjs.map +1 -0
  46. package/dist/core/create/index.d.mts +8 -0
  47. package/dist/core/create/index.d.mts.map +1 -0
  48. package/dist/core/create/index.mjs +8 -0
  49. package/dist/core/create/index.mjs.map +1 -0
  50. package/dist/core/create/interval.d.mts +21 -0
  51. package/dist/core/create/interval.d.mts.map +1 -0
  52. package/dist/core/create/interval.mjs +74 -0
  53. package/dist/core/create/interval.mjs.map +1 -0
  54. package/dist/core/create/of.d.mts +20 -0
  55. package/dist/core/create/of.d.mts.map +1 -0
  56. package/dist/core/create/of.mjs +44 -0
  57. package/dist/core/create/of.mjs.map +1 -0
  58. package/dist/core/create/source.d.mts +29 -0
  59. package/dist/core/create/source.d.mts.map +1 -0
  60. package/dist/core/create/source.mjs +29 -0
  61. package/dist/core/create/source.mjs.map +1 -0
  62. package/dist/core/create/timer.d.mts +20 -0
  63. package/dist/core/create/timer.d.mts.map +1 -0
  64. package/dist/core/create/timer.mjs +64 -0
  65. package/dist/core/create/timer.mjs.map +1 -0
  66. package/dist/core/index.d.mts +7 -0
  67. package/dist/core/index.d.mts.map +1 -0
  68. package/dist/core/index.mjs +37 -0
  69. package/dist/core/index.mjs.map +1 -0
  70. package/dist/core/operators/audit-time.d.mts +3 -0
  71. package/dist/core/operators/audit-time.d.mts.map +1 -0
  72. package/dist/core/operators/audit-time.mjs +50 -0
  73. package/dist/core/operators/audit-time.mjs.map +1 -0
  74. package/dist/core/operators/debounce-time.d.mts +31 -0
  75. package/dist/core/operators/debounce-time.d.mts.map +1 -0
  76. package/dist/core/operators/debounce-time.mjs +73 -0
  77. package/dist/core/operators/debounce-time.mjs.map +1 -0
  78. package/dist/core/operators/filter.d.mts +28 -0
  79. package/dist/core/operators/filter.d.mts.map +1 -0
  80. package/dist/core/operators/filter.mjs +38 -0
  81. package/dist/core/operators/filter.mjs.map +1 -0
  82. package/dist/core/operators/index.d.mts +18 -0
  83. package/dist/core/operators/index.d.mts.map +1 -0
  84. package/dist/core/operators/index.mjs +18 -0
  85. package/dist/core/operators/index.mjs.map +1 -0
  86. package/dist/core/operators/map-with-index.d.mts +39 -0
  87. package/dist/core/operators/map-with-index.d.mts.map +1 -0
  88. package/dist/core/operators/map-with-index.mjs +73 -0
  89. package/dist/core/operators/map-with-index.mjs.map +1 -0
  90. package/dist/core/operators/merge-map.d.mts +34 -0
  91. package/dist/core/operators/merge-map.d.mts.map +1 -0
  92. package/dist/core/operators/merge-map.mjs +75 -0
  93. package/dist/core/operators/merge-map.mjs.map +1 -0
  94. package/dist/core/operators/pairwise.d.mts +27 -0
  95. package/dist/core/operators/pairwise.d.mts.map +1 -0
  96. package/dist/core/operators/pairwise.mjs +59 -0
  97. package/dist/core/operators/pairwise.mjs.map +1 -0
  98. package/dist/core/operators/scan.d.mts +30 -0
  99. package/dist/core/operators/scan.d.mts.map +1 -0
  100. package/dist/core/operators/scan.mjs +56 -0
  101. package/dist/core/operators/scan.mjs.map +1 -0
  102. package/dist/core/operators/skip-if-no-change.d.mts +33 -0
  103. package/dist/core/operators/skip-if-no-change.d.mts.map +1 -0
  104. package/dist/core/operators/skip-if-no-change.mjs +68 -0
  105. package/dist/core/operators/skip-if-no-change.mjs.map +1 -0
  106. package/dist/core/operators/skip-until.d.mts +3 -0
  107. package/dist/core/operators/skip-until.d.mts.map +1 -0
  108. package/dist/core/operators/skip-until.mjs +33 -0
  109. package/dist/core/operators/skip-until.mjs.map +1 -0
  110. package/dist/core/operators/skip-while.d.mts +4 -0
  111. package/dist/core/operators/skip-while.d.mts.map +1 -0
  112. package/dist/core/operators/skip-while.mjs +40 -0
  113. package/dist/core/operators/skip-while.mjs.map +1 -0
  114. package/dist/core/operators/switch-map.d.mts +31 -0
  115. package/dist/core/operators/switch-map.d.mts.map +1 -0
  116. package/dist/core/operators/switch-map.mjs +70 -0
  117. package/dist/core/operators/switch-map.mjs.map +1 -0
  118. package/dist/core/operators/take-until.d.mts +32 -0
  119. package/dist/core/operators/take-until.d.mts.map +1 -0
  120. package/dist/core/operators/take-until.mjs +60 -0
  121. package/dist/core/operators/take-until.mjs.map +1 -0
  122. package/dist/core/operators/take-while.d.mts +4 -0
  123. package/dist/core/operators/take-while.d.mts.map +1 -0
  124. package/dist/core/operators/take-while.mjs +42 -0
  125. package/dist/core/operators/take-while.mjs.map +1 -0
  126. package/dist/core/operators/throttle-time.d.mts +23 -0
  127. package/dist/core/operators/throttle-time.d.mts.map +1 -0
  128. package/dist/core/operators/throttle-time.mjs +68 -0
  129. package/dist/core/operators/throttle-time.mjs.map +1 -0
  130. package/dist/core/operators/with-buffered-from.d.mts +4 -0
  131. package/dist/core/operators/with-buffered-from.d.mts.map +1 -0
  132. package/dist/core/operators/with-buffered-from.mjs +45 -0
  133. package/dist/core/operators/with-buffered-from.mjs.map +1 -0
  134. package/dist/core/operators/with-current-value-from.d.mts +4 -0
  135. package/dist/core/operators/with-current-value-from.d.mts.map +1 -0
  136. package/dist/core/operators/with-current-value-from.mjs +37 -0
  137. package/dist/core/operators/with-current-value-from.mjs.map +1 -0
  138. package/dist/core/operators/with-initial-value.d.mts +26 -0
  139. package/dist/core/operators/with-initial-value.d.mts.map +1 -0
  140. package/dist/core/operators/with-initial-value.mjs +47 -0
  141. package/dist/core/operators/with-initial-value.mjs.map +1 -0
  142. package/dist/core/types/id.d.mts +4 -0
  143. package/dist/core/types/id.d.mts.map +1 -0
  144. package/dist/core/types/id.mjs +2 -0
  145. package/dist/core/types/id.mjs.map +1 -0
  146. package/dist/core/types/index.d.mts +6 -0
  147. package/dist/core/types/index.d.mts.map +1 -0
  148. package/dist/core/types/index.mjs +3 -0
  149. package/dist/core/types/index.mjs.map +1 -0
  150. package/dist/core/types/observable-family.d.mts +68 -0
  151. package/dist/core/types/observable-family.d.mts.map +1 -0
  152. package/dist/core/types/observable-family.mjs +2 -0
  153. package/dist/core/types/observable-family.mjs.map +1 -0
  154. package/dist/core/types/observable-kind.d.mts +4 -0
  155. package/dist/core/types/observable-kind.d.mts.map +1 -0
  156. package/dist/core/types/observable-kind.mjs +2 -0
  157. package/dist/core/types/observable-kind.mjs.map +1 -0
  158. package/dist/core/types/observable.d.mts +83 -0
  159. package/dist/core/types/observable.d.mts.map +1 -0
  160. package/dist/core/types/observable.mjs +10 -0
  161. package/dist/core/types/observable.mjs.map +1 -0
  162. package/dist/core/types/types.d.mts +16 -0
  163. package/dist/core/types/types.d.mts.map +1 -0
  164. package/dist/core/types/types.mjs +2 -0
  165. package/dist/core/types/types.mjs.map +1 -0
  166. package/dist/core/utils/id-maker.d.mts +5 -0
  167. package/dist/core/utils/id-maker.d.mts.map +1 -0
  168. package/dist/core/utils/id-maker.mjs +17 -0
  169. package/dist/core/utils/id-maker.mjs.map +1 -0
  170. package/dist/core/utils/index.d.mts +5 -0
  171. package/dist/core/utils/index.d.mts.map +1 -0
  172. package/dist/core/utils/index.mjs +5 -0
  173. package/dist/core/utils/index.mjs.map +1 -0
  174. package/dist/core/utils/max-depth.d.mts +3 -0
  175. package/dist/core/utils/max-depth.d.mts.map +1 -0
  176. package/dist/core/utils/max-depth.mjs +8 -0
  177. package/dist/core/utils/max-depth.mjs.map +1 -0
  178. package/dist/core/utils/observable-utils.d.mts +3 -0
  179. package/dist/core/utils/observable-utils.d.mts.map +1 -0
  180. package/dist/core/utils/observable-utils.mjs +7 -0
  181. package/dist/core/utils/observable-utils.mjs.map +1 -0
  182. package/dist/core/utils/utils.d.mts +4 -0
  183. package/dist/core/utils/utils.d.mts.map +1 -0
  184. package/dist/core/utils/utils.mjs +38 -0
  185. package/dist/core/utils/utils.mjs.map +1 -0
  186. package/dist/entry-point.d.mts +2 -0
  187. package/dist/entry-point.d.mts.map +1 -0
  188. package/dist/entry-point.mjs +40 -0
  189. package/dist/entry-point.mjs.map +1 -0
  190. package/dist/globals.d.mts +4 -0
  191. package/dist/index.d.mts +3 -0
  192. package/dist/index.d.mts.map +1 -0
  193. package/dist/index.mjs +40 -0
  194. package/dist/index.mjs.map +1 -0
  195. package/dist/tsconfig.json +1 -0
  196. package/dist/types.d.mts +2 -0
  197. package/dist/utils/create-event-emitter.d.mts +39 -0
  198. package/dist/utils/create-event-emitter.d.mts.map +1 -0
  199. package/dist/utils/create-event-emitter.mjs +57 -0
  200. package/dist/utils/create-event-emitter.mjs.map +1 -0
  201. package/dist/utils/create-reducer.d.mts +34 -0
  202. package/dist/utils/create-reducer.d.mts.map +1 -0
  203. package/dist/utils/create-reducer.mjs +49 -0
  204. package/dist/utils/create-reducer.mjs.map +1 -0
  205. package/dist/utils/create-state.d.mts +61 -0
  206. package/dist/utils/create-state.d.mts.map +1 -0
  207. package/dist/utils/create-state.mjs +92 -0
  208. package/dist/utils/create-state.mjs.map +1 -0
  209. package/dist/utils/index.d.mts +4 -0
  210. package/dist/utils/index.d.mts.map +1 -0
  211. package/dist/utils/index.mjs +4 -0
  212. package/dist/utils/index.mjs.map +1 -0
  213. package/package.json +71 -0
  214. package/src/core/class/child-observable-class.mts +232 -0
  215. package/src/core/class/index.mts +3 -0
  216. package/src/core/class/observable-base-class.mts +186 -0
  217. package/src/core/class/observable.class.test.mts +89 -0
  218. package/src/core/class/root-observable-class.mts +68 -0
  219. package/src/core/combine/combine.mts +144 -0
  220. package/src/core/combine/index.mts +3 -0
  221. package/src/core/combine/merge.mts +84 -0
  222. package/src/core/combine/zip.mts +149 -0
  223. package/src/core/create/from-array.mts +58 -0
  224. package/src/core/create/from-promise.mts +58 -0
  225. package/src/core/create/from-subscribable.mts +37 -0
  226. package/src/core/create/index.mts +7 -0
  227. package/src/core/create/interval.mts +99 -0
  228. package/src/core/create/of.mts +54 -0
  229. package/src/core/create/source.mts +59 -0
  230. package/src/core/create/timer.mts +84 -0
  231. package/src/core/index.mts +6 -0
  232. package/src/core/operators/audit-time.mts +77 -0
  233. package/src/core/operators/debounce-time.mts +96 -0
  234. package/src/core/operators/filter.mts +125 -0
  235. package/src/core/operators/index.mts +17 -0
  236. package/src/core/operators/map-with-index.mts +168 -0
  237. package/src/core/operators/merge-map.mts +108 -0
  238. package/src/core/operators/pairwise.mts +77 -0
  239. package/src/core/operators/scan.mts +81 -0
  240. package/src/core/operators/skip-if-no-change.mts +91 -0
  241. package/src/core/operators/skip-until.mts +54 -0
  242. package/src/core/operators/skip-while.mts +77 -0
  243. package/src/core/operators/switch-map.mts +101 -0
  244. package/src/core/operators/take-until.mts +80 -0
  245. package/src/core/operators/take-while.mts +103 -0
  246. package/src/core/operators/throttle-time.mts +95 -0
  247. package/src/core/operators/with-buffered-from.mts +68 -0
  248. package/src/core/operators/with-current-value-from.mts +58 -0
  249. package/src/core/operators/with-initial-value.mts +76 -0
  250. package/src/core/types/id.mts +5 -0
  251. package/src/core/types/index.mts +5 -0
  252. package/src/core/types/observable-family.mts +259 -0
  253. package/src/core/types/observable-kind.mts +5 -0
  254. package/src/core/types/observable.mts +218 -0
  255. package/src/core/types/types.mts +40 -0
  256. package/src/core/utils/id-maker.mts +31 -0
  257. package/src/core/utils/index.mts +4 -0
  258. package/src/core/utils/max-depth.mts +7 -0
  259. package/src/core/utils/observable-utils.mts +10 -0
  260. package/src/core/utils/utils.mts +51 -0
  261. package/src/core/utils/utils.test.mts +88 -0
  262. package/src/entry-point.mts +1 -0
  263. package/src/globals.d.mts +4 -0
  264. package/src/index.mts +2 -0
  265. package/src/utils/create-event-emitter.mts +62 -0
  266. package/src/utils/create-reducer.mts +55 -0
  267. package/src/utils/create-state.mts +138 -0
  268. package/src/utils/index.mts +3 -0
@@ -0,0 +1,83 @@
1
+ import { type ObservableId, type UpdaterSymbol } from './id.mjs';
2
+ import { type ObservableKind } from './observable-kind.mjs';
3
+ import { type NonEmptyUnknownList, type Subscription } from './types.mjs';
4
+ /**
5
+ * Inheritance
6
+ *
7
+ * ```txt
8
+ * ObservableBase
9
+ * |
10
+ * +- SyncChildObservable \ \
11
+ * | +-- ChildObservable \
12
+ * +- AsyncChildObservable X +-- Observable
13
+ * | +-- ManagerObservable /
14
+ * +- RootObservableType / /
15
+ * ```
16
+ */
17
+ type CreateObservableType<A, Kind extends ObservableKind> = Readonly<{
18
+ id: ObservableId;
19
+ kind: Kind;
20
+ depth: ObservableKind extends 'root' ? 0 : number;
21
+ addChild: <B>(child: ChildObservable<B>) => void;
22
+ getSnapshot: () => Optional<A>;
23
+ isCompleted: boolean;
24
+ updaterSymbol: UpdaterSymbol;
25
+ hasSubscriber: boolean;
26
+ hasChild: boolean;
27
+ hasActiveChild: () => boolean;
28
+ tryUpdate: (updaterSymbol: UpdaterSymbol) => void;
29
+ tryComplete: () => void;
30
+ complete: () => void;
31
+ subscribe: (onNext: (v: A) => void, onComplete?: () => void) => Subscription;
32
+ pipe: PipeMethod<A>;
33
+ }>;
34
+ /** @internal */
35
+ type PipeMethod<A> = (<B>(operator: WithInitialValueOperator<A, B>) => InitializedObservable<B>) & (<B>(operator: DropInitialValueOperator<A, B>) => Observable<B>) & (<B>(operator: KeepInitialValueOperator<A, B>) => Observable<B>);
36
+ export type ObservableBase<A> = CreateObservableType<A, ObservableKind>;
37
+ /** @internal */
38
+ declare namespace ObservableTypeConverter {
39
+ export type ToInitialized<A, O extends CreateObservableType<A, ObservableKind>> = StrictOmit<O, 'pipe' | 'getSnapshot'> & Readonly<{
40
+ getSnapshot: () => Some<A>;
41
+ pipe: PipeMethodForInitialized<A>;
42
+ }>;
43
+ type PipeMethodForInitialized<A> = (<B>(operator: WithInitialValueOperator<A, B>) => InitializedObservable<B>) & (<B>(operator: DropInitialValueOperator<A, B>) => Observable<B>) & (<B>(operator: KeepInitialValueOperator<A, B>) => InitializedObservable<B>);
44
+ export type ToChild<A, O extends CreateObservableType<A, ObservableKind>, P extends NonEmptyUnknownList = NonEmptyUnknownList> = O & Readonly<{
45
+ parents: Wrap<P>;
46
+ }>;
47
+ export type ToManager<A, O extends CreateObservableType<A, 'async child' | 'root'>> = O & Readonly<{
48
+ addDescendant: <B>(child: ChildObservable<B>) => void;
49
+ }>;
50
+ export {};
51
+ }
52
+ export type SyncChildObservable<A, P extends NonEmptyUnknownList = NonEmptyUnknownList> = ObservableTypeConverter.ToChild<A, CreateObservableType<A, 'sync child'>, P>;
53
+ export type InitializedSyncChildObservable<A, P extends NonEmptyUnknownList = NonEmptyUnknownList> = ObservableTypeConverter.ToInitialized<A, SyncChildObservable<A, P>>;
54
+ export type AsyncChildObservable<A, P extends NonEmptyUnknownList = NonEmptyUnknownList> = ObservableTypeConverter.ToManager<A, ObservableTypeConverter.ToChild<A, CreateObservableType<A, 'async child'>, P>>;
55
+ export type InitializedAsyncChildObservable<A, P extends NonEmptyUnknownList = NonEmptyUnknownList> = ObservableTypeConverter.ToInitialized<A, AsyncChildObservable<A, P>>;
56
+ export type ChildObservable<A, P extends NonEmptyUnknownList = NonEmptyUnknownList> = AsyncChildObservable<A, P> | SyncChildObservable<A, P>;
57
+ export type RootObservable<A> = ObservableTypeConverter.ToManager<A, CreateObservableType<A, 'root'>>;
58
+ export type InitializedRootObservable<A> = ObservableTypeConverter.ToInitialized<A, RootObservable<A>>;
59
+ export type Observable<A> = AsyncChildObservable<A> | RootObservable<A> | SyncChildObservable<A>;
60
+ export type InitializedObservable<A> = InitializedAsyncChildObservable<A> | InitializedRootObservable<A> | InitializedSyncChildObservable<A>;
61
+ export type ManagerObservable<A> = AsyncChildObservable<A> | RootObservable<A>;
62
+ /** Type of operator that converts Observable to InitializedObservable */
63
+ export type WithInitialValueOperator<A, B> = (src: Observable<A>) => InitializedObservable<B>;
64
+ /** Type of operator that converts Observable to non-initialized Observable */
65
+ export type DropInitialValueOperator<A, B> = (src: InitializedObservable<A> | Observable<A>) => Observable<B>;
66
+ /** Type of operator that preserves whether Observable has initial value */
67
+ export type KeepInitialValueOperator<A, B> = (src: InitializedObservable<A>) => InitializedObservable<B>;
68
+ export type Operator<A, B> = WithInitialValueOperator<A, B> | DropInitialValueOperator<A, B> | KeepInitialValueOperator<A, B>;
69
+ export declare const isManagerObservable: <A>(obs: Observable<A>) => obs is ManagerObservable<A>;
70
+ export declare const isRootObservable: <A>(obs: Observable<A>) => obs is RootObservable<A>;
71
+ export declare const isChildObservable: <A>(obs: Observable<A>) => obs is ChildObservable<A>;
72
+ export type ObservableValue<A> = A extends Observable<infer B> ? B : never;
73
+ export type Unwrap<A extends readonly Observable<unknown>[]> = Readonly<{
74
+ [P in keyof A]: ObservableValue<A[P]>;
75
+ }>;
76
+ export type Wrap<A extends readonly unknown[]> = Readonly<{
77
+ [P in keyof A]: Observable<A[P]>;
78
+ }>;
79
+ export type WrapInitialized<A extends readonly unknown[]> = Readonly<{
80
+ [P in keyof A]: InitializedObservable<A[P]>;
81
+ }>;
82
+ export {};
83
+ //# sourceMappingURL=observable.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.d.mts","sourceRoot":"","sources":["../../../src/core/types/observable.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1E;;;;;;;;;;;;GAYG;AAEH,KAAK,oBAAoB,CAAC,CAAC,EAAE,IAAI,SAAS,cAAc,IAAI,QAAQ,CAAC;IACnE,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IAGX,KAAK,EAAE,cAAc,SAAS,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAGjD,WAAW,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,OAAO,CAAC;IAE9B,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,YAAY,CAAC;IAE7E,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC;AAEH,gBAAgB;AAChB,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EACtB,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KACrC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAC5B,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAChE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAExE,gBAAgB;AAChB,kBAAU,uBAAuB,CAAC;IAChC,MAAM,MAAM,aAAa,CACvB,CAAC,EACD,CAAC,SAAS,oBAAoB,CAAC,CAAC,EAAE,cAAc,CAAC,IAC/C,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,GACvC,QAAQ,CAAC;QACP,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;IAEL,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EACpC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KACrC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAC5B,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAChE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,OAAO,CACjB,CAAC,EACD,CAAC,SAAS,oBAAoB,CAAC,CAAC,EAAE,cAAc,CAAC,EACjD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,CAAC,GACH,QAAQ,CAAC;QACP,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAClB,CAAC,CAAC;IAEL,MAAM,MAAM,SAAS,CACnB,CAAC,EACD,CAAC,SAAS,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,IACvD,CAAC,GACH,QAAQ,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;KACvD,CAAC,CAAC;;CACN;AAED,MAAM,MAAM,mBAAmB,CAC7B,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,uBAAuB,CAAC,OAAO,CACjC,CAAC,EACD,oBAAoB,CAAC,CAAC,EAAE,YAAY,CAAC,EACrC,CAAC,CACF,CAAC;AAEF,MAAM,MAAM,8BAA8B,CACxC,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,uBAAuB,CAAC,aAAa,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,oBAAoB,CAC9B,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,uBAAuB,CAAC,SAAS,CACnC,CAAC,EACD,uBAAuB,CAAC,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAC9E,CAAC;AAEF,MAAM,MAAM,+BAA+B,CACzC,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,uBAAuB,CAAC,aAAa,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,MAAM,eAAe,CACzB,CAAC,EACD,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACjD,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,uBAAuB,CAAC,SAAS,CAC/D,CAAC,EACD,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,CAAC,IACrC,uBAAuB,CAAC,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB,oBAAoB,CAAC,CAAC,CAAC,GACvB,cAAc,CAAC,CAAC,CAAC,GACjB,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE3B,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAC/B,+BAA+B,CAAC,CAAC,CAAC,GAClC,yBAAyB,CAAC,CAAC,CAAC,GAC5B,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAI/E,yEAAyE;AACzE,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAC3C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,KACf,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE9B,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAC3C,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAC1C,UAAU,CAAC,CAAC,CAAC,CAAC;AAEnB,2EAA2E;AAC3E,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAC3C,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAC1B,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE9B,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IACrB,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC9B,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC9B,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnC,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,KAAK,UAAU,CAAC,CAAC,CAAC,KACjB,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAA8B,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,KAAK,UAAU,CAAC,CAAC,CAAC,KACjB,GAAG,IAAI,cAAc,CAAC,CAAC,CAAwB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,KAAK,UAAU,CAAC,CAAC,CAAC,KACjB,GAAG,IAAI,eAAe,CAAC,CAAC,CAC8B,CAAC;AAE1D,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE3E,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC;KACrE,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,QAAQ,CAAC;KACvD,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,QAAQ,CAAC;KAClE,CAAC,IAAI,MAAM,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import 'ts-data-forge';
2
+
3
+ const isManagerObservable = (obs) => obs.kind !== 'sync child';
4
+ const isRootObservable = (obs) => obs.kind === 'root';
5
+ const isChildObservable = (obs) => obs.kind === 'sync child' || obs.kind === 'async child';
6
+ // type GetDestTypeOfOperator<Op extends Operator<unknown, unknown>> =
7
+ // Op extends Operator<unknown, infer B> ? B : never;
8
+
9
+ export { isChildObservable, isManagerObservable, isRootObservable };
10
+ //# sourceMappingURL=observable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.mjs","sources":["../../../src/core/types/observable.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAkKO,MAAM,mBAAmB,GAAG,CACjC,GAAkB,KACc,GAAG,CAAC,IAAI,KAAK;AAExC,MAAM,gBAAgB,GAAG,CAC9B,GAAkB,KACW,GAAG,CAAC,IAAI,KAAK;MAE/B,iBAAiB,GAAG,CAC/B,GAAkB,KAElB,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK;AAgB5C;AACA;;;;"}
@@ -0,0 +1,16 @@
1
+ import { type Queue } from 'ts-data-forge';
2
+ export type TupleToQueueTuple<T extends readonly unknown[]> = Readonly<{
3
+ [P in keyof T]: Queue<T[P]>;
4
+ }>;
5
+ export type NonEmptyUnknownList = readonly [unknown, ...unknown[]];
6
+ export type Subscriber<A> = Readonly<{
7
+ onNext: (v: A) => void;
8
+ onComplete: () => void;
9
+ }>;
10
+ export type Subscription = Readonly<{
11
+ unsubscribe: () => void;
12
+ }>;
13
+ export type Subscribable<A> = Readonly<{
14
+ subscribe: (onNext: (nextValue: A) => void, onError?: (error?: unknown) => void, onComplete?: () => void) => Subscription;
15
+ }>;
16
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/core/types/types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,QAAQ,CAAC;KACpE,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEnE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,QAAQ,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC;IACrC,SAAS,EAAE,CACT,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,EAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,EACnC,UAAU,CAAC,EAAE,MAAM,IAAI,KACpB,YAAY,CAAC;CACnB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'ts-data-forge';
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { type ObservableId, type SubscriberId, type UpdaterSymbol } from '../types/index.mjs';
2
+ export declare const issueObservableId: () => ObservableId;
3
+ export declare const issueSubscriberId: () => SubscriberId;
4
+ export declare const issueUpdaterSymbol: () => UpdaterSymbol;
5
+ //# sourceMappingURL=id-maker.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-maker.d.mts","sourceRoot":"","sources":["../../../src/core/utils/id-maker.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAmB5B,eAAO,MAAM,iBAAiB,QAAO,YACL,CAAC;AAEjC,eAAO,MAAM,iBAAiB,QAAO,YACL,CAAC;AAEjC,eAAO,MAAM,kBAAkB,QAAO,aACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ function* idMaker() {
2
+ let mut_i = 0;
3
+ while (true) {
4
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
5
+ yield Symbol(mut_i.toString());
6
+ mut_i += 1;
7
+ }
8
+ }
9
+ const observableIdMaker = idMaker();
10
+ const subscriberIdMaker = idMaker();
11
+ const updaterSymbolMaker = idMaker();
12
+ const issueObservableId = () => observableIdMaker.next().value;
13
+ const issueSubscriberId = () => subscriberIdMaker.next().value;
14
+ const issueUpdaterSymbol = () => updaterSymbolMaker.next().value;
15
+
16
+ export { issueObservableId, issueSubscriberId, issueUpdaterSymbol };
17
+ //# sourceMappingURL=id-maker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-maker.mjs","sources":["../../../src/core/utils/id-maker.mts"],"sourcesContent":[null],"names":[],"mappings":"AAMA,UAAU,OAAO,GAAA;IACf,IAAI,KAAK,GAAG,CAAC;IAEb,OAAO,IAAI,EAAE;;AAEX,QAAA,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAM;QAEnC,KAAK,IAAI,CAAC;IACZ;AACF;AAEA,MAAM,iBAAiB,GAAG,OAAO,EAAgB;AAEjD,MAAM,iBAAiB,GAAG,OAAO,EAAgB;AAEjD,MAAM,kBAAkB,GAAG,OAAO,EAAiB;AAE5C,MAAM,iBAAiB,GAAG,MAC/B,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAEpB,MAAM,iBAAiB,GAAG,MAC/B,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAEpB,MAAM,kBAAkB,GAAG,MAChC,kBAAkB,CAAC,IAAI,EAAE,CAAC;;;;"}
@@ -0,0 +1,5 @@
1
+ export * from './id-maker.mjs';
2
+ export * from './max-depth.mjs';
3
+ export * from './observable-utils.mjs';
4
+ export * from './utils.mjs';
5
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/core/utils/index.mts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { issueObservableId, issueSubscriberId, issueUpdaterSymbol } from './id-maker.mjs';
2
+ export { maxDepth } from './max-depth.mjs';
3
+ export { toSubscriber } from './observable-utils.mjs';
4
+ export { binarySearch, halfInt } from './utils.mjs';
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,3 @@
1
+ import { type Observable } from '../types/index.mjs';
2
+ export declare const maxDepth: (parents: readonly Observable<unknown>[]) => number;
3
+ //# sourceMappingURL=max-depth.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-depth.d.mts","sourceRoot":"","sources":["../../../src/core/utils/max-depth.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,QAAQ,GAAI,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,KAAG,MAG/B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { pipe, Arr, Optional } from 'ts-data-forge';
2
+
3
+ const maxDepth = (parents) => pipe(Arr.maxBy(parents, (p) => p.depth))
4
+ .mapOptional((o) => o.depth)
5
+ .map(Optional.unwrapOr(0)).value;
6
+
7
+ export { maxDepth };
8
+ //# sourceMappingURL=max-depth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-depth.mjs","sources":["../../../src/core/utils/max-depth.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAGO,MAAM,QAAQ,GAAG,CAAC,OAAuC,KAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;KACpC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK;KAC1B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;;;"}
@@ -0,0 +1,3 @@
1
+ import { type Subscriber } from '../types/index.mjs';
2
+ export declare const toSubscriber: <A>(onNext: (v: A) => void, onComplete?: () => void) => Subscriber<A>;
3
+ //# sourceMappingURL=observable-utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable-utils.d.mts","sourceRoot":"","sources":["../../../src/core/utils/observable-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,YAAY,GAAI,CAAC,EAC5B,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACtB,aAAa,MAAM,IAAI,KACtB,UAAU,CAAC,CAAC,CAIF,CAAC"}
@@ -0,0 +1,7 @@
1
+ const toSubscriber = (onNext, onComplete) => ({
2
+ onNext,
3
+ onComplete: onComplete ?? (() => { }),
4
+ });
5
+
6
+ export { toSubscriber };
7
+ //# sourceMappingURL=observable-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable-utils.mjs","sources":["../../../src/core/utils/observable-utils.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEO,MAAM,YAAY,GAAG,CAC1B,MAAsB,EACtB,UAAuB,MAEtB;IACC,MAAM;IACN,UAAU,EAAE,UAAU,KAAK,MAAK,EAAE,CAAC,CAAC;AACrC,CAAA;;;;"}
@@ -0,0 +1,4 @@
1
+ export declare const halfInt: (x: SafeInt) => SafeInt;
2
+ /** Returns the position where x should be inserted in a sorted array. */
3
+ export declare const binarySearch: <N extends number>(sortedArray: readonly N[], x: N) => NegativeInt32 | Uint32;
4
+ //# sourceMappingURL=utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../../../src/core/utils/utils.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,KAAG,OAKI,CAAC;AAE1C,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,EAC3C,aAAa,SAAS,CAAC,EAAE,EACzB,GAAG,CAAC,KACH,aAAa,GAAG,MAqClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { asUint32, Arr, asSafeInt, SafeInt } from 'ts-data-forge';
2
+
3
+ const halfInt = (x) => x % 2 === 0
4
+ ? SafeInt.div(x, 2)
5
+ : x > 0
6
+ ? SafeInt.div(SafeInt.sub(x, 1), 2) // (x-1) / 2. e.g. 3 -> 1, 5 -> 2
7
+ : SafeInt.div(SafeInt.add(x, 1), 2); // (x+1) / 2. e.g. -3 -> -1, -5 -> -2
8
+ /** Returns the position where x should be inserted in a sorted array. */
9
+ const binarySearch = (sortedArray, x) => {
10
+ const uint32Result = asUint32(0);
11
+ if (Arr.isArrayOfLength(sortedArray, 0)) {
12
+ return uint32Result;
13
+ }
14
+ const left0 = asSafeInt(0);
15
+ let mut_left = left0;
16
+ let mut_right = SafeInt.sub(Arr.length(sortedArray), 1);
17
+ let mut_mid = SafeInt.add(mut_left, halfInt(SafeInt.sub(mut_right, mut_left)));
18
+ // loop while x is in the range of [left, right)
19
+ while (mut_left <= mut_right) {
20
+ const curr = sortedArray[mut_mid];
21
+ if (x === curr)
22
+ break;
23
+ if (curr === undefined)
24
+ break;
25
+ if (curr > x) {
26
+ mut_right = SafeInt.sub(mut_mid, 1);
27
+ }
28
+ else {
29
+ mut_left = SafeInt.add(mut_mid, 1);
30
+ }
31
+ mut_mid = SafeInt.add(mut_left, halfInt(SafeInt.sub(mut_right, mut_left)));
32
+ }
33
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
34
+ return mut_mid;
35
+ };
36
+
37
+ export { binarySearch, halfInt };
38
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sources":["../../../src/core/utils/utils.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAEO,MAAM,OAAO,GAAG,CAAC,CAAU,KAChC,CAAC,GAAG,CAAC,KAAK;MACN,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;MAChB,CAAC,GAAG;AACJ,UAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,UAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAE1C;MACa,YAAY,GAAG,CAC1B,WAAyB,EACzB,CAAI,KACsB;AAC1B,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;IAEhC,IAAI,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;AACvC,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAE1B,IAAI,QAAQ,GAAY,KAAK;AAE7B,IAAA,IAAI,SAAS,GAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEhE,IAAI,OAAO,GAAY,OAAO,CAAC,GAAG,CAChC,QAAQ,EACR,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAC1C;;AAGD,IAAA,OAAO,QAAQ,IAAI,SAAS,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC;QAEjC,IAAI,CAAC,KAAK,IAAI;YAAE;QAEhB,IAAI,IAAI,KAAK,SAAS;YAAE;AAExB,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC;aAAO;YACL,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC;AAEA,QAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5E;;AAGA,IAAA,OAAO,OAAiC;AAC1C;;;;"}
@@ -0,0 +1,2 @@
1
+ export * from './index.mjs';
2
+ //# sourceMappingURL=entry-point.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point.d.mts","sourceRoot":"","sources":["../src/entry-point.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ export { AsyncChildObservableClass, InitializedSyncChildObservableClass, SyncChildObservableClass } from './core/class/child-observable-class.mjs';
2
+ export { ObservableBaseClass } from './core/class/observable-base-class.mjs';
3
+ export { RootObservableClass } from './core/class/root-observable-class.mjs';
4
+ export { combine, combineLatest } from './core/combine/combine.mjs';
5
+ export { merge } from './core/combine/merge.mjs';
6
+ export { zip } from './core/combine/zip.mjs';
7
+ export { fromArray } from './core/create/from-array.mjs';
8
+ export { fromPromise } from './core/create/from-promise.mjs';
9
+ export { fromSubscribable } from './core/create/from-subscribable.mjs';
10
+ export { interval } from './core/create/interval.mjs';
11
+ export { of } from './core/create/of.mjs';
12
+ export { source, subject } from './core/create/source.mjs';
13
+ export { timer } from './core/create/timer.mjs';
14
+ export { auditTime } from './core/operators/audit-time.mjs';
15
+ export { debounceTime } from './core/operators/debounce-time.mjs';
16
+ export { filter } from './core/operators/filter.mjs';
17
+ export { attachIndex, getKey, map, mapOptional, mapResultErr, mapResultOk, mapTo, mapWithIndex, pluck, unwrapOptional, unwrapResultErr, unwrapResultOk, withIndex } from './core/operators/map-with-index.mjs';
18
+ export { flatMap, mergeMap } from './core/operators/merge-map.mjs';
19
+ export { pairwise } from './core/operators/pairwise.mjs';
20
+ export { scan } from './core/operators/scan.mjs';
21
+ export { distinctUntilChanged, skipIfNoChange } from './core/operators/skip-if-no-change.mjs';
22
+ export { skipUntil } from './core/operators/skip-until.mjs';
23
+ export { skip, skipWhile } from './core/operators/skip-while.mjs';
24
+ export { switchMap } from './core/operators/switch-map.mjs';
25
+ export { takeUntil } from './core/operators/take-until.mjs';
26
+ export { take, takeWhile } from './core/operators/take-while.mjs';
27
+ export { throttleTime } from './core/operators/throttle-time.mjs';
28
+ export { withBuffered, withBufferedFrom } from './core/operators/with-buffered-from.mjs';
29
+ export { withCurrentValueFrom, withLatestFrom } from './core/operators/with-current-value-from.mjs';
30
+ export { withInitialValue } from './core/operators/with-initial-value.mjs';
31
+ import 'ts-data-forge';
32
+ export { isChildObservable, isManagerObservable, isRootObservable } from './core/types/observable.mjs';
33
+ export { issueObservableId, issueSubscriberId, issueUpdaterSymbol } from './core/utils/id-maker.mjs';
34
+ export { maxDepth } from './core/utils/max-depth.mjs';
35
+ export { toSubscriber } from './core/utils/observable-utils.mjs';
36
+ export { binarySearch, halfInt } from './core/utils/utils.mjs';
37
+ export { createEventEmitter, createValueEmitter } from './utils/create-event-emitter.mjs';
38
+ export { createReducer } from './utils/create-reducer.mjs';
39
+ export { createBooleanState, createState } from './utils/create-state.mjs';
40
+ //# sourceMappingURL=entry-point.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="ts-type-forge" />
2
+
3
+ // Timer types for Node.js/Browser compatibility
4
+ type TimerId = ReturnType<typeof setTimeout>;
@@ -0,0 +1,3 @@
1
+ export * from './core/index.mjs';
2
+ export * from './utils/index.mjs';
3
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,40 @@
1
+ export { AsyncChildObservableClass, InitializedSyncChildObservableClass, SyncChildObservableClass } from './core/class/child-observable-class.mjs';
2
+ export { ObservableBaseClass } from './core/class/observable-base-class.mjs';
3
+ export { RootObservableClass } from './core/class/root-observable-class.mjs';
4
+ export { combine, combineLatest } from './core/combine/combine.mjs';
5
+ export { merge } from './core/combine/merge.mjs';
6
+ export { zip } from './core/combine/zip.mjs';
7
+ export { fromArray } from './core/create/from-array.mjs';
8
+ export { fromPromise } from './core/create/from-promise.mjs';
9
+ export { fromSubscribable } from './core/create/from-subscribable.mjs';
10
+ export { interval } from './core/create/interval.mjs';
11
+ export { of } from './core/create/of.mjs';
12
+ export { source, subject } from './core/create/source.mjs';
13
+ export { timer } from './core/create/timer.mjs';
14
+ export { auditTime } from './core/operators/audit-time.mjs';
15
+ export { debounceTime } from './core/operators/debounce-time.mjs';
16
+ export { filter } from './core/operators/filter.mjs';
17
+ export { attachIndex, getKey, map, mapOptional, mapResultErr, mapResultOk, mapTo, mapWithIndex, pluck, unwrapOptional, unwrapResultErr, unwrapResultOk, withIndex } from './core/operators/map-with-index.mjs';
18
+ export { flatMap, mergeMap } from './core/operators/merge-map.mjs';
19
+ export { pairwise } from './core/operators/pairwise.mjs';
20
+ export { scan } from './core/operators/scan.mjs';
21
+ export { distinctUntilChanged, skipIfNoChange } from './core/operators/skip-if-no-change.mjs';
22
+ export { skipUntil } from './core/operators/skip-until.mjs';
23
+ export { skip, skipWhile } from './core/operators/skip-while.mjs';
24
+ export { switchMap } from './core/operators/switch-map.mjs';
25
+ export { takeUntil } from './core/operators/take-until.mjs';
26
+ export { take, takeWhile } from './core/operators/take-while.mjs';
27
+ export { throttleTime } from './core/operators/throttle-time.mjs';
28
+ export { withBuffered, withBufferedFrom } from './core/operators/with-buffered-from.mjs';
29
+ export { withCurrentValueFrom, withLatestFrom } from './core/operators/with-current-value-from.mjs';
30
+ export { withInitialValue } from './core/operators/with-initial-value.mjs';
31
+ import 'ts-data-forge';
32
+ export { isChildObservable, isManagerObservable, isRootObservable } from './core/types/observable.mjs';
33
+ export { issueObservableId, issueSubscriberId, issueUpdaterSymbol } from './core/utils/id-maker.mjs';
34
+ export { maxDepth } from './core/utils/max-depth.mjs';
35
+ export { toSubscriber } from './core/utils/observable-utils.mjs';
36
+ export { binarySearch, halfInt } from './core/utils/utils.mjs';
37
+ export { createEventEmitter, createValueEmitter } from './utils/create-event-emitter.mjs';
38
+ export { createReducer } from './utils/create-reducer.mjs';
39
+ export { createBooleanState, createState } from './utils/create-state.mjs';
40
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"include":["."]}
@@ -0,0 +1,2 @@
1
+ import './globals.d.mts';
2
+ export * from './entry-point.mjs';
@@ -0,0 +1,39 @@
1
+ import { type Observable } from '../core/index.mjs';
2
+ /**
3
+ * Creates an event emitter for void events (events without payload).
4
+ * Returns a tuple of [observable, emitter function].
5
+ *
6
+ * @returns A tuple containing the observable and the emitter function
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const [click$, emitClick] = createEventEmitter();
11
+ *
12
+ * click$.subscribe(() => {
13
+ * console.log('Clicked!');
14
+ * });
15
+ *
16
+ * emitClick(); // logs: Clicked!
17
+ * ```
18
+ */
19
+ export declare const createEventEmitter: () => readonly [Observable<void>, () => void];
20
+ /**
21
+ * Creates an event emitter with typed payload.
22
+ * Returns a tuple of [observable, emitter function].
23
+ *
24
+ * @template A - The type of the event payload
25
+ * @returns A tuple containing the observable and the emitter function
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const [message$, emitMessage] = createValueEmitter<string>();
30
+ *
31
+ * message$.subscribe((msg) => {
32
+ * console.log(msg);
33
+ * });
34
+ *
35
+ * emitMessage('Hello'); // logs: Hello
36
+ * ```
37
+ */
38
+ export declare const createValueEmitter: <A>() => readonly [Observable<A>, (value: A) => void];
39
+ //# sourceMappingURL=create-event-emitter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-event-emitter.d.mts","sourceRoot":"","sources":["../../src/utils/create-event-emitter.mts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,QAAO,SAAS,CAC7C,UAAU,CAAC,IAAI,CAAC,EAChB,MAAM,IAAI,CASX,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,OAAM,SAAS,CACjD,UAAU,CAAC,CAAC,CAAC,EACb,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CASnB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import 'ts-data-forge';
2
+ import '../core/utils/id-maker.mjs';
3
+ import '../core/combine/combine.mjs';
4
+ import { source } from '../core/create/source.mjs';
5
+
6
+ /**
7
+ * Creates an event emitter for void events (events without payload).
8
+ * Returns a tuple of [observable, emitter function].
9
+ *
10
+ * @returns A tuple containing the observable and the emitter function
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const [click$, emitClick] = createEventEmitter();
15
+ *
16
+ * click$.subscribe(() => {
17
+ * console.log('Clicked!');
18
+ * });
19
+ *
20
+ * emitClick(); // logs: Clicked!
21
+ * ```
22
+ */
23
+ const createEventEmitter = () => {
24
+ const src$ = source();
25
+ const emitter = () => {
26
+ src$.next(undefined);
27
+ };
28
+ return [src$, emitter];
29
+ };
30
+ /**
31
+ * Creates an event emitter with typed payload.
32
+ * Returns a tuple of [observable, emitter function].
33
+ *
34
+ * @template A - The type of the event payload
35
+ * @returns A tuple containing the observable and the emitter function
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const [message$, emitMessage] = createValueEmitter<string>();
40
+ *
41
+ * message$.subscribe((msg) => {
42
+ * console.log(msg);
43
+ * });
44
+ *
45
+ * emitMessage('Hello'); // logs: Hello
46
+ * ```
47
+ */
48
+ const createValueEmitter = () => {
49
+ const src$ = source();
50
+ const emitter = (value) => {
51
+ src$.next(value);
52
+ };
53
+ return [src$, emitter];
54
+ };
55
+
56
+ export { createEventEmitter, createValueEmitter };
57
+ //# sourceMappingURL=create-event-emitter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-event-emitter.mjs","sources":["../../src/utils/create-event-emitter.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,kBAAkB,GAAG,MAG9B;AACF,IAAA,MAAM,IAAI,GAAG,MAAM,EAAa;IAEhC,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACtB,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACxB;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACI,MAAM,kBAAkB,GAAG,MAG9B;AACF,IAAA,MAAM,IAAI,GAAG,MAAM,EAAK;AAExB,IAAA,MAAM,OAAO,GAAG,CAAC,KAAQ,KAAU;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACxB;;;;"}
@@ -0,0 +1,34 @@
1
+ import { type InitializedObservable } from '../core/index.mjs';
2
+ /**
3
+ * Creates a reducer-based state management container following the Redux pattern.
4
+ * Actions are dispatched to update the state according to the reducer function.
5
+ *
6
+ * @template S - The type of the state
7
+ * @template A - The type of actions
8
+ * @param reducer - A pure function that takes current state and action, returns new state
9
+ * @param initialState - The initial value of the state
10
+ * @returns An object containing the state observable, dispatch function, and snapshot getter
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const [state, dispatch] = createReducer(
15
+ * (s, action: Readonly<{ type: 'increment' } | { type: 'decrement' }>) => {
16
+ * switch (action.type) {
17
+ * case 'increment':
18
+ * return s + 1;
19
+ * case 'decrement':
20
+ * return s - 1;
21
+ * }
22
+ * },
23
+ * 0,
24
+ * );
25
+ *
26
+ * state.subscribe((value: number) => {
27
+ * console.log(value);
28
+ * });
29
+ *
30
+ * dispatch({ type: 'increment' }); // logs: 1
31
+ * ```
32
+ */
33
+ export declare const createReducer: <S, A>(reducer: Reducer<S, A>, initialState: S) => readonly [state: InitializedObservable<S>, dispatch: (action: A) => S, getSnapshot: () => S];
34
+ //# sourceMappingURL=create-reducer.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-reducer.d.mts","sourceRoot":"","sources":["../../src/utils/create-reducer.mts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,EAChC,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,cAAc,CAAC,KACd,SAAS,CACV,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAC1B,WAAW,EAAE,MAAM,CAAC,CAerB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import 'ts-data-forge';
2
+ import '../core/utils/id-maker.mjs';
3
+ import '../core/combine/combine.mjs';
4
+ import { source } from '../core/create/source.mjs';
5
+
6
+ /**
7
+ * Creates a reducer-based state management container following the Redux pattern.
8
+ * Actions are dispatched to update the state according to the reducer function.
9
+ *
10
+ * @template S - The type of the state
11
+ * @template A - The type of actions
12
+ * @param reducer - A pure function that takes current state and action, returns new state
13
+ * @param initialState - The initial value of the state
14
+ * @returns An object containing the state observable, dispatch function, and snapshot getter
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const [state, dispatch] = createReducer(
19
+ * (s, action: Readonly<{ type: 'increment' } | { type: 'decrement' }>) => {
20
+ * switch (action.type) {
21
+ * case 'increment':
22
+ * return s + 1;
23
+ * case 'decrement':
24
+ * return s - 1;
25
+ * }
26
+ * },
27
+ * 0,
28
+ * );
29
+ *
30
+ * state.subscribe((value: number) => {
31
+ * console.log(value);
32
+ * });
33
+ *
34
+ * dispatch({ type: 'increment' }); // logs: 1
35
+ * ```
36
+ */
37
+ const createReducer = (reducer, initialState) => {
38
+ const state = source(initialState);
39
+ const dispatch = (action) => {
40
+ const nextState = reducer(state.getSnapshot().value, action);
41
+ state.next(nextState);
42
+ return nextState;
43
+ };
44
+ const getSnapshot = () => state.getSnapshot().value;
45
+ return [state, dispatch, getSnapshot];
46
+ };
47
+
48
+ export { createReducer };
49
+ //# sourceMappingURL=create-reducer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-reducer.mjs","sources":["../../src/utils/create-reducer.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;MACU,aAAa,GAAG,CAC3B,OAAsB,EACtB,YAAe,KAKb;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAI,YAAY,CAAC;AAErC,IAAA,MAAM,QAAQ,GAAG,CAAC,MAAS,KAAO;AAChC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAE5D,QAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAErB,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAS,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK;AAEtD,IAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAU;AAChD;;;;"}