@creator.co/wapi 1.6.0 → 2.0.0-alpha.1
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/.github/workflows/npmpublish.yml +1 -1
- package/.github/workflows/prs.yml +1 -1
- package/dist/index.js +45 -31
- package/dist/index.js.map +1 -1
- package/dist/jest.config.js +2 -4
- package/dist/jest.config.js.map +1 -1
- package/dist/package.json +12 -12
- package/dist/src/API/Request.js +53 -59
- package/dist/src/API/Request.js.map +1 -1
- package/dist/src/API/Response.js +81 -156
- package/dist/src/API/Response.js.map +1 -1
- package/dist/src/BaseEvent/EventProcessor.js +54 -132
- package/dist/src/BaseEvent/EventProcessor.js.map +1 -1
- package/dist/src/BaseEvent/Process.js +40 -98
- package/dist/src/BaseEvent/Process.js.map +1 -1
- package/dist/src/BaseEvent/Transaction.js +122 -310
- package/dist/src/BaseEvent/Transaction.js.map +1 -1
- package/dist/src/Cache/Redis.js +55 -119
- package/dist/src/Cache/Redis.js.map +1 -1
- package/dist/src/Cache/types.js +1 -2
- package/dist/src/Config/Configuration.js +46 -86
- package/dist/src/Config/Configuration.js.map +1 -1
- package/dist/src/Config/EnvironmentVar.js +57 -119
- package/dist/src/Config/EnvironmentVar.js.map +1 -1
- package/dist/src/Crypto/Crypto.js +35 -82
- package/dist/src/Crypto/Crypto.js.map +1 -1
- package/dist/src/Crypto/JWT.js +12 -27
- package/dist/src/Crypto/JWT.js.map +1 -1
- package/dist/src/Database/Database.js +3 -8
- package/dist/src/Database/Database.js.map +1 -1
- package/dist/src/Database/DatabaseManager.js +23 -28
- package/dist/src/Database/DatabaseManager.js.map +1 -1
- package/dist/src/Database/DatabaseTransaction.js +50 -166
- package/dist/src/Database/DatabaseTransaction.js.map +1 -1
- package/dist/src/Database/index.js +11 -15
- package/dist/src/Database/index.js.map +1 -1
- package/dist/src/Database/integrations/knex/KnexDatabase.js +22 -76
- package/dist/src/Database/integrations/knex/KnexDatabase.js.map +1 -1
- package/dist/src/Database/integrations/knex/KnexTransaction.js +19 -85
- package/dist/src/Database/integrations/knex/KnexTransaction.js.map +1 -1
- package/dist/src/Database/integrations/kysely/KyselyDatabase.js +37 -88
- package/dist/src/Database/integrations/kysely/KyselyDatabase.js.map +1 -1
- package/dist/src/Database/integrations/kysely/KyselyTransaction.js +46 -114
- package/dist/src/Database/integrations/kysely/KyselyTransaction.js.map +1 -1
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js +20 -71
- package/dist/src/Database/integrations/pgsql/PostgresDatabase.js.map +1 -1
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js +19 -85
- package/dist/src/Database/integrations/pgsql/PostgresTransaction.js.map +1 -1
- package/dist/src/Database/types.js +1 -2
- package/dist/src/Globals.js +93 -98
- package/dist/src/Globals.js.map +1 -1
- package/dist/src/Logger/Logger.js +88 -222
- package/dist/src/Logger/Logger.js.map +1 -1
- package/dist/src/Mailer/Mailer.js +83 -204
- package/dist/src/Mailer/Mailer.js.map +1 -1
- package/dist/src/Publisher/Publisher.js +43 -107
- package/dist/src/Publisher/Publisher.js.map +1 -1
- package/dist/src/Server/RouteResolver.js +22 -49
- package/dist/src/Server/RouteResolver.js.map +1 -1
- package/dist/src/Server/Router.js +12 -16
- package/dist/src/Server/Router.js.map +1 -1
- package/dist/src/Server/lib/ContainerServer.js +21 -83
- package/dist/src/Server/lib/ContainerServer.js.map +1 -1
- package/dist/src/Server/lib/Server.js +50 -99
- package/dist/src/Server/lib/Server.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandler.js +32 -107
- package/dist/src/Server/lib/container/GenericHandler.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandlerEvent.js +37 -81
- package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -1
- package/dist/src/Server/lib/container/HealthHandler.js +3 -35
- package/dist/src/Server/lib/container/HealthHandler.js.map +1 -1
- package/dist/src/Server/lib/container/Proxy.js +64 -127
- package/dist/src/Server/lib/container/Proxy.js.map +1 -1
- package/dist/src/Server/lib/container/Utils.js +12 -55
- package/dist/src/Server/lib/container/Utils.js.map +1 -1
- package/dist/src/Util/AsyncSingleton.js +40 -164
- package/dist/src/Util/AsyncSingleton.js.map +1 -1
- package/dist/src/Util/Utils.js +18 -24
- package/dist/src/Util/Utils.js.map +1 -1
- package/dist/src/Validation/Validator.js +10 -16
- package/dist/src/Validation/Validator.js.map +1 -1
- package/package.json +12 -12
- package/src/Logger/Logger.ts +2 -2
- package/tests/Logger/Logger.test.ts +6 -4
- package/tsconfig.json +3 -1
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -19,57 +7,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
8
|
});
|
|
21
9
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __values = (this && this.__values) || function(o) {
|
|
50
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
51
|
-
if (m) return m.call(o);
|
|
52
|
-
if (o && typeof o.length === "number") return {
|
|
53
|
-
next: function () {
|
|
54
|
-
if (o && i >= o.length) o = void 0;
|
|
55
|
-
return { value: o && o[i++], done: !o };
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
59
|
-
};
|
|
60
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
-
var SES = require("@aws-sdk/client-ses");
|
|
62
|
-
var credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
|
|
63
|
-
var Email = require("email-templates");
|
|
64
|
-
var nodemailer = require("nodemailer");
|
|
65
|
-
var Mailer = /** @class */ (function () {
|
|
10
|
+
import * as SES from '@aws-sdk/client-ses';
|
|
11
|
+
import { defaultProvider } from '@aws-sdk/credential-provider-node';
|
|
12
|
+
import * as Email from 'email-templates';
|
|
13
|
+
import * as nodemailer from 'nodemailer';
|
|
14
|
+
export default class Mailer {
|
|
66
15
|
/**
|
|
67
16
|
* Constructs a new instance of the EmailSender class.
|
|
68
17
|
* @param {string} defaultFrom - The default "from" email address.
|
|
69
18
|
* @param {string} region - The AWS region to use for sending emails.
|
|
70
19
|
* @returns None
|
|
71
20
|
*/
|
|
72
|
-
|
|
21
|
+
constructor(defaultFrom, region) {
|
|
73
22
|
/**
|
|
74
23
|
* The default file template for the application.
|
|
75
24
|
* @type {string}
|
|
@@ -79,9 +28,9 @@ var Mailer = /** @class */ (function () {
|
|
|
79
28
|
this.transporter = nodemailer.createTransport({
|
|
80
29
|
SES: {
|
|
81
30
|
ses: new SES.SESClient({
|
|
82
|
-
credentials:
|
|
31
|
+
credentials: defaultProvider(),
|
|
83
32
|
apiVersion: '2010-12-01',
|
|
84
|
-
region
|
|
33
|
+
region,
|
|
85
34
|
}),
|
|
86
35
|
aws: SES,
|
|
87
36
|
},
|
|
@@ -97,37 +46,29 @@ var Mailer = /** @class */ (function () {
|
|
|
97
46
|
* @param {string} [optionalReplyTo] - The optional reply-to address for the email.
|
|
98
47
|
* @param {any[]} [optionalAttachments] - The optional attachments to include
|
|
99
48
|
*/
|
|
100
|
-
|
|
49
|
+
sendRawEmail(to, htmlMessage, subject, optionalCC, optionalFrom, optionalReplyTo,
|
|
101
50
|
// TODO: improve attachment type -> Attachment
|
|
102
51
|
optionalAttachments, optionalTransport) {
|
|
103
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
message: __assign(__assign(__assign({ from: optionalFrom || this.from, to: to, html: htmlMessage, subject: subject }, (optionalAttachments ? { attachments: optionalAttachments } : {})), (optionalCC ? { cc: optionalCC } : {})), (optionalReplyTo ? { replyTo: optionalReplyTo } : {})),
|
|
110
|
-
transport: optionalTransport || this.transporter,
|
|
111
|
-
send: true,
|
|
112
|
-
});
|
|
113
|
-
resp = null;
|
|
114
|
-
_a.label = 1;
|
|
115
|
-
case 1:
|
|
116
|
-
_a.trys.push([1, 3, , 4]);
|
|
117
|
-
return [4 /*yield*/, email.send()];
|
|
118
|
-
case 2:
|
|
119
|
-
resp = _a.sent();
|
|
120
|
-
console.debug('Mailer resp:', resp);
|
|
121
|
-
return [3 /*break*/, 4];
|
|
122
|
-
case 3:
|
|
123
|
-
e_1 = _a.sent();
|
|
124
|
-
console.error('Mailer error:', e_1);
|
|
125
|
-
throw e_1;
|
|
126
|
-
case 4: return [2 /*return*/, resp];
|
|
127
|
-
}
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
//Generate emails
|
|
54
|
+
const email = new Email({
|
|
55
|
+
message: Object.assign(Object.assign(Object.assign({ from: optionalFrom || this.from, to: to, html: htmlMessage, subject }, (optionalAttachments ? { attachments: optionalAttachments } : {})), (optionalCC ? { cc: optionalCC } : {})), (optionalReplyTo ? { replyTo: optionalReplyTo } : {})),
|
|
56
|
+
transport: optionalTransport || this.transporter,
|
|
57
|
+
send: true,
|
|
128
58
|
});
|
|
59
|
+
//
|
|
60
|
+
let resp = null;
|
|
61
|
+
try {
|
|
62
|
+
resp = yield email.send();
|
|
63
|
+
console.debug('Mailer resp:', resp);
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.error('Mailer error:', e);
|
|
67
|
+
throw e;
|
|
68
|
+
}
|
|
69
|
+
return resp;
|
|
129
70
|
});
|
|
130
|
-
}
|
|
71
|
+
}
|
|
131
72
|
/**
|
|
132
73
|
* Sends a templated email to the specified recipients.
|
|
133
74
|
* @param {string | Array<string>} to - The email address(es) of the recipient(s).
|
|
@@ -138,40 +79,30 @@ var Mailer = /** @class */ (function () {
|
|
|
138
79
|
* @param {string} [optionalReplyTo] - The email address to set as the reply-to address.
|
|
139
80
|
* @param {any[]} [optionalAttachments] - An array
|
|
140
81
|
*/
|
|
141
|
-
|
|
82
|
+
sendTemplatedEmail(to, templates, data, optionalCC, optionalFrom, optionalReplyTo,
|
|
142
83
|
// TODO: improve attachment type -> Attachment
|
|
143
84
|
optionalAttachments, optionalTransport) {
|
|
144
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
message: __assign(__assign(__assign({ from: optionalFrom || this.from, to: to }, (optionalAttachments ? { attachments: optionalAttachments } : {})), (optionalCC ? { cc: optionalCC } : {})), (optionalReplyTo ? { replyTo: optionalReplyTo } : {})),
|
|
151
|
-
transport: optionalTransport || this.transporter,
|
|
152
|
-
send: true,
|
|
153
|
-
});
|
|
154
|
-
resp = null;
|
|
155
|
-
_a.label = 1;
|
|
156
|
-
case 1:
|
|
157
|
-
_a.trys.push([1, 4, , 5]);
|
|
158
|
-
return [4 /*yield*/, this.chooseTemplate(templates, data)];
|
|
159
|
-
case 2:
|
|
160
|
-
chosenTemplate = _a.sent();
|
|
161
|
-
return [4 /*yield*/, email.send({ template: chosenTemplate, locals: data })];
|
|
162
|
-
case 3:
|
|
163
|
-
resp = _a.sent();
|
|
164
|
-
console.debug('Mailer resp:', resp);
|
|
165
|
-
return [3 /*break*/, 5];
|
|
166
|
-
case 4:
|
|
167
|
-
e_2 = _a.sent();
|
|
168
|
-
console.error('Mailer error:', e_2);
|
|
169
|
-
throw e_2;
|
|
170
|
-
case 5: return [2 /*return*/, resp];
|
|
171
|
-
}
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
//Generate emails
|
|
87
|
+
const email = new Email({
|
|
88
|
+
message: Object.assign(Object.assign(Object.assign({ from: optionalFrom || this.from, to: to }, (optionalAttachments ? { attachments: optionalAttachments } : {})), (optionalCC ? { cc: optionalCC } : {})), (optionalReplyTo ? { replyTo: optionalReplyTo } : {})),
|
|
89
|
+
transport: optionalTransport || this.transporter,
|
|
90
|
+
send: true,
|
|
172
91
|
});
|
|
92
|
+
//
|
|
93
|
+
let resp = null;
|
|
94
|
+
try {
|
|
95
|
+
const chosenTemplate = yield this.chooseTemplate(templates, data);
|
|
96
|
+
resp = yield email.send({ template: chosenTemplate, locals: data });
|
|
97
|
+
console.debug('Mailer resp:', resp);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
console.error('Mailer error:', e);
|
|
101
|
+
throw e;
|
|
102
|
+
}
|
|
103
|
+
return resp;
|
|
173
104
|
});
|
|
174
|
-
}
|
|
105
|
+
}
|
|
175
106
|
/**
|
|
176
107
|
* Creates a new SMTP transporter for sending emails using NodeMailer.
|
|
177
108
|
* @param {string} host - The SMTP server host.
|
|
@@ -180,8 +111,8 @@ var Mailer = /** @class */ (function () {
|
|
|
180
111
|
* @param {string} password - The password for authentication with the SMTP server.
|
|
181
112
|
* @returns {Email.NodeMailerTransportOptions} - The SMTP transporter object.
|
|
182
113
|
*/
|
|
183
|
-
|
|
184
|
-
|
|
114
|
+
newSMTPTransporter(host, portNumber, user, password) {
|
|
115
|
+
const smtpTransporter = nodemailer.createTransport({
|
|
185
116
|
host: host,
|
|
186
117
|
port: portNumber,
|
|
187
118
|
connectionTimeout: 2000,
|
|
@@ -191,7 +122,7 @@ var Mailer = /** @class */ (function () {
|
|
|
191
122
|
},
|
|
192
123
|
});
|
|
193
124
|
return smtpTransporter;
|
|
194
|
-
}
|
|
125
|
+
}
|
|
195
126
|
/**
|
|
196
127
|
* Chooses a template from the given array of templates or a single template string based on whether it can be rendered with the provided data.
|
|
197
128
|
* @param {string | Array<string>} templates - The template(s) to choose from.
|
|
@@ -199,105 +130,53 @@ var Mailer = /** @class */ (function () {
|
|
|
199
130
|
* @returns {Promise<string>} - The chosen template.
|
|
200
131
|
* @throws {Error} - If no template can be rendered with the provided data.
|
|
201
132
|
*/
|
|
202
|
-
|
|
203
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (!Array.isArray(templates)) return [3 /*break*/, 9];
|
|
210
|
-
_b.label = 1;
|
|
211
|
-
case 1:
|
|
212
|
-
_b.trys.push([1, 6, 7, 8]);
|
|
213
|
-
templates_1 = __values(templates), templates_1_1 = templates_1.next();
|
|
214
|
-
_b.label = 2;
|
|
215
|
-
case 2:
|
|
216
|
-
if (!!templates_1_1.done) return [3 /*break*/, 5];
|
|
217
|
-
template = templates_1_1.value;
|
|
218
|
-
return [4 /*yield*/, this.canRenderTemplate(template, data)];
|
|
219
|
-
case 3:
|
|
220
|
-
if (_b.sent())
|
|
221
|
-
return [2 /*return*/, template];
|
|
222
|
-
_b.label = 4;
|
|
223
|
-
case 4:
|
|
224
|
-
templates_1_1 = templates_1.next();
|
|
225
|
-
return [3 /*break*/, 2];
|
|
226
|
-
case 5: return [3 /*break*/, 8];
|
|
227
|
-
case 6:
|
|
228
|
-
e_3_1 = _b.sent();
|
|
229
|
-
e_3 = { error: e_3_1 };
|
|
230
|
-
return [3 /*break*/, 8];
|
|
231
|
-
case 7:
|
|
232
|
-
try {
|
|
233
|
-
if (templates_1_1 && !templates_1_1.done && (_a = templates_1.return)) _a.call(templates_1);
|
|
234
|
-
}
|
|
235
|
-
finally { if (e_3) throw e_3.error; }
|
|
236
|
-
return [7 /*endfinally*/];
|
|
237
|
-
case 8: return [3 /*break*/, 11];
|
|
238
|
-
case 9:
|
|
239
|
-
if (!templates) return [3 /*break*/, 11];
|
|
240
|
-
return [4 /*yield*/, this.canRenderTemplate(templates, data)];
|
|
241
|
-
case 10:
|
|
242
|
-
if (_b.sent())
|
|
243
|
-
return [2 /*return*/, templates];
|
|
244
|
-
_b.label = 11;
|
|
245
|
-
case 11: throw new Error("Could not render email with template ".concat(templates, " and following data. Please, check logs above! ") +
|
|
246
|
-
JSON.stringify(data, null, 2));
|
|
133
|
+
chooseTemplate(templates, data) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
if (Array.isArray(templates)) {
|
|
136
|
+
//For each template check if can render it
|
|
137
|
+
for (const template of templates) {
|
|
138
|
+
if (yield this.canRenderTemplate(template, data))
|
|
139
|
+
return template;
|
|
247
140
|
}
|
|
248
|
-
}
|
|
141
|
+
}
|
|
142
|
+
else if (templates) {
|
|
143
|
+
if (yield this.canRenderTemplate(templates, data))
|
|
144
|
+
return templates;
|
|
145
|
+
}
|
|
146
|
+
throw new Error(`Could not render email with template ${templates} and following data. Please, check logs above! ` +
|
|
147
|
+
JSON.stringify(data, null, 2));
|
|
249
148
|
});
|
|
250
|
-
}
|
|
149
|
+
}
|
|
251
150
|
/**
|
|
252
151
|
* Checks if a given email template can be rendered with the provided data.
|
|
253
152
|
* @param {string} template - The name of the email template.
|
|
254
153
|
* @param {object} data - The data to be used for rendering the template.
|
|
255
154
|
* @returns {Promise<boolean>} - A promise that resolves to true if the template can be rendered, false otherwise.
|
|
256
155
|
*/
|
|
257
|
-
|
|
258
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
259
|
-
|
|
260
|
-
return
|
|
261
|
-
switch (_a.label) {
|
|
262
|
-
case 0: return [4 /*yield*/, Mailer.renderTemplate("".concat(template, "/").concat(this.templateDefaultFile), data)];
|
|
263
|
-
case 1:
|
|
264
|
-
validRenderResp = _a.sent();
|
|
265
|
-
return [2 /*return*/, validRenderResp != null];
|
|
266
|
-
}
|
|
267
|
-
});
|
|
156
|
+
canRenderTemplate(template, data) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
const validRenderResp = yield Mailer.renderTemplate(`${template}/${this.templateDefaultFile}`, data);
|
|
159
|
+
return validRenderResp != null;
|
|
268
160
|
});
|
|
269
|
-
}
|
|
161
|
+
}
|
|
270
162
|
/**
|
|
271
163
|
* Renders the given template with the provided data using the Email class.
|
|
272
164
|
* @param {string} template - The name or path of the template to render.
|
|
273
165
|
* @param {object} data - The data object to pass to the template.
|
|
274
166
|
* @returns {Promise<boolean>} - A promise that resolves to true if the template was rendered successfully, false otherwise.
|
|
275
167
|
*/
|
|
276
|
-
|
|
277
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
return [4 /*yield*/, email.render("".concat(template), data)];
|
|
288
|
-
case 2:
|
|
289
|
-
validRenderResp = _a.sent();
|
|
290
|
-
return [3 /*break*/, 4];
|
|
291
|
-
case 3:
|
|
292
|
-
e_4 = _a.sent();
|
|
293
|
-
console.log("Error while checking renderability of email template ".concat(template), e_4);
|
|
294
|
-
return [3 /*break*/, 4];
|
|
295
|
-
case 4: return [2 /*return*/, validRenderResp];
|
|
296
|
-
}
|
|
297
|
-
});
|
|
168
|
+
static renderTemplate(template, data) {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
+
let validRenderResp = null;
|
|
171
|
+
try {
|
|
172
|
+
const email = new Email();
|
|
173
|
+
validRenderResp = yield email.render(`${template}`, data);
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
console.log(`Error while checking renderability of email template ${template}`, e);
|
|
177
|
+
}
|
|
178
|
+
return validRenderResp;
|
|
298
179
|
});
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
}());
|
|
302
|
-
exports.default = Mailer;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
303
182
|
//# sourceMappingURL=Mailer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mailer.js","sourceRoot":"","sources":["../../../src/Mailer/Mailer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Mailer.js","sourceRoot":"","sources":["../../../src/Mailer/Mailer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -19,59 +7,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
8
|
});
|
|
21
9
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
var client_sns_1 = require("@aws-sdk/client-sns");
|
|
51
|
-
var sha1 = require("sha1");
|
|
10
|
+
import { SNSClient, PublishCommand, } from '@aws-sdk/client-sns';
|
|
11
|
+
import * as sha1 from 'sha1';
|
|
52
12
|
//reusable client
|
|
53
13
|
/**
|
|
54
14
|
* A variable that holds the connection to the SNS client for publishing messages.
|
|
55
15
|
* @type {SNSClient | null}
|
|
56
16
|
*/
|
|
57
17
|
// eslint-disable-next-line no-var
|
|
58
|
-
|
|
18
|
+
let PUBLISHER_CONN = null;
|
|
59
19
|
/**
|
|
60
20
|
* The connection hash for the publisher. It is initially set to null.
|
|
61
21
|
* @type {string | null}
|
|
62
22
|
*/
|
|
63
23
|
// eslint-disable-next-line no-var
|
|
64
|
-
|
|
24
|
+
let PUBLISHER_CONN_HASH = null;
|
|
65
25
|
/**
|
|
66
26
|
* Represents a publisher that can publish messages to an SNS topic.
|
|
67
27
|
*/
|
|
68
|
-
|
|
28
|
+
export default class Publisher {
|
|
69
29
|
/**
|
|
70
30
|
* Constructs a new instance of the Publisher class.
|
|
71
31
|
* @param {PublisherConfig} [config] - The configuration object for the Publisher.
|
|
72
32
|
* @returns None
|
|
73
33
|
*/
|
|
74
|
-
|
|
34
|
+
constructor(config) {
|
|
75
35
|
if (config && config.region) {
|
|
76
36
|
this.region = config.region;
|
|
77
37
|
// console.debug(`Using region: ${this.region}`);
|
|
@@ -84,83 +44,59 @@ var Publisher = /** @class */ (function () {
|
|
|
84
44
|
* @param {object} [additionalProps] - Additional properties to include in the publish command.
|
|
85
45
|
* @returns {Promise<PublishCommandOutput>} - A promise that resolves to the response from the publish command.
|
|
86
46
|
*/
|
|
87
|
-
|
|
88
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
resp = _a.sent();
|
|
102
|
-
return [3 /*break*/, 4];
|
|
103
|
-
case 3:
|
|
104
|
-
e_1 = _a.sent();
|
|
105
|
-
console.error("Error while publishing into topic ".concat(topic, " with error: ").concat(e_1));
|
|
106
|
-
return [3 /*break*/, 4];
|
|
107
|
-
case 4:
|
|
108
|
-
console.debug('Publisher resp', resp);
|
|
109
|
-
return [2 /*return*/, resp];
|
|
110
|
-
}
|
|
111
|
-
});
|
|
47
|
+
publishOnTopic(messageObject, topic, additionalProps) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
let resp = undefined;
|
|
50
|
+
try {
|
|
51
|
+
this.connect();
|
|
52
|
+
//Send to SNS
|
|
53
|
+
const params = Object.assign({ Message: JSON.stringify(messageObject), TopicArn: topic }, (additionalProps ? additionalProps : {}));
|
|
54
|
+
resp = yield PUBLISHER_CONN.send(new PublishCommand(params));
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.error(`Error while publishing into topic ${topic} with error: ${e}`);
|
|
58
|
+
}
|
|
59
|
+
console.debug('Publisher resp', resp);
|
|
60
|
+
return resp;
|
|
112
61
|
});
|
|
113
|
-
}
|
|
62
|
+
}
|
|
114
63
|
/**
|
|
115
64
|
* Publishes a message on a specified topic.
|
|
116
65
|
* @param {string} message - The SMS message to publish.
|
|
117
66
|
* @param {string} phone - The phone number to publish the message to.
|
|
118
67
|
* @returns {Promise<PublishCommandOutput>} - A promise that resolves to the response from the publish command.
|
|
119
68
|
*/
|
|
120
|
-
|
|
121
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
resp = _a.sent();
|
|
138
|
-
return [3 /*break*/, 4];
|
|
139
|
-
case 3:
|
|
140
|
-
e_2 = _a.sent();
|
|
141
|
-
console.error("Error while publishing SMS ".concat(message, " with error: ").concat(e_2));
|
|
142
|
-
return [3 /*break*/, 4];
|
|
143
|
-
case 4:
|
|
144
|
-
console.debug('Publisher resp', resp);
|
|
145
|
-
return [2 /*return*/, resp];
|
|
146
|
-
}
|
|
147
|
-
});
|
|
69
|
+
publishSMS(message, phone) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
let resp = undefined;
|
|
72
|
+
try {
|
|
73
|
+
this.connect();
|
|
74
|
+
//Send to SNS
|
|
75
|
+
const params = {
|
|
76
|
+
Message: message,
|
|
77
|
+
PhoneNumber: phone,
|
|
78
|
+
};
|
|
79
|
+
resp = yield PUBLISHER_CONN.send(new PublishCommand(params));
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
console.error(`Error while publishing SMS ${message} with error: ${e}`);
|
|
83
|
+
}
|
|
84
|
+
console.debug('Publisher resp', resp);
|
|
85
|
+
return resp;
|
|
148
86
|
});
|
|
149
|
-
}
|
|
87
|
+
}
|
|
150
88
|
/**
|
|
151
89
|
* Establishes a connection to the SNS client if it does not already exist or if the region has changed.
|
|
152
90
|
* @returns None
|
|
153
91
|
*/
|
|
154
|
-
|
|
92
|
+
connect() {
|
|
155
93
|
if ((!PUBLISHER_CONN && !PUBLISHER_CONN_HASH) || PUBLISHER_CONN_HASH != sha1(this.region)) {
|
|
156
|
-
PUBLISHER_CONN = new
|
|
94
|
+
PUBLISHER_CONN = new SNSClient({
|
|
157
95
|
apiVersion: '2010-03-31',
|
|
158
96
|
region: this.region,
|
|
159
97
|
});
|
|
160
98
|
PUBLISHER_CONN_HASH = sha1(this.region).toString();
|
|
161
99
|
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
}());
|
|
165
|
-
exports.default = Publisher;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
166
102
|
//# sourceMappingURL=Publisher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../../src/Publisher/Publisher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../../src/Publisher/Publisher.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,SAAS,EACT,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,iBAAiB;AACjB;;;GAGG;AACH,kCAAkC;AAClC,IAAI,cAAc,GAAqB,IAAI,CAAA;AAC3C;;;GAGG;AACH,kCAAkC;AAClC,IAAI,mBAAmB,GAAkB,IAAI,CAAA;AAW7C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAQ5B;;;;OAIG;IACH,YAAY,MAAwB;QAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC3B,iDAAiD;QACnD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACG,cAAc,CAClB,aAAkB,EAClB,KAAa,EACb,eAAwB;;YAExB,IAAI,IAAI,GAAqC,SAAS,CAAA;YACtD,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,aAAa;gBACb,MAAM,MAAM,mBACV,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EACtC,QAAQ,EAAE,KAAK,IACZ,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5C,CAAA;gBACD,IAAI,GAAG,MAAM,cAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,qCAAqC,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAA;YAC9E,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAED;;;;;OAKG;IACG,UAAU,CAAC,OAAe,EAAE,KAAa;;YAC7C,IAAI,IAAI,GAAqC,SAAS,CAAA;YACtD,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,aAAa;gBACb,MAAM,MAAM,GAAwB;oBAClC,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,KAAK;iBACnB,CAAA;gBACD,IAAI,GAAG,MAAM,cAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAA;YACzE,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAED;;;OAGG;IACK,OAAO;QACb,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1F,cAAc,GAAG,IAAI,SAAS,CAAC;gBAC7B,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAA;YACF,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACpD,CAAC;IACH,CAAC;CACF"}
|