effect 3.9.2 → 3.10.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 (202) hide show
  1. package/Arbitrary/package.json +6 -0
  2. package/FastCheck/package.json +6 -0
  3. package/JSONSchema/package.json +6 -0
  4. package/ParseResult/package.json +6 -0
  5. package/Pretty/package.json +6 -0
  6. package/Schema/package.json +6 -0
  7. package/SchemaAST/package.json +6 -0
  8. package/TSubscriptionRef/package.json +6 -0
  9. package/dist/cjs/Arbitrary.js +490 -0
  10. package/dist/cjs/Arbitrary.js.map +1 -0
  11. package/dist/cjs/Effect.js +247 -16
  12. package/dist/cjs/Effect.js.map +1 -1
  13. package/dist/cjs/FastCheck.js +17 -0
  14. package/dist/cjs/FastCheck.js.map +1 -0
  15. package/dist/cjs/Inspectable.js +43 -3
  16. package/dist/cjs/Inspectable.js.map +1 -1
  17. package/dist/cjs/JSONSchema.js +418 -0
  18. package/dist/cjs/JSONSchema.js.map +1 -0
  19. package/dist/cjs/ParseResult.js +1539 -0
  20. package/dist/cjs/ParseResult.js.map +1 -0
  21. package/dist/cjs/Predicate.js +3 -1
  22. package/dist/cjs/Predicate.js.map +1 -1
  23. package/dist/cjs/Pretty.js +183 -0
  24. package/dist/cjs/Pretty.js.map +1 -0
  25. package/dist/cjs/Schema.js +5529 -0
  26. package/dist/cjs/Schema.js.map +1 -0
  27. package/dist/cjs/SchemaAST.js +2365 -0
  28. package/dist/cjs/SchemaAST.js.map +1 -0
  29. package/dist/cjs/Stream.js +17 -3
  30. package/dist/cjs/Stream.js.map +1 -1
  31. package/dist/cjs/TPubSub.js +9 -1
  32. package/dist/cjs/TPubSub.js.map +1 -1
  33. package/dist/cjs/TQueue.js.map +1 -1
  34. package/dist/cjs/TRef.js.map +1 -1
  35. package/dist/cjs/TSubscriptionRef.js +96 -0
  36. package/dist/cjs/TSubscriptionRef.js.map +1 -0
  37. package/dist/cjs/index.js +18 -2
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/internal/cause.js +2 -2
  40. package/dist/cjs/internal/cause.js.map +1 -1
  41. package/dist/cjs/internal/core.js +4 -4
  42. package/dist/cjs/internal/core.js.map +1 -1
  43. package/dist/cjs/internal/fiberRuntime.js +14 -12
  44. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  45. package/dist/cjs/internal/logger.js +7 -6
  46. package/dist/cjs/internal/logger.js.map +1 -1
  47. package/dist/cjs/internal/redacted.js +4 -0
  48. package/dist/cjs/internal/redacted.js.map +1 -1
  49. package/dist/cjs/internal/schema/errors.js +116 -0
  50. package/dist/cjs/internal/schema/errors.js.map +1 -0
  51. package/dist/cjs/internal/schema/filters.js +41 -0
  52. package/dist/cjs/internal/schema/filters.js.map +1 -0
  53. package/dist/cjs/internal/schema/util.js +96 -0
  54. package/dist/cjs/internal/schema/util.js.map +1 -0
  55. package/dist/cjs/internal/stm/core.js +2 -3
  56. package/dist/cjs/internal/stm/core.js.map +1 -1
  57. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  58. package/dist/cjs/internal/stm/tQueue.js +1 -2
  59. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  60. package/dist/cjs/internal/stm/tRef.js +6 -2
  61. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  62. package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
  63. package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
  64. package/dist/cjs/internal/stream.js +36 -16
  65. package/dist/cjs/internal/stream.js.map +1 -1
  66. package/dist/cjs/internal/version.js +1 -1
  67. package/dist/cjs/internal/version.js.map +1 -1
  68. package/dist/dts/Arbitrary.d.ts +45 -0
  69. package/dist/dts/Arbitrary.d.ts.map +1 -0
  70. package/dist/dts/Effect.d.ts +298 -30
  71. package/dist/dts/Effect.d.ts.map +1 -1
  72. package/dist/dts/FastCheck.d.ts +9 -0
  73. package/dist/dts/FastCheck.d.ts.map +1 -0
  74. package/dist/dts/Inspectable.d.ts +28 -0
  75. package/dist/dts/Inspectable.d.ts.map +1 -1
  76. package/dist/dts/JSONSchema.d.ts +181 -0
  77. package/dist/dts/JSONSchema.d.ts.map +1 -0
  78. package/dist/dts/ParseResult.d.ts +551 -0
  79. package/dist/dts/ParseResult.d.ts.map +1 -0
  80. package/dist/dts/Predicate.d.ts.map +1 -1
  81. package/dist/dts/Pretty.d.ts +26 -0
  82. package/dist/dts/Pretty.d.ts.map +1 -0
  83. package/dist/dts/Schema.d.ts +4562 -0
  84. package/dist/dts/Schema.d.ts.map +1 -0
  85. package/dist/dts/SchemaAST.d.ts +1321 -0
  86. package/dist/dts/SchemaAST.d.ts.map +1 -0
  87. package/dist/dts/Stream.d.ts +67 -2
  88. package/dist/dts/Stream.d.ts.map +1 -1
  89. package/dist/dts/TPubSub.d.ts +8 -0
  90. package/dist/dts/TPubSub.d.ts.map +1 -1
  91. package/dist/dts/TQueue.d.ts +7 -7
  92. package/dist/dts/TQueue.d.ts.map +1 -1
  93. package/dist/dts/TRef.d.ts +2 -1
  94. package/dist/dts/TRef.d.ts.map +1 -1
  95. package/dist/dts/TSubscriptionRef.d.ts +251 -0
  96. package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
  97. package/dist/dts/index.d.ts +32 -0
  98. package/dist/dts/index.d.ts.map +1 -1
  99. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  100. package/dist/dts/internal/schema/errors.d.ts +2 -0
  101. package/dist/dts/internal/schema/errors.d.ts.map +1 -0
  102. package/dist/dts/internal/schema/filters.d.ts +2 -0
  103. package/dist/dts/internal/schema/filters.d.ts.map +1 -0
  104. package/dist/dts/internal/schema/util.d.ts +2 -0
  105. package/dist/dts/internal/schema/util.d.ts.map +1 -0
  106. package/dist/dts/internal/stm/tRef.d.ts +3 -1
  107. package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
  108. package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
  109. package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
  110. package/dist/dts/internal/stream.d.ts.map +1 -1
  111. package/dist/esm/Arbitrary.js +472 -0
  112. package/dist/esm/Arbitrary.js.map +1 -0
  113. package/dist/esm/Effect.js +256 -18
  114. package/dist/esm/Effect.js.map +1 -1
  115. package/dist/esm/FastCheck.js +9 -0
  116. package/dist/esm/FastCheck.js.map +1 -0
  117. package/dist/esm/Inspectable.js +39 -2
  118. package/dist/esm/Inspectable.js.map +1 -1
  119. package/dist/esm/JSONSchema.js +408 -0
  120. package/dist/esm/JSONSchema.js.map +1 -0
  121. package/dist/esm/ParseResult.js +1503 -0
  122. package/dist/esm/ParseResult.js.map +1 -0
  123. package/dist/esm/Predicate.js +2 -1
  124. package/dist/esm/Predicate.js.map +1 -1
  125. package/dist/esm/Pretty.js +173 -0
  126. package/dist/esm/Pretty.js.map +1 -0
  127. package/dist/esm/Schema.js +5328 -0
  128. package/dist/esm/Schema.js.map +1 -0
  129. package/dist/esm/SchemaAST.js +2300 -0
  130. package/dist/esm/SchemaAST.js.map +1 -0
  131. package/dist/esm/Stream.js +14 -0
  132. package/dist/esm/Stream.js.map +1 -1
  133. package/dist/esm/TPubSub.js +8 -0
  134. package/dist/esm/TPubSub.js.map +1 -1
  135. package/dist/esm/TQueue.js.map +1 -1
  136. package/dist/esm/TRef.js.map +1 -1
  137. package/dist/esm/TSubscriptionRef.js +87 -0
  138. package/dist/esm/TSubscriptionRef.js.map +1 -0
  139. package/dist/esm/index.js +32 -0
  140. package/dist/esm/index.js.map +1 -1
  141. package/dist/esm/internal/cause.js +3 -3
  142. package/dist/esm/internal/cause.js.map +1 -1
  143. package/dist/esm/internal/core.js +4 -4
  144. package/dist/esm/internal/core.js.map +1 -1
  145. package/dist/esm/internal/fiberRuntime.js +14 -12
  146. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  147. package/dist/esm/internal/logger.js +7 -6
  148. package/dist/esm/internal/logger.js.map +1 -1
  149. package/dist/esm/internal/redacted.js +4 -0
  150. package/dist/esm/internal/redacted.js.map +1 -1
  151. package/dist/esm/internal/schema/errors.js +87 -0
  152. package/dist/esm/internal/schema/errors.js.map +1 -0
  153. package/dist/esm/internal/schema/filters.js +35 -0
  154. package/dist/esm/internal/schema/filters.js.map +1 -0
  155. package/dist/esm/internal/schema/util.js +78 -0
  156. package/dist/esm/internal/schema/util.js.map +1 -0
  157. package/dist/esm/internal/stm/core.js +1 -2
  158. package/dist/esm/internal/stm/core.js.map +1 -1
  159. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  160. package/dist/esm/internal/stm/tQueue.js +1 -2
  161. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  162. package/dist/esm/internal/stm/tRef.js +5 -1
  163. package/dist/esm/internal/stm/tRef.js.map +1 -1
  164. package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
  165. package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
  166. package/dist/esm/internal/stream.js +33 -15
  167. package/dist/esm/internal/stream.js.map +1 -1
  168. package/dist/esm/internal/version.js +1 -1
  169. package/dist/esm/internal/version.js.map +1 -1
  170. package/package.json +68 -1
  171. package/src/Arbitrary.ts +563 -0
  172. package/src/Effect.ts +302 -31
  173. package/src/FastCheck.ts +9 -0
  174. package/src/Inspectable.ts +56 -2
  175. package/src/JSONSchema.ts +601 -0
  176. package/src/ParseResult.ts +2027 -0
  177. package/src/Predicate.ts +3 -1
  178. package/src/Pretty.ts +204 -0
  179. package/src/Schema.ts +10388 -0
  180. package/src/SchemaAST.ts +2827 -0
  181. package/src/Stream.ts +77 -9
  182. package/src/TPubSub.ts +9 -0
  183. package/src/TQueue.ts +7 -7
  184. package/src/TRef.ts +2 -1
  185. package/src/TSubscriptionRef.ts +284 -0
  186. package/src/index.ts +40 -0
  187. package/src/internal/cause.ts +3 -3
  188. package/src/internal/core-effect.ts +2 -2
  189. package/src/internal/core.ts +4 -4
  190. package/src/internal/fiberRuntime.ts +14 -12
  191. package/src/internal/logger.ts +7 -6
  192. package/src/internal/redacted.ts +4 -0
  193. package/src/internal/schema/errors.ts +189 -0
  194. package/src/internal/schema/filters.ts +86 -0
  195. package/src/internal/schema/util.ts +113 -0
  196. package/src/internal/stm/core.ts +1 -2
  197. package/src/internal/stm/tPubSub.ts +1 -0
  198. package/src/internal/stm/tQueue.ts +2 -2
  199. package/src/internal/stm/tRef.ts +7 -2
  200. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  201. package/src/internal/stream.ts +97 -20
  202. package/src/internal/version.ts +1 -1
