UNPKG

expo-passkey

Version:

Passkey authentication for Expo apps with Better Auth integration

176 lines 8.37 kB
/** * @file WebAuthn challenge endpoint * @description Creates and stores challenges for WebAuthn registration and authentication */ import type { ResolvedSchemaConfig } from "../../types"; import type { Logger } from "../utils/logger"; /** * Creates a WebAuthn challenge endpoint for registration and authentication */ export declare const createChallengeEndpoint: (options: { logger: Logger; schemaConfig: ResolvedSchemaConfig; }) => { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { userId: string; type: "registration" | "authentication"; registrationOptions?: { timeout?: number | undefined; attestation?: "none" | "indirect" | "direct" | "enterprise" | undefined; authenticatorSelection?: { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; } | undefined; } | undefined; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: import("better-call").Middleware[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { challenge: string; }; } : { challenge: string; }>; options: { method: "POST"; body: import("zod").ZodObject<{ userId: import("zod").ZodString; type: import("zod").ZodEnum<["registration", "authentication"]>; registrationOptions: import("zod").ZodOptional<import("zod").ZodObject<{ attestation: import("zod").ZodOptional<import("zod").ZodEnum<["none", "indirect", "direct", "enterprise"]>>; authenticatorSelection: import("zod").ZodOptional<import("zod").ZodObject<{ authenticatorAttachment: import("zod").ZodOptional<import("zod").ZodEnum<["platform", "cross-platform"]>>; residentKey: import("zod").ZodOptional<import("zod").ZodEnum<["required", "preferred", "discouraged"]>>; requireResidentKey: import("zod").ZodOptional<import("zod").ZodBoolean>; userVerification: import("zod").ZodOptional<import("zod").ZodEnum<["required", "preferred", "discouraged"]>>; }, "strip", import("zod").ZodTypeAny, { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; }, { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; }>>; timeout: import("zod").ZodOptional<import("zod").ZodNumber>; }, "strip", import("zod").ZodTypeAny, { timeout?: number | undefined; attestation?: "none" | "indirect" | "direct" | "enterprise" | undefined; authenticatorSelection?: { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; } | undefined; }, { timeout?: number | undefined; attestation?: "none" | "indirect" | "direct" | "enterprise" | undefined; authenticatorSelection?: { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; } | undefined; }>>; }, "strip", import("zod").ZodTypeAny, { userId: string; type: "registration" | "authentication"; registrationOptions?: { timeout?: number | undefined; attestation?: "none" | "indirect" | "direct" | "enterprise" | undefined; authenticatorSelection?: { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; } | undefined; } | undefined; }, { userId: string; type: "registration" | "authentication"; registrationOptions?: { timeout?: number | undefined; attestation?: "none" | "indirect" | "direct" | "enterprise" | undefined; authenticatorSelection?: { authenticatorAttachment?: "platform" | "cross-platform" | undefined; userVerification?: "required" | "preferred" | "discouraged" | undefined; residentKey?: "required" | "preferred" | "discouraged" | undefined; requireResidentKey?: boolean | undefined; } | undefined; } | undefined; }>; metadata: { openapi: { description: string; tags: string[]; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { challenge: { type: string; }; }; }; }; }; }; 400: { description: string; content: { "application/json": { schema: { type: "object"; properties: { error: { type: string; properties: { code: { type: string; }; message: { type: string; }; }; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/expo-passkey/challenge"; }; //# sourceMappingURL=challenge.d.ts.map