@typed/fx 1.2.0 → 1.2.1
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/Subject/HoldSubject.d.ts +1 -2
- package/dist/Subject/HoldSubject.d.ts.map +1 -1
- package/dist/Subject/HoldSubject.js.map +1 -1
- package/dist/Subject/RefSubject.d.ts +18 -2
- package/dist/Subject/RefSubject.d.ts.map +1 -1
- package/dist/Subject/RefSubject.js +94 -15
- package/dist/Subject/RefSubject.js.map +1 -1
- package/dist/Subject/SynchronizedSubject.d.ts.map +1 -1
- package/dist/Subject/SynchronizedSubject.js +3 -1
- package/dist/Subject/SynchronizedSubject.js.map +1 -1
- package/dist/cjs/Subject/HoldSubject.d.ts +1 -2
- package/dist/cjs/Subject/HoldSubject.d.ts.map +1 -1
- package/dist/cjs/Subject/HoldSubject.js.map +1 -1
- package/dist/cjs/Subject/RefSubject.d.ts +18 -2
- package/dist/cjs/Subject/RefSubject.d.ts.map +1 -1
- package/dist/cjs/Subject/RefSubject.js +93 -14
- 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 +2 -0
- package/dist/cjs/Subject/SynchronizedSubject.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Subject/RefSubject.ts +0 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/Subject/Computed.d.ts +0 -12
- package/dist/Subject/Computed.d.ts.map +0 -1
- package/dist/Subject/Computed.js +0 -54
- package/dist/Subject/Computed.js.map +0 -1
- package/dist/cjs/Subject/Computed.d.ts +0 -12
- package/dist/cjs/Subject/Computed.d.ts.map +0 -1
- package/dist/cjs/Subject/Computed.js +0 -80
- package/dist/cjs/Subject/Computed.js.map +0 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { type MutableRef } from '@effect/data/MutableRef';
|
|
2
2
|
import { type Option } from '@effect/data/Option';
|
|
3
3
|
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import type { Fx, Sink } from '../Fx.js';
|
|
5
4
|
import { Subject } from './Subject.js';
|
|
6
|
-
export interface HoldSubject<E, A> extends
|
|
5
|
+
export interface HoldSubject<E, A> extends Subject<E, A>, HoldSubject.Variance<E, A> {
|
|
7
6
|
readonly value: Effect.Effect<never, never, Option<A>>;
|
|
8
7
|
}
|
|
9
8
|
export declare namespace HoldSubject {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoldSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"HoldSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAK3C,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;CACvD;AAED,yBAAiB,WAAW,CAAC;IACpB,MAAM,MAAM,eAAsC,CAAA;IACzD,KAAY,MAAM,GAAG,OAAO,MAAM,CAAA;IAElC,eAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE;YACjB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;SAC7B,CAGA;KACF;IAGD,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAG/E,KAAY,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAEhF,SAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAgB,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAE/F;CAeF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAEtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoldSubject.js","sourceRoot":"","sources":["../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAmB,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAe,IAAI,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"HoldSubject.js","sourceRoot":"","sources":["../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAmB,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAe,IAAI,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAMjD,MAAM,KAAW,WAAW,CAqC3B;AArCD,WAAiB,WAAW;;IACb,kBAAM,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAGzD,MAAsB,QAAe,SAAQ,OAAO,CAAC,QAAc;QAAnE;;YACW,QAAQ,GAGb;gBACF,EAAE,EAAE,QAAQ;gBACZ,EAAE,EAAE,QAAQ;aACb,CAAA;QACH,CAAC;KAAA;SAPW,YAAA,MAAM;IADI,oBAAQ,WAQ7B,CAAA;IAQD,SAAgB,UAAU,CAAO,QAA+B,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1E,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAED,MAAM,eAAsB,SAAQ,MAAmB;QAOrD,YAAY,KAA4B;YACtC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAPZ,QAAgB,GAA2C;gBAClE,EAAE,EAAE,QAAQ;gBACZ,EAAE,EAAE,QAAQ;aACb,CAAC;YACO,QAAQ,GAAuC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAMnE,UAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAFtD,CAAC;KAGF;SAXW,OAAO,CAAC,MAAM,OAId,YAAA,MAAM;AAQpB,CAAC,EArCgB,WAAW,KAAX,WAAW,QAqC3B;AAED,MAAM,UAAU,aAAa,CAAO,CAAU;IAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as ReadonlyArray from '@effect/data/ReadonlyArray';
|
|
2
2
|
import * as Equivalence from '@effect/data/typeclass/Equivalence';
|
|
3
3
|
import * as Effect from '@effect/io/Effect';
|
|
4
4
|
import * as Ref from '@effect/io/Ref';
|
|
5
5
|
import type * as Scope from '@effect/io/Scope';
|
|
6
|
+
import { Fx } from '../Fx.js';
|
|
6
7
|
import { HoldSubject } from './HoldSubject.js';
|
|
7
8
|
export interface RefSubject<A> extends HoldSubject<never, A>, Ref.Ref<A> {
|
|
8
9
|
readonly eq: Equivalence.Equivalence<A>;
|
|
@@ -10,14 +11,29 @@ export interface RefSubject<A> extends HoldSubject<never, A>, Ref.Ref<A> {
|
|
|
10
11
|
readonly set: (a: A) => Effect.Effect<never, never, A>;
|
|
11
12
|
readonly update: (f: (a: A) => A) => Effect.Effect<never, never, A>;
|
|
12
13
|
readonly delete: Effect.Effect<never, never, A>;
|
|
14
|
+
readonly compute: <R, E, B>(f: (a: A) => Effect.Effect<R, E, B>) => Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
15
|
+
readonly computeSync: <B>(f: (a: A) => B) => Effect.Effect<Scope.Scope, never, Computed<never, B>>;
|
|
13
16
|
}
|
|
14
17
|
export declare function makeRef<A>(initial: () => A, eq?: Equivalence.Equivalence<A>): Effect.Effect<never, never, RefSubject<A>>;
|
|
15
18
|
export declare namespace RefSubject {
|
|
16
19
|
type ValueOf<T> = T extends RefSubject<infer A> ? A : never;
|
|
17
20
|
function unsafeMake<A>(initial: () => A, eq?: Equivalence.Equivalence<A>): RefSubject<A>;
|
|
18
|
-
function tuple<Subjects extends NonEmptyReadonlyArray<RefSubject<any>>>(...subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
21
|
+
function tuple<Subjects extends ReadonlyArray.NonEmptyReadonlyArray<RefSubject<any>>>(...subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
22
|
+
readonly [K in keyof Subjects]: ValueOf<Subjects[K]>;
|
|
23
|
+
}>>;
|
|
24
|
+
function struct<Subjects extends Readonly<Record<string, RefSubject<any>>>>(subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
19
25
|
readonly [K in keyof Subjects]: ValueOf<Subjects[K]>;
|
|
20
26
|
}>>;
|
|
21
27
|
}
|
|
22
28
|
export declare function isRefSubject<A>(u: unknown): u is RefSubject<A>;
|
|
29
|
+
export interface Computed<E, A> extends Fx<never, E, A> {
|
|
30
|
+
readonly get: Effect.Effect<never, E, A>;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace Computed {
|
|
33
|
+
function make<A, R, E, B>(input: RefSubject<A>, compute: (a: A) => Effect.Effect<R, E, B>): Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
34
|
+
}
|
|
35
|
+
export declare const makeComputed: {
|
|
36
|
+
<A, R, E, B>(input: RefSubject<A>, compute: (a: A) => Effect.Effect<R, E, B>): Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
37
|
+
<A, R, E, B>(compute: (a: A) => Effect.Effect<R, E, B>): (input: RefSubject<A>) => Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
38
|
+
};
|
|
23
39
|
//# sourceMappingURL=RefSubject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/RefSubject.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"RefSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/RefSubject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { equals } from '@effect/data/Equal';
|
|
2
|
-
import { identity, pipe } from '@effect/data/Function';
|
|
2
|
+
import { identity, pipe, dual, flow } from '@effect/data/Function';
|
|
3
3
|
import * as MutableRef from '@effect/data/MutableRef';
|
|
4
4
|
import * as Option from '@effect/data/Option';
|
|
5
|
-
import
|
|
5
|
+
import * as ReadonlyArray from '@effect/data/ReadonlyArray';
|
|
6
|
+
import * as ReadonlyRecord from '@effect/data/ReadonlyRecord';
|
|
6
7
|
import * as Equivalence from '@effect/data/typeclass/Equivalence';
|
|
7
8
|
import * as Effect from '@effect/io/Effect';
|
|
8
9
|
import * as Ref from '@effect/io/Ref';
|
|
9
|
-
import { Fx } from '../Fx.js';
|
|
10
|
+
import { Fx, Sink } from '../Fx.js';
|
|
11
|
+
import { flatMapEffect } from '../operator/flatMapEffect.js';
|
|
12
|
+
import { hold } from '../operator/hold.js';
|
|
13
|
+
import { skipWhile } from '../operator/skipWhile.js';
|
|
10
14
|
import { observe } from '../run/observe.js';
|
|
11
15
|
import { HoldSubject, isHoldSubject } from './HoldSubject.js';
|
|
12
16
|
import { Subject } from './Subject.js';
|
|
@@ -42,35 +46,37 @@ export var RefSubject;
|
|
|
42
46
|
value: subject.value,
|
|
43
47
|
eq,
|
|
44
48
|
modify,
|
|
45
|
-
...makeDerivations(modify),
|
|
49
|
+
...makeDerivations(modify, Effect.sync(getValue)),
|
|
46
50
|
delete: Effect.sync(() => {
|
|
47
51
|
const option = current.get();
|
|
48
52
|
const reset = initial();
|
|
49
53
|
current.set(Option.some(reset));
|
|
50
54
|
return Option.getOrElse(option, () => reset);
|
|
51
55
|
}),
|
|
56
|
+
compute: (f) => makeComputed(refSubject, f),
|
|
57
|
+
computeSync: (f) => makeComputed(refSubject, (a) => Effect.sync(() => f(a))),
|
|
52
58
|
};
|
|
53
59
|
return refSubject;
|
|
54
60
|
}
|
|
55
61
|
RefSubject.unsafeMake = unsafeMake;
|
|
56
62
|
function tuple(...subjects) {
|
|
57
63
|
const length = subjects.length;
|
|
58
|
-
const
|
|
59
|
-
const eq = Equivalence.tuple(...mapNonEmpty(subjects, (s) => s.eq));
|
|
64
|
+
const getUnderlyingValues = Effect.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s) => s.get));
|
|
65
|
+
const eq = Equivalence.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s) => s.eq));
|
|
60
66
|
return Effect.gen(function* ($) {
|
|
61
|
-
const initial = yield* $(
|
|
67
|
+
const initial = yield* $(getUnderlyingValues);
|
|
62
68
|
const refSubject = unsafeMake(() => initial, eq);
|
|
63
69
|
const updateAtIndex = (i) => (a) => Effect.gen(function* ($) {
|
|
64
|
-
const current = yield* $(
|
|
70
|
+
const current = yield* $(refSubject.get);
|
|
65
71
|
const next = current.slice();
|
|
66
72
|
next[i] = a;
|
|
67
73
|
yield* $(refSubject.set(next));
|
|
68
74
|
});
|
|
69
75
|
// Override event to replicate events into underlying subjects
|
|
70
|
-
const event = (val) => Effect.tuple(...mapNonEmpty(subjects, (s, i) => s.event(val[i])));
|
|
76
|
+
const event = (val) => Effect.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s, i) => s.event(val[i])));
|
|
71
77
|
// Override modify to replicate events into underlying subjects
|
|
72
78
|
const modify = (f) => Effect.gen(function* ($) {
|
|
73
|
-
const current = yield* $(
|
|
79
|
+
const current = yield* $(getUnderlyingValues);
|
|
74
80
|
const [b, a] = f(current);
|
|
75
81
|
if (!eq(current, a)) {
|
|
76
82
|
// Will update this RefSubject using observe below
|
|
@@ -80,20 +86,64 @@ export var RefSubject;
|
|
|
80
86
|
});
|
|
81
87
|
// Listen to changes to each subject and update the derived subject
|
|
82
88
|
for (let i = 0; i < length; i++) {
|
|
83
|
-
yield* $(observe(updateAtIndex(i))(subjects[i]));
|
|
89
|
+
yield* $(Effect.forkScoped(observe(updateAtIndex(i))(subjects[i])));
|
|
84
90
|
}
|
|
85
|
-
|
|
91
|
+
// Allow underlying subscriptions to start
|
|
92
|
+
yield* $(Effect.yieldNow());
|
|
93
|
+
const derived = {
|
|
86
94
|
...refSubject,
|
|
87
95
|
event,
|
|
88
96
|
modify,
|
|
89
|
-
...makeDerivations(modify),
|
|
97
|
+
...makeDerivations(modify, refSubject.get),
|
|
98
|
+
compute: (f) => makeComputed(derived, f),
|
|
90
99
|
};
|
|
100
|
+
return derived;
|
|
91
101
|
});
|
|
92
102
|
}
|
|
93
103
|
RefSubject.tuple = tuple;
|
|
94
|
-
|
|
104
|
+
function struct(subjects) {
|
|
105
|
+
const getUnderlyingValues = Effect.struct(ReadonlyRecord.map(subjects, (s) => s.get));
|
|
106
|
+
const eq = Equivalence.struct(ReadonlyRecord.map(subjects, (s) => s.eq));
|
|
107
|
+
return Effect.gen(function* ($) {
|
|
108
|
+
const initial = yield* $(getUnderlyingValues);
|
|
109
|
+
const refSubject = unsafeMake(() => initial, eq);
|
|
110
|
+
const updateAtKey = (i) => (a) => Effect.gen(function* ($) {
|
|
111
|
+
const current = yield* $(refSubject.get);
|
|
112
|
+
const next = { ...current, [i]: a };
|
|
113
|
+
yield* $(refSubject.set(next));
|
|
114
|
+
});
|
|
115
|
+
// Override event to replicate events into underlying subjects
|
|
116
|
+
const event = (val) => Effect.struct(ReadonlyRecord.map(subjects, (s, i) => s.event(val[i])));
|
|
117
|
+
// Override modify to replicate events into underlying subjects
|
|
118
|
+
const modify = (f) => Effect.gen(function* ($) {
|
|
119
|
+
const current = yield* $(getUnderlyingValues);
|
|
120
|
+
const [b, a] = f(current);
|
|
121
|
+
if (!eq(current, a)) {
|
|
122
|
+
// Will update this RefSubject using observe below
|
|
123
|
+
yield* $(event(a));
|
|
124
|
+
}
|
|
125
|
+
return b;
|
|
126
|
+
});
|
|
127
|
+
// Listen to changes to each subject and update the derived subject
|
|
128
|
+
for (const i in subjects) {
|
|
129
|
+
yield* $(Effect.forkScoped(observe(updateAtKey(i))(subjects[i])));
|
|
130
|
+
}
|
|
131
|
+
// Allow underlying subscriptions to start
|
|
132
|
+
yield* $(Effect.yieldNow());
|
|
133
|
+
const derived = {
|
|
134
|
+
...refSubject,
|
|
135
|
+
event,
|
|
136
|
+
modify,
|
|
137
|
+
...makeDerivations(modify, refSubject.get),
|
|
138
|
+
compute: (f) => makeComputed(derived, f),
|
|
139
|
+
};
|
|
140
|
+
return derived;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
RefSubject.struct = struct;
|
|
144
|
+
const makeDerivations = (modify, getValue) => {
|
|
95
145
|
return {
|
|
96
|
-
get:
|
|
146
|
+
get: getValue,
|
|
97
147
|
set(a) {
|
|
98
148
|
return modify(() => [a, a]);
|
|
99
149
|
},
|
|
@@ -109,4 +159,33 @@ export var RefSubject;
|
|
|
109
159
|
export function isRefSubject(u) {
|
|
110
160
|
return isHoldSubject(u) && Ref.RefTypeId in u;
|
|
111
161
|
}
|
|
162
|
+
export var Computed;
|
|
163
|
+
(function (Computed) {
|
|
164
|
+
function make(input, compute) {
|
|
165
|
+
return Effect.gen(function* ($) {
|
|
166
|
+
const compute_ = flow(compute, Effect.exit);
|
|
167
|
+
const initialInput = yield* $(input.get);
|
|
168
|
+
const initial = yield* $(compute_(initialInput));
|
|
169
|
+
const refSubject = yield* $(makeRef(() => initial));
|
|
170
|
+
yield* $(pipe(input, skipWhile((x) => input.eq(x, initialInput)), // We already have the initial value, don't waste downstream resources
|
|
171
|
+
observe((a) => Effect.flatMap(compute_(a), refSubject.set)), Effect.forkScoped));
|
|
172
|
+
// Allow subscription to finalize as HoldFx under the hood of RefSubject schedules the start of the Fx.
|
|
173
|
+
yield* $(Effect.yieldNow());
|
|
174
|
+
return new ComputedImpl(refSubject);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
Computed.make = make;
|
|
178
|
+
class ComputedImpl extends Fx.Variance {
|
|
179
|
+
constructor(input) {
|
|
180
|
+
super();
|
|
181
|
+
this.input = input;
|
|
182
|
+
this.get = Effect.flatMap(this.input.get, Effect.done);
|
|
183
|
+
this.fx = pipe(input, flatMapEffect(Effect.done), hold);
|
|
184
|
+
}
|
|
185
|
+
run(sink) {
|
|
186
|
+
return this.fx.run(sink);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
})(Computed || (Computed = {}));
|
|
190
|
+
export const makeComputed = dual(2, Computed.make);
|
|
112
191
|
//# sourceMappingURL=RefSubject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefSubject.js","sourceRoot":"","sources":["../../src/Subject/RefSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"RefSubject.js","sourceRoot":"","sources":["../../src/Subject/RefSubject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynchronizedSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/SynchronizedSubject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAK3D,OAAO,
|
|
1
|
+
{"version":3,"file":"SynchronizedSubject.d.ts","sourceRoot":"","sources":["../../src/Subject/SynchronizedSubject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAK3D,OAAO,EAA0B,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGpE,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;CACnG;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,EAChB,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAgB,GACnC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAErD;AAED,yBAAiB,mBAAmB,CAAC;IACnC,SAAgB,UAAU,CAAC,CAAC,EAC1B,OAAO,EAAE,MAAM,CAAC,EAChB,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAgB,GACnC,mBAAmB,CAAC,CAAC,CAAC,CAkFxB;CACF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAEhF"}
|
|
@@ -7,7 +7,7 @@ import * as Ref from '@effect/io/Ref';
|
|
|
7
7
|
import * as Synchronized from '@effect/io/Ref/Synchronized';
|
|
8
8
|
import { Fx } from '../Fx.js';
|
|
9
9
|
import { HoldSubject } from './HoldSubject.js';
|
|
10
|
-
import { isRefSubject, RefSubject } from './RefSubject.js';
|
|
10
|
+
import { Computed, isRefSubject, RefSubject } from './RefSubject.js';
|
|
11
11
|
import { Subject } from './Subject.js';
|
|
12
12
|
export function makeSynchronized(initial, eq = equals) {
|
|
13
13
|
return Effect.sync(() => SynchronizedSubject.unsafeMake(initial, eq));
|
|
@@ -69,6 +69,8 @@ export var SynchronizedSubject;
|
|
|
69
69
|
mutableRef.set(Option.some(value));
|
|
70
70
|
return value;
|
|
71
71
|
}),
|
|
72
|
+
compute: (f) => Computed.make(synchronizedSubject, f),
|
|
73
|
+
computeSync: (f) => Computed.make(synchronizedSubject, (a) => Effect.sync(() => f(a))),
|
|
72
74
|
};
|
|
73
75
|
return synchronizedSubject;
|
|
74
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynchronizedSubject.js","sourceRoot":"","sources":["../../src/Subject/SynchronizedSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"SynchronizedSubject.js","sourceRoot":"","sources":["../../src/Subject/SynchronizedSubject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { type MutableRef } from '@effect/data/MutableRef';
|
|
2
2
|
import { type Option } from '@effect/data/Option';
|
|
3
3
|
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import type { Fx, Sink } from '../Fx.js';
|
|
5
4
|
import { Subject } from './Subject.js';
|
|
6
|
-
export interface HoldSubject<E, A> extends
|
|
5
|
+
export interface HoldSubject<E, A> extends Subject<E, A>, HoldSubject.Variance<E, A> {
|
|
7
6
|
readonly value: Effect.Effect<never, never, Option<A>>;
|
|
8
7
|
}
|
|
9
8
|
export declare namespace HoldSubject {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoldSubject.d.ts","sourceRoot":"","sources":["../../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"HoldSubject.d.ts","sourceRoot":"","sources":["../../../src/Subject/HoldSubject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAK3C,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;CACvD;AAED,yBAAiB,WAAW,CAAC;IACpB,MAAM,MAAM,eAAsC,CAAA;IACzD,KAAY,MAAM,GAAG,OAAO,MAAM,CAAA;IAElC,eAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE;YACjB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;SAC7B,CAGA;KACF;IAGD,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAG/E,KAAY,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAEhF,SAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAgB,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAE/F;CAeF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAEtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoldSubject.js","sourceRoot":"","sources":["../../../src/Subject/HoldSubject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAgD;AAChD,wDAA+D;AAC/D,gDAAuD;AACvD,0DAA2C;
|
|
1
|
+
{"version":3,"file":"HoldSubject.js","sourceRoot":"","sources":["../../../src/Subject/HoldSubject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAgD;AAChD,wDAA+D;AAC/D,gDAAuD;AACvD,0DAA2C;AAE3C,sDAA+C;AAC/C,iDAA4C;AAE5C,6CAAiD;AAMjD,IAAiB,WAAW,CAqC3B;AArCD,WAAiB,WAAW;;IACb,kBAAM,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAGzD,MAAsB,QAAe,SAAQ,oBAAO,CAAC,QAAc;QAAnE;;YACW,QAAQ,GAGb;gBACF,EAAE,EAAE,mBAAQ;gBACZ,EAAE,EAAE,mBAAQ;aACb,CAAA;QACH,CAAC;KAAA;SAPW,YAAA,MAAM;IADI,oBAAQ,WAQ7B,CAAA;IAQD,SAAgB,UAAU,CAAO,QAA+B,IAAA,iBAAI,EAAC,IAAA,aAAI,GAAE,CAAC;QAC1E,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAED,MAAM,eAAsB,SAAQ,gBAAmB;QAOrD,YAAY,KAA4B;YACtC,KAAK,CAAC,gBAAK,EAAE,KAAK,CAAC,CAAA;YAPZ,QAAgB,GAA2C;gBAClE,EAAE,EAAE,mBAAQ;gBACZ,EAAE,EAAE,mBAAQ;aACb,CAAC;YACO,QAAQ,GAAuC,IAAI,CAAC,oBAAO,CAAC,MAAM,CAAC,CAAA;YAMnE,UAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAFtD,CAAC;KAGF;SAXW,oBAAO,CAAC,MAAM,OAId,YAAA,MAAM;AAQpB,CAAC,EArCgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAqC3B;AAED,SAAgB,aAAa,CAAO,CAAU;IAC5C,OAAO,IAAA,sBAAS,EAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,CAAA;AAChD,CAAC;AAFD,sCAEC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as ReadonlyArray from '@effect/data/ReadonlyArray';
|
|
2
2
|
import * as Equivalence from '@effect/data/typeclass/Equivalence';
|
|
3
3
|
import * as Effect from '@effect/io/Effect';
|
|
4
4
|
import * as Ref from '@effect/io/Ref';
|
|
5
5
|
import type * as Scope from '@effect/io/Scope';
|
|
6
|
+
import { Fx } from '../Fx.js';
|
|
6
7
|
import { HoldSubject } from './HoldSubject.js';
|
|
7
8
|
export interface RefSubject<A> extends HoldSubject<never, A>, Ref.Ref<A> {
|
|
8
9
|
readonly eq: Equivalence.Equivalence<A>;
|
|
@@ -10,14 +11,29 @@ export interface RefSubject<A> extends HoldSubject<never, A>, Ref.Ref<A> {
|
|
|
10
11
|
readonly set: (a: A) => Effect.Effect<never, never, A>;
|
|
11
12
|
readonly update: (f: (a: A) => A) => Effect.Effect<never, never, A>;
|
|
12
13
|
readonly delete: Effect.Effect<never, never, A>;
|
|
14
|
+
readonly compute: <R, E, B>(f: (a: A) => Effect.Effect<R, E, B>) => Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
15
|
+
readonly computeSync: <B>(f: (a: A) => B) => Effect.Effect<Scope.Scope, never, Computed<never, B>>;
|
|
13
16
|
}
|
|
14
17
|
export declare function makeRef<A>(initial: () => A, eq?: Equivalence.Equivalence<A>): Effect.Effect<never, never, RefSubject<A>>;
|
|
15
18
|
export declare namespace RefSubject {
|
|
16
19
|
type ValueOf<T> = T extends RefSubject<infer A> ? A : never;
|
|
17
20
|
function unsafeMake<A>(initial: () => A, eq?: Equivalence.Equivalence<A>): RefSubject<A>;
|
|
18
|
-
function tuple<Subjects extends NonEmptyReadonlyArray<RefSubject<any>>>(...subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
21
|
+
function tuple<Subjects extends ReadonlyArray.NonEmptyReadonlyArray<RefSubject<any>>>(...subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
22
|
+
readonly [K in keyof Subjects]: ValueOf<Subjects[K]>;
|
|
23
|
+
}>>;
|
|
24
|
+
function struct<Subjects extends Readonly<Record<string, RefSubject<any>>>>(subjects: Subjects): Effect.Effect<Scope.Scope, never, RefSubject<{
|
|
19
25
|
readonly [K in keyof Subjects]: ValueOf<Subjects[K]>;
|
|
20
26
|
}>>;
|
|
21
27
|
}
|
|
22
28
|
export declare function isRefSubject<A>(u: unknown): u is RefSubject<A>;
|
|
29
|
+
export interface Computed<E, A> extends Fx<never, E, A> {
|
|
30
|
+
readonly get: Effect.Effect<never, E, A>;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace Computed {
|
|
33
|
+
function make<A, R, E, B>(input: RefSubject<A>, compute: (a: A) => Effect.Effect<R, E, B>): Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
34
|
+
}
|
|
35
|
+
export declare const makeComputed: {
|
|
36
|
+
<A, R, E, B>(input: RefSubject<A>, compute: (a: A) => Effect.Effect<R, E, B>): Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
37
|
+
<A, R, E, B>(compute: (a: A) => Effect.Effect<R, E, B>): (input: RefSubject<A>) => Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
38
|
+
};
|
|
23
39
|
//# sourceMappingURL=RefSubject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefSubject.d.ts","sourceRoot":"","sources":["../../../src/Subject/RefSubject.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"RefSubject.d.ts","sourceRoot":"","sources":["../../../src/Subject/RefSubject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAE3D,OAAO,KAAK,WAAW,MAAM,oCAAoC,CAAA;AACjE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,EAAE,EAAQ,MAAM,UAAU,CAAA;AAMnC,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAA;AAG7D,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAE/C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACxB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAE1D,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;CACnG;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,MAAM,CAAC,EAChB,EAAE,GAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAU,GACtC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAE5C;AAED,yBAAiB,UAAU,CAAC;IAC1B,KAAY,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAElE,SAAgB,UAAU,CAAC,CAAC,EAC1B,OAAO,EAAE,MAAM,CAAC,EAChB,EAAE,GAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAU,GACtC,UAAU,CAAC,CAAC,CAAC,CA+Cf;IAED,SAAgB,KAAK,CAAC,QAAQ,SAAS,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACzF,GAAG,QAAQ,EAAE,QAAQ,GACpB,MAAM,CAAC,MAAM,CACd,KAAK,CAAC,KAAK,EACX,KAAK,EACL,UAAU,CAAC;QAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,CACrE,CA+DA;IAED,SAAgB,MAAM,CAAC,QAAQ,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAC/E,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAAC,MAAM,CACd,KAAK,CAAC,KAAK,EACX,KAAK,EACL,UAAU,CAAC;QAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,CACrE,CA6DA;CAmBF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAE9D;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CACzC;AAED,yBAAiB,QAAQ,CAAC;IACxB,SAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACxC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAqBvD;CAiBF;AAED,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAC1F,CAAC,GAAG,KAAK,CAAC,KAAK,EACf,KAAK,EACL,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CACf,CAAA;IAED,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CACvD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KACjB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAClC,CAAA"}
|
|
@@ -23,16 +23,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.isRefSubject = exports.RefSubject = exports.makeRef = void 0;
|
|
26
|
+
exports.makeComputed = exports.Computed = exports.isRefSubject = exports.RefSubject = exports.makeRef = void 0;
|
|
27
27
|
const Equal_1 = require("@effect/data/Equal");
|
|
28
28
|
const Function_1 = require("@effect/data/Function");
|
|
29
29
|
const MutableRef = __importStar(require("@effect/data/MutableRef"));
|
|
30
30
|
const Option = __importStar(require("@effect/data/Option"));
|
|
31
|
-
const
|
|
31
|
+
const ReadonlyArray = __importStar(require("@effect/data/ReadonlyArray"));
|
|
32
|
+
const ReadonlyRecord = __importStar(require("@effect/data/ReadonlyRecord"));
|
|
32
33
|
const Equivalence = __importStar(require("@effect/data/typeclass/Equivalence"));
|
|
33
34
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
34
35
|
const Ref = __importStar(require("@effect/io/Ref"));
|
|
35
36
|
const Fx_js_1 = require("../Fx.js");
|
|
37
|
+
const flatMapEffect_js_1 = require("../operator/flatMapEffect.js");
|
|
38
|
+
const hold_js_1 = require("../operator/hold.js");
|
|
39
|
+
const skipWhile_js_1 = require("../operator/skipWhile.js");
|
|
36
40
|
const observe_js_1 = require("../run/observe.js");
|
|
37
41
|
const HoldSubject_js_1 = require("./HoldSubject.js");
|
|
38
42
|
const Subject_js_1 = require("./Subject.js");
|
|
@@ -69,35 +73,37 @@ var RefSubject;
|
|
|
69
73
|
value: subject.value,
|
|
70
74
|
eq,
|
|
71
75
|
modify,
|
|
72
|
-
...makeDerivations(modify),
|
|
76
|
+
...makeDerivations(modify, Effect.sync(getValue)),
|
|
73
77
|
delete: Effect.sync(() => {
|
|
74
78
|
const option = current.get();
|
|
75
79
|
const reset = initial();
|
|
76
80
|
current.set(Option.some(reset));
|
|
77
81
|
return Option.getOrElse(option, () => reset);
|
|
78
82
|
}),
|
|
83
|
+
compute: (f) => (0, exports.makeComputed)(refSubject, f),
|
|
84
|
+
computeSync: (f) => (0, exports.makeComputed)(refSubject, (a) => Effect.sync(() => f(a))),
|
|
79
85
|
};
|
|
80
86
|
return refSubject;
|
|
81
87
|
}
|
|
82
88
|
RefSubject.unsafeMake = unsafeMake;
|
|
83
89
|
function tuple(...subjects) {
|
|
84
90
|
const length = subjects.length;
|
|
85
|
-
const
|
|
86
|
-
const eq = Equivalence.tuple(...
|
|
91
|
+
const getUnderlyingValues = Effect.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s) => s.get));
|
|
92
|
+
const eq = Equivalence.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s) => s.eq));
|
|
87
93
|
return Effect.gen(function* ($) {
|
|
88
|
-
const initial = yield* $(
|
|
94
|
+
const initial = yield* $(getUnderlyingValues);
|
|
89
95
|
const refSubject = unsafeMake(() => initial, eq);
|
|
90
96
|
const updateAtIndex = (i) => (a) => Effect.gen(function* ($) {
|
|
91
|
-
const current = yield* $(
|
|
97
|
+
const current = yield* $(refSubject.get);
|
|
92
98
|
const next = current.slice();
|
|
93
99
|
next[i] = a;
|
|
94
100
|
yield* $(refSubject.set(next));
|
|
95
101
|
});
|
|
96
102
|
// Override event to replicate events into underlying subjects
|
|
97
|
-
const event = (val) => Effect.tuple(...
|
|
103
|
+
const event = (val) => Effect.tuple(...ReadonlyArray.mapNonEmpty(subjects, (s, i) => s.event(val[i])));
|
|
98
104
|
// Override modify to replicate events into underlying subjects
|
|
99
105
|
const modify = (f) => Effect.gen(function* ($) {
|
|
100
|
-
const current = yield* $(
|
|
106
|
+
const current = yield* $(getUnderlyingValues);
|
|
101
107
|
const [b, a] = f(current);
|
|
102
108
|
if (!eq(current, a)) {
|
|
103
109
|
// Will update this RefSubject using observe below
|
|
@@ -107,20 +113,64 @@ var RefSubject;
|
|
|
107
113
|
});
|
|
108
114
|
// Listen to changes to each subject and update the derived subject
|
|
109
115
|
for (let i = 0; i < length; i++) {
|
|
110
|
-
yield* $((0, observe_js_1.observe)(updateAtIndex(i))(subjects[i]));
|
|
116
|
+
yield* $(Effect.forkScoped((0, observe_js_1.observe)(updateAtIndex(i))(subjects[i])));
|
|
111
117
|
}
|
|
112
|
-
|
|
118
|
+
// Allow underlying subscriptions to start
|
|
119
|
+
yield* $(Effect.yieldNow());
|
|
120
|
+
const derived = {
|
|
113
121
|
...refSubject,
|
|
114
122
|
event,
|
|
115
123
|
modify,
|
|
116
|
-
...makeDerivations(modify),
|
|
124
|
+
...makeDerivations(modify, refSubject.get),
|
|
125
|
+
compute: (f) => (0, exports.makeComputed)(derived, f),
|
|
117
126
|
};
|
|
127
|
+
return derived;
|
|
118
128
|
});
|
|
119
129
|
}
|
|
120
130
|
RefSubject.tuple = tuple;
|
|
121
|
-
|
|
131
|
+
function struct(subjects) {
|
|
132
|
+
const getUnderlyingValues = Effect.struct(ReadonlyRecord.map(subjects, (s) => s.get));
|
|
133
|
+
const eq = Equivalence.struct(ReadonlyRecord.map(subjects, (s) => s.eq));
|
|
134
|
+
return Effect.gen(function* ($) {
|
|
135
|
+
const initial = yield* $(getUnderlyingValues);
|
|
136
|
+
const refSubject = unsafeMake(() => initial, eq);
|
|
137
|
+
const updateAtKey = (i) => (a) => Effect.gen(function* ($) {
|
|
138
|
+
const current = yield* $(refSubject.get);
|
|
139
|
+
const next = { ...current, [i]: a };
|
|
140
|
+
yield* $(refSubject.set(next));
|
|
141
|
+
});
|
|
142
|
+
// Override event to replicate events into underlying subjects
|
|
143
|
+
const event = (val) => Effect.struct(ReadonlyRecord.map(subjects, (s, i) => s.event(val[i])));
|
|
144
|
+
// Override modify to replicate events into underlying subjects
|
|
145
|
+
const modify = (f) => Effect.gen(function* ($) {
|
|
146
|
+
const current = yield* $(getUnderlyingValues);
|
|
147
|
+
const [b, a] = f(current);
|
|
148
|
+
if (!eq(current, a)) {
|
|
149
|
+
// Will update this RefSubject using observe below
|
|
150
|
+
yield* $(event(a));
|
|
151
|
+
}
|
|
152
|
+
return b;
|
|
153
|
+
});
|
|
154
|
+
// Listen to changes to each subject and update the derived subject
|
|
155
|
+
for (const i in subjects) {
|
|
156
|
+
yield* $(Effect.forkScoped((0, observe_js_1.observe)(updateAtKey(i))(subjects[i])));
|
|
157
|
+
}
|
|
158
|
+
// Allow underlying subscriptions to start
|
|
159
|
+
yield* $(Effect.yieldNow());
|
|
160
|
+
const derived = {
|
|
161
|
+
...refSubject,
|
|
162
|
+
event,
|
|
163
|
+
modify,
|
|
164
|
+
...makeDerivations(modify, refSubject.get),
|
|
165
|
+
compute: (f) => (0, exports.makeComputed)(derived, f),
|
|
166
|
+
};
|
|
167
|
+
return derived;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
RefSubject.struct = struct;
|
|
171
|
+
const makeDerivations = (modify, getValue) => {
|
|
122
172
|
return {
|
|
123
|
-
get:
|
|
173
|
+
get: getValue,
|
|
124
174
|
set(a) {
|
|
125
175
|
return modify(() => [a, a]);
|
|
126
176
|
},
|
|
@@ -137,4 +187,33 @@ function isRefSubject(u) {
|
|
|
137
187
|
return (0, HoldSubject_js_1.isHoldSubject)(u) && Ref.RefTypeId in u;
|
|
138
188
|
}
|
|
139
189
|
exports.isRefSubject = isRefSubject;
|
|
190
|
+
var Computed;
|
|
191
|
+
(function (Computed) {
|
|
192
|
+
function make(input, compute) {
|
|
193
|
+
return Effect.gen(function* ($) {
|
|
194
|
+
const compute_ = (0, Function_1.flow)(compute, Effect.exit);
|
|
195
|
+
const initialInput = yield* $(input.get);
|
|
196
|
+
const initial = yield* $(compute_(initialInput));
|
|
197
|
+
const refSubject = yield* $(makeRef(() => initial));
|
|
198
|
+
yield* $((0, Function_1.pipe)(input, (0, skipWhile_js_1.skipWhile)((x) => input.eq(x, initialInput)), // We already have the initial value, don't waste downstream resources
|
|
199
|
+
(0, observe_js_1.observe)((a) => Effect.flatMap(compute_(a), refSubject.set)), Effect.forkScoped));
|
|
200
|
+
// Allow subscription to finalize as HoldFx under the hood of RefSubject schedules the start of the Fx.
|
|
201
|
+
yield* $(Effect.yieldNow());
|
|
202
|
+
return new ComputedImpl(refSubject);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
Computed.make = make;
|
|
206
|
+
class ComputedImpl extends Fx_js_1.Fx.Variance {
|
|
207
|
+
constructor(input) {
|
|
208
|
+
super();
|
|
209
|
+
this.input = input;
|
|
210
|
+
this.get = Effect.flatMap(this.input.get, Effect.done);
|
|
211
|
+
this.fx = (0, Function_1.pipe)(input, (0, flatMapEffect_js_1.flatMapEffect)(Effect.done), hold_js_1.hold);
|
|
212
|
+
}
|
|
213
|
+
run(sink) {
|
|
214
|
+
return this.fx.run(sink);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
})(Computed = exports.Computed || (exports.Computed = {}));
|
|
218
|
+
exports.makeComputed = (0, Function_1.dual)(2, Computed.make);
|
|
140
219
|
//# sourceMappingURL=RefSubject.js.map
|