package/src/Stream.ts CHANGED
@@ -29,6 +29,8 @@ import type * as Sink from "./Sink.js"
29
29
  import type * as Emit from "./StreamEmit.js"
30
30
  import type * as HaltStrategy from "./StreamHaltStrategy.js"
31
31
  import type * as Take from "./Take.js"
32
+ import type { TPubSub } from "./TPubSub.js"
33
+ import type { TDequeue } from "./TQueue.js"
32
34
  import type * as Tracer from "./Tracer.js"
33
35
  import type { Covariant, NoInfer, TupleOf } from "./Types.js"
34
36
  import type * as Unify from "./Unify.js"
@@ -3322,6 +3324,14 @@ export const fromPubSub: {
3322
3324
  ): Stream<A>
3323
3325
  } = internal.fromPubSub
3324
3326
 
3327
+ /**
3328
+ * Creates a stream from a subscription to a `TPubSub`.
3329
+ *
3330
+ * @since 3.10.0
3331
+ * @category constructors
3332
+ */
3333
+ export const fromTPubSub: <A>(pubsub: TPubSub<A>) => Stream<A> = internal.fromTPubSub
3334
+
3325
3335
  /**
3326
3336
  * Creates a new `Stream` from an iterable collection of values.
3327
3337
  *
@@ -3403,6 +3413,14 @@ export const fromQueue: <A>(
3403
3413
  }
3404
3414
  ) => Stream<A> = internal.fromQueue
3405
3415
 
3416
+ /**
3417
+ * Creates a stream from a TQueue of values
3418
+ *
3419
+ * @since 3.10.0
3420
+ * @category constructors
3421
+ */
3422
+ export const fromTQueue: <A>(queue: TDequeue<A>) => Stream<A> = internal.fromTQueue
3423
+
3406
3424
  /**
3407
3425
  * Creates a stream from a `ReadableStream`.
3408
3426
  *
@@ -3411,10 +3429,32 @@ export const fromQueue: <A>(
3411
3429
  * @since 2.0.0
3412
3430
  * @category constructors
3413
3431
  */
