UNPKG

kitcn

Version:

kitcn - React Query integration and CLI tools for Convex

34 lines (33 loc) 2.44 kB
import { o as MiddlewareBuilder } from "./types-CnTpHR1F.js"; //#region src/plugins/middleware.d.ts declare const PLUGIN_CONFIG_RESOLVERS: unique symbol; type PluginConfigureContext<TCtx = unknown> = { ctx: TCtx; }; type PluginConfigureResolver<TOptions, TCtx = unknown> = (args: PluginConfigureContext<TCtx>) => TOptions | undefined; type PluginConfigureInput<TOptions, TCtx = unknown> = TOptions | PluginConfigureResolver<TOptions, TCtx>; type PluginApiScope<TKey extends string, TApi extends object> = { api: Record<string, unknown> & Record<TKey, TApi>; }; type PluginMiddlewareHelpers<TKey extends string, TApi extends object> = { middleware: () => MiddlewareBuilder<any, any, PluginApiScope<TKey, TApi>, unknown>; }; type PluginMiddlewareFactory = (...args: never[]) => MiddlewareBuilder<any, any, any, unknown>; type PluginNamedMiddlewareFactories = Record<string, PluginMiddlewareFactory>; type PluginExtensionFactories = PluginNamedMiddlewareFactories & { middleware?: PluginMiddlewareFactory; }; type Plugin<TKey extends string = string, TOptions = undefined, TApi extends object = {}, TCtx = unknown, TMiddlewares extends PluginNamedMiddlewareFactories = {}> = { readonly key: TKey; readonly configure: <TNextCtx = TCtx>(input: PluginConfigureInput<TOptions, TNextCtx>) => Plugin<TKey, TOptions, TApi, TNextCtx, TMiddlewares>; readonly middleware: () => MiddlewareBuilder<any, any, PluginApiScope<TKey, TApi>, unknown>; readonly extend: <TNextExtensions extends PluginExtensionFactories>(build: (helpers: PluginMiddlewareHelpers<TKey, TApi>) => TNextExtensions) => Plugin<TKey, TOptions, TApi, TCtx, TMiddlewares & Omit<TNextExtensions, 'middleware'>>; readonly [PLUGIN_CONFIG_RESOLVERS]?: readonly PluginConfigureResolver<TOptions, TCtx>[]; } & TMiddlewares; declare function resolvePluginOptions<TPlugin extends Plugin<any, any, any, any>, TCtx = unknown>(plugin: TPlugin, args: PluginConfigureContext<TCtx>): TPlugin extends Plugin<any, infer TOptions, any, any> ? TOptions | undefined : never; declare function definePlugin<TKey extends string, TOptions = undefined, TApi extends object = {}>(key: TKey, provide: (args: { ctx: unknown; options?: TOptions; }) => TApi): Plugin<TKey, TOptions, TApi, unknown, {}>; //#endregion export { PluginConfigureResolver as a, PluginConfigureInput as i, PluginApiScope as n, definePlugin as o, PluginConfigureContext as r, resolvePluginOptions as s, Plugin as t };