@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
package/dist/Subject/Computed.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import * as MutableRef from '@effect/data/MutableRef';
|
|
2
|
-
import { dual, flow } from '@effect/data/function';
|
|
3
|
-
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import { Fx, Sink } from '../Fx.js';
|
|
5
|
-
import { flatMapEffect } from '../operator/flatMapEffect.js';
|
|
6
|
-
import { MulticastFx } from '../operator/multicast.js';
|
|
7
|
-
import { observeSync } from '../run/observe.js';
|
|
8
|
-
export const makeComputed = dual(2, makeComputed_);
|
|
9
|
-
function makeComputed_(input, compute) {
|
|
10
|
-
return Effect.gen(function* ($) {
|
|
11
|
-
const current = MutableRef.make(yield* $(Effect.exit(compute(yield* $(input.get)))));
|
|
12
|
-
const dirty = MutableRef.make(false);
|
|
13
|
-
const computed = new ComputedImpl(input, flow(compute, Effect.provideContext(yield* $(Effect.context()))), current, dirty);
|
|
14
|
-
// When the underlying subject changes, mark the computed value as dirty
|
|
15
|
-
yield* $(Effect.forkScoped(observeSync(() => {
|
|
16
|
-
// Only mark the value as dirty if there are no observers which will
|
|
17
|
-
// automatically trigger a recomputation
|
|
18
|
-
if (computed.fx.observers.length === 0) {
|
|
19
|
-
dirty.set(true);
|
|
20
|
-
}
|
|
21
|
-
})(input)));
|
|
22
|
-
return computed;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
class ComputedImpl extends Fx.Variance {
|
|
26
|
-
constructor(input, compute, current, dirty) {
|
|
27
|
-
super();
|
|
28
|
-
this.input = input;
|
|
29
|
-
this.compute = compute;
|
|
30
|
-
this.current = current;
|
|
31
|
-
this.dirty = dirty;
|
|
32
|
-
this.get = Effect.suspendSucceed(() => {
|
|
33
|
-
const { current, dirty } = this;
|
|
34
|
-
if (dirty.get()) {
|
|
35
|
-
return Effect.flatMap(this.input.get, (a) => this.update(a));
|
|
36
|
-
}
|
|
37
|
-
return Effect.done(current.get());
|
|
38
|
-
});
|
|
39
|
-
this.fx = new MulticastFx(flatMapEffect((a) => this.update(a))(this.input));
|
|
40
|
-
}
|
|
41
|
-
run(sink) {
|
|
42
|
-
return this.fx.run(sink);
|
|
43
|
-
}
|
|
44
|
-
update(a) {
|
|
45
|
-
const { compute, current, dirty } = this;
|
|
46
|
-
return Effect.gen(function* ($) {
|
|
47
|
-
const computed = yield* $(Effect.exit(compute(a)));
|
|
48
|
-
current.set(computed);
|
|
49
|
-
dirty.set(false);
|
|
50
|
-
return yield* $(Effect.done(computed));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=Computed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Computed.js","sourceRoot":"","sources":["../../src/Subject/Computed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as Effect from '@effect/io/Effect';
|
|
2
|
-
import type * as Scope from '@effect/io/Scope';
|
|
3
|
-
import { Fx } from '../Fx.js';
|
|
4
|
-
import type { RefSubject } from './RefSubject.js';
|
|
5
|
-
export interface Computed<E, A> extends Fx<never, E, A> {
|
|
6
|
-
readonly get: Effect.Effect<never, E, A>;
|
|
7
|
-
}
|
|
8
|
-
export declare const makeComputed: {
|
|
9
|
-
<A, R, E, B>(input: RefSubject<A>, compute: (a: A) => Effect.Effect<R, E, B>): Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
10
|
-
<A, R, E, B>(compute: (a: A) => Effect.Effect<R, E, B>): (input: RefSubject<A>) => Effect.Effect<R | Scope.Scope, never, Computed<E, B>>;
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=Computed.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Computed.d.ts","sourceRoot":"","sources":["../../../src/Subject/Computed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,EAAE,EAAQ,MAAM,UAAU,CAAA;AAKnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,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,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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.makeComputed = void 0;
|
|
27
|
-
const MutableRef = __importStar(require("@effect/data/MutableRef"));
|
|
28
|
-
const function_1 = require("@effect/data/function");
|
|
29
|
-
const Effect = __importStar(require("@effect/io/Effect"));
|
|
30
|
-
const Fx_js_1 = require("../Fx.js");
|
|
31
|
-
const flatMapEffect_js_1 = require("../operator/flatMapEffect.js");
|
|
32
|
-
const multicast_js_1 = require("../operator/multicast.js");
|
|
33
|
-
const observe_js_1 = require("../run/observe.js");
|
|
34
|
-
exports.makeComputed = (0, function_1.dual)(2, makeComputed_);
|
|
35
|
-
function makeComputed_(input, compute) {
|
|
36
|
-
return Effect.gen(function* ($) {
|
|
37
|
-
const current = MutableRef.make(yield* $(Effect.exit(compute(yield* $(input.get)))));
|
|
38
|
-
const dirty = MutableRef.make(false);
|
|
39
|
-
const computed = new ComputedImpl(input, (0, function_1.flow)(compute, Effect.provideContext(yield* $(Effect.context()))), current, dirty);
|
|
40
|
-
// When the underlying subject changes, mark the computed value as dirty
|
|
41
|
-
yield* $(Effect.forkScoped((0, observe_js_1.observeSync)(() => {
|
|
42
|
-
// Only mark the value as dirty if there are no observers which will
|
|
43
|
-
// automatically trigger a recomputation
|
|
44
|
-
if (computed.fx.observers.length === 0) {
|
|
45
|
-
dirty.set(true);
|
|
46
|
-
}
|
|
47
|
-
})(input)));
|
|
48
|
-
return computed;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
class ComputedImpl extends Fx_js_1.Fx.Variance {
|
|
52
|
-
constructor(input, compute, current, dirty) {
|
|
53
|
-
super();
|
|
54
|
-
this.input = input;
|
|
55
|
-
this.compute = compute;
|
|
56
|
-
this.current = current;
|
|
57
|
-
this.dirty = dirty;
|
|
58
|
-
this.get = Effect.suspendSucceed(() => {
|
|
59
|
-
const { current, dirty } = this;
|
|
60
|
-
if (dirty.get()) {
|
|
61
|
-
return Effect.flatMap(this.input.get, (a) => this.update(a));
|
|
62
|
-
}
|
|
63
|
-
return Effect.done(current.get());
|
|
64
|
-
});
|
|
65
|
-
this.fx = new multicast_js_1.MulticastFx((0, flatMapEffect_js_1.flatMapEffect)((a) => this.update(a))(this.input));
|
|
66
|
-
}
|
|
67
|
-
run(sink) {
|
|
68
|
-
return this.fx.run(sink);
|
|
69
|
-
}
|
|
70
|
-
update(a) {
|
|
71
|
-
const { compute, current, dirty } = this;
|
|
72
|
-
return Effect.gen(function* ($) {
|
|
73
|
-
const computed = yield* $(Effect.exit(compute(a)));
|
|
74
|
-
current.set(computed);
|
|
75
|
-
dirty.set(false);
|
|
76
|
-
return yield* $(Effect.done(computed));
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=Computed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Computed.js","sourceRoot":"","sources":["../../../src/Subject/Computed.ts"],"names":[],"mappings":"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"}
|