3414
- export const fromReadableStream: <A, E>(
3415
- evaluate: LazyArg<ReadableStream<A>>,
3416
- onError: (error: unknown) => E
3417
- ) => Stream<A, E> = internal.fromReadableStream
3432
+ export const fromReadableStream: {
3433
+ /**
3434
+ * Creates a stream from a `ReadableStream`.
3435
+ *
3436
+ * See https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.
3437
+ *
3438
+ * @since 2.0.0
3439
+ * @category constructors
3440
+ */
3441
+ <A, E>(
3442
+ options: {
3443
+ readonly evaluate: LazyArg<ReadableStream<A>>
3444
+ readonly onError: (error: unknown) => E
3445
+ readonly releaseLockOnEnd?: boolean | undefined
3446
+ }
3447
+ ): Stream<A, E>
3448
+ /**
3449
+ * Creates a stream from a `ReadableStream`.
3450
+ *
3451
+ * See https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.
3452
+ *
3453
+ * @since 2.0.0
3454
+ * @category constructors
3455
+ */
3456
+ <A, E>(evaluate: LazyArg<ReadableStream<A>>, onError: (error: unknown) => E): Stream<A, E>
3457
+ } = internal.fromReadableStream
3418
3458
 
3419
3459
  /**
3420
3460
  * Creates a stream from a `ReadableStreamBYOBReader`.
@@ -3425,11 +3465,39 @@ export const fromReadableStream: <A, E>(
3425
3465
  * @since 2.0.0
3426
3466
  * @category constructors
3427
3467
  */
