@sqrzro/server 4.0.0-alpha.63 → 4.0.0-alpha.64
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/csv/generate-csv-blob.d.ts +3 -0
- package/dist/csv/generate-csv-blob.d.ts.map +1 -0
- package/dist/csv/generate-csv-blob.js +5 -0
- package/dist/csv/generate-csv.d.ts +3 -0
- package/dist/csv/generate-csv.d.ts.map +1 -0
- package/dist/csv/generate-csv.js +5 -0
- package/dist/csv/index.d.ts +4 -7
- package/dist/csv/index.d.ts.map +1 -0
- package/dist/csv/index.js +3 -2
- package/dist/csv/parse-csv.d.ts +3 -0
- package/dist/csv/parse-csv.d.ts.map +1 -0
- package/dist/csv/parse-csv.js +13 -0
- package/dist/database/create-repository.d.ts +41 -0
- package/dist/database/create-repository.d.ts.map +1 -0
- package/dist/database/create-repository.js +207 -0
- package/dist/database/db.d.ts +6 -0
- package/dist/database/db.d.ts.map +1 -0
- package/dist/database/db.js +7 -0
- package/dist/database/index.d.ts +5 -99
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +2 -2
- package/dist/database/interfaces.d.ts +52 -0
- package/dist/database/interfaces.d.ts.map +1 -0
- package/dist/database/interfaces.js +1 -0
- package/dist/forms/ValidationError.d.ts +12 -0
- package/dist/forms/ValidationError.d.ts.map +1 -0
- package/dist/forms/ValidationError.js +15 -0
- package/dist/forms/create-rule.d.ts +8 -0
- package/dist/forms/create-rule.d.ts.map +1 -0
- package/dist/forms/create-rule.js +4 -0
- package/dist/forms/files/put-file.d.ts +3 -0
- package/dist/forms/files/put-file.d.ts.map +1 -0
- package/dist/forms/files/put-file.js +9 -0
- package/dist/forms/files/upload-file.d.ts +4 -0
- package/dist/forms/files/upload-file.d.ts.map +1 -0
- package/dist/forms/files/upload-file.js +14 -0
- package/dist/forms/index.d.ts +13 -67
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +11 -2
- package/dist/forms/preprocesses/alpha.d.ts +3 -0
- package/dist/forms/preprocesses/alpha.d.ts.map +1 -0
- package/dist/forms/preprocesses/alpha.js +7 -0
- package/dist/forms/preprocesses/alphanumeric.d.ts +3 -0
- package/dist/forms/preprocesses/alphanumeric.d.ts.map +1 -0
- package/dist/forms/preprocesses/alphanumeric.js +7 -0
- package/dist/forms/preprocesses/lowercase.d.ts +1 -0
- package/dist/forms/preprocesses/lowercase.d.ts.map +1 -0
- package/dist/forms/preprocesses/lowercase.js +1 -0
- package/dist/forms/preprocesses/numeric.d.ts +1 -0
- package/dist/forms/preprocesses/numeric.d.ts.map +1 -0
- package/dist/forms/preprocesses/numeric.js +1 -0
- package/dist/forms/preprocesses/uppercase.d.ts +1 -0
- package/dist/forms/preprocesses/uppercase.d.ts.map +1 -0
- package/dist/forms/preprocesses/uppercase.js +1 -0
- package/dist/forms/refiner/get-not-exists-refiner.d.ts +9 -0
- package/dist/forms/refiner/get-not-exists-refiner.d.ts.map +1 -0
- package/dist/forms/refiner/get-not-exists-refiner.js +13 -0
- package/dist/forms/rules/get-csv-rule.d.ts +4 -0
- package/dist/forms/rules/get-csv-rule.d.ts.map +1 -0
- package/dist/forms/rules/get-csv-rule.js +8 -0
- package/dist/forms/rules/get-phone-rule.d.ts +9 -0
- package/dist/forms/rules/get-phone-rule.d.ts.map +1 -0
- package/dist/forms/rules/get-phone-rule.js +15 -0
- package/dist/forms/submit-form.d.ts +19 -0
- package/dist/forms/submit-form.d.ts.map +1 -0
- package/dist/forms/submit-form.js +33 -0
- package/dist/forms/transformers/get-exists-transformer.d.ts +3 -0
- package/dist/forms/transformers/get-exists-transformer.d.ts.map +1 -0
- package/dist/forms/transformers/get-exists-transformer.js +9 -0
- package/dist/forms/utility/clean-data.d.ts +3 -0
- package/dist/forms/utility/clean-data.d.ts.map +1 -0
- package/dist/forms/utility/clean-data.js +18 -0
- package/dist/forms/utility/handle-redirect.d.ts +3 -0
- package/dist/forms/utility/handle-redirect.d.ts.map +1 -0
- package/dist/forms/utility/handle-redirect.js +7 -0
- package/dist/forms/utility/interfaces.d.ts +12 -0
- package/dist/forms/utility/interfaces.d.ts.map +1 -0
- package/dist/forms/utility/interfaces.js +1 -0
- package/dist/forms/utility/transform-errors.d.ts +4 -0
- package/dist/forms/utility/transform-errors.d.ts.map +1 -0
- package/dist/forms/utility/transform-errors.js +7 -0
- package/dist/forms/utility/transform-file-path.d.ts +3 -0
- package/dist/forms/utility/transform-file-path.d.ts.map +1 -0
- package/dist/forms/utility/transform-file-path.js +9 -0
- package/dist/forms/utility/transform-issue.d.ts +6 -0
- package/dist/forms/utility/transform-issue.d.ts.map +1 -0
- package/dist/forms/utility/transform-issue.js +17 -0
- package/dist/forms/validate-schema.d.ts +4 -0
- package/dist/forms/validate-schema.d.ts.map +1 -0
- package/dist/forms/validate-schema.js +20 -0
- package/dist/forms/validators/get-exists-validator.d.ts +5 -0
- package/dist/forms/validators/get-exists-validator.d.ts.map +1 -0
- package/dist/forms/validators/get-exists-validator.js +10 -0
- package/dist/forms/validators/get-not-exists-validator.d.ts +5 -0
- package/dist/forms/validators/get-not-exists-validator.d.ts.map +1 -0
- package/dist/forms/validators/get-not-exists-validator.js +10 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/json/index.d.ts +3 -7
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +2 -2
- package/dist/json/validate-json-response.d.ts +4 -0
- package/dist/json/validate-json-response.d.ts.map +1 -0
- package/dist/json/validate-json-response.js +7 -0
- package/dist/json/validate-json.d.ts +4 -0
- package/dist/json/validate-json.d.ts.map +1 -0
- package/dist/json/validate-json.js +4 -0
- package/dist/logs/LogRepository.d.ts +1 -0
- package/dist/logs/LogRepository.d.ts.map +1 -0
- package/dist/logs/LogRepository.js +1 -0
- package/dist/logs/index.d.ts +1 -0
- package/dist/logs/index.d.ts.map +1 -0
- package/dist/logs/index.js +1 -0
- package/dist/logs/log.d.ts +1 -0
- package/dist/logs/log.d.ts.map +1 -0
- package/dist/logs/log.js +1 -0
- package/dist/logs/utility/interfaces.d.ts +1 -0
- package/dist/logs/utility/interfaces.d.ts.map +1 -0
- package/dist/logs/utility/interfaces.js +1 -0
- package/dist/logs/utility/schema.d.ts +1 -0
- package/dist/logs/utility/schema.d.ts.map +1 -0
- package/dist/logs/utility/schema.js +1 -0
- package/dist/mail/create-mail.d.ts +4 -0
- package/dist/mail/create-mail.d.ts.map +1 -0
- package/dist/mail/create-mail.js +4 -0
- package/dist/mail/drivers/mailgun/index.d.ts +4 -0
- package/dist/mail/drivers/mailgun/index.d.ts.map +1 -0
- package/dist/mail/drivers/mailgun/index.js +24 -0
- package/dist/mail/drivers/mailgun/transform-mailgun-domain.d.ts +3 -0
- package/dist/mail/drivers/mailgun/transform-mailgun-domain.d.ts.map +1 -0
- package/dist/mail/drivers/mailgun/transform-mailgun-domain.js +4 -0
- package/dist/mail/drivers/mailtrap/index.d.ts +4 -0
- package/dist/mail/drivers/mailtrap/index.d.ts.map +1 -0
- package/dist/mail/drivers/mailtrap/index.js +31 -0
- package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.d.ts +5 -0
- package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.d.ts.map +1 -0
- package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.js +7 -0
- package/dist/mail/drivers/mandrill/index.d.ts +4 -0
- package/dist/mail/drivers/mandrill/index.d.ts.map +1 -0
- package/dist/mail/drivers/mandrill/index.js +34 -0
- package/dist/mail/drivers/mandrill/transform-mandrill-recipients.d.ts +6 -0
- package/dist/mail/drivers/mandrill/transform-mandrill-recipients.d.ts.map +1 -0
- package/dist/mail/drivers/mandrill/transform-mandrill-recipients.js +14 -0
- package/dist/mail/drivers/sendgrid/index.d.ts +4 -0
- package/dist/mail/drivers/sendgrid/index.d.ts.map +1 -0
- package/dist/mail/drivers/sendgrid/index.js +23 -0
- package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.d.ts +5 -0
- package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.d.ts.map +1 -0
- package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.js +7 -0
- package/dist/mail/get-mail.d.ts +7 -0
- package/dist/mail/get-mail.d.ts.map +1 -0
- package/dist/mail/get-mail.js +12 -0
- package/dist/mail/index.d.ts +5 -25
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +3 -3
- package/dist/mail/send-mail.d.ts +4 -0
- package/dist/mail/send-mail.d.ts.map +1 -0
- package/dist/mail/send-mail.js +45 -0
- package/dist/mail/utility/get-sender-details.d.ts +4 -0
- package/dist/mail/utility/get-sender-details.d.ts.map +1 -0
- package/dist/mail/utility/get-sender-details.js +15 -0
- package/dist/mail/utility/interfaces.d.ts +34 -0
- package/dist/mail/utility/interfaces.d.ts.map +1 -0
- package/dist/mail/utility/interfaces.js +1 -0
- package/dist/mail/utility/render-mail.d.ts +3 -0
- package/dist/mail/utility/render-mail.d.ts.map +1 -0
- package/dist/mail/utility/render-mail.js +20 -0
- package/dist/proxy/handle-proxy.d.ts +5 -0
- package/dist/proxy/handle-proxy.d.ts.map +1 -0
- package/dist/proxy/handle-proxy.js +17 -0
- package/dist/proxy/index.d.ts +3 -10
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +1 -2
- package/dist/proxy/utility/interfaces.d.ts +6 -0
- package/dist/proxy/utility/interfaces.d.ts.map +1 -0
- package/dist/proxy/utility/interfaces.js +1 -0
- package/dist/queue/add-to-queue.d.ts +3 -0
- package/dist/queue/add-to-queue.d.ts.map +1 -0
- package/dist/queue/add-to-queue.js +2 -0
- package/dist/queue/drivers/mail-queue-driver.d.ts +1 -0
- package/dist/queue/drivers/mail-queue-driver.d.ts.map +1 -0
- package/dist/queue/drivers/mail-queue-driver.js +1 -0
- package/dist/queue/handle-queue.d.ts +4 -0
- package/dist/queue/handle-queue.d.ts.map +1 -0
- package/dist/queue/handle-queue.js +2 -0
- package/dist/queue/index.d.ts +3 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +2 -0
- package/dist/queue/utility/interfaces.d.ts +1 -0
- package/dist/queue/utility/interfaces.d.ts.map +1 -0
- package/dist/queue/utility/interfaces.js +1 -0
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +66 -2
- package/dist/storage/utility/get-client.d.ts +10 -0
- package/dist/storage/utility/get-client.d.ts.map +1 -0
- package/dist/storage/utility/get-client.js +22 -0
- package/dist/storage/utility/get-ttl.d.ts +3 -0
- package/dist/storage/utility/get-ttl.d.ts.map +1 -0
- package/dist/storage/utility/get-ttl.js +15 -0
- package/dist/storage/utility/is-localhost.d.ts +8 -0
- package/dist/storage/utility/is-localhost.d.ts.map +1 -0
- package/dist/storage/utility/is-localhost.js +9 -0
- package/dist/storage/utility/make-key.d.ts +3 -0
- package/dist/storage/utility/make-key.d.ts.map +1 -0
- package/dist/storage/utility/make-key.js +4 -0
- package/dist/utility/db.d.ts +5 -0
- package/dist/utility/db.d.ts.map +1 -0
- package/dist/utility/db.js +2 -0
- package/dist/utility/ensure-id-from-params.d.ts +3 -0
- package/dist/utility/ensure-id-from-params.d.ts.map +1 -0
- package/dist/utility/ensure-id-from-params.js +7 -0
- package/dist/utility/ensure-id.d.ts +3 -0
- package/dist/utility/ensure-id.d.ts.map +1 -0
- package/dist/utility/ensure-id.js +9 -0
- package/dist/utility/generate-id.d.ts +3 -0
- package/dist/utility/generate-id.d.ts.map +1 -0
- package/dist/utility/generate-id.js +12 -0
- package/dist/utility/get-id-from-params.d.ts +3 -0
- package/dist/utility/get-id-from-params.d.ts.map +1 -0
- package/dist/utility/get-id-from-params.js +18 -0
- package/dist/utility/guard-id.d.ts +4 -0
- package/dist/utility/guard-id.d.ts.map +1 -0
- package/dist/utility/guard-id.js +11 -0
- package/dist/utility/index.d.ts +7 -14
- package/dist/utility/index.d.ts.map +1 -0
- package/dist/utility/index.js +6 -2
- package/dist/{interfaces-DTUqy5Oj.d.ts → utility/interfaces.d.ts} +4 -5
- package/dist/utility/interfaces.d.ts.map +1 -0
- package/dist/utility/interfaces.js +1 -0
- package/dist/utility/syslog.d.ts +3 -0
- package/dist/utility/syslog.d.ts.map +1 -0
- package/dist/utility/syslog.js +16 -0
- package/package.json +11 -11
- package/dist/chunk-2ZLU4AUD.js +0 -2
- package/dist/chunk-2ZLU4AUD.js.map +0 -1
- package/dist/chunk-6GDOIHTS.js +0 -2
- package/dist/chunk-6GDOIHTS.js.map +0 -1
- package/dist/chunk-BA3BC4CD.js +0 -2
- package/dist/chunk-BA3BC4CD.js.map +0 -1
- package/dist/chunk-UCMLSO7F.js +0 -3
- package/dist/chunk-UCMLSO7F.js.map +0 -1
- package/dist/csv/index.js.map +0 -1
- package/dist/database/index.js.map +0 -1
- package/dist/forms/index.js.map +0 -1
- package/dist/interfaces-cnzok1wV.d.ts +0 -13
- package/dist/json/index.js.map +0 -1
- package/dist/mail/index.js.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/utility/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-json.d.ts","sourceRoot":"","sources":["../../src/json/validate-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,iBAAS,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAE/E;eAEc,YAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=LogRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogRepository.d.ts","sourceRoot":"","sources":["../../src/logs/LogRepository.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logs/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/logs/log.ts"],"names":[],"mappings":""}
|
package/dist/logs/log.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/logs/utility/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/logs/utility/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MailObject } from './utility/interfaces';
|
|
2
|
+
declare function createMail<T extends object>(subject: string | ((data: T) => Promise<string> | string), template: (data: T) => Promise<React.ReactElement> | React.ReactElement): MailObject<T>;
|
|
3
|
+
export default createMail;
|
|
4
|
+
//# sourceMappingURL=create-mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-mail.d.ts","sourceRoot":"","sources":["../../src/mail/create-mail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,iBAAS,UAAU,CAAC,CAAC,SAAS,MAAM,EAChC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,GACxE,UAAU,CAAC,CAAC,CAAC,CAEf;eAEc,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mailgun/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAMnE,iBAAe,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB/E;eAEc,eAAe"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import formData from 'form-data';
|
|
2
|
+
import Mailgun from 'mailgun.js';
|
|
3
|
+
import transformMailgunDomain from './transform-mailgun-domain';
|
|
4
|
+
const mg = new Mailgun(formData);
|
|
5
|
+
async function sendMailgunMail(sendObject) {
|
|
6
|
+
if (!process.env.MAIL_API_KEY) {
|
|
7
|
+
throw new Error('Could not send mail via Mailgun. Mail API key has not been set.');
|
|
8
|
+
}
|
|
9
|
+
const client = mg.client({
|
|
10
|
+
key: process.env.MAIL_API_KEY,
|
|
11
|
+
url: 'https://api.eu.mailgun.net/',
|
|
12
|
+
username: 'api',
|
|
13
|
+
});
|
|
14
|
+
const response = await client.messages.create(transformMailgunDomain(sendObject.from.email), {
|
|
15
|
+
bcc: sendObject.bcc,
|
|
16
|
+
cc: sendObject.cc,
|
|
17
|
+
from: sendObject.from.raw,
|
|
18
|
+
html: sendObject.html,
|
|
19
|
+
subject: sendObject.subject,
|
|
20
|
+
to: sendObject.to,
|
|
21
|
+
});
|
|
22
|
+
return response.status === 200;
|
|
23
|
+
}
|
|
24
|
+
export default sendMailgunMail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-mailgun-domain.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mailgun/transform-mailgun-domain.ts"],"names":[],"mappings":"AAAA,iBAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;eAEc,sBAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mailtrap/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAInE,iBAAe,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiChF;eAEc,gBAAgB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { pick } from '@sqrzro/utility';
|
|
2
|
+
import transformMailtrapRecipients from './transform-mailtrap-recipients';
|
|
3
|
+
async function sendMailtrapMail(sendObject) {
|
|
4
|
+
if (!process.env.MAIL_API_KEY) {
|
|
5
|
+
throw new Error('Could not send mail via Mailtrap. Mail API key has not been set.');
|
|
6
|
+
}
|
|
7
|
+
/*
|
|
8
|
+
* The account id and api key are both in the MAIL_API_KEY variable, separated by a `.`. We need
|
|
9
|
+
* to split them.
|
|
10
|
+
*/
|
|
11
|
+
const [id, key] = process.env.MAIL_API_KEY.split('.');
|
|
12
|
+
const response = await fetch(`https://sandbox.api.mailtrap.io/api/send/${id}`, {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: { 'Api-Token': key, 'Content-Type': 'application/json' },
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
attachments: sendObject.attachments,
|
|
17
|
+
bcc: transformMailtrapRecipients(sendObject.bcc),
|
|
18
|
+
cc: transformMailtrapRecipients(sendObject.cc),
|
|
19
|
+
from: pick(sendObject.from, ['email', 'name']),
|
|
20
|
+
html: sendObject.html,
|
|
21
|
+
subject: sendObject.subject,
|
|
22
|
+
to: transformMailtrapRecipients(sendObject.to),
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
const json = (await response.json());
|
|
26
|
+
if (json.errors) {
|
|
27
|
+
throw new Error(`Could not send mail via Mailtrap. ${json.errors[0]}.`);
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
export default sendMailtrapMail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-mailtrap-recipients.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mailtrap/transform-mailtrap-recipients.ts"],"names":[],"mappings":"AAAA,iBAAS,2BAA2B,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKpF;eAEc,2BAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mandrill/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAQnE,iBAAe,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoChF;eAEc,gBAAgB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import transformMandrillRecipients from './transform-mandrill-recipients';
|
|
2
|
+
async function sendMandrillMail(sendObject) {
|
|
3
|
+
if (!process.env.MAIL_API_KEY) {
|
|
4
|
+
throw new Error('Could not send mail via Mandrill. Mail API key has not been set.');
|
|
5
|
+
}
|
|
6
|
+
const attachments = sendObject.attachments?.map((attachment) => ({
|
|
7
|
+
content: attachment.content,
|
|
8
|
+
name: attachment.filename,
|
|
9
|
+
type: attachment.type,
|
|
10
|
+
}));
|
|
11
|
+
/* eslint-disable camelcase */
|
|
12
|
+
const message = {
|
|
13
|
+
attachments,
|
|
14
|
+
from_email: sendObject.from.email,
|
|
15
|
+
from_name: sendObject.from.name,
|
|
16
|
+
html: sendObject.html,
|
|
17
|
+
subject: sendObject.subject,
|
|
18
|
+
preserve_recipients: true,
|
|
19
|
+
to: transformMandrillRecipients(sendObject.to, sendObject.cc, sendObject.bcc),
|
|
20
|
+
};
|
|
21
|
+
/* eslint-enable camelcase */
|
|
22
|
+
const response = await fetch('https://mandrillapp.com/api/1.0/messages/send', {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
key: process.env.MAIL_API_KEY,
|
|
26
|
+
message,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
const json = (await response.json());
|
|
30
|
+
return Array.isArray(json)
|
|
31
|
+
? json.every((item) => item.status === 'sent')
|
|
32
|
+
: json.status === 'sent';
|
|
33
|
+
}
|
|
34
|
+
export default sendMandrillMail;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare function transformMandrillRecipients(to: string[] | string, cc?: string[] | string, bcc?: string[] | string): {
|
|
2
|
+
email: string;
|
|
3
|
+
type: 'bcc' | 'cc' | 'to';
|
|
4
|
+
}[];
|
|
5
|
+
export default transformMandrillRecipients;
|
|
6
|
+
//# sourceMappingURL=transform-mandrill-recipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-mandrill-recipients.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/mandrill/transform-mandrill-recipients.ts"],"names":[],"mappings":"AAUA,iBAAS,2BAA2B,CAChC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EACrB,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EACtB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;CAAE,EAAE,CAMhD;eAEc,2BAA2B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function transformMandrillRecipientGroup(group, type) {
|
|
2
|
+
if (Array.isArray(group)) {
|
|
3
|
+
return group.map((email) => ({ email, type }));
|
|
4
|
+
}
|
|
5
|
+
return [{ email: group, type }];
|
|
6
|
+
}
|
|
7
|
+
function transformMandrillRecipients(to, cc, bcc) {
|
|
8
|
+
return [
|
|
9
|
+
...transformMandrillRecipientGroup(to, 'to'),
|
|
10
|
+
...transformMandrillRecipientGroup(cc || [], 'cc'),
|
|
11
|
+
...transformMandrillRecipientGroup(bcc || [], 'bcc'),
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
export default transformMandrillRecipients;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/sendgrid/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAInE,iBAAe,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBhF;eAEc,gBAAgB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import sgMail from '@sendgrid/mail';
|
|
2
|
+
import { pick } from '@sqrzro/utility';
|
|
3
|
+
import transformSendgridRecipients from './transform-sendgrid-recipients';
|
|
4
|
+
async function sendSendgridMail(sendObject) {
|
|
5
|
+
if (!process.env.MAIL_API_KEY) {
|
|
6
|
+
throw new Error('Could not send mail via Sendgrid. Mail API key has not been set.');
|
|
7
|
+
}
|
|
8
|
+
sgMail.setApiKey(process.env.MAIL_API_KEY);
|
|
9
|
+
const response = await sgMail.send({
|
|
10
|
+
attachments: sendObject.attachments,
|
|
11
|
+
bcc: transformSendgridRecipients(sendObject.bcc),
|
|
12
|
+
cc: transformSendgridRecipients(sendObject.cc),
|
|
13
|
+
from: pick(sendObject.from, ['email', 'name']),
|
|
14
|
+
html: sendObject.html,
|
|
15
|
+
to: transformSendgridRecipients(sendObject.to),
|
|
16
|
+
subject: sendObject.subject,
|
|
17
|
+
});
|
|
18
|
+
if (!response[0].statusCode.toString().startsWith('2')) {
|
|
19
|
+
throw new Error(`Could not send mail via Sendgrid. ${JSON.stringify(response)}`);
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
export default sendSendgridMail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-sendgrid-recipients.d.ts","sourceRoot":"","sources":["../../../../src/mail/drivers/sendgrid/transform-sendgrid-recipients.ts"],"names":[],"mappings":"AAAA,iBAAS,2BAA2B,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKpF;eAEc,2BAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-mail.d.ts","sourceRoot":"","sources":["../../src/mail/get-mail.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,iBAAe,OAAO,CAAC,CAAC,SAAS,MAAM,EACnC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5C;eAEc,OAAO"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import renderMail from './utility/render-mail';
|
|
2
|
+
async function getMail(mail, data) {
|
|
3
|
+
const { subject, template } = mail;
|
|
4
|
+
const subjectText = typeof subject === 'function' ? await subject(data) : subject;
|
|
5
|
+
const element = await template(data);
|
|
6
|
+
const html = await renderMail(element);
|
|
7
|
+
return {
|
|
8
|
+
html,
|
|
9
|
+
subject: subjectText,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export default getMail;
|
package/dist/mail/index.d.ts
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
attachments?: {
|
|
7
|
-
content: string;
|
|
8
|
-
filename: string;
|
|
9
|
-
type: string;
|
|
10
|
-
}[];
|
|
11
|
-
bcc?: string[] | string;
|
|
12
|
-
cc?: string[] | string;
|
|
13
|
-
from?: string | null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
declare function createMail<T extends object>(subject: string | ((data: T) => Promise<string> | string), template: (data: T) => Promise<React.ReactElement> | React.ReactElement): MailObject<T>;
|
|
17
|
-
|
|
18
|
-
declare function getMail<T extends object>(mail: MailObject<T>, data: T): Promise<{
|
|
19
|
-
subject: string;
|
|
20
|
-
html: string;
|
|
21
|
-
}>;
|
|
22
|
-
|
|
23
|
-
declare function sendMail<T extends object>(to: string[] | string, mail: MailObject<T>, data?: T, options?: MailOptions): Promise<boolean>;
|
|
24
|
-
|
|
25
|
-
export { type MailObject, createMail, getMail, sendMail };
|
|
1
|
+
export type { MailObject } from './utility/interfaces';
|
|
2
|
+
export { default as createMail } from './create-mail';
|
|
3
|
+
export { default as getMail } from './get-mail';
|
|
4
|
+
export { default as sendMail } from './send-mail';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mail/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/mail/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export{
|
|
3
|
-
|
|
1
|
+
export { default as createMail } from './create-mail';
|
|
2
|
+
export { default as getMail } from './get-mail';
|
|
3
|
+
export { default as sendMail } from './send-mail';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MailObject, MailOptions } from './utility/interfaces';
|
|
2
|
+
declare function sendMail<T extends object>(to: string[] | string, mail: MailObject<T>, data?: T, options?: MailOptions): Promise<boolean>;
|
|
3
|
+
export default sendMail;
|
|
4
|
+
//# sourceMappingURL=send-mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-mail.d.ts","sourceRoot":"","sources":["../../src/mail/send-mail.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAc,UAAU,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAC;AAepG,iBAAe,QAAQ,CAAC,CAAC,SAAS,MAAM,EACpC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EACrB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,OAAO,CAAC,CAuClB;eAEc,QAAQ"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import sendMailgunMail from './drivers/mailgun';
|
|
2
|
+
import sendMailtrapMail from './drivers/mailtrap';
|
|
3
|
+
import sendMandrillMail from './drivers/mandrill';
|
|
4
|
+
import sendSendgridMail from './drivers/sendgrid';
|
|
5
|
+
import getMail from './get-mail';
|
|
6
|
+
import getSenderDetails from './utility/get-sender-details';
|
|
7
|
+
const DEVELOPMENT_DRIVERS = ['MAILTRAP'];
|
|
8
|
+
const PRODUCTION_DRIVERS = ['MAILGUN', 'MAILTRAP', 'MANDRILL', 'SENDGRID'];
|
|
9
|
+
const DEFAULT_DEVELOPMENT_DRIVER = 'MAILTRAP';
|
|
10
|
+
const DEFAULT_PRODUCTION_DRIVER = 'SENDGRID';
|
|
11
|
+
const driverMap = {
|
|
12
|
+
MAILGUN: sendMailgunMail,
|
|
13
|
+
MAILTRAP: sendMailtrapMail,
|
|
14
|
+
MANDRILL: sendMandrillMail,
|
|
15
|
+
SENDGRID: sendSendgridMail,
|
|
16
|
+
};
|
|
17
|
+
async function sendMail(to, mail, data, options) {
|
|
18
|
+
const from = getSenderDetails(options?.from);
|
|
19
|
+
const { subject, html } = await getMail(mail, data || {});
|
|
20
|
+
const sendObject = {
|
|
21
|
+
attachments: options?.attachments,
|
|
22
|
+
bcc: options?.bcc,
|
|
23
|
+
cc: options?.cc,
|
|
24
|
+
from,
|
|
25
|
+
html,
|
|
26
|
+
subject,
|
|
27
|
+
to,
|
|
28
|
+
};
|
|
29
|
+
const allowedDriverAliases = process.env.MAIL_ENABLE_PRODUCTION === 'true' ? PRODUCTION_DRIVERS : DEVELOPMENT_DRIVERS;
|
|
30
|
+
const defaultDriverAlias = process.env.MAIL_ENABLE_PRODUCTION === 'true'
|
|
31
|
+
? DEFAULT_PRODUCTION_DRIVER
|
|
32
|
+
: DEFAULT_DEVELOPMENT_DRIVER;
|
|
33
|
+
const driverAlias = process.env.MAIL_DRIVER
|
|
34
|
+
? process.env.MAIL_DRIVER.toUpperCase()
|
|
35
|
+
: defaultDriverAlias;
|
|
36
|
+
if (!allowedDriverAliases.includes(driverAlias) || !driverMap[driverAlias]) {
|
|
37
|
+
throw new Error(`Mail driver ${driverAlias} is not supported. If you're in a production environment, you might need to set the MAIL_ENABLE_PRODUCTION environment variable to access this driver.`);
|
|
38
|
+
}
|
|
39
|
+
const driver = driverMap[driverAlias];
|
|
40
|
+
if (!driver) {
|
|
41
|
+
throw new Error(`Mail driver ${driverAlias} is not supported.`);
|
|
42
|
+
}
|
|
43
|
+
return driver(sendObject);
|
|
44
|
+
}
|
|
45
|
+
export default sendMail;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-sender-details.d.ts","sourceRoot":"","sources":["../../../src/mail/utility/get-sender-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,iBAAS,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CAoB5D;eAEc,gBAAgB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function getSenderDetails(from) {
|
|
2
|
+
if (!from && !process.env.MAIL_FROM) {
|
|
3
|
+
throw new Error('Mail from address has not been set as an environment variable, or provided in options.');
|
|
4
|
+
}
|
|
5
|
+
const matches = /^(?<name>[^<]+)<(?<email>[^>]+)>$/u.exec(from || process.env.MAIL_FROM || '');
|
|
6
|
+
if (!matches?.groups?.name || !matches?.groups?.email) {
|
|
7
|
+
throw new Error('Mail from address is not the correct format. It should be "Name <email>".');
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
email: matches.groups.email.trim(),
|
|
11
|
+
name: matches.groups.name.trim(),
|
|
12
|
+
raw: `${matches.groups.name.trim()} <${matches.groups.email.trim()}>`,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export default getSenderDetails;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface SenderObject {
|
|
2
|
+
email: string;
|
|
3
|
+
name: string;
|
|
4
|
+
raw: string;
|
|
5
|
+
}
|
|
6
|
+
export interface MailObject<T extends object> {
|
|
7
|
+
subject: string | ((data: T) => Promise<string> | string);
|
|
8
|
+
template: (data: T) => Promise<React.ReactElement> | React.ReactElement;
|
|
9
|
+
}
|
|
10
|
+
export interface MailOptions {
|
|
11
|
+
attachments?: {
|
|
12
|
+
content: string;
|
|
13
|
+
filename: string;
|
|
14
|
+
type: string;
|
|
15
|
+
}[];
|
|
16
|
+
bcc?: string[] | string;
|
|
17
|
+
cc?: string[] | string;
|
|
18
|
+
from?: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface SendableMailObject {
|
|
21
|
+
attachments?: {
|
|
22
|
+
content: string;
|
|
23
|
+
filename: string;
|
|
24
|
+
type: string;
|
|
25
|
+
}[];
|
|
26
|
+
bcc?: string[] | string;
|
|
27
|
+
cc?: string[] | string;
|
|
28
|
+
from: SenderObject;
|
|
29
|
+
html: string;
|
|
30
|
+
subject: string;
|
|
31
|
+
to: string[] | string;
|
|
32
|
+
}
|
|
33
|
+
export type MailDriver = (sendObject: SendableMailObject) => Promise<boolean>;
|
|
34
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/mail/utility/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM;IACxC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1D,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;CAC3E;AAED,MAAM,WAAW,WAAW;IACxB,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-mail.d.ts","sourceRoot":"","sources":["../../../src/mail/utility/render-mail.ts"],"names":[],"mappings":"AAEA,iBAAe,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBtE;eAEc,UAAU"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import stream from 'node:stream';
|
|
2
|
+
async function renderMail(element) {
|
|
3
|
+
const ReactDOMServer = (await import('react-dom/server')).default;
|
|
4
|
+
return new Promise((resolve) => {
|
|
5
|
+
const ws = new stream.Writable();
|
|
6
|
+
let content = '';
|
|
7
|
+
function write(chunk, enc, next) {
|
|
8
|
+
content += chunk.toString();
|
|
9
|
+
next();
|
|
10
|
+
}
|
|
11
|
+
ws._write = write; // eslint-disable-line no-underscore-dangle
|
|
12
|
+
const { pipe } = ReactDOMServer.renderToPipeableStream(element, {
|
|
13
|
+
onShellReady: () => {
|
|
14
|
+
pipe(ws);
|
|
15
|
+
resolve(content);
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export default renderMail;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NextRequest } from 'next/server';
|
|
2
|
+
import type { ProxyFunction } from './utility/interfaces';
|
|
3
|
+
declare function handleProxy(request: NextRequest, functions: ProxyFunction[]): Promise<Response>;
|
|
4
|
+
export default handleProxy;
|
|
5
|
+
//# sourceMappingURL=handle-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/handle-proxy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,iBAAe,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgB9F;eAEc,WAAW"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
async function handleProxy(request, functions) {
|
|
3
|
+
for (const func of functions) {
|
|
4
|
+
const result = await func(request);
|
|
5
|
+
if (result?.redirect) {
|
|
6
|
+
const { redirect } = result;
|
|
7
|
+
if (typeof redirect === 'number') {
|
|
8
|
+
return new Response(null, { status: redirect });
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return NextResponse.redirect(new URL(redirect, request.url));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return NextResponse.next();
|
|
16
|
+
}
|
|
17
|
+
export default handleProxy;
|
package/dist/proxy/index.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
redirect: string | number | null;
|
|
5
|
-
}
|
|
6
|
-
type ProxyFunction = (request: NextRequest) => Promise<ProxyRedirect | null>;
|
|
7
|
-
|
|
8
|
-
declare function handleProxy(request: NextRequest, functions: ProxyFunction[]): Promise<Response>;
|
|
9
|
-
|
|
10
|
-
export { type ProxyFunction, type ProxyRedirect, handleProxy };
|
|
1
|
+
export type * from './utility/interfaces';
|
|
2
|
+
export { default as handleProxy } from './handle-proxy';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,sBAAsB,CAAC;AAE1C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|