@kentcdodds/tmp-remix-utils
Version:
This package contains simple utility functions to use with [Remix.run](https://remix.run).
37 lines (36 loc) • 1.39 kB
TypeScript
import type { TypedResponse } from "@remix-run/server-runtime";
type ActionsRecord = Record<string, () => Promise<TypedResponse<unknown>>>;
type ResponsesRecord<Actions extends ActionsRecord> = {
[Action in keyof Actions]: Actions[Action] extends () => Promise<
TypedResponse<infer Result>
>
? Result
: never;
};
type ResponsesUnion<Actions extends ActionsRecord> =
ResponsesRecord<Actions>[keyof Actions];
/**
* Runs an action based on the request's action name
* @param request The request to parse for an action name
* @param actions The map of actions to run
* @returns The response from the action
* @throws {ReferenceError} Action name not found
* @throws {ReferenceError} Action "${name}" not found
*/
export declare function namedAction<Actions extends ActionsRecord>(
request: Request,
actions: Actions
): Promise<TypedResponse<ResponsesUnion<Actions>>>;
export declare function namedAction<Actions extends ActionsRecord>(
url: URL,
actions: Actions
): Promise<TypedResponse<ResponsesUnion<Actions>>>;
export declare function namedAction<Actions extends ActionsRecord>(
searchParams: URLSearchParams,
actions: Actions
): Promise<TypedResponse<ResponsesUnion<Actions>>>;
export declare function namedAction<Actions extends ActionsRecord>(
formData: FormData,
actions: Actions
): Promise<TypedResponse<ResponsesUnion<Actions>>>;
export {};