3428
- export const fromReadableStreamByob: <E>(
3429
- evaluate: LazyArg<ReadableStream<Uint8Array>>,
3430
- onError: (error: unknown) => E,
3431
- allocSize?: number
3432
- ) => Stream<Uint8Array, E> = internal.fromReadableStreamByob
3468
+ export const fromReadableStreamByob: {
3469
+ /**
3470
+ * Creates a stream from a `ReadableStreamBYOBReader`.
3471
+ *
3472
+ * See https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.
3473
+ *
3474
+ * @param allocSize Controls the size of the underlying `ArrayBuffer` (defaults to `4096`).
3475
+ * @since 2.0.0
3476
+ * @category constructors
3477
+ */
3478
+ <E>(
3479
+ options: {
3480
+ readonly evaluate: LazyArg<ReadableStream<Uint8Array>>
3481
+ readonly onError: (error: unknown) => E
3482
+ readonly bufferSize?: number | undefined
3483
+ readonly releaseLockOnEnd?: boolean | undefined
3484
+ }
3485
+ ): Stream<Uint8Array, E>
3486
+ /**
3487
+ * Creates a stream from a `ReadableStreamBYOBReader`.
3488
+ *
3489
+ * See https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.
3490
+ *
3491
+ * @param allocSize Controls the size of the underlying `ArrayBuffer` (defaults to `4096`).
3492
+ * @since 2.0.0
3493
+ * @category constructors
3494
+ */
3495
+ <E>(
3496
+ evaluate: LazyArg<ReadableStream<Uint8Array>>,
3497
+ onError: (error: unknown) => E,
3498
+ allocSize?: number
3499
+ ): Stream<Uint8Array, E>
3500
+ } = internal.fromReadableStreamByob
3433
3501
 
3434
3502
  /**
3435
3503
  * Creates a stream from a `Schedule` that does not require any further
package/src/TPubSub.ts CHANGED
@@ -107,6 +107,15 @@ export const isEmpty: <A>(self: TPubSub<A>) => STM.STM<boolean> = internal.isEmp
107
107
  */
108
108
  export const isFull: <A>(self: TPubSub<A>) => STM.STM<boolean> = internal.isFull
109
109
 
110
+ /**
111
+ * Interrupts any fibers that are suspended on `offer` or `take`. Future calls
112
+ * to `offer*` and `take*` will be interrupted immediately.
113
+ *
114
+ * @since 2.0.0
115
+ * @category utils
116
+ */
117
+ export const shutdown: <A>(self: TPubSub<A>) => STM.STM<void> = internal.shutdown
118
+
110
119
  /**
111
120
  * Returns `true` if `shutdown` has been called, otherwise returns `false`.
112
121
  *
package/src/TQueue.ts CHANGED
@@ -206,7 +206,7 @@ export const isTEnqueue: (u: unknown) => u is TEnqueue<unknown> = internal.isTEn
206
206
  * @since 2.0.0
207
207
  * @category mutations
208
208
  */
209
- export const awaitShutdown: <A>(self: TQueue<A>) => STM.STM<void> = internal.awaitShutdown
209
+ export const awaitShutdown: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<void> = internal.awaitShutdown
210
210
 
211
211
  /**
212
212
  * Creates a bounded queue with the back pressure strategy. The queue will
@@ -226,7 +226,7 @@ export const bounded: <A>(requestedCapacity: number) => STM.STM<TQueue<A>> = int
226
226
  * @since 2.0.0
227
227
  * @category getters
228
228
  */
229
- export const capacity: <A>(self: TQueue<A>) => number = internal.capacity
229
+ export const capacity: <A>(self: TDequeue<A> | TEnqueue<A>) => number = internal.capacity
230
230
 
231
231
  /**
232
232
  * Creates a bounded queue with the dropping strategy. The queue will drop new
@@ -245,7 +245,7 @@ export const dropping: <A>(requestedCapacity: number) => STM.STM<TQueue<A>> = in
245
245
  * @since 2.0.0
246
246
  * @category getters
247
247
  */
248
- export const isEmpty: <A>(self: TQueue<A>) => STM.STM<boolean> = internal.isEmpty
248
+ export const isEmpty: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<boolean> = internal.isEmpty
249
249
 
250
250
  /**
251
251
  * Returns `true` if the `TQueue` contains at least one element, `false`
@@ -254,7 +254,7 @@ export const isEmpty: <A>(self: TQueue<A>) => STM.STM<boolean> = internal.isEmpt
254
254
  * @since 2.0.0
255
255
  * @category getters
256
256
  */
257
- export const isFull: <A>(self: TQueue<A>) => STM.STM<boolean> = internal.isFull
257
+ export const isFull: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<boolean> = internal.isFull
258
258
 
259
259
  /**
260
260
  * Returns `true` if `shutdown` has been called, otherwise returns `false`.
@@ -262,7 +262,7 @@ export const isFull: <A>(self: TQueue<A>) => STM.STM<boolean> = internal.isFull
262
262
  * @since 2.0.0
263
263
  * @category getters
264
264
  */
