// @ts-nocheck import OverrideableBuilder from "supertokens-js-override"; import { JSONObject, UserContext } from "../../types"; export type TypeInput = { override?: { functions?: (originalImplementation: RecipeInterface, builder: OverrideableBuilder) => RecipeInterface; apis?: (originalImplementation: APIInterface, builder: OverrideableBuilder) => APIInterface; }; }; export type TypeNormalisedInput = { override: { functions: (originalImplementation: RecipeInterface, builder: OverrideableBuilder) => RecipeInterface; apis: (originalImplementation: APIInterface, builder: OverrideableBuilder) => APIInterface; }; }; export type APIInterface = {}; export type RecipeInterface = { getUserMetadata: (input: { userId: string; userContext: UserContext; }) => Promise<{ status: "OK"; metadata: any; }>; /** * Updates the metadata object of the user by doing a shallow merge of the stored and the update JSONs * and removing properties set to null on the root level of the update object. * e.g.: * - stored: `{ "preferences": { "theme":"dark" }, "notifications": { "email": true }, "todos": ["example"] }` * - update: `{ "notifications": { "sms": true }, "todos": null }` * - result: `{ "preferences": { "theme":"dark" }, "notifications": { "sms": true } }` */ updateUserMetadata: (input: { userId: string; metadataUpdate: JSONObject; userContext: UserContext; }) => Promise<{ status: "OK"; metadata: JSONObject; }>; clearUserMetadata: (input: { userId: string; userContext: UserContext; }) => Promise<{ status: "OK"; }>; };