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.
- package/Arbitrary/package.json +6 -0
- package/FastCheck/package.json +6 -0
- package/JSONSchema/package.json +6 -0
- package/ParseResult/package.json +6 -0
- package/Pretty/package.json +6 -0
- package/Schema/package.json +6 -0
- package/SchemaAST/package.json +6 -0
- package/TSubscriptionRef/package.json +6 -0
- package/dist/cjs/Arbitrary.js +490 -0
- package/dist/cjs/Arbitrary.js.map +1 -0
- package/dist/cjs/Effect.js +247 -16
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FastCheck.js +17 -0
- package/dist/cjs/FastCheck.js.map +1 -0
- package/dist/cjs/Inspectable.js +43 -3
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/JSONSchema.js +418 -0
- package/dist/cjs/JSONSchema.js.map +1 -0
- package/dist/cjs/ParseResult.js +1539 -0
- package/dist/cjs/ParseResult.js.map +1 -0
- package/dist/cjs/Predicate.js +3 -1
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Pretty.js +183 -0
- package/dist/cjs/Pretty.js.map +1 -0
- package/dist/cjs/Schema.js +5529 -0
- package/dist/cjs/Schema.js.map +1 -0
- package/dist/cjs/SchemaAST.js +2365 -0
- package/dist/cjs/SchemaAST.js.map +1 -0
- package/dist/cjs/Stream.js +17 -3
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/TPubSub.js +9 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSubscriptionRef.js +96 -0
- package/dist/cjs/TSubscriptionRef.js.map +1 -0
- package/dist/cjs/index.js +18 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cause.js +2 -2
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +160 -161
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/core.js +4 -4
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +14 -12
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/logger.js +7 -6
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/redacted.js +4 -0
- package/dist/cjs/internal/redacted.js.map +1 -1
- package/dist/cjs/internal/schema/errors.js +116 -0
- package/dist/cjs/internal/schema/errors.js.map +1 -0
- package/dist/cjs/internal/schema/filters.js +41 -0
- package/dist/cjs/internal/schema/filters.js.map +1 -0
- package/dist/cjs/internal/schema/util.js +96 -0
- package/dist/cjs/internal/schema/util.js.map +1 -0
- package/dist/cjs/internal/stm/core.js +2 -3
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js +1 -2
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js +6 -2
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
- package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
- package/dist/cjs/internal/stream.js +36 -16
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Arbitrary.d.ts +45 -0
- package/dist/dts/Arbitrary.d.ts.map +1 -0
- package/dist/dts/Effect.d.ts +298 -30
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FastCheck.d.ts +9 -0
- package/dist/dts/FastCheck.d.ts.map +1 -0
- package/dist/dts/Inspectable.d.ts +28 -0
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts +181 -0
- package/dist/dts/JSONSchema.d.ts.map +1 -0
- package/dist/dts/ParseResult.d.ts +551 -0
- package/dist/dts/ParseResult.d.ts.map +1 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Pretty.d.ts +26 -0
- package/dist/dts/Pretty.d.ts.map +1 -0
- package/dist/dts/Schema.d.ts +4562 -0
- package/dist/dts/Schema.d.ts.map +1 -0
- package/dist/dts/SchemaAST.d.ts +1321 -0
- package/dist/dts/SchemaAST.d.ts.map +1 -0
- package/dist/dts/Stream.d.ts +67 -2
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +8 -0
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +7 -7
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +2 -1
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSubscriptionRef.d.ts +251 -0
- package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
- package/dist/dts/index.d.ts +32 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/schema/errors.d.ts +2 -0
- package/dist/dts/internal/schema/errors.d.ts.map +1 -0
- package/dist/dts/internal/schema/filters.d.ts +2 -0
- package/dist/dts/internal/schema/filters.d.ts.map +1 -0
- package/dist/dts/internal/schema/util.d.ts +2 -0
- package/dist/dts/internal/schema/util.d.ts.map +1 -0
- package/dist/dts/internal/stm/tRef.d.ts +3 -1
- package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
- package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
- package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Arbitrary.js +472 -0
- package/dist/esm/Arbitrary.js.map +1 -0
- package/dist/esm/Effect.js +256 -18
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FastCheck.js +9 -0
- package/dist/esm/FastCheck.js.map +1 -0
- package/dist/esm/Inspectable.js +39 -2
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/JSONSchema.js +408 -0
- package/dist/esm/JSONSchema.js.map +1 -0
- package/dist/esm/ParseResult.js +1503 -0
- package/dist/esm/ParseResult.js.map +1 -0
- package/dist/esm/Predicate.js +2 -1
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Pretty.js +173 -0
- package/dist/esm/Pretty.js.map +1 -0
- package/dist/esm/Schema.js +5328 -0
- package/dist/esm/Schema.js.map +1 -0
- package/dist/esm/SchemaAST.js +2300 -0
- package/dist/esm/SchemaAST.js.map +1 -0
- package/dist/esm/Stream.js +14 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/TPubSub.js +8 -0
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSubscriptionRef.js +87 -0
- package/dist/esm/TSubscriptionRef.js.map +1 -0
- package/dist/esm/index.js +32 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cause.js +3 -3
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +160 -161
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/core.js +4 -4
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +14 -12
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/logger.js +7 -6
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/redacted.js +4 -0
- package/dist/esm/internal/redacted.js.map +1 -1
- package/dist/esm/internal/schema/errors.js +87 -0
- package/dist/esm/internal/schema/errors.js.map +1 -0
- package/dist/esm/internal/schema/filters.js +35 -0
- package/dist/esm/internal/schema/filters.js.map +1 -0
- package/dist/esm/internal/schema/util.js +78 -0
- package/dist/esm/internal/schema/util.js.map +1 -0
- package/dist/esm/internal/stm/core.js +1 -2
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js +1 -2
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js +5 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
- package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
- package/dist/esm/internal/stream.js +33 -15
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +68 -1
- package/src/Arbitrary.ts +563 -0
- package/src/Effect.ts +302 -31
- package/src/FastCheck.ts +9 -0
- package/src/Inspectable.ts +56 -2
- package/src/JSONSchema.ts +601 -0
- package/src/ParseResult.ts +2027 -0
- package/src/Predicate.ts +3 -1
- package/src/Pretty.ts +204 -0
- package/src/Schema.ts +10388 -0
- package/src/SchemaAST.ts +2827 -0
- package/src/Stream.ts +77 -9
- package/src/TPubSub.ts +9 -0
- package/src/TQueue.ts +7 -7
- package/src/TRef.ts +2 -1
- package/src/TSubscriptionRef.ts +284 -0
- package/src/index.ts +40 -0
- package/src/internal/cause.ts +3 -3
- package/src/internal/channel/channelExecutor.ts +213 -214
- package/src/internal/core-effect.ts +2 -2
- package/src/internal/core.ts +4 -4
- package/src/internal/fiberRuntime.ts +14 -12
- package/src/internal/logger.ts +7 -6
- package/src/internal/redacted.ts +4 -0
- package/src/internal/schema/errors.ts +189 -0
- package/src/internal/schema/filters.ts +86 -0
- package/src/internal/schema/util.ts +113 -0
- package/src/internal/stm/core.ts +1 -2
- package/src/internal/stm/tPubSub.ts +1 -0
- package/src/internal/stm/tQueue.ts +2 -2
- package/src/internal/stm/tRef.ts +7 -2
- package/src/internal/stm/tSubscriptionRef.ts +286 -0
- package/src/internal/stream.ts +97 -20
- 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
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
211
|
-
|
|
173
|
+
break
|
|
174
|
+
}
|
|
212
175
|
|
|
213
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
225
|
+
case ChannelOpCodes.OP_ENSURING: {
|
|
226
|
+
this.runEnsuring(this._currentChannel)
|
|
227
|
+
break
|
|
228
|
+
}
|
|
229
229
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
230
|
+
case ChannelOpCodes.OP_FAIL: {
|
|
231
|
+
result = this.doneHalt(this._currentChannel.error())
|
|
232
|
+
break
|
|
233
|
+
}
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
-
|
|
267
|
-
|
|
266
|
+
break
|
|
267
|
+
}
|
|
268
268
|
|
|
269
|
-
|
|
270
|
-
|
|
269
|
+
case ChannelOpCodes.OP_PIPE_TO: {
|
|
270
|
+
const previousInput = this._input
|
|
271
271
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
this.addFinalizer((exit) => {
|
|
281
|
+
const effect = this.restorePipe(exit, previousInput)
|
|
282
|
+
return effect !== undefined ? effect : Effect.void
|
|
283
|
+
})
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
this._currentChannel = this._currentChannel.right() as core.Primitive
|
|
286
286
|
|
|
287
|
-
|
|
288
|
-
|
|
287
|
+
break
|
|
288
|
+
}
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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
|
-
|
|
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
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
326
|
+
case ChannelOpCodes.OP_SUCCEED: {
|
|
327
|
+
result = this.doneSucceed(this._currentChannel.evaluate())
|
|
328
|
+
break
|
|
329
|
+
}
|
|
330
330
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
331
|
+
case ChannelOpCodes.OP_SUCCEED_NOW: {
|
|
332
|
+
result = this.doneSucceed(this._currentChannel.terminal)
|
|
333
|
+
break
|
|
334
|
+
}
|
|
335
335
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
case ChannelOpCodes.OP_SUSPEND: {
|
|
337
|
+
this._currentChannel = this._currentChannel.channel() as core.Primitive
|
|
338
|
+
break
|
|
339
|
+
}
|
|
340
340
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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>(
|
|
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>(
|
|
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>
|
package/src/internal/core.ts
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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>(
|
|
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 =
|
|
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
|
-
|
|
831
|
-
logger
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
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
|
|
package/src/internal/logger.ts
CHANGED
|
@@ -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",
|
|
564
|
+
console.log(`%c${key}:`, "color:gray", redacted)
|
|
564
565
|
} else {
|
|
565
|
-
console.log(`${key}:`,
|
|
566
|
+
console.log(`${key}:`, redacted)
|
|
566
567
|
}
|
|
567
568
|
}
|
|
568
569
|
}
|
package/src/internal/redacted.ts
CHANGED
|
@@ -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),
|