effect 2.4.5 → 2.4.7
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/dist/cjs/Channel.js +10 -2
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Effect.js +26 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FiberMap.js +3 -0
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +4 -0
- package/dist/cjs/FiberSet.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.js +75 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +0 -2
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +148 -126
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +29 -29
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/layer.js +2 -2
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/runtime.js +4 -6
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/stm/core.js +36 -36
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stream.js +2 -73
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Channel.d.ts +8 -0
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +38 -2
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/esm/Channel.js +8 -0
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Effect.js +22 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FiberMap.js +3 -0
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +4 -0
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/internal/cause.js +2 -2
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel.js +73 -0
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js +0 -2
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +144 -123
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +29 -29
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/layer.js +2 -2
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/runtime.js +4 -6
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/stm/core.js +36 -36
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stream.js +2 -73
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Channel.ts +17 -0
- package/src/Effect.ts +45 -2
- package/src/Exit.ts +2 -2
- package/src/FiberMap.ts +4 -0
- package/src/FiberSet.ts +4 -0
- package/src/internal/cause.ts +2 -2
- package/src/internal/channel.ts +92 -0
- package/src/internal/core-effect.ts +0 -2
- package/src/internal/core.ts +167 -134
- package/src/internal/fiberRuntime.ts +30 -30
- package/src/internal/layer.ts +4 -4
- package/src/internal/runtime.ts +4 -6
- package/src/internal/stm/core.ts +49 -49
- package/src/internal/stream.ts +2 -82
- package/src/internal/version.ts +1 -1
- package/dist/cjs/internal/internalize.js +0 -15
- package/dist/cjs/internal/internalize.js.map +0 -1
- package/dist/dts/internal/internalize.d.ts +0 -2
- package/dist/dts/internal/internalize.d.ts.map +0 -1
- package/dist/esm/internal/internalize.js +0 -8
- package/dist/esm/internal/internalize.js.map +0 -1
- package/src/internal/internalize.ts +0 -5
package/package.json
CHANGED
package/src/Channel.ts
CHANGED
|
@@ -1951,6 +1951,23 @@ export const scoped: <A, E, R>(
|
|
|
1951
1951
|
effect: Effect.Effect<A, E, R>
|
|
1952
1952
|
) => Channel<A, unknown, E, unknown, unknown, unknown, Exclude<R, Scope.Scope>> = channel.scoped
|
|
1953
1953
|
|
|
1954
|
+
/**
|
|
1955
|
+
* Splits strings on newlines. Handles both Windows newlines (`\r\n`) and UNIX
|
|
1956
|
+
* newlines (`\n`).
|
|
1957
|
+
*
|
|
1958
|
+
* @since 2.0.0
|
|
1959
|
+
* @category combinators
|
|
1960
|
+
*/
|
|
1961
|
+
export const splitLines: <Err, Done>() => Channel<
|
|
1962
|
+
Chunk.Chunk<string>,
|
|
1963
|
+
Chunk.Chunk<string>,
|
|
1964
|
+
Err,
|
|
1965
|
+
Err,
|
|
1966
|
+
Done,
|
|
1967
|
+
Done,
|
|
1968
|
+
never
|
|
1969
|
+
> = channel.splitLines
|
|
1970
|
+
|
|
1954
1971
|
/**
|
|
1955
1972
|
* Constructs a channel that succeeds immediately with the specified value.
|
|
1956
1973
|
*
|
package/src/Effect.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type * as FiberId from "./FiberId.js"
|
|
|
18
18
|
import type * as FiberRef from "./FiberRef.js"
|
|
19
19
|
import type * as FiberRefs from "./FiberRefs.js"
|
|
20
20
|
import type * as FiberRefsPatch from "./FiberRefsPatch.js"
|
|
21
|
+
import type * as FiberStatus from "./FiberStatus.js"
|
|
21
22
|
import type { LazyArg } from "./Function.js"
|
|
22
23
|
import { dual } from "./Function.js"
|
|
23
24
|
import type * as HashMap from "./HashMap.js"
|
|
@@ -129,8 +130,8 @@ export interface EffectTypeLambda extends TypeLambda {
|
|
|
129
130
|
*/
|
|
130
131
|
export interface Blocked<out A, out E> extends Effect<A, E> {
|
|
131
132
|
readonly _op: "Blocked"
|
|
132
|
-
readonly
|
|
133
|
-
readonly
|
|
133
|
+
readonly effect_instruction_i0: RequestBlock
|
|
134
|
+
readonly effect_instruction_i1: Effect<A, E>
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
/**
|
|
@@ -994,6 +995,48 @@ export const asyncEffect: <A, E, R, R3, E2, R2>(
|
|
|
994
995
|
register: (callback: (_: Effect<A, E, R>) => void) => Effect<Effect<void, never, R3> | void, E2, R2>
|
|
995
996
|
) => Effect<A, E | E2, R | R2 | R3> = _runtime.asyncEffect
|
|
996
997
|
|
|
998
|
+
/**
|
|
999
|
+
* Low level constructor that enables for custom stack tracing cutpoints.
|
|
1000
|
+
*
|
|
1001
|
+
* It is meant to be called with a bag of instructions that become available in the "this" of the effect.
|
|
1002
|
+
*
|
|
1003
|
+
* @example
|
|
1004
|
+
* import * as Effect from "effect/Effect"
|
|
1005
|
+
*
|
|
1006
|
+
* const throwingFunction = () => { throw new Error() }
|
|
1007
|
+
* const blowUp = Effect.custom(throwingFunction, function() {
|
|
1008
|
+
* return Effect.succeed(this.effect_instruction_i0())
|
|
1009
|
+
* })
|
|
1010
|
+
*
|
|
1011
|
+
* @since 2.0.0
|
|
1012
|
+
* @category constructors
|
|
1013
|
+
*/
|
|
1014
|
+
export const custom: {
|
|
1015
|
+
<X, A, E, R>(i0: X, body: (this: { effect_instruction_i0: X }) => Effect<A, E, R>): Effect<A, E, R>
|
|
1016
|
+
<X, Y, A, E, R>(
|
|
1017
|
+
i0: X,
|
|
1018
|
+
i1: Y,
|
|
1019
|
+
body: (this: { effect_instruction_i0: X; effect_instruction_i1: Y }) => Effect<A, E, R>
|
|
1020
|
+
): Effect<A, E, R>
|
|
1021
|
+
<X, Y, Z, A, E, R>(
|
|
1022
|
+
i0: X,
|
|
1023
|
+
i1: Y,
|
|
1024
|
+
i2: Z,
|
|
1025
|
+
body: (this: { effect_instruction_i0: X; effect_instruction_i1: Y; effect_instruction_i2: Z }) => Effect<A, E, R>
|
|
1026
|
+
): Effect<A, E, R>
|
|
1027
|
+
} = core.custom
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* @since 2.0.0
|
|
1031
|
+
* @category constructors
|
|
1032
|
+
*/
|
|
1033
|
+
export const withFiberRuntime: <A, E = never, R = never>(
|
|
1034
|
+
withRuntime: (
|
|
1035
|
+
fiber: Fiber.RuntimeFiber<A, E>,
|
|
1036
|
+
status: FiberStatus.Running
|
|
1037
|
+
) => Effect<A, E, R>
|
|
1038
|
+
) => Effect<A, E, R> = core.withFiberRuntime
|
|
1039
|
+
|
|
997
1040
|
/**
|
|
998
1041
|
* @since 2.0.0
|
|
999
1042
|
* @category constructors
|
package/src/Exit.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface Failure<out A, out E> extends Effect.Effect<A, E>, Pipeable, In
|
|
|
40
40
|
[Unify.unifySymbol]?: ExitUnify<this>
|
|
41
41
|
[Unify.ignoreSymbol]?: ExitUnifyIgnore
|
|
42
42
|
/** @internal */
|
|
43
|
-
readonly
|
|
43
|
+
readonly effect_instruction_i0: Cause.Cause<E>
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
@@ -74,7 +74,7 @@ export interface Success<out A, out E> extends Effect.Effect<A, E>, Pipeable, In
|
|
|
74
74
|
[Unify.unifySymbol]?: ExitUnify<this>
|
|
75
75
|
[Unify.ignoreSymbol]?: ExitUnifyIgnore
|
|
76
76
|
/** @internal */
|
|
77
|
-
readonly
|
|
77
|
+
readonly effect_instruction_i0: A
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/**
|
package/src/FiberMap.ts
CHANGED
|
@@ -9,8 +9,10 @@ import * as Deferred from "./Deferred.js"
|
|
|
9
9
|
import * as Exit from "./Exit.js"
|
|
10
10
|
import * as Fiber from "./Fiber.js"
|
|
11
11
|
import * as FiberId from "./FiberId.js"
|
|
12
|
+
import * as FiberRef from "./FiberRef.js"
|
|
12
13
|
import { dual } from "./Function.js"
|
|
13
14
|
import * as Inspectable from "./Inspectable.js"
|
|
15
|
+
import type { FiberRuntime } from "./internal/fiberRuntime.js"
|
|
14
16
|
import * as MutableHashMap from "./MutableHashMap.js"
|
|
15
17
|
import * as Option from "./Option.js"
|
|
16
18
|
import { type Pipeable, pipeArguments } from "./Pipeable.js"
|
|
@@ -173,6 +175,8 @@ export const unsafeSet: {
|
|
|
173
175
|
}
|
|
174
176
|
previous.value.unsafeInterruptAsFork(interruptAs ?? FiberId.none)
|
|
175
177
|
}
|
|
178
|
+
|
|
179
|
+
;(fiber as FiberRuntime<unknown, unknown>).setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none())
|
|
176
180
|
MutableHashMap.set(self.backing, key, fiber)
|
|
177
181
|
fiber.addObserver((exit) => {
|
|
178
182
|
const current = MutableHashMap.get(self.backing, key)
|
package/src/FiberSet.ts
CHANGED
|
@@ -7,8 +7,11 @@ import * as Cause from "./Cause.js"
|
|
|
7
7
|
import * as Deferred from "./Deferred.js"
|
|
8
8
|
import * as Exit from "./Exit.js"
|
|
9
9
|
import * as Fiber from "./Fiber.js"
|
|
10
|
+
import * as FiberRef from "./FiberRef.js"
|
|
10
11
|
import { dual } from "./Function.js"
|
|
11
12
|
import * as Inspectable from "./Inspectable.js"
|
|
13
|
+
import type { FiberRuntime } from "./internal/fiberRuntime.js"
|
|
14
|
+
import * as Option from "./Option.js"
|
|
12
15
|
import { type Pipeable, pipeArguments } from "./Pipeable.js"
|
|
13
16
|
import * as Predicate from "./Predicate.js"
|
|
14
17
|
import * as Runtime from "./Runtime.js"
|
|
@@ -146,6 +149,7 @@ export const unsafeAdd: {
|
|
|
146
149
|
if (self.backing.has(fiber)) {
|
|
147
150
|
return
|
|
148
151
|
}
|
|
152
|
+
;(fiber as FiberRuntime<unknown, unknown>).setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none())
|
|
149
153
|
self.backing.add(fiber)
|
|
150
154
|
fiber.addObserver((exit) => {
|
|
151
155
|
self.backing.delete(fiber)
|
package/src/internal/cause.ts
CHANGED
|
@@ -971,8 +971,8 @@ const filterStack = (stack: string) => {
|
|
|
971
971
|
const lines = stack.split("\n")
|
|
972
972
|
const out: Array<string> = []
|
|
973
973
|
for (let i = 0; i < lines.length; i++) {
|
|
974
|
-
out.push(lines[i].replace(/at .*
|
|
975
|
-
if (lines[i].includes("
|
|
974
|
+
out.push(lines[i].replace(/at .*effect_instruction_i.*\((.*)\)/, "at $1"))
|
|
975
|
+
if (lines[i].includes("effect_instruction_i")) {
|
|
976
976
|
return out.join("\n")
|
|
977
977
|
}
|
|
978
978
|
}
|
package/src/internal/channel.ts
CHANGED
|
@@ -2105,6 +2105,98 @@ export const serviceWithEffect = <T extends Context.Tag<any, any>>(tag: T) =>
|
|
|
2105
2105
|
): Channel.Channel<never, unknown, OutErr, unknown, OutDone, unknown, Env | Context.Tag.Identifier<T>> =>
|
|
2106
2106
|
mapEffect(service(tag), f)
|
|
2107
2107
|
|
|
2108
|
+
/** @internal */
|
|
2109
|
+
export const splitLines = <Err, Done>(): Channel.Channel<
|
|
2110
|
+
Chunk.Chunk<string>,
|
|
2111
|
+
Chunk.Chunk<string>,
|
|
2112
|
+
Err,
|
|
2113
|
+
Err,
|
|
2114
|
+
Done,
|
|
2115
|
+
Done,
|
|
2116
|
+
never
|
|
2117
|
+
> =>
|
|
2118
|
+
core.suspend(() => {
|
|
2119
|
+
let stringBuilder = ""
|
|
2120
|
+
let midCRLF = false
|
|
2121
|
+
const splitLinesChunk = (chunk: Chunk.Chunk<string>): Chunk.Chunk<string> => {
|
|
2122
|
+
const chunkBuilder: Array<string> = []
|
|
2123
|
+
Chunk.map(chunk, (str) => {
|
|
2124
|
+
if (str.length !== 0) {
|
|
2125
|
+
let from = 0
|
|
2126
|
+
let indexOfCR = str.indexOf("\r")
|
|
2127
|
+
let indexOfLF = str.indexOf("\n")
|
|
2128
|
+
if (midCRLF) {
|
|
2129
|
+
if (indexOfLF === 0) {
|
|
2130
|
+
chunkBuilder.push(stringBuilder)
|
|
2131
|
+
stringBuilder = ""
|
|
2132
|
+
from = 1
|
|
2133
|
+
indexOfLF = str.indexOf("\n", from)
|
|
2134
|
+
} else {
|
|
2135
|
+
stringBuilder = stringBuilder + "\r"
|
|
2136
|
+
}
|
|
2137
|
+
midCRLF = false
|
|
2138
|
+
}
|
|
2139
|
+
while (indexOfCR !== -1 || indexOfLF !== -1) {
|
|
2140
|
+
if (indexOfCR === -1 || (indexOfLF !== -1 && indexOfLF < indexOfCR)) {
|
|
2141
|
+
if (stringBuilder.length === 0) {
|
|
2142
|
+
chunkBuilder.push(str.substring(from, indexOfLF))
|
|
2143
|
+
} else {
|
|
2144
|
+
chunkBuilder.push(stringBuilder + str.substring(from, indexOfLF))
|
|
2145
|
+
stringBuilder = ""
|
|
2146
|
+
}
|
|
2147
|
+
from = indexOfLF + 1
|
|
2148
|
+
indexOfLF = str.indexOf("\n", from)
|
|
2149
|
+
} else {
|
|
2150
|
+
if (str.length === indexOfCR + 1) {
|
|
2151
|
+
midCRLF = true
|
|
2152
|
+
indexOfCR = -1
|
|
2153
|
+
} else {
|
|
2154
|
+
if (indexOfLF === indexOfCR + 1) {
|
|
2155
|
+
if (stringBuilder.length === 0) {
|
|
2156
|
+
chunkBuilder.push(str.substring(from, indexOfCR))
|
|
2157
|
+
} else {
|
|
2158
|
+
stringBuilder = stringBuilder + str.substring(from, indexOfCR)
|
|
2159
|
+
chunkBuilder.push(stringBuilder)
|
|
2160
|
+
stringBuilder = ""
|
|
2161
|
+
}
|
|
2162
|
+
from = indexOfCR + 2
|
|
2163
|
+
indexOfCR = str.indexOf("\r", from)
|
|
2164
|
+
indexOfLF = str.indexOf("\n", from)
|
|
2165
|
+
} else {
|
|
2166
|
+
indexOfCR = str.indexOf("\r", indexOfCR + 1)
|
|
2167
|
+
}
|
|
2168
|
+
}
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2171
|
+
if (midCRLF) {
|
|
2172
|
+
stringBuilder = stringBuilder + str.substring(from, str.length - 1)
|
|
2173
|
+
} else {
|
|
2174
|
+
stringBuilder = stringBuilder + str.substring(from, str.length)
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
})
|
|
2178
|
+
return Chunk.unsafeFromArray(chunkBuilder)
|
|
2179
|
+
}
|
|
2180
|
+
const loop: Channel.Channel<Chunk.Chunk<string>, Chunk.Chunk<string>, Err, Err, Done, Done, never> = core
|
|
2181
|
+
.readWithCause({
|
|
2182
|
+
onInput: (input: Chunk.Chunk<string>) => {
|
|
2183
|
+
const out = splitLinesChunk(input)
|
|
2184
|
+
return Chunk.isEmpty(out)
|
|
2185
|
+
? loop
|
|
2186
|
+
: core.flatMap(core.write(out), () => loop)
|
|
2187
|
+
},
|
|
2188
|
+
onFailure: (cause) =>
|
|
2189
|
+
stringBuilder.length === 0
|
|
2190
|
+
? core.failCause(cause)
|
|
2191
|
+
: core.flatMap(core.write(Chunk.of(stringBuilder)), () => core.failCause(cause)),
|
|
2192
|
+
onDone: (done) =>
|
|
2193
|
+
stringBuilder.length === 0
|
|
2194
|
+
? core.succeed(done)
|
|
2195
|
+
: core.flatMap(core.write(Chunk.of(stringBuilder)), () => core.succeed(done))
|
|
2196
|
+
})
|
|
2197
|
+
return loop
|
|
2198
|
+
})
|
|
2199
|
+
|
|
2108
2200
|
/** @internal */
|
|
2109
2201
|
export const toPubSub = <Done, Err, Elem>(
|
|
2110
2202
|
pubsub: PubSub.PubSub<Either.Either<Elem, Exit.Exit<Done, Err>>>
|
|
@@ -30,7 +30,6 @@ import * as internalCause from "./cause.js"
|
|
|
30
30
|
import * as core from "./core.js"
|
|
31
31
|
import * as defaultServices from "./defaultServices.js"
|
|
32
32
|
import * as fiberRefsPatch from "./fiberRefs/patch.js"
|
|
33
|
-
import { internalize } from "./internalize.js"
|
|
34
33
|
import * as metricLabel from "./metric/label.js"
|
|
35
34
|
import * as runtimeFlags from "./runtimeFlags.js"
|
|
36
35
|
import * as SingleShotGen from "./singleShotGen.js"
|
|
@@ -778,7 +777,6 @@ export const gen: typeof Effect.gen = function() {
|
|
|
778
777
|
} else {
|
|
779
778
|
f = arguments[1].bind(arguments[0])
|
|
780
779
|
}
|
|
781
|
-
internalize(f)
|
|
782
780
|
return core.suspend(() => {
|
|
783
781
|
const iterator = f(adapter)
|
|
784
782
|
const state = iterator.next()
|