265
- export const isShutdown: <A>(self: TQueue<A>) => STM.STM<boolean> = internal.isShutdown
265
+ export const isShutdown: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<boolean> = internal.isShutdown
266
266
 
267
267
  /**
268
268
  * Places one value in the queue.
@@ -409,7 +409,7 @@ export const seek: {
409
409
  * @since 2.0.0
410
410
  * @category mutations
411
411
  */
412
- export const shutdown: <A>(self: TQueue<A>) => STM.STM<void> = internal.shutdown
412
+ export const shutdown: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<void> = internal.shutdown
413
413
 
414
414
  /**
415
415
  * Retrieves the size of the queue, which is equal to the number of elements
@@ -419,7 +419,7 @@ export const shutdown: <A>(self: TQueue<A>) => STM.STM<void> = internal.shutdown
419
419
  * @since 2.0.0
420
420
  * @category getters
421
421
  */
422
- export const size: <A>(self: TQueue<A>) => STM.STM<number> = internal.size
422
+ export const size: <A>(self: TDequeue<A> | TEnqueue<A>) => STM.STM<number> = internal.size
423
423
 
424
424
  /**
425
425
  * Creates a bounded queue with the sliding strategy. The queue will add new
package/src/TRef.ts CHANGED
@@ -7,6 +7,7 @@ import type * as TxnId from "./internal/stm/stm/txnId.js"
7
7
  import type * as Versioned from "./internal/stm/stm/versioned.js"
8
8
  import * as internal from "./internal/stm/tRef.js"
9
9
  import type * as Option from "./Option.js"
10
+ import type { Pipeable } from "./Pipeable.js"
10
11
  import type * as STM from "./STM.js"
11
12
  import type * as Types from "./Types.js"
12
13
 
@@ -34,7 +35,7 @@ export type TRefTypeId = typeof TRefTypeId
34
35
  * @since 2.0.0
35
36
  * @category models
36
37
  */
