@typed/fx 1.20.1 → 1.20.2

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.
Files changed (103) hide show
  1. package/dist/cjs/Fx.js +5 -1
  2. package/dist/cjs/Fx.js.map +1 -1
  3. package/dist/cjs/Idle.js +8 -6
  4. package/dist/cjs/Idle.js.map +1 -1
  5. package/dist/cjs/Push.js.map +1 -1
  6. package/dist/cjs/RefHashMap.js.map +1 -1
  7. package/dist/cjs/RefSubject.js +6 -7
  8. package/dist/cjs/RefSubject.js.map +1 -1
  9. package/dist/cjs/Subject.js +3 -2
  10. package/dist/cjs/Subject.js.map +1 -1
  11. package/dist/cjs/Versioned.js.map +1 -1
  12. package/dist/cjs/internal/DeferredRef.js +1 -1
  13. package/dist/cjs/internal/DeferredRef.js.map +1 -1
  14. package/dist/cjs/internal/core.js +2 -1
  15. package/dist/cjs/internal/core.js.map +1 -1
  16. package/dist/cjs/internal/diff.js +28 -20
  17. package/dist/cjs/internal/diff.js.map +1 -1
  18. package/dist/cjs/internal/helpers.js +5 -1
  19. package/dist/cjs/internal/helpers.js.map +1 -1
  20. package/dist/cjs/internal/keyed.js +13 -14
  21. package/dist/cjs/internal/keyed.js.map +1 -1
  22. package/dist/cjs/internal/share.js +4 -1
  23. package/dist/cjs/internal/share.js.map +1 -1
  24. package/dist/dts/Emitter.d.ts +1 -1
  25. package/dist/dts/Emitter.d.ts.map +1 -1
  26. package/dist/dts/Form.d.ts +2 -2
  27. package/dist/dts/Form.d.ts.map +1 -1
  28. package/dist/dts/Fx.d.ts.map +1 -1
  29. package/dist/dts/Guard.d.ts +1 -1
  30. package/dist/dts/Guard.d.ts.map +1 -1
  31. package/dist/dts/Idle.d.ts.map +1 -1
  32. package/dist/dts/Match.d.ts +2 -2
  33. package/dist/dts/Match.d.ts.map +1 -1
  34. package/dist/dts/Pull.d.ts +1 -1
  35. package/dist/dts/Pull.d.ts.map +1 -1
  36. package/dist/dts/Push.d.ts +4 -1
  37. package/dist/dts/Push.d.ts.map +1 -1
  38. package/dist/dts/RefArray.d.ts +1 -1
  39. package/dist/dts/RefArray.d.ts.map +1 -1
  40. package/dist/dts/RefChunk.d.ts +1 -1
  41. package/dist/dts/RefChunk.d.ts.map +1 -1
  42. package/dist/dts/RefHashMap.d.ts +1 -1
  43. package/dist/dts/RefHashMap.d.ts.map +1 -1
  44. package/dist/dts/RefHashSet.d.ts +1 -1
  45. package/dist/dts/RefHashSet.d.ts.map +1 -1
  46. package/dist/dts/RefSubject.d.ts +1 -1
  47. package/dist/dts/RefSubject.d.ts.map +1 -1
  48. package/dist/dts/Subject.d.ts +1 -1
  49. package/dist/dts/Subject.d.ts.map +1 -1
  50. package/dist/dts/Versioned.d.ts +1 -1
  51. package/dist/dts/Versioned.d.ts.map +1 -1
  52. package/dist/dts/internal/core.d.ts.map +1 -1
  53. package/dist/dts/internal/diff.d.ts +20 -16
  54. package/dist/dts/internal/diff.d.ts.map +1 -1
  55. package/dist/dts/internal/helpers.d.ts +2 -1
  56. package/dist/dts/internal/helpers.d.ts.map +1 -1
  57. package/dist/dts/internal/keyed.d.ts.map +1 -1
  58. package/dist/dts/internal/share.d.ts.map +1 -1
  59. package/dist/esm/Fx.js +5 -1
  60. package/dist/esm/Fx.js.map +1 -1
  61. package/dist/esm/Idle.js +8 -6
  62. package/dist/esm/Idle.js.map +1 -1
  63. package/dist/esm/Push.js.map +1 -1
  64. package/dist/esm/RefHashMap.js.map +1 -1
  65. package/dist/esm/RefSubject.js +6 -7
  66. package/dist/esm/RefSubject.js.map +1 -1
  67. package/dist/esm/Subject.js +3 -2
  68. package/dist/esm/Subject.js.map +1 -1
  69. package/dist/esm/Versioned.js.map +1 -1
  70. package/dist/esm/internal/DeferredRef.js +1 -1
  71. package/dist/esm/internal/DeferredRef.js.map +1 -1
  72. package/dist/esm/internal/core.js +2 -1
  73. package/dist/esm/internal/core.js.map +1 -1
  74. package/dist/esm/internal/diff.js +26 -16
  75. package/dist/esm/internal/diff.js.map +1 -1
  76. package/dist/esm/internal/helpers.js +5 -1
  77. package/dist/esm/internal/helpers.js.map +1 -1
  78. package/dist/esm/internal/keyed.js +14 -15
  79. package/dist/esm/internal/keyed.js.map +1 -1
  80. package/dist/esm/internal/share.js +4 -1
  81. package/dist/esm/internal/share.js.map +1 -1
  82. package/package.json +8 -8
  83. package/src/Emitter.ts +1 -1
  84. package/src/Form.ts +2 -2
  85. package/src/Fx.ts +5 -4
  86. package/src/Guard.ts +1 -1
  87. package/src/Idle.ts +9 -13
  88. package/src/Match.ts +2 -2
  89. package/src/Pull.ts +1 -1
  90. package/src/Push.ts +6 -1
  91. package/src/RefArray.ts +1 -1
  92. package/src/RefChunk.ts +1 -1
  93. package/src/RefHashMap.ts +3 -1
  94. package/src/RefHashSet.ts +1 -1
  95. package/src/RefSubject.ts +18 -19
  96. package/src/Subject.ts +17 -5
  97. package/src/Versioned.ts +4 -2
  98. package/src/internal/DeferredRef.ts +1 -1
  99. package/src/internal/core.ts +5 -1
  100. package/src/internal/diff.ts +56 -42
  101. package/src/internal/helpers.ts +7 -2
  102. package/src/internal/keyed.ts +19 -21
  103. package/src/internal/share.ts +6 -1
