/**
*
*
Built-in Loops integration.
*
*
*
*
*
* @module providers/loops
*/
/**
*
* @param config
* @returns LoopsConfig
* @requires LoopsUserConfig
* @example
* ```ts
* Loops({
* apiKey: process.env.AUTH_LOOPS_KEY,
* transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID,
* })
* ```
*
* @typedef LoopsUserConfig
*/
export default function Loops(config) {
return {
id: "loops",
apiKey: "",
type: "email",
name: "Loops",
from: "Auth.js ",
maxAge: 24 * 60 * 60,
transactionalId: config.transactionalId || "",
async sendVerificationRequest(params) {
const { identifier: to, provider, url } = params;
if (!provider.apiKey || !provider.transactionalId)
throw new TypeError("Missing Loops API Key or TransactionalId");
const res = await fetch("https://app.loops.so/api/v1/transactional", {
method: "POST",
headers: {
Authorization: `Bearer ${provider.apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
transactionalId: provider.transactionalId,
email: to,
dataVariables: {
url: url,
},
}),
});
if (!res.ok) {
throw new Error("Loops Send Error: " + JSON.stringify(await res.json()));
}
},
options: config,
};
}