synstate 3.0.4 → 3.0.6

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 (99) hide show
  1. package/README.md +1 -1
  2. package/dist/core/base/create-child-observable.d.mts.map +1 -1
  3. package/dist/core/base/create-child-observable.mjs +7 -3
  4. package/dist/core/base/create-child-observable.mjs.map +1 -1
  5. package/dist/core/base/create-observable-base.d.mts +53 -7
  6. package/dist/core/base/create-observable-base.d.mts.map +1 -1
  7. package/dist/core/base/create-observable-base.mjs +53 -19
  8. package/dist/core/base/create-observable-base.mjs.map +1 -1
  9. package/dist/core/base/create-root-observable.d.mts.map +1 -1
  10. package/dist/core/base/create-root-observable.mjs.map +1 -1
  11. package/dist/core/combine/combine.d.mts.map +1 -1
  12. package/dist/core/combine/combine.mjs +7 -4
  13. package/dist/core/combine/combine.mjs.map +1 -1
  14. package/dist/core/combine/merge.d.mts.map +1 -1
  15. package/dist/core/combine/merge.mjs +4 -1
  16. package/dist/core/combine/merge.mjs.map +1 -1
  17. package/dist/core/combine/zip.d.mts.map +1 -1
  18. package/dist/core/combine/zip.mjs +8 -5
  19. package/dist/core/combine/zip.mjs.map +1 -1
  20. package/dist/core/create/from-abortable-promise.d.mts.map +1 -1
  21. package/dist/core/create/from-abortable-promise.mjs +6 -2
  22. package/dist/core/create/from-abortable-promise.mjs.map +1 -1
  23. package/dist/core/create/from-promise.d.mts.map +1 -1
  24. package/dist/core/create/from-promise.mjs +5 -2
  25. package/dist/core/create/from-promise.mjs.map +1 -1
  26. package/dist/core/create/from-subscribable.d.mts.map +1 -1
  27. package/dist/core/create/from-subscribable.mjs +1 -0
  28. package/dist/core/create/from-subscribable.mjs.map +1 -1
  29. package/dist/core/create/just.d.mts.map +1 -1
  30. package/dist/core/create/just.mjs +1 -0
  31. package/dist/core/create/just.mjs.map +1 -1
  32. package/dist/core/create/source.mjs +2 -1
  33. package/dist/core/create/source.mjs.map +1 -1
  34. package/dist/core/operators/audit.d.mts.map +1 -1
  35. package/dist/core/operators/audit.mjs +3 -1
  36. package/dist/core/operators/audit.mjs.map +1 -1
  37. package/dist/core/operators/debounce.d.mts.map +1 -1
  38. package/dist/core/operators/debounce.mjs +3 -1
  39. package/dist/core/operators/debounce.mjs.map +1 -1
  40. package/dist/core/operators/map.d.mts.map +1 -1
  41. package/dist/core/operators/map.mjs +1 -0
  42. package/dist/core/operators/map.mjs.map +1 -1
  43. package/dist/core/operators/skip-if-no-change.d.mts.map +1 -1
  44. package/dist/core/operators/skip-if-no-change.mjs +1 -0
  45. package/dist/core/operators/skip-if-no-change.mjs.map +1 -1
  46. package/dist/core/operators/take-until.d.mts.map +1 -1
  47. package/dist/core/operators/take-until.mjs +1 -0
  48. package/dist/core/operators/take-until.mjs.map +1 -1
  49. package/dist/core/operators/throttle.d.mts.map +1 -1
  50. package/dist/core/operators/throttle.mjs +1 -0
  51. package/dist/core/operators/throttle.mjs.map +1 -1
  52. package/dist/core/operators/with-buffered-from.d.mts.map +1 -1
  53. package/dist/core/operators/with-buffered-from.mjs +1 -0
  54. package/dist/core/operators/with-buffered-from.mjs.map +1 -1
  55. package/dist/core/operators/with-current-value-from.mjs +2 -1
  56. package/dist/core/operators/with-current-value-from.mjs.map +1 -1
  57. package/dist/core/predefined/operators/unwrap-optional.d.mts.map +1 -1
  58. package/dist/core/predefined/operators/unwrap-optional.mjs +1 -0
  59. package/dist/core/predefined/operators/unwrap-optional.mjs.map +1 -1
  60. package/dist/core/predefined/operators/unwrap-result-ok.d.mts.map +1 -1
  61. package/dist/core/predefined/operators/unwrap-result-ok.mjs +1 -0
  62. package/dist/core/predefined/operators/unwrap-result-ok.mjs.map +1 -1
  63. package/dist/core/types/observable.d.mts +1 -1
  64. package/dist/core/types/observable.d.mts.map +1 -1
  65. package/dist/core/types/observable.mjs +5 -0
  66. package/dist/core/types/observable.mjs.map +1 -1
  67. package/dist/core/utils/id-maker.d.mts.map +1 -1
  68. package/dist/core/utils/id-maker.mjs +1 -0
  69. package/dist/core/utils/id-maker.mjs.map +1 -1
  70. package/dist/core/utils/utils.d.mts.map +1 -1
  71. package/dist/core/utils/utils.mjs +5 -2
  72. package/dist/core/utils/utils.mjs.map +1 -1
  73. package/package.json +36 -38
  74. package/src/core/base/circular-dependency-comparison.test.mts +5 -6
  75. package/src/core/base/circular-dependency.test.mts +20 -21
  76. package/src/core/base/create-child-observable.mts +10 -3
  77. package/src/core/base/create-observable-base.mts +129 -30
  78. package/src/core/base/create-root-observable.mts +2 -0
  79. package/src/core/combine/combine.mts +13 -8
  80. package/src/core/combine/merge.mts +5 -1
  81. package/src/core/combine/zip.mts +12 -8
  82. package/src/core/create/from-abortable-promise.mts +8 -2
  83. package/src/core/create/from-promise.mts +7 -2
  84. package/src/core/create/from-subscribable.mts +1 -0
  85. package/src/core/create/just.mts +1 -0
  86. package/src/core/create/source.mts +3 -1
  87. package/src/core/operators/audit.mts +4 -1
  88. package/src/core/operators/debounce.mts +4 -1
  89. package/src/core/operators/map.mts +1 -0
  90. package/src/core/operators/skip-if-no-change.mts +1 -0
  91. package/src/core/operators/take-until.mts +1 -0
  92. package/src/core/operators/throttle.mts +1 -0
  93. package/src/core/operators/with-buffered-from.mts +1 -0
  94. package/src/core/operators/with-current-value-from.mts +3 -1
  95. package/src/core/predefined/operators/unwrap-optional.mts +1 -0
  96. package/src/core/predefined/operators/unwrap-result-ok.mts +1 -0
  97. package/src/core/types/observable.mts +11 -1
  98. package/src/core/utils/id-maker.mts +1 -0
  99. package/src/core/utils/utils.mts +7 -2
