import { ORPCErrorJSON, ORPCError, Client, ClientContext, HTTPPath, ClientPromiseResult } from '@rubenbupe/orpc-client'; export { ORPCError, isDefinedError, safe } from '@rubenbupe/orpc-client'; import { AnySchema, ErrorMap, InferSchemaInput, InferSchemaOutput, ErrorFromErrorMap, Meta, MergedErrorMap, Route, EnhanceRouteOptions, AnyContractRouter, AnyContractProcedure, Schema, ContractRouter, ContractProcedureDef, ContractProcedure, InferContractRouterErrorMap, InferContractRouterMeta } from '@rubenbupe/orpc-contract'; export { ContractProcedure, ContractProcedureDef, ContractRouter, ErrorMap, ErrorMapItem, InferSchemaInput, InferSchemaOutput, InputStructure, Meta, OutputStructure, Route, Schema, ValidationError, eventIterator, type } from '@rubenbupe/orpc-contract'; import { C as Context, b as Procedure, M as Middleware, O as ORPCErrorConstructorMap, c as MergedInitialContext, d as MergedCurrentContext, e as MapInputMiddleware, f as CreateProcedureClientOptions, g as ProcedureClient, h as AnyMiddleware, L as Lazyable, a as AnyRouter, i as Lazy, A as AnyProcedure, j as ProcedureHandler, R as Router, I as InferRouterInitialContext } from './shared/orpc-server.CtmmTVAK.mjs'; export { J as InferRouterCurrentContexts, H as InferRouterInitialContexts, K as InferRouterInputs, N as InferRouterOutputs, o as LAZY_SYMBOL, p as LazyMeta, x as MiddlewareNextFn, w as MiddlewareNextFnOptions, z as MiddlewareOptions, y as MiddlewareOutputFn, t as MiddlewareResult, l as ORPCErrorConstructorMapItem, k as ORPCErrorConstructorMapItemOptions, P as ProcedureClientInterceptorOptions, E as ProcedureDef, D as ProcedureHandlerOptions, n as createORPCErrorConstructorMap, G as createProcedureClient, s as getLazyMeta, r as isLazy, F as isProcedure, q as lazy, m as mergeCurrentContext, B as middlewareOutputFn, u as unlazy, v as validateORPCError } from './shared/orpc-server.CtmmTVAK.mjs'; import { IntersectPick, MaybeOptionalOptions } from '@rubenbupe/orpc-shared'; export { onError, onFinish, onStart, onSuccess } from '@rubenbupe/orpc-shared'; export { getEventMeta, withEventMeta } from '@rubenbupe/orpc-standard-server'; type ActionableError = T extends ORPCError ? ORPCErrorJSON & { defined: true; } : ORPCErrorJSON & { defined: false; }; type UnactionableError = T extends { defined: true; } & ORPCErrorJSON ? ORPCError : Error; type ActionableClientRest = [input: TInput] | (undefined extends TInput ? [input?: TInput] : [input: TInput]); type ActionableClientResult> = [error: null, data: TOutput] | [error: TError, data: undefined]; interface ActionableClient> { (...rest: ActionableClientRest): Promise>; } type ProcedureActionableClient = ActionableClient, InferSchemaOutput, ActionableError>>; declare function createActionableClient(client: Client, TInput, TOutput, TError>): ActionableClient>; declare class DecoratedProcedure extends Procedure { errors(errors: U): DecoratedProcedure, TMeta>; meta(meta: TMeta): DecoratedProcedure; route(route: Route): DecoratedProcedure; use, UInContext extends Context = TCurrentContext>(middleware: Middleware, InferSchemaInput, ORPCErrorConstructorMap, TMeta>): DecoratedProcedure, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; use, UInput, UInContext extends Context = TCurrentContext>(middleware: Middleware, ORPCErrorConstructorMap, TMeta>, mapInput: MapInputMiddleware, UInput>): DecoratedProcedure, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; /** * Make this procedure callable (works like a function while still being a procedure). */ callable(...rest: MaybeOptionalOptions>): DecoratedProcedure & ProcedureClient; /** * Make this procedure compatible with server action. */ actionable(...rest: MaybeOptionalOptions>>): DecoratedProcedure & ProcedureActionableClient; } declare function getRouter>(router: T, path: readonly string[]): T extends Lazy ? Lazy : Lazyable; type AccessibleLazyRouter> = T extends Lazy> ? AccessibleLazyRouter : T extends AnyProcedure | undefined ? Lazy : Lazy & { [K in keyof T]: T[K] extends Lazyable ? AccessibleLazyRouter : never; }; declare function createAccessibleLazyRouter>(lazied: T): AccessibleLazyRouter; type EnhancedRouter, TInitialContext extends Context, TCurrentContext extends Context, TErrorMap extends ErrorMap> = T extends Lazy ? AccessibleLazyRouter> : T extends Procedure ? Procedure, UCurrentContext, UInputSchema, UOutputSchema, MergedErrorMap, UMeta> : { [K in keyof T]: T[K] extends Lazyable ? EnhancedRouter : never; }; interface EnhanceRouterOptions extends EnhanceRouteOptions { middlewares: readonly AnyMiddleware[]; errorMap: TErrorMap; dedupeLeadingMiddlewares: boolean; } declare function enhanceRouter, TInitialContext extends Context, TCurrentContext extends Context, TErrorMap extends ErrorMap>(router: T, options: EnhanceRouterOptions): EnhancedRouter; interface TraverseContractProceduresOptions { router: AnyContractRouter | AnyRouter; path: readonly string[]; } interface ContractProcedureCallbackOptions { contract: AnyContractProcedure; path: readonly string[]; } interface LazyTraverseContractProceduresOptions { router: Lazy; path: readonly string[]; } declare function traverseContractProcedures(options: TraverseContractProceduresOptions, callback: (options: ContractProcedureCallbackOptions) => void, lazyOptions?: LazyTraverseContractProceduresOptions[]): LazyTraverseContractProceduresOptions[]; declare function resolveContractProcedures(options: TraverseContractProceduresOptions, callback: (options: ContractProcedureCallbackOptions) => void): Promise; type UnlaziedRouter = T extends AnyProcedure ? T : { [K in keyof T]: T[K] extends Lazyable ? UnlaziedRouter : never; }; declare function unlazyRouter(router: T): Promise>; interface BuilderWithMiddlewares { '~orpc': BuilderDef; 'errors'(errors: U): BuilderWithMiddlewares, TMeta>; 'use'(middleware: Middleware, TMeta>): BuilderWithMiddlewares, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'meta'(meta: TMeta): BuilderWithMiddlewares; 'route'(route: Route): ProcedureBuilder; 'input'(schema: USchema): ProcedureBuilderWithInput; 'output'(schema: USchema): ProcedureBuilderWithOutput; 'handler'(handler: ProcedureHandler): DecoratedProcedure, TErrorMap, TMeta>; 'prefix'(prefix: HTTPPath): RouterBuilder; 'tag'(...tags: string[]): RouterBuilder; 'router', TCurrentContext>>(router: U): EnhancedRouter; 'lazy', TCurrentContext>>(loader: () => Promise<{ default: U; }>): EnhancedRouter, TInitialContext, TCurrentContext, TErrorMap>; } interface ProcedureBuilder { '~orpc': BuilderDef; 'errors'(errors: U): ProcedureBuilder, TMeta>; 'use'(middleware: Middleware, TMeta>): ProcedureBuilder, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'meta'(meta: TMeta): ProcedureBuilder; 'route'(route: Route): ProcedureBuilder; 'input'(schema: USchema): ProcedureBuilderWithInput; 'output'(schema: USchema): ProcedureBuilderWithOutput; 'handler'(handler: ProcedureHandler): DecoratedProcedure, TErrorMap, TMeta>; } interface ProcedureBuilderWithInput { '~orpc': BuilderDef; 'errors'(errors: U): ProcedureBuilderWithInput, TMeta>; 'use'(middleware: Middleware, unknown, ORPCErrorConstructorMap, TMeta>): ProcedureBuilderWithInput, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'use'(middleware: Middleware, TMeta>, mapInput: MapInputMiddleware, UInput>): ProcedureBuilderWithInput, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'meta'(meta: TMeta): ProcedureBuilderWithInput; 'route'(route: Route): ProcedureBuilderWithInput; 'output'(schema: USchema): ProcedureBuilderWithInputOutput; 'handler'(handler: ProcedureHandler, UFuncOutput, TErrorMap, TMeta>): DecoratedProcedure, TErrorMap, TMeta>; } interface ProcedureBuilderWithOutput { '~orpc': BuilderDef; 'errors'(errors: U): ProcedureBuilderWithOutput, TMeta>; 'use'(middleware: Middleware, ORPCErrorConstructorMap, TMeta>): ProcedureBuilderWithOutput, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'meta'(meta: TMeta): ProcedureBuilderWithOutput; 'route'(route: Route): ProcedureBuilderWithOutput; 'input'(schema: USchema): ProcedureBuilderWithInputOutput; 'handler'(handler: ProcedureHandler, TErrorMap, TMeta>): DecoratedProcedure; } interface ProcedureBuilderWithInputOutput { '~orpc': BuilderDef; 'errors'(errors: U): ProcedureBuilderWithInputOutput, TMeta>; 'use'(middleware: Middleware, InferSchemaInput, ORPCErrorConstructorMap, TMeta>): ProcedureBuilderWithInputOutput, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'use'(middleware: Middleware, ORPCErrorConstructorMap, TMeta>, mapInput: MapInputMiddleware, UInput>): ProcedureBuilderWithInputOutput, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'meta'(meta: TMeta): ProcedureBuilderWithInputOutput; 'route'(route: Route): ProcedureBuilderWithInputOutput; 'handler'(handler: ProcedureHandler, InferSchemaInput, TErrorMap, TMeta>): DecoratedProcedure; } interface RouterBuilder { '~orpc': EnhanceRouterOptions; 'errors'(errors: U): RouterBuilder, TMeta>; 'use'(middleware: Middleware, TMeta>): RouterBuilder, MergedCurrentContext, TErrorMap, TMeta>; 'prefix'(prefix: HTTPPath): RouterBuilder; 'tag'(...tags: string[]): RouterBuilder; 'router', TCurrentContext>>(router: U): EnhancedRouter; 'lazy', TCurrentContext>>(loader: () => Promise<{ default: U; }>): EnhancedRouter, TInitialContext, TCurrentContext, TErrorMap>; } interface DecoratedMiddleware, TMeta extends Meta> extends Middleware { mapInput(map: MapInputMiddleware): DecoratedMiddleware; concat>(middleware: Middleware, UOutContext, TInput, TOutput, TErrorConstructorMap, TMeta>): DecoratedMiddleware>, MergedCurrentContext, TInput, TOutput, TErrorConstructorMap, TMeta>; concat>(middleware: Middleware, UOutContext, UMappedInput, TOutput, TErrorConstructorMap, TMeta>, mapInput: MapInputMiddleware): DecoratedMiddleware>, MergedCurrentContext, TInput, TOutput, TErrorConstructorMap, TMeta>; } declare function decorateMiddleware, TMeta extends Meta>(middleware: Middleware): DecoratedMiddleware; interface BuilderConfig { initialInputValidationIndex?: number; initialOutputValidationIndex?: number; dedupeLeadingMiddlewares?: boolean; } interface BuilderDef extends ContractProcedureDef, EnhanceRouterOptions { middlewares: readonly AnyMiddleware[]; inputValidationIndex: number; outputValidationIndex: number; config: BuilderConfig; } declare class Builder { '~orpc': BuilderDef; constructor(def: BuilderDef); /** * Reset config */ $config(config: BuilderConfig): Builder; /** * Reset initial context */ $context(): Builder, U, TInputSchema, TOutputSchema, TErrorMap, TMeta>; /** * Reset initial meta */ $meta(initialMeta: U): Builder>; /** * Reset initial route */ $route(initialRoute: Route): Builder; $input(initialInputSchema?: U): Builder; middleware(// = any here is important to make middleware can be used in any output by default middleware: Middleware, TMeta>): DecoratedMiddleware; errors(errors: U): Builder, TMeta>; use(middleware: Middleware, TMeta>): BuilderWithMiddlewares, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; meta(meta: TMeta): ProcedureBuilder; route(route: Route): ProcedureBuilder; input(schema: USchema): ProcedureBuilderWithInput; output(schema: USchema): ProcedureBuilderWithOutput; handler(handler: ProcedureHandler): DecoratedProcedure, TErrorMap, TMeta>; prefix(prefix: HTTPPath): RouterBuilder; tag(...tags: string[]): RouterBuilder; router, TCurrentContext>>(router: U): EnhancedRouter; lazy, TCurrentContext>>(loader: () => Promise<{ default: U; }>): EnhancedRouter, TInitialContext, TCurrentContext, TErrorMap>; } declare const os: Builder, Record, Schema, Schema, Record, Record>; interface Config { initialInputValidationIndex: number; initialOutputValidationIndex: number; dedupeLeadingMiddlewares: boolean; } declare function fallbackConfig(key: T, value?: Config[T]): Config[T]; /** * Like `DecoratedProcedure`, but removed all method that can change the contract. */ interface ImplementedProcedure extends Procedure { use, UInContext extends Context = TCurrentContext>(middleware: Middleware, InferSchemaInput, ORPCErrorConstructorMap, TMeta>): ImplementedProcedure, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; use, UInput, UInContext extends Context = TCurrentContext>(middleware: Middleware, ORPCErrorConstructorMap, TMeta>, mapInput: MapInputMiddleware, UInput>): ImplementedProcedure, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; /** * Make this procedure callable (works like a function while still being a procedure). */ callable(...rest: MaybeOptionalOptions>): ImplementedProcedure & ProcedureClient; /** * Make this procedure compatible with server action. */ actionable(...rest: MaybeOptionalOptions>>): ImplementedProcedure & ProcedureActionableClient; } /** * Like `ProcedureBuilderWithoutHandler`, but removed all method that can change the contract. */ interface ProcedureImplementer { '~orpc': BuilderDef; 'use'(middleware: Middleware, InferSchemaInput, ORPCErrorConstructorMap, TMeta>): ProcedureImplementer, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'use'(middleware: Middleware, ORPCErrorConstructorMap, TMeta>, mapInput: MapInputMiddleware, UInput>): ProcedureImplementer, MergedCurrentContext, TInputSchema, TOutputSchema, TErrorMap, TMeta>; 'handler'(handler: ProcedureHandler, InferSchemaInput, TErrorMap, TMeta>): ImplementedProcedure; } interface RouterImplementerWithMiddlewares { use(middleware: Middleware>, InferContractRouterMeta>): ImplementerInternalWithMiddlewares, MergedCurrentContext>; router>(router: U): EnhancedRouter>; lazy>(loader: () => Promise<{ default: U; }>): EnhancedRouter, TInitialContext, TCurrentContext, Record>; } type ImplementerInternalWithMiddlewares = (TContract extends ContractProcedure ? ProcedureImplementer : RouterImplementerWithMiddlewares & { [K in keyof TContract]: TContract[K] extends AnyContractRouter ? ImplementerInternalWithMiddlewares : never; }); interface RouterImplementer { middleware(// = any here is important to make middleware can be used in any output by default middleware: Middleware>, InferContractRouterMeta>): DecoratedMiddleware>; use(middleware: Middleware>, InferContractRouterMeta>): ImplementerInternalWithMiddlewares, MergedCurrentContext>; router>(router: U): EnhancedRouter>; lazy>(loader: () => Promise<{ default: U; }>): EnhancedRouter, TInitialContext, TCurrentContext, Record>; } type ImplementerInternal = (TContract extends ContractProcedure ? ProcedureImplementer : RouterImplementer & { [K in keyof TContract]: TContract[K] extends AnyContractRouter ? ImplementerInternal : never; }); declare function implementerInternal(contract: T, config: BuilderConfig, middlewares: AnyMiddleware[]): ImplementerInternal; type Implementer = { $context(): Implementer, U>; $config(config: BuilderConfig): Implementer; } & ImplementerInternal; declare function implement>(contract: T, config?: BuilderConfig): Implementer; declare function isStartWithMiddlewares(middlewares: readonly AnyMiddleware[], compare: readonly AnyMiddleware[]): boolean; declare function mergeMiddlewares(first: readonly AnyMiddleware[], second: readonly AnyMiddleware[], options: { dedupeLeading: boolean; }): readonly AnyMiddleware[]; declare function addMiddleware(middlewares: readonly AnyMiddleware[], addition: AnyMiddleware): AnyMiddleware[]; declare function createAssertedLazyProcedure(lazied: Lazy): Lazy; /** * Create a new procedure that ensure the contract is applied to the procedure. */ declare function createContractedProcedure(procedure: AnyProcedure, contract: AnyContractProcedure): AnyProcedure; /** * Directly call a procedure without creating a client. * * @example * ```ts * const output = await call(getting, 'input') * const output = await call(getting, 'input', { context: { db: 'postgres' } }) * ``` * */ declare function call(procedure: Lazyable>, input: InferSchemaInput, ...rest: MaybeOptionalOptions>>): ClientPromiseResult, ErrorFromErrorMap>; type RouterClient> = TRouter extends Procedure ? ProcedureClient : { [K in keyof TRouter]: TRouter[K] extends Lazyable ? RouterClient : never; }; declare function createRouterClient(router: Lazyable, ...[options]: MaybeOptionalOptions, Schema, ErrorMap, Meta, TClientContext>>): RouterClient; declare function setHiddenRouterContract>(router: T, contract: AnyContractRouter): T; declare function getHiddenRouterContract(router: Lazyable): AnyContractRouter | undefined; export { AnyMiddleware, AnyProcedure, AnyRouter, Builder, Context, CreateProcedureClientOptions, DecoratedProcedure, InferRouterInitialContext, Lazy, Lazyable, MapInputMiddleware, MergedCurrentContext, MergedInitialContext, Middleware, ORPCErrorConstructorMap, Procedure, ProcedureClient, ProcedureHandler, Router, addMiddleware, call, createAccessibleLazyRouter, createActionableClient, createAssertedLazyProcedure, createContractedProcedure, createRouterClient, decorateMiddleware, enhanceRouter, fallbackConfig, getHiddenRouterContract, getRouter, implement, implementerInternal, isStartWithMiddlewares, mergeMiddlewares, os, resolveContractProcedures, setHiddenRouterContract, traverseContractProcedures, unlazyRouter }; export type { AccessibleLazyRouter, ActionableClient, ActionableClientRest, ActionableClientResult, ActionableError, BuilderConfig, BuilderDef, BuilderWithMiddlewares, Config, ContractProcedureCallbackOptions, DecoratedMiddleware, EnhanceRouterOptions, EnhancedRouter, ImplementedProcedure, Implementer, ImplementerInternal, ImplementerInternalWithMiddlewares, LazyTraverseContractProceduresOptions, ProcedureActionableClient, ProcedureBuilder, ProcedureBuilderWithInput, ProcedureBuilderWithInputOutput, ProcedureBuilderWithOutput, ProcedureImplementer, RouterBuilder, RouterClient, RouterImplementer, RouterImplementerWithMiddlewares, TraverseContractProceduresOptions, UnactionableError, UnlaziedRouter };