@convex-dev/better-auth
Version:
A Better Auth component for Convex.
711 lines • 42.5 kB
TypeScript
import { type Auth as ConvexAuth, type DefaultFunctionArgs, type Expand, type FunctionReference, GenericActionCtx, type GenericDataModel, GenericMutationCtx, type GenericQueryCtx, type HttpRouter } from "convex/server";
import { type GenericId, Infer } from "convex/values";
import type { api } from "../component/_generated/api";
import schema from "../component/schema";
import { convexAdapter } from "./adapter";
import { betterAuth } from "better-auth";
import { adapterArgsValidator } from "../component/lib";
export { convexAdapter };
declare const createUserValidator: import("convex/values").VObject<{
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
}, {
name: import("convex/values").VString<string, "required">;
email: import("convex/values").VString<string, "required">;
emailVerified: import("convex/values").VBoolean<boolean, "required">;
image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
createdAt: import("convex/values").VFloat64<number, "required">;
updatedAt: import("convex/values").VFloat64<number, "required">;
twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>;
stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
}, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">;
declare const createUserArgsValidator: import("convex/values").VObject<{
input: {
model: "user";
data: {
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
};
};
}, {
input: import("convex/values").VObject<{
model: "user";
data: {
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
};
}, {
model: import("convex/values").VLiteral<"user", "required">;
data: import("convex/values").VObject<{
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
}, {
name: import("convex/values").VString<string, "required">;
email: import("convex/values").VString<string, "required">;
emailVerified: import("convex/values").VBoolean<boolean, "required">;
image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
createdAt: import("convex/values").VFloat64<number, "required">;
updatedAt: import("convex/values").VFloat64<number, "required">;
twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>;
stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
}, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">;
}, "required", "model" | "data" | "data.name" | "data.email" | "data.emailVerified" | "data.image" | "data.createdAt" | "data.updatedAt" | "data.twoFactorEnabled" | "data.isAnonymous" | "data.username" | "data.displayUsername" | "data.phoneNumber" | "data.phoneNumberVerified" | "data.role" | "data.banned" | "data.banReason" | "data.banExpires" | "data.stripeCustomerId" | "data.teamId">;
}, "required", "input" | "input.model" | "input.data" | "input.data.name" | "input.data.email" | "input.data.emailVerified" | "input.data.image" | "input.data.createdAt" | "input.data.updatedAt" | "input.data.twoFactorEnabled" | "input.data.isAnonymous" | "input.data.username" | "input.data.displayUsername" | "input.data.phoneNumber" | "input.data.phoneNumberVerified" | "input.data.role" | "input.data.banned" | "input.data.banReason" | "input.data.banExpires" | "input.data.stripeCustomerId" | "input.data.teamId">;
declare const updateUserArgsValidator: import("convex/values").VObject<{
input: {
where?: {
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}[] | undefined;
update: {
name?: string | undefined;
email?: string | undefined;
emailVerified?: boolean | undefined;
image?: string | null | undefined;
createdAt?: number | undefined;
updatedAt?: number | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
};
model: "user";
};
}, {
input: import("convex/values").VObject<{
where?: {
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}[] | undefined;
update: {
name?: string | undefined;
email?: string | undefined;
emailVerified?: boolean | undefined;
image?: string | null | undefined;
createdAt?: number | undefined;
updatedAt?: number | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
};
model: "user";
}, {
model: import("convex/values").VLiteral<"user", "required">;
where: import("convex/values").VArray<{
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}[] | undefined, import("convex/values").VObject<{
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}, {
field: import("convex/values").VString<string, "required">;
operator: import("convex/values").VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>;
value: import("convex/values").VUnion<string | number | boolean | string[] | number[] | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">, import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">, import("convex/values").VNull<null, "required">], "required", never>;
connector: import("convex/values").VUnion<"AND" | "OR" | undefined, [import("convex/values").VLiteral<"AND", "required">, import("convex/values").VLiteral<"OR", "required">], "optional", never>;
}, "required", "value" | "field" | "operator" | "connector">, "optional">;
update: import("convex/values").VObject<{
name?: string | undefined;
email?: string | undefined;
emailVerified?: boolean | undefined;
image?: string | null | undefined;
createdAt?: number | undefined;
updatedAt?: number | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
}, {
name: import("convex/values").VString<string | undefined, "optional">;
email: import("convex/values").VString<string | undefined, "optional">;
emailVerified: import("convex/values").VBoolean<boolean | undefined, "optional">;
image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
createdAt: import("convex/values").VFloat64<number | undefined, "optional">;
updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>;
banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>;
stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
}, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">;
}, "required", "update" | "model" | "where" | "update.name" | "update.email" | "update.emailVerified" | "update.image" | "update.createdAt" | "update.updatedAt" | "update.twoFactorEnabled" | "update.isAnonymous" | "update.username" | "update.displayUsername" | "update.phoneNumber" | "update.phoneNumberVerified" | "update.role" | "update.banned" | "update.banReason" | "update.banExpires" | "update.stripeCustomerId" | "update.teamId">;
}, "required", "input" | "input.model" | "input.update" | "input.where" | "input.update.name" | "input.update.email" | "input.update.emailVerified" | "input.update.image" | "input.update.createdAt" | "input.update.updatedAt" | "input.update.twoFactorEnabled" | "input.update.isAnonymous" | "input.update.username" | "input.update.displayUsername" | "input.update.phoneNumber" | "input.update.phoneNumberVerified" | "input.update.role" | "input.update.banned" | "input.update.banReason" | "input.update.banExpires" | "input.update.stripeCustomerId" | "input.update.teamId">;
declare const createSessionArgsValidator: import("convex/values").VObject<{
input: {
model: "session";
data: {
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
impersonatedBy?: string | null | undefined;
activeOrganizationId?: string | null | undefined;
activeTeamId?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
expiresAt: number;
token: string;
};
};
}, {
input: import("convex/values").VObject<{
model: "session";
data: {
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
impersonatedBy?: string | null | undefined;
activeOrganizationId?: string | null | undefined;
activeTeamId?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
expiresAt: number;
token: string;
};
}, {
model: import("convex/values").VLiteral<"session", "required">;
data: import("convex/values").VObject<{
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
impersonatedBy?: string | null | undefined;
activeOrganizationId?: string | null | undefined;
activeTeamId?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
expiresAt: number;
token: string;
}, {
expiresAt: import("convex/values").VFloat64<number, "required">;
token: import("convex/values").VString<string, "required">;
createdAt: import("convex/values").VFloat64<number, "required">;
updatedAt: import("convex/values").VFloat64<number, "required">;
ipAddress: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
userAgent: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
userId: import("convex/values").VString<string, "required">;
impersonatedBy: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
activeOrganizationId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
activeTeamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>;
}, "required", "createdAt" | "updatedAt" | "userId" | "expiresAt" | "token" | "ipAddress" | "userAgent" | "impersonatedBy" | "activeOrganizationId" | "activeTeamId">;
}, "required", "model" | "data" | "data.createdAt" | "data.updatedAt" | "data.userId" | "data.expiresAt" | "data.token" | "data.ipAddress" | "data.userAgent" | "data.impersonatedBy" | "data.activeOrganizationId" | "data.activeTeamId">;
}, "required", "input" | "input.model" | "input.data" | "input.data.createdAt" | "input.data.updatedAt" | "input.data.userId" | "input.data.expiresAt" | "input.data.token" | "input.data.ipAddress" | "input.data.userAgent" | "input.data.impersonatedBy" | "input.data.activeOrganizationId" | "input.data.activeTeamId">;
export type EventFunction<T extends DefaultFunctionArgs> = FunctionReference<"mutation", "internal" | "public", T>;
export type AuthFunctions = {
createUser: FunctionReference<"mutation", "internal", Infer<typeof createUserArgsValidator>>;
deleteUser: FunctionReference<"mutation", "internal", Infer<typeof adapterArgsValidator>>;
updateUser: FunctionReference<"mutation", "internal", Infer<typeof updateUserArgsValidator>>;
createSession: FunctionReference<"mutation", "internal", Infer<typeof createSessionArgsValidator>>;
};
export type PublicAuthFunctions = {
isAuthenticated: FunctionReference<"query", "public">;
};
export declare class BetterAuth<UserId extends string = string> {
component: UseApi<typeof api>;
config: {
authFunctions: AuthFunctions;
publicAuthFunctions?: PublicAuthFunctions;
verbose?: boolean;
};
constructor(component: UseApi<typeof api>, config: {
authFunctions: AuthFunctions;
publicAuthFunctions?: PublicAuthFunctions;
verbose?: boolean;
});
isAuthenticated(token?: string | null): Promise<any>;
getHeaders(ctx: RunQueryCtx & {
auth: ConvexAuth;
}): Promise<Headers>;
getAuthUserId(ctx: RunQueryCtx & {
auth: ConvexAuth;
}): Promise<UserId | null>;
getAuthUser(ctx: RunQueryCtx & {
auth: ConvexAuth;
}): Promise<any>;
getIdTokenCookieName(createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>): Promise<string>;
updateUserMetadata(ctx: GenericMutationCtx<GenericDataModel>, userId: UserId, metadata: Omit<Partial<Infer<typeof schema.tables.user.validator>>, "userId">): Promise<{
_id: string;
_creationTime: number;
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
impersonatedBy?: string | null | undefined;
activeOrganizationId?: string | null | undefined;
activeTeamId?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
expiresAt: number;
token: string;
} | {
_id: string;
_creationTime: number;
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
userId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
} | {
_id: string;
_creationTime: number;
accessToken?: string | null | undefined;
refreshToken?: string | null | undefined;
idToken?: string | null | undefined;
accessTokenExpiresAt?: number | null | undefined;
refreshTokenExpiresAt?: number | null | undefined;
scope?: string | null | undefined;
password?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
accountId: string;
providerId: string;
} | {
_id: string;
_creationTime: number;
createdAt?: number | null | undefined;
updatedAt?: number | null | undefined;
expiresAt: number;
identifier: string;
value: string;
} | {
_id: string;
_creationTime: number;
userId: string;
secret: string;
backupCodes: string;
} | {
_id: string;
_creationTime: number;
name?: string | null | undefined;
createdAt?: number | null | undefined;
transports?: string | null | undefined;
aaguid?: string | null | undefined;
userId: string;
publicKey: string;
credentialID: string;
counter: number;
deviceType: string;
backedUp: boolean;
} | {
_id: string;
_creationTime: number;
name?: string | null | undefined;
expiresAt?: number | null | undefined;
start?: string | null | undefined;
prefix?: string | null | undefined;
refillInterval?: number | null | undefined;
refillAmount?: number | null | undefined;
lastRefillAt?: number | null | undefined;
enabled?: boolean | null | undefined;
rateLimitEnabled?: boolean | null | undefined;
rateLimitTimeWindow?: number | null | undefined;
rateLimitMax?: number | null | undefined;
requestCount?: number | null | undefined;
remaining?: number | null | undefined;
lastRequest?: number | null | undefined;
permissions?: string | null | undefined;
metadata?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
key: string;
} | {
_id: string;
_creationTime: number;
name?: string | null | undefined;
type?: string | null | undefined;
createdAt?: number | null | undefined;
updatedAt?: number | null | undefined;
userId?: string | null | undefined;
metadata?: string | null | undefined;
icon?: string | null | undefined;
clientId?: string | null | undefined;
clientSecret?: string | null | undefined;
redirectURLs?: string | null | undefined;
disabled?: boolean | null | undefined;
} | {
_id: string;
_creationTime: number;
createdAt?: number | null | undefined;
updatedAt?: number | null | undefined;
userId?: string | null | undefined;
accessToken?: string | null | undefined;
refreshToken?: string | null | undefined;
accessTokenExpiresAt?: number | null | undefined;
refreshTokenExpiresAt?: number | null | undefined;
clientId?: string | null | undefined;
scopes?: string | null | undefined;
} | {
_id: string;
_creationTime: number;
createdAt?: number | null | undefined;
updatedAt?: number | null | undefined;
userId?: string | null | undefined;
clientId?: string | null | undefined;
scopes?: string | null | undefined;
consentGiven?: boolean | null | undefined;
} | {
_id: string;
_creationTime: number;
metadata?: string | null | undefined;
slug?: string | null | undefined;
logo?: string | null | undefined;
name: string;
createdAt: number;
} | {
_id: string;
_creationTime: number;
createdAt: number;
role: string;
userId: string;
organizationId: string;
} | {
_id: string;
_creationTime: number;
role?: string | null | undefined;
teamId?: string | null | undefined;
email: string;
expiresAt: number;
organizationId: string;
status: string;
inviterId: string;
} | {
_id: string;
_creationTime: number;
updatedAt?: number | null | undefined;
name: string;
createdAt: number;
organizationId: string;
} | {
_id: string;
_creationTime: number;
createdAt?: number | null | undefined;
userId: string;
teamId: string;
} | {
_id: string;
_creationTime: number;
userId?: string | null | undefined;
organizationId?: string | null | undefined;
oidcConfig?: string | null | undefined;
samlConfig?: string | null | undefined;
providerId: string;
issuer: string;
domain: string;
} | {
_id: string;
_creationTime: number;
createdAt: number;
publicKey: string;
privateKey: string;
} | {
_id: string;
_creationTime: number;
stripeCustomerId?: string | null | undefined;
status?: string | null | undefined;
stripeSubscriptionId?: string | null | undefined;
periodStart?: number | null | undefined;
periodEnd?: number | null | undefined;
cancelAtPeriodEnd?: boolean | null | undefined;
seats?: number | null | undefined;
plan: string;
referenceId: string;
} | {
_id: string;
_creationTime: number;
isPrimary?: boolean | null | undefined;
createdAt: number;
userId: string;
address: string;
chainId: number;
} | {
_id: string;
_creationTime: number;
key?: string | null | undefined;
lastRequest?: number | null | undefined;
count?: number | null | undefined;
}>;
getUserByUsername(ctx: GenericQueryCtx<GenericDataModel>, username: string): Promise<any>;
createAuthFunctions<DataModel extends GenericDataModel>(opts: {
onCreateUser: (ctx: GenericMutationCtx<DataModel>, user: Infer<typeof createUserValidator>) => Promise<UserId>;
onDeleteUser?: (ctx: GenericMutationCtx<DataModel>, id: UserId) => void | Promise<void>;
onUpdateUser?: (ctx: GenericMutationCtx<DataModel>, user: Infer<typeof schema.tables.user.validator>) => void | Promise<void>;
onCreateSession?: (ctx: GenericMutationCtx<DataModel>, session: Infer<typeof schema.tables.session.validator>) => void | Promise<void>;
}): {
isAuthenticated: import("convex/server").RegisteredQuery<"public", {}, Promise<boolean>>;
createUser: import("convex/server").RegisteredMutation<"internal", {
input: {
model: "user";
data: {
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
};
};
}, Promise<any>>;
deleteUser: import("convex/server").RegisteredMutation<"internal", {
where?: {
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}[] | undefined;
sortBy?: {
field: string;
direction: "asc" | "desc";
} | undefined;
select?: string[] | undefined;
limit?: number | undefined;
offset?: number | undefined;
unique?: boolean | undefined;
model: string;
}, Promise<any>>;
updateUser: import("convex/server").RegisteredMutation<"internal", {
input: {
where?: {
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
connector?: "AND" | "OR" | undefined;
value: string | number | boolean | string[] | number[] | null;
field: string;
}[] | undefined;
update: {
name?: string | undefined;
email?: string | undefined;
emailVerified?: boolean | undefined;
image?: string | null | undefined;
createdAt?: number | undefined;
updatedAt?: number | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
teamId?: string | null | undefined;
};
model: "user";
};
}, Promise<{
_id: string;
_creationTime: number;
image?: string | null | undefined;
twoFactorEnabled?: boolean | null | undefined;
isAnonymous?: boolean | null | undefined;
username?: string | null | undefined;
displayUsername?: string | null | undefined;
phoneNumber?: string | null | undefined;
phoneNumberVerified?: boolean | null | undefined;
role?: string | null | undefined;
banned?: boolean | null | undefined;
banReason?: string | null | undefined;
banExpires?: number | null | undefined;
stripeCustomerId?: string | null | undefined;
userId?: string | null | undefined;
teamId?: string | null | undefined;
name: string;
email: string;
emailVerified: boolean;
createdAt: number;
updatedAt: number;
}>>;
createSession: import("convex/server").RegisteredMutation<"internal", {
input: {
model: "session";
data: {
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
impersonatedBy?: string | null | undefined;
activeOrganizationId?: string | null | undefined;
activeTeamId?: string | null | undefined;
createdAt: number;
updatedAt: number;
userId: string;
expiresAt: number;
token: string;
};
};
}, Promise<any>>;
};
registerRoutes(http: HttpRouter, createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>, opts?: {
cors?: boolean | {
allowedOrigins?: string[];
allowedHeaders?: string[];
exposedHeaders?: string[];
};
}): void;
}
export type RunQueryCtx = {
runQuery: GenericQueryCtx<GenericDataModel>["runQuery"];
};
export type RunMutationCtx = {
runQuery: GenericQueryCtx<GenericDataModel>["runQuery"];
runMutation: GenericMutationCtx<GenericDataModel>["runMutation"];
};
export type RunActionCtx = {
runQuery: GenericQueryCtx<GenericDataModel>["runQuery"];
runMutation: GenericMutationCtx<GenericDataModel>["runMutation"];
runAction: GenericActionCtx<GenericDataModel>["runAction"];
};
export type RunCtx = RunQueryCtx | RunMutationCtx | RunActionCtx;
export type OpaqueIds<T> = T extends GenericId<infer _T> ? string : T extends (infer U)[] ? OpaqueIds<U>[] : T extends ArrayBuffer ? ArrayBuffer : T extends object ? {
[K in keyof T]: OpaqueIds<T[K]>;
} : T;
export type UseApi<API> = Expand<{
[mod in keyof API]: API[mod] extends FunctionReference<infer FType, "public", infer FArgs, infer FReturnType, infer FComponentPath> ? FunctionReference<FType, "internal", OpaqueIds<FArgs>, OpaqueIds<FReturnType>, FComponentPath> : UseApi<API[mod]>;
}>;
//# sourceMappingURL=index.d.ts.map