@@ -57,15 +57,20 @@ export const fromPromise = <A, E = unknown>(
57
57
  ({ startUpdate, isCompleted, complete }) => {
58
58
  promise
59
59
  .then((value) => {
60
- if (isCompleted()) return;
60
+ if (isCompleted()) {
61
+ return;
62
+ }
61
63
 
62
64
  startUpdate(Result.ok(value));
63
65
  })
64
66
  .catch((error: unknown) => {
65
- if (isCompleted()) return;
67
+ if (isCompleted()) {
68
+ return;
69
+ }
66
70
 
67
71
  startUpdate(
68
72
  Result.err(
73
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
69
74
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
70
75
  error as E,
71
76
  ),
@@ -76,6 +76,7 @@ export const fromSubscribable = <A, E = unknown>(
76
76
  (error?: unknown) => {
77
77
  startUpdate(
78
78
  Result.err(
79
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
79
80
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
80
81
  error as E,
81
82
  ),
@@ -39,6 +39,7 @@ export const just = <const A,>(value: A): InitializedRootObservable<A> => {
39
39
 
40
40
  obs.complete();
41
41
 
42
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
42
43
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
43
44
  return obs as InitializedRootObservable<A>;
44
45
  };
@@ -59,7 +59,9 @@ export function source<const A>(...args: readonly A[]): SourceObservable<A> {
59
59
  },
60
60
  ({ startUpdate, isCompleted }) => ({
61
61
  next: (nextValue: A) => {
62
- if (isCompleted()) return;
62
+ if (isCompleted()) {
63
+ return;
64
+ }
63
65
 
64
66
  startUpdate(nextValue);
65
67
  },
@@ -104,6 +104,7 @@ import {
104
104
  export const audit = <A,>(
105
105
  milliSeconds: number,
106
106
  ): KeepInitialValueOperator<A, A> =>
107
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
107
108
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
108
109
  ((parentObservable) =>
109
110
  createAuditObservable(
@@ -147,7 +148,9 @@ const createAuditObservable = <A,>(
147
148
  mut_timerId = setTimeout(() => {
148
149
  const sn = parentObservable.getSnapshot();
149
150
 
150
- if (Optional.isNone(sn)) return;
151
+ if (Optional.isNone(sn)) {
152
+ return;
153
+ }
151
154
 
152
155
  startUpdate(sn.value);
153
156
 
@@ -95,6 +95,7 @@ import {
95
95
  export const debounce = <A,>(
96
96
  milliSeconds: number,
97
97
  ): KeepInitialValueOperator<A, A> =>
98
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
98
99
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
99
100
  ((parentObservable) =>
100
101
  createDebounceObservable(
@@ -135,7 +136,9 @@ const createDebounceObservable = <A,>(
135
136
 
136
137
  // set timer
137
138
  mut_timerId = setTimeout(() => {
138
- if (Optional.isNone(sn)) return;
139
+ if (Optional.isNone(sn)) {
140
+ return;
141
+ }
139
142
 
140
143
  startUpdate(sn.value);
141
144
  }, milliSeconds);
@@ -50,6 +50,7 @@ import { withInitialValue } from './with-initial-value.mjs';
50
50
  export const map = <A, B>(
51
51
  mapFn: (x: A, index: SafeUint | -1) => B,
52
52
  ): KeepInitialValueOperator<A, B> =>
53
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
53
54
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
54
55
  ((parentObservable) =>
55
56
  createMapObservable(parentObservable, mapFn)) as KeepInitialValueOperator<
@@ -70,6 +70,7 @@ import {
70
70
  export const skipIfNoChange = <A,>(
71
71
  eq: (x: A, y: A) => boolean = (x, y) => Object.is(x, y),
72
72
  ): KeepInitialValueOperator<A, A> =>
73
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
73
74
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
74
75
  ((parentObservable) =>
75
76
  createSkipIfNoChangeObservable(
@@ -57,6 +57,7 @@ import {
57
57
  export const takeUntil = <A,>(
58
58
  notifier: Observable<unknown>,
59
59
  ): KeepInitialValueOperator<A, A> =>
60
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
60
61
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
61
62
  ((parentObservable) =>
62
63
  createTakeUntilObservable(
@@ -88,6 +88,7 @@ import {
88
88
  export const throttle = <A,>(
89
89
  milliSeconds: number,
90
90
  ): KeepInitialValueOperator<A, A> =>
91
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
91
92
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
92
93
  ((parentObservable) =>
93
94
  createThrottleObservable(
@@ -63,6 +63,7 @@ import { maxDepth } from '../utils/index.mjs';
63
63
  export const withBufferedFrom = <A, B>(
64
64
  observable: Observable<B>,
65
65
  ): KeepInitialValueOperator<A, readonly [A, readonly B[]]> =>
66
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
66
67
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
67
68
  ((parentObservable) =>
68
69
  createWithBufferedFromObservable(
@@ -106,7 +106,9 @@ const createWithCurrentValueFromObservable = <A, B>(
106
106
 
107
107
  const curr = observable.getSnapshot();
108
108
 
109
- if (Optional.isNone(curr)) return; // skip update
109
+ if (Optional.isNone(curr)) {
110
+ return; // skip update
111
+ }
110
112
 
111
113
  setNext([ps.value, curr.value], updateToken);
112
114
  },
@@ -46,5 +46,6 @@ import { type KeepInitialValueOperator } from '../../types/index.mjs';
46
46
  export const unwrapOptional = <
47
47
  O extends UnknownOptional,
48
48
  >(): KeepInitialValueOperator<O, Optional.Unwrap<O> | undefined> =>
49
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
49
50
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
50
51
  map(Optional.unwrap as Fn<O, Optional.Unwrap<O> | undefined>);
@@ -46,5 +46,6 @@ import { type KeepInitialValueOperator } from '../../types/index.mjs';
46
46
  export const unwrapResultOk = <
47
47
  R extends UnknownResult,
48
48
  >(): KeepInitialValueOperator<R, Result.UnwrapOk<R> | undefined> =>
49
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
49
50
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
50
51
  map(Result.unwrapOk as Fn<R, Result.UnwrapOk<R> | undefined>);
@@ -23,7 +23,7 @@ type CreateObservableType<A, Kind extends ObservableKind> = Readonly<{
23
23
  kind: Kind;
24
24
 
25
25
  // reactive dependency tree structure
26
- depth: ObservableKind extends 'root' ? 0 : number;
26
+ depth: Kind extends 'root' ? 0 : number;
27
27
  addChild: <B>(child: ChildObservable<B>) => void;
28
28
 
29
29
  // state
@@ -193,6 +193,16 @@ expectType<keyof AsyncChildObservable<unknown>, 'addDescendant'>('>=');
193
193
 
194
194
  expectType<keyof RootObservable<unknown>, 'addDescendant'>('>=');
195
195
 
196
+ expectType<RootObservable<unknown>['depth'], 0>('=');
197
+
198
+ expectType<InitializedRootObservable<unknown>['depth'], 0>('=');
199
+
200
+ expectType<SyncChildObservable<unknown>['depth'], number>('=');
201
+
202
+ expectType<AsyncChildObservable<unknown>['depth'], number>('=');
203
+
204
+ expectType<ObservableBase<unknown>['depth'], number>('=');
205
+
196
206
  expectType<Unwrap<Wrap<readonly [1, 2, 3]>>, readonly [1, 2, 3]>('=');
197
207
 
198
208
  expectType<number, ObservableValue<Observable<number>>>('<=');
@@ -8,6 +8,7 @@ function* idMaker<T extends symbol>(): Generator<T, T, T> {
8
8
  let mut_i = 0;
9
9
 
10
10
  while (true) {
11
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
11
12
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
12
13
  yield Symbol(mut_i.toString()) as T;
13
14
 
@@ -34,9 +34,13 @@ export const binarySearch = <N extends number>(
34
34
  while (mut_left <= mut_right) {
35
35
  const curr = sortedArray[mut_mid];
36
36
 
37
- if (x === curr) break;
37
+ if (x === curr) {
38
+ break;
39
+ }
38
40
 
39
- if (curr === undefined) break;
41
+ if (curr === undefined) {
42
+ break;
43
+ }
40
44
 
41
45
  if (curr > x) {
42
46
  mut_right = SafeInt.sub(mut_mid, 1);
@@ -47,6 +51,7 @@ export const binarySearch = <N extends number>(
47
51
  mut_mid = SafeInt.add(mut_left, halfInt(SafeInt.sub(mut_right, mut_left)));
48
52
  }
49
53
 
54
+ // @sumi-expect-error banned-syntax/no-unsafe-type-assertion
50
55
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
51
56
  return mut_mid as NegativeInt32 | Uint32;
52
57
  };