@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.
@@ -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, /** @fncts id */id) {
12
- if (id === undefined) {
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 + ":58:41"), fileName_1 + ":58:27")(self.set(a));
53
- }, fileName_1 + ":56:28")(self.get);
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:40")(this.source.get);
62
- this.has = this.source.has;
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.has = this.source.has;
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 + ":122:40")(this.source.get);
106
- this.has = this.source.has;
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 + ":125:35")(this.source.get);
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 + ":153:50")(this.sourceA.get);
128
- this.has = tsplus_module_1.zipWith(this.sourceB.has, (a, b) => a && b, fileName_1 + ":155:56")(this.sourceA.has);
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","id","undefined","Error","Symbol","for","update","f","self","a","getAndUpdate","value","updateAndGet","tsplus_module_1","flatMap","b","zipRight","succeedNow","fileName_1","set","get","Map","constructor","source","descriptor","map","has","delete","observable","tsplus_module_2","map_","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
+ {"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/io/IO/api/environment";
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.get = tsplus_module_2.serviceWithIO(reactor => reactor.get(this.descriptor), StoreTag_1, fileName_1 + ":6:41");
13
- this.has = tsplus_module_2.serviceWithIO(reactor => reactor.has(this.descriptor), StoreTag_1, fileName_1 + ":12:47");
14
- this.delete = tsplus_module_2.serviceWithIO(reactor => reactor.delete(this.descriptor), StoreTag_1, fileName_1 + ":14:50");
15
- this.observable = tsplus_module_4.serviceWithObservable(reactor => new tsplus_module_3.Observable(subscriber => {
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
- set(a) {
20
- return tsplus_module_2.serviceWithIO(reactor => reactor.set(this.descriptor, a), StoreTag_1, fileName_1 + ":9:28");
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
- unsafeSubscribe(ref, subscriber) {
64
- if (this.subjectMap.has(ref.id)) {
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","get","tsplus_module_2","serviceWithIO","reactor","descriptor","StoreTag_1","fileName_1","has","delete","observable","tsplus_module_4","serviceWithObservable","tsplus_module_3","Observable","subscriber","unsafeSubscribe","set","a","Store","subjectMap","Map","ref","tsplus_module_5","succeed","id","value","initial","next","subject","subscription","subscribe","tsplus_module_6","makeTag","StoreTag"],"sources":["../../_src/ObservableRef/atomic.ts"],"sourcesContent":[null],"mappings":"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"}
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(id, initial) {
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","id","initial","ObservableRef","descriptor"],"sources":["../../_src/ObservableRef/definition.ts"],"sourcesContent":[null],"mappings":"AAWA,OAAM,MAAOA,uBAAuB;EAClCC,YAAqBC,EAAU,EAAWC,OAAU;IAA/B,KAAAD,EAAE,GAAFA,EAAE;IAAmB,KAAAC,OAAO,GAAPA,OAAO;EAAM;;AA4BzD;;;;AAIA,OAAM,MAAgBC,aAAa;EAKjCH,YAAqBI,UAAwC;IAAxC,KAAAA,UAAU,GAAVA,UAAU;EAAiC"}
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,5 @@
1
+ // codegen:start { preset: barrel, include: ./ObservableRef/*.ts }
2
+ export * from "./ObservableRef/api.mjs";
3
+ export * from "./ObservableRef/atomic.mjs";
4
+ export * from "./ObservableRef/definition.mjs";
5
+ //# sourceMappingURL=ObservableRef.mjs.map
@@ -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 { URIO } from "@fncts/io/IO";
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, /** @fncts id */ id?: string): ObservableRef<Store, A, A> {
14
- if (id === undefined) {
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<R, A>(f: (a: A) => A) {
24
- return (self: ObservableRef<R, A, A>): URIO<R, void> => self.modify((a) => [undefined, f(a)]);
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<R, A>(f: (a: A) => A) {
31
- return (self: ObservableRef<R, A, A>): URIO<R, A> => {
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<R, A>(f: (a: A) => A) {
43
- return (self: ObservableRef<R, A, A>): URIO<R, A> => {
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<R, A, B>(f: (a: A) => readonly [B, A]) {
55
- return (self: ObservableRef<R, A, A>): URIO<R, B> => {
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<R, A, B, C> extends ObservableRef<R, A, C> {
64
- constructor(readonly source: ObservableRef<R, A, B>, readonly f: (b: B) => C) {
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
- get: URIO<R, C> = this.source.get.map(this.f);
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): URIO<R, void> {
74
+ set(a: A): UIO<void> {
71
75
  return this.source.set(a);
72
76
  }
73
77
 
74
- has: URIO<R, boolean> = this.source.has;
78
+ unsafeClear(): void {
79
+ this.source.unsafeClear();
80
+ }
75
81
 
76
- delete: URIO<R, boolean> = this.source.delete;
82
+ clear: UIO<void> = this.source.clear;
77
83
 
78
- observable: Observable<R, never, C> = this.source.observable.map(this.f);
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<R, A, B, C>(f: (a: B) => C) {
85
- return (self: ObservableRef<R, A, B>): ObservableRef<R, A, C> => {
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<R, A, B, C> extends ObservableRef<R, C, B> {
91
- constructor(readonly source: ObservableRef<R, A, B>, readonly f: (c: C) => A) {
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
- get: URIO<R, B> = this.source.get;
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): URIO<R, void> {
111
+ set(c: C): UIO<void> {
98
112
  return this.source.set(this.f(c));
99
113
  }
100
114
 
101
- has: URIO<R, boolean> = this.source.has;
115
+ unsafeClear(): void {
116
+ this.source.unsafeClear();
117
+ }
102
118
 
103
- delete: URIO<R, boolean> = this.source.delete;
119
+ clear: UIO<void> = this.source.clear;
104
120
 
105
- observable: Observable<R, never, B> = this.source.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<R, A, B, C>(f: (inp: C) => A) {
112
- return (self: ObservableRef<R, A, B>): ObservableRef<R, C, B> => {
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<R, A, B> extends ObservableRef<R, B, B> {
118
- constructor(readonly source: ObservableRef<R, A, A>, readonly lens: Lens<A, B>) {
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
- get: URIO<R, B> = this.source.get.map(this.lens.get);
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): URIO<R, void> {
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
- has: URIO<R, boolean> = this.source.has;
152
+ unsafeClear(): void {
153
+ this.source.unsafeClear();
154
+ }
129
155
 
130
- delete: URIO<R, boolean> = this.source.delete;
156
+ clear: UIO<void> = this.source.clear;
131
157
 
132
- observable: Observable<R, never, B> = this.source.observable.map(this.lens.get);
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<R, A, B>(lens: Lens<A, B>) {
139
- return (self: ObservableRef<R, A, A>): ObservableRef<R, B, B> => {
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<R, A, R1, B, C> implements ObservableRef.Readable<R | R1, C> {
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<R, A>,
149
- readonly sourceB: ObservableRef.Readable<R1, B>,
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
- get: URIO<R | R1, C> = this.sourceA.get.zipWith(this.sourceB.get, this.f);
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
- has: URIO<R | R1, boolean> = this.sourceA.has.zipWith(this.sourceB.has, (a, b) => a && b);
184
+ unsafeClear() {
185
+ this.sourceA.unsafeClear();
186
+ this.sourceB.unsafeClear();
187
+ }
156
188
 
157
- delete: URIO<R | R1, void> = this.sourceA.delete > this.sourceB.delete;
189
+ clear: UIO<void> = this.sourceA.clear > this.sourceB.clear;
158
190
 
159
- observable: Observable<R | R1, never, C> = this.sourceA.observable.zipWithLatest(this.sourceB.observable, this.f);
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<R, A, R1, B, C>(that: ObservableRef.Readable<R1, B>, f: (a: A, b: B) => C) {
166
- return (self: ObservableRef.Readable<R, A>): ObservableRef.Readable<R | R1, C> => {
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<Store, A, A> {
6
- get: URIO<Store, A> = IO.serviceWithIO((reactor) => reactor.get(this.descriptor), Store.Tag);
3
+ export class Atomic<A> extends ObservableRef<A, A> {
4
+ subject = new BehaviorSubject<A>(this.descriptor.initial);
7
5
 
8
- set(a: A): URIO<Store, void> {
9
- return IO.serviceWithIO((reactor) => reactor.set(this.descriptor, a), Store.Tag);
6
+ unsafeGet() {
7
+ return this.subject.value;
10
8
  }
11
9
 
12
- has: URIO<Store, boolean> = IO.serviceWithIO((reactor) => reactor.has(this.descriptor), Store.Tag);
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
- set<A>(ref: ObservableRefDescriptor<A>, value: A): UIO<A> {
43
- return IO(() => {
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
- has<A>(ref: ObservableRefDescriptor<A>): UIO<boolean> {
54
- return IO(() => this.subjectMap.has(ref.id));
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");