@fncts/observable 0.0.18 → 0.0.19
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/ObservableRef/api.d.ts +19 -20
- package/ObservableRef/atomic.d.ts +6 -28
- package/ObservableRef/definition.d.ts +24 -25
- package/ObservableRef.d.ts +3 -0
- package/_cjs/ObservableRef/api.cjs +46 -19
- package/_cjs/ObservableRef/api.cjs.map +1 -1
- package/_cjs/ObservableRef/atomic.cjs +13 -75
- package/_cjs/ObservableRef/atomic.cjs.map +1 -1
- package/_cjs/ObservableRef/definition.cjs +10 -2
- package/_cjs/ObservableRef/definition.cjs.map +1 -1
- package/_cjs/ObservableRef.cjs +39 -0
- package/_cjs/ObservableRef.cjs.map +1 -0
- package/_mjs/ObservableRef/api.mjs +46 -19
- package/_mjs/ObservableRef/api.mjs.map +1 -1
- package/_mjs/ObservableRef/atomic.mjs +11 -71
- package/_mjs/ObservableRef/atomic.mjs.map +1 -1
- package/_mjs/ObservableRef/definition.mjs +8 -2
- package/_mjs/ObservableRef/definition.mjs.map +1 -1
- package/_mjs/ObservableRef.mjs +5 -0
- package/_mjs/ObservableRef.mjs.map +1 -0
- package/_src/ObservableRef/api.ts +84 -52
- package/_src/ObservableRef/atomic.ts +11 -75
- package/_src/ObservableRef/definition.ts +25 -24
- package/_src/ObservableRef.ts +5 -0
- package/package.json +2 -2
|
@@ -8,11 +8,8 @@ import { ObservableRef, ObservableRefDescriptor } from "@fncts/observable/Observ
|
|
|
8
8
|
* @tsplus static fncts.observable.ObservableRefOps make
|
|
9
9
|
* @tsplus static fncts.observable.ObservableRefOps __call
|
|
10
10
|
*/
|
|
11
|
-
export function make(initial
|
|
12
|
-
|
|
13
|
-
throw new Error("ObservableRef.make: the `id` argument must be provided if not using typescript transformers");
|
|
14
|
-
}
|
|
15
|
-
return new Atomic(new ObservableRefDescriptor(Symbol.for(id), initial));
|
|
11
|
+
export function make(initial) {
|
|
12
|
+
return new Atomic(new ObservableRefDescriptor(initial));
|
|
16
13
|
}
|
|
17
14
|
/**
|
|
18
15
|
* @tsplus pipeable fncts.observable.ObservableRef update
|
|
@@ -49,8 +46,8 @@ function modify_1(f) {
|
|
|
49
46
|
return self => {
|
|
50
47
|
return tsplus_module_1.flatMap(value => {
|
|
51
48
|
const [b, a] = f(value);
|
|
52
|
-
return tsplus_module_1.zipRight(tsplus_module_1.succeedNow(b, fileName_1 + ":
|
|
53
|
-
}, fileName_1 + ":
|
|
49
|
+
return tsplus_module_1.zipRight(tsplus_module_1.succeedNow(b, fileName_1 + ":54:41"), fileName_1 + ":54:27")(self.set(a));
|
|
50
|
+
}, fileName_1 + ":52:28")(self.get);
|
|
54
51
|
};
|
|
55
52
|
}
|
|
56
53
|
class Map extends ObservableRef {
|
|
@@ -58,14 +55,22 @@ class Map extends ObservableRef {
|
|
|
58
55
|
super(source.descriptor);
|
|
59
56
|
this.source = source;
|
|
60
57
|
this.f = f;
|
|
61
|
-
this.get = tsplus_module_1.map(this.f, fileName_1 + ":68:
|
|
62
|
-
this.
|
|
63
|
-
this.delete = this.source.delete;
|
|
58
|
+
this.get = tsplus_module_1.map(this.f, fileName_1 + ":68:36")(this.source.get);
|
|
59
|
+
this.clear = this.source.clear;
|
|
64
60
|
this.observable = tsplus_module_2.map_(this.f)(this.source.observable);
|
|
65
61
|
}
|
|
62
|
+
unsafeGet() {
|
|
63
|
+
return this.f(this.source.unsafeGet());
|
|
64
|
+
}
|
|
65
|
+
unsafeSet(a) {
|
|
66
|
+
this.source.unsafeSet(a);
|
|
67
|
+
}
|
|
66
68
|
set(a) {
|
|
67
69
|
return this.source.set(a);
|
|
68
70
|
}
|
|
71
|
+
unsafeClear() {
|
|
72
|
+
this.source.unsafeClear();
|
|
73
|
+
}
|
|
69
74
|
}
|
|
70
75
|
/**
|
|
71
76
|
* @tsplus pipeable fncts.observable.ObservableRef map
|
|
@@ -81,13 +86,21 @@ class ContramapIn extends ObservableRef {
|
|
|
81
86
|
this.source = source;
|
|
82
87
|
this.f = f;
|
|
83
88
|
this.get = this.source.get;
|
|
84
|
-
this.
|
|
85
|
-
this.delete = this.source.delete;
|
|
89
|
+
this.clear = this.source.clear;
|
|
86
90
|
this.observable = this.source.observable;
|
|
87
91
|
}
|
|
92
|
+
unsafeGet() {
|
|
93
|
+
return this.source.unsafeGet();
|
|
94
|
+
}
|
|
95
|
+
unsafeSet(c) {
|
|
96
|
+
this.source.unsafeSet(this.f(c));
|
|
97
|
+
}
|
|
88
98
|
set(c) {
|
|
89
99
|
return this.source.set(this.f(c));
|
|
90
100
|
}
|
|
101
|
+
unsafeClear() {
|
|
102
|
+
this.source.unsafeClear();
|
|
103
|
+
}
|
|
91
104
|
}
|
|
92
105
|
/**
|
|
93
106
|
* @tsplus pipeable fncts.observable.ObservableRef contramapIn
|
|
@@ -102,13 +115,21 @@ class Focus extends ObservableRef {
|
|
|
102
115
|
super(source.descriptor);
|
|
103
116
|
this.source = source;
|
|
104
117
|
this.lens = lens;
|
|
105
|
-
this.get = tsplus_module_1.map(this.lens.get, fileName_1 + ":
|
|
106
|
-
this.
|
|
107
|
-
this.delete = this.source.delete;
|
|
118
|
+
this.get = tsplus_module_1.map(this.lens.get, fileName_1 + ":142:36")(this.source.get);
|
|
119
|
+
this.clear = this.source.clear;
|
|
108
120
|
this.observable = tsplus_module_2.map_(this.lens.get)(this.source.observable);
|
|
109
121
|
}
|
|
122
|
+
unsafeGet() {
|
|
123
|
+
return this.lens.get(this.source.unsafeGet());
|
|
124
|
+
}
|
|
125
|
+
unsafeSet(b) {
|
|
126
|
+
this.source.unsafeSet(this.lens.set(b)(this.source.unsafeGet()));
|
|
127
|
+
}
|
|
110
128
|
set(b) {
|
|
111
|
-
return tsplus_module_1.flatMap(a => this.source.set(this.lens.set(b)(a)), fileName_1 + ":
|
|
129
|
+
return tsplus_module_1.flatMap(a => this.source.set(this.lens.set(b)(a)), fileName_1 + ":149:35")(this.source.get);
|
|
130
|
+
}
|
|
131
|
+
unsafeClear() {
|
|
132
|
+
this.source.unsafeClear();
|
|
112
133
|
}
|
|
113
134
|
}
|
|
114
135
|
/**
|
|
@@ -124,11 +145,17 @@ export class ZipWith {
|
|
|
124
145
|
this.sourceA = sourceA;
|
|
125
146
|
this.sourceB = sourceB;
|
|
126
147
|
this.f = f;
|
|
127
|
-
this.get = tsplus_module_1.zipWith(this.sourceB.get, this.f, fileName_1 + ":
|
|
128
|
-
this.
|
|
129
|
-
this.delete = tsplus_module_1.zipRight(this.sourceB.delete, fileName_1 + ":157:53")(this.sourceA.delete);
|
|
148
|
+
this.get = tsplus_module_1.zipWith(this.sourceB.get, this.f, fileName_1 + ":182:41")(this.sourceA.get);
|
|
149
|
+
this.clear = tsplus_module_1.zipRight(this.sourceB.clear, fileName_1 + ":189:42")(this.sourceA.clear);
|
|
130
150
|
this.observable = tsplus_module_2.zipWithLatest(this.sourceB.observable, this.f)(this.sourceA.observable);
|
|
131
151
|
}
|
|
152
|
+
unsafeGet() {
|
|
153
|
+
return this.f(this.sourceA.unsafeGet(), this.sourceB.unsafeGet());
|
|
154
|
+
}
|
|
155
|
+
unsafeClear() {
|
|
156
|
+
this.sourceA.unsafeClear();
|
|
157
|
+
this.sourceB.unsafeClear();
|
|
158
|
+
}
|
|
132
159
|
}
|
|
133
160
|
/**
|
|
134
161
|
* @tsplus pipeable fncts.observable.ObservableRef.Readable zipWith
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","names":["modify","modify_1","Atomic","ObservableRef","ObservableRefDescriptor","make","initial","
|
|
1
|
+
{"version":3,"file":"api.mjs","names":["modify","modify_1","Atomic","ObservableRef","ObservableRefDescriptor","make","initial","update","f","self","a","undefined","getAndUpdate","value","updateAndGet","tsplus_module_1","flatMap","b","zipRight","succeedNow","fileName_1","set","get","Map","constructor","source","descriptor","map","clear","observable","tsplus_module_2","map_","unsafeGet","unsafeSet","unsafeClear","ContramapIn","c","contramapIn","Focus","lens","focus","ZipWith","sourceA","sourceB","zipWith","zipWithLatest","that"],"sources":["../../_src/ObservableRef/api.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,82 +1,22 @@
|
|
|
1
|
-
const fileName_1 = "(@fncts/observable) src/ObservableRef/atomic.ts";
|
|
2
1
|
import * as tsplus_module_1 from "@fncts/observable/ObservableRef/definition";
|
|
3
|
-
import * as tsplus_module_2 from "@fncts/
|
|
4
|
-
import * as tsplus_module_3 from "@fncts/observable/Observable";
|
|
5
|
-
import * as tsplus_module_4 from "@fncts/observable/Observable/api";
|
|
6
|
-
import * as tsplus_module_5 from "@fncts/io/IO/api";
|
|
7
|
-
import * as tsplus_module_6 from "@fncts/base/data/Tag/constructors";
|
|
2
|
+
import * as tsplus_module_2 from "@fncts/observable/Observable";
|
|
8
3
|
import { BehaviorSubject } from "@fncts/observable/BehaviorSubject";
|
|
9
4
|
export class Atomic extends tsplus_module_1.ObservableRef {
|
|
10
5
|
constructor() {
|
|
11
6
|
super(...arguments);
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return reactor.unsafeSubscribe(this.descriptor, subscriber);
|
|
17
|
-
}), StoreTag_1);
|
|
7
|
+
this.subject = new BehaviorSubject(this.descriptor.initial);
|
|
8
|
+
this.observable = new tsplus_module_2.Observable(subscriber => {
|
|
9
|
+
return this.subject.subscribe(subscriber);
|
|
10
|
+
});
|
|
18
11
|
}
|
|
19
|
-
|
|
20
|
-
return
|
|
12
|
+
unsafeGet() {
|
|
13
|
+
return this.subject.value;
|
|
21
14
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* @tsplus type fncts.observable.Store
|
|
25
|
-
* @tsplus companion fncts.observable.StoreOps
|
|
26
|
-
*/
|
|
27
|
-
export class Store {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.subjectMap = new Map();
|
|
30
|
-
}
|
|
31
|
-
get(ref) {
|
|
32
|
-
return tsplus_module_5.succeed(() => {
|
|
33
|
-
if (this.subjectMap.has(ref.id)) {
|
|
34
|
-
return this.subjectMap.get(ref.id).value;
|
|
35
|
-
} else {
|
|
36
|
-
this.subjectMap.set(ref.id, new BehaviorSubject(ref.initial));
|
|
37
|
-
return ref.initial;
|
|
38
|
-
}
|
|
39
|
-
}, fileName_1 + ":32:14");
|
|
40
|
-
}
|
|
41
|
-
set(ref, value) {
|
|
42
|
-
return tsplus_module_5.succeed(() => {
|
|
43
|
-
if (this.subjectMap.has(ref.id)) {
|
|
44
|
-
this.subjectMap.get(ref.id).next(value);
|
|
45
|
-
} else {
|
|
46
|
-
this.subjectMap.set(ref.id, new BehaviorSubject(value));
|
|
47
|
-
}
|
|
48
|
-
return value;
|
|
49
|
-
}, fileName_1 + ":43:14");
|
|
50
|
-
}
|
|
51
|
-
has(ref) {
|
|
52
|
-
return tsplus_module_5.succeed(() => this.subjectMap.has(ref.id), fileName_1 + ":54:14");
|
|
53
|
-
}
|
|
54
|
-
delete(ref) {
|
|
55
|
-
return tsplus_module_5.succeed(() => {
|
|
56
|
-
if (this.subjectMap.has(ref.id)) {
|
|
57
|
-
this.subjectMap.delete(ref.id);
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
return false;
|
|
61
|
-
}, fileName_1 + ":58:14");
|
|
15
|
+
unsafeSet(a) {
|
|
16
|
+
this.subject.next(a);
|
|
62
17
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const subject = this.subjectMap.get(ref.id);
|
|
66
|
-
const subscription = subject.subscribe(subscriber);
|
|
67
|
-
return subscription;
|
|
68
|
-
} else {
|
|
69
|
-
const subject = new BehaviorSubject(ref.initial);
|
|
70
|
-
const subscription = subject.subscribe(subscriber);
|
|
71
|
-
this.subjectMap.set(ref.id, subject);
|
|
72
|
-
return subscription;
|
|
73
|
-
}
|
|
18
|
+
unsafeClear() {
|
|
19
|
+
this.subject.next(this.descriptor.initial);
|
|
74
20
|
}
|
|
75
21
|
}
|
|
76
|
-
/**
|
|
77
|
-
* @tsplus static fncts.observable.StoreOps Tag
|
|
78
|
-
* @tsplus implicit
|
|
79
|
-
*/
|
|
80
|
-
const StoreTag_1 = /*#__PURE__*/tsplus_module_6.makeTag("fncts.observable.ObservableRef.StoreTag");
|
|
81
|
-
export const StoreTag = StoreTag_1;
|
|
82
22
|
//# sourceMappingURL=atomic.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic.mjs","names":["BehaviorSubject","Atomic","tsplus_module_1","ObservableRef","constructor","
|
|
1
|
+
{"version":3,"file":"atomic.mjs","names":["BehaviorSubject","Atomic","tsplus_module_1","ObservableRef","constructor","subject","descriptor","initial","observable","tsplus_module_2","Observable","subscriber","subscribe","unsafeGet","value","unsafeSet","a","next","unsafeClear"],"sources":["../../_src/ObservableRef/atomic.ts"],"sourcesContent":[null],"mappings":";;AAAA,SAASA,eAAe,QAAQ,mCAAmC;AAEnE,OAAM,MAAOC,MAAU,SAAQC,eAAA,CAAAC,aAAmB;EAAlDC,YAAA;;IACE,KAAAC,OAAO,GAAG,IAAIL,eAAe,CAAI,IAAI,CAACM,UAAU,CAACC,OAAO,CAAC;IAczD,KAAAC,UAAU,GAAgC,IAAAC,eAAA,CAAIC,UAAU,CAAEC,UAAU,IAAI;MACtE,OAAO,IAAI,CAACN,OAAO,CAACO,SAAS,CAACD,UAAU,CAAC;IAC3C,CAAC,CAAC;EACJ;EAfEE,SAASA,CAAA;IACP,OAAO,IAAI,CAACR,OAAO,CAACS,KAAK;EAC3B;EAEAC,SAASA,CAACC,CAAI;IACZ,IAAI,CAACX,OAAO,CAACY,IAAI,CAACD,CAAC,CAAC;EACtB;EAEAE,WAAWA,CAAA;IACT,IAAI,CAACb,OAAO,CAACY,IAAI,CAAC,IAAI,CAACX,UAAU,CAACC,OAAO,CAAC;EAC5C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
const fileName_1 = "(@fncts/observable) src/ObservableRef/definition.ts";
|
|
2
|
+
import * as tsplus_module_1 from "@fncts/io/IO/api";
|
|
1
3
|
export class ObservableRefDescriptor {
|
|
2
|
-
constructor(
|
|
3
|
-
this.id = id;
|
|
4
|
+
constructor(initial) {
|
|
4
5
|
this.initial = initial;
|
|
5
6
|
}
|
|
6
7
|
}
|
|
@@ -11,6 +12,11 @@ export class ObservableRefDescriptor {
|
|
|
11
12
|
export class ObservableRef {
|
|
12
13
|
constructor(descriptor) {
|
|
13
14
|
this.descriptor = descriptor;
|
|
15
|
+
this.get = tsplus_module_1.succeed(() => this.unsafeGet(), fileName_1 + ":50:28");
|
|
16
|
+
this.clear = tsplus_module_1.succeed(() => this.unsafeClear(), fileName_1 + ":56:22");
|
|
17
|
+
}
|
|
18
|
+
set(a) {
|
|
19
|
+
return tsplus_module_1.succeed(() => this.unsafeSet(a), fileName_1 + ":53:14");
|
|
14
20
|
}
|
|
15
21
|
}
|
|
16
22
|
//# sourceMappingURL=definition.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.mjs","names":["ObservableRefDescriptor","constructor","
|
|
1
|
+
{"version":3,"file":"definition.mjs","names":["ObservableRefDescriptor","constructor","initial","ObservableRef","descriptor","get","tsplus_module_1","succeed","unsafeGet","fileName_1","clear","unsafeClear","set","a","unsafeSet"],"sources":["../../_src/ObservableRef/definition.ts"],"sourcesContent":[null],"mappings":";;AAUA,OAAM,MAAOA,uBAAuB;EAClCC,YAAqBC,OAAU;IAAV,KAAAA,OAAO,GAAPA,OAAO;EAAM;;AA2BpC;;;;AAIA,OAAM,MAAgBC,aAAa;EAIjCF,YAAqBG,UAAwC;IAAxC,KAAAA,UAAU,GAAVA,UAAU;IAGtB,KAAAC,GAAG,GAAWC,eAAA,CAAAC,OAAA,OAAG,IAAI,CAACC,SAAS,EAAE,EAAAC,UAAA,YAAC;IAMlC,KAAAC,KAAK,GAAGJ,eAAA,CAAAC,OAAA,OAAG,IAAI,CAACI,WAAW,EAAE,EAAAF,UAAA,YAAC;EATyB;EAKhEG,GAAGA,CAACC,CAAI;IACN,OAAOP,eAAA,CAAAC,OAAA,OAAG,IAAI,CAACO,SAAS,CAACD,CAAC,CAAC,EAAAJ,UAAA,YAAC;EAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservableRef.mjs","names":[],"sources":["../_src/ObservableRef.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,cAAc,yBAAwB;AACtC,cAAc,4BAA2B;AACzC,cAAc,gCAA+B"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Lens } from "@fncts/base/optics/Lens";
|
|
2
|
-
import type {
|
|
2
|
+
import type { UIO } from "@fncts/io/IO";
|
|
3
3
|
import type { Observable } from "@fncts/observable/Observable";
|
|
4
|
-
import type { Store } from "@fncts/observable/ObservableRef/atomic";
|
|
5
4
|
|
|
6
5
|
import { Atomic } from "@fncts/observable/ObservableRef/atomic";
|
|
7
6
|
import { ObservableRef, ObservableRefDescriptor } from "@fncts/observable/ObservableRef/definition";
|
|
@@ -10,25 +9,22 @@ import { ObservableRef, ObservableRefDescriptor } from "@fncts/observable/Observ
|
|
|
10
9
|
* @tsplus static fncts.observable.ObservableRefOps make
|
|
11
10
|
* @tsplus static fncts.observable.ObservableRefOps __call
|
|
12
11
|
*/
|
|
13
|
-
export function make<A>(initial: A
|
|
14
|
-
|
|
15
|
-
throw new Error("ObservableRef.make: the `id` argument must be provided if not using typescript transformers");
|
|
16
|
-
}
|
|
17
|
-
return new Atomic(new ObservableRefDescriptor(Symbol.for(id!), initial));
|
|
12
|
+
export function make<A>(initial: A): ObservableRef<A, A> {
|
|
13
|
+
return new Atomic(new ObservableRefDescriptor(initial));
|
|
18
14
|
}
|
|
19
15
|
|
|
20
16
|
/**
|
|
21
17
|
* @tsplus pipeable fncts.observable.ObservableRef update
|
|
22
18
|
*/
|
|
23
|
-
export function update<
|
|
24
|
-
return (self: ObservableRef<
|
|
19
|
+
export function update<A>(f: (a: A) => A) {
|
|
20
|
+
return (self: ObservableRef<A, A>): UIO<void> => self.modify((a) => [undefined, f(a)]);
|
|
25
21
|
}
|
|
26
22
|
|
|
27
23
|
/**
|
|
28
24
|
* @tsplus pipeable fncts.observable.ObservableRef getAndUpdate
|
|
29
25
|
*/
|
|
30
|
-
export function getAndUpdate<
|
|
31
|
-
return (self: ObservableRef<
|
|
26
|
+
export function getAndUpdate<A>(f: (a: A) => A) {
|
|
27
|
+
return (self: ObservableRef<A, A>): UIO<A> => {
|
|
32
28
|
return self.modify((a) => {
|
|
33
29
|
const value = f(a);
|
|
34
30
|
return [a, value];
|
|
@@ -39,8 +35,8 @@ export function getAndUpdate<R, A>(f: (a: A) => A) {
|
|
|
39
35
|
/**
|
|
40
36
|
* @tsplus pipeable fncts.observable.ObservableRef updateAndGet
|
|
41
37
|
*/
|
|
42
|
-
export function updateAndGet<
|
|
43
|
-
return (self: ObservableRef<
|
|
38
|
+
export function updateAndGet<A>(f: (a: A) => A) {
|
|
39
|
+
return (self: ObservableRef<A, A>): UIO<A> => {
|
|
44
40
|
return self.modify((a) => {
|
|
45
41
|
const value = f(a);
|
|
46
42
|
return [value, value];
|
|
@@ -51,8 +47,8 @@ export function updateAndGet<R, A>(f: (a: A) => A) {
|
|
|
51
47
|
/**
|
|
52
48
|
* @tsplus pipeable fncts.observable.ObservableRef modify
|
|
53
49
|
*/
|
|
54
|
-
export function modify<
|
|
55
|
-
return (self: ObservableRef<
|
|
50
|
+
export function modify<A, B>(f: (a: A) => readonly [B, A]) {
|
|
51
|
+
return (self: ObservableRef<A, A>): UIO<B> => {
|
|
56
52
|
return self.get.flatMap((value) => {
|
|
57
53
|
const [b, a] = f(value);
|
|
58
54
|
return self.set(a) > IO.succeedNow(b);
|
|
@@ -60,110 +56,146 @@ export function modify<R, A, B>(f: (a: A) => readonly [B, A]) {
|
|
|
60
56
|
};
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
class Map<
|
|
64
|
-
constructor(readonly source: ObservableRef<
|
|
59
|
+
class Map<A, B, C> extends ObservableRef<A, C> {
|
|
60
|
+
constructor(readonly source: ObservableRef<A, B>, readonly f: (b: B) => C) {
|
|
65
61
|
super(source.descriptor);
|
|
66
62
|
}
|
|
67
63
|
|
|
68
|
-
|
|
64
|
+
unsafeGet(): C {
|
|
65
|
+
return this.f(this.source.unsafeGet());
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
get: UIO<C> = this.source.get.map(this.f);
|
|
69
|
+
|
|
70
|
+
unsafeSet(a: A): void {
|
|
71
|
+
this.source.unsafeSet(a);
|
|
72
|
+
}
|
|
69
73
|
|
|
70
|
-
set(a: A):
|
|
74
|
+
set(a: A): UIO<void> {
|
|
71
75
|
return this.source.set(a);
|
|
72
76
|
}
|
|
73
77
|
|
|
74
|
-
|
|
78
|
+
unsafeClear(): void {
|
|
79
|
+
this.source.unsafeClear();
|
|
80
|
+
}
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
clear: UIO<void> = this.source.clear;
|
|
77
83
|
|
|
78
|
-
observable: Observable<
|
|
84
|
+
observable: Observable<never, never, C> = this.source.observable.map(this.f);
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
/**
|
|
82
88
|
* @tsplus pipeable fncts.observable.ObservableRef map
|
|
83
89
|
*/
|
|
84
|
-
export function map<
|
|
85
|
-
return (self: ObservableRef<
|
|
90
|
+
export function map<A, B, C>(f: (a: B) => C) {
|
|
91
|
+
return (self: ObservableRef<A, B>): ObservableRef<A, C> => {
|
|
86
92
|
return new Map(self, f);
|
|
87
93
|
};
|
|
88
94
|
}
|
|
89
95
|
|
|
90
|
-
class ContramapIn<
|
|
91
|
-
constructor(readonly source: ObservableRef<
|
|
96
|
+
class ContramapIn<A, B, C> extends ObservableRef<C, B> {
|
|
97
|
+
constructor(readonly source: ObservableRef<A, B>, readonly f: (c: C) => A) {
|
|
92
98
|
super(source.descriptor);
|
|
93
99
|
}
|
|
94
100
|
|
|
95
|
-
|
|
101
|
+
unsafeGet(): B {
|
|
102
|
+
return this.source.unsafeGet();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
get: UIO<B> = this.source.get;
|
|
106
|
+
|
|
107
|
+
unsafeSet(c: C): void {
|
|
108
|
+
this.source.unsafeSet(this.f(c));
|
|
109
|
+
}
|
|
96
110
|
|
|
97
|
-
set(c: C):
|
|
111
|
+
set(c: C): UIO<void> {
|
|
98
112
|
return this.source.set(this.f(c));
|
|
99
113
|
}
|
|
100
114
|
|
|
101
|
-
|
|
115
|
+
unsafeClear(): void {
|
|
116
|
+
this.source.unsafeClear();
|
|
117
|
+
}
|
|
102
118
|
|
|
103
|
-
|
|
119
|
+
clear: UIO<void> = this.source.clear;
|
|
104
120
|
|
|
105
|
-
observable: Observable<
|
|
121
|
+
observable: Observable<never, never, B> = this.source.observable;
|
|
106
122
|
}
|
|
107
123
|
|
|
108
124
|
/**
|
|
109
125
|
* @tsplus pipeable fncts.observable.ObservableRef contramapIn
|
|
110
126
|
*/
|
|
111
|
-
export function contramapIn<
|
|
112
|
-
return (self: ObservableRef<
|
|
127
|
+
export function contramapIn<A, B, C>(f: (inp: C) => A) {
|
|
128
|
+
return (self: ObservableRef<A, B>): ObservableRef<C, B> => {
|
|
113
129
|
return new ContramapIn(self, f);
|
|
114
130
|
};
|
|
115
131
|
}
|
|
116
132
|
|
|
117
|
-
class Focus<
|
|
118
|
-
constructor(readonly source: ObservableRef<
|
|
133
|
+
class Focus<A, B> extends ObservableRef<B, B> {
|
|
134
|
+
constructor(readonly source: ObservableRef<A, A>, readonly lens: Lens<A, B>) {
|
|
119
135
|
super(source.descriptor);
|
|
120
136
|
}
|
|
121
137
|
|
|
122
|
-
|
|
138
|
+
unsafeGet(): B {
|
|
139
|
+
return this.lens.get(this.source.unsafeGet());
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
get: UIO<B> = this.source.get.map(this.lens.get);
|
|
143
|
+
|
|
144
|
+
unsafeSet(b: B): void {
|
|
145
|
+
this.source.unsafeSet(this.lens.set(b)(this.source.unsafeGet()));
|
|
146
|
+
}
|
|
123
147
|
|
|
124
|
-
set(b: B):
|
|
148
|
+
set(b: B): UIO<void> {
|
|
125
149
|
return this.source.get.flatMap((a) => this.source.set(this.lens.set(b)(a)));
|
|
126
150
|
}
|
|
127
151
|
|
|
128
|
-
|
|
152
|
+
unsafeClear(): void {
|
|
153
|
+
this.source.unsafeClear();
|
|
154
|
+
}
|
|
129
155
|
|
|
130
|
-
|
|
156
|
+
clear: UIO<void> = this.source.clear;
|
|
131
157
|
|
|
132
|
-
observable: Observable<
|
|
158
|
+
observable: Observable<never, never, B> = this.source.observable.map(this.lens.get);
|
|
133
159
|
}
|
|
134
160
|
|
|
135
161
|
/**
|
|
136
162
|
* @tsplus pipeable fncts.observable.ObservableRef focus
|
|
137
163
|
*/
|
|
138
|
-
export function focus<
|
|
139
|
-
return (self: ObservableRef<
|
|
164
|
+
export function focus<A, B>(lens: Lens<A, B>) {
|
|
165
|
+
return (self: ObservableRef<A, A>): ObservableRef<B, B> => {
|
|
140
166
|
return new Focus(self, lens);
|
|
141
167
|
};
|
|
142
168
|
}
|
|
143
169
|
|
|
144
|
-
export class ZipWith<
|
|
145
|
-
declare _R: (_: never) => R | R1;
|
|
170
|
+
export class ZipWith<A, B, C> implements ObservableRef.Readable<C> {
|
|
146
171
|
declare _Out: (_: never) => C;
|
|
147
172
|
constructor(
|
|
148
|
-
readonly sourceA: ObservableRef.Readable<
|
|
149
|
-
readonly sourceB: ObservableRef.Readable<
|
|
173
|
+
readonly sourceA: ObservableRef.Readable<A>,
|
|
174
|
+
readonly sourceB: ObservableRef.Readable<B>,
|
|
150
175
|
readonly f: (a: A, b: B) => C,
|
|
151
176
|
) {}
|
|
152
177
|
|
|
153
|
-
|
|
178
|
+
unsafeGet(): C {
|
|
179
|
+
return this.f(this.sourceA.unsafeGet(), this.sourceB.unsafeGet());
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
get: UIO<C> = this.sourceA.get.zipWith(this.sourceB.get, this.f);
|
|
154
183
|
|
|
155
|
-
|
|
184
|
+
unsafeClear() {
|
|
185
|
+
this.sourceA.unsafeClear();
|
|
186
|
+
this.sourceB.unsafeClear();
|
|
187
|
+
}
|
|
156
188
|
|
|
157
|
-
|
|
189
|
+
clear: UIO<void> = this.sourceA.clear > this.sourceB.clear;
|
|
158
190
|
|
|
159
|
-
observable: Observable<
|
|
191
|
+
observable: Observable<never, never, C> = this.sourceA.observable.zipWithLatest(this.sourceB.observable, this.f);
|
|
160
192
|
}
|
|
161
193
|
|
|
162
194
|
/**
|
|
163
195
|
* @tsplus pipeable fncts.observable.ObservableRef.Readable zipWith
|
|
164
196
|
*/
|
|
165
|
-
export function zipWith<
|
|
166
|
-
return (self: ObservableRef.Readable<
|
|
197
|
+
export function zipWith<A, B, C>(that: ObservableRef.Readable<B>, f: (a: A, b: B) => C) {
|
|
198
|
+
return (self: ObservableRef.Readable<A>): ObservableRef.Readable<C> => {
|
|
167
199
|
return new ZipWith(self, that, f);
|
|
168
200
|
};
|
|
169
201
|
}
|
|
@@ -1,85 +1,21 @@
|
|
|
1
|
-
import type { ObservableRefDescriptor } from "@fncts/observable/ObservableRef/definition";
|
|
2
|
-
|
|
3
1
|
import { BehaviorSubject } from "@fncts/observable/BehaviorSubject";
|
|
4
2
|
|
|
5
|
-
export class Atomic<A> extends ObservableRef<
|
|
6
|
-
|
|
3
|
+
export class Atomic<A> extends ObservableRef<A, A> {
|
|
4
|
+
subject = new BehaviorSubject<A>(this.descriptor.initial);
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
return
|
|
6
|
+
unsafeGet() {
|
|
7
|
+
return this.subject.value;
|
|
10
8
|
}
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
delete: URIO<Store, boolean> = IO.serviceWithIO((reactor) => reactor.delete(this.descriptor), Store.Tag);
|
|
15
|
-
|
|
16
|
-
observable: Observable<Store, never, A> = Observable.serviceWithObservable(
|
|
17
|
-
(reactor) =>
|
|
18
|
-
new Observable((subscriber) => {
|
|
19
|
-
return reactor.unsafeSubscribe(this.descriptor, subscriber);
|
|
20
|
-
}),
|
|
21
|
-
Store.Tag,
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @tsplus type fncts.observable.Store
|
|
27
|
-
* @tsplus companion fncts.observable.StoreOps
|
|
28
|
-
*/
|
|
29
|
-
export class Store {
|
|
30
|
-
subjectMap = new Map<symbol, BehaviorSubject<any>>();
|
|
31
|
-
get<A>(ref: ObservableRefDescriptor<A>): UIO<A> {
|
|
32
|
-
return IO(() => {
|
|
33
|
-
if (this.subjectMap.has(ref.id)) {
|
|
34
|
-
return this.subjectMap.get(ref.id)!.value;
|
|
35
|
-
} else {
|
|
36
|
-
this.subjectMap.set(ref.id, new BehaviorSubject(ref.initial));
|
|
37
|
-
return ref.initial;
|
|
38
|
-
}
|
|
39
|
-
});
|
|
10
|
+
unsafeSet(a: A): void {
|
|
11
|
+
this.subject.next(a);
|
|
40
12
|
}
|
|
41
13
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (this.subjectMap.has(ref.id)) {
|
|
45
|
-
this.subjectMap.get(ref.id)!.next(value);
|
|
46
|
-
} else {
|
|
47
|
-
this.subjectMap.set(ref.id, new BehaviorSubject(value));
|
|
48
|
-
}
|
|
49
|
-
return value;
|
|
50
|
-
});
|
|
14
|
+
unsafeClear(): void {
|
|
15
|
+
this.subject.next(this.descriptor.initial);
|
|
51
16
|
}
|
|
52
17
|
|
|
53
|
-
|
|
54
|
-
return
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
delete<A>(ref: ObservableRefDescriptor<A>): UIO<boolean> {
|
|
58
|
-
return IO(() => {
|
|
59
|
-
if (this.subjectMap.has(ref.id)) {
|
|
60
|
-
this.subjectMap.delete(ref.id);
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
return false;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
unsafeSubscribe<A>(ref: ObservableRefDescriptor<A>, subscriber: Subscriber<never, A>): Subscription {
|
|
68
|
-
if (this.subjectMap.has(ref.id)) {
|
|
69
|
-
const subject = this.subjectMap.get(ref.id)!;
|
|
70
|
-
const subscription = subject.subscribe(subscriber);
|
|
71
|
-
return subscription;
|
|
72
|
-
} else {
|
|
73
|
-
const subject = new BehaviorSubject<A>(ref.initial);
|
|
74
|
-
const subscription = subject.subscribe(subscriber);
|
|
75
|
-
this.subjectMap.set(ref.id, subject);
|
|
76
|
-
return subscription;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
18
|
+
observable: Observable<never, never, A> = new Observable((subscriber) => {
|
|
19
|
+
return this.subject.subscribe(subscriber);
|
|
20
|
+
});
|
|
79
21
|
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @tsplus static fncts.observable.StoreOps Tag
|
|
83
|
-
* @tsplus implicit
|
|
84
|
-
*/
|
|
85
|
-
export const StoreTag = Tag<Store>("fncts.observable.ObservableRef.StoreTag");
|