<A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (
self: Entry<A>
) => Effect.Effect<void, never, R>
<A extends Any, R>(
self: Entry<A>,
effect: Effect.Effect<Success<A>, Error<A>, R>
): Effect.Effect<void, never, R>Completes a request entry with the result of an effect.
When to use
Use to finish a Request.Entry by running an effect whose success or typed
failure should become the request result.
Details
If the effect succeeds, the entry is completed successfully with its value. If the effect fails, the entry is completed with that failure.
Gotchas
The returned effect itself does not fail with the request error.
export const const completeEffect: {
<A extends Any, R>(
effect: Effect.Effect<Success<A>, Error<A>, R>
): (
self: Entry<A>
) => Effect.Effect<void, never, R>
<A extends Any, R>(
self: Entry<A>,
effect: Effect.Effect<Success<A>, Error<A>, R>
): Effect.Effect<void, never, R>
}
Completes a request entry with the result of an effect.
When to use
Use to finish a Request.Entry by running an effect whose success or typed
failure should become the request result.
Details
If the effect succeeds, the entry is completed successfully with its value.
If the effect fails, the entry is completed with that failure.
Gotchas
The returned effect itself does not fail with the request error.
completeEffect: {
<function (type parameter) A in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>A extends type Any = Request<any, any, any>Alias for any Request, regardless of its success, error, or service
requirements.
When to use
Use as a generic constraint for APIs that accept any request while preserving
each concrete request's success, error, and service types.
Any, function (type parameter) R in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>R>(effect: Effect.Effect<Success<A>, Error<A>, R>(parameter) effect: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
effect: import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<type Success<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _A
: never
A utility type to extract the value type from a Request.
Example (Extracting a request success type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly _tag: "GetUser"
readonly id: number
}
// Extract the success type from a Request using the utility
type UserSuccess = Request.Success<GetUser> // string
Success<function (type parameter) A in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>A>, type Error<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _E
: never
A utility type to extract the error type from a Request.
Example (Extracting a request error type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly id: number
}
// Extract the error type from a Request using the utility
type UserError = Request.Error<GetUser> // Error
Error<function (type parameter) A in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>A>, function (type parameter) R in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>R>): (self: Entry<A>(parameter) self: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
self: interface Entry<out R>A pending request handed to a RequestResolver.
Details
An entry contains the original request, the fiber context needed to run it,
an uninterruptible flag used by batching and caching internals, and the
completeUnsafe callback used by resolvers to supply the final Exit.
Entry<function (type parameter) A in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>A>) => import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<void, never, function (type parameter) R in <A extends Any, R>(effect: Effect.Effect<Success<A>, Error<A>, R>): (self: Entry<A>) => Effect.Effect<void, never, R>R>
<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A extends type Any = Request<any, any, any>Alias for any Request, regardless of its success, error, or service
requirements.
When to use
Use as a generic constraint for APIs that accept any request while preserving
each concrete request's success, error, and service types.
Any, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R>(self: Entry<A>(parameter) self: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
self: interface Entry<out R>A pending request handed to a RequestResolver.
Details
An entry contains the original request, the fiber context needed to run it,
an uninterruptible flag used by batching and caching internals, and the
completeUnsafe callback used by resolvers to supply the final Exit.
Entry<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, effect: Effect.Effect<Success<A>, Error<A>, R>(parameter) effect: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
effect: import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<type Success<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _A
: never
A utility type to extract the value type from a Request.
Example (Extracting a request success type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly _tag: "GetUser"
readonly id: number
}
// Extract the success type from a Request using the utility
type UserSuccess = Request.Success<GetUser> // string
Success<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, type Error<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _E
: never
A utility type to extract the error type from a Request.
Example (Extracting a request error type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly id: number
}
// Extract the error type from a Request using the utility
type UserError = Request.Error<GetUser> // Error
Error<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R>): import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<void, never, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R>
} = import dualdual(
2,
<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A extends type Any = Request<any, any, any>Alias for any Request, regardless of its success, error, or service
requirements.
When to use
Use as a generic constraint for APIs that accept any request while preserving
each concrete request's success, error, and service types.
Any, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R>(self: Entry<A>(parameter) self: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
self: interface Entry<out R>A pending request handed to a RequestResolver.
Details
An entry contains the original request, the fiber context needed to run it,
an uninterruptible flag used by batching and caching internals, and the
completeUnsafe callback used by resolvers to supply the final Exit.
Entry<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, effect: Effect.Effect<Success<A>, Error<A>, R>(parameter) effect: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
effect: import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<type Success<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _A
: never
A utility type to extract the value type from a Request.
Example (Extracting a request success type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly _tag: "GetUser"
readonly id: number
}
// Extract the success type from a Request using the utility
type UserSuccess = Request.Success<GetUser> // string
Success<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, type Error<
T extends Request<any, any, any>
> = [T] extends [
Request<infer _A, infer _E, infer _R>
]
? _E
: never
A utility type to extract the error type from a Request.
Example (Extracting a request error type)
import type { Request } from "effect"
interface GetUser extends Request.Request<string, Error> {
readonly id: number
}
// Extract the error type from a Request using the utility
type UserError = Request.Error<GetUser> // Error
Error<function (type parameter) A in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>A>, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R>): import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<void, never, function (type parameter) R in <A extends Any, R>(self: Entry<A>, effect: Effect.Effect<Success<A>, Error<A>, R>): Effect.Effect<void, never, R>R> =>
import internalEffectinternalEffect.const matchEffect: {
<E, A2, E2, R2, A, A3, E3, R3>(options: {
readonly onFailure: (
e: E
) => Effect.Effect<A2, E2, R2>
readonly onSuccess: (
a: A
) => Effect.Effect<A3, E3, R3>
}): <R>(
self: Effect.Effect<A, E, R>
) => Effect.Effect<
A2 | A3,
E2 | E3,
R2 | R3 | R
>
<A, E, R, A2, E2, R2, A3, E3, R3>(
self: Effect.Effect<A, E, R>,
options: {
readonly onFailure: (
e: E
) => Effect.Effect<A2, E2, R2>
readonly onSuccess: (
a: A
) => Effect.Effect<A3, E3, R3>
}
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
}
matchEffect(effect: Effect.Effect<Success<A>, Error<A>, R>(parameter) effect: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
effect, {
onFailure: (
e: unknown
) => Effect.Effect<unknown, unknown, unknown>
onFailure: (error: Error<A>error) => const complete: {
<A extends Any>(result: Result<A>): (
self: Entry<A>
) => Effect.Effect<void>
<A extends Any>(
self: Entry<A>,
result: Result<A>
): Effect.Effect<void>
}
complete(self: Entry<A>(parameter) self: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
self, import corecore.const exitFail: <E>(
e: E
) => Exit.Exit<never, E>
exitFail(error: Error<A>error) as any),
onSuccess: (
a: unknown
) => Effect.Effect<unknown, unknown, unknown>
onSuccess: (value: Success<A>value) => const complete: {
<A extends Any>(result: Result<A>): (
self: Entry<A>
) => Effect.Effect<void>
<A extends Any>(
self: Entry<A>,
result: Result<A>
): Effect.Effect<void>
}
complete(self: Entry<A>(parameter) self: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
self, import corecore.const exitSucceed: <A>(
a: A
) => Exit.Exit<A>
exitSucceed(value: Success<A>value) as any)
})
)