@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 5.43 kB
Source Map (JSON)
{"version":3,"file":"resend-single.mjs","names":[],"sources":["../../../src/services/email/resend-single.ts"],"sourcesContent":["import isEmailSimulated from \"../../libs/email/is-simulated.js\";\nimport { getEmailResendState } from \"../../libs/email/storage/index.js\";\nimport { copy } from \"../../libs/i18n/index.js\";\nimport {\n\tEmailsRepository,\n\tEmailTransactionsRepository,\n} from \"../../libs/repositories/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\n\nconst resendSingle: ServiceFn<\n\t[\n\t\t{\n\t\t\tid: number;\n\t\t},\n\t],\n\t{\n\t\tjobId: string;\n\t}\n> = async (context, data) => {\n\tconst Emails = new EmailsRepository(context.db.client, context.config.db);\n\tconst EmailTransactions = new EmailTransactionsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst emailRes = await Emails.selectSingleById({\n\t\tid: data.id,\n\t\ttenantKey: context.request.tenantKey,\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t\tdefaultError: {\n\t\t\t\tmessage: copy(\"server:core.email.not.found.message\"),\n\t\t\t\tstatus: 404,\n\t\t\t},\n\t\t},\n\t});\n\tif (emailRes.error) return emailRes;\n\n\tconst resend = getEmailResendState({\n\t\tcreatedAt: emailRes.data.created_at,\n\t\tstorage: emailRes.data.storage_strategy,\n\t\tresendWindowDays: context.config.email.resendWindowDays,\n\t});\n\tif (resend.error) return resend;\n\n\tif (!resend.data.enabled) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tmessage: copy(\"server:core.email.resend.not.available\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst [updateEmailRes, transactionRes] = await Promise.all([\n\t\tEmails.updateSingle({\n\t\t\twhere: [\n\t\t\t\t{\n\t\t\t\t\tkey: \"id\",\n\t\t\t\t\toperator: \"=\",\n\t\t\t\t\tvalue: emailRes.data.id,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdata: {\n\t\t\t\tcurrent_status: \"scheduled\",\n\t\t\t\tupdated_at: new Date().toISOString(),\n\t\t\t},\n\t\t}),\n\t\tEmailTransactions.createSingle({\n\t\t\tdata: {\n\t\t\t\temail_id: emailRes.data.id,\n\t\t\t\tdelivery_status: \"scheduled\",\n\t\t\t\tmessage: null,\n\t\t\t\tstrategy_identifier: context.email.key,\n\t\t\t\tstrategy_data: null,\n\t\t\t\tsimulate: isEmailSimulated(context),\n\t\t\t\texternal_message_id: null,\n\t\t\t},\n\t\t\tvalidation: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\treturning: [\"id\"],\n\t\t}),\n\t]);\n\tif (transactionRes.error) return transactionRes;\n\tif (updateEmailRes.error) return updateEmailRes;\n\n\tconst queueRes = await context.queue.add(context, {\n\t\tevent: \"email:send\",\n\t\tpayload: {\n\t\t\temailId: emailRes.data.id,\n\t\t\ttransactionId: transactionRes.data.id ?? 0,\n\t\t},\n\t\toptions: {\n\t\t\ttenantKeys:\n\t\t\t\temailRes.data.tenants?.map((tenant) => tenant.tenant_key) ?? [],\n\t\t},\n\t});\n\tif (queueRes.error) {\n\t\tawait Promise.all([\n\t\t\tEmails.updateSingle({\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"id\",\n\t\t\t\t\t\toperator: \"=\",\n\t\t\t\t\t\tvalue: emailRes.data.id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdata: {\n\t\t\t\t\tcurrent_status: \"failed\",\n\t\t\t\t\tupdated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tEmailTransactions.updateSingle({\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"id\",\n\t\t\t\t\t\toperator: \"=\",\n\t\t\t\t\t\tvalue: transactionRes.data.id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdata: {\n\t\t\t\t\tdelivery_status: \"failed\",\n\t\t\t\t\tmessage: context.translate.english(queueRes.error.message) ?? null,\n\t\t\t\t\tupdated_at: new Date().toISOString(),\n\t\t\t\t},\n\t\t\t}),\n\t\t]);\n\t\treturn queueRes;\n\t}\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: {\n\t\t\tjobId: queueRes.data.jobId,\n\t\t},\n\t};\n};\n\nexport default resendSingle;\n"],"mappings":"2RASA,MAAM,EASF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAS,IAAI,EAAiB,EAAQ,GAAG,OAAQ,EAAQ,OAAO,EAAE,EAClE,EAAoB,IAAI,EAC7B,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EAAW,MAAM,EAAO,iBAAiB,CAC9C,GAAI,EAAK,GACT,UAAW,EAAQ,QAAQ,UAC3B,WAAY,CACX,QAAS,GACT,aAAc,CACb,QAAS,EAAK,qCAAqC,EACnD,OAAQ,GACT,CACD,CACD,CAAC,EACD,GAAI,EAAS,MAAO,OAAO,EAE3B,IAAM,EAAS,EAAoB,CAClC,UAAW,EAAS,KAAK,WACzB,QAAS,EAAS,KAAK,iBACvB,iBAAkB,EAAQ,OAAO,MAAM,gBACxC,CAAC,EACD,GAAI,EAAO,MAAO,OAAO,EAEzB,GAAI,CAAC,EAAO,KAAK,QAChB,MAAO,CACN,MAAO,CACN,QAAS,EAAK,wCAAwC,EACtD,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,GAAM,CAAC,EAAgB,GAAkB,MAAM,QAAQ,IAAI,CAC1D,EAAO,aAAa,CACnB,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAS,KAAK,EACtB,CACD,EACA,KAAM,CACL,eAAgB,YAChB,WAAY,IAAI,KAAK,CAAA,CAAE,YAAY,CACpC,CACD,CAAC,EACD,EAAkB,aAAa,CAC9B,KAAM,CACL,SAAU,EAAS,KAAK,GACxB,gBAAiB,YACjB,QAAS,KACT,oBAAqB,EAAQ,MAAM,IACnC,cAAe,KACf,SAAU,EAAiB,CAAO,EAClC,oBAAqB,IACtB,EACA,WAAY,CACX,QAAS,EACV,EACA,UAAW,CAAC,IAAI,CACjB,CAAC,CACF,CAAC,EACD,GAAI,EAAe,MAAO,OAAO,EACjC,GAAI,EAAe,MAAO,OAAO,EAEjC,IAAM,EAAW,MAAM,EAAQ,MAAM,IAAI,EAAS,CACjD,MAAO,aACP,QAAS,CACR,QAAS,EAAS,KAAK,GACvB,cAAe,EAAe,KAAK,IAAM,CAC1C,EACA,QAAS,CACR,WACC,EAAS,KAAK,SAAS,IAAK,GAAW,EAAO,UAAU,GAAK,CAAC,CAChE,CACD,CAAC,EAkCD,OAjCI,EAAS,OACZ,MAAM,QAAQ,IAAI,CACjB,EAAO,aAAa,CACnB,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAS,KAAK,EACtB,CACD,EACA,KAAM,CACL,eAAgB,SAChB,WAAY,IAAI,KAAK,CAAA,CAAE,YAAY,CACpC,CACD,CAAC,EACD,EAAkB,aAAa,CAC9B,MAAO,CACN,CACC,IAAK,KACL,SAAU,IACV,MAAO,EAAe,KAAK,EAC5B,CACD,EACA,KAAM,CACL,gBAAiB,SACjB,QAAS,EAAQ,UAAU,QAAQ,EAAS,MAAM,OAAO,GAAK,KAC9D,WAAY,IAAI,KAAK,CAAA,CAAE,YAAY,CACpC,CACD,CAAC,CACF,CAAC,EACM,GAGD,CACN,MAAO,IAAA,GACP,KAAM,CACL,MAAO,EAAS,KAAK,KACtB,CACD,CACD"}