@typed/fx 1.5.2 → 1.5.5
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/dist/_internal/Mutable.d.ts +9 -0
- package/dist/_internal/Mutable.d.ts.map +1 -0
- package/dist/_internal/Mutable.js +10 -0
- package/dist/_internal/Mutable.js.map +1 -0
- package/dist/_internal/disableCooperativeYielding.d.ts +3 -0
- package/dist/_internal/disableCooperativeYielding.d.ts.map +1 -0
- package/dist/_internal/disableCooperativeYielding.js +7 -0
- package/dist/_internal/disableCooperativeYielding.js.map +1 -0
- package/dist/cjs/_internal/Mutable.d.ts +9 -0
- package/dist/cjs/_internal/Mutable.d.ts.map +1 -0
- package/dist/cjs/_internal/Mutable.js +14 -0
- package/dist/cjs/_internal/Mutable.js.map +1 -0
- package/dist/cjs/_internal/disableCooperativeYielding.d.ts +3 -0
- package/dist/cjs/_internal/disableCooperativeYielding.d.ts.map +1 -0
- package/dist/cjs/_internal/disableCooperativeYielding.js +11 -0
- package/dist/cjs/_internal/disableCooperativeYielding.js.map +1 -0
- package/dist/cjs/operator/hold.d.ts +4 -4
- package/dist/cjs/operator/hold.d.ts.map +1 -1
- package/dist/cjs/operator/hold.js +6 -7
- package/dist/cjs/operator/hold.js.map +1 -1
- package/dist/cjs/operator/slice.js +3 -3
- package/dist/cjs/operator/slice.js.map +1 -1
- package/dist/cjs/run/observe.d.ts.map +1 -1
- package/dist/cjs/run/observe.js +2 -1
- package/dist/cjs/run/observe.js.map +1 -1
- package/dist/cjs/subject/HoldSubject.d.ts +6 -2
- package/dist/cjs/subject/HoldSubject.d.ts.map +1 -1
- package/dist/cjs/subject/HoldSubject.js +3 -3
- package/dist/cjs/subject/HoldSubject.js.map +1 -1
- package/dist/cjs/subject/RefSubject.d.ts +7 -2
- package/dist/cjs/subject/RefSubject.d.ts.map +1 -1
- package/dist/cjs/subject/RefSubject.js +16 -13
- package/dist/cjs/subject/RefSubject.js.map +1 -1
- package/dist/cjs/subject/SynchronizedSubject.d.ts.map +1 -1
- package/dist/cjs/subject/SynchronizedSubject.js +11 -10
- package/dist/cjs/subject/SynchronizedSubject.js.map +1 -1
- package/dist/operator/hold.d.ts +4 -4
- package/dist/operator/hold.d.ts.map +1 -1
- package/dist/operator/hold.js +6 -7
- package/dist/operator/hold.js.map +1 -1
- package/dist/operator/slice.js +3 -3
- package/dist/operator/slice.js.map +1 -1
- package/dist/run/observe.d.ts.map +1 -1
- package/dist/run/observe.js +2 -1
- package/dist/run/observe.js.map +1 -1
- package/dist/subject/HoldSubject.d.ts +6 -2
- package/dist/subject/HoldSubject.d.ts.map +1 -1
- package/dist/subject/HoldSubject.js +3 -3
- package/dist/subject/HoldSubject.js.map +1 -1
- package/dist/subject/RefSubject.d.ts +7 -2
- package/dist/subject/RefSubject.d.ts.map +1 -1
- package/dist/subject/RefSubject.js +16 -13
- package/dist/subject/RefSubject.js.map +1 -1
- package/dist/subject/SynchronizedSubject.d.ts.map +1 -1
- package/dist/subject/SynchronizedSubject.js +11 -10
- package/dist/subject/SynchronizedSubject.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/subject/SynchronizedSubject.ts +11 -10
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { equals } from '@effect/data/Equal'
|
|
2
2
|
import { identity, pipe } from '@effect/data/Function'
|
|
3
|
-
import * as MutableRef from '@effect/data/MutableRef'
|
|
4
3
|
import * as Option from '@effect/data/Option'
|
|
5
4
|
import * as Effect from '@effect/io/Effect'
|
|
6
5
|
import * as Ref from '@effect/io/Ref'
|
|
7
6
|
import * as Synchronized from '@effect/io/Ref/Synchronized'
|
|
8
7
|
|
|
9
8
|
import { Fx } from '../Fx.js'
|
|
9
|
+
import { Mutable } from '../_internal/Mutable.js'
|
|
10
10
|
|
|
11
11
|
import { HoldSubject } from './HoldSubject.js'
|
|
12
12
|
import { Computed, isRefSubject, RefSubject } from './RefSubject.js'
|
|
@@ -28,17 +28,17 @@ export namespace SynchronizedSubject {
|
|
|
28
28
|
initial: () => A,
|
|
29
29
|
eq: (a: A, b: A) => boolean = equals,
|
|
30
30
|
): SynchronizedSubject<A> {
|
|
31
|
-
const
|
|
32
|
-
const subject = HoldSubject.unsafeMake<never, A>(
|
|
31
|
+
const current = Mutable(Option.some(initial()))
|
|
32
|
+
const subject = HoldSubject.unsafeMake<never, A>(current)
|
|
33
33
|
const locked = Effect.unsafeMakeSemaphore(1).withPermits(1)
|
|
34
34
|
|
|
35
35
|
const getValue = () =>
|
|
36
36
|
pipe(
|
|
37
|
-
|
|
37
|
+
current.get(),
|
|
38
38
|
Option.getOrElse(() => {
|
|
39
39
|
const a = initial()
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
current.set(Option.some(a))
|
|
42
42
|
|
|
43
43
|
return a
|
|
44
44
|
}),
|
|
@@ -49,14 +49,14 @@ export namespace SynchronizedSubject {
|
|
|
49
49
|
): Effect.Effect<R2, E2, B> =>
|
|
50
50
|
locked(
|
|
51
51
|
Effect.gen(function* ($) {
|
|
52
|
-
const
|
|
53
|
-
const [b, a] = yield* $(f(
|
|
52
|
+
const next = getValue()
|
|
53
|
+
const [b, a] = yield* $(f(next))
|
|
54
54
|
|
|
55
|
-
if (eq(
|
|
55
|
+
if (eq(next, a)) {
|
|
56
56
|
return b
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
current.set(Option.some(a))
|
|
60
60
|
|
|
61
61
|
yield* $(subject.event(a))
|
|
62
62
|
|
|
@@ -82,6 +82,7 @@ export namespace SynchronizedSubject {
|
|
|
82
82
|
error: subject.error.bind(subject),
|
|
83
83
|
end: subject.end,
|
|
84
84
|
value: subject.value,
|
|
85
|
+
current,
|
|
85
86
|
eq,
|
|
86
87
|
modify,
|
|
87
88
|
modifyEffect,
|
|
@@ -100,7 +101,7 @@ export namespace SynchronizedSubject {
|
|
|
100
101
|
delete: Effect.sync(() => {
|
|
101
102
|
const value = getValue()
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
current.set(Option.some(value))
|
|
104
105
|
|
|
105
106
|
return value
|
|
106
107
|
}),
|