@typed/fx 1.22.2 → 1.24.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.
Files changed (157) hide show
  1. package/dist/cjs/AsyncData.js.map +1 -1
  2. package/dist/cjs/Form.js.map +1 -1
  3. package/dist/cjs/FormEntry.js.map +1 -1
  4. package/dist/cjs/Fx.js +1 -1
  5. package/dist/cjs/Fx.js.map +1 -1
  6. package/dist/cjs/Idle.js.map +1 -1
  7. package/dist/cjs/Match.js.map +1 -1
  8. package/dist/cjs/Pull.js +5 -3
  9. package/dist/cjs/Pull.js.map +1 -1
  10. package/dist/cjs/RefArray.js.map +1 -1
  11. package/dist/cjs/RefChunk.js.map +1 -1
  12. package/dist/cjs/RefHashSet.js.map +1 -1
  13. package/dist/cjs/RefSubject.js +3 -2
  14. package/dist/cjs/RefSubject.js.map +1 -1
  15. package/dist/cjs/Sink.js.map +1 -1
  16. package/dist/cjs/Subject.js.map +1 -1
  17. package/dist/cjs/Versioned.js.map +1 -1
  18. package/dist/cjs/internal/core.js.map +1 -1
  19. package/dist/cjs/internal/helpers.js.map +1 -1
  20. package/dist/cjs/internal/keyed.js +1 -1
  21. package/dist/cjs/internal/keyed.js.map +1 -1
  22. package/dist/cjs/internal/provide.js.map +1 -1
  23. package/dist/cjs/internal/share.js.map +1 -1
  24. package/dist/cjs/internal/sync-producer.js.map +1 -1
  25. package/dist/dts/AsyncData.d.ts +53 -53
  26. package/dist/dts/AsyncData.d.ts.map +1 -1
  27. package/dist/dts/Emitter.d.ts +7 -7
  28. package/dist/dts/Emitter.d.ts.map +1 -1
  29. package/dist/dts/Form.d.ts +14 -14
  30. package/dist/dts/Form.d.ts.map +1 -1
  31. package/dist/dts/FormEntry.d.ts +11 -11
  32. package/dist/dts/FormEntry.d.ts.map +1 -1
  33. package/dist/dts/Fx.d.ts +417 -417
  34. package/dist/dts/Fx.d.ts.map +1 -1
  35. package/dist/dts/Guard.d.ts +21 -21
  36. package/dist/dts/Guard.d.ts.map +1 -1
  37. package/dist/dts/Idle.d.ts +12 -12
  38. package/dist/dts/Idle.d.ts.map +1 -1
  39. package/dist/dts/Match.d.ts +16 -16
  40. package/dist/dts/Match.d.ts.map +1 -1
  41. package/dist/dts/Pull.d.ts +5 -5
  42. package/dist/dts/Pull.d.ts.map +1 -1
  43. package/dist/dts/Push.d.ts +40 -40
  44. package/dist/dts/Push.d.ts.map +1 -1
  45. package/dist/dts/RefArray.d.ts +59 -59
  46. package/dist/dts/RefArray.d.ts.map +1 -1
  47. package/dist/dts/RefChunk.d.ts +45 -45
  48. package/dist/dts/RefChunk.d.ts.map +1 -1
  49. package/dist/dts/RefHashMap.d.ts +35 -35
  50. package/dist/dts/RefHashMap.d.ts.map +1 -1
  51. package/dist/dts/RefHashSet.d.ts +17 -17
  52. package/dist/dts/RefHashSet.d.ts.map +1 -1
  53. package/dist/dts/RefSubject.d.ts +136 -136
  54. package/dist/dts/RefSubject.d.ts.map +1 -1
  55. package/dist/dts/Sink.d.ts +63 -63
  56. package/dist/dts/Sink.d.ts.map +1 -1
  57. package/dist/dts/Stream.d.ts +11 -11
  58. package/dist/dts/Stream.d.ts.map +1 -1
  59. package/dist/dts/Subject.d.ts +13 -13
  60. package/dist/dts/Subject.d.ts.map +1 -1
  61. package/dist/dts/Typeclass.d.ts +1 -1
  62. package/dist/dts/Typeclass.d.ts.map +1 -1
  63. package/dist/dts/Versioned.d.ts +33 -33
  64. package/dist/dts/Versioned.d.ts.map +1 -1
  65. package/dist/dts/index.d.ts +1 -1
  66. package/dist/dts/internal/DeferredRef.d.ts +8 -8
  67. package/dist/dts/internal/DeferredRef.d.ts.map +1 -1
  68. package/dist/dts/internal/core.d.ts +191 -191
  69. package/dist/dts/internal/core.d.ts.map +1 -1
  70. package/dist/dts/internal/effect-loop-operator.d.ts +6 -6
  71. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -1
  72. package/dist/dts/internal/effect-operator.d.ts +16 -16
  73. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  74. package/dist/dts/internal/effect-producer.d.ts +13 -13
  75. package/dist/dts/internal/effect-producer.d.ts.map +1 -1
  76. package/dist/dts/internal/helpers.d.ts +26 -26
  77. package/dist/dts/internal/helpers.d.ts.map +1 -1
  78. package/dist/dts/internal/keyed.d.ts +1 -1
  79. package/dist/dts/internal/keyed.d.ts.map +1 -1
  80. package/dist/dts/internal/loop-operator.d.ts +2 -2
  81. package/dist/dts/internal/loop-operator.d.ts.map +1 -1
  82. package/dist/dts/internal/operator.d.ts +2 -2
  83. package/dist/dts/internal/operator.d.ts.map +1 -1
  84. package/dist/dts/internal/protos.d.ts +12 -12
  85. package/dist/dts/internal/protos.d.ts.map +1 -1
  86. package/dist/dts/internal/provide.d.ts +15 -15
  87. package/dist/dts/internal/provide.d.ts.map +1 -1
  88. package/dist/dts/internal/share.d.ts +11 -11
  89. package/dist/dts/internal/share.d.ts.map +1 -1
  90. package/dist/dts/internal/sync-operator.d.ts +2 -2
  91. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  92. package/dist/dts/internal/sync-producer.d.ts +6 -6
  93. package/dist/dts/internal/sync-producer.d.ts.map +1 -1
  94. package/dist/dts/internal/withKey.d.ts +1 -1
  95. package/dist/dts/internal/withKey.d.ts.map +1 -1
  96. package/dist/esm/AsyncData.js.map +1 -1
  97. package/dist/esm/Form.js.map +1 -1
  98. package/dist/esm/FormEntry.js.map +1 -1
  99. package/dist/esm/Fx.js +1 -1
  100. package/dist/esm/Fx.js.map +1 -1
  101. package/dist/esm/Idle.js.map +1 -1
  102. package/dist/esm/Match.js.map +1 -1
  103. package/dist/esm/Pull.js +3 -3
  104. package/dist/esm/Pull.js.map +1 -1
  105. package/dist/esm/RefArray.js.map +1 -1
  106. package/dist/esm/RefChunk.js.map +1 -1
  107. package/dist/esm/RefHashSet.js.map +1 -1
  108. package/dist/esm/RefSubject.js +3 -1
  109. package/dist/esm/RefSubject.js.map +1 -1
  110. package/dist/esm/Sink.js.map +1 -1
  111. package/dist/esm/Subject.js.map +1 -1
  112. package/dist/esm/Versioned.js.map +1 -1
  113. package/dist/esm/index.js +1 -1
  114. package/dist/esm/internal/core.js.map +1 -1
  115. package/dist/esm/internal/helpers.js.map +1 -1
  116. package/dist/esm/internal/keyed.js +1 -1
  117. package/dist/esm/internal/keyed.js.map +1 -1
  118. package/dist/esm/internal/provide.js.map +1 -1
  119. package/dist/esm/internal/share.js.map +1 -1
  120. package/dist/esm/internal/sync-producer.js.map +1 -1
  121. package/package.json +6 -6
  122. package/src/AsyncData.ts +142 -144
  123. package/src/Emitter.ts +13 -13
  124. package/src/Form.ts +55 -55
  125. package/src/FormEntry.ts +39 -39
  126. package/src/Fx.ts +788 -789
  127. package/src/Guard.ts +43 -43
  128. package/src/Idle.ts +26 -26
  129. package/src/Match.ts +60 -61
  130. package/src/Pull.ts +42 -43
  131. package/src/Push.ts +195 -195
  132. package/src/RefArray.ts +121 -119
  133. package/src/RefChunk.ts +98 -97
  134. package/src/RefHashMap.ts +79 -79
  135. package/src/RefHashSet.ts +40 -39
  136. package/src/RefSubject.ts +574 -565
  137. package/src/Sink.ts +303 -303
  138. package/src/Stream.ts +27 -27
  139. package/src/Subject.ts +48 -46
  140. package/src/Typeclass.ts +2 -2
  141. package/src/Versioned.ts +97 -97
  142. package/src/index.ts +1 -1
  143. package/src/internal/DeferredRef.ts +7 -7
  144. package/src/internal/core.ts +768 -781
  145. package/src/internal/effect-loop-operator.ts +7 -7
  146. package/src/internal/effect-operator.ts +23 -23
  147. package/src/internal/effect-producer.ts +38 -38
  148. package/src/internal/helpers.ts +51 -51
  149. package/src/internal/keyed.ts +21 -21
  150. package/src/internal/loop-operator.ts +2 -2
  151. package/src/internal/operator.ts +2 -2
  152. package/src/internal/protos.ts +15 -15
  153. package/src/internal/provide.ts +27 -27
  154. package/src/internal/share.ts +25 -25
  155. package/src/internal/sync-operator.ts +4 -4
  156. package/src/internal/sync-producer.ts +15 -15
  157. package/src/internal/withKey.ts +13 -13
