Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
6.1 KiB
Plaintext
1 line
6.1 KiB
Plaintext
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { Transporter } from 'nodemailer'\nimport type SMTPConnection from 'nodemailer/lib/smtp-connection'\nimport type { EmailAdapter } from 'payload'\n\nimport nodemailer from 'nodemailer'\nimport { InvalidConfiguration } from 'payload'\n\nexport type NodemailerAdapterArgs = {\n defaultFromAddress: string\n defaultFromName: string\n skipVerify?: boolean\n transport?: Transporter\n transportOptions?: SMTPConnection.Options\n}\n\ntype NodemailerAdapter = EmailAdapter<unknown>\n\n/**\n * Creates an email adapter using nodemailer\n *\n * If no email configuration is provided, an ethereal email test account is returned\n */\nexport const nodemailerAdapter = async (\n args?: NodemailerAdapterArgs,\n): Promise<NodemailerAdapter> => {\n const { defaultFromAddress, defaultFromName, transport } = await buildEmail(args)\n\n const adapter: NodemailerAdapter = () => ({\n name: 'nodemailer',\n defaultFromAddress,\n defaultFromName,\n sendEmail: async (message) => {\n return await transport.sendMail({\n from: `${defaultFromName} <${defaultFromAddress}>`,\n ...message,\n })\n },\n })\n return adapter\n}\n\nasync function buildEmail(emailConfig?: NodemailerAdapterArgs): Promise<{\n defaultFromAddress: string\n defaultFromName: string\n transport: Transporter\n}> {\n if (!emailConfig) {\n const transport = await createMockAccount(emailConfig)\n if (!transport) {\n throw new InvalidConfiguration('Unable to create Nodemailer test account.')\n }\n\n return {\n defaultFromAddress: 'info@payloadcms.com',\n defaultFromName: 'Payload',\n transport,\n }\n }\n\n // Create or extract transport\n let transport: Transporter\n if ('transport' in emailConfig && emailConfig.transport) {\n ;({ transport } = emailConfig)\n } else if ('transportOptions' in emailConfig && emailConfig.transportOptions) {\n transport = nodemailer.createTransport(emailConfig.transportOptions)\n } else {\n transport = await createMockAccount(emailConfig)\n }\n\n if (!emailConfig.skipVerify) {\n await verifyTransport(transport)\n }\n\n return {\n defaultFromAddress: emailConfig.defaultFromAddress,\n defaultFromName: emailConfig.defaultFromName,\n transport,\n }\n}\n\nasync function verifyTransport(transport: Transporter) {\n try {\n await transport.verify()\n } catch (err: unknown) {\n console.error({ err, msg: 'Error verifying Nodemailer transport.' })\n }\n}\n\n/**\n * Use ethereal.email to create a mock email account\n */\nasync function createMockAccount(emailConfig?: NodemailerAdapterArgs) {\n try {\n const etherealAccount = await nodemailer.createTestAccount()\n\n const smtpOptions = {\n ...(emailConfig || {}),\n auth: {\n pass: etherealAccount.pass,\n user: etherealAccount.user,\n },\n fromAddress: emailConfig?.defaultFromAddress,\n fromName: emailConfig?.defaultFromName,\n host: 'smtp.ethereal.email',\n port: 587,\n secure: false,\n }\n const transport = nodemailer.createTransport(smtpOptions)\n const { pass, user, web } = etherealAccount\n\n console.info('E-mail configured with ethereal.email test account. ')\n console.info(`Log into mock email provider at ${web}`)\n console.info(`Mock email account username: ${user}`)\n console.info(`Mock email account password: ${pass}`)\n return transport\n } catch (err: unknown) {\n if (err instanceof Error) {\n console.error({ err, msg: 'There was a problem setting up the mock email handler' })\n throw new InvalidConfiguration(\n `Unable to create Nodemailer test account. Error: ${err.message}`,\n )\n }\n throw new InvalidConfiguration('Unable to create Nodemailer test account.')\n }\n}\n"],"names":["nodemailer","InvalidConfiguration","nodemailerAdapter","args","defaultFromAddress","defaultFromName","transport","buildEmail","adapter","name","sendEmail","message","sendMail","from","emailConfig","createMockAccount","transportOptions","createTransport","skipVerify","verifyTransport","verify","err","console","error","msg","etherealAccount","createTestAccount","smtpOptions","auth","pass","user","fromAddress","fromName","host","port","secure","web","info","Error"],"mappings":"AAAA,6BAA6B,GAK7B,OAAOA,gBAAgB,aAAY;AACnC,SAASC,oBAAoB,QAAQ,UAAS;AAY9C;;;;CAIC,GACD,OAAO,MAAMC,oBAAoB,OAC/BC;IAEA,MAAM,EAAEC,kBAAkB,EAAEC,eAAe,EAAEC,SAAS,EAAE,GAAG,MAAMC,WAAWJ;IAE5E,MAAMK,UAA6B,IAAO,CAAA;YACxCC,MAAM;YACNL;YACAC;YACAK,WAAW,OAAOC;gBAChB,OAAO,MAAML,UAAUM,QAAQ,CAAC;oBAC9BC,MAAM,GAAGR,gBAAgB,EAAE,EAAED,mBAAmB,CAAC,CAAC;oBAClD,GAAGO,OAAO;gBACZ;YACF;QACF,CAAA;IACA,OAAOH;AACT,EAAC;AAED,eAAeD,WAAWO,WAAmC;IAK3D,IAAI,CAACA,aAAa;QAChB,MAAMR,YAAY,MAAMS,kBAAkBD;QAC1C,IAAI,CAACR,WAAW;YACd,MAAM,IAAIL,qBAAqB;QACjC;QAEA,OAAO;YACLG,oBAAoB;YACpBC,iBAAiB;YACjBC;QACF;IACF;IAEA,8BAA8B;IAC9B,IAAIA;IACJ,IAAI,eAAeQ,eAAeA,YAAYR,SAAS,EAAE;;QACrD,CAAA,EAAEA,SAAS,EAAE,GAAGQ,WAAU;IAC9B,OAAO,IAAI,sBAAsBA,eAAeA,YAAYE,gBAAgB,EAAE;QAC5EV,YAAYN,WAAWiB,eAAe,CAACH,YAAYE,gBAAgB;IACrE,OAAO;QACLV,YAAY,MAAMS,kBAAkBD;IACtC;IAEA,IAAI,CAACA,YAAYI,UAAU,EAAE;QAC3B,MAAMC,gBAAgBb;IACxB;IAEA,OAAO;QACLF,oBAAoBU,YAAYV,kBAAkB;QAClDC,iBAAiBS,YAAYT,eAAe;QAC5CC;IACF;AACF;AAEA,eAAea,gBAAgBb,SAAsB;IACnD,IAAI;QACF,MAAMA,UAAUc,MAAM;IACxB,EAAE,OAAOC,KAAc;QACrBC,QAAQC,KAAK,CAAC;YAAEF;YAAKG,KAAK;QAAwC;IACpE;AACF;AAEA;;CAEC,GACD,eAAeT,kBAAkBD,WAAmC;IAClE,IAAI;QACF,MAAMW,kBAAkB,MAAMzB,WAAW0B,iBAAiB;QAE1D,MAAMC,cAAc;YAClB,GAAIb,eAAe,CAAC,CAAC;YACrBc,MAAM;gBACJC,MAAMJ,gBAAgBI,IAAI;gBAC1BC,MAAML,gBAAgBK,IAAI;YAC5B;YACAC,aAAajB,aAAaV;YAC1B4B,UAAUlB,aAAaT;YACvB4B,MAAM;YACNC,MAAM;YACNC,QAAQ;QACV;QACA,MAAM7B,YAAYN,WAAWiB,eAAe,CAACU;QAC7C,MAAM,EAAEE,IAAI,EAAEC,IAAI,EAAEM,GAAG,EAAE,GAAGX;QAE5BH,QAAQe,IAAI,CAAC;QACbf,QAAQe,IAAI,CAAC,CAAC,gCAAgC,EAAED,KAAK;QACrDd,QAAQe,IAAI,CAAC,CAAC,6BAA6B,EAAEP,MAAM;QACnDR,QAAQe,IAAI,CAAC,CAAC,6BAA6B,EAAER,MAAM;QACnD,OAAOvB;IACT,EAAE,OAAOe,KAAc;QACrB,IAAIA,eAAeiB,OAAO;YACxBhB,QAAQC,KAAK,CAAC;gBAAEF;gBAAKG,KAAK;YAAwD;YAClF,MAAM,IAAIvB,qBACR,CAAC,iDAAiD,EAAEoB,IAAIV,OAAO,EAAE;QAErE;QACA,MAAM,IAAIV,qBAAqB;IACjC;AACF"} |