synstate 5.0.1 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +6 -5
  2. package/dist/core/class/observable-base-class.mjs.map +1 -1
  3. package/dist/core/class/propagation-state.mjs.map +1 -1
  4. package/dist/core/combine/combine.d.mts.map +1 -1
  5. package/dist/core/combine/combine.mjs +3 -43
  6. package/dist/core/combine/combine.mjs.map +1 -1
  7. package/dist/core/combine/derive.d.mts +63 -0
  8. package/dist/core/combine/derive.d.mts.map +1 -0
  9. package/dist/core/combine/derive.mjs +124 -0
  10. package/dist/core/combine/derive.mjs.map +1 -0
  11. package/dist/core/combine/index.d.mts +1 -0
  12. package/dist/core/combine/index.d.mts.map +1 -1
  13. package/dist/core/combine/index.mjs +1 -0
  14. package/dist/core/combine/index.mjs.map +1 -1
  15. package/dist/core/operators/keep-equal-parts.d.mts +1 -3
  16. package/dist/core/operators/keep-equal-parts.d.mts.map +1 -1
  17. package/dist/core/operators/keep-equal-parts.mjs +0 -2
  18. package/dist/core/operators/keep-equal-parts.mjs.map +1 -1
  19. package/dist/core/operators/map.d.mts +30 -18
  20. package/dist/core/operators/map.d.mts.map +1 -1
  21. package/dist/core/operators/map.mjs +24 -10
  22. package/dist/core/operators/map.mjs.map +1 -1
  23. package/dist/core/predefined/operators/attach-index.d.mts +4 -2
  24. package/dist/core/predefined/operators/attach-index.d.mts.map +1 -1
  25. package/dist/core/predefined/operators/attach-index.mjs +36 -2
  26. package/dist/core/predefined/operators/attach-index.mjs.map +1 -1
  27. package/dist/core/predefined/operators/map-to.d.mts +6 -2
  28. package/dist/core/predefined/operators/map-to.d.mts.map +1 -1
  29. package/dist/core/predefined/operators/map-to.mjs +5 -1
  30. package/dist/core/predefined/operators/map-to.mjs.map +1 -1
  31. package/dist/core/types/observable-family.d.mts +3 -0
  32. package/dist/core/types/observable-family.d.mts.map +1 -1
  33. package/dist/core/types/observable-family.mjs.map +1 -1
  34. package/dist/utils/create-reducer.d.mts +1 -1
  35. package/dist/utils/create-state.d.mts +1 -1
  36. package/package.json +12 -10
  37. package/src/core/class/observable-base-class.mts +2 -2
  38. package/src/core/class/propagation-state.mts +1 -1
  39. package/src/core/combine/combine.mts +7 -72
  40. package/src/core/combine/derive.mts +172 -0
  41. package/src/core/combine/derive.test.mts +190 -0
  42. package/src/core/combine/index.mts +1 -0
  43. package/src/core/operators/keep-equal-parts.mts +1 -3
  44. package/src/core/operators/map-cut-off.test.mts +215 -0
  45. package/src/core/operators/map.mts +48 -31
  46. package/src/core/predefined/operators/attach-index.mts +62 -5
  47. package/src/core/predefined/operators/map-to.mts +7 -3
  48. package/src/core/types/observable-family.mts +18 -0
  49. package/src/utils/create-reducer.mts +1 -1
  50. package/src/utils/create-state.mts +1 -1
@@ -109,6 +109,14 @@ namespace SynStateInternals {
109
109
  ? InitializedCombineObservableImpl<Cast<Unwrap<OS>>>
110
110
  : CombineObservableImpl<Unwrap<OS>>;
111
111
 
112
+ export type DeriveObservableRefinedImpl<
113
+ B,
114
+ OS extends NonEmptyTuple<Observable<unknown>>,
115
+ > =
116
+ EveryInitialized<OS> extends true
117
+ ? InitializedSyncChildObservable<B, Cast<Unwrap<OS>>>
118
+ : SyncChildObservable<B, Unwrap<OS>>;
119
+
112
120
  type InitializedZipObservableImpl<A extends NonEmptyUnknownList> =
113
121
  InitializedSyncChildObservable<A, A>;
114
122
 
@@ -189,6 +197,16 @@ export type CombineObservableRefined<
189
197
  OS extends NonEmptyTuple<Observable<unknown>>,
190
198
  > = SynStateInternals.CombineObservableRefinedImpl<OS>;
191
199
 
200
+ export type DeriveObservable<
201
+ B,
202
+ A extends NonEmptyUnknownList,
203
+ > = SyncChildObservable<B, A>;
204
+
205
+ export type DeriveObservableRefined<
206
+ B,
207
+ OS extends NonEmptyTuple<Observable<unknown>>,
208
+ > = SynStateInternals.DeriveObservableRefinedImpl<B, OS>;
209
+
192
210
  export type ZipObservable<A extends NonEmptyUnknownList> =
193
211
  SynStateInternals.ZipObservableImpl<A>;
194
212
 
@@ -150,7 +150,7 @@ export type StateOptions<S> = Readonly<{
150
150
  * written, and every part of it deeply equal to the same part of the
151
151
  * current state is replaced by that part (`replaceEqualDeep` of
152
152
  * ts-data-forge): a reader of an unchanged part keeps the object it has, so
153
- * `skipIfNoChange()` with `Object.is` stops it. When the whole next state is
153
+ * `map`, comparing with `Object.is`, stops there. When the whole next state is
154
154
  * deeply equal, the current state is kept and nothing is passed on, so
155
155
  * `equals` can stay `Object.is`.
156
156
  *
@@ -102,7 +102,7 @@ const reducer = <S,>(state: S, action: Action<S>): S => {
102
102
  * { keepEqualParts: true },
103
103
  * );
104
104
  *
105
- * const summary = report.pipe(map((r) => r.summary)).pipe(skipIfNoChange());
105
+ * const summary = report.pipe(map((r) => r.summary));
106
106
  *
107
107
  * const summaryHistory: unknown[] = [];
108
108
  *