import * as Effect from "effect-app/Effect"; import { type HttpHeaders } from "effect-app/http"; import * as Layer from "effect-app/Layer"; import { type GetEffectContext, type RpcContextMap } from "effect-app/rpc/RpcContextMap"; import * as S from "effect-app/Schema"; import { type TypeTestId } from "effect-app/TypeTest"; import { type Yieldable } from "effect/Effect"; import type * as Scope from "effect/Scope"; import * as Stream from "effect/Stream"; import { Rpc, type RpcSerialization } from "effect/unstable/rpc"; export * from "./routing/middleware.js"; export declare const applyRequestTypeInterruptibility: (requestType: "command" | "query", effect: Effect.Effect) => Effect.Effect | Rpc.Wrapper>; export type AnyRequestModule = S.Top & { _tag: string; type: "command" | "query"; stream: boolean; config: any; success: S.Top; error: S.Top; }; export interface AddAction = {}> { accum: Accum; add>(a: A): A extends Handler ? Exclude extends never ? Accum & { [K in M["_tag"]]: A; } : AddAction, Accum & { [K in M["_tag"]]: A; }> & Accum & { [K in M["_tag"]]: A; } : never; } declare namespace RequestTypes { const DECODED: "d"; type DECODED = typeof DECODED; const RAW: "raw"; type RAW = typeof RAW; } type RequestType = (typeof RequestTypes)[keyof typeof RequestTypes]; type GetSuccess = T extends { success: S.Top; } ? T["success"] : typeof S.Void; type GetFailure = T["error"] extends never ? typeof S.Never : T["error"]; type GetSuccessShape = { d: S.Schema.Type>; raw: S.Codec.Encoded>; }[RT]; interface HandlerBase { new (): {}; _tag: RT; stack: string; handler: (req: S.Schema.Type, headers: HttpHeaders.Headers) => Effect.Effect | Stream.Stream; } export interface Handler extends HandlerBase, S.Schema.Type> | S.SchemaError, R> { } type AnyHandler = Handler; type FilterRequestModules = { [K in keyof T as T[K] extends AnyRequestModule ? K : never]: T[K]; }; type EffectMatch, RequestContextMap extends Record, RT extends RequestType, Key extends keyof Resource> = , R2 = never, E = never>(f: (req: S.Schema.Type) => Effect.Effect) => Handler>, Scope.Scope>>; type StreamMatch, RequestContextMap extends Record, RT extends RequestType, Key extends keyof Resource> = , R2 = never, E = never>(f: (req: S.Schema.Type) => Stream.Stream) => Handler>, Scope.Scope>>; type Match, RequestContextMap extends Record, RT extends RequestType, Key extends keyof Resource> = Resource[Key] extends { stream: true; } ? StreamMatch : EffectMatch; export type RouteMatcher, Resource extends Record> = { [Key in keyof FilterRequestModules]: Match & { success: Resource[Key]["success"]; successRaw: S.Codec>; error: Resource[Key]["error"]; /** * Requires the Encoded shape (e.g directly undecoded from DB, so that we don't do multiple Decode/Encode) */ raw: Match; }; }; export declare const skipOnProd: Effect.Effect; type ProvidesOf = MW extends { readonly provides: infer P; } ? P : never; type RequestContextMapOf = MW extends { requestContextMap: infer RCM extends Record; } ? RCM : Record; type LayerNormalize = L extends Layer.Layer ? Layer.Layer : Layer.Layer; type LayerSuccess = L extends Layer.Layer ? A : never; /** * Middleware tags are typically passed to `makeRpcClient` as the class value, so * the captured `MW` is a constructor type. Layers carry the *instance* type as * their success channel. Bridge the two so the constraint compares like-with-like. * * Effect middleware classes declare `new(_: never): Shape` which the standard * `T extends abstract new (...args: any) => infer I` form sometimes fails to * narrow. Use the `prototype` member instead — it is always the instance type. */ type MWService = MW extends { readonly prototype: infer P; } ? P : MW; /** * Type-level guard: emits a structural mismatch on `Resource` when the middleware * service identifier extracted from the resource's request classes is not provided * by the layer passed to `makeRouter`. When `MW` is `never` (no middleware on the * resource) or already a subtype of the layer's success, this resolves to `unknown` * and intersects harmlessly with `Resource`. */ type EnsureMiddlewareProvided = [MW] extends [never] ? unknown : [MWService] extends [LayerSuccess] ? unknown : { readonly __middlewareNotProvidedByRouterLayer: { readonly expected: MWService; readonly providedByLayer: LayerSuccess; }; }; type SafeGetEffectContext = RCM extends Record ? GetEffectContext : never; export declare const makeRouter: = Layer.Layer>(middlewareLive?: Live) => { matchAll: ; }>(handlers: T) => Layer.Layer, Layer.Services<(typeof handlers)[keyof typeof handlers]>>; Router: , MW = Exclude<{ [K in keyof Resource]: Resource[K] extends { readonly middleware?: infer MW_1; } ? NonNullable : never; }[keyof Resource], never>>(rsc: Resource & EnsureMiddlewareProvided, options?: { check?: Effect.Effect; }) => { ; effect: (match: ]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends { stream: true; } ? (req: S.Schema.Type) => Stream.Stream>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T["config"]>> : ((req: S.Schema.Type) => Effect.Effect>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T["config"]>>) | ((req: S.Schema.Type) => Generator>, ProvidesOf | SafeGetEffectContext, T["config"]>>, S.Schema.Type>, never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends { stream: true; } ? { raw: (req: S.Schema.Type) => Stream.Stream>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>; } : { raw: (req: S.Schema.Type) => Generator>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>, S.Codec.Encoded>, never>; } | { raw: (req: S.Schema.Type) => Effect.Effect>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>; } : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules]: Handler[K], Impl[K] extends { raw: any; } ? RequestTypes.RAW : RequestTypes.DECODED, Exclude Effect.Effect ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream ? R : Impl[K]["raw"] extends (...args: any[]) => Generator> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect ? R : Impl[K] extends (...args: any[]) => Stream.Stream ? R : Impl[K] extends (...args: any[]) => Generator> ? R : never, SafeGetEffectContext, Resource[K]["config"]> | ProvidesOf>, Scope.Scope>>; }) => Generator, { [K in keyof FilterRequestModules]: AnyHandler; }>; /** @deprecated */ readonly ಠ_ಠ: never; }>(make: Make): Layer.Layer | MakeDepsE | Layer.Error>, MakeDepsIn | Layer.Services> | Exclude, MakeDepsOut> | RpcSerialization.RpcSerialization> & { [TypeTestId]: Make; }; ; effect: (match: ]: (Resource[K] extends infer T ? T extends Resource[K] ? T extends { stream: true; } ? (req: S.Schema.Type) => Stream.Stream>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T["config"]>> : ((req: S.Schema.Type) => Effect.Effect>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T["config"]>>) | ((req: S.Schema.Type) => Generator>, ProvidesOf | SafeGetEffectContext, T["config"]>>, S.Schema.Type>, never>) : never : never) | (Resource[K] extends infer T_1 ? T_1 extends Resource[K] ? T_1 extends { stream: true; } ? { raw: (req: S.Schema.Type) => Stream.Stream>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>; } : { raw: (req: S.Schema.Type) => Generator>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>, S.Codec.Encoded>, never>; } | { raw: (req: S.Schema.Type) => Effect.Effect>, S.SchemaError | S.Schema.Type>, ProvidesOf | SafeGetEffectContext, T_1["config"]>>; } : never : never); }>(impl: Impl) => { [K in keyof Impl & keyof FilterRequestModules]: Handler[K], Impl[K] extends { raw: any; } ? RequestTypes.RAW : RequestTypes.DECODED, Exclude Effect.Effect ? R : Impl[K]["raw"] extends (...args: any[]) => Stream.Stream ? R : Impl[K]["raw"] extends (...args: any[]) => Generator> ? R : never : Impl[K] extends (...args: any[]) => Effect.Effect ? R : Impl[K] extends (...args: any[]) => Stream.Stream ? R : Impl[K] extends (...args: any[]) => Generator> ? R : never, SafeGetEffectContext, Resource[K]["config"]> | ProvidesOf>, Scope.Scope>>; }) => Generator, { [K in keyof FilterRequestModules]: AnyHandler; }>; }>(make: Make): Layer.Layer | MakeDepsE | Layer.Error>, MakeDepsIn | Layer.Services> | Exclude, MakeDepsOut> | RpcSerialization.RpcSerialization> & { readonly [TypeTestId]: Make; }; }; }; export type MakeDeps = Make extends { readonly dependencies: ReadonlyArray; } ? Make["dependencies"][number] : never; export type MakeErrors = Make extends { readonly effect: (_: any) => Generator>; } ? never : Make extends { readonly effect: (_: any) => Generator>; } ? E : never; export type MakeContext = Make extends { readonly effect: (_: any) => Generator>; } ? never : Make extends { readonly effect: (_: any) => Generator>; } ? R : never; export type MakeHandlers> = Make extends { readonly effect: (_: any) => Generator; } ? S : never; export type MakeDepsE = Layer.Error>; export type MakeDepsIn = Layer.Services>; export type MakeDepsOut = Layer.Success>; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbEQsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsS0FBSyxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM3RyxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXJELE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUc5QyxPQUFPLEtBQUssS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQVksS0FBSyxnQkFBZ0IsRUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBSXJGLGNBQWMseUJBQXlCLENBQUE7QUFFdkMsZUFBTyxNQUFNLGdDQUFnQyxHQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUN6QyxTQUFTLEdBQUcsT0FBTyxVQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlFQUNxQyxDQUFBO0FBSXJFLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHO0lBQ3JDLElBQUksRUFBRSxNQUFNLENBQUE7SUFDWixJQUFJLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQTtJQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFBO0lBQ2YsTUFBTSxFQUFFLEdBQUcsQ0FBQTtJQUNY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