UNPKG

@astro-utils/forms

Version:

Server component for Astro (call server functions from client side with validation and state management)

36 lines (35 loc) 1.26 kB
import type { AstroGlobal } from 'astro'; import AwaitLockDefault from 'await-lock'; import FormsReact from './form-tools/forms-react.js'; export declare function createLock(): InstanceType<typeof AwaitLockDefault['default']>; export type ExtendedRequest = AstroGlobal['request'] & { formDataLock?: ReturnType<typeof createLock>; validateFormLock?: ReturnType<typeof createLock>; formData: (Request['formData'] | (() => FormData | Promise<FormData>)) & { requestFormValid?: boolean; }; }; export interface AstroLinkHTTP { request: ExtendedRequest; cookies: AstroGlobal['cookies']; locals: AstroGlobal['locals']; } declare global { export namespace App { interface Locals { forms: FormsReact; webFormOff?: boolean; session: { [key: string]: any; }; } } } export type ModifyDeep<A, B extends DeepPartialAny<A>> = { [K in keyof A | keyof B]: K extends keyof A ? K extends keyof B ? A[K] extends AnyObject ? B[K] extends AnyObject ? ModifyDeep<A[K], B[K]> : B[K] : B[K] : A[K] : B[K]; }; type AnyObject = Record<string, any>; type DeepPartialAny<T> = { [P in keyof T]?: T[P] extends AnyObject ? DeepPartialAny<T[P]> : any; }; export {};