@sqrzro/server 2.0.0-bz.41 → 2.0.0-bz.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mail/index.cjs +2 -2
- package/dist/mail/index.cjs.map +1 -1
- package/dist/mail/index.d.cts +4 -1
- package/dist/mail/index.d.ts +4 -1
- package/dist/mail/index.js +2 -2
- package/dist/mail/index.js.map +1 -1
- package/package.json +1 -1
package/dist/mail/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
async function p(e,t){return Promise.resolve(async()=>Promise.resolve({subject:e,template:t}))}async function
|
|
3
|
+
async function p(e,t){return Promise.resolve(async()=>Promise.resolve({subject:e,template:t}))}async function c(e,t){let{subject:s,template:n}=await e(),r=(await import('react-dom/server')).default;return {subject:s,html:r.renderToString(n(t))}}function m(){if(!process.env.MAIL_FROM)throw new Error("Mail from address has not been set");let e=/^(?<name>[^<]+)<(?<email>[^>]+)>$/u.exec(process.env.MAIL_FROM);if(!e?.groups?.name||!e?.groups?.email)throw new Error('Mail from address is not the correct format. It should be "Name <email>".');return {email:e.groups.email.trim(),name:e.groups.name.trim()}}async function l(e){if(!process.env.MAIL_API_KEY)throw new Error("Mail API key has not been set");let[t,s]=process.env.MAIL_API_KEY.split("."),n=Array.isArray(e.to)?e.to.map(r=>({email:r})):[{email:e.to}];try{return (await(await fetch(`https://sandbox.api.mailtrap.io/api/send/${t}`,{method:"POST",headers:{"Api-Token":s,"Content-Type":"application/json"},body:JSON.stringify({bcc:e.bcc?.map(a=>({email:a})),cc:e.cc?.map(a=>({email:a})),from:e.from,html:e.html,subject:e.subject,to:n})})).json()).success}catch{return !1}}async function u(e,t,s,n){if(!process.env.MAIL_API_KEY)throw new Error("Mail API key has not been set");let r=m(),{subject:o,html:a}=await c(await e,t),i={bcc:n?.bcc,cc:n?.cc,from:r,html:a,subject:o,to:s};return l(i)}
|
|
4
4
|
|
|
5
5
|
exports.createMail = p;
|
|
6
|
-
exports.getMail =
|
|
6
|
+
exports.getMail = c;
|
|
7
7
|
exports.sendMail = u;
|
|
8
8
|
//# sourceMappingURL=out.js.map
|
|
9
9
|
//# sourceMappingURL=index.cjs.map
|
package/dist/mail/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mail/MailService.ts"],"names":["createMail","subject","template","getMail","mail","data","ReactDOMServer","getSenderDetails","matches","sendDevelopmentMail","
|
|
1
|
+
{"version":3,"sources":["../../src/mail/MailService.ts"],"names":["createMail","subject","template","getMail","mail","data","ReactDOMServer","getSenderDetails","matches","sendDevelopmentMail","sendObject","id","key","to","email","sendMail","options","from","html"],"mappings":"AASA,eAAsBA,EAClBC,EACAC,EACkB,CAClB,OAAO,QAAQ,QAAQ,SAAY,QAAQ,QAAQ,CAAE,QAAAD,EAAS,SAAAC,CAAS,CAAC,CAAC,CAC7E,CAEA,eAAsBC,EAClBC,EACAC,EAC0C,CAC1C,GAAM,CAAE,QAAAJ,EAAS,SAAAC,CAAS,EAAI,MAAME,EAAK,EACnCE,GAAkB,KAAM,QAAO,kBAAkB,GAAG,QAE1D,MAAO,CACH,QAAAL,EACA,KAAMK,EAAe,eAAeJ,EAASG,CAAI,CAAC,CACtD,CACJ,CAEA,SAASE,GAAoD,CACzD,GAAI,CAAC,QAAQ,IAAI,UACb,MAAM,IAAI,MAAM,oCAAoC,EAGxD,IAAMC,EAAU,qCAAqC,KAAK,QAAQ,IAAI,SAAS,EAE/E,GAAI,CAACA,GAAS,QAAQ,MAAQ,CAACA,GAAS,QAAQ,MAC5C,MAAM,IAAI,MACN,2EACJ,EAGJ,MAAO,CACH,MAAOA,EAAQ,OAAO,MAAM,KAAK,EACjC,KAAMA,EAAQ,OAAO,KAAK,KAAK,CACnC,CACJ,CAWA,eAAeC,EAAoBC,EAA8C,CAC7E,GAAI,CAAC,QAAQ,IAAI,aACb,MAAM,IAAI,MAAM,+BAA+B,EAQnD,GAAM,CAACC,EAAIC,CAAG,EAAI,QAAQ,IAAI,aAAa,MAAM,GAAG,EAE9CC,EAAK,MAAM,QAAQH,EAAW,EAAE,EAChCA,EAAW,GAAG,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EACxC,CAAC,CAAE,MAAOJ,EAAW,EAAG,CAAC,EAE/B,GAAI,CAcA,OADc,MAZG,MAAM,MAAM,4CAA4CC,CAAE,GAAI,CAC3E,OAAQ,OACR,QAAS,CAAE,YAAaC,EAAK,eAAgB,kBAAmB,EAChE,KAAM,KAAK,UAAU,CACjB,IAAKF,EAAW,KAAK,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EAC/C,GAAIJ,EAAW,IAAI,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EAC7C,KAAMJ,EAAW,KACjB,KAAMA,EAAW,KACjB,QAASA,EAAW,QACpB,GAAAG,CACJ,CAAC,CACL,CAAC,GAC4B,KAAK,GACtB,OAChB,MAAc,CACV,MAAO,EACX,CACJ,CAuCA,eAAsBE,EAClBX,EACAC,EACAQ,EACAG,EACgB,CAChB,GAAI,CAAC,QAAQ,IAAI,aACb,MAAM,IAAI,MAAM,+BAA+B,EAGnD,IAAMC,EAAOV,EAAiB,EACxB,CAAE,QAAAN,EAAS,KAAAiB,CAAK,EAAI,MAAMf,EAAQ,MAAMC,EAAMC,CAAI,EAElDK,EAA6B,CAC/B,IAAKM,GAAS,IACd,GAAIA,GAAS,GACb,KAAAC,EACA,KAAAC,EACA,QAAAjB,EACA,GAAAY,CACJ,EAKA,OAAOJ,EAAoBC,CAAU,CACzC","sourcesContent":["// import sgMail from '@sendgrid/mail';\n\nexport interface MailObject<T extends object> {\n subject: string;\n template: (data: T) => React.ReactElement;\n}\n\ntype MailFn<T extends object> = () => Promise<MailObject<T>>;\n\nexport async function createMail<T extends object>(\n subject: string,\n template: (data: T) => React.ReactElement\n): Promise<MailFn<T>> {\n return Promise.resolve(async () => Promise.resolve({ subject, template }));\n}\n\nexport async function getMail<T extends object>(\n mail: MailFn<T>,\n data: T\n): Promise<{ subject: string; html: string }> {\n const { subject, template } = await mail();\n const ReactDOMServer = (await import('react-dom/server')).default;\n\n return {\n subject,\n html: ReactDOMServer.renderToString(template(data)),\n };\n}\n\nfunction getSenderDetails(): { email: string; name: string } {\n if (!process.env.MAIL_FROM) {\n throw new Error('Mail from address has not been set');\n }\n\n const matches = /^(?<name>[^<]+)<(?<email>[^>]+)>$/u.exec(process.env.MAIL_FROM);\n\n if (!matches?.groups?.name || !matches?.groups?.email) {\n throw new Error(\n 'Mail from address is not the correct format. It should be \"Name <email>\".'\n );\n }\n\n return {\n email: matches.groups.email.trim(),\n name: matches.groups.name.trim(),\n };\n}\n\ninterface SendMailObject {\n bcc?: string[];\n cc?: string[];\n from: { email: string; name: string };\n html: string;\n subject: string;\n to: string[] | string;\n}\n\nasync function sendDevelopmentMail(sendObject: SendMailObject): Promise<boolean> {\n if (!process.env.MAIL_API_KEY) {\n throw new Error('Mail API key has not been set');\n }\n\n /*\n * The account id and api key are both in the MAIL_API_KEY variable, separated by a `.`. We need\n * to split them.\n */\n\n const [id, key] = process.env.MAIL_API_KEY.split('.');\n\n const to = Array.isArray(sendObject.to)\n ? sendObject.to.map((email) => ({ email }))\n : [{ email: sendObject.to }];\n\n try {\n const response = await fetch(`https://sandbox.api.mailtrap.io/api/send/${id}`, {\n method: 'POST',\n headers: { 'Api-Token': key, 'Content-Type': 'application/json' },\n body: JSON.stringify({\n bcc: sendObject.bcc?.map((email) => ({ email })),\n cc: sendObject.cc?.map((email) => ({ email })),\n from: sendObject.from,\n html: sendObject.html,\n subject: sendObject.subject,\n to,\n }),\n });\n const json = (await response.json()) as { success: boolean };\n return json.success;\n } catch (err) {\n return false;\n }\n}\n\n// async function sendProductionMail<T extends object>(\n// mail: Promise<MailFn<T>>,\n// data: T,\n// to: string\n// ): Promise<boolean> {\n// if (process.env.NODE_ENV === 'production') {\n// throw new Error('Trying to run production mail in a development environment');\n// }\n\n// if (!process.env.MAIL_ENABLE_PRODUCTION) {\n// throw new Error(\n// 'Mail has not been enabled in production. Please add MAIL_ENABLE_PRODUCTION to your environment variables.'\n// );\n// }\n\n// if (!process.env.MAIL_API_KEY) {\n// throw new Error('Mail API key has not been set');\n// }\n\n// sgMail.setApiKey(process.env.MAIL_API_KEY);\n\n// try {\n// const response = await sgMail.send({\n// to,\n// from,\n// subject,\n// html,\n// });\n// console.log(response);\n\n// return true;\n// } catch (err) {\n// console.log('err', err);\n// return false;\n// }\n// }\n\nexport async function sendMail<T extends object>(\n mail: Promise<MailFn<T>>,\n data: T,\n to: string[] | string,\n options?: { cc?: string[]; bcc?: string[] }\n): Promise<boolean> {\n if (!process.env.MAIL_API_KEY) {\n throw new Error('Mail API key has not been set');\n }\n\n const from = getSenderDetails();\n const { subject, html } = await getMail(await mail, data);\n\n const sendObject: SendMailObject = {\n bcc: options?.bcc,\n cc: options?.cc,\n from,\n html,\n subject,\n to,\n };\n\n // For now, just send the email in development.\n // @TODO: Implement the production email sending.\n\n return sendDevelopmentMail(sendObject);\n}\n"]}
|
package/dist/mail/index.d.cts
CHANGED
|
@@ -8,6 +8,9 @@ declare function getMail<T extends object>(mail: MailFn<T>, data: T): Promise<{
|
|
|
8
8
|
subject: string;
|
|
9
9
|
html: string;
|
|
10
10
|
}>;
|
|
11
|
-
declare function sendMail<T extends object>(mail: Promise<MailFn<T>>, data: T, to: string
|
|
11
|
+
declare function sendMail<T extends object>(mail: Promise<MailFn<T>>, data: T, to: string[] | string, options?: {
|
|
12
|
+
cc?: string[];
|
|
13
|
+
bcc?: string[];
|
|
14
|
+
}): Promise<boolean>;
|
|
12
15
|
|
|
13
16
|
export { type MailObject, createMail, getMail, sendMail };
|
package/dist/mail/index.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ declare function getMail<T extends object>(mail: MailFn<T>, data: T): Promise<{
|
|
|
8
8
|
subject: string;
|
|
9
9
|
html: string;
|
|
10
10
|
}>;
|
|
11
|
-
declare function sendMail<T extends object>(mail: Promise<MailFn<T>>, data: T, to: string
|
|
11
|
+
declare function sendMail<T extends object>(mail: Promise<MailFn<T>>, data: T, to: string[] | string, options?: {
|
|
12
|
+
cc?: string[];
|
|
13
|
+
bcc?: string[];
|
|
14
|
+
}): Promise<boolean>;
|
|
12
15
|
|
|
13
16
|
export { type MailObject, createMail, getMail, sendMail };
|
package/dist/mail/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
async function p(e,t){return Promise.resolve(async()=>Promise.resolve({subject:e,template:t}))}async function
|
|
1
|
+
async function p(e,t){return Promise.resolve(async()=>Promise.resolve({subject:e,template:t}))}async function c(e,t){let{subject:s,template:n}=await e(),r=(await import('react-dom/server')).default;return {subject:s,html:r.renderToString(n(t))}}function m(){if(!process.env.MAIL_FROM)throw new Error("Mail from address has not been set");let e=/^(?<name>[^<]+)<(?<email>[^>]+)>$/u.exec(process.env.MAIL_FROM);if(!e?.groups?.name||!e?.groups?.email)throw new Error('Mail from address is not the correct format. It should be "Name <email>".');return {email:e.groups.email.trim(),name:e.groups.name.trim()}}async function l(e){if(!process.env.MAIL_API_KEY)throw new Error("Mail API key has not been set");let[t,s]=process.env.MAIL_API_KEY.split("."),n=Array.isArray(e.to)?e.to.map(r=>({email:r})):[{email:e.to}];try{return (await(await fetch(`https://sandbox.api.mailtrap.io/api/send/${t}`,{method:"POST",headers:{"Api-Token":s,"Content-Type":"application/json"},body:JSON.stringify({bcc:e.bcc?.map(a=>({email:a})),cc:e.cc?.map(a=>({email:a})),from:e.from,html:e.html,subject:e.subject,to:n})})).json()).success}catch{return !1}}async function u(e,t,s,n){if(!process.env.MAIL_API_KEY)throw new Error("Mail API key has not been set");let r=m(),{subject:o,html:a}=await c(await e,t),i={bcc:n?.bcc,cc:n?.cc,from:r,html:a,subject:o,to:s};return l(i)}
|
|
2
2
|
|
|
3
|
-
export { p as createMail,
|
|
3
|
+
export { p as createMail, c as getMail, u as sendMail };
|
|
4
4
|
//# sourceMappingURL=out.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/mail/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mail/MailService.ts"],"names":["createMail","subject","template","getMail","mail","data","ReactDOMServer","getSenderDetails","matches","sendDevelopmentMail","
|
|
1
|
+
{"version":3,"sources":["../../src/mail/MailService.ts"],"names":["createMail","subject","template","getMail","mail","data","ReactDOMServer","getSenderDetails","matches","sendDevelopmentMail","sendObject","id","key","to","email","sendMail","options","from","html"],"mappings":"AASA,eAAsBA,EAClBC,EACAC,EACkB,CAClB,OAAO,QAAQ,QAAQ,SAAY,QAAQ,QAAQ,CAAE,QAAAD,EAAS,SAAAC,CAAS,CAAC,CAAC,CAC7E,CAEA,eAAsBC,EAClBC,EACAC,EAC0C,CAC1C,GAAM,CAAE,QAAAJ,EAAS,SAAAC,CAAS,EAAI,MAAME,EAAK,EACnCE,GAAkB,KAAM,QAAO,kBAAkB,GAAG,QAE1D,MAAO,CACH,QAAAL,EACA,KAAMK,EAAe,eAAeJ,EAASG,CAAI,CAAC,CACtD,CACJ,CAEA,SAASE,GAAoD,CACzD,GAAI,CAAC,QAAQ,IAAI,UACb,MAAM,IAAI,MAAM,oCAAoC,EAGxD,IAAMC,EAAU,qCAAqC,KAAK,QAAQ,IAAI,SAAS,EAE/E,GAAI,CAACA,GAAS,QAAQ,MAAQ,CAACA,GAAS,QAAQ,MAC5C,MAAM,IAAI,MACN,2EACJ,EAGJ,MAAO,CACH,MAAOA,EAAQ,OAAO,MAAM,KAAK,EACjC,KAAMA,EAAQ,OAAO,KAAK,KAAK,CACnC,CACJ,CAWA,eAAeC,EAAoBC,EAA8C,CAC7E,GAAI,CAAC,QAAQ,IAAI,aACb,MAAM,IAAI,MAAM,+BAA+B,EAQnD,GAAM,CAACC,EAAIC,CAAG,EAAI,QAAQ,IAAI,aAAa,MAAM,GAAG,EAE9CC,EAAK,MAAM,QAAQH,EAAW,EAAE,EAChCA,EAAW,GAAG,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EACxC,CAAC,CAAE,MAAOJ,EAAW,EAAG,CAAC,EAE/B,GAAI,CAcA,OADc,MAZG,MAAM,MAAM,4CAA4CC,CAAE,GAAI,CAC3E,OAAQ,OACR,QAAS,CAAE,YAAaC,EAAK,eAAgB,kBAAmB,EAChE,KAAM,KAAK,UAAU,CACjB,IAAKF,EAAW,KAAK,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EAC/C,GAAIJ,EAAW,IAAI,IAAKI,IAAW,CAAE,MAAAA,CAAM,EAAE,EAC7C,KAAMJ,EAAW,KACjB,KAAMA,EAAW,KACjB,QAASA,EAAW,QACpB,GAAAG,CACJ,CAAC,CACL,CAAC,GAC4B,KAAK,GACtB,OAChB,MAAc,CACV,MAAO,EACX,CACJ,CAuCA,eAAsBE,EAClBX,EACAC,EACAQ,EACAG,EACgB,CAChB,GAAI,CAAC,QAAQ,IAAI,aACb,MAAM,IAAI,MAAM,+BAA+B,EAGnD,IAAMC,EAAOV,EAAiB,EACxB,CAAE,QAAAN,EAAS,KAAAiB,CAAK,EAAI,MAAMf,EAAQ,MAAMC,EAAMC,CAAI,EAElDK,EAA6B,CAC/B,IAAKM,GAAS,IACd,GAAIA,GAAS,GACb,KAAAC,EACA,KAAAC,EACA,QAAAjB,EACA,GAAAY,CACJ,EAKA,OAAOJ,EAAoBC,CAAU,CACzC","sourcesContent":["// import sgMail from '@sendgrid/mail';\n\nexport interface MailObject<T extends object> {\n subject: string;\n template: (data: T) => React.ReactElement;\n}\n\ntype MailFn<T extends object> = () => Promise<MailObject<T>>;\n\nexport async function createMail<T extends object>(\n subject: string,\n template: (data: T) => React.ReactElement\n): Promise<MailFn<T>> {\n return Promise.resolve(async () => Promise.resolve({ subject, template }));\n}\n\nexport async function getMail<T extends object>(\n mail: MailFn<T>,\n data: T\n): Promise<{ subject: string; html: string }> {\n const { subject, template } = await mail();\n const ReactDOMServer = (await import('react-dom/server')).default;\n\n return {\n subject,\n html: ReactDOMServer.renderToString(template(data)),\n };\n}\n\nfunction getSenderDetails(): { email: string; name: string } {\n if (!process.env.MAIL_FROM) {\n throw new Error('Mail from address has not been set');\n }\n\n const matches = /^(?<name>[^<]+)<(?<email>[^>]+)>$/u.exec(process.env.MAIL_FROM);\n\n if (!matches?.groups?.name || !matches?.groups?.email) {\n throw new Error(\n 'Mail from address is not the correct format. It should be \"Name <email>\".'\n );\n }\n\n return {\n email: matches.groups.email.trim(),\n name: matches.groups.name.trim(),\n };\n}\n\ninterface SendMailObject {\n bcc?: string[];\n cc?: string[];\n from: { email: string; name: string };\n html: string;\n subject: string;\n to: string[] | string;\n}\n\nasync function sendDevelopmentMail(sendObject: SendMailObject): Promise<boolean> {\n if (!process.env.MAIL_API_KEY) {\n throw new Error('Mail API key has not been set');\n }\n\n /*\n * The account id and api key are both in the MAIL_API_KEY variable, separated by a `.`. We need\n * to split them.\n */\n\n const [id, key] = process.env.MAIL_API_KEY.split('.');\n\n const to = Array.isArray(sendObject.to)\n ? sendObject.to.map((email) => ({ email }))\n : [{ email: sendObject.to }];\n\n try {\n const response = await fetch(`https://sandbox.api.mailtrap.io/api/send/${id}`, {\n method: 'POST',\n headers: { 'Api-Token': key, 'Content-Type': 'application/json' },\n body: JSON.stringify({\n bcc: sendObject.bcc?.map((email) => ({ email })),\n cc: sendObject.cc?.map((email) => ({ email })),\n from: sendObject.from,\n html: sendObject.html,\n subject: sendObject.subject,\n to,\n }),\n });\n const json = (await response.json()) as { success: boolean };\n return json.success;\n } catch (err) {\n return false;\n }\n}\n\n// async function sendProductionMail<T extends object>(\n// mail: Promise<MailFn<T>>,\n// data: T,\n// to: string\n// ): Promise<boolean> {\n// if (process.env.NODE_ENV === 'production') {\n// throw new Error('Trying to run production mail in a development environment');\n// }\n\n// if (!process.env.MAIL_ENABLE_PRODUCTION) {\n// throw new Error(\n// 'Mail has not been enabled in production. Please add MAIL_ENABLE_PRODUCTION to your environment variables.'\n// );\n// }\n\n// if (!process.env.MAIL_API_KEY) {\n// throw new Error('Mail API key has not been set');\n// }\n\n// sgMail.setApiKey(process.env.MAIL_API_KEY);\n\n// try {\n// const response = await sgMail.send({\n// to,\n// from,\n// subject,\n// html,\n// });\n// console.log(response);\n\n// return true;\n// } catch (err) {\n// console.log('err', err);\n// return false;\n// }\n// }\n\nexport async function sendMail<T extends object>(\n mail: Promise<MailFn<T>>,\n data: T,\n to: string[] | string,\n options?: { cc?: string[]; bcc?: string[] }\n): Promise<boolean> {\n if (!process.env.MAIL_API_KEY) {\n throw new Error('Mail API key has not been set');\n }\n\n const from = getSenderDetails();\n const { subject, html } = await getMail(await mail, data);\n\n const sendObject: SendMailObject = {\n bcc: options?.bcc,\n cc: options?.cc,\n from,\n html,\n subject,\n to,\n };\n\n // For now, just send the email in development.\n // @TODO: Implement the production email sending.\n\n return sendDevelopmentMail(sendObject);\n}\n"]}
|