@typed/fx 1.2.0 → 1.3.0
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 +3 -4
- package/dist/Subject/HoldSubject.d.ts.map +1 -1
- package/dist/Subject/HoldSubject.js +3 -3
- package/dist/Subject/HoldSubject.js.map +1 -1
- package/dist/Subject/RefSubject.d.ts +18 -2
- package/dist/Subject/RefSubject.d.ts.map +1 -1
- package/dist/Subject/RefSubject.js +98 -19
- package/dist/Subject/RefSubject.js.map +1 -1
- package/dist/Subject/Subject.js +1 -1
- package/dist/Subject/Subject.js.map +1 -1
- package/dist/Subject/SynchronizedSubject.d.ts.map +1 -1
- package/dist/Subject/SynchronizedSubject.js +7 -5
- package/dist/Subject/SynchronizedSubject.js.map +1 -1
- package/dist/_internal/RefCounter.js +1 -1
- package/dist/_internal/RefCounter.js.map +1 -1
- package/dist/cjs/Subject/HoldSubject.d.ts +3 -4
- package/dist/cjs/Subject/HoldSubject.d.ts.map +1 -1
- package/dist/cjs/Subject/HoldSubject.js +3 -3
- package/dist/cjs/Subject/HoldSubject.js.map +1 -1
- package/dist/cjs/Subject/RefSubject.d.ts +18 -2
- package/dist/cjs/Subject/RefSubject.d.ts.map +1 -1
- package/dist/cjs/Subject/RefSubject.js +98 -19
- 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 +6 -4
- package/dist/cjs/Subject/SynchronizedSubject.js.map +1 -1
- package/dist/cjs/_internal/RefCounter.js +1 -1
- package/dist/cjs/_internal/RefCounter.js.map +1 -1
- package/dist/cjs/constructor/index.d.ts +0 -4
- package/dist/cjs/constructor/index.d.ts.map +1 -1
- package/dist/cjs/constructor/index.js +0 -4
- package/dist/cjs/constructor/index.js.map +1 -1
- package/dist/cjs/constructor/promiseFx.d.ts +0 -2
- package/dist/cjs/constructor/promiseFx.d.ts.map +1 -1
- package/dist/cjs/constructor/promiseFx.js +1 -5
- package/dist/cjs/constructor/promiseFx.js.map +1 -1
- package/dist/cjs/operator/catchAllDefect.d.ts.map +1 -1
- package/dist/cjs/operator/catchAllDefect.js +2 -1
- package/dist/cjs/operator/catchAllDefect.js.map +1 -1
- package/dist/cjs/operator/continueWith.js +1 -1
- package/dist/cjs/operator/continueWith.js.map +1 -1
- package/dist/cjs/operator/debounce.js +1 -1
- package/dist/cjs/operator/debounce.js.map +1 -1
- package/dist/cjs/operator/during.js +1 -1
- package/dist/cjs/operator/during.js.map +1 -1
- package/dist/cjs/operator/hold.d.ts.map +1 -1
- package/dist/cjs/operator/hold.js +8 -8
- package/dist/cjs/operator/hold.js.map +1 -1
- package/dist/cjs/operator/loop.js +1 -1
- package/dist/cjs/operator/loop.js.map +1 -1
- package/dist/cjs/operator/multicast.js +3 -3
- package/dist/cjs/operator/multicast.js.map +1 -1
- package/dist/cjs/operator/skipRepeats.js +2 -2
- package/dist/cjs/operator/skipRepeats.js.map +1 -1
- package/dist/cjs/operator/switchMatch.js +1 -1
- package/dist/cjs/operator/switchMatch.js.map +1 -1
- package/dist/cjs/operator/tapDefect.d.ts.map +1 -1
- package/dist/cjs/operator/tapDefect.js +2 -1
- package/dist/cjs/operator/tapDefect.js.map +1 -1
- package/dist/cjs/run/collectAll.js +1 -1
- package/dist/cjs/run/collectAll.js.map +1 -1
- package/dist/cjs/run/collectN.js +1 -1
- package/dist/cjs/run/collectN.js.map +1 -1
- package/dist/cjs/run/reduce.js +1 -1
- package/dist/cjs/run/reduce.js.map +1 -1
- package/dist/constructor/done.js +1 -1
- package/dist/constructor/done.js.map +1 -1
- package/dist/constructor/empty.js +1 -1
- package/dist/constructor/empty.js.map +1 -1
- package/dist/constructor/fromArray.js +1 -1
- package/dist/constructor/fromArray.js.map +1 -1
- package/dist/constructor/fromEffect.js +1 -1
- package/dist/constructor/fromEffect.js.map +1 -1
- package/dist/constructor/fromIterable.js +1 -1
- package/dist/constructor/fromIterable.js.map +1 -1
- package/dist/constructor/index.d.ts +0 -4
- package/dist/constructor/index.d.ts.map +1 -1
- package/dist/constructor/index.js +0 -4
- package/dist/constructor/index.js.map +1 -1
- package/dist/constructor/never.js +1 -1
- package/dist/constructor/never.js.map +1 -1
- package/dist/constructor/promiseFx.d.ts +0 -2
- package/dist/constructor/promiseFx.d.ts.map +1 -1
- package/dist/constructor/promiseFx.js +0 -2
- package/dist/constructor/promiseFx.js.map +1 -1
- package/dist/operator/catchAllDefect.d.ts.map +1 -1
- package/dist/operator/catchAllDefect.js +2 -1
- package/dist/operator/catchAllDefect.js.map +1 -1
- package/dist/operator/continueWith.js +2 -2
- package/dist/operator/continueWith.js.map +1 -1
- package/dist/operator/debounce.js +1 -1
- package/dist/operator/debounce.js.map +1 -1
- package/dist/operator/during.js +1 -1
- package/dist/operator/during.js.map +1 -1
- package/dist/operator/hold.d.ts.map +1 -1
- package/dist/operator/hold.js +8 -8
- package/dist/operator/hold.js.map +1 -1
- package/dist/operator/loop.js +1 -1
- package/dist/operator/loop.js.map +1 -1
- package/dist/operator/multicast.js +3 -3
- package/dist/operator/multicast.js.map +1 -1
- package/dist/operator/scanEffect.js +1 -1
- package/dist/operator/scanEffect.js.map +1 -1
- package/dist/operator/skipRepeats.js +2 -2
- package/dist/operator/skipRepeats.js.map +1 -1
- package/dist/operator/switchMatch.js +1 -1
- package/dist/operator/switchMatch.js.map +1 -1
- package/dist/operator/tapDefect.d.ts.map +1 -1
- package/dist/operator/tapDefect.js +2 -1
- package/dist/operator/tapDefect.js.map +1 -1
- package/dist/run/collectAll.js +1 -1
- package/dist/run/collectAll.js.map +1 -1
- package/dist/run/collectN.js +1 -1
- package/dist/run/collectN.js.map +1 -1
- package/dist/run/reduce.js +1 -1
- package/dist/run/reduce.js.map +1 -1
- package/dist/run/run.js +1 -1
- package/dist/run/run.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/Subject/HoldSubject.ts +4 -4
- package/src/Subject/RefSubject.ts +9 -11
- package/src/Subject/SynchronizedSubject.ts +4 -4
- package/src/_internal/RefCounter.ts +1 -1
- package/src/constructor/index.ts +0 -4
- package/src/constructor/promiseFx.ts +0 -22
- package/src/operator/catchAllDefect.ts +2 -1
- package/src/operator/continueWith.ts +2 -2
- package/src/operator/debounce.ts +1 -1
- package/src/operator/during.ts +1 -1
- package/src/operator/hold.ts +9 -8
- package/src/operator/loop.ts +1 -1
- package/src/operator/multicast.ts +3 -3
- package/src/operator/skipRepeats.ts +2 -2
- package/src/operator/switchMatch.ts +1 -1
- package/src/operator/tapDefect.ts +2 -1
- package/src/run/collectAll.ts +1 -1
- package/src/run/collectN.ts +1 -1
- package/src/run/reduce.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.cjs.build.json +2 -2
- 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/src/constructor/tryCatchPromise.ts +0 -11
- package/src/constructor/tryCatchPromiseAbort.ts +0 -11
- package/src/constructor/tryPromise.ts +0 -11
- package/src/constructor/tryPromiseAbort.ts +0 -10
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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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { flow } from '@effect/data/Function'
|
|
2
|
-
import * as Effect from '@effect/io/Effect'
|
|
3
|
-
|
|
4
|
-
import type { Fx } from '../Fx.js'
|
|
5
|
-
|
|
6
|
-
import { fromEffect } from './fromEffect.js'
|
|
7
|
-
|
|
8
|
-
export const tryCatchPromise: <E, A>(
|
|
9
|
-
evaluate: () => Promise<A>,
|
|
10
|
-
onReject: (reason: unknown) => E,
|
|
11
|
-
) => Fx<never, E, A> = flow(Effect.tryCatchPromise, fromEffect)
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { flow } from '@effect/data/Function'
|
|
2
|
-
import * as Effect from '@effect/io/Effect'
|
|
3
|
-
|
|
4
|
-
import type { Fx } from '../Fx.js'
|
|
5
|
-
|
|
6
|
-
import { fromEffect } from './fromEffect.js'
|
|
7
|
-
|
|
8
|
-
export const tryCatchPromiseInterrupt: <E, A>(
|
|
9
|
-
evaluate: (signal: AbortSignal) => Promise<A>,
|
|
10
|
-
onReject: (reason: unknown) => E,
|
|
11
|
-
) => Fx<never, E, A> = flow(Effect.tryCatchPromiseInterrupt, fromEffect)
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { flow } from '@effect/data/Function'
|
|
2
|
-
import * as Effect from '@effect/io/Effect'
|
|
3
|
-
|
|
4
|
-
import type { Fx } from '../Fx.js'
|
|
5
|
-
|
|
6
|
-
import { fromEffect } from './fromEffect.js'
|
|
7
|
-
|
|
8
|
-
export const tryPromise: <A>(evaluate: () => Promise<A>) => Fx<never, unknown, A> = flow(
|
|
9
|
-
Effect.tryPromise,
|
|
10
|
-
fromEffect,
|
|
11
|
-
)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { flow } from '@effect/data/Function'
|
|
2
|
-
import * as Effect from '@effect/io/Effect'
|
|
3
|
-
|
|
4
|
-
import type { Fx } from '../Fx.js'
|
|
5
|
-
|
|
6
|
-
import { fromEffect } from './fromEffect.js'
|
|
7
|
-
|
|
8
|
-
export const tryPromiseInterrupt: <A>(
|
|
9
|
-
evaluate: (signal: AbortSignal) => Promise<A>,
|
|
10
|
-
) => Fx<never, unknown, A> = flow(Effect.tryPromiseInterrupt, fromEffect)
|