@typed/fx 2.0.0-beta.2 → 2.0.0-beta.4
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/Fx/Fx.d.ts +2 -2
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +5 -5
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +4 -4
- package/dist/Fx/combinators/provide.d.ts +9 -9
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +5 -5
- package/dist/Fx/combinators/scan.js +2 -2
- package/dist/Fx/combinators/switchMap.js +4 -4
- package/dist/Fx/combinators/unwrap.d.ts +1 -1
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +2 -2
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +4 -4
- package/dist/Push/Push.d.ts +6 -6
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +3 -3
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +3 -6
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +3 -2
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +1 -1
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +3 -4
- package/dist/RefSubject/RefHashMap.js +2 -2
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +4 -7
- package/dist/RefSubject/RefSubject.d.ts +3 -3
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +8 -8
- package/dist/Sink/Sink.d.ts +4 -4
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +4 -4
- package/dist/Sink/combinators.js +1 -1
- package/dist/Subject/Subject.d.ts +3 -3
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +3 -3
- package/dist/Versioned/Versioned.d.ts +2 -2
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +4 -4
- package/package.json +13 -13
- package/src/Fx/Fx.ts +6 -6
- package/src/Fx/combinators/catch.ts +20 -25
- package/src/Fx/combinators/keyed.ts +4 -4
- package/src/Fx/combinators/provide.ts +15 -15
- package/src/Fx/combinators/scan.ts +2 -2
- package/src/Fx/combinators/switchMap.ts +4 -4
- package/src/Fx/combinators/unwrap.ts +1 -1
- package/src/Fx/constructors/make.ts +2 -2
- package/src/Fx/run/observe.ts +5 -5
- package/src/Fx.provide-combinators.test.ts +2 -2
- package/src/Push/Push.ts +34 -13
- package/src/RefSubject/RefArray.ts +8 -7
- package/src/RefSubject/RefChunk.ts +7 -2
- package/src/RefSubject/RefDateTime.test.ts +3 -3
- package/src/RefSubject/RefDateTime.ts +2 -5
- package/src/RefSubject/RefGraph.ts +3 -4
- package/src/RefSubject/RefHashMap.ts +2 -2
- package/src/RefSubject/RefRecord.ts +8 -6
- package/src/RefSubject/RefSubject.ts +12 -14
- package/src/Sink/Sink.ts +7 -7
- package/src/Sink/combinators.ts +1 -1
- package/src/Subject/Subject.ts +8 -9
- package/src/Versioned/Versioned.ts +6 -8
package/src/Subject/Subject.ts
CHANGED
|
@@ -8,7 +8,7 @@ import * as MutableRef from "effect/MutableRef";
|
|
|
8
8
|
import * as Option from "effect/Option";
|
|
9
9
|
import { pipeArguments } from "effect/Pipeable";
|
|
10
10
|
import * as Scope from "effect/Scope";
|
|
11
|
-
import * as
|
|
11
|
+
import * as Context from "effect/Context";
|
|
12
12
|
import type * as Fx from "../Fx/index.js";
|
|
13
13
|
import { RingBuffer } from "../Fx/internal/ring-buffer.js";
|
|
14
14
|
import { awaitScopeClose, withExtendedScope } from "../Fx/internal/scope.js";
|
|
@@ -37,7 +37,7 @@ export interface Subject<A, E = never, R = never>
|
|
|
37
37
|
export declare namespace Subject {
|
|
38
38
|
export interface Service<Self, Id extends string, A, E> extends Subject<A, E, Self> {
|
|
39
39
|
readonly id: Id;
|
|
40
|
-
readonly service:
|
|
40
|
+
readonly service: Context.Service<Self, Subject<A, E>>;
|
|
41
41
|
readonly make: (replay?: number) => Layer.Layer<Self, never, Scope.Scope>;
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -191,9 +191,8 @@ const DISCARD = { discard: true } as const;
|
|
|
191
191
|
*/
|
|
192
192
|
export class SubjectImpl<A, E> implements Subject<A, E> {
|
|
193
193
|
readonly [FxTypeId]: Fx.Fx.Variance<A, E, Scope.Scope> = VARIANCE;
|
|
194
|
-
protected sinks: Set<
|
|
195
|
-
|
|
196
|
-
> = new Set();
|
|
194
|
+
protected sinks: Set<readonly [Sink.Sink<A, E, any>, Context.Context<any>, Scope.Closeable]> =
|
|
195
|
+
new Set();
|
|
197
196
|
|
|
198
197
|
constructor() {
|
|
199
198
|
this.onFailure = this.onFailure.bind(this);
|
|
@@ -232,7 +231,7 @@ export class SubjectImpl<A, E> implements Subject<A, E> {
|
|
|
232
231
|
): Effect.Effect<B, never, R2 | Scope.Scope> {
|
|
233
232
|
return withExtendedScope(
|
|
234
233
|
(innerScope) =>
|
|
235
|
-
Effect.
|
|
234
|
+
Effect.contextWith((ctx) => {
|
|
236
235
|
const entry = [sink, ctx, innerScope] as const;
|
|
237
236
|
this.sinks.add(entry);
|
|
238
237
|
const remove = Effect.sync(() => this.sinks.delete(entry));
|
|
@@ -272,7 +271,7 @@ export class SubjectImpl<A, E> implements Subject<A, E> {
|
|
|
272
271
|
|
|
273
272
|
function runSinkEvent<A, E>(
|
|
274
273
|
sink: Sink.Sink<A, E, any>,
|
|
275
|
-
ctx:
|
|
274
|
+
ctx: Context.Context<any>,
|
|
276
275
|
a: A,
|
|
277
276
|
): Effect.Effect<void, never, never> {
|
|
278
277
|
return Effect.provide(Effect.catchCause(sink.onSuccess(a), sink.onFailure), ctx);
|
|
@@ -280,7 +279,7 @@ function runSinkEvent<A, E>(
|
|
|
280
279
|
|
|
281
280
|
function runSinkCause<A, E>(
|
|
282
281
|
sink: Sink.Sink<A, E, any>,
|
|
283
|
-
ctx:
|
|
282
|
+
ctx: Context.Context<any>,
|
|
284
283
|
scope: Scope.Closeable,
|
|
285
284
|
cause: Cause.Cause<E>,
|
|
286
285
|
): Effect.Effect<void, never, never> {
|
|
@@ -398,7 +397,7 @@ export function make<A, E = never>(
|
|
|
398
397
|
|
|
399
398
|
export function Service<Self, A, E = never>() {
|
|
400
399
|
return <const Id extends string>(id: Id): Subject.Class<Self, Id, A, E> => {
|
|
401
|
-
const service =
|
|
400
|
+
const service = Context.Service<Self, Subject<A, E>>(id);
|
|
402
401
|
|
|
403
402
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
404
403
|
return class SubjectService {
|
|
@@ -16,14 +16,14 @@ import { sum } from "effect/Number";
|
|
|
16
16
|
import * as Option from "effect/Option";
|
|
17
17
|
import { pipeArguments } from "effect/Pipeable";
|
|
18
18
|
import type * as Scope from "effect/Scope";
|
|
19
|
-
import * as
|
|
19
|
+
import * as Context from "effect/Context";
|
|
20
20
|
import { filterMap as fxFilterMap } from "../Fx/combinators/filterMap.js";
|
|
21
21
|
import { filterMapEffect as fxFilterMapEffect } from "../Fx/combinators/filterMapEffect.js";
|
|
22
22
|
import { map as fxMap } from "../Fx/combinators/map.js";
|
|
23
23
|
import { mapEffect as fxMapEffect } from "../Fx/combinators/mapEffect.js";
|
|
24
24
|
import {
|
|
25
25
|
provide as fxProvide,
|
|
26
|
-
|
|
26
|
+
provideContext as fxprovideContext,
|
|
27
27
|
} from "../Fx/combinators/provide.js";
|
|
28
28
|
import { struct as fxStruct, tuple as fxTuple } from "../Fx/combinators/tuple.js";
|
|
29
29
|
import { succeed as fxSucceed } from "../Fx/constructors/succeed.js";
|
|
@@ -92,7 +92,7 @@ export namespace Versioned {
|
|
|
92
92
|
Self
|
|
93
93
|
> {
|
|
94
94
|
readonly id: Id;
|
|
95
|
-
readonly service:
|
|
95
|
+
readonly service: Context.Service<Self, Versioned<never, E1, A2, E2, never, A3, E3, never>>;
|
|
96
96
|
readonly make: <R1 = never, R2 = never, R3 = never>(
|
|
97
97
|
version: Effect.Effect<number, E1, R1>,
|
|
98
98
|
fx: Fx.Fx<A2, E2, R2>,
|
|
@@ -545,9 +545,7 @@ const VARIANCE = {
|
|
|
545
545
|
|
|
546
546
|
export function Service<Self, E1 = never, A2 = never, E2 = never, A3 = never, E3 = never>() {
|
|
547
547
|
return <const Id extends string>(id: Id): Versioned.Class<Self, Id, E1, A2, E2, A3, E3> => {
|
|
548
|
-
const service =
|
|
549
|
-
id,
|
|
550
|
-
);
|
|
548
|
+
const service = Context.Service<Self, Versioned<never, E1, A2, E2, never, A3, E3, never>>(id);
|
|
551
549
|
|
|
552
550
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
553
551
|
return class VersionedService {
|
|
@@ -561,11 +559,11 @@ export function Service<Self, E1 = never, A2 = never, E2 = never, A3 = never, E3
|
|
|
561
559
|
): Layer.Layer<Self, never, Exclude<R1 | R2 | R3, Scope.Scope>> =>
|
|
562
560
|
Layer.effect(
|
|
563
561
|
service,
|
|
564
|
-
Effect.
|
|
562
|
+
Effect.context<R1 | R2 | R3>().pipe(
|
|
565
563
|
Effect.map((context) =>
|
|
566
564
|
make(
|
|
567
565
|
Effect.provide(version, context),
|
|
568
|
-
|
|
566
|
+
fxprovideContext(fx, context),
|
|
569
567
|
Effect.provide(effect.asEffect(), context),
|
|
570
568
|
),
|
|
571
569
|
),
|