@@ -1,4 +1,4 @@
1
- import { Context, Effect, ExecutionStrategy, Option, Scope } from "effect";
1
+ import { Context, Effect, ExecutionStrategy, Exit, Option, Scope } from "effect";
2
2
  import * as RefSubject from "../RefSubject.js";
3
3
  import * as Sink from "../Sink.js";
4
4
  import { diffIterator } from "./diff.js";
@@ -24,7 +24,7 @@ function emptyKeyedState() {
24
24
  return {
25
25
  entries: new Map(),
26
26
  indices: new Map(),
27
- previousKeys: []
27
+ previousValues: []
28
28
  };
29
29
  }
30
30
  function runKeyed(fx, options, sink, id) {
@@ -34,13 +34,12 @@ function runKeyed(fx, options, sink, id) {
34
34
  const scheduleNextEmit = forkDebounce(Effect.suspend(() => sink.onSuccess(getReadyIndices(state))));
35
35
  function diffAndPatch(values) {
36
36
  return Effect.gen(function* (_) {
37
- const previous = state.previousKeys;
38
- const keys = values.map(options.getKey);
39
- state.previousKeys = keys;
37
+ const previous = state.previousValues;
38
+ state.previousValues = values;
40
39
  let added = false;
41
40
  let done = false;
42
41
  let scheduled = false;
43
- for (const patch of diffIterator(previous, keys)) {
42
+ for (const patch of diffIterator(previous, values, options)) {
44
43
  if (patch._tag === "Remove") {
45
44
  yield* _(removeValue(state, patch));
46
45
  }
@@ -84,9 +83,9 @@ class KeyedEntry {
84
83
  this.interrupt = interrupt;
85
84
  }
86
85
  }
87
- function getReadyIndices({ entries, indices, previousKeys }) {
86
+ function getReadyIndices({ entries, indices, previousValues }) {
88
87
  const output = [];
89
- for (let i = 0; i < previousKeys.length; ++i) {
88
+ for (let i = 0; i < previousValues.length; ++i) {
90
89
  const key = indices.get(i);
91
90
  if (key === undefined)
92
91
  break;
@@ -110,24 +109,24 @@ function addValue({ entries, indices }, values, patch, id, parentScope, options,
110
109
  scope: childScope,
111
110
  id
112
111
  }));
113
- const entry = new KeyedEntry(value, patch.index, Option.none(), ref, ref.interrupt);
114
- entries.set(patch.value, entry);
115
- indices.set(patch.index, patch.value);
116
112
  yield* _(Scope.addFinalizer(childScope, ref.interrupt));
117
- yield* _(Effect.forkIn(options.onValue(ref, patch.value).run(Sink.make((cause) => sink.onFailure(cause), (output) => {
113
+ const entry = new KeyedEntry(value, patch.index, Option.none(), ref, Scope.close(childScope, Exit.interrupt(id)));
114
+ entries.set(patch.key, entry);
115
+ indices.set(patch.index, patch.key);
116
+ yield* _(Effect.forkIn(options.onValue(ref, patch.key).run(Sink.make((cause) => sink.onFailure(cause), (output) => {
118
117
  entry.output = Option.some(output);
119
118
  return scheduleNextEmit;
120
119
  })), parentScope));
121
120
  });
122
121
  }
123
122
  function removeValue({ entries, indices }, patch) {
124
- const interrupt = entries.get(patch.value).interrupt;
125
- entries.delete(patch.value);
123
+ const interrupt = entries.get(patch.key).interrupt;
124
+ entries.delete(patch.key);
126
125
  indices.delete(patch.index);
127
126
  return interrupt;
128
127
  }
129
128
  function updateValue({ entries, indices }, values, patch) {
130
- const key = patch.value;
129
+ const key = patch.key;
131
130
  const entry = entries.get(key);
132
131
  if (patch._tag === "Moved") {
133
132
  const currentKey = indices.get(patch.index);
@@ -1 +1 @@
1
- {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../../../src/internal/keyed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyed.js","sourceRoot":"","sources":["../../../src/internal/keyed.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,10 @@ export class Share extends FxBase {
35
35
  initialize() {
36
36
  return Effect.suspend(() => {
37
37
  if (this._RefCount.increment() === 1) {
38
- return this.i0.run(this.i1).pipe(Effect.onExit(() => Effect.sync(() => MutableRef.set(this._FxFiber, Option.none()))), Effect.interruptible, Effect.forkDaemon, Effect.tap((fiber) => Effect.sync(() => MutableRef.set(this._FxFiber, Option.some(fiber)))), Effect.flatMap(Fiber.join));
38
+ return this.i0.run(this.i1).pipe(Effect.onExit(() => Effect.suspend(() => {
39
+ MutableRef.set(this._FxFiber, Option.none());
40
+ return this.i1.interrupt;
41
+ })), Effect.interruptible, Effect.forkDaemon, Effect.tap((fiber) => Effect.sync(() => MutableRef.set(this._FxFiber, Option.some(fiber)))), Effect.flatMap(Fiber.join));
39
42
  }
40
43
  else {
41
44
  return Option.match(MutableRef.get(this._FxFiber), {
@@ -1 +1 @@
1
- {"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/internal/share.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/internal/share.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed/fx",
3
- "version": "1.20.1",
3
+ "version": "1.20.2",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,16 +10,16 @@
10
10
  "sideEffects": [],
11
11
  "author": "Typed contributors",
12
12
  "dependencies": {
13
- "@effect/schema": "0.59.1",
14
- "@effect/typeclass": "0.22.3",
15
- "effect": "^2.0.3",
13
+ "@effect/schema": "0.60.2",
14
+ "@effect/typeclass": "0.22.6",
15
+ "effect": "^2.1.0",
16
16
  "fast-deep-equal": "^3.1.3",
17
- "@typed/async-data": "0.3.0",
18
- "@typed/context": "0.21.0"
17
+ "@typed/async-data": "0.3.1",
18
+ "@typed/context": "0.21.1"
19
19
  },
20
20
  "peerDependencies": {
21
- "@effect/typeclass": "0.22.3",
22
- "effect": "^2.0.3"
21
+ "@effect/typeclass": "0.22.6",
22
+ "effect": "^2.1.0"
23
23
  },
24
24
  "main": "./dist/cjs/index.js",
25
25
  "module": "./dist/esm/index.js",
package/src/Emitter.ts CHANGED
@@ -16,7 +16,7 @@ import * as Sink from "./Sink.js"
16
16
  /**
17
17
  * @since 1.20.0
18
18
  */
19
- export interface Emitter<E, A> {
19
+ export interface Emitter<in E, in A> {
20
20
  readonly succeed: (value: A) => Promise<Exit.Exit<never, unknown>>
21
21
  readonly failCause: (cause: Cause.Cause<E>) => Promise<Exit.Exit<never, unknown>>
22
22
  readonly fail: (error: E) => Promise<Exit.Exit<never, unknown>>
package/src/Form.ts CHANGED
@@ -35,7 +35,7 @@ type AnyObjectWithKeys<K extends PropertyKey> = Readonly<Record<K, any>>
35
35
  /**
36
36
  * @since 1.18.0
37
37
  */
38
- export interface Form<R, Entries extends Form.AnyEntries> extends
38
+ export interface Form<out R, in out Entries extends Form.AnyEntries> extends
39
39
  Form.Base<
40
40
  R | Form.Context<Entries>,
41
41
  Form.Error<Entries>,
@@ -55,7 +55,7 @@ export namespace Form {
55
55
  /**
56
56
  * @since 1.18.0
57
57
  */
58
- export interface Base<R, E, I, O, Entries extends Form.AnyEntries>
58
+ export interface Base<out R, out E, in out I, in out O, in out Entries extends Form.AnyEntries>
59
59
  extends Versioned.Versioned<R, never, R | Scope.Scope, E | ParseError, I, R, E | ParseError, I>
60
60
  {
61
61
  readonly [FormTypeId]: FormTypeId
package/src/Fx.ts CHANGED
@@ -2444,10 +2444,11 @@ export function fromDequeue<A>(dequeue: Queue.Dequeue<A>): Fx<never, never, A>
2444
2444
  export function fromDequeue<I, A>(dequeue: Ctx.Dequeue<I, A>): Fx<I, never, A>
2445
2445
  export function fromDequeue<I, A>(dequeue: Ctx.Dequeue<I, A> | Queue.Dequeue<A>): Fx<I, never, A> {
2446
2446
  return core.make((sink) =>
2447
- Effect.repeatWhileEffect(
2448
- Effect.matchCauseEffect(dequeue.take, sink),
2449
- () => dequeueIsActive(dequeue)
2450
- )
2447
+ Effect.gen(function*(_) {
2448
+ while (yield* _(dequeueIsActive(dequeue))) {
2449
+ yield* _(dequeue.take, Effect.matchCauseEffect(sink))
2450
+ }
2451
+ })
2451
2452
  )
2452
2453
  }
2453
2454
 
package/src/Guard.ts CHANGED
@@ -10,7 +10,7 @@ import * as Option from "effect/Option"
10
10
  /**
11
11
  * @since 1.18.0
12
12
  */
13
- export type Guard<I, R, E, O> = (input: I) => Effect.Effect<R, E, Option.Option<O>>
13
+ export type Guard<in I, out R, out E, out O> = (input: I) => Effect.Effect<R, E, Option.Option<O>>
14
14
 
15
15
  /**
16
16
  * @since 1.18.0
package/src/Idle.ts CHANGED
@@ -9,7 +9,6 @@ import * as Effect from "effect/Effect"
9
9
  import * as ExecutionStrategy from "effect/ExecutionStrategy"
10
10
  import * as Exit from "effect/Exit"
11
11
  import type * as Fiber from "effect/Fiber"
12
- import { constant, constVoid } from "effect/Function"
13
12
  import { globalValue } from "effect/GlobalValue"
14
13
  import * as Layer from "effect/Layer"
15
14
  import type * as Queue from "effect/Queue"
@@ -160,18 +159,15 @@ export interface WhileIdleRequestOptions<R, E, R2, E2> extends IdleRequestOption
160
159
  export const whileIdle = <R, E, R2, E2>(
161
160
  options: WhileIdleRequestOptions<R, E, R2, E2>
162
161
  ): Effect.Effect<Scope.Scope | R | R2, E | E2, void> =>
163
- Effect.repeatWhileEffect(
164
- Effect.flatMap(
165
- whenIdle(options),
166
- (deadline) =>
167
- Effect.whileLoop({
168
- while: () => shouldContinue(deadline),
169
- body: constant(options.body),
170
- step: constVoid
171
- })
172
- ),
173
- constant(options.while)
174
- )
162
+ Effect.gen(function*(_) {
163
+ while (yield* _(options.while)) {
164
+ const deadline = yield* _(whenIdle(options))
165
+
166
+ while (shouldContinue(deadline)) {
167
+ yield* _(options.body)
168
+ }
169
+ }
170
+ })
175
171
 
176
172
  /**
177
173
  * Dequeue values and perform an Effect while the event loop is not busy with any other work.
package/src/Match.ts CHANGED
@@ -33,7 +33,7 @@ export type MatcherTypeId = typeof MatcherTypeId
33
33
  /**
34
34
  * @since 1.18.0
35
35
  */
36
- export interface TypeMatcher<R, E, I, O> {
36
+ export interface TypeMatcher<out R, out E, in out I, out O> {
37
37
  readonly _tag: "TypeMatcher"
38
38
 
39
39
  readonly [MatcherTypeId]: Matcher.Variance<R, E, I, O>
@@ -56,7 +56,7 @@ export interface TypeMatcher<R, E, I, O> {
56
56
  /**
57
57
  * @since 1.18.0
58
58
  */
59
- export interface ValueMatcher<R, E, I, O> extends Fx.Fx<R | Scope.Scope, E, Option.Option<O>> {
59
+ export interface ValueMatcher<out R, out E, in out I, out O> extends Fx.Fx<R | Scope.Scope, E, Option.Option<O>> {
60
60
  readonly _tag: "ValueMatcher"
61
61
 
62
62
  readonly [MatcherTypeId]: Matcher.Variance<R, E, I, O>
package/src/Pull.ts CHANGED
@@ -19,7 +19,7 @@ import type { Sink } from "./Sink.js"
19
19
  * An Effect which can be used to pull values of a Stream.
20
20
  * @since 1.18.0
21
21
  */
22
- export interface Pull<R, E, A> extends Effect.Effect<R, Option.Option<E>, Chunk.Chunk<A>> {}
22
+ export interface Pull<out R, out E, out A> extends Effect.Effect<R, Option.Option<E>, Chunk.Chunk<A>> {}
23
23
 
24
24
  function schedulePull<R, E, A, R2, R3>(
25
25
  pull: Pull<R, E, A>,
package/src/Push.ts CHANGED
@@ -13,9 +13,14 @@ import { FxBase } from "./internal/protos.js"
13
13
  import * as Sink from "./Sink.js"
14
14
 
15
15
  /**
16
+ * Push is an abstract type which represents a Type which is both an Fx and a Sink. The type parameters
17
+ * are decoupled from one another and allow mapping over the input and output of the Push separately for
18
+ * more complex use cases.
16
19
  * @since 1.20.0
17
20
  */
18
- export interface Push<R, E, A, R2, E2, B> extends Sink.Sink<R, E, A>, Fx<R2, E2, B>, Pipeable.Pipeable {}
21
+ export interface Push<out R, in E, in A, out R2, out E2, out B>
22
+ extends Sink.Sink<R, E, A>, Fx<R2, E2, B>, Pipeable.Pipeable
23
+ {}
19
24
 
20
25
  /**
21
26
  * @since 1.20.0
package/src/RefArray.ts CHANGED
@@ -20,7 +20,7 @@ import * as RefSubject from "./RefSubject.js"
20
20
  * @since 1.18.0
21
21
  * @category models
22
22
  */
23
- export interface RefArray<R, E, A> extends RefSubject.RefSubject<R, E, ReadonlyArray<A>> {}
23
+ export interface RefArray<out R, in out E, in out A> extends RefSubject.RefSubject<R, E, ReadonlyArray<A>> {}
24
24
 
25
25
  /**
26
26
  * Construct a new RefArray with the given initial value.
package/src/RefChunk.ts CHANGED
@@ -18,7 +18,7 @@ import * as RefSubject from "./RefSubject.js"
18
18
  * @since 1.18.0
19
19
  * @category models
20
20
  */
21
- export interface RefChunk<R, E, A> extends RefSubject.RefSubject<R, E, Chunk.Chunk<A>> {}
21
+ export interface RefChunk<out R, in out E, in out A> extends RefSubject.RefSubject<R, E, Chunk.Chunk<A>> {}
22
22
 
23
23
  /**
24
24
  * Construct a new RefChunk with the given initial value.
package/src/RefHashMap.ts CHANGED
@@ -17,7 +17,9 @@ import * as RefSubject from "./RefSubject.js"
17
17
  * @since 1.18.0
18
18
  * @category models
19
19
  */
20
- export interface RefHashMap<R, E, K, V> extends RefSubject.RefSubject<R, E, HashMap.HashMap<K, V>> {}
20
+ export interface RefHashMap<out R, in out E, in out K, in out V>
21
+ extends RefSubject.RefSubject<R, E, HashMap.HashMap<K, V>>
22
+ {}
21
23
 
22
24
  /**
23
25
  * Construct a new RefHashMap with the given initial value.
package/src/RefHashSet.ts CHANGED
@@ -16,7 +16,7 @@ import * as RefSubject from "./RefSubject.js"
16
16
  * @since 1.18.0
17
17
  * @category models
18
18
  */
19
- export interface RefHashSet<R, E, A> extends RefSubject.RefSubject<R, E, HashSet.HashSet<A>> {}
19
+ export interface RefHashSet<out R, in out E, in out A> extends RefSubject.RefSubject<R, E, HashSet.HashSet<A>> {}
20
20
 
21
21
  /**
22
22
  * @since 1.18.0
package/src/RefSubject.ts CHANGED
@@ -123,7 +123,10 @@ export namespace RefSubject {
123
123
  /**
124
124
  * @since 1.20.0
125
125
  */
126
- readonly make: <R>(fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>) => Layer.Layer<R, never, I>
126
+ readonly make: <R>(
127
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>,
128
+ options?: RefSubjectOptions<A>
129
+ ) => Layer.Layer<R, never, I>
127
130
  }
128
131
 
129
132
  /**
@@ -367,17 +370,16 @@ class RefSubjectImpl<R, E, A, R2> extends FxEffectBase<Exclude<R, R2> | Scope.Sc
367
370
  }
368
371
 
369
372
  run<R3>(sink: Sink.Sink<R3, E, A>): Effect.Effect<Exclude<R, R2> | R3 | Scope.Scope, never, unknown> {
370
- return Effect.matchCauseEffect(this.toEffect(), {
373
+ return Effect.matchCauseEffect(getOrInitializeCore(this.core, true), {
371
374
  onFailure: (cause) => sink.onFailure(cause),
372
375
  onSuccess: () => Effect.provide(this.core.subject.run(sink), this.core.context)
373
376
  })
374
377
  }
375
378
 
376
379
  runUpdates<R3, E3, B>(
377
- run: (ref: GetSetDelete<Exclude<R, R2>, E, A>) => Effect.Effect<R3, E3, B>,
378
- lock: boolean = true
380
+ run: (ref: GetSetDelete<Exclude<R, R2>, E, A>) => Effect.Effect<R3, E3, B>
379
381
  ) {
380
- return lock ? this.core.semaphore.withPermits(1)(run(this.getSetDelete)) : run(this.getSetDelete)
382
+ return this.core.semaphore.withPermits(1)(run(this.getSetDelete))
381
383
  }
382
384
 
383
385
  onSuccess(value: A): Effect.Effect<Exclude<R, R2>, never, unknown> {
@@ -662,11 +664,11 @@ function initializeCoreEffect<R, E, A, R2>(
662
664
  ): Effect.Effect<Exclude<R, R2>, never, Fiber.Fiber<E, A>> {
663
665
  const initialize = Effect.onExit(
664
666
  Effect.provide(core.initial, core.context),
665
- (exit) => {
666
- core._fiber = undefined
667
- core.deferredRef.done(exit)
668
- return Effect.unit
669
- }
667
+ (exit) =>
668
+ Effect.sync(() => {
669
+ core._fiber = undefined
670
+ core.deferredRef.done(exit)
671
+ })
670
672
  )
671
673
 
672
674
  return Effect.flatMap(
@@ -1019,12 +1021,7 @@ class ComputedImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1019
1021
  ) {
1020
1022
  super(
1021
1023
  input,
1022
- (fx) =>
1023
- share.hold(core.mapEffect(fx, f)) as Fx<
1024
- R0 | Exclude<R, Scope.Scope> | R2 | R3 | Scope.Scope,
1025
- E0 | E | E2 | E3,
1026
- C
1027
- >,
1024
+ (fx) => share.hold(core.mapEffect(fx, f)) as any,
1028
1025
  Effect.flatMap(f)
1029
1026
  )
1030
1027
  }
@@ -1061,7 +1058,7 @@ class FilteredImpl<R0, E0, R, E, A, R2, E2, R3, E3, C> extends Versioned.Version
1061
1058
  ) {
1062
1059
  super(
1063
1060
  input,
1064
- (fx) => share.hold(core.filterMapEffect(fx, f) as any),
1061
+ (fx) => share.hold(core.filterMapEffect(fx, f)) as any,
1065
1062
  (effect) => Effect.flatten(Effect.flatMap(effect, f))
1066
1063
  )
1067
1064
  }
@@ -1787,8 +1784,10 @@ class RefSubjectTagged<I, E, A> extends FxEffectBase<
1787
1784
  return this.tag.withEffect((ref) => ref.onSuccess(value))
1788
1785
  }
1789
1786
 
1790
- make = <R>(fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>): Layer.Layer<R, never, I> =>
1791
- this.tag.scoped(make(fxOrEffect))
1787
+ make = <R>(
1788
+ fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>,
1789
+ options?: RefSubjectOptions<A>
1790
+ ): Layer.Layer<R, never, I> => this.tag.scoped(make(fxOrEffect, options))
1792
1791
  }
1793
1792
 
1794
1793
  /**
package/src/Subject.ts CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  import * as C from "@typed/context"
7
7
  import type { Cause, Layer, Pipeable } from "effect"
8
- import * as Context from "effect/Context"
8
+ import type * as Context from "effect/Context"
9
9
  import * as Effect from "effect/Effect"
10
10
  import * as ExecutionStrategy from "effect/ExecutionStrategy"
11
11
  import * as Exit from "effect/Exit"
@@ -26,9 +26,7 @@ import { TypeId } from "./TypeId.js"
26
26
  * Subject is an Fx type which can also be imperatively pushed into.
27
27
  * @since 1.20.0
28
28
  */
29
- export interface Subject<R, E, A>
30
- extends Push<R, E, A, R | Scope.Scope, E, A>, Fx<R | Scope.Scope, E, A>, Pipeable.Pipeable
31
- {
29
+ export interface Subject<out R, in out E, in out A> extends Push<R, E, A, R | Scope.Scope, E, A>, Pipeable.Pipeable {
32
30
  readonly subscriberCount: Effect.Effect<R, never, number>
33
31
  readonly interrupt: Effect.Effect<R, never, void>
34
32
  }
@@ -118,7 +116,7 @@ export class SubjectImpl<E, A> extends FxBase<Scope.Scope, E, A> implements Subj
118
116
  return withScope(
119
117
  (innerScope) =>
120
118
  Effect.contextWithEffect((ctx) => {
121
- const entry = [sink, Context.add(ctx, Scope.Scope, innerScope)] as const
119
+ const entry = [sink, ctx] as const
122
120
  const add = Effect.sync(() => {
123
121
  this.sinks.add(entry)
124
122
  this.scopes.add(innerScope)
@@ -176,6 +174,13 @@ export class HoldSubjectImpl<E, A> extends SubjectImpl<E, A> implements Subject<
176
174
  onSome: (a) => Effect.zipRight(sink.onSuccess(a), awaitScopeClose(scope))
177
175
  }))
178
176
  }
177
+
178
+ readonly interrupt = Effect.fiberIdWith((id) =>
179
+ Effect.tap(
180
+ Effect.forEach(this.scopes, (scope) => Scope.close(scope, Exit.interrupt(id)), DISCARD),
181
+ () => MutableRef.set(this.lastValue, Option.none())
182
+ )
183
+ )
179
184
  }
180
185
 
181
186
  /**
@@ -200,6 +205,13 @@ export class ReplaySubjectImpl<E, A> extends SubjectImpl<E, A> {
200
205
  (scope) => Effect.zipRight(this.buffer.forEach((a) => sink.onSuccess(a)), awaitScopeClose(scope))
201
206
  )
202
207
  }
208
+
209
+ readonly interrupt = Effect.fiberIdWith((id) =>
210
+ Effect.tap(
211
+ Effect.forEach(this.scopes, (scope) => Scope.close(scope, Exit.interrupt(id)), DISCARD),
212
+ () => this.buffer.clear()
213
+ )
214
+ )
203
215
  }
204
216
 
205
217
  /**
package/src/Versioned.ts CHANGED
@@ -25,7 +25,9 @@ import type { Sink } from "./Sink.js"
25
25
  /**
26
26
  * @since 1.0.0
27
27
  */
28
- export interface Versioned<R1, E1, R2, E2, A2, R3, E3, A3> extends Fx<R2, E2, A2>, Effect.Effect<R3, E3, A3> {
28
+ export interface Versioned<out R1, out E1, out R2, out E2, out A2, out R3, out E3, out A3>
29
+ extends Fx<R2, E2, A2>, Effect.Effect<R3, E3, A3>
30
+ {
29
31
  readonly version: Effect.Effect<R1, E1, number>
30
32
  }
31
33
 
@@ -112,7 +114,7 @@ export class VersionedTransform<R0, E0, R, E, A, R2, E2, B, R3, E3, C, R4, E4, D
112
114
  {
113
115
  protected _version = -1
114
116
  protected _currentValue: Option.Option<D> = Option.none()
115
- private _fx: Fx<R3, E3, C>
117
+ protected _fx: Fx<R3, E3, C>
116
118
 
117
119
  constructor(
118
120
  readonly input: Versioned<R0, E0, R, E, A, R2, E2, B>,
@@ -43,7 +43,7 @@ export class DeferredRef<E, A> extends EffectBase<never, E, A> {
43
43
 
44
44
  reset() {
45
45
  this.current = Option.none()
46
- this.version = 0
46
+ this.version = -1
47
47
 
48
48
  if (this.deferred) {
49
49
  Deferred.unsafeDone(this.deferred, Exit.interrupt(this.id))
@@ -19,6 +19,7 @@ import * as Deferred from "effect/Deferred"
19
19
  import * as Effect from "effect/Effect"
20
20
  import * as Either from "effect/Either"
21
21
  import * as Equal from "effect/Equal"
22
+ import { boolean } from "effect/Equivalence"
22
23
  import * as ExecutionStrategy from "effect/ExecutionStrategy"
23
24
  import * as Exit from "effect/Exit"
24
25
  import * as Fiber from "effect/Fiber"
@@ -2712,7 +2713,10 @@ function if_<R, E, R2, E2, B, R3, E3, C>(
2712
2713
  readonly onFalse: Fx<R3, E3, C>
2713
2714
  }
2714
2715
  ): Fx<R | R2 | R3 | Scope.Scope, E | E2 | E3, B | C> {
2715
- return switchMap(bool, (b): Fx<R2 | R3, E2 | E3, B | C> => b ? options.onTrue : options.onFalse)
2716
+ return switchMap(
2717
+ skipRepeatsWith(bool, boolean),
2718
+ (b): Fx<R2 | R3, E2 | E3, B | C> => b ? options.onTrue : options.onFalse
2719
+ )
2716
2720
  }
2717
2721
 
2718
2722
  export { if_ as if }