supertokens-web-js
Version:
SuperTokens SDK for vanilla JS for all recipes
256 lines (255 loc) • 9.71 kB
TypeScript
import {
RecipePostAPIHookContext,
RecipePreAPIHookContext,
UserInput as RecipeModuleUserInput,
} from "../recipeModule/types";
import OverrideableBuilder from "supertokens-js-override";
import { RecipeFunctionOptions } from "../recipeModule/types";
import {
NormalisedInputType as AuthRecipeNormalisedInputType,
InputType as AuthRecipeInputType,
} from "../authRecipe/types";
import { User } from "../../types";
export declare type PreAndPostAPIHookAction =
| "EMAIL_PASSWORD_SIGN_UP"
| "EMAIL_PASSWORD_SIGN_IN"
| "SEND_RESET_PASSWORD_EMAIL"
| "SUBMIT_NEW_PASSWORD"
| "EMAIL_EXISTS";
export declare type PreAPIHookContext = RecipePreAPIHookContext<PreAndPostAPIHookAction>;
export declare type PostAPIHookContext = RecipePostAPIHookContext<PreAndPostAPIHookAction>;
export declare type UserInput = {
/**
* Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/frontend-functions-override/about the documentation}
*/
override?: {
functions?: (
originalImplementation: RecipeInterface,
builder: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
};
} & RecipeModuleUserInput<PreAndPostAPIHookAction>;
export declare type InputType = AuthRecipeInputType<PreAndPostAPIHookAction> & UserInput;
export declare type NormalisedInputType = AuthRecipeNormalisedInputType<PreAndPostAPIHookAction> & {
override: {
functions: (
originalImplementation: RecipeInterface,
builder: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
};
};
export declare type RecipeInterface = {
/**
* Submit a new password for the user
*
* @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more)
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @param options Use this to configure additional properties (for example pre api hooks)
*
* @returns `{status: "OK"}` if successfull
*
* @returns `{status: "RESET_PASSWORD_INVALID_TOKEN_ERROR"}` if the token in the URL is invalid
*
* @returns `{status: "FIELD_ERROR", formFields}` if the form field values are incorrect
*
* @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"`
*/
submitNewPassword: (input: {
formFields: {
id: string;
value: string;
}[];
options?: RecipeFunctionOptions;
userContext: any;
}) => Promise<
| {
status: "OK";
fetchResponse: Response;
}
| {
status: "RESET_PASSWORD_INVALID_TOKEN_ERROR";
fetchResponse: Response;
}
| {
status: "FIELD_ERROR";
formFields: {
id: string;
error: string;
}[];
fetchResponse: Response;
}
>;
/**
* Send an email to the user for password reset
*
* @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more)
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @param options Use this to configure additional properties (for example pre api hooks)
*
* @returns `{status: "OK"}` if successfull
*
* @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs
*
* @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"`
*/
sendPasswordResetEmail: (input: {
formFields: {
id: string;
value: string;
}[];
options?: RecipeFunctionOptions;
userContext: any;
}) => Promise<
| {
status: "OK";
fetchResponse: Response;
}
| {
status: "PASSWORD_RESET_NOT_ALLOWED";
reason: string;
fetchResponse: Response;
}
| {
status: "FIELD_ERROR";
formFields: {
id: string;
error: string;
}[];
fetchResponse: Response;
}
>;
/**
* Sign up a user with email and password
*
* @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more). Note that the form fields must match the ones configured in the backend SDKs
*
* @param shouldTryLinkingWithSessionUser Whether the backend should try to link the user to the session user
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @param options Use this to configure additional properties (for example pre api hooks)
*
* @returns `{status: "OK"}` if successfull
*
* @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs
*
* @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"`
*/
signUp: (input: {
formFields: {
id: string;
value: string;
}[];
shouldTryLinkingWithSessionUser: boolean | undefined;
options?: RecipeFunctionOptions;
userContext: any;
}) => Promise<
| {
status: "OK";
user: User;
fetchResponse: Response;
}
| {
status: "FIELD_ERROR";
formFields: {
id: string;
error: string;
}[];
fetchResponse: Response;
}
| {
status: "SIGN_UP_NOT_ALLOWED";
reason: string;
fetchResponse: Response;
}
>;
/**
* Sign in a user with email and password
*
* @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more). Note that the form fields must match the ones configured in the backend SDKs
*
* @param shouldTryLinkingWithSessionUser Whether the backend should try to link the user to the session user
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @param options Use this to configure additional properties (for example pre api hooks)
*
* @returns `{status: "OK"}` if successfull
*
* @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs
*
* @returns `{status: "WRONG_CREDENTIALS_ERROR"}` if the credentials are invalid
*
* @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"`
*/
signIn: (input: {
formFields: {
id: string;
value: string;
}[];
shouldTryLinkingWithSessionUser: boolean | undefined;
options?: RecipeFunctionOptions;
userContext: any;
}) => Promise<
| {
status: "OK";
user: User;
fetchResponse: Response;
}
| {
status: "FIELD_ERROR";
formFields: {
id: string;
error: string;
}[];
fetchResponse: Response;
}
| {
status: "WRONG_CREDENTIALS_ERROR";
fetchResponse: Response;
}
| {
status: "SIGN_IN_NOT_ALLOWED";
reason: string;
fetchResponse: Response;
}
>;
/**
* Check if an email exists
*
* @param email The email to check
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @param options Use this to configure additional properties (for example pre api hooks)
*
* @returns `{status: "OK", doesExist: boolean}`
*
* @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"`
*/
doesEmailExist: (input: { email: string; options?: RecipeFunctionOptions; userContext: any }) => Promise<{
status: "OK";
doesExist: boolean;
fetchResponse: Response;
}>;
/**
* Reads and returns the reset password token from the current URL
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @returns The "token" query parameter from the current location
*/
getResetPasswordTokenFromURL: (input: { userContext: any }) => string;
/**
* Reads and returns the tenant id from the current URL
*
* @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation}
*
* @returns The "tenantId" query parameter from the current location
*/
getTenantIdFromURL: (input: { userContext: any }) => string | undefined;
};