effect 3.9.2 → 3.10.1

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 (207) 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/channel/channelExecutor.js +160 -161
  42. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  43. package/dist/cjs/internal/core.js +4 -4
  44. package/dist/cjs/internal/core.js.map +1 -1
  45. package/dist/cjs/internal/fiberRuntime.js +14 -12
  46. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  47. package/dist/cjs/internal/logger.js +7 -6
  48. package/dist/cjs/internal/logger.js.map +1 -1
  49. package/dist/cjs/internal/redacted.js +4 -0
  50. package/dist/cjs/internal/redacted.js.map +1 -1
  51. package/dist/cjs/internal/schema/errors.js +116 -0
  52. package/dist/cjs/internal/schema/errors.js.map +1 -0
  53. package/dist/cjs/internal/schema/filters.js +41 -0
  54. package/dist/cjs/internal/schema/filters.js.map +1 -0
  55. package/dist/cjs/internal/schema/util.js +96 -0
  56. package/dist/cjs/internal/schema/util.js.map +1 -0
  57. package/dist/cjs/internal/stm/core.js +2 -3
  58. package/dist/cjs/internal/stm/core.js.map +1 -1
  59. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  60. package/dist/cjs/internal/stm/tQueue.js +1 -2
  61. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  62. package/dist/cjs/internal/stm/tRef.js +6 -2
  63. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  64. package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
  65. package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
  66. package/dist/cjs/internal/stream.js +36 -16
  67. package/dist/cjs/internal/stream.js.map +1 -1
  68. package/dist/cjs/internal/version.js +1 -1
  69. package/dist/cjs/internal/version.js.map +1 -1
  70. package/dist/dts/Arbitrary.d.ts +45 -0
  71. package/dist/dts/Arbitrary.d.ts.map +1 -0
  72. package/dist/dts/Effect.d.ts +298 -30
  73. package/dist/dts/Effect.d.ts.map +1 -1
  74. package/dist/dts/FastCheck.d.ts +9 -0
  75. package/dist/dts/FastCheck.d.ts.map +1 -0
  76. package/dist/dts/Inspectable.d.ts +28 -0
  77. package/dist/dts/Inspectable.d.ts.map +1 -1
  78. package/dist/dts/JSONSchema.d.ts +181 -0
  79. package/dist/dts/JSONSchema.d.ts.map +1 -0
  80. package/dist/dts/ParseResult.d.ts +551 -0
  81. package/dist/dts/ParseResult.d.ts.map +1 -0
  82. package/dist/dts/Predicate.d.ts.map +1 -1
  83. package/dist/dts/Pretty.d.ts +26 -0
  84. package/dist/dts/Pretty.d.ts.map +1 -0
  85. package/dist/dts/Schema.d.ts +4562 -0
  86. package/dist/dts/Schema.d.ts.map +1 -0
  87. package/dist/dts/SchemaAST.d.ts +1321 -0
  88. package/dist/dts/SchemaAST.d.ts.map +1 -0
  89. package/dist/dts/Stream.d.ts +67 -2
  90. package/dist/dts/Stream.d.ts.map +1 -1
  91. package/dist/dts/TPubSub.d.ts +8 -0
  92. package/dist/dts/TPubSub.d.ts.map +1 -1
  93. package/dist/dts/TQueue.d.ts +7 -7
  94. package/dist/dts/TQueue.d.ts.map +1 -1
  95. package/dist/dts/TRef.d.ts +2 -1
  96. package/dist/dts/TRef.d.ts.map +1 -1
  97. package/dist/dts/TSubscriptionRef.d.ts +251 -0
  98. package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
  99. package/dist/dts/index.d.ts +32 -0
  100. package/dist/dts/index.d.ts.map +1 -1
  101. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  102. package/dist/dts/internal/schema/errors.d.ts +2 -0
  103. package/dist/dts/internal/schema/errors.d.ts.map +1 -0
  104. package/dist/dts/internal/schema/filters.d.ts +2 -0
  105. package/dist/dts/internal/schema/filters.d.ts.map +1 -0
  106. package/dist/dts/internal/schema/util.d.ts +2 -0
  107. package/dist/dts/internal/schema/util.d.ts.map +1 -0
  108. package/dist/dts/internal/stm/tRef.d.ts +3 -1
  109. package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
  110. package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
  111. package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
  112. package/dist/dts/internal/stream.d.ts.map +1 -1
  113. package/dist/esm/Arbitrary.js +472 -0
  114. package/dist/esm/Arbitrary.js.map +1 -0
  115. package/dist/esm/Effect.js +256 -18
  116. package/dist/esm/Effect.js.map +1 -1
  117. package/dist/esm/FastCheck.js +9 -0
  118. package/dist/esm/FastCheck.js.map +1 -0
  119. package/dist/esm/Inspectable.js +39 -2
  120. package/dist/esm/Inspectable.js.map +1 -1
  121. package/dist/esm/JSONSchema.js +408 -0
  122. package/dist/esm/JSONSchema.js.map +1 -0
  123. package/dist/esm/ParseResult.js +1503 -0
  124. package/dist/esm/ParseResult.js.map +1 -0
  125. package/dist/esm/Predicate.js +2 -1
  126. package/dist/esm/Predicate.js.map +1 -1
  127. package/dist/esm/Pretty.js +173 -0
  128. package/dist/esm/Pretty.js.map +1 -0
  129. package/dist/esm/Schema.js +5328 -0
  130. package/dist/esm/Schema.js.map +1 -0
  131. package/dist/esm/SchemaAST.js +2300 -0
  132. package/dist/esm/SchemaAST.js.map +1 -0
  133. package/dist/esm/Stream.js +14 -0
  134. package/dist/esm/Stream.js.map +1 -1
  135. package/dist/esm/TPubSub.js +8 -0
  136. package/dist/esm/TPubSub.js.map +1 -1
  137. package/dist/esm/TQueue.js.map +1 -1
  138. package/dist/esm/TRef.js.map +1 -1
  139. package/dist/esm/TSubscriptionRef.js +87 -0
  140. package/dist/esm/TSubscriptionRef.js.map +1 -0
  141. package/dist/esm/index.js +32 -0
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/internal/cause.js +3 -3
  144. package/dist/esm/internal/cause.js.map +1 -1
  145. package/dist/esm/internal/channel/channelExecutor.js +160 -161
  146. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  147. package/dist/esm/internal/core.js +4 -4
  148. package/dist/esm/internal/core.js.map +1 -1
  149. package/dist/esm/internal/fiberRuntime.js +14 -12
  150. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  151. package/dist/esm/internal/logger.js +7 -6
  152. package/dist/esm/internal/logger.js.map +1 -1
  153. package/dist/esm/internal/redacted.js +4 -0
  154. package/dist/esm/internal/redacted.js.map +1 -1
  155. package/dist/esm/internal/schema/errors.js +87 -0
  156. package/dist/esm/internal/schema/errors.js.map +1 -0
  157. package/dist/esm/internal/schema/filters.js +35 -0
  158. package/dist/esm/internal/schema/filters.js.map +1 -0
  159. package/dist/esm/internal/schema/util.js +78 -0
  160. package/dist/esm/internal/schema/util.js.map +1 -0
  161. package/dist/esm/internal/stm/core.js +1 -2
  162. package/dist/esm/internal/stm/core.js.map +1 -1
  163. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  164. package/dist/esm/internal/stm/tQueue.js +1 -2
  165. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  166. package/dist/esm/internal/stm/tRef.js +5 -1
  167. package/dist/esm/internal/stm/tRef.js.map +1 -1
  168. package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
  169. package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
  170. package/dist/esm/internal/stream.js +33 -15
  171. package/dist/esm/internal/stream.js.map +1 -1
  172. package/dist/esm/internal/version.js +1 -1
  173. package/dist/esm/internal/version.js.map +1 -1
  174. package/package.json +68 -1
  175. package/src/Arbitrary.ts +563 -0
  176. package/src/Effect.ts +302 -31
  177. package/src/FastCheck.ts +9 -0
  178. package/src/Inspectable.ts +56 -2
  179. package/src/JSONSchema.ts +601 -0
  180. package/src/ParseResult.ts +2027 -0
  181. package/src/Predicate.ts +3 -1
  182. package/src/Pretty.ts +204 -0
  183. package/src/Schema.ts +10388 -0
  184. package/src/SchemaAST.ts +2827 -0
  185. package/src/Stream.ts +77 -9
  186. package/src/TPubSub.ts +9 -0
  187. package/src/TQueue.ts +7 -7
  188. package/src/TRef.ts +2 -1
  189. package/src/TSubscriptionRef.ts +284 -0
  190. package/src/index.ts +40 -0
  191. package/src/internal/cause.ts +3 -3
  192. package/src/internal/channel/channelExecutor.ts +213 -214
  193. package/src/internal/core-effect.ts +2 -2
  194. package/src/internal/core.ts +4 -4
  195. package/src/internal/fiberRuntime.ts +14 -12
  196. package/src/internal/logger.ts +7 -6
  197. package/src/internal/redacted.ts +4 -0
  198. package/src/internal/schema/errors.ts +189 -0
  199. package/src/internal/schema/filters.ts +86 -0
  200. package/src/internal/schema/util.ts +113 -0
  201. package/src/internal/stm/core.ts +1 -2
  202. package/src/internal/stm/tPubSub.ts +1 -0
  203. package/src/internal/stm/tQueue.ts +2 -2
  204. package/src/internal/stm/tRef.ts +7 -2
  205. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  206. package/src/internal/stream.ts +97 -20
  207. package/src/internal/version.ts +1 -1
