UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 5.79 kB
{"version":3,"file":"emails.mjs","names":["formatter"],"sources":["../../../src/libs/formatters/emails.ts"],"sourcesContent":["import type { Email } from \"../../types/response.js\";\nimport type {\n\tBooleanInt,\n\tEmailAttachment as EmailAttachmentInput,\n\tEmailDeliveryStatus,\n\tEmailPriority,\n\tEmailStorageConfig,\n\tEmailType,\n} from \"../../types.js\";\nimport { getEmailResendState } from \"../email/storage/index.js\";\nimport formatter from \"./index.js\";\n\ninterface EmailPropT {\n\tid: number;\n\tfrom_address: string;\n\tfrom_name: string;\n\tto_address: string;\n\tsubject: string;\n\tcc: string | null;\n\tbcc: string | null;\n\ttemplate: string;\n\tpriority: EmailPriority;\n\ttype: EmailType;\n\tcurrent_status: EmailDeliveryStatus;\n\tattempt_count: number;\n\tlast_attempted_at: Date | string | null;\n\tcreated_at: Date | string | null;\n\tupdated_at: Date | string | null;\n\tdata?: Record<string, unknown> | null;\n\tstorage_strategy?: EmailStorageConfig | null;\n\tattachments?: EmailAttachmentRowPropT[];\n\ttransactions?: {\n\t\tdelivery_status: EmailDeliveryStatus;\n\t\tmessage: string | null;\n\t\tstrategy_identifier: string;\n\t\tstrategy_data: Record<string, unknown> | null;\n\t\tsimulate: BooleanInt;\n\t\texternal_message_id: string | null;\n\t\tcreated_at: Date | string | null;\n\t\tupdated_at: Date | string | null;\n\t}[];\n}\n\ninterface EmailAttachmentRowPropT {\n\ttype: \"url\";\n\turl: string;\n\tfilename: string;\n\tcontent_type: string | null;\n\tdisposition: \"attachment\" | \"inline\";\n\tcontent_id: string | null;\n\torder: number;\n}\n\nconst formatAttachment = (\n\tattachment: EmailAttachmentInput | EmailAttachmentRowPropT,\n) => {\n\tif (\"content_type\" in attachment) {\n\t\treturn {\n\t\t\ttype: attachment.type,\n\t\t\turl: attachment.url,\n\t\t\tfilename: attachment.filename,\n\t\t\tcontentType: attachment.content_type,\n\t\t\tdisposition: attachment.disposition,\n\t\t\tcontentId: attachment.content_id,\n\t\t};\n\t}\n\n\treturn {\n\t\ttype: attachment.type,\n\t\turl: attachment.url,\n\t\tfilename: attachment.filename,\n\t\tcontentType: attachment.contentType ?? null,\n\t\tdisposition: attachment.disposition ?? \"attachment\",\n\t\tcontentId: attachment.contentId ?? null,\n\t};\n};\n\nconst formatMultiple = (props: {\n\temails: EmailPropT[];\n\tresendWindowDays: number;\n}) => {\n\treturn props.emails.map((e) =>\n\t\tformatSingle({\n\t\t\temail: e,\n\t\t\tresendWindowDays: props.resendWindowDays,\n\t\t}),\n\t);\n};\n\nconst formatSingle = (props: {\n\temail: EmailPropT;\n\tdata?: Record<string, unknown> | null;\n\tattachments?: EmailAttachmentInput[];\n\thtml?: string;\n\tresendWindowDays: number;\n}): Email => {\n\tconst resend = getEmailResendState({\n\t\tcreatedAt: props.email.created_at,\n\t\tstorage: props.email.storage_strategy,\n\t\tresendWindowDays: props.resendWindowDays,\n\t});\n\n\treturn {\n\t\tid: props.email.id,\n\t\ttype: props.email.type,\n\t\tcurrentStatus: props.email.current_status,\n\t\tmailDetails: {\n\t\t\tfrom: {\n\t\t\t\taddress: props.email.from_address,\n\t\t\t\tname: props.email.from_name,\n\t\t\t},\n\t\t\tto: props.email.to_address,\n\t\t\tsubject: props.email.subject,\n\t\t\tcc: props.email.cc,\n\t\t\tbcc: props.email.bcc,\n\t\t\ttemplate: props.email.template,\n\t\t\tpriority: props.email.priority,\n\t\t},\n\t\tdata: props.data ?? props.email.data ?? null,\n\t\tattachments: (props.attachments ?? props.email.attachments ?? []).map(\n\t\t\tformatAttachment,\n\t\t),\n\t\thtml: props.html ?? null,\n\t\tresend: resend.data ?? {\n\t\t\tenabled: false,\n\t\t\treason: \"outsideResendWindow\",\n\t\t},\n\t\ttransactions: props.email.transactions\n\t\t\t? props.email.transactions.map((t) => ({\n\t\t\t\t\tdeliveryStatus: t.delivery_status,\n\t\t\t\t\tmessage: t.message,\n\t\t\t\t\tstrategyIdentifier: t.strategy_identifier,\n\t\t\t\t\tstrategyData: t.strategy_data,\n\t\t\t\t\tsimulate: formatter.formatBoolean(t.simulate),\n\t\t\t\t\tcreatedAt: formatter.formatDate(t.created_at),\n\t\t\t\t\texternalMessageId: t.external_message_id,\n\t\t\t\t\tupdatedAt: formatter.formatDate(t.updated_at),\n\t\t\t\t}))\n\t\t\t: [],\n\t\tattemptCount: props.email.attempt_count,\n\t\tlastAttemptedAt: formatter.formatDate(props.email.last_attempted_at),\n\t\tcreatedAt: formatter.formatDate(props.email.created_at),\n\t\tupdatedAt: formatter.formatDate(props.email.updated_at),\n\t};\n};\n\nexport default {\n\tformatMultiple,\n\tformatSingle,\n};\n"],"mappings":"6FAqDA,MAAM,EACL,GAEI,iBAAkB,EACd,CACN,KAAM,EAAW,KACjB,IAAK,EAAW,IAChB,SAAU,EAAW,SACrB,YAAa,EAAW,aACxB,YAAa,EAAW,YACxB,UAAW,EAAW,UACvB,EAGM,CACN,KAAM,EAAW,KACjB,IAAK,EAAW,IAChB,SAAU,EAAW,SACrB,YAAa,EAAW,aAAe,KACvC,YAAa,EAAW,aAAe,aACvC,UAAW,EAAW,WAAa,IACpC,EAGK,EAAkB,GAIhB,EAAM,OAAO,IAAK,GACxB,EAAa,CACZ,MAAO,EACP,iBAAkB,EAAM,gBACzB,CAAC,CACF,EAGK,EAAgB,GAMT,CACZ,IAAM,EAAS,EAAoB,CAClC,UAAW,EAAM,MAAM,WACvB,QAAS,EAAM,MAAM,iBACrB,iBAAkB,EAAM,gBACzB,CAAC,EAED,MAAO,CACN,GAAI,EAAM,MAAM,GAChB,KAAM,EAAM,MAAM,KAClB,cAAe,EAAM,MAAM,eAC3B,YAAa,CACZ,KAAM,CACL,QAAS,EAAM,MAAM,aACrB,KAAM,EAAM,MAAM,SACnB,EACA,GAAI,EAAM,MAAM,WAChB,QAAS,EAAM,MAAM,QACrB,GAAI,EAAM,MAAM,GAChB,IAAK,EAAM,MAAM,IACjB,SAAU,EAAM,MAAM,SACtB,SAAU,EAAM,MAAM,QACvB,EACA,KAAM,EAAM,MAAQ,EAAM,MAAM,MAAQ,KACxC,aAAc,EAAM,aAAe,EAAM,MAAM,aAAe,CAAC,EAAA,CAAG,IACjE,CACD,EACA,KAAM,EAAM,MAAQ,KACpB,OAAQ,EAAO,MAAQ,CACtB,QAAS,GACT,OAAQ,qBACT,EACA,aAAc,EAAM,MAAM,aACvB,EAAM,MAAM,aAAa,IAAK,IAAO,CACrC,eAAgB,EAAE,gBAClB,QAAS,EAAE,QACX,mBAAoB,EAAE,oBACtB,aAAc,EAAE,cAChB,SAAUA,EAAU,cAAc,EAAE,QAAQ,EAC5C,UAAWA,EAAU,WAAW,EAAE,UAAU,EAC5C,kBAAmB,EAAE,oBACrB,UAAWA,EAAU,WAAW,EAAE,UAAU,CAC7C,EAAE,EACD,CAAC,EACJ,aAAc,EAAM,MAAM,cAC1B,gBAAiBA,EAAU,WAAW,EAAM,MAAM,iBAAiB,EACnE,UAAWA,EAAU,WAAW,EAAM,MAAM,UAAU,EACtD,UAAWA,EAAU,WAAW,EAAM,MAAM,UAAU,CACvD,CACD,EAEA,IAAA,EAAe,CACd,iBACA,cACD"}