37
- export interface TRef<in out A> extends TRef.Variance<A> {
38
+ export interface TRef<in out A> extends TRef.Variance<A>, Pipeable {
38
39
  /**
39
40
  * Note: the method is unbound, exposed only for potential extensions.
40
41
  */
@@ -0,0 +1,284 @@
1
+ /**
2
+ * @since 3.10.0
3
+ */
4
+ import type * as Effect from "./Effect.js"
5
+ import * as internal from "./internal/stm/tSubscriptionRef.js"
6
+ import type * as Option from "./Option.js"
7
+ import type * as Scope from "./Scope.js"
8
+ import type * as STM from "./STM.js"
9
+ import type * as Stream from "./Stream.js"
10
+ import type * as TPubSub from "./TPubSub.js"
11
+ import type * as TQueue from "./TQueue.js"
12
+ import type * as TRef from "./TRef.js"
13
+ import type * as Types from "./Types.js"
14
+
15
+ /**
16
+ * @since 3.10.0
17
+ * @category symbols
18
+ */
19
+ export const TSubscriptionRefTypeId: unique symbol = internal.TSubscriptionRefTypeId
20
+
21
+ /**
22
+ * @since 3.10.0
23
+ * @category symbols
24
+ */
25
+ export type TSubscriptionRefTypeId = typeof TSubscriptionRefTypeId
26
+
27
+ /**
28
+ * A `TSubscriptionRef<A>` is a `TRef` that can be subscribed to in order to
29
+ * receive a `TDequeue<A>` of the current value and all committed changes to the value.
30
+ *
31
+ * @since 3.10.0
32
+ * @category models
33
+ */
34
+ export interface TSubscriptionRef<in out A> extends TSubscriptionRef.Variance<A>, TRef.TRef<A> {
35
+ /** @internal */
36
+ readonly ref: TRef.TRef<A>
37
+ /** @internal */
38
+ readonly pubsub: TPubSub.TPubSub<A>
39
+ /** @internal */
40
+ modify<B>(f: (a: A) => readonly [B, A]): STM.STM<B>
41
+
42
+ /**
43
+ * A TDequeue containing the current value of the `Ref` as well as all changes
44
+ * to that value.
45
+ */
46
+ readonly changes: STM.STM<TQueue.TDequeue<A>>
47
+ }
48
+
49
+ /**
50
+ * @since 3.10.0
51
+ */
52
+ export declare namespace TSubscriptionRef {
53
+ /**
54
+ * @since 3.10.0
55
+ * @category models
56
+ */
57
+ export interface Variance<in out A> {
58
+ readonly [TSubscriptionRefTypeId]: {
59
+ readonly _A: Types.Invariant<A>
60
+ }
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @since 3.10.0
66
+ * @category mutations
67
+ */
68
+ export const get: <A>(self: TSubscriptionRef<A>) => STM.STM<A> = internal.get
69
+
70
+ /**
71
+ * @since 3.10.0
72
+ * @category mutations
73
+ */
74
+ export const getAndSet: {
75
+ /**
76
+ * @since 3.10.0
77
+ * @category mutations
78
+ */
79
+ <A>(value: A): (self: TSubscriptionRef<A>) => STM.STM<A>
80
+ /**
81
+ * @since 3.10.0
82
+ * @category mutations
83
+ */
84
+ <A>(self: TSubscriptionRef<A>, value: A): STM.STM<A>
85
+ } = internal.getAndSet
86
+
87
+ /**
88
+ * @since 3.10.0
89
+ * @category mutations
90
+ */
91
+ export const getAndUpdate: {
92
+ /**
93
+ * @since 3.10.0
94
+ * @category mutations
95
+ */
96
+ <A>(f: (a: A) => A): (self: TSubscriptionRef<A>) => STM.STM<A>
97
+ /**
98
+ * @since 3.10.0
99
+ * @category mutations
100
+ */
101
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => A): STM.STM<A>
102
+ } = internal.getAndUpdate
103
+
104
+ /**
105
+ * @since 3.10.0
106
+ * @category mutations
107
+ */
108
+ export const getAndUpdateSome: {
109
+ /**
110
+ * @since 3.10.0
111
+ * @category mutations
112
+ */
113
+ <A>(f: (a: A) => Option.Option<A>): (self: TSubscriptionRef<A>) => STM.STM<A>
114
+ /**
115
+ * @since 3.10.0
116
+ * @category mutations
117
+ */
118
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => Option.Option<A>): STM.STM<A>
119
+ } = internal.getAndUpdateSome
120
+
121
+ /**
122
+ * @since 3.10.0
123
+ * @category constructors
124
+ */
125
+ export const make: <A>(value: A) => STM.STM<TSubscriptionRef<A>> = internal.make
126
+
127
+ /**
128
+ * @since 3.10.0
129
+ * @category mutations
130
+ */
131
+ export const modify: {
132
+ /**
133
+ * @since 3.10.0
134
+ * @category mutations
135
+ */
136
+ <A, B>(f: (a: A) => readonly [B, A]): (self: TSubscriptionRef<A>) => STM.STM<B>
137
+ /**
138
+ * @since 3.10.0
139
+ * @category mutations
140
+ */
141
+ <A, B>(self: TSubscriptionRef<A>, f: (a: A) => readonly [B, A]): STM.STM<B>
142
+ } = internal.modify
143
+
144
+ /**
145
+ * @since 3.10.0
146
+ * @category mutations
147
+ */
148
+ export const modifySome: {
149
+ /**
150
+ * @since 3.10.0
151
+ * @category mutations
152
+ */
153
+ <A, B>(fallback: B, f: (a: A) => Option.Option<readonly [B, A]>): (self: TSubscriptionRef<A>) => STM.STM<B>
154
+ /**
155
+ * @since 3.10.0
156
+ * @category mutations
157
+ */
158
+ <A, B>(
159
+ self: TSubscriptionRef<A>,
160
+ fallback: B,
161
+ f: (a: A) => Option.Option<readonly [B, A]>
162
+ ): STM.STM<B>
163
+ } = internal.modifySome
164
+
165
+ /**
166
+ * @since 3.10.0
167
+ * @category mutations
168
+ */
169
+ export const set: {
170
+ /**
171
+ * @since 3.10.0
172
+ * @category mutations
173
+ */
174
+ <A>(value: A): (self: TSubscriptionRef<A>) => STM.STM<void>
175
+ /**
176
+ * @since 3.10.0
177
+ * @category mutations
178
+ */
179
+ <A>(self: TSubscriptionRef<A>, value: A): STM.STM<void>
180
+ } = internal.set
181
+
182
+ /**
183
+ * @since 3.10.0
184
+ * @category mutations
185
+ */
186
+ export const setAndGet: {
187
+ /**
188
+ * @since 3.10.0
189
+ * @category mutations
190
+ */
191
+ <A>(value: A): (self: TSubscriptionRef<A>) => STM.STM<A>
192
+ /**
193
+ * @since 3.10.0
194
+ * @category mutations
195
+ */
196
+ <A>(self: TSubscriptionRef<A>, value: A): STM.STM<A>
197
+ } = internal.setAndGet
198
+
199
+ /**
200
+ * @since 3.10.0
201
+ * @category mutations
202
+ */
203
+ export const update: {
204
+ /**
205
+ * @since 3.10.0
206
+ * @category mutations
207
+ */
208
+ <A>(f: (a: A) => A): (self: TSubscriptionRef<A>) => STM.STM<void>
209
+ /**
210
+ * @since 3.10.0
211
+ * @category mutations
212
+ */
213
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => A): STM.STM<void>
214
+ } = internal.update
215
+
216
+ /**
217
+ * @since 3.10.0
218
+ * @category mutations
219
+ */
220
+ export const updateAndGet: {
221
+ /**
222
+ * @since 3.10.0
223
+ * @category mutations
224
+ */
225
+ <A>(f: (a: A) => A): (self: TSubscriptionRef<A>) => STM.STM<A>
226
+ /**
227
+ * @since 3.10.0
228
+ * @category mutations
229
+ */
230
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => A): STM.STM<A>
231
+ } = internal.updateAndGet
232
+
233
+ /**
234
+ * @since 3.10.0
235
+ * @category mutations
236
+ */
237
+ export const updateSome: {
238
+ /**
239
+ * @since 3.10.0
240
+ * @category mutations
241
+ */
242
+ <A>(f: (a: A) => Option.Option<A>): (self: TSubscriptionRef<A>) => STM.STM<void>
243
+ /**
244
+ * @since 3.10.0
245
+ * @category mutations
246
+ */
247
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => Option.Option<A>): STM.STM<void>
248
+ } = internal.updateSome
249
+
250
+ /**
251
+ * @since 3.10.0
252
+ * @category mutations
253
+ */
254
+ export const updateSomeAndGet: {
255
+ /**
256
+ * @since 3.10.0
257
+ * @category mutations
258
+ */
259
+ <A>(f: (a: A) => Option.Option<A>): (self: TSubscriptionRef<A>) => STM.STM<A>
260
+ /**
261
+ * @since 3.10.0
262
+ * @category mutations
263
+ */
264
+ <A>(self: TSubscriptionRef<A>, f: (a: A) => Option.Option<A>): STM.STM<A>
265
+ } = internal.updateSomeAndGet
266
+
267
+ /**
268
+ * @since 3.10.0
269
+ * @category mutations
270
+ */
271
+ export const changesScoped: <A>(self: TSubscriptionRef<A>) => Effect.Effect<TQueue.TDequeue<A>, never, Scope.Scope> =
272
+ internal.changesScoped
273
+
274
+ /**
275
+ * @since 3.10.0
276
+ * @category mutations
277
+ */
278
+ export const changesStream: <A>(self: TSubscriptionRef<A>) => Stream.Stream<A> = internal.changesStream
279
+
280
+ /**
281
+ * @since 3.10.0
282
+ * @category mutations
283
+ */
284
+ export const changes: <A>(self: TSubscriptionRef<A>) => STM.STM<TQueue.TDequeue<A>> = (self) => self.changes
package/src/index.ts CHANGED
@@ -29,6 +29,11 @@ export {
29
29
  unsafeCoerce
30
30
  } from "./Function.js"