@@ -101,247 +101,246 @@ export class ChannelExecutor<
101
101
  } else {
102
102
  if (Effect.isEffect(this._currentChannel)) {
103
103
  this._currentChannel = core.fromEffect(this._currentChannel) as core.Primitive
104
- } else {
105
- switch (this._currentChannel._tag) {
106
- case ChannelOpCodes.OP_BRACKET_OUT: {
107
- result = this.runBracketOut(this._currentChannel)
108
- break
109
- }
104
+ }
105
+ switch (this._currentChannel._tag) {
106
+ case ChannelOpCodes.OP_BRACKET_OUT: {
107
+ result = this.runBracketOut(this._currentChannel)
108
+ break
109
+ }
110
110
 
111
- case ChannelOpCodes.OP_BRIDGE: {
112
- const bridgeInput = this._currentChannel.input
113
-
114
- // PipeTo(left, Bridge(queue, channel))
115
- // In a fiber: repeatedly run left and push its outputs to the queue
116
- // Add a finalizer to interrupt the fiber and close the executor
117
- this._currentChannel = this._currentChannel.channel as core.Primitive
118
-
119
- if (this._input !== undefined) {
120
- const inputExecutor = this._input
121
- this._input = undefined
122
-
123
- const drainer = (): Effect.Effect<unknown, never, Env> =>
124
- Effect.flatMap(bridgeInput.awaitRead(), () =>
125
- Effect.suspend(() => {
126
- const state = inputExecutor.run() as ChannelState.Primitive
127
- switch (state._tag) {
128
- case ChannelStateOpCodes.OP_DONE: {
129
- return Exit.match(inputExecutor.getDone(), {
130
- onFailure: (cause) => bridgeInput.error(cause),
131
- onSuccess: (value) => bridgeInput.done(value)
132
- })
133
- }
134
- case ChannelStateOpCodes.OP_EMIT: {
135
- return Effect.flatMap(
136
- bridgeInput.emit(inputExecutor.getEmit()),
137
- () => drainer()
138
- )
139
- }
140
- case ChannelStateOpCodes.OP_FROM_EFFECT: {
141
- return Effect.matchCauseEffect(state.effect, {
142
- onFailure: (cause) => bridgeInput.error(cause),
143
- onSuccess: () => drainer()
144
- })
145
- }
146
- case ChannelStateOpCodes.OP_READ: {
147
- return readUpstream(
148
- state,
149
- () => drainer(),
150
- (cause) => bridgeInput.error(cause)
151
- )
152
- }
111
+ case ChannelOpCodes.OP_BRIDGE: {
112
+ const bridgeInput = this._currentChannel.input
113
+
114
+ // PipeTo(left, Bridge(queue, channel))
115
+ // In a fiber: repeatedly run left and push its outputs to the queue
116
+ // Add a finalizer to interrupt the fiber and close the executor
117
+ this._currentChannel = this._currentChannel.channel as core.Primitive
118
+
119
+ if (this._input !== undefined) {
120
+ const inputExecutor = this._input
121
+ this._input = undefined
122
+
123
+ const drainer = (): Effect.Effect<unknown, never, Env> =>
124
+ Effect.flatMap(bridgeInput.awaitRead(), () =>
125
+ Effect.suspend(() => {
126
+ const state = inputExecutor.run() as ChannelState.Primitive
127
+ switch (state._tag) {
128
+ case ChannelStateOpCodes.OP_DONE: {
129
+ return Exit.match(inputExecutor.getDone(), {
130
+ onFailure: (cause) => bridgeInput.error(cause),
131
+ onSuccess: (value) => bridgeInput.done(value)
132
+ })
133
+ }
134
+ case ChannelStateOpCodes.OP_EMIT: {
135
+ return Effect.flatMap(
136
+ bridgeInput.emit(inputExecutor.getEmit()),
137
+ () => drainer()
138
+ )
139
+ }
140
+ case ChannelStateOpCodes.OP_FROM_EFFECT: {
141
+ return Effect.matchCauseEffect(state.effect, {
142
+ onFailure: (cause) => bridgeInput.error(cause),
143
+ onSuccess: () => drainer()
144
+ })
153
145
  }
154
- })) as Effect.Effect<unknown, never, Env>
155
-
156
- result = ChannelState.fromEffect(
157
- Effect.flatMap(
158
- Effect.forkDaemon(drainer()),
159
- (fiber) =>
160
- Effect.sync(() =>
161
- this.addFinalizer((exit) =>
162
- Effect.flatMap(Fiber.interrupt(fiber), () =>
163
- Effect.suspend(() => {
164
- const effect = this.restorePipe(exit, inputExecutor)
165
- return effect !== undefined ? effect : Effect.void
166
- }))
146
+ case ChannelStateOpCodes.OP_READ: {
147
+ return readUpstream(
148
+ state,
149
+ () => drainer(),
150
+ (cause) => bridgeInput.error(cause)
167
151
  )
152
+ }
153
+ }
154
+ })) as Effect.Effect<unknown, never, Env>
155
+
156
+ result = ChannelState.fromEffect(
157
+ Effect.flatMap(
158
+ Effect.forkDaemon(Effect.interruptible(drainer())),
159
+ (fiber) =>
160
+ Effect.sync(() =>
161
+ this.addFinalizer((exit) =>
162
+ Effect.flatMap(Fiber.interrupt(fiber), () =>
163
+ Effect.suspend(() => {
164
+ const effect = this.restorePipe(exit, inputExecutor)
165
+ return effect !== undefined ? effect : Effect.void
166
+ }))
168
167
  )
169
- )
168
+ )
170
169
  )
171
- }
172
-
173
- break
174
- }
175
-
176
- case ChannelOpCodes.OP_CONCAT_ALL: {
177
- const executor: ErasedExecutor<Env> = new ChannelExecutor(
178
- this._currentChannel.value() as Channel.Channel<
179
- never,
180
- unknown,
181
- never,
182
- unknown,
183
- never,
184
- unknown,
185
- Env
186
- >,
187
- this._providedEnv,
188
- (effect) =>
189
- Effect.sync(() => {
190
- const prevLastClose = this._closeLastSubstream === undefined
191
- ? Effect.void
192
- : this._closeLastSubstream
193
- this._closeLastSubstream = pipe(prevLastClose, Effect.zipRight(effect))
194
- })
195
- )
196
- executor._input = this._input
197
-
198
- const channel = this._currentChannel
199
- this._activeSubexecutor = new Subexecutor.PullFromUpstream(
200
- executor,
201
- (value) => channel.k(value),
202
- undefined,
203
- [],
204
- (x, y) => channel.combineInners(x, y),
205
- (x, y) => channel.combineAll(x, y),
206
- (request) => channel.onPull(request),
207
- (value) => channel.onEmit(value)
208
170
  )
171
+ }
209
172
 
210
- this._closeLastSubstream = undefined
211
- this._currentChannel = undefined
173
+ break
174
+ }
212
175
 
213
- break
214
- }
176
+ case ChannelOpCodes.OP_CONCAT_ALL: {
177
+ const executor: ErasedExecutor<Env> = new ChannelExecutor(
178
+ this._currentChannel.value() as Channel.Channel<
179
+ never,
180
+ unknown,
181
+ never,
182
+ unknown,
183
+ never,
184
+ unknown,
185
+ Env
186
+ >,
187
+ this._providedEnv,
188
+ (effect) =>
189
+ Effect.sync(() => {
190
+ const prevLastClose = this._closeLastSubstream === undefined
191
+ ? Effect.void
192
+ : this._closeLastSubstream
193
+ this._closeLastSubstream = pipe(prevLastClose, Effect.zipRight(effect))
194
+ })
195
+ )
196
+ executor._input = this._input
197
+
198
+ const channel = this._currentChannel
199
+ this._activeSubexecutor = new Subexecutor.PullFromUpstream(
200
+ executor,
201
+ (value) => channel.k(value),
202
+ undefined,
203
+ [],
204
+ (x, y) => channel.combineInners(x, y),
205
+ (x, y) => channel.combineAll(x, y),
206
+ (request) => channel.onPull(request),
207
+ (value) => channel.onEmit(value)
208
+ )
209
+
210
+ this._closeLastSubstream = undefined
211
+ this._currentChannel = undefined
212
+
213
+ break
214
+ }
215
215
 
216
- case ChannelOpCodes.OP_EMIT: {
217
- this._emitted = this._currentChannel.out
218
- this._currentChannel = (this._activeSubexecutor !== undefined ?
219
- undefined :
220
- core.void) as core.Primitive | undefined
221
- result = ChannelState.Emit()
222
- break
223
- }
216
+ case ChannelOpCodes.OP_EMIT: {
217
+ this._emitted = this._currentChannel.out
218
+ this._currentChannel = (this._activeSubexecutor !== undefined ?
219
+ undefined :
220
+ core.void) as core.Primitive | undefined
221
+ result = ChannelState.Emit()
222
+ break
223
+ }
224
224
 
225
- case ChannelOpCodes.OP_ENSURING: {
226
- this.runEnsuring(this._currentChannel)
227
- break
228
- }
225
+ case ChannelOpCodes.OP_ENSURING: {
226
+ this.runEnsuring(this._currentChannel)
227
+ break
228
+ }
229
229
 
230
- case ChannelOpCodes.OP_FAIL: {
231
- result = this.doneHalt(this._currentChannel.error())
232
- break
233
- }
230
+ case ChannelOpCodes.OP_FAIL: {
231
+ result = this.doneHalt(this._currentChannel.error())
232
+ break
233
+ }
234
234
 
235
- case ChannelOpCodes.OP_FOLD: {
236
- this._doneStack.push(this._currentChannel.k as ErasedContinuation<Env>)
237
- this._currentChannel = this._currentChannel.channel as core.Primitive
238
- break
239
- }
235
+ case ChannelOpCodes.OP_FOLD: {
236
+ this._doneStack.push(this._currentChannel.k as ErasedContinuation<Env>)
237
+ this._currentChannel = this._currentChannel.channel as core.Primitive
238
+ break
239
+ }
240
240
 
241
- case ChannelOpCodes.OP_FROM_EFFECT: {
242
- const effect = this._providedEnv === undefined ?
243
- this._currentChannel.effect() :
244
- pipe(
245
- this._currentChannel.effect(),
246
- Effect.provide(this._providedEnv)
247
- )
241
+ case ChannelOpCodes.OP_FROM_EFFECT: {
242
+ const effect = this._providedEnv === undefined ?
243
+ this._currentChannel.effect() :
244
+ pipe(
245
+ this._currentChannel.effect(),
246
+ Effect.provide(this._providedEnv)
247
+ )
248
248
 
249
- result = ChannelState.fromEffect(
250
- Effect.matchCauseEffect(effect, {
251
- onFailure: (cause) => {
252
- const state = this.doneHalt(cause)
253
- return state !== undefined && ChannelState.isFromEffect(state) ?
254
- state.effect :
255
- Effect.void
256
- },
257
- onSuccess: (value) => {
258
- const state = this.doneSucceed(value)
259
- return state !== undefined && ChannelState.isFromEffect(state) ?
260
- state.effect :
261
- Effect.void
262
- }
263
- })
264
- ) as ChannelState.ChannelState<unknown, Env> | undefined
249
+ result = ChannelState.fromEffect(
250
+ Effect.matchCauseEffect(effect, {
251
+ onFailure: (cause) => {
252
+ const state = this.doneHalt(cause)
253
+ return state !== undefined && ChannelState.isFromEffect(state) ?
254
+ state.effect :
255
+ Effect.void
256
+ },
257
+ onSuccess: (value) => {
258
+ const state = this.doneSucceed(value)
259
+ return state !== undefined && ChannelState.isFromEffect(state) ?
260
+ state.effect :
261
+ Effect.void
262
+ }
263
+ })
264
+ ) as ChannelState.ChannelState<unknown, Env> | undefined
265
265
 
266
- break
267
- }
266
+ break
267
+ }
268
268
 
269
- case ChannelOpCodes.OP_PIPE_TO: {
270
- const previousInput = this._input
269
+ case ChannelOpCodes.OP_PIPE_TO: {
270
+ const previousInput = this._input
271
271
 
272
- const leftExec: ErasedExecutor<Env> = new ChannelExecutor(
273
- this._currentChannel.left() as Channel.Channel<never, unknown, never, unknown, never, unknown, Env>,
274
- this._providedEnv,
275
- (effect) => this._executeCloseLastSubstream(effect)
276
- )
277
- leftExec._input = previousInput
278
- this._input = leftExec
272
+ const leftExec: ErasedExecutor<Env> = new ChannelExecutor(
273
+ this._currentChannel.left() as Channel.Channel<never, unknown, never, unknown, never, unknown, Env>,
274
+ this._providedEnv,
275
+ (effect) => this._executeCloseLastSubstream(effect)
276
+ )
277
+ leftExec._input = previousInput
278
+ this._input = leftExec
279
279
 
280
- this.addFinalizer((exit) => {
281
- const effect = this.restorePipe(exit, previousInput)
282
- return effect !== undefined ? effect : Effect.void
283
- })
280
+ this.addFinalizer((exit) => {
281
+ const effect = this.restorePipe(exit, previousInput)
282
+ return effect !== undefined ? effect : Effect.void
283
+ })
284
284
 
285
- this._currentChannel = this._currentChannel.right() as core.Primitive
285
+ this._currentChannel = this._currentChannel.right() as core.Primitive
286
286
 
287
- break
288
- }
287
+ break
288
+ }
289
289
 
290
- case ChannelOpCodes.OP_PROVIDE: {
291
- const previousEnv = this._providedEnv
292
- this._providedEnv = this._currentChannel.context()
293
- this._currentChannel = this._currentChannel.inner as core.Primitive
294
- this.addFinalizer(() =>
295
- Effect.sync(() => {
296
- this._providedEnv = previousEnv
297
- })
298
- )
299
- break
300
- }
290
+ case ChannelOpCodes.OP_PROVIDE: {
291
+ const previousEnv = this._providedEnv
292
+ this._providedEnv = this._currentChannel.context()
293
+ this._currentChannel = this._currentChannel.inner as core.Primitive
294
+ this.addFinalizer(() =>
295
+ Effect.sync(() => {
296
+ this._providedEnv = previousEnv
297
+ })
298
+ )
299
+ break
300
+ }
301
301
 
302
- case ChannelOpCodes.OP_READ: {
303
- const read = this._currentChannel
304
- result = ChannelState.Read(
305
- this._input!,
306
- identity,
307
- (emitted) => {
308
- try {
309
- this._currentChannel = read.more(emitted) as core.Primitive
310
- } catch (error) {
311
- this._currentChannel = read.done.onExit(Exit.die(error)) as core.Primitive
312
- }
313
- return undefined
314
- },
315
- (exit) => {
316
- const onExit = (exit: Exit.Exit<unknown, unknown>): core.Primitive => {
317
- return read.done.onExit(exit) as core.Primitive
318
- }
319
- this._currentChannel = onExit(exit)
320
- return undefined
302
+ case ChannelOpCodes.OP_READ: {
303
+ const read = this._currentChannel
304
+ result = ChannelState.Read(
305
+ this._input!,
306
+ identity,
307
+ (emitted) => {
308
+ try {
309
+ this._currentChannel = read.more(emitted) as core.Primitive
310
+ } catch (error) {
311
+ this._currentChannel = read.done.onExit(Exit.die(error)) as core.Primitive
321
312
  }
322
- )
323
- break
324
- }
313
+ return undefined
314
+ },
315
+ (exit) => {
316
+ const onExit = (exit: Exit.Exit<unknown, unknown>): core.Primitive => {
317
+ return read.done.onExit(exit) as core.Primitive
318
+ }
319
+ this._currentChannel = onExit(exit)
320
+ return undefined
321
+ }
322
+ )
323
+ break
324
+ }
325
325
 
326
- case ChannelOpCodes.OP_SUCCEED: {
327
- result = this.doneSucceed(this._currentChannel.evaluate())
328
- break
329
- }
326
+ case ChannelOpCodes.OP_SUCCEED: {
327
+ result = this.doneSucceed(this._currentChannel.evaluate())
328
+ break
329
+ }
330
330
 
331
- case ChannelOpCodes.OP_SUCCEED_NOW: {
332
- result = this.doneSucceed(this._currentChannel.terminal)
333
- break
334
- }
331
+ case ChannelOpCodes.OP_SUCCEED_NOW: {
332
+ result = this.doneSucceed(this._currentChannel.terminal)
333
+ break
334
+ }
335
335
 
336
- case ChannelOpCodes.OP_SUSPEND: {
337
- this._currentChannel = this._currentChannel.channel() as core.Primitive
338
- break
339
- }
336
+ case ChannelOpCodes.OP_SUSPEND: {
337
+ this._currentChannel = this._currentChannel.channel() as core.Primitive
338
+ break
339
+ }
340
340
 
341
- default: {
342
- // @ts-expect-error
343
- this._currentChannel._tag
344
- }
341
+ default: {
342
+ // @ts-expect-error
343
+ this._currentChannel._tag
345
344
  }
346
345
  }
347
346
  }
@@ -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
 
@@ -341,7 +341,7 @@ export const structuredMessage = (u: unknown): unknown => {
341
341
  return String(u)
342
342
  }
343
343
  default: {
344
- return u
344
+ return Inspectable.toJSON(u)
345
345
  }
346
346
  }
347
347
  }
@@ -488,13 +488,13 @@ const prettyLoggerTty = (options: {
488
488
 
489
489
  if (messageIndex < message.length) {
490
490
  for (; messageIndex < message.length; messageIndex++) {
491
- log(message[messageIndex])
491
+ log(Inspectable.redact(message[messageIndex]))
492
492
  }
493
493
  }
494
494
 
495
495
  if (HashMap.size(annotations) > 0) {
496
496
  for (const [key, value] of annotations) {
497
- log(color(`${key}:`, colors.bold, colors.white), value)
497
+ log(color(`${key}:`, colors.bold, colors.white), Inspectable.redact(value))
498
498
  }
499
499
  }
500
500
 
@@ -553,16 +553,17 @@ const prettyLoggerBrowser = (options: {
553
553
 
554
554
  if (messageIndex < message.length) {
555
555
  for (; messageIndex < message.length; messageIndex++) {
556
- console.log(message[messageIndex])
556
+ console.log(Inspectable.redact(message[messageIndex]))
557
557
  }
558
558
  }
559
559
 
560
560
  if (HashMap.size(annotations) > 0) {
561
561
  for (const [key, value] of annotations) {
562
+ const redacted = Inspectable.redact(value)
562
563
  if (options.colors) {
563
- console.log(`%c${key}:`, "color:gray", value)
564
+ console.log(`%c${key}:`, "color:gray", redacted)
564
565
  } else {
565
- console.log(`${key}:`, value)
566
+ console.log(`${key}:`, redacted)
566
567
  }
567
568
  }
568
569
  }
@@ -1,3 +1,4 @@
1
+ import { NodeInspectSymbol } from "effect/Inspectable"
1
2
  import * as Equal from "../Equal.js"
2
3
  import { pipe } from "../Function.js"
3
4
  import { globalValue } from "../GlobalValue.js"
@@ -34,6 +35,9 @@ export const proto = {
34
35
  toJSON() {
35
36
  return "<redacted>"
36
37
  },
38
+ [NodeInspectSymbol]() {
39
+ return "<redacted>"
40
+ },
37
41
  [Hash.symbol]<T>(this: Redacted.Redacted<T>): number {
38
42
  return pipe(
39
43
  Hash.hash(RedactedSymbolKey),