synstate 1.0.1 → 2.0.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 +9 -10
- package/dist/core/class/child-observable-class.d.mts.map +1 -1
- package/dist/core/class/child-observable-class.mjs +148 -140
- package/dist/core/class/child-observable-class.mjs.map +1 -1
- package/dist/core/class/observable-base-class.d.mts.map +1 -1
- package/dist/core/class/observable-base-class.mjs +111 -107
- package/dist/core/class/observable-base-class.mjs.map +1 -1
- package/dist/core/class/root-observable-class.d.mts.map +1 -1
- package/dist/core/class/root-observable-class.mjs +32 -24
- package/dist/core/class/root-observable-class.mjs.map +1 -1
- package/dist/core/combine/combine.d.mts +3 -3
- package/dist/core/combine/combine.d.mts.map +1 -1
- package/dist/core/combine/combine.mjs +31 -113
- package/dist/core/combine/combine.mjs.map +1 -1
- package/dist/core/combine/merge.d.mts +2 -2
- package/dist/core/combine/merge.d.mts.map +1 -1
- package/dist/core/combine/merge.mjs +21 -69
- package/dist/core/combine/merge.mjs.map +1 -1
- package/dist/core/combine/zip.d.mts +2 -2
- package/dist/core/combine/zip.d.mts.map +1 -1
- package/dist/core/combine/zip.mjs +34 -79
- package/dist/core/combine/zip.mjs.map +1 -1
- package/dist/core/create/counter.d.mts +1 -1
- package/dist/core/create/counter.d.mts.map +1 -1
- package/dist/core/create/counter.mjs +45 -84
- package/dist/core/create/counter.mjs.map +1 -1
- package/dist/core/create/from-abortable-promise.d.mts.map +1 -1
- package/dist/core/create/from-abortable-promise.mjs +29 -61
- package/dist/core/create/from-abortable-promise.mjs.map +1 -1
- package/dist/core/create/from-promise.d.mts.map +1 -1
- package/dist/core/create/from-promise.mjs +17 -66
- package/dist/core/create/from-promise.mjs.map +1 -1
- package/dist/core/create/from-subscribable.d.mts.map +1 -1
- package/dist/core/create/from-subscribable.mjs +18 -69
- package/dist/core/create/from-subscribable.mjs.map +1 -1
- package/dist/core/create/just.d.mts.map +1 -1
- package/dist/core/create/just.mjs +5 -35
- package/dist/core/create/just.mjs.map +1 -1
- package/dist/core/create/source.mjs +10 -13
- package/dist/core/create/source.mjs.map +1 -1
- package/dist/core/create/timer.d.mts.map +1 -1
- package/dist/core/create/timer.mjs +32 -68
- package/dist/core/create/timer.mjs.map +1 -1
- package/dist/core/operators/audit.d.mts.map +1 -1
- package/dist/core/operators/audit.mjs +39 -133
- package/dist/core/operators/audit.mjs.map +1 -1
- package/dist/core/operators/debounce.d.mts.map +1 -1
- package/dist/core/operators/debounce.mjs +36 -119
- package/dist/core/operators/debounce.mjs.map +1 -1
- package/dist/core/operators/filter.mjs +22 -25
- package/dist/core/operators/filter.mjs.map +1 -1
- package/dist/core/operators/map.d.mts.map +1 -1
- package/dist/core/operators/map.mjs +28 -61
- package/dist/core/operators/map.mjs.map +1 -1
- package/dist/core/operators/merge-map.d.mts +1 -1
- package/dist/core/operators/merge-map.d.mts.map +1 -1
- package/dist/core/operators/merge-map.mjs +34 -130
- package/dist/core/operators/merge-map.mjs.map +1 -1
- package/dist/core/operators/pairwise.d.mts +3 -2
- package/dist/core/operators/pairwise.d.mts.map +1 -1
- package/dist/core/operators/pairwise.mjs +19 -75
- package/dist/core/operators/pairwise.mjs.map +1 -1
- package/dist/core/operators/scan.d.mts.map +1 -1
- package/dist/core/operators/scan.mjs +16 -67
- package/dist/core/operators/scan.mjs.map +1 -1
- package/dist/core/operators/skip-if-no-change.d.mts +1 -1
- package/dist/core/operators/skip-if-no-change.d.mts.map +1 -1
- package/dist/core/operators/skip-if-no-change.mjs +28 -92
- package/dist/core/operators/skip-if-no-change.mjs.map +1 -1
- package/dist/core/operators/skip-until.d.mts.map +1 -1
- package/dist/core/operators/skip-until.mjs +23 -72
- package/dist/core/operators/skip-until.mjs.map +1 -1
- package/dist/core/operators/skip-while.d.mts.map +1 -1
- package/dist/core/operators/skip-while.mjs +26 -88
- package/dist/core/operators/skip-while.mjs.map +1 -1
- package/dist/core/operators/switch-map.d.mts.map +1 -1
- package/dist/core/operators/switch-map.mjs +31 -124
- package/dist/core/operators/switch-map.mjs.map +1 -1
- package/dist/core/operators/take-until.d.mts.map +1 -1
- package/dist/core/operators/take-until.mjs +28 -69
- package/dist/core/operators/take-until.mjs.map +1 -1
- package/dist/core/operators/take-while.d.mts.map +1 -1
- package/dist/core/operators/take-while.mjs +23 -83
- package/dist/core/operators/take-while.mjs.map +1 -1
- package/dist/core/operators/throttle.d.mts.map +1 -1
- package/dist/core/operators/throttle.mjs +38 -115
- package/dist/core/operators/throttle.mjs.map +1 -1
- package/dist/core/operators/with-buffered-from.d.mts +1 -1
- package/dist/core/operators/with-buffered-from.d.mts.map +1 -1
- package/dist/core/operators/with-buffered-from.mjs +37 -90
- package/dist/core/operators/with-buffered-from.mjs.map +1 -1
- package/dist/core/operators/with-current-value-from.d.mts +1 -1
- package/dist/core/operators/with-current-value-from.d.mts.map +1 -1
- package/dist/core/operators/with-current-value-from.mjs +23 -84
- package/dist/core/operators/with-current-value-from.mjs.map +1 -1
- package/dist/core/operators/with-initial-value.d.mts.map +1 -1
- package/dist/core/operators/with-initial-value.mjs +13 -58
- package/dist/core/operators/with-initial-value.mjs.map +1 -1
- package/dist/core/predefined/operators/attach-index.d.mts +1 -1
- package/dist/core/predefined/operators/attach-index.d.mts.map +1 -1
- package/dist/core/predefined/operators/attach-index.mjs +0 -53
- package/dist/core/predefined/operators/attach-index.mjs.map +1 -1
- package/dist/core/predefined/operators/map-optional.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-optional.mjs +1 -48
- package/dist/core/predefined/operators/map-optional.mjs.map +1 -1
- package/dist/core/predefined/operators/map-result-err.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-result-err.mjs +1 -48
- package/dist/core/predefined/operators/map-result-err.mjs.map +1 -1
- package/dist/core/predefined/operators/map-result-ok.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-result-ok.mjs +1 -48
- package/dist/core/predefined/operators/map-result-ok.mjs.map +1 -1
- package/dist/core/predefined/operators/map-to.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-to.mjs +0 -40
- package/dist/core/predefined/operators/map-to.mjs.map +1 -1
- package/dist/core/predefined/operators/pluck.d.mts +1 -1
- package/dist/core/predefined/operators/pluck.d.mts.map +1 -1
- package/dist/core/predefined/operators/pluck.mjs +0 -43
- package/dist/core/predefined/operators/pluck.mjs.map +1 -1
- package/dist/core/predefined/operators/skip.d.mts.map +1 -1
- package/dist/core/predefined/operators/skip.mjs +0 -47
- package/dist/core/predefined/operators/skip.mjs.map +1 -1
- package/dist/core/predefined/operators/take.d.mts.map +1 -1
- package/dist/core/predefined/operators/take.mjs +0 -41
- package/dist/core/predefined/operators/take.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-optional.mjs +4 -43
- package/dist/core/predefined/operators/unwrap-optional.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-result-err.mjs +0 -40
- package/dist/core/predefined/operators/unwrap-result-err.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-result-ok.mjs +4 -43
- package/dist/core/predefined/operators/unwrap-result-ok.mjs.map +1 -1
- package/dist/core/types/observable-family.d.mts +10 -10
- package/dist/core/types/observable-family.d.mts.map +1 -1
- package/dist/core/types/observable.d.mts.map +1 -1
- package/dist/core/types/observable.mjs +3 -5
- package/dist/core/types/observable.mjs.map +1 -1
- package/dist/core/types/types.d.mts +2 -1
- package/dist/core/types/types.d.mts.map +1 -1
- package/dist/core/utils/id-maker.mjs +5 -6
- package/dist/core/utils/id-maker.mjs.map +1 -1
- package/dist/core/utils/max-depth.d.mts.map +1 -1
- package/dist/core/utils/max-depth.mjs +1 -3
- package/dist/core/utils/max-depth.mjs.map +1 -1
- package/dist/core/utils/observable-utils.d.mts.map +1 -1
- package/dist/core/utils/observable-utils.mjs +3 -2
- package/dist/core/utils/observable-utils.mjs.map +1 -1
- package/dist/core/utils/utils.d.mts.map +1 -1
- package/dist/core/utils/utils.mjs +23 -30
- package/dist/core/utils/utils.mjs.map +1 -1
- package/dist/utils/collect-to-array.d.mts.map +1 -1
- package/dist/utils/collect-to-array.mjs +9 -6
- package/dist/utils/collect-to-array.mjs.map +1 -1
- package/dist/utils/create-boolean-state.d.mts +1 -1
- package/dist/utils/create-boolean-state.d.mts.map +1 -1
- package/dist/utils/create-boolean-state.mjs +18 -46
- package/dist/utils/create-boolean-state.mjs.map +1 -1
- package/dist/utils/create-event-emitter.mjs +10 -64
- package/dist/utils/create-event-emitter.mjs.map +1 -1
- package/dist/utils/create-reducer.d.mts +1 -1
- package/dist/utils/create-reducer.d.mts.map +1 -1
- package/dist/utils/create-reducer.mjs +8 -52
- package/dist/utils/create-reducer.mjs.map +1 -1
- package/dist/utils/create-state.d.mts +1 -1
- package/dist/utils/create-state.d.mts.map +1 -1
- package/dist/utils/create-state.mjs +23 -53
- package/dist/utils/create-state.mjs.map +1 -1
- package/package.json +16 -16
- package/src/core/class/child-observable-class.mts +1 -1
- package/src/core/class/observable-base-class.mts +16 -16
- package/src/core/combine/combine.mts +38 -16
- package/src/core/combine/merge.mts +3 -3
- package/src/core/combine/zip.mts +24 -13
- package/src/core/create/counter.mts +11 -9
- package/src/core/create/counter.test.mts +11 -0
- package/src/core/create/timer.mts +6 -6
- package/src/core/create/timer.test.mts +11 -0
- package/src/core/operators/audit-throttle-teardown.test.mts +21 -0
- package/src/core/operators/audit.mts +6 -6
- package/src/core/operators/debounce.mts +6 -6
- package/src/core/operators/pairwise.mts +10 -5
- package/src/core/operators/skip-while.mts +1 -5
- package/src/core/operators/skip-while.test.mts +20 -0
- package/src/core/operators/throttle.mts +6 -6
- package/src/core/operators/with-buffered-from.mts +4 -4
- package/src/core/predefined/operators/map-optional.mts +1 -2
- package/src/core/predefined/operators/map-result-err.mts +1 -1
- package/src/core/predefined/operators/map-result-ok.mts +1 -1
- package/src/core/types/observable-family.mts +12 -11
- package/src/core/types/observable.mts +5 -7
- package/src/core/types/types.mts +2 -1
- package/src/core/utils/max-depth.mts +5 -1
- package/src/core/utils/utils.mts +1 -1
- package/src/utils/create-boolean-state.mts +1 -1
- package/src/utils/create-reducer.mts +1 -1
- package/src/utils/create-state.mts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-family.d.mts","sourceRoot":"","sources":["../../../src/core/types/observable-family.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"observable-family.d.mts","sourceRoot":"","sources":["../../../src/core/types/observable-family.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable.d.mts","sourceRoot":"","sources":["../../../src/core/types/observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"observable.d.mts","sourceRoot":"","sources":["../../../src/core/types/observable.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import 'ts-data-forge';
|
|
2
2
|
|
|
3
|
-
const isManagerObservable = (obs) => obs.kind !==
|
|
4
|
-
const isRootObservable = (obs) => obs.kind ===
|
|
5
|
-
const isChildObservable = (obs) => obs.kind ===
|
|
6
|
-
// type GetDestTypeOfOperator<Op extends Operator<unknown, unknown>> =
|
|
7
|
-
// Op extends Operator<unknown, infer B> ? B : never;
|
|
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";
|
|
8
6
|
|
|
9
7
|
export { isChildObservable, isManagerObservable, isRootObservable };
|
|
10
8
|
//# sourceMappingURL=observable.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable.mjs","sources":["../../../src/core/types/observable.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"observable.mjs","sources":["../../../src/core/types/observable.mts"],"sourcesContent":["import { expectType, type Optional, type Some } from 'ts-data-forge';\nimport { type FixedLengthTuple, type StrictOmit } from 'ts-type-forge';\nimport { type ObservableId, type UpdateToken } from './id.mjs';\nimport { type ObservableKind } from './observable-kind.mjs';\nimport { type NonEmptyUnknownList, type Subscription } from './types.mjs';\n\n/**\n * Inheritance\n *\n * ```txt\n * ObservableBase\n * |\n * +- SyncChildObservable \\ \\\n * | +-- ChildObservable \\\n * +- AsyncChildObservable X +-- Observable\n * | +-- ManagerObservable /\n * +- RootObservableType / /\n * ```\n */\n\ntype CreateObservableType<A, Kind extends ObservableKind> = Readonly<{\n id: ObservableId;\n kind: Kind;\n\n // reactive dependency tree structure\n depth: ObservableKind extends 'root' ? 0 : number;\n addChild: <B>(child: ChildObservable<B>) => void;\n\n // state\n getSnapshot: () => Optional<A>;\n isCompleted: boolean;\n updateToken: UpdateToken;\n hasSubscriber: boolean;\n hasChild: boolean;\n hasActiveChild: () => boolean;\n\n tryUpdate: (updateToken: UpdateToken) => void;\n tryComplete: () => void;\n complete: () => void;\n subscribe: (onNext: (v: A) => void, onComplete?: () => void) => Subscription;\n\n pipe: PipeMethod<A>;\n}>;\n\n/** @internal */\ntype PipeMethod<A> = (<B>(\n operator: WithInitialValueOperator<A, B>,\n) => InitializedObservable<B>) &\n (<B>(operator: DropInitialValueOperator<A, B>) => Observable<B>) &\n (<B>(operator: KeepInitialValueOperator<A, B>) => Observable<B>);\n\nexport type ObservableBase<A> = CreateObservableType<A, ObservableKind>;\n\n/** @internal */\nnamespace ObservableTypeConverter {\n export type ToInitialized<\n A,\n O extends CreateObservableType<A, ObservableKind>,\n > = StrictOmit<O, 'pipe' | 'getSnapshot'> &\n Readonly<{\n getSnapshot: () => Some<A>;\n\n pipe: PipeMethodForInitialized<A>;\n }>;\n\n type PipeMethodForInitialized<A> = (<B>(\n operator: WithInitialValueOperator<A, B>,\n ) => InitializedObservable<B>) &\n (<B>(operator: DropInitialValueOperator<A, B>) => Observable<B>) &\n (<B>(operator: KeepInitialValueOperator<A, B>) => InitializedObservable<B>);\n\n export type ToChild<\n A,\n O extends CreateObservableType<A, ObservableKind>,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n > = O &\n Readonly<{\n parents: Wrap<P>;\n }>;\n\n export type ToManager<\n A,\n O extends CreateObservableType<A, 'async child' | 'root'>,\n > = O &\n Readonly<{\n addDescendant: <B>(child: ChildObservable<B>) => void;\n }>;\n}\n\nexport type SyncChildObservable<\n A,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n> = ObservableTypeConverter.ToChild<\n A,\n CreateObservableType<A, 'sync child'>,\n P\n>;\n\nexport type InitializedSyncChildObservable<\n A,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n> = ObservableTypeConverter.ToInitialized<A, SyncChildObservable<A, P>>;\n\nexport type AsyncChildObservable<\n A,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n> = ObservableTypeConverter.ToManager<\n A,\n ObservableTypeConverter.ToChild<A, CreateObservableType<A, 'async child'>, P>\n>;\n\nexport type InitializedAsyncChildObservable<\n A,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n> = ObservableTypeConverter.ToInitialized<A, AsyncChildObservable<A, P>>;\n\nexport type ChildObservable<\n A,\n P extends NonEmptyUnknownList = NonEmptyUnknownList,\n> = AsyncChildObservable<A, P> | SyncChildObservable<A, P>;\n\nexport type RootObservable<A> = ObservableTypeConverter.ToManager<\n A,\n CreateObservableType<A, 'root'>\n>;\n\nexport type InitializedRootObservable<A> =\n ObservableTypeConverter.ToInitialized<A, RootObservable<A>>;\n\nexport type Observable<A> =\n AsyncChildObservable<A> | RootObservable<A> | SyncChildObservable<A>;\n\nexport type InitializedObservable<A> =\n | InitializedAsyncChildObservable<A>\n | InitializedRootObservable<A>\n | InitializedSyncChildObservable<A>;\n\nexport type ManagerObservable<A> = AsyncChildObservable<A> | RootObservable<A>;\n\n/* operator types */\n\n/** Type of operator that converts Observable to InitializedObservable */\nexport type WithInitialValueOperator<A, B> = (\n src: Observable<A>,\n) => InitializedObservable<B>;\n\n/** Type of operator that converts Observable to non-initialized Observable */\nexport type DropInitialValueOperator<A, B> = (\n src: InitializedObservable<A> | Observable<A>,\n) => Observable<B>;\n\n/** Type of operator that preserves whether Observable has initial value */\nexport type KeepInitialValueOperator<A, B> = (\n src: InitializedObservable<A>,\n) => InitializedObservable<B>;\n\nexport type Operator<A, B> =\n | WithInitialValueOperator<A, B>\n | DropInitialValueOperator<A, B>\n | KeepInitialValueOperator<A, B>;\n\nexport const isManagerObservable = <A,>(\n obs: Observable<A>,\n): obs is ManagerObservable<A> => obs.kind !== 'sync child';\n\nexport const isRootObservable = <A,>(\n obs: Observable<A>,\n): obs is RootObservable<A> => obs.kind === 'root';\n\nexport const isChildObservable = <A,>(\n obs: Observable<A>,\n): obs is ChildObservable<A> =>\n obs.kind === 'sync child' || obs.kind === 'async child';\n\nexport type ObservableValue<A> = A extends Observable<infer B> ? B : never;\n\nexport type Unwrap<A extends readonly Observable<unknown>[]> = Readonly<{\n [P in keyof A]: ObservableValue<A[P]>;\n}>;\n\nexport type Wrap<A extends readonly unknown[]> = Readonly<{\n [P in keyof A]: Observable<A[P]>;\n}>;\n\nexport type WrapInitialized<A extends readonly unknown[]> = Readonly<{\n [P in keyof A]: InitializedObservable<A[P]>;\n}>;\n\n// type GetDestTypeOfOperator<Op extends Operator<unknown, unknown>> =\n// Op extends Operator<unknown, infer B> ? B : never;\n\nexpectType<keyof AsyncChildObservable<unknown>, 'addDescendant'>('>=');\n\nexpectType<keyof RootObservable<unknown>, 'addDescendant'>('>=');\n\nexpectType<Unwrap<Wrap<readonly [1, 2, 3]>>, readonly [1, 2, 3]>('=');\n\nexpectType<number, ObservableValue<Observable<number>>>('<=');\n\nexpectType<number, ObservableValue<Observable<string>>>('!<=');\n\nexpectType<\n readonly [number, string],\n Unwrap<readonly [Observable<number>, Observable<string>]>\n>('<=');\n\nexpectType<number, ObservableValue<Observable<string>>>('!<=');\n\nexpectType<\n FixedLengthTuple<2, Observable<number>>,\n Wrap<FixedLengthTuple<2, number>>\n>('<=');\n\nexpectType<\n readonly [Observable<number>, Observable<string>],\n Wrap<FixedLengthTuple<2, number>>\n>('!<=');\n"],"names":[],"mappings":";;AAiKO,MAAM,mBAAA,GAAsB,CACjC,GAAA,KACgC,GAAA,CAAI,IAAA,KAAS;AAExC,MAAM,gBAAA,GAAmB,CAC9B,GAAA,KAC6B,GAAA,CAAI,IAAA,KAAS;MAE/B,oBAAoB,CAC/B,GAAA,KAEA,IAAI,IAAA,KAAS,YAAA,IAAgB,IAAI,IAAA,KAAS;;;;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Queue } from 'ts-data-forge';
|
|
2
|
+
import { type NonEmptyTuple } from 'ts-type-forge';
|
|
2
3
|
export type TupleToQueueTuple<T extends readonly unknown[]> = Readonly<{
|
|
3
4
|
[P in keyof T]: Queue<T[P]>;
|
|
4
5
|
}>;
|
|
5
|
-
export type NonEmptyUnknownList =
|
|
6
|
+
export type NonEmptyUnknownList = NonEmptyTuple<unknown>;
|
|
6
7
|
export type Subscriber<A> = Readonly<{
|
|
7
8
|
onNext: (v: A) => void;
|
|
8
9
|
onComplete: () => void;
|
|
@@ -1 +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;
|
|
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;AACvD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,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,aAAa,CAAC,OAAO,CAAC,CAAC;AAEzD,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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
function* idMaker() {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
2
|
+
let mut_i = 0;
|
|
3
|
+
while (true) {
|
|
4
|
+
yield Symbol(mut_i.toString());
|
|
5
|
+
mut_i += 1;
|
|
6
|
+
}
|
|
8
7
|
}
|
|
9
8
|
const observableIdMaker = idMaker();
|
|
10
9
|
const subscriberIdMaker = idMaker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-maker.mjs","sources":["../../../src/core/utils/id-maker.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"id-maker.mjs","sources":["../../../src/core/utils/id-maker.mts"],"sourcesContent":["import {\n type ObservableId,\n type SubscriberId,\n type UpdateToken,\n} from '../types/index.mjs';\n\nfunction* idMaker<T extends symbol>(): Generator<T, T, T> {\n let mut_i = 0;\n\n while (true) {\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n yield Symbol(mut_i.toString()) as T;\n\n mut_i += 1;\n }\n}\n\nconst observableIdMaker = idMaker<ObservableId>();\n\nconst subscriberIdMaker = idMaker<SubscriberId>();\n\nconst updateTokenMaker = idMaker<UpdateToken>();\n\nexport const issueObservableId = (): ObservableId =>\n observableIdMaker.next().value;\n\nexport const issueSubscriberId = (): SubscriberId =>\n subscriberIdMaker.next().value;\n\nexport const issueUpdateToken = (): UpdateToken =>\n updateTokenMaker.next().value;\n"],"names":[],"mappings":"AAMA,UAAU,OAAA,GAAgD;AACxD,EAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,EAAA,OAAO,IAAA,EAAM;AAEX,IAAA,MAAM,MAAA,CAAO,KAAA,CAAM,QAAA,EAAU,CAAA;AAE7B,IAAA,KAAA,IAAS,CAAA;AAAA,EACX;AACF;AAEA,MAAM,oBAAoB,OAAA,EAAsB;AAEhD,MAAM,oBAAoB,OAAA,EAAsB;AAEhD,MAAM,mBAAmB,OAAA,EAAqB;AAEvC,MAAM,iBAAA,GAAoB,MAC/B,iBAAA,CAAkB,IAAA,EAAK,CAAE;AAEpB,MAAM,iBAAA,GAAoB,MAC/B,iBAAA,CAAkB,IAAA,EAAK,CAAE;AAEpB,MAAM,gBAAA,GAAmB,MAC9B,gBAAA,CAAiB,IAAA,EAAK,CAAE;;;;"}
|
|
@@ -1 +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,
|
|
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,YAAa,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,KAAG,MAO/B,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { pipe, Arr, Optional } from 'ts-data-forge';
|
|
2
2
|
|
|
3
|
-
const maxDepth = (parents) => pipe(Arr.maxBy(parents, (p) => p.depth))
|
|
4
|
-
.mapOptional((o) => o.depth)
|
|
5
|
-
.map(Optional.unwrapOr(0)).value;
|
|
3
|
+
const maxDepth = (parents) => pipe(Arr.maxBy(parents, (p) => p.depth)).mapOptional((o) => o.depth).map(Optional.unwrapOr(0)).value;
|
|
6
4
|
|
|
7
5
|
export { maxDepth };
|
|
8
6
|
//# sourceMappingURL=max-depth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-depth.mjs","sources":["../../../src/core/utils/max-depth.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"max-depth.mjs","sources":["../../../src/core/utils/max-depth.mts"],"sourcesContent":["import { Arr, Optional, pipe } from 'ts-data-forge';\nimport { type Observable } from '../types/index.mjs';\n\nexport const maxDepth = (parents: readonly Observable<unknown>[]): number =>\n pipe(Arr.maxBy(parents, (p) => p.depth))\n // Explicit return type + non-curried `Optional.unwrapOr` call: TypeScript\n // 7 (native)'s inference for this chained generic call resolves to\n // `unknown` without them, even though TypeScript <= 6.0's checker\n // resolves this fine.\n .mapOptional((o): number => o.depth)\n .map(Optional.unwrapOr(0)).value;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAA,GAAW,CAAC,OAAA,KACvB,IAAA,CAAK,GAAA,CAAI,MAAM,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,EAKpC,WAAA,CAAY,CAAC,CAAA,KAAc,CAAA,CAAE,KAAK,CAAA,CAClC,IAAI,QAAA,CAAS,QAAA,CAAS,CAAC,CAAC,CAAA,CAAE;;;;"}
|
|
@@ -1 +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,
|
|
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,UACpB,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,eACT,MAAM,IAAI,KACtB,UAAU,CAAC,CAAC,CAIF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-utils.mjs","sources":["../../../src/core/utils/observable-utils.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"observable-utils.mjs","sources":["../../../src/core/utils/observable-utils.mts"],"sourcesContent":["import { type Subscriber } from '../types/index.mjs';\n\nexport const toSubscriber = <A,>(\n onNext: (v: A) => void,\n onComplete?: () => void,\n): Subscriber<A> =>\n ({\n onNext,\n onComplete: onComplete ?? (() => {}),\n }) as const;\n"],"names":[],"mappings":"AAEO,MAAM,YAAA,GAAe,CAC1B,MAAA,EACA,UAAA,MAEC;AAAA,EACC,MAAA;AAAA,EACA,UAAA,EAAY,eAAe,MAAM;AAAA,EAAC,CAAA;AACpC,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../../../src/core/utils/utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,OAAO,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhE,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../../../src/core/utils/utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,OAAO,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhE,eAAO,MAAM,OAAO,MAAO,OAAO,KAAG,OAKI,CAAC;AAE1C,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,eAC9B,SAAS,CAAC,EAAE,KACtB,CAAC,KACH,aAAa,GAAG,MAqClB,CAAC"}
|
|
@@ -1,37 +1,30 @@
|
|
|
1
1
|
import { asUint32, Arr, asSafeInt, SafeInt } from 'ts-data-forge';
|
|
2
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. */
|
|
3
|
+
const halfInt = (x) => x % 2 === 0 ? SafeInt.div(x, 2) : x > 0 ? SafeInt.div(SafeInt.sub(x, 1), 2) : SafeInt.div(SafeInt.add(x, 1), 2);
|
|
9
4
|
const binarySearch = (sortedArray, x) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
const uint32Result = asUint32(0);
|
|
6
|
+
if (Arr.isEmpty(sortedArray)) {
|
|
7
|
+
return uint32Result;
|
|
8
|
+
}
|
|
9
|
+
const left0 = asSafeInt(0);
|
|
10
|
+
let mut_left = left0;
|
|
11
|
+
let mut_right = SafeInt.sub(Arr.length(sortedArray), 1);
|
|
12
|
+
let mut_mid = SafeInt.add(
|
|
13
|
+
mut_left,
|
|
14
|
+
halfInt(SafeInt.sub(mut_right, mut_left))
|
|
15
|
+
);
|
|
16
|
+
while (mut_left <= mut_right) {
|
|
17
|
+
const curr = sortedArray[mut_mid];
|
|
18
|
+
if (x === curr) break;
|
|
19
|
+
if (curr === void 0) break;
|
|
20
|
+
if (curr > x) {
|
|
21
|
+
mut_right = SafeInt.sub(mut_mid, 1);
|
|
22
|
+
} else {
|
|
23
|
+
mut_left = SafeInt.add(mut_mid, 1);
|
|
13
24
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
25
|
+
mut_mid = SafeInt.add(mut_left, halfInt(SafeInt.sub(mut_right, mut_left)));
|
|
26
|
+
}
|
|
27
|
+
return mut_mid;
|
|
35
28
|
};
|
|
36
29
|
|
|
37
30
|
export { binarySearch, halfInt };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../../../src/core/utils/utils.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../src/core/utils/utils.mts"],"sourcesContent":["import { Arr, asSafeInt, asUint32, SafeInt } from 'ts-data-forge';\nimport { type NegativeInt32, type Uint32 } from 'ts-type-forge';\n\nexport const halfInt = (x: SafeInt): SafeInt =>\n x % 2 === 0\n ? SafeInt.div(x, 2)\n : x > 0\n ? SafeInt.div(SafeInt.sub(x, 1), 2) // (x-1) / 2. e.g. 3 -> 1, 5 -> 2\n : SafeInt.div(SafeInt.add(x, 1), 2); // (x+1) / 2. e.g. -3 -> -1, -5 -> -2\n\n/** Returns the position where x should be inserted in a sorted array. */\nexport const binarySearch = <N extends number>(\n sortedArray: readonly N[],\n x: N,\n): NegativeInt32 | Uint32 => {\n const uint32Result = asUint32(0);\n\n if (Arr.isEmpty(sortedArray)) {\n return uint32Result;\n }\n\n const left0 = asSafeInt(0);\n\n let mut_left: SafeInt = left0;\n\n let mut_right: SafeInt = SafeInt.sub(Arr.length(sortedArray), 1);\n\n let mut_mid: SafeInt = SafeInt.add(\n mut_left,\n halfInt(SafeInt.sub(mut_right, mut_left)),\n );\n\n // loop while x is in the range of [left, right)\n while (mut_left <= mut_right) {\n const curr = sortedArray[mut_mid];\n\n if (x === curr) break;\n\n if (curr === undefined) break;\n\n if (curr > x) {\n mut_right = SafeInt.sub(mut_mid, 1);\n } else {\n mut_left = SafeInt.add(mut_mid, 1);\n }\n\n mut_mid = SafeInt.add(mut_left, halfInt(SafeInt.sub(mut_right, mut_left)));\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return mut_mid as NegativeInt32 | Uint32;\n};\n"],"names":[],"mappings":";;AAGO,MAAM,OAAA,GAAU,CAAC,CAAA,KACtB,CAAA,GAAI,CAAA,KAAM,CAAA,GACN,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,GAChB,CAAA,GAAI,CAAA,GACF,OAAA,CAAQ,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA,GAChC,OAAA,CAAQ,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,CAAC,GAAG,CAAC;AAGjC,MAAM,YAAA,GAAe,CAC1B,WAAA,EACA,CAAA,KAC2B;AAC3B,EAAA,MAAM,YAAA,GAAe,SAAS,CAAC,CAAA;AAE/B,EAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC5B,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,UAAU,CAAC,CAAA;AAEzB,EAAA,IAAI,QAAA,GAAoB,KAAA;AAExB,EAAA,IAAI,YAAqB,OAAA,CAAQ,GAAA,CAAI,IAAI,MAAA,CAAO,WAAW,GAAG,CAAC,CAAA;AAE/D,EAAA,IAAI,UAAmB,OAAA,CAAQ,GAAA;AAAA,IAC7B,QAAA;AAAA,IACA,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAC;AAAA,GAC1C;AAGA,EAAA,OAAO,YAAY,SAAA,EAAW;AAC5B,IAAA,MAAM,IAAA,GAAO,YAAY,OAAO,CAAA;AAEhC,IAAA,IAAI,MAAM,IAAA,EAAM;AAEhB,IAAA,IAAI,SAAS,MAAA,EAAW;AAExB,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA;AAAA,IACpC,CAAA,MAAO;AACL,MAAA,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA;AAAA,IACnC;AAEA,IAAA,OAAA,GAAU,OAAA,CAAQ,IAAI,QAAA,EAAU,OAAA,CAAQ,QAAQ,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAC,CAAC,CAAA;AAAA,EAC3E;AAGA,EAAA,OAAO,OAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-to-array.d.mts","sourceRoot":"","sources":["../../src/utils/collect-to-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,cAAc,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"collect-to-array.d.mts","sourceRoot":"","sources":["../../src/utils/collect-to-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,cAAc,GAAI,CAAC,cAClB,UAAU,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,SAAS,CAAC,EAAE,CAYnB,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
const collectToArray = (observable) => new Promise((resolve) => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
const mut_buffer = [];
|
|
3
|
+
observable.subscribe(
|
|
4
|
+
(value) => {
|
|
5
|
+
mut_buffer.push(value);
|
|
6
|
+
},
|
|
7
|
+
() => {
|
|
8
|
+
resolve(mut_buffer);
|
|
9
|
+
}
|
|
10
|
+
);
|
|
8
11
|
});
|
|
9
12
|
|
|
10
13
|
export { collectToArray };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-to-array.mjs","sources":["../../src/utils/collect-to-array.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"collect-to-array.mjs","sources":["../../src/utils/collect-to-array.mts"],"sourcesContent":["import { type Observable } from '../core/index.mjs';\n\nexport const collectToArray = <A,>(\n observable: Observable<A>,\n): Promise<readonly A[]> =>\n new Promise<readonly A[]>((resolve) => {\n const mut_buffer: A[] = [];\n\n observable.subscribe(\n (value) => {\n mut_buffer.push(value);\n },\n () => {\n resolve(mut_buffer);\n },\n );\n });\n"],"names":[],"mappings":"AAEO,MAAM,iBAAiB,CAC5B,UAAA,KAEA,IAAI,OAAA,CAAsB,CAAC,OAAA,KAAY;AACrC,EAAA,MAAM,aAAkB,EAAC;AAEzB,EAAA,UAAA,CAAW,SAAA;AAAA,IACT,CAAC,KAAA,KAAU;AACT,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,MAAM;AACJ,MAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,IACpB;AAAA,GACF;AACF,CAAC;;;;"}
|
|
@@ -27,7 +27,7 @@ import { type InitializedObservable } from '../core/index.mjs';
|
|
|
27
27
|
* );
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export declare const createBooleanState: (initialState: boolean) => readonly [state: InitializedObservable<boolean>, Readonly<{
|
|
30
|
+
export declare const createBooleanState: (initialState: boolean) => readonly [state: InitializedObservable<boolean>, utils: Readonly<{
|
|
31
31
|
setTrue: () => void;
|
|
32
32
|
setFalse: () => void;
|
|
33
33
|
setState: (next: boolean) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-boolean-state.d.mts","sourceRoot":"","sources":["../../src/utils/create-boolean-state.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"create-boolean-state.d.mts","sourceRoot":"","sources":["../../src/utils/create-boolean-state.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,kBAAkB,iBACf,OAAO,KACpB,SAAS,CACV,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,EACrC,KAAK,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACrC,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC;IAC/D,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAsBH,CAAC"}
|
|
@@ -1,52 +1,24 @@
|
|
|
1
1
|
import { createState } from './create-state.mjs';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* Creates a reactive boolean state with convenient methods for boolean operations.
|
|
5
|
-
* Extends `createState` with boolean-specific helpers like `toggle`, `setTrue`, and `setFalse`.
|
|
6
|
-
*
|
|
7
|
-
* @param initialState - The initial boolean value
|
|
8
|
-
* @returns A 2-element tuple: `[state, { setTrue, setFalse, toggle, setState, updateState, resetState, getSnapshot, initialState }]`
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* import type * as React from 'react';
|
|
13
|
-
* import { createBooleanState } from 'synstate';
|
|
14
|
-
* import { useObservableValue } from 'synstate-react-hooks';
|
|
15
|
-
*
|
|
16
|
-
* // Menu drawer open/close state.
|
|
17
|
-
* // setTrue and setFalse can be passed directly as callbacks
|
|
18
|
-
* // — no need to create wrapper functions like `() => setState(true)`.
|
|
19
|
-
* const [menuOpen$, { setTrue: openMenu, setFalse: closeMenu }] =
|
|
20
|
-
* createBooleanState(false);
|
|
21
|
-
*
|
|
22
|
-
* const SampleComponent = (): React.JSX.Element => (
|
|
23
|
-
* <MenuDrawer
|
|
24
|
-
* open={useObservableValue(menuOpen$)}
|
|
25
|
-
* onClose={closeMenu}
|
|
26
|
-
* onOpen={openMenu}
|
|
27
|
-
* />
|
|
28
|
-
* );
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
3
|
const createBooleanState = (initialState) => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
4
|
+
const [state, setState, { updateState, resetState, getSnapshot }] = createState(initialState);
|
|
5
|
+
return [
|
|
6
|
+
state,
|
|
7
|
+
{
|
|
8
|
+
setTrue: () => {
|
|
9
|
+
setState(true);
|
|
10
|
+
},
|
|
11
|
+
setFalse: () => {
|
|
12
|
+
setState(false);
|
|
13
|
+
},
|
|
14
|
+
toggle: () => updateState((s) => !s),
|
|
15
|
+
setState,
|
|
16
|
+
updateState,
|
|
17
|
+
resetState,
|
|
18
|
+
getSnapshot,
|
|
19
|
+
initialState
|
|
20
|
+
}
|
|
21
|
+
];
|
|
50
22
|
};
|
|
51
23
|
|
|
52
24
|
export { createBooleanState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-boolean-state.mjs","sources":["../../src/utils/create-boolean-state.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"create-boolean-state.mjs","sources":["../../src/utils/create-boolean-state.mts"],"sourcesContent":["import { type InitializedObservable } from '../core/index.mjs';\nimport { createState } from './create-state.mjs';\n\n/**\n * Creates a reactive boolean state with convenient methods for boolean operations.\n * Extends `createState` with boolean-specific helpers like `toggle`, `setTrue`, and `setFalse`.\n *\n * @param initialState - The initial boolean value\n * @returns A 2-element tuple: `[state, { setTrue, setFalse, toggle, setState, updateState, resetState, getSnapshot, initialState }]`\n *\n * @example\n * ```ts\n * import type * as React from 'react';\n * import { createBooleanState } from 'synstate';\n * import { useObservableValue } from 'synstate-react-hooks';\n *\n * // Menu drawer open/close state.\n * // setTrue and setFalse can be passed directly as callbacks\n * // — no need to create wrapper functions like `() => setState(true)`.\n * const [menuOpen$, { setTrue: openMenu, setFalse: closeMenu }] =\n * createBooleanState(false);\n *\n * const SampleComponent = (): React.JSX.Element => (\n * <MenuDrawer\n * open={useObservableValue(menuOpen$)}\n * onClose={closeMenu}\n * onOpen={openMenu}\n * />\n * );\n * ```\n */\n\nexport const createBooleanState = (\n initialState: boolean,\n): readonly [\n state: InitializedObservable<boolean>,\n utils: Readonly<{\n setTrue: () => void;\n setFalse: () => void;\n setState: (next: boolean) => boolean;\n toggle: () => boolean;\n updateState: (updateFn: (prev: boolean) => boolean) => boolean;\n resetState: () => boolean;\n getSnapshot: () => boolean;\n initialState: boolean;\n }>,\n] => {\n const [state, setState, { updateState, resetState, getSnapshot }] =\n createState(initialState);\n\n return [\n state,\n {\n setTrue: () => {\n setState(true);\n },\n setFalse: () => {\n setState(false);\n },\n toggle: () => updateState((s) => !s),\n setState,\n updateState,\n resetState,\n getSnapshot,\n initialState,\n },\n ] as const;\n};\n"],"names":[],"mappings":";;AAgCO,MAAM,kBAAA,GAAqB,CAChC,YAAA,KAaG;AACH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAA,EAAU,EAAE,WAAA,EAAa,YAAY,WAAA,EAAa,CAAA,GAC9D,WAAA,CAAY,YAAY,CAAA;AAE1B,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA;AAAA,MACE,SAAS,MAAM;AACb,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,MACf,CAAA;AAAA,MACA,UAAU,MAAM;AACd,QAAA,QAAA,CAAS,KAAK,CAAA;AAAA,MAChB,CAAA;AAAA,MACA,QAAQ,MAAM,WAAA,CAAY,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,MACnC,QAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;;;;"}
|
|
@@ -1,74 +1,20 @@
|
|
|
1
1
|
import 'ts-data-forge';
|
|
2
2
|
import '../core/utils/id-maker.mjs';
|
|
3
|
-
import '../core/combine/combine.mjs';
|
|
4
3
|
import { source } from '../core/create/source.mjs';
|
|
5
4
|
|
|
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
|
-
* const mut_clickCount = { value: 0 };
|
|
17
|
-
*
|
|
18
|
-
* click$.subscribe(() => {
|
|
19
|
-
* mut_clickCount.value += 1;
|
|
20
|
-
* });
|
|
21
|
-
*
|
|
22
|
-
* emitClick(); // logs: Clicked!
|
|
23
|
-
*
|
|
24
|
-
* assert.deepStrictEqual(mut_clickCount.value, 1);
|
|
25
|
-
*
|
|
26
|
-
* emitClick();
|
|
27
|
-
*
|
|
28
|
-
* emitClick();
|
|
29
|
-
*
|
|
30
|
-
* assert.deepStrictEqual(mut_clickCount.value, 3);
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
5
|
const createEventEmitter = () => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
6
|
+
const src$ = source();
|
|
7
|
+
const emitter = () => {
|
|
8
|
+
src$.next(void 0);
|
|
9
|
+
};
|
|
10
|
+
return [src$, emitter];
|
|
39
11
|
};
|
|
40
|
-
/**
|
|
41
|
-
* Creates an event emitter with typed payload.
|
|
42
|
-
* Returns a tuple of [observable, emitter function].
|
|
43
|
-
*
|
|
44
|
-
* @template A - The type of the event payload
|
|
45
|
-
* @returns A tuple containing the observable and the emitter function
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```ts
|
|
49
|
-
* const [message$, emitMessage] = createValueEmitter<string>();
|
|
50
|
-
*
|
|
51
|
-
* const messageHistory: string[] = [];
|
|
52
|
-
*
|
|
53
|
-
* message$.subscribe((msg) => {
|
|
54
|
-
* messageHistory.push(msg);
|
|
55
|
-
* });
|
|
56
|
-
*
|
|
57
|
-
* emitMessage('Hello'); // logs: Hello
|
|
58
|
-
*
|
|
59
|
-
* assert.deepStrictEqual(messageHistory, ['Hello']);
|
|
60
|
-
*
|
|
61
|
-
* emitMessage('World');
|
|
62
|
-
*
|
|
63
|
-
* assert.deepStrictEqual(messageHistory, ['Hello', 'World']);
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
12
|
const createValueEmitter = () => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
13
|
+
const src$ = source();
|
|
14
|
+
const emitter = (value) => {
|
|
15
|
+
src$.next(value);
|
|
16
|
+
};
|
|
17
|
+
return [src$, emitter];
|
|
72
18
|
};
|
|
73
19
|
|
|
74
20
|
export { createEventEmitter, createValueEmitter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-event-emitter.mjs","sources":["../../src/utils/create-event-emitter.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"create-event-emitter.mjs","sources":["../../src/utils/create-event-emitter.mts"],"sourcesContent":["import { source, type Observable } from '../core/index.mjs';\n\n/**\n * Creates an event emitter for void events (events without payload).\n * Returns a tuple of [observable, emitter function].\n *\n * @returns A tuple containing the observable and the emitter function\n *\n * @example\n * ```ts\n * const [click$, emitClick] = createEventEmitter();\n *\n * const mut_clickCount = { value: 0 };\n *\n * click$.subscribe(() => {\n * mut_clickCount.value += 1;\n * });\n *\n * emitClick(); // logs: Clicked!\n *\n * assert.deepStrictEqual(mut_clickCount.value, 1);\n *\n * emitClick();\n *\n * emitClick();\n *\n * assert.deepStrictEqual(mut_clickCount.value, 3);\n * ```\n */\nexport const createEventEmitter = (): readonly [\n Observable<void>,\n () => void,\n] => {\n const src$ = source<undefined>();\n\n const emitter = (): void => {\n src$.next(undefined);\n };\n\n return [src$, emitter];\n};\n\n/**\n * Creates an event emitter with typed payload.\n * Returns a tuple of [observable, emitter function].\n *\n * @template A - The type of the event payload\n * @returns A tuple containing the observable and the emitter function\n *\n * @example\n * ```ts\n * const [message$, emitMessage] = createValueEmitter<string>();\n *\n * const messageHistory: string[] = [];\n *\n * message$.subscribe((msg) => {\n * messageHistory.push(msg);\n * });\n *\n * emitMessage('Hello'); // logs: Hello\n *\n * assert.deepStrictEqual(messageHistory, ['Hello']);\n *\n * emitMessage('World');\n *\n * assert.deepStrictEqual(messageHistory, ['Hello', 'World']);\n * ```\n */\nexport const createValueEmitter = <A,>(): readonly [\n Observable<A>,\n (value: A) => void,\n] => {\n const src$ = source<A>();\n\n const emitter = (value: A): void => {\n src$.next(value);\n };\n\n return [src$, emitter];\n};\n"],"names":[],"mappings":";;;;AA6BO,MAAM,qBAAqB,MAG7B;AACH,EAAA,MAAM,OAAO,MAAA,EAAkB;AAE/B,EAAA,MAAM,UAAU,MAAY;AAC1B,IAAA,IAAA,CAAK,KAAK,MAAS,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO,CAAC,MAAM,OAAO,CAAA;AACvB;AA4BO,MAAM,qBAAqB,MAG7B;AACH,EAAA,MAAM,OAAO,MAAA,EAAU;AAEvB,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAmB;AAClC,IAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,OAAO,CAAC,MAAM,OAAO,CAAA;AACvB;;;;"}
|
|
@@ -43,7 +43,7 @@ import { type InitializedObservable } from '../core/index.mjs';
|
|
|
43
43
|
* assert.deepStrictEqual(stateHistory, [0, 1, 2, 1]);
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
|
-
export declare const createReducer: <S, A>(reducer: Reducer<S, A>, initialState: S) => readonly [state: InitializedObservable<S>, dispatch: (action: A) => S, Readonly<{
|
|
46
|
+
export declare const createReducer: <S, A>(reducer: Reducer<S, A>, initialState: S) => readonly [state: InitializedObservable<S>, dispatch: (action: A) => S, utils: Readonly<{
|
|
47
47
|
getSnapshot: () => S;
|
|
48
48
|
initialState: S;
|
|
49
49
|
}>];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-reducer.d.mts","sourceRoot":"","sources":["../../src/utils/create-reducer.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAU,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"create-reducer.d.mts","sourceRoot":"","sources":["../../src/utils/create-reducer.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAU,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,WACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,gBACR,CAAC,KACd,SAAS,CACV,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,QAAQ,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,CAAC;IACrB,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC,CAeH,CAAC"}
|
|
@@ -1,60 +1,16 @@
|
|
|
1
1
|
import 'ts-data-forge';
|
|
2
2
|
import '../core/utils/id-maker.mjs';
|
|
3
|
-
import '../core/combine/combine.mjs';
|
|
4
3
|
import { source } from '../core/create/source.mjs';
|
|
5
4
|
|
|
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 A 3-element tuple: `[state, dispatch, { getSnapshot, initialState }]`
|
|
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
|
-
* const stateHistory: number[] = [];
|
|
31
|
-
*
|
|
32
|
-
* state.subscribe((value: number) => {
|
|
33
|
-
* stateHistory.push(value);
|
|
34
|
-
* });
|
|
35
|
-
*
|
|
36
|
-
* assert.deepStrictEqual(stateHistory, [0]);
|
|
37
|
-
*
|
|
38
|
-
* dispatch({ type: 'increment' }); // logs: 1
|
|
39
|
-
*
|
|
40
|
-
* assert.deepStrictEqual(stateHistory, [0, 1]);
|
|
41
|
-
*
|
|
42
|
-
* dispatch({ type: 'increment' });
|
|
43
|
-
*
|
|
44
|
-
* dispatch({ type: 'decrement' });
|
|
45
|
-
*
|
|
46
|
-
* assert.deepStrictEqual(stateHistory, [0, 1, 2, 1]);
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
5
|
const createReducer = (reducer, initialState) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
6
|
+
const state = source(initialState);
|
|
7
|
+
const dispatch = (action) => {
|
|
8
|
+
const nextState = reducer(state.getSnapshot().value, action);
|
|
9
|
+
state.next(nextState);
|
|
10
|
+
return nextState;
|
|
11
|
+
};
|
|
12
|
+
const getSnapshot = () => state.getSnapshot().value;
|
|
13
|
+
return [state, dispatch, { getSnapshot, initialState }];
|
|
58
14
|
};
|
|
59
15
|
|
|
60
16
|
export { createReducer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-reducer.mjs","sources":["../../src/utils/create-reducer.mts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"create-reducer.mjs","sources":["../../src/utils/create-reducer.mts"],"sourcesContent":["import { type Reducer } from 'ts-type-forge';\nimport { source, type InitializedObservable } from '../core/index.mjs';\n\n/**\n * Creates a reducer-based state management container following the Redux pattern.\n * Actions are dispatched to update the state according to the reducer function.\n *\n * @template S - The type of the state\n * @template A - The type of actions\n * @param reducer - A pure function that takes current state and action, returns new state\n * @param initialState - The initial value of the state\n * @returns A 3-element tuple: `[state, dispatch, { getSnapshot, initialState }]`\n *\n * @example\n * ```ts\n * const [state, dispatch] = createReducer(\n * (s, action: Readonly<{ type: 'increment' } | { type: 'decrement' }>) => {\n * switch (action.type) {\n * case 'increment':\n * return s + 1;\n * case 'decrement':\n * return s - 1;\n * }\n * },\n * 0,\n * );\n *\n * const stateHistory: number[] = [];\n *\n * state.subscribe((value: number) => {\n * stateHistory.push(value);\n * });\n *\n * assert.deepStrictEqual(stateHistory, [0]);\n *\n * dispatch({ type: 'increment' }); // logs: 1\n *\n * assert.deepStrictEqual(stateHistory, [0, 1]);\n *\n * dispatch({ type: 'increment' });\n *\n * dispatch({ type: 'decrement' });\n *\n * assert.deepStrictEqual(stateHistory, [0, 1, 2, 1]);\n * ```\n */\nexport const createReducer = <S, A>(\n reducer: Reducer<S, A>,\n initialState: S,\n): readonly [\n state: InitializedObservable<S>,\n dispatch: (action: A) => S,\n utils: Readonly<{\n getSnapshot: () => S;\n initialState: S;\n }>,\n] => {\n const state = source<S>(initialState);\n\n const dispatch = (action: A): S => {\n const nextState = reducer(state.getSnapshot().value, action);\n\n state.next(nextState);\n\n return nextState;\n };\n\n const getSnapshot = (): S => state.getSnapshot().value;\n\n return [state, dispatch, { getSnapshot, initialState }] as const;\n};\n"],"names":[],"mappings":";;;;AA8CO,MAAM,aAAA,GAAgB,CAC3B,OAAA,EACA,YAAA,KAQG;AACH,EAAA,MAAM,KAAA,GAAQ,OAAU,YAAY,CAAA;AAEpC,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAiB;AACjC,IAAA,MAAM,YAAY,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAY,CAAE,OAAO,MAAM,CAAA;AAE3D,IAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AAEpB,IAAA,OAAO,SAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,MAAS,KAAA,CAAM,WAAA,EAAY,CAAE,KAAA;AAEjD,EAAA,OAAO,CAAC,KAAA,EAAO,QAAA,EAAU,EAAE,WAAA,EAAa,cAAc,CAAA;AACxD;;;;"}
|