better-auth-invite
Version:
**UNDER DEVELOPMENT — ALPHA**
176 lines (175 loc) • 6.14 kB
TypeScript
import type { UserWithRole } from "better-auth/plugins";
import { z } from "zod";
export interface InviteOptions {
inviteDurationSeconds: number;
roleForSignupWithoutInvite: string;
roleForSignupWithInvite: string;
canCreateInvite?: (user: UserWithRole) => boolean;
generateCode?: () => string;
getDate?: () => Date;
}
export declare const invite: (options: InviteOptions) => {
id: "invite";
endpoints: {
create: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body: {
_: true;
};
} & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers?: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: import("better-auth").Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: {
code: string;
};
} : {
code: string;
}>;
options: {
body: z.ZodObject<{
_: z.ZodLiteral<true>;
}, "strip", z.ZodTypeAny, {
_: true;
}, {
_: true;
}>;
method: "POST";
use: ((inputContext: import("better-auth").MiddlewareInputContext<import("better-auth").MiddlewareOptions>) => Promise<{
session: {
session: Record<string, any> & {
id: string;
createdAt: Date;
updatedAt: Date;
userId: string;
expiresAt: Date;
token: string;
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
};
user: Record<string, any> & {
id: string;
name: string;
email: string;
emailVerified: boolean;
createdAt: Date;
updatedAt: Date;
image?: string | null | undefined;
};
};
}>)[];
} & {
use: any[];
};
path: "/invite/create";
};
redeem: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body: {
code: string;
};
} & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers?: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: import("better-auth").Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: {};
} : {}>;
options: {
method: "POST";
body: z.ZodObject<{
code: z.ZodString;
}, "strip", z.ZodTypeAny, {
code: string;
}, {
code: string;
}>;
} & {
use: any[];
};
path: "/invite/redeem";
};
};
hooks: {
after: {
matcher: (context: import("better-auth").HookEndpointContext) => boolean;
handler: (inputContext: import("better-auth").MiddlewareInputContext<import("better-auth").MiddlewareOptions>) => Promise<void>;
}[];
};
$ERROR_CODES: {
readonly USER_NOT_LOGGED_IN: "User must be logged in to create an invite";
readonly INSUFFICIENT_PERMISSIONS: "User does not have sufficient permissions to create invite";
readonly NO_SUCH_USER: "No such user";
};
schema: {
invite: {
fields: {
code: {
type: "string";
unique: true;
};
invitedByUserId: {
type: "string";
references: {
model: string;
field: string;
onDelete: "set null";
};
};
usedByUserId: {
type: "string";
required: false;
references: {
model: string;
field: string;
onDelete: "set null";
};
};
createdAt: {
type: "date";
defaultValue: () => Date;
};
expiresAt: {
type: "date";
required: true;
};
usedAt: {
type: "date";
required: false;
};
};
};
};
};
export * from "./client.js";