<
Node extends AnyNode & { readonly [catalogSym]?: unknown },
Serves extends ServeLayerList
>(
node: Node,
serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>,
options?: NamelessListenOptions
): Layer.Layer<
Layer.Success<Serves[number]> | ListenNode,
never,
Layer.Services<Serves[number]>
>
(
node: AnyNode,
serves: Layer.Layer<never, never, never> | ServeLayerList,
options?: NamelessListenOptions
): Layer.Layer<
never,
UnaddressedNode | AddressLessClaimLost | UnixListenRequiresIpc,
any
>Sugar: unix(node, serves) — IPC listen (pipe Lookup when needed).
Prefer unix (also covers Tag+impl and nameless forms).
export function function listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>> (+1 overload)listenLocal<
function (type parameter) Node in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Node extends import AnyNodeAnyNode & { readonly [import catalogSymcatalogSym]?: unknown },
function (type parameter) Serves in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Serves extends type ServeLayerList = readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
Non-empty serve list — same constraint as
listen
.
ServeLayerList,
>(
node: Node extends AnyNode & {}node: function (type parameter) Node in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Node,
serves: Serves &
ServesForCatalog<CatalogROut<Node>, Serves>
serves: function (type parameter) Serves in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Serves & type ServesForCatalog<
ROut,
Serves extends ServeLayerList
> = [ROut] extends [never]
? Serves
: [ROut] extends [Layer.Success<Serves[number]>]
? Serves
: never
C3 catalog proof — every ROut member appears in merged serve success.
ServesForCatalog<type CatalogROut<Node> = Node extends {
readonly [catalogSym]?: infer R | undefined
}
? Exclude<R, undefined>
: never
CatalogROut<function (type parameter) Node in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Node>, function (type parameter) Serves in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Serves>,
options: anyoptions?: import NamelessListenOptionsNamelessListenOptions,
): import LayerLayer.interface Layer<in ROut, out E = never, out RIn = never>A Layer describes how to build one or more services for dependency injection.
When to use
Use to model construction of application services for dependency injection,
especially when services have dependencies, can fail during construction, or
need scoped setup and release.
Details
A Layer<ROut, E, RIn> represents ROut as the services this layer
provides, E as the possible errors during layer construction, and RIn as
the services this layer requires as dependencies.
Layer<
import LayerLayer.type Success<T extends Layer.Any> =
T extends Layer.Layer<
infer _ROut,
infer _E,
infer _RIn
>
? _ROut
: never
Extracts the service output type (ROut) from a Layer type.
When to use
Use to derive the services provided by an existing or generic Layer without
restating its ROut type parameter.
Success<function (type parameter) Serves in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Serves[number]> | import ListenNodeListenNode,
never,
import LayerLayer.type Services<T extends Layer.Any> =
T extends infer L
? L extends Layer.Layer<
infer _ROut,
infer _E,
infer _RIn
>
? _RIn
: never
: never
Extracts the service requirements (RIn) from a Layer type.
When to use
Use to derive the dependency requirements of a generic or inferred Layer
without restating its RIn type parameter.
Services<function (type parameter) Serves in listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>>Serves[number]>
>
export function function listenLocal(node: AnyNode, serves: Layer.Layer<never, never, never> | ServeLayerList, options?: NamelessListenOptions): Layer.Layer<never, UnaddressedNode | AddressLessClaimLost | UnixListenRequiresIpc, any> (+1 overload)listenLocal(
node: AnyNodenode: import AnyNodeAnyNode,
serves: | Layer.Layer<never, never, never>
| readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
serves: import LayerLayer.interface Layer<in ROut, out E = never, out RIn = never>A Layer describes how to build one or more services for dependency injection.
When to use
Use to model construction of application services for dependency injection,
especially when services have dependencies, can fail during construction, or
need scoped setup and release.
Details
A Layer<ROut, E, RIn> represents ROut as the services this layer
provides, E as the possible errors during layer construction, and RIn as
the services this layer requires as dependencies.
Layer<never, never, never> | type ServeLayerList = readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
Non-empty serve list — same constraint as
listen
.
ServeLayerList,
options: anyoptions?: import NamelessListenOptionsNamelessListenOptions,
): import LayerLayer.interface Layer<in ROut, out E = never, out RIn = never>A Layer describes how to build one or more services for dependency injection.
When to use
Use to model construction of application services for dependency injection,
especially when services have dependencies, can fail during construction, or
need scoped setup and release.
Details
A Layer<ROut, E, RIn> represents ROut as the services this layer
provides, E as the possible errors during layer construction, and RIn as
the services this layer requires as dependencies.
Layer<
never,
import UnaddressedNodeUnaddressedNode | import AddressLessClaimLostAddressLessClaimLost | import UnixListenRequiresIpcUnixListenRequiresIpc, any>
export function function listenLocal<Node extends AnyNode & {}, Serves extends ServeLayerList>(node: Node, serves: Serves & ServesForCatalog<CatalogROut<Node>, Serves>, options?: NamelessListenOptions): Layer.Layer<Layer.Success<Serves[number]> | ListenNode, never, Layer.Services<Serves[number]>> (+1 overload)listenLocal(
node: AnyNodenode: import AnyNodeAnyNode,
serves: | Layer.Layer<never, never, never>
| readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
serves: import LayerLayer.interface Layer<in ROut, out E = never, out RIn = never>A Layer describes how to build one or more services for dependency injection.
When to use
Use to model construction of application services for dependency injection,
especially when services have dependencies, can fail during construction, or
need scoped setup and release.
Details
A Layer<ROut, E, RIn> represents ROut as the services this layer
provides, E as the possible errors during layer construction, and RIn as
the services this layer requires as dependencies.
Layer<never, never, never> | type ServeLayerList = readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
Non-empty serve list — same constraint as
listen
.
ServeLayerList,
options: anyoptions?: import NamelessListenOptionsNamelessListenOptions,
): import LayerLayer.interface Layer<in ROut, out E = never, out RIn = never>A Layer describes how to build one or more services for dependency injection.
When to use
Use to model construction of application services for dependency injection,
especially when services have dependencies, can fail during construction, or
need scoped setup and release.
Details
A Layer<ROut, E, RIn> represents ROut as the services this layer
provides, E as the possible errors during layer construction, and RIn as
the services this layer requires as dependencies.
Layer<
never,
import UnaddressedNodeUnaddressedNode | import AddressLessClaimLostAddressLessClaimLost | import UnixListenRequiresIpcUnixListenRequiresIpc, any> {
return import unixunix(node: AnyNodenode, serves: | Layer.Layer<never, never, never>
| readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
serves as type ServeLayerList = readonly [
Layer.Layer<never, never, never>,
...Layer.Layer<never, never, never>[]
]
Non-empty serve list — same constraint as
listen
.
ServeLayerList, options: anyoptions)
}