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.
- package/README.md +878 -0
- package/dist/core/class/child-observable-class.d.mts +37 -0
- package/dist/core/class/child-observable-class.d.mts.map +1 -0
- package/dist/core/class/child-observable-class.mjs +134 -0
- package/dist/core/class/child-observable-class.mjs.map +1 -0
- package/dist/core/class/index.d.mts +4 -0
- package/dist/core/class/index.d.mts.map +1 -0
- package/dist/core/class/index.mjs +4 -0
- package/dist/core/class/index.mjs.map +1 -0
- package/dist/core/class/observable-base-class.d.mts +28 -0
- package/dist/core/class/observable-base-class.d.mts.map +1 -0
- package/dist/core/class/observable-base-class.mjs +116 -0
- package/dist/core/class/observable-base-class.mjs.map +1 -0
- package/dist/core/class/root-observable-class.d.mts +12 -0
- package/dist/core/class/root-observable-class.d.mts.map +1 -0
- package/dist/core/class/root-observable-class.mjs +35 -0
- package/dist/core/class/root-observable-class.mjs.map +1 -0
- package/dist/core/combine/combine.d.mts +35 -0
- package/dist/core/combine/combine.d.mts.map +1 -0
- package/dist/core/combine/combine.mjs +94 -0
- package/dist/core/combine/combine.mjs.map +1 -0
- package/dist/core/combine/index.d.mts +4 -0
- package/dist/core/combine/index.d.mts.map +1 -0
- package/dist/core/combine/index.mjs +4 -0
- package/dist/core/combine/index.mjs.map +1 -0
- package/dist/core/combine/merge.d.mts +28 -0
- package/dist/core/combine/merge.d.mts.map +1 -0
- package/dist/core/combine/merge.mjs +52 -0
- package/dist/core/combine/merge.mjs.map +1 -0
- package/dist/core/combine/zip.d.mts +26 -0
- package/dist/core/combine/zip.d.mts.map +1 -0
- package/dist/core/combine/zip.mjs +63 -0
- package/dist/core/combine/zip.mjs.map +1 -0
- package/dist/core/create/from-array.d.mts +21 -0
- package/dist/core/create/from-array.d.mts.map +1 -0
- package/dist/core/create/from-array.mjs +47 -0
- package/dist/core/create/from-array.mjs.map +1 -0
- package/dist/core/create/from-promise.d.mts +25 -0
- package/dist/core/create/from-promise.d.mts.map +1 -0
- package/dist/core/create/from-promise.mjs +51 -0
- package/dist/core/create/from-promise.mjs.map +1 -0
- package/dist/core/create/from-subscribable.d.mts +3 -0
- package/dist/core/create/from-subscribable.d.mts.map +1 -0
- package/dist/core/create/from-subscribable.mjs +22 -0
- package/dist/core/create/from-subscribable.mjs.map +1 -0
- package/dist/core/create/index.d.mts +8 -0
- package/dist/core/create/index.d.mts.map +1 -0
- package/dist/core/create/index.mjs +8 -0
- package/dist/core/create/index.mjs.map +1 -0
- package/dist/core/create/interval.d.mts +21 -0
- package/dist/core/create/interval.d.mts.map +1 -0
- package/dist/core/create/interval.mjs +74 -0
- package/dist/core/create/interval.mjs.map +1 -0
- package/dist/core/create/of.d.mts +20 -0
- package/dist/core/create/of.d.mts.map +1 -0
- package/dist/core/create/of.mjs +44 -0
- package/dist/core/create/of.mjs.map +1 -0
- package/dist/core/create/source.d.mts +29 -0
- package/dist/core/create/source.d.mts.map +1 -0
- package/dist/core/create/source.mjs +29 -0
- package/dist/core/create/source.mjs.map +1 -0
- package/dist/core/create/timer.d.mts +20 -0
- package/dist/core/create/timer.d.mts.map +1 -0
- package/dist/core/create/timer.mjs +64 -0
- package/dist/core/create/timer.mjs.map +1 -0
- package/dist/core/index.d.mts +7 -0
- package/dist/core/index.d.mts.map +1 -0
- package/dist/core/index.mjs +37 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/core/operators/audit-time.d.mts +3 -0
- package/dist/core/operators/audit-time.d.mts.map +1 -0
- package/dist/core/operators/audit-time.mjs +50 -0
- package/dist/core/operators/audit-time.mjs.map +1 -0
- package/dist/core/operators/debounce-time.d.mts +31 -0
- package/dist/core/operators/debounce-time.d.mts.map +1 -0
- package/dist/core/operators/debounce-time.mjs +73 -0
- package/dist/core/operators/debounce-time.mjs.map +1 -0
- package/dist/core/operators/filter.d.mts +28 -0
- package/dist/core/operators/filter.d.mts.map +1 -0
- package/dist/core/operators/filter.mjs +38 -0
- package/dist/core/operators/filter.mjs.map +1 -0
- package/dist/core/operators/index.d.mts +18 -0
- package/dist/core/operators/index.d.mts.map +1 -0
- package/dist/core/operators/index.mjs +18 -0
- package/dist/core/operators/index.mjs.map +1 -0
- package/dist/core/operators/map-with-index.d.mts +39 -0
- package/dist/core/operators/map-with-index.d.mts.map +1 -0
- package/dist/core/operators/map-with-index.mjs +73 -0
- package/dist/core/operators/map-with-index.mjs.map +1 -0
- package/dist/core/operators/merge-map.d.mts +34 -0
- package/dist/core/operators/merge-map.d.mts.map +1 -0
- package/dist/core/operators/merge-map.mjs +75 -0
- package/dist/core/operators/merge-map.mjs.map +1 -0
- package/dist/core/operators/pairwise.d.mts +27 -0
- package/dist/core/operators/pairwise.d.mts.map +1 -0
- package/dist/core/operators/pairwise.mjs +59 -0
- package/dist/core/operators/pairwise.mjs.map +1 -0
- package/dist/core/operators/scan.d.mts +30 -0
- package/dist/core/operators/scan.d.mts.map +1 -0
- package/dist/core/operators/scan.mjs +56 -0
- package/dist/core/operators/scan.mjs.map +1 -0
- package/dist/core/operators/skip-if-no-change.d.mts +33 -0
- package/dist/core/operators/skip-if-no-change.d.mts.map +1 -0
- package/dist/core/operators/skip-if-no-change.mjs +68 -0
- package/dist/core/operators/skip-if-no-change.mjs.map +1 -0
- package/dist/core/operators/skip-until.d.mts +3 -0
- package/dist/core/operators/skip-until.d.mts.map +1 -0
- package/dist/core/operators/skip-until.mjs +33 -0
- package/dist/core/operators/skip-until.mjs.map +1 -0
- package/dist/core/operators/skip-while.d.mts +4 -0
- package/dist/core/operators/skip-while.d.mts.map +1 -0
- package/dist/core/operators/skip-while.mjs +40 -0
- package/dist/core/operators/skip-while.mjs.map +1 -0
- package/dist/core/operators/switch-map.d.mts +31 -0
- package/dist/core/operators/switch-map.d.mts.map +1 -0
- package/dist/core/operators/switch-map.mjs +70 -0
- package/dist/core/operators/switch-map.mjs.map +1 -0
- package/dist/core/operators/take-until.d.mts +32 -0
- package/dist/core/operators/take-until.d.mts.map +1 -0
- package/dist/core/operators/take-until.mjs +60 -0
- package/dist/core/operators/take-until.mjs.map +1 -0
- package/dist/core/operators/take-while.d.mts +4 -0
- package/dist/core/operators/take-while.d.mts.map +1 -0
- package/dist/core/operators/take-while.mjs +42 -0
- package/dist/core/operators/take-while.mjs.map +1 -0
- package/dist/core/operators/throttle-time.d.mts +23 -0
- package/dist/core/operators/throttle-time.d.mts.map +1 -0
- package/dist/core/operators/throttle-time.mjs +68 -0
- package/dist/core/operators/throttle-time.mjs.map +1 -0
- package/dist/core/operators/with-buffered-from.d.mts +4 -0
- package/dist/core/operators/with-buffered-from.d.mts.map +1 -0
- package/dist/core/operators/with-buffered-from.mjs +45 -0
- package/dist/core/operators/with-buffered-from.mjs.map +1 -0
- package/dist/core/operators/with-current-value-from.d.mts +4 -0
- package/dist/core/operators/with-current-value-from.d.mts.map +1 -0
- package/dist/core/operators/with-current-value-from.mjs +37 -0
- package/dist/core/operators/with-current-value-from.mjs.map +1 -0
- package/dist/core/operators/with-initial-value.d.mts +26 -0
- package/dist/core/operators/with-initial-value.d.mts.map +1 -0
- package/dist/core/operators/with-initial-value.mjs +47 -0
- package/dist/core/operators/with-initial-value.mjs.map +1 -0
- package/dist/core/types/id.d.mts +4 -0
- package/dist/core/types/id.d.mts.map +1 -0
- package/dist/core/types/id.mjs +2 -0
- package/dist/core/types/id.mjs.map +1 -0
- package/dist/core/types/index.d.mts +6 -0
- package/dist/core/types/index.d.mts.map +1 -0
- package/dist/core/types/index.mjs +3 -0
- package/dist/core/types/index.mjs.map +1 -0
- package/dist/core/types/observable-family.d.mts +68 -0
- package/dist/core/types/observable-family.d.mts.map +1 -0
- package/dist/core/types/observable-family.mjs +2 -0
- package/dist/core/types/observable-family.mjs.map +1 -0
- package/dist/core/types/observable-kind.d.mts +4 -0
- package/dist/core/types/observable-kind.d.mts.map +1 -0
- package/dist/core/types/observable-kind.mjs +2 -0
- package/dist/core/types/observable-kind.mjs.map +1 -0
- package/dist/core/types/observable.d.mts +83 -0
- package/dist/core/types/observable.d.mts.map +1 -0
- package/dist/core/types/observable.mjs +10 -0
- package/dist/core/types/observable.mjs.map +1 -0
- package/dist/core/types/types.d.mts +16 -0
- package/dist/core/types/types.d.mts.map +1 -0
- package/dist/core/types/types.mjs +2 -0
- package/dist/core/types/types.mjs.map +1 -0
- package/dist/core/utils/id-maker.d.mts +5 -0
- package/dist/core/utils/id-maker.d.mts.map +1 -0
- package/dist/core/utils/id-maker.mjs +17 -0
- package/dist/core/utils/id-maker.mjs.map +1 -0
- package/dist/core/utils/index.d.mts +5 -0
- package/dist/core/utils/index.d.mts.map +1 -0
- package/dist/core/utils/index.mjs +5 -0
- package/dist/core/utils/index.mjs.map +1 -0
- package/dist/core/utils/max-depth.d.mts +3 -0
- package/dist/core/utils/max-depth.d.mts.map +1 -0
- package/dist/core/utils/max-depth.mjs +8 -0
- package/dist/core/utils/max-depth.mjs.map +1 -0
- package/dist/core/utils/observable-utils.d.mts +3 -0
- package/dist/core/utils/observable-utils.d.mts.map +1 -0
- package/dist/core/utils/observable-utils.mjs +7 -0
- package/dist/core/utils/observable-utils.mjs.map +1 -0
- package/dist/core/utils/utils.d.mts +4 -0
- package/dist/core/utils/utils.d.mts.map +1 -0
- package/dist/core/utils/utils.mjs +38 -0
- package/dist/core/utils/utils.mjs.map +1 -0
- package/dist/entry-point.d.mts +2 -0
- package/dist/entry-point.d.mts.map +1 -0
- package/dist/entry-point.mjs +40 -0
- package/dist/entry-point.mjs.map +1 -0
- package/dist/globals.d.mts +4 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +40 -0
- package/dist/index.mjs.map +1 -0
- package/dist/tsconfig.json +1 -0
- package/dist/types.d.mts +2 -0
- package/dist/utils/create-event-emitter.d.mts +39 -0
- package/dist/utils/create-event-emitter.d.mts.map +1 -0
- package/dist/utils/create-event-emitter.mjs +57 -0
- package/dist/utils/create-event-emitter.mjs.map +1 -0
- package/dist/utils/create-reducer.d.mts +34 -0
- package/dist/utils/create-reducer.d.mts.map +1 -0
- package/dist/utils/create-reducer.mjs +49 -0
- package/dist/utils/create-reducer.mjs.map +1 -0
- package/dist/utils/create-state.d.mts +61 -0
- package/dist/utils/create-state.d.mts.map +1 -0
- package/dist/utils/create-state.mjs +92 -0
- package/dist/utils/create-state.mjs.map +1 -0
- package/dist/utils/index.d.mts +4 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +4 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +71 -0
- package/src/core/class/child-observable-class.mts +232 -0
- package/src/core/class/index.mts +3 -0
- package/src/core/class/observable-base-class.mts +186 -0
- package/src/core/class/observable.class.test.mts +89 -0
- package/src/core/class/root-observable-class.mts +68 -0
- package/src/core/combine/combine.mts +144 -0
- package/src/core/combine/index.mts +3 -0
- package/src/core/combine/merge.mts +84 -0
- package/src/core/combine/zip.mts +149 -0
- package/src/core/create/from-array.mts +58 -0
- package/src/core/create/from-promise.mts +58 -0
- package/src/core/create/from-subscribable.mts +37 -0
- package/src/core/create/index.mts +7 -0
- package/src/core/create/interval.mts +99 -0
- package/src/core/create/of.mts +54 -0
- package/src/core/create/source.mts +59 -0
- package/src/core/create/timer.mts +84 -0
- package/src/core/index.mts +6 -0
- package/src/core/operators/audit-time.mts +77 -0
- package/src/core/operators/debounce-time.mts +96 -0
- package/src/core/operators/filter.mts +125 -0
- package/src/core/operators/index.mts +17 -0
- package/src/core/operators/map-with-index.mts +168 -0
- package/src/core/operators/merge-map.mts +108 -0
- package/src/core/operators/pairwise.mts +77 -0
- package/src/core/operators/scan.mts +81 -0
- package/src/core/operators/skip-if-no-change.mts +91 -0
- package/src/core/operators/skip-until.mts +54 -0
- package/src/core/operators/skip-while.mts +77 -0
- package/src/core/operators/switch-map.mts +101 -0
- package/src/core/operators/take-until.mts +80 -0
- package/src/core/operators/take-while.mts +103 -0
- package/src/core/operators/throttle-time.mts +95 -0
- package/src/core/operators/with-buffered-from.mts +68 -0
- package/src/core/operators/with-current-value-from.mts +58 -0
- package/src/core/operators/with-initial-value.mts +76 -0
- package/src/core/types/id.mts +5 -0
- package/src/core/types/index.mts +5 -0
- package/src/core/types/observable-family.mts +259 -0
- package/src/core/types/observable-kind.mts +5 -0
- package/src/core/types/observable.mts +218 -0
- package/src/core/types/types.mts +40 -0
- package/src/core/utils/id-maker.mts +31 -0
- package/src/core/utils/index.mts +4 -0
- package/src/core/utils/max-depth.mts +7 -0
- package/src/core/utils/observable-utils.mts +10 -0
- package/src/core/utils/utils.mts +51 -0
- package/src/core/utils/utils.test.mts +88 -0
- package/src/entry-point.mts +1 -0
- package/src/globals.d.mts +4 -0
- package/src/index.mts +2 -0
- package/src/utils/create-event-emitter.mts +62 -0
- package/src/utils/create-reducer.mts +55 -0
- package/src/utils/create-state.mts +138 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.mts
ADDED
|
@@ -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":["."]}
|
package/dist/types.d.mts
ADDED
|
@@ -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;;;;"}
|