31
31
 
32
+ /**
33
+ * @since 3.10.0
34
+ */
35
+ export * as Arbitrary from "./Arbitrary.js"
36
+
32
37
  /**
33
38
  * This module provides utility functions for working with arrays in TypeScript.
34
39
  *
@@ -262,6 +267,11 @@ export * as ExecutionStrategy from "./ExecutionStrategy.js"
262
267
  */
263
268
  export * as Exit from "./Exit.js"
264
269
 
270
+ /**
271
+ * @since 3.10.0
272
+ */
273
+ export * as FastCheck from "./FastCheck.js"
274
+
265
275
  /**
266
276
  * @since 2.0.0
267
277
  */
@@ -354,6 +364,11 @@ export * as Inspectable from "./Inspectable.js"
354
364
  */
355
365
  export * as Iterable from "./Iterable.js"
356
366
 
367
+ /**
368
+ * @since 3.10.0
369
+ */
370
+ export * as JSONSchema from "./JSONSchema.js"
371
+
357
372
  /**
358
373
  * @since 2.0.0
359
374
  */
@@ -574,6 +589,11 @@ export * as Order from "./Order.js"
574
589
  */
575
590
  export * as Ordering from "./Ordering.js"
576
591
 
592
+ /**
593
+ * @since 3.10.0
594
+ */
595
+ export * as ParseResult from "./ParseResult.js"
596
+
577
597
  /**
578
598
  * @since 2.0.0
579
599
  */
@@ -589,6 +609,11 @@ export * as Pool from "./Pool.js"
589
609
  */
590
610
  export * as Predicate from "./Predicate.js"
591
611
 
612
+ /**
613
+ * @since 3.10.0
614
+ */
615
+ export * as Pretty from "./Pretty.js"
616
+
592
617
  /**
593
618
  * @since 2.0.0
594
619
  */
@@ -735,6 +760,16 @@ export * as ScheduleIntervals from "./ScheduleIntervals.js"
735
760
  */
736
761
  export * as Scheduler from "./Scheduler.js"
737
762
 
763
+ /**
764
+ * @since 3.10.0
765
+ */
766
+ export * as Schema from "./Schema.js"
767
+
768
+ /**
769
+ * @since 3.10.0
770
+ */
771
+ export * as SchemaAST from "./SchemaAST.js"
772
+
738
773
  /**
739
774
  * @since 2.0.0
740
775
  */
@@ -895,6 +930,11 @@ export * as TSemaphore from "./TSemaphore.js"
895
930
  */
896
931
  export * as TSet from "./TSet.js"
897
932
 
933
+ /**
934
+ * @since 3.10.0
935
+ */
936
+ export * as TSubscriptionRef from "./TSubscriptionRef.js"
937
+
898
938
  /**
899
939
  * @since 2.0.0
900
940
  */
@@ -8,7 +8,7 @@ import { constFalse, constTrue, dual, identity, pipe } from "../Function.js"
8
8
  import { globalValue } from "../GlobalValue.js"
9
9
  import * as Hash from "../Hash.js"
10
10
  import * as HashSet from "../HashSet.js"
11
- import { NodeInspectSymbol, toJSON } from "../Inspectable.js"
11
+ import { NodeInspectSymbol, stringifyCircular, toJSON } from "../Inspectable.js"
12
12
  import * as Option from "../Option.js"