package/src/Form.ts CHANGED
@@ -56,24 +56,24 @@ export namespace Form {
56
56
  * @since 1.18.0
57
57
  */
58
58
  export interface Base<out R, out E, in out I, in out O, in out Entries extends Form.AnyEntries>
59
- extends Versioned.Versioned<R, never, R | Scope.Scope, E | ParseError, I, R, E | ParseError, I>
59
+ extends Versioned.Versioned<R, never, I, E | ParseError, R | Scope.Scope, I, E | ParseError, R>
60
60
  {
61
61
  readonly [FormTypeId]: FormTypeId
62
62
 
63
63
  readonly entries: Entries
64
64
 
65
65
  readonly schema: S.Schema<
66
- R,
66
+ O,
67
67
  I,
68
- O
68
+ R
69
69
  >
70
70
 
71
71
  readonly get: <K extends keyof Entries>(key: K) => Entries[K]
72
72
 
73
73
  readonly decoded: RefSubject.Computed<
74
- R,
74
+ O,
75
75
  E | ParseError,
76
- O
76
+ R
77
77
  >
78
78
  }
79
79
 
@@ -139,9 +139,9 @@ export namespace Form {
139
139
  */
140
140
  export interface Derived<R, R2, Entries extends AnyEntries> extends Form<R, Entries> {
141
141
  readonly persist: Effect.Effect<
142
- R2,
142
+ Output<Entries>,
143
143
  Error<Entries>,
144
- Output<Entries>
144
+ R2
145
145
  >
146
146
  }
147
147
  }
@@ -161,17 +161,21 @@ export type MakeForm<
161
161
  I extends AnyObject,
162
162
  O extends AnyObjectWithKeys<keyof I>
163
163
  > = {
164
- <R, E>(fx: RefSubject.RefSubject<R, E, O>): Effect.Effect<
165
- R | Scope.Scope,
166
- never,
164
+ <E, R>(
165
+ fx: RefSubject.RefSubject<O, E, R>
166
+ ): Effect.Effect<
167
167
  [DerivedFromIO<R, never, E, I, O>] extends [Form.Derived<infer R, never, infer R2>] ? Form.Derived<R, never, R2>
168
- : never
168
+ : never,
169
+ never,
170
+ R | Scope.Scope
169
171
  >
170
172
 
171
- <R, E>(fx: Fx<R, E, O> | Effect.Effect<R, E, O>): Effect.Effect<
172
- R | Scope.Scope,
173
+ <E, R>(
174
+ fx: Fx<O, E, R> | Effect.Effect<O, E, R>
175
+ ): Effect.Effect<
176
+ [FormFromIO<R0, E, I, O>] extends [Form<infer R1, infer R2>] ? Form<R1, R2> : never,
173
177
  never,
174
- [FormFromIO<R0, E, I, O>] extends [Form<infer R1, infer R2>] ? Form<R1, R2> : never
178
+ R | Scope.Scope
175
179
  >
176
180
  }
177
181
 
@@ -183,17 +187,21 @@ export type MakeInputForm<
183
187
  I extends AnyObject,
184
188
  O extends AnyObjectWithKeys<keyof I>
185
189
  > = {
186
- <R, E>(fx: RefSubject.RefSubject<R, E, I>): Effect.Effect<
187
- R | Scope.Scope,
188
- never,
190
+ <E, R>(
191
+ fx: RefSubject.RefSubject<I, E, R>
192
+ ): Effect.Effect<
189
193
  [DerivedFromIO<R0 | R, never, E, I, O>] extends [Form.Derived<infer R, infer _, infer R2>] ? Form.Derived<R, _, R2>
190
- : never
194
+ : never,
195
+ never,
196
+ R | Scope.Scope
191
197
  >
192
198
 
193
- <R, E>(fx: Fx<R, E, I> | Effect.Effect<R, E, I>): Effect.Effect<
194
- R | Scope.Scope,
199
+ <E, R>(
200
+ fx: Fx<I, E, R> | Effect.Effect<I, E, R>
201
+ ): Effect.Effect<
202
+ [FormFromIO<R0, E, I, O>] extends [Form<infer R1, infer R2>] ? Form<R1, R2> : never,
195
203
  never,
196
- [FormFromIO<R0, E, I, O>] extends [Form<infer R1, infer R2>] ? Form<R1, R2> : never
204
+ R | Scope.Scope
197
205
  >
198
206
  }
199
207
 
@@ -249,7 +257,7 @@ export function derive<
249
257
  R0,
250
258
  I extends Partial<Readonly<Record<PropertyKey, any>>>,
251
259
  O extends Partial<{ readonly [K in keyof I]: any }>
252
- >(schema: S.Schema<R0, I, O>): MakeForm<R0, I, O> {
260
+ >(schema: S.Schema<O, I, R0>): MakeForm<R0, I, O> {
253
261
  return (input) =>
254
262
  Effect.map(deriveMakeEntries(input, schema.ast), (entries) => {
255
263
  const form = (Form as any)(entries)
@@ -275,8 +283,8 @@ export function deriveInput<
275
283
  R0,
276
284
  I extends Partial<Readonly<Record<PropertyKey, any>>>,
277
285
  O extends Partial<AnyObjectWithKeys<keyof I>>
278
- >(schema: S.Schema<R0, I, O>): MakeInputForm<R0, I, O> {
279
- return <R, E>(input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>) =>
286
+ >(schema: S.Schema<O, I, R0>): MakeInputForm<R0, I, O> {
287
+ return <E, R>(input: RefSubject.RefSubject<I, E, R> | Fx<I, E, R> | Effect.Effect<I, E, R>) =>
280
288
  Effect.map(deriveMakeInputEntries(input, schema.ast), (entries) => {
281
289
  const form = (Form as any)(entries)
282
290
 
@@ -301,16 +309,16 @@ function isParseError(u: unknown): u is ParseError {
301
309
  const parseOptions: ParseOptions = { errors: "all", onExcessProperty: "ignore" }
302
310
 
303
311
  class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
304
- Form.Context<Entries> | Scope.Scope,
312
+ Form.Input<Entries>,
305
313
  Form.Error<Entries> | ParseError,
314
+ Form.Context<Entries> | Scope.Scope,
306
315
  Form.Input<Entries>,
307
- Form.Context<Entries>,
308
316
  Form.Error<Entries> | ParseError,
309
- Form.Input<Entries>
317
+ Form.Context<Entries>
310
318
  > implements Form<Form.Context<Entries>, Entries> {
311
319
  readonly [FormTypeId]: FormTypeId = FormTypeId
312
- private _fx: Fx<Scope.Scope, ParseError | Form.Error<Entries>, Form.Input<Entries>>
313
- readonly version: Effect.Effect<never, never, number>
320
+ private _fx: Fx<Form.Input<Entries>, ParseError | Form.Error<Entries>, Scope.Scope>
321
+ readonly version: Effect.Effect<number>
314
322
 
315
323
  constructor(readonly entries: Entries) {
316
324
  super()
@@ -318,17 +326,13 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
318
326
  this.schema = buildSchema(entries)
319
327
  this.version = Effect.map(
320
328
  // @ts-ignore Infinite type instantiation
321
- Effect.all(Object.values(entries).map((e) => e.version)) as Effect.Effect<
322
- never,
323
- never,
324
- ReadonlyArray<number>
325
- >,
329
+ Effect.all(Object.values(entries).map((e) => e.version)) as Effect.Effect<ReadonlyArray<number>>,
326
330
  (versions) => versions.reduce((a, b) => a + b, 0)
327
331
  )
328
332
 
329
333
  this._fx = hold(
330
334
  core.skipRepeatsWith(
331
- core.struct(this.entries as any) as Fx<never, Form.Error<Entries> | ParseError, Form.Input<Entries>>,
335
+ core.struct(this.entries as any) as Fx<Form.Input<Entries>, Form.Error<Entries> | ParseError>,
332
336
  make(S.from(this.schema))
333
337
  )
334
338
  )
@@ -339,16 +343,12 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
339
343
  schema: Form<Form.Context<Entries>, Entries>["schema"]
340
344
 
341
345
  run<R3>(
342
- sink: Sink.Sink<R3, Form.Error<Entries> | ParseError, Form.Input<Entries>>
343
- ): Effect.Effect<R3 | Scope.Scope, never, unknown> {
346
+ sink: Sink.Sink<Form.Input<Entries>, Form.Error<Entries> | ParseError, R3>
347
+ ): Effect.Effect<unknown, never, R3 | Scope.Scope> {
344
348
  return this._fx.run(sink)
345
349
  }
346
350
 
347
- toEffect(): Effect.Effect<
348
- never,
349
- Form.Error<Entries> | ParseError,
350
- Form.Input<Entries>
351
- > {
351
+ toEffect(): Effect.Effect<Form.Input<Entries>, Form.Error<Entries> | ParseError> {
352
352
  return (
353
353
  Effect.all(this.entries, { concurrency: "unbounded" }) as any
354
354
  )
@@ -362,7 +362,7 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
362
362
 
363
363
  function buildSchema<Entries extends Form.AnyEntries>(
364
364
  entries: Entries
365
- ): S.Schema<Form.Context<Entries>, Form.Input<Entries>, Form.Output<Entries>> {
365
+ ): S.Schema<Form.Output<Entries>, Form.Input<Entries>, Form.Context<Entries>> {
366
366
  const schemas: any = {}
367
367
 
368
368
  for (const key of Reflect.ownKeys(entries)) {
@@ -389,9 +389,9 @@ const deriveMakeEntries = <
389
389
  I extends Readonly<Record<PropertyKey, any>>,
390
390
  O extends Readonly<Record<keyof I, any>>
391
391
  >(
392
- input: RefSubject.RefSubject<R, E, O> | Fx<R, E, O> | Effect.Effect<R, E, O>,
392
+ input: RefSubject.RefSubject<O, E, R> | Fx<O, E, R> | Effect.Effect<O, E, R>,
393
393
  ast: AST.AST
394
- ): Effect.Effect<R | Scope.Scope, never, DeriveEntries<R, E, I, O>> =>
394
+ ): Effect.Effect<DeriveEntries<R, E, I, O>, never, R | Scope.Scope> =>
395
395
  Effect.suspend(() => {
396
396
  switch (ast._tag) {
397
397
  case "TypeLiteral": {
@@ -418,7 +418,7 @@ const deriveMakeEntries = <
418
418
  FormEntry.derive<any, any, any>({
419
419
  name: prop.name,
420
420
  schema: S.make(ast)
421
- })(nested as Fx<R, E, any>)
421
+ })(nested as Fx<any, E, R>)
422
422
  )
423
423
  }
424
424
  }
@@ -439,9 +439,9 @@ const deriveMakeInputEntries = <
439
439
  I extends Readonly<Record<PropertyKey, any>>,
440
440
  O extends Readonly<Record<keyof I, any>>
441
441
  >(
442
- input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>,
442
+ input: RefSubject.RefSubject<I, E, R> | Fx<I, E, R> | Effect.Effect<I, E, R>,
443
443
  ast: AST.AST
444
- ): Effect.Effect<R | Scope.Scope, never, DeriveEntries<R, E, I, O>> =>
444
+ ): Effect.Effect<DeriveEntries<R, E, I, O>, never, R | Scope.Scope> =>
445
445
  Effect.suspend(() => {
446
446
  switch (ast._tag) {
447
447
  case "TypeLiteral": {
@@ -468,7 +468,7 @@ const deriveMakeInputEntries = <
468
468
  FormEntry.deriveInput<any, any, any>({
469
469
  name: prop.name,
470
470
  schema: S.make(ast)
471
- })(nested as Fx<R, E, any>)
471
+ })(nested as Fx<any, E, R>)
472
472
  )
473
473
  }
474
474
  }
@@ -483,13 +483,13 @@ const deriveMakeInputEntries = <
483
483
  }
484
484
  })
485
485
 
486
- const propOf = <R, E, O>(
486
+ const propOf = <O, E, R>(
487
487
  input:
488
- | RefSubject.RefSubject<R, E, O>
489
- | RefSubject.Computed<R, E, O>
490
- | RefSubject.Filtered<R, E, O>
491
- | Fx<R, E, O>
492
- | Effect.Effect<R, E, O>,
488
+ | RefSubject.RefSubject<O, E, R>
489
+ | RefSubject.Computed<O, E, R>
490
+ | RefSubject.Filtered<O, E, R>
491
+ | Fx<O, E, R>
492
+ | Effect.Effect<O, E, R>,
493
493
  key: keyof O
494
494
  ) => {
495
495
  if (TypeId in input) return core.map(input, (o) => o[key])
package/src/FormEntry.ts CHANGED
@@ -16,10 +16,10 @@ import { ComputedTypeId, RefSubjectTypeId } from "./TypeId.js"
16
16
  /**
17
17
  * @since 1.18.0
18
18
  */
19
- export interface FormEntry<out R, in out E, in out I, in out O> extends RefSubject.RefSubject<R, E | ParseError, I> {
19
+ export interface FormEntry<out R, in out E, in out I, in out O> extends RefSubject.RefSubject<I, E | ParseError, R> {
20
20
  readonly name: PropertyKey
21
- readonly schema: Schema.Schema<R, I, O>
22
- readonly decoded: RefSubject.Computed<R, E | ParseError, O>
21
+ readonly schema: Schema.Schema<O, I, R>
22
+ readonly decoded: RefSubject.Computed<O, E | ParseError, R>
23
23
  }
24
24
 
25
25
  /**
@@ -30,7 +30,7 @@ export namespace FormEntry {
30
30
  * @since 1.18.0
31
31
  */
32
32
  export interface Derived<R, R2, E, I, O> extends FormEntry<R, E, I, O> {
33
- readonly persist: Effect.Effect<R2, E | ParseError, O>
33
+ readonly persist: Effect.Effect<O, E | ParseError, R2>
34
34
  }
35
35
  }
36
36
 
@@ -39,7 +39,7 @@ export namespace FormEntry {
39
39
  */
40
40
  export interface FormEntryOptions<R, I, O> {
41
41
  readonly name: PropertyKey
42
- readonly schema: Schema.Schema<R, I, O>
42
+ readonly schema: Schema.Schema<O, I, R>
43
43
  }
44
44
 
45
45
  /**
@@ -50,11 +50,11 @@ export interface FormEntryOptions<R, I, O> {
50
50
  * @since 1.18.0
51
51
  */
52
52
  export type MakeFormEntry<R0, I, O> = {
53
- <R, E>(
54
- ref: RefSubject.RefSubject<R, E, O>
55
- ): Effect.Effect<R0 | R | Scope.Scope, never, FormEntry.Derived<never, R, E, I, O>>
56
- <R, E>(fx: Fx.Fx<R, E, O>): Effect.Effect<R0 | R | Scope.Scope, never, FormEntry<never, E, I, O>>
57
- <R, E>(effect: Effect.Effect<R, E, O>): Effect.Effect<R0 | R | Scope.Scope, never, FormEntry<never, E, I, O>>
53
+ <E, R>(
54
+ ref: RefSubject.RefSubject<O, E, R>
55
+ ): Effect.Effect<FormEntry.Derived<never, R, E, I, O>, never, R0 | R | Scope.Scope>
56
+ <E, R>(fx: Fx.Fx<O, E, R>): Effect.Effect<FormEntry<never, E, I, O>, never, R0 | R | Scope.Scope>
57
+ <E, R>(effect: Effect.Effect<O, E, R>): Effect.Effect<FormEntry<never, E, I, O>, never, R0 | R | Scope.Scope>
58
58
  }
59
59
 
60
60
  /**
@@ -62,11 +62,11 @@ export type MakeFormEntry<R0, I, O> = {
62
62
  * @since 1.20.0
63
63
  */
64
64
  export type MakeInputFormEntry<R0, I, O> = {
65
- <R, E>(
66
- ref: RefSubject.RefSubject<R, E, I>
67
- ): Effect.Effect<R | Scope.Scope, never, FormEntry.Derived<R0, R, E, I, O>>
68
- <R, E>(fx: Fx.Fx<R, E, I>): Effect.Effect<R | Scope.Scope, never, FormEntry<R0, E, I, O>>
69
- <R, E>(effect: Effect.Effect<R, E, I>): Effect.Effect<R | Scope.Scope, never, FormEntry<R0, E, I, O>>
65
+ <E, R>(
66
+ ref: RefSubject.RefSubject<I, E, R>
67
+ ): Effect.Effect<FormEntry.Derived<R0, R, E, I, O>, never, R | Scope.Scope>
68
+ <E, R>(fx: Fx.Fx<I, E, R>): Effect.Effect<FormEntry<R0, E, I, O>, never, R | Scope.Scope>
69
+ <E, R>(effect: Effect.Effect<I, E, R>): Effect.Effect<FormEntry<R0, E, I, O>, never, R | Scope.Scope>
70
70
  }
71
71
 
72
72
  /**
@@ -75,7 +75,7 @@ export type MakeInputFormEntry<R0, I, O> = {
75
75
  export function derive<R, I, O>(options: FormEntryOptions<R, I, O>): MakeFormEntry<R, I, O> {
76
76
  const encode = Schema.encode(options.schema)
77
77
  const decode = Schema.decode(options.schema)
78
- const makeFormEntry = <R2, E>(input: RefSubject.RefSubject<R2, E, O> | Fx.Fx<R2, E, O> | Effect.Effect<R2, E, O>) => {
78
+ const makeFormEntry = <R2, E>(input: RefSubject.RefSubject<O, E, R2> | Fx.Fx<O, E, R2> | Effect.Effect<O, E, R2>) => {
79
79
  const initial = Fx.mapEffect(Effect.isEffect(input) ? Fx.fromEffect(input) : input, (o) => encode(o, parseOptions))
80
80
 
81
81
  return Effect.map(
@@ -83,8 +83,8 @@ export function derive<R, I, O>(options: FormEntryOptions<R, I, O>): MakeFormEnt
83
83
  eq: Equivalence.make(Schema.from(options.schema))
84
84
  }),
85
85
  (inputRef): FormEntry<R, E, I, O> | FormEntry.Derived<R, R2, E, I, O> => {
86
- if (RefSubject.isRefSubject<R2, E, O>(input)) {
87
- const persist: Effect.Effect<R | R2, ParseError | E, O> = Effect.flatMap(
86
+ if (RefSubject.isRefSubject<O, E, R2>(input)) {
87
+ const persist: Effect.Effect<O, ParseError | E, R | R2> = Effect.flatMap(
88
88
  Effect.flatMap(
89
89
  inputRef,
90
90
  (i) => decode(i, parseOptions)
@@ -113,17 +113,17 @@ export function derive<R, I, O>(options: FormEntryOptions<R, I, O>): MakeFormEnt
113
113
  */
114
114
  export function deriveInput<R, I, O>(options: FormEntryOptions<R, I, O>): MakeInputFormEntry<R, I, O> {
115
115
  const decode = Schema.decode(options.schema)
116
- const makeFormEntry = <R2, E>(input: RefSubject.RefSubject<R2, E, I> | Fx.Fx<R2, E, I> | Effect.Effect<R2, E, I>) => {
117
- const initial: Fx.Fx<R2, E | ParseError, I> = Effect.isEffect(input) ? Fx.fromEffect(input) : input
116
+ const makeFormEntry = <R2, E>(input: RefSubject.RefSubject<I, E, R2> | Fx.Fx<I, E, R2> | Effect.Effect<I, E, R2>) => {
117
+ const initial: Fx.Fx<I, E | ParseError, R2> = Effect.isEffect(input) ? Fx.fromEffect(input) : input
118
118
 
119
119
  return Effect.map(
120
120
  RefSubject.make(initial, { eq: Equivalence.make(Schema.from(options.schema)) }),
121
121
  (inputRef): FormEntry<R, E, I, O> | FormEntry.Derived<R, R2, E, I, O> => {
122
122
  if (RefSubject.isRefSubject<R2, E, O>(input)) {
123
- const persist: Effect.Effect<R | R2, ParseError | E, O> = Effect.flatMap(
123
+ const persist: Effect.Effect<O, ParseError | E, R | R2> = Effect.flatMap(
124
124
  Effect.flatMap(
125
125
  inputRef,
126
- (i) => RefSubject.set(input as RefSubject.RefSubject<R2, E, I>, i)
126
+ (i) => RefSubject.set(input as RefSubject.RefSubject<I, E, R2>, i)
127
127
  ),
128
128
  (i) => decode(i, parseOptions)
129
129
  )
@@ -149,21 +149,21 @@ const parseOptions: ParseOptions = {
149
149
  onExcessProperty: "ignore"
150
150
  }
151
151
 
152
- class FromEntryImpl<R, E, I, O> extends FxEffectBase<R | Scope.Scope, E | ParseError, I, R, ParseError | E, I>
152
+ class FromEntryImpl<R, E, I, O> extends FxEffectBase<I, E | ParseError, R | Scope.Scope, I, ParseError | E, R>
153
153
  implements FormEntry<R, E, I, O>
154
154
  {
155
155
  readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
156
156
  readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
157
157
 
158
- readonly decoded: RefSubject.Computed<R, ParseError | E, O>
159
- readonly version: Effect.Effect<never, ParseError | E, number>
160
- readonly subscriberCount: Effect.Effect<never, never, number>
161
- readonly interrupt: Effect.Effect<never, never, void>
158
+ readonly decoded: RefSubject.Computed<O, ParseError | E, R>
159
+ readonly version: Effect.Effect<number, ParseError | E, R>
160
+ readonly subscriberCount: Effect.Effect<number, never, R>
161
+ readonly interrupt: Effect.Effect<void, never, R>
162
162
 
163
163
  constructor(
164
- readonly ref: RefSubject.RefSubject<never, E | ParseError, I>,
164
+ readonly ref: RefSubject.RefSubject<I, E | ParseError, R>,
165
165
  readonly name: PropertyKey,
166
- readonly schema: Schema.Schema<R, I, O>
166
+ readonly schema: Schema.Schema<O, I, R>
167
167
  ) {
168
168
  super()
169
169
 
@@ -174,25 +174,25 @@ class FromEntryImpl<R, E, I, O> extends FxEffectBase<R | Scope.Scope, E | ParseE
174
174
  this.interrupt = ref.interrupt
175
175
  }
176
176
 
177
- run<R3>(sink: Sink.Sink<R3, E | ParseError, I>): Effect.Effect<R3 | Scope.Scope, never, unknown> {
177
+ run<R3>(sink: Sink.Sink<I, E | ParseError, R3>): Effect.Effect<unknown, never, R | R3 | Scope.Scope> {
178
178
  return this.ref.run(sink)
179
179
  }
180
180
 
181
- toEffect(): Effect.Effect<never, E | ParseError, I> {
181
+ toEffect(): Effect.Effect<I, E | ParseError, R> {
182
182
  return this.ref
183
183
  }
184
184
 
185
- runUpdates<R2, E2, B>(
186
- f: (ref: RefSubject.GetSetDelete<never, E | ParseError, I>) => Effect.Effect<R2, E2, B>
187
- ): Effect.Effect<R2, E2, B> {
185
+ runUpdates<B, E2, R2>(
186
+ f: (ref: RefSubject.GetSetDelete<I, E | ParseError, R>) => Effect.Effect<B, E2, R2>
187
+ ): Effect.Effect<B, E2, R | R2> {
188
188
  return this.ref.runUpdates(f)
189
189
  }
190
190
 
191
- onFailure(cause: Cause<E | ParseError>): Effect.Effect<never, never, unknown> {
191
+ onFailure(cause: Cause<E | ParseError>): Effect.Effect<unknown, never, R> {
192
192
  return this.ref.onFailure(cause)
193
193
  }
194
194
 
195
- onSuccess(value: I): Effect.Effect<never, never, unknown> {
195
+ onSuccess(value: I): Effect.Effect<unknown, never, R> {
196
196
  return this.ref.onSuccess(value)
197
197
  }
198
198
  }
@@ -201,10 +201,10 @@ class DerivedFormEntryImpl<R, R2, E, I, O> extends FromEntryImpl<R, E, I, O>
201
201
  implements FormEntry.Derived<R, R2, E, I, O>
202
202
  {
203
203
  constructor(
204
- ref: RefSubject.RefSubject<never, E | ParseError, I>,
204
+ ref: RefSubject.RefSubject<I, E | ParseError>,
205
205
  name: PropertyKey,
206
- schema: Schema.Schema<R, I, O>,
207
- readonly persist: Effect.Effect<R2, E | ParseError, O>
206
+ schema: Schema.Schema<O, I, R>,
207
+ readonly persist: Effect.Effect<O, E | ParseError, R2>
208
208
  ) {
209
209
  super(ref, name, schema)
210
210
  }