expo-passkey
Version:
Passkey authentication for Expo apps with Better Auth integration
176 lines • 8.37 kB
TypeScript
/**
* @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