13
13
  import { pipeArguments } from "../Pipeable.js"
14
14
  import type { Predicate, Refinement } from "../Predicate.js"
@@ -1042,7 +1042,7 @@ class PrettyError extends globalThis.Error implements Cause.PrettyError {
1042
1042
  * 1) If the input `u` is already a string, it's considered a message.
1043
1043
  * 2) If `u` is an Error instance with a message defined, it uses the message.
1044
1044
  * 3) If `u` has a user-defined `toString()` method, it uses that method.
1045
- * 4) Otherwise, it uses `JSON.stringify` to produce a string representation and uses it as the error message,
1045
+ * 4) Otherwise, it uses `Inspectable.stringifyCircular` to produce a string representation and uses it as the error message,
1046
1046
  * with "Error" added as a prefix.
1047
1047
  *
1048
1048
  * @internal
@@ -1070,7 +1070,7 @@ export const prettyErrorMessage = (u: unknown): string => {
1070
1070
  // something's off, rollback to json
1071
1071
  }
1072
1072
  // 4)
1073
- return JSON.stringify(u)
1073
+ return stringifyCircular(u)
1074
1074
  }
1075
1075
 
1076
1076
  const locationRegex = /\((.*)\)/
@@ -85,7 +85,7 @@ export const try_: {
85
85
  readonly try: LazyArg<A>
86
86
  readonly catch: (error: unknown) => E
87
87
  }): Effect.Effect<A, E>
88
- <A>(evaluate: LazyArg<A>): Effect.Effect<A, Cause.UnknownException>
88
+ <A>(thunk: LazyArg<A>): Effect.Effect<A, Cause.UnknownException>
89
89
  } = <A, E>(
90
90
  arg: LazyArg<A> | {
91
91
  readonly try: LazyArg<A>
@@ -1656,7 +1656,7 @@ export const tryPromise: {
1656
1656
  readonly catch: (error: unknown) => E
1657
1657
  }
1658
1658
  ): Effect.Effect<A, E>
1659
- <A>(try_: (signal: AbortSignal) => PromiseLike<A>): Effect.Effect<A, Cause.UnknownException>
1659
+ <A>(evaluate: (signal: AbortSignal) => PromiseLike<A>): Effect.Effect<A, Cause.UnknownException>
1660
1660
  } = <A, E>(
1661
1661
  arg: ((signal: AbortSignal) => PromiseLike<A>) | {
1662
1662
  readonly try: (signal: AbortSignal) => PromiseLike<A>
@@ -521,13 +521,13 @@ export const unsafeAsync = <A, E = never, R = never>(
521
521
 
522
522
  /* @internal */
523
523
  export const async = <A, E = never, R = never>(
524
- register: (
524
+ resume: (
525
525
  callback: (_: Effect.Effect<A, E, R>) => void,
526
526
  signal: AbortSignal
527
527
  ) => void | Effect.Effect<void, never, R>,
528
528
  blockingOn: FiberId.FiberId = FiberId.none
529
529
  ): Effect.Effect<A, E, R> => {
530
- return custom(register, function() {
530
+ return custom(resume, function() {
531
531
  let backingResume: ((_: Effect.Effect<A, E, R>) => void) | undefined = undefined
532
532
  let pendingEffect: Effect.Effect<A, E, R> | undefined = undefined
533
533
  function proxyResume(effect: Effect.Effect<A, E, R>) {
@@ -1216,9 +1216,9 @@ export const suspend = <A, E, R>(effect: LazyArg<Effect.Effect<A, E, R>>): Effec
1216
1216
  flatMap(sync(effect), identity)
1217
1217
 
1218
1218
  /* @internal */
1219
- export const sync = <A>(evaluate: LazyArg<A>): Effect.Effect<A> => {
1219
+ export const sync = <A>(thunk: LazyArg<A>): Effect.Effect<A> => {
1220
1220
  const effect = new EffectPrimitive(OpCodes.OP_SYNC) as any
1221
- effect.effect_instruction_i0 = evaluate
1221
+ effect.effect_instruction_i0 = thunk
1222
1222
  return effect
1223
1223
  }
1224
1224
 
@@ -827,18 +827,20 @@ export class FiberRuntime<in out A, in out E = never> extends Effectable.Class<A
827
827
  if (HashSet.size(loggers) > 0) {
828
828
  const clockService = Context.get(this.getFiberRef(defaultServices.currentServices), clock.clockTag)
829
829
  const date = new Date(clockService.unsafeCurrentTimeMillis())
830
- for (const logger of loggers) {
831
- logger.log({
832
- fiberId: this.id(),
833
- logLevel,
834
- message,
835
- cause,
836
- context: contextMap,
837
- spans,
838
- annotations,
839
- date
840
- })
841
- }
830
+ Inspectable.withRedactableContext(contextMap, () => {
831
+ for (const logger of loggers) {
832
+ logger.log({
833
+ fiberId: this.id(),
834
+ logLevel,
835
+ message,
836
+ cause,
837
+ context: contextMap,
838
+ spans,
839
+ annotations,
840
+ date
841
+ })
842
+ }
843
+ })
842
844
  }
843
845
  }
844
846