@creator.co/wapi 1.2.5 → 1.2.6
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/README.md +216 -5
- package/dist/index.d.ts +15 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json +6 -1
- package/dist/src/API/Request.d.ts +45 -82
- package/dist/src/API/Request.js +49 -77
- package/dist/src/API/Request.js.map +1 -1
- package/dist/src/API/Response.d.ts +94 -163
- package/dist/src/API/Response.js +101 -161
- package/dist/src/API/Response.js.map +1 -1
- package/dist/src/API/Utils.d.ts +21 -42
- package/dist/src/API/Utils.js +22 -43
- package/dist/src/API/Utils.js.map +1 -1
- package/dist/src/BaseEvent/EventProcessor.d.ts +32 -55
- package/dist/src/BaseEvent/EventProcessor.js +30 -38
- package/dist/src/BaseEvent/EventProcessor.js.map +1 -1
- package/dist/src/BaseEvent/Process.d.ts +20 -43
- package/dist/src/BaseEvent/Process.js +16 -27
- package/dist/src/BaseEvent/Process.js.map +1 -1
- package/dist/src/BaseEvent/Transaction.d.ts +94 -2
- package/dist/src/BaseEvent/Transaction.js +49 -4
- package/dist/src/BaseEvent/Transaction.js.map +1 -1
- package/dist/src/Config/Configuration.d.ts +48 -66
- package/dist/src/Config/Configuration.js +25 -42
- package/dist/src/Config/Configuration.js.map +1 -1
- package/dist/src/Config/EnvironmentVar.d.ts +30 -57
- package/dist/src/Config/EnvironmentVar.js +28 -41
- package/dist/src/Config/EnvironmentVar.js.map +1 -1
- package/dist/src/Crypto/Crypto.d.ts +17 -35
- package/dist/src/Crypto/Crypto.js +12 -21
- package/dist/src/Crypto/Crypto.js.map +1 -1
- package/dist/src/Crypto/JWT.d.ts +21 -32
- package/dist/src/Crypto/JWT.js +14 -22
- package/dist/src/Crypto/JWT.js.map +1 -1
- package/dist/src/Globals.d.ts +26 -94
- package/dist/src/Globals.js +26 -95
- package/dist/src/Globals.js.map +1 -1
- package/dist/src/Logger/Logger.d.ts +82 -105
- package/dist/src/Logger/Logger.js +111 -136
- package/dist/src/Logger/Logger.js.map +1 -1
- package/dist/src/Mailer/Mailer.d.ts +39 -75
- package/dist/src/Mailer/Mailer.js +36 -65
- package/dist/src/Mailer/Mailer.js.map +1 -1
- package/dist/src/Publisher/Publisher.d.ts +17 -25
- package/dist/src/Publisher/Publisher.js +21 -32
- package/dist/src/Publisher/Publisher.js.map +1 -1
- package/dist/src/Server/RouteResolver.d.ts +14 -22
- package/dist/src/Server/RouteResolver.js +21 -34
- package/dist/src/Server/RouteResolver.js.map +1 -1
- package/dist/src/Server/Router.d.ts +72 -51
- package/dist/src/Server/Router.js +8 -17
- package/dist/src/Server/Router.js.map +1 -1
- package/dist/src/Server/lib/ContainerServer.d.ts +15 -31
- package/dist/src/Server/lib/ContainerServer.js +13 -28
- package/dist/src/Server/lib/ContainerServer.js.map +1 -1
- package/dist/src/Server/lib/Server.d.ts +17 -32
- package/dist/src/Server/lib/Server.js +18 -28
- package/dist/src/Server/lib/Server.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandler.d.ts +5 -0
- package/dist/src/Server/lib/container/GenericHandler.js +16 -3
- package/dist/src/Server/lib/container/GenericHandler.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandlerEvent.d.ts +22 -37
- package/dist/src/Server/lib/container/GenericHandlerEvent.js +29 -41
- package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -1
- package/dist/src/Server/lib/container/HealthHandler.d.ts +6 -0
- package/dist/src/Server/lib/container/HealthHandler.js +6 -0
- package/dist/src/Server/lib/container/HealthHandler.js.map +1 -1
- package/dist/src/Server/lib/container/Proxy.d.ts +24 -52
- package/dist/src/Server/lib/container/Proxy.js +49 -50
- package/dist/src/Server/lib/container/Proxy.js.map +1 -1
- package/dist/src/Server/lib/container/Utils.d.ts +6 -10
- package/dist/src/Server/lib/container/Utils.js +6 -10
- package/dist/src/Server/lib/container/Utils.js.map +1 -1
- package/dist/src/Validation/Validator.d.ts +9 -13
- package/dist/src/Validation/Validator.js +8 -12
- package/dist/src/Validation/Validator.js.map +1 -1
- package/index.ts +15 -0
- package/package.json +6 -1
- package/src/API/Request.ts +66 -84
- package/src/API/Response.ts +144 -203
- package/src/API/Utils.ts +28 -44
- package/src/BaseEvent/EventProcessor.ts +52 -77
- package/src/BaseEvent/Process.ts +27 -52
- package/src/BaseEvent/Transaction.ts +100 -10
- package/src/Config/Configuration.ts +59 -76
- package/src/Config/EnvironmentVar.ts +39 -62
- package/src/Crypto/Crypto.ts +20 -36
- package/src/Crypto/JWT.ts +31 -35
- package/src/Globals.ts +28 -96
- package/src/Logger/Logger.ts +141 -160
- package/src/Mailer/Mailer.ts +43 -76
- package/src/Publisher/Publisher.ts +31 -40
- package/src/Server/RouteResolver.ts +31 -52
- package/src/Server/Router.ts +75 -54
- package/src/Server/lib/ContainerServer.ts +20 -32
- package/src/Server/lib/Server.ts +19 -34
- package/src/Server/lib/container/GenericHandler.ts +17 -3
- package/src/Server/lib/container/GenericHandlerEvent.ts +44 -54
- package/src/Server/lib/container/HealthHandler.ts +6 -0
- package/src/Server/lib/container/Proxy.ts +37 -57
- package/src/Server/lib/container/Utils.ts +7 -10
- package/src/Validation/Validator.ts +11 -13
- package/tests/API/Response.test.ts +55 -56
- package/tests/BaseEvent/EventProcessor.test.ts +49 -50
- package/tests/BaseEvent/Process.test.ts +2 -2
- package/tests/BaseEvent/Transaction.test.ts +48 -49
- package/tests/Config/Config.test.ts +27 -27
- package/tests/Config/EnvironmentVar.test.ts +54 -18
- package/tests/Publisher/Publisher.test.ts +3 -3
- package/tests/Server/lib/ContainerServer.test.ts +21 -22
- package/tests/Server/lib/container/GenericHandler.test.ts +31 -32
- package/tests/Server/lib/container/GenericHandlerEvent.test.ts +2 -2
- package/tests/Server/lib/container/HealthHandler.test.ts +6 -7
- package/tests/Server/lib/container/Proxy.test.ts +37 -35
- package/tsconfig.json +1 -1
|
@@ -62,27 +62,16 @@ var SES = require("@aws-sdk/client-ses");
|
|
|
62
62
|
var credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
|
|
63
63
|
var Email = require("email-templates");
|
|
64
64
|
var nodemailer = require("nodemailer");
|
|
65
|
-
/**
|
|
66
|
-
* ${1:Description placeholder}
|
|
67
|
-
*
|
|
68
|
-
* @export
|
|
69
|
-
* @class Mailer
|
|
70
|
-
* @typedef {Mailer}
|
|
71
|
-
*/
|
|
72
65
|
var Mailer = /** @class */ (function () {
|
|
73
66
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* @
|
|
77
|
-
* @
|
|
78
|
-
* @param {string} region
|
|
67
|
+
* Constructs a new instance of the EmailSender class.
|
|
68
|
+
* @param {string} defaultFrom - The default "from" email address.
|
|
69
|
+
* @param {string} region - The AWS region to use for sending emails.
|
|
70
|
+
* @returns None
|
|
79
71
|
*/
|
|
80
72
|
function Mailer(defaultFrom, region) {
|
|
81
73
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* @private
|
|
85
|
-
* @readonly
|
|
74
|
+
* The default file template for the application.
|
|
86
75
|
* @type {string}
|
|
87
76
|
*/
|
|
88
77
|
this.templateDefaultFile = 'html';
|
|
@@ -99,19 +88,14 @@ var Mailer = /** @class */ (function () {
|
|
|
99
88
|
});
|
|
100
89
|
}
|
|
101
90
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* @
|
|
105
|
-
* @
|
|
106
|
-
* @param {
|
|
107
|
-
* @param {string}
|
|
108
|
-
* @param {string}
|
|
109
|
-
* @param {
|
|
110
|
-
* @param {?string} [optionalFrom]
|
|
111
|
-
* @param {?string} [optionalReplyTo]
|
|
112
|
-
* @param {?any[]} [optionalAttachments]
|
|
113
|
-
* @param {?Email.NodeMailerTransportOptions} [optionalTransport]
|
|
114
|
-
* @returns {unknown}
|
|
91
|
+
* Sends a raw email with the specified parameters.
|
|
92
|
+
* @param {string | Array<string>} to - The recipient(s) of the email.
|
|
93
|
+
* @param {string} htmlMessage - The HTML content of the email.
|
|
94
|
+
* @param {string} subject - The subject of the email.
|
|
95
|
+
* @param {string | Array<string>} [optionalCC] - The optional CC recipient(s) of the email.
|
|
96
|
+
* @param {string} [optionalFrom] - The optional sender of the email. If not provided, the default sender will be used.
|
|
97
|
+
* @param {string} [optionalReplyTo] - The optional reply-to address for the email.
|
|
98
|
+
* @param {any[]} [optionalAttachments] - The optional attachments to include
|
|
115
99
|
*/
|
|
116
100
|
Mailer.prototype.sendRawEmail = function (to, htmlMessage, subject, optionalCC, optionalFrom, optionalReplyTo,
|
|
117
101
|
// TODO: improve attachment type -> Attachment
|
|
@@ -145,19 +129,14 @@ var Mailer = /** @class */ (function () {
|
|
|
145
129
|
});
|
|
146
130
|
};
|
|
147
131
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* @
|
|
151
|
-
* @
|
|
152
|
-
* @param {
|
|
153
|
-
* @param {
|
|
154
|
-
* @param {
|
|
155
|
-
* @param {
|
|
156
|
-
* @param {?string} [optionalFrom]
|
|
157
|
-
* @param {?string} [optionalReplyTo]
|
|
158
|
-
* @param {?any[]} [optionalAttachments]
|
|
159
|
-
* @param {?Email.NodeMailerTransportOptions} [optionalTransport]
|
|
160
|
-
* @returns {unknown}
|
|
132
|
+
* Sends a templated email to the specified recipients.
|
|
133
|
+
* @param {string | Array<string>} to - The email address(es) of the recipient(s).
|
|
134
|
+
* @param {string | Array<string>} templates - The template(s) to use for the email.
|
|
135
|
+
* @param {object} data - The data to be used in the email template.
|
|
136
|
+
* @param {string | Array<string>} [optionalCC] - The email address(es) to CC.
|
|
137
|
+
* @param {string} [optionalFrom] - The email address to send the email from.
|
|
138
|
+
* @param {string} [optionalReplyTo] - The email address to set as the reply-to address.
|
|
139
|
+
* @param {any[]} [optionalAttachments] - An array
|
|
161
140
|
*/
|
|
162
141
|
Mailer.prototype.sendTemplatedEmail = function (to, templates, data, optionalCC, optionalFrom, optionalReplyTo,
|
|
163
142
|
// TODO: improve attachment type -> Attachment
|
|
@@ -194,14 +173,12 @@ var Mailer = /** @class */ (function () {
|
|
|
194
173
|
});
|
|
195
174
|
};
|
|
196
175
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* @
|
|
200
|
-
* @param {string}
|
|
201
|
-
* @param {
|
|
202
|
-
* @
|
|
203
|
-
* @param {string} password
|
|
204
|
-
* @returns {Email.NodeMailerTransportOptions}
|
|
176
|
+
* Creates a new SMTP transporter for sending emails using NodeMailer.
|
|
177
|
+
* @param {string} host - The SMTP server host.
|
|
178
|
+
* @param {number} portNumber - The port number to connect to the SMTP server.
|
|
179
|
+
* @param {string} user - The username for authentication with the SMTP server.
|
|
180
|
+
* @param {string} password - The password for authentication with the SMTP server.
|
|
181
|
+
* @returns {Email.NodeMailerTransportOptions} - The SMTP transporter object.
|
|
205
182
|
*/
|
|
206
183
|
Mailer.prototype.newSMTPTransporter = function (host, portNumber, user, password) {
|
|
207
184
|
var smtpTransporter = nodemailer.createTransport({
|
|
@@ -215,15 +192,12 @@ var Mailer = /** @class */ (function () {
|
|
|
215
192
|
});
|
|
216
193
|
return smtpTransporter;
|
|
217
194
|
};
|
|
218
|
-
/* private */
|
|
219
195
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* @
|
|
223
|
-
* @
|
|
224
|
-
* @
|
|
225
|
-
* @param {object} data
|
|
226
|
-
* @returns {Promise<string>}
|
|
196
|
+
* 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
|
+
* @param {string | Array<string>} templates - The template(s) to choose from.
|
|
198
|
+
* @param {object} data - The data to be used for rendering the template.
|
|
199
|
+
* @returns {Promise<string>} - The chosen template.
|
|
200
|
+
* @throws {Error} - If no template can be rendered with the provided data.
|
|
227
201
|
*/
|
|
228
202
|
Mailer.prototype.chooseTemplate = function (templates, data) {
|
|
229
203
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -275,13 +249,10 @@ var Mailer = /** @class */ (function () {
|
|
|
275
249
|
});
|
|
276
250
|
};
|
|
277
251
|
/**
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
* @
|
|
281
|
-
* @
|
|
282
|
-
* @param {string} template
|
|
283
|
-
* @param {object} data
|
|
284
|
-
* @returns {Promise<boolean>}
|
|
252
|
+
* Checks if a given email template can be rendered with the provided data.
|
|
253
|
+
* @param {string} template - The name of the email template.
|
|
254
|
+
* @param {object} data - The data to be used for rendering the template.
|
|
255
|
+
* @returns {Promise<boolean>} - A promise that resolves to true if the template can be rendered, false otherwise.
|
|
285
256
|
*/
|
|
286
257
|
Mailer.prototype.canRenderTemplate = function (template, data) {
|
|
287
258
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mailer.js","sourceRoot":"","sources":["../../../src/Mailer/Mailer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAC1C,8EAAmE;AACnE,uCAAwC;AACxC,uCAAwC;AAGxC
|
|
1
|
+
{"version":3,"file":"Mailer.js","sourceRoot":"","sources":["../../../src/Mailer/Mailer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,39 @@
|
|
|
1
1
|
import { PublishCommandOutput } from '@aws-sdk/client-sns';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
6
|
-
* @typedef {PublisherConfig}
|
|
3
|
+
* Represents the configuration options for a publisher.
|
|
4
|
+
* @typedef {Object} PublisherConfig
|
|
5
|
+
* @property {string} [region] - The region where the publisher is located.
|
|
7
6
|
*/
|
|
8
7
|
export type PublisherConfig = {
|
|
9
8
|
region?: string;
|
|
10
9
|
};
|
|
11
10
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* @export
|
|
15
|
-
* @class Publisher
|
|
16
|
-
* @typedef {Publisher}
|
|
11
|
+
* Represents a publisher that can publish messages to an SNS topic.
|
|
17
12
|
*/
|
|
18
13
|
export default class Publisher {
|
|
19
14
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
15
|
+
* The region of the object or entity.
|
|
22
16
|
* @private
|
|
23
17
|
* @type {string}
|
|
24
18
|
*/
|
|
25
19
|
private region;
|
|
26
20
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* @
|
|
30
|
-
* @param {?PublisherConfig} [config]
|
|
21
|
+
* Constructs a new instance of the Publisher class.
|
|
22
|
+
* @param {PublisherConfig} [config] - The configuration object for the Publisher.
|
|
23
|
+
* @returns None
|
|
31
24
|
*/
|
|
32
25
|
constructor(config?: PublisherConfig);
|
|
33
26
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* @
|
|
37
|
-
* @param {
|
|
38
|
-
* @
|
|
39
|
-
* @param {?object} [additionalProps]
|
|
40
|
-
* @returns {Promise<PublishCommandOutput>}
|
|
27
|
+
* Publishes a message on a specified topic.
|
|
28
|
+
* @param {any} messageObject - The message object to be published.
|
|
29
|
+
* @param {string} topic - The ARN of the topic to publish the message to.
|
|
30
|
+
* @param {object} [additionalProps] - Additional properties to include in the publish command.
|
|
31
|
+
* @returns {Promise<PublishCommandOutput>} - A promise that resolves to the response from the publish command.
|
|
41
32
|
*/
|
|
42
|
-
publishOnTopic(messageObject: any, topic: string, additionalProps?: object): Promise<PublishCommandOutput>;
|
|
33
|
+
publishOnTopic(messageObject: any, topic: string, additionalProps?: object): Promise<PublishCommandOutput | undefined>;
|
|
43
34
|
/**
|
|
44
|
-
*
|
|
35
|
+
* Establishes a connection to the SNS client if it does not already exist or if the region has changed.
|
|
36
|
+
* @returns None
|
|
45
37
|
*/
|
|
46
|
-
|
|
38
|
+
private connect;
|
|
47
39
|
}
|
|
@@ -50,34 +50,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
50
50
|
var client_sns_1 = require("@aws-sdk/client-sns");
|
|
51
51
|
var sha1 = require("sha1");
|
|
52
52
|
//reusable client
|
|
53
|
-
// eslint-disable-next-line no-var
|
|
54
53
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @type {(SNSClient | null)}
|
|
54
|
+
* A variable that holds the connection to the SNS client for publishing messages.
|
|
55
|
+
* @type {SNSClient | null}
|
|
58
56
|
*/
|
|
59
|
-
var PUBLISHER_CONN = null;
|
|
60
57
|
// eslint-disable-next-line no-var
|
|
58
|
+
var PUBLISHER_CONN = null;
|
|
61
59
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* @type {(string | null)}
|
|
60
|
+
* The connection hash for the publisher. It is initially set to null.
|
|
61
|
+
* @type {string | null}
|
|
65
62
|
*/
|
|
63
|
+
// eslint-disable-next-line no-var
|
|
66
64
|
var PUBLISHER_CONN_HASH = null;
|
|
67
|
-
//
|
|
68
65
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* @export
|
|
72
|
-
* @class Publisher
|
|
73
|
-
* @typedef {Publisher}
|
|
66
|
+
* Represents a publisher that can publish messages to an SNS topic.
|
|
74
67
|
*/
|
|
75
68
|
var Publisher = /** @class */ (function () {
|
|
76
69
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* @
|
|
80
|
-
* @param {?PublisherConfig} [config]
|
|
70
|
+
* Constructs a new instance of the Publisher class.
|
|
71
|
+
* @param {PublisherConfig} [config] - The configuration object for the Publisher.
|
|
72
|
+
* @returns None
|
|
81
73
|
*/
|
|
82
74
|
function Publisher(config) {
|
|
83
75
|
if (config && config.region) {
|
|
@@ -85,15 +77,12 @@ var Publisher = /** @class */ (function () {
|
|
|
85
77
|
// console.debug(`Using region: ${this.region}`);
|
|
86
78
|
}
|
|
87
79
|
}
|
|
88
|
-
/* Public */
|
|
89
80
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* @
|
|
93
|
-
* @param {
|
|
94
|
-
* @
|
|
95
|
-
* @param {?object} [additionalProps]
|
|
96
|
-
* @returns {Promise<PublishCommandOutput>}
|
|
81
|
+
* Publishes a message on a specified topic.
|
|
82
|
+
* @param {any} messageObject - The message object to be published.
|
|
83
|
+
* @param {string} topic - The ARN of the topic to publish the message to.
|
|
84
|
+
* @param {object} [additionalProps] - Additional properties to include in the publish command.
|
|
85
|
+
* @returns {Promise<PublishCommandOutput>} - A promise that resolves to the response from the publish command.
|
|
97
86
|
*/
|
|
98
87
|
Publisher.prototype.publishOnTopic = function (messageObject, topic, additionalProps) {
|
|
99
88
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -101,13 +90,13 @@ var Publisher = /** @class */ (function () {
|
|
|
101
90
|
return __generator(this, function (_a) {
|
|
102
91
|
switch (_a.label) {
|
|
103
92
|
case 0:
|
|
104
|
-
resp =
|
|
93
|
+
resp = undefined;
|
|
105
94
|
_a.label = 1;
|
|
106
95
|
case 1:
|
|
107
96
|
_a.trys.push([1, 3, , 4]);
|
|
108
|
-
this.
|
|
97
|
+
this.connect();
|
|
109
98
|
params = __assign({ Message: JSON.stringify(messageObject), TopicArn: topic }, (additionalProps ? additionalProps : {}));
|
|
110
|
-
return [4 /*yield*/, PUBLISHER_CONN.send(new client_sns_1.PublishCommand(params))];
|
|
99
|
+
return [4 /*yield*/, (PUBLISHER_CONN === null || PUBLISHER_CONN === void 0 ? void 0 : PUBLISHER_CONN.send(new client_sns_1.PublishCommand(params)))];
|
|
111
100
|
case 2:
|
|
112
101
|
resp = _a.sent();
|
|
113
102
|
return [3 /*break*/, 4];
|
|
@@ -122,11 +111,11 @@ var Publisher = /** @class */ (function () {
|
|
|
122
111
|
});
|
|
123
112
|
});
|
|
124
113
|
};
|
|
125
|
-
/* Private */
|
|
126
114
|
/**
|
|
127
|
-
*
|
|
115
|
+
* Establishes a connection to the SNS client if it does not already exist or if the region has changed.
|
|
116
|
+
* @returns None
|
|
128
117
|
*/
|
|
129
|
-
Publisher.prototype.
|
|
118
|
+
Publisher.prototype.connect = function () {
|
|
130
119
|
if ((!PUBLISHER_CONN && !PUBLISHER_CONN_HASH) || PUBLISHER_CONN_HASH != sha1(this.region)) {
|
|
131
120
|
PUBLISHER_CONN = new client_sns_1.SNSClient({
|
|
132
121
|
apiVersion: '2010-03-31',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../../src/Publisher/Publisher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAK4B;AAC5B,2BAA4B;AAC5B,iBAAiB;AACjB,kCAAkC;AAClC
|
|
1
|
+
{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../../src/Publisher/Publisher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAK4B;AAC5B,2BAA4B;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;IAQE;;;;OAIG;IACH,mBAAY,MAAwB;QAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC3B,iDAAiD;SAClD;IACH,CAAC;IAED;;;;;;OAMG;IACG,kCAAc,GAApB,UACE,aAAkB,EAClB,KAAa,EACb,eAAwB;;;;;;wBAEpB,IAAI,GAAqC,SAAS,CAAA;;;;wBAEpD,IAAI,CAAC,OAAO,EAAE,CAAA;wBAER,MAAM,cACV,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;wBACM,qBAAM,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,CAAC,IAAI,2BAAc,CAAC,MAAM,CAAC,CAAC,CAAA,EAAA;;wBAA7D,IAAI,GAAG,SAAsD,CAAA;;;;wBAE7D,OAAO,CAAC,KAAK,CAAC,4CAAqC,KAAK,0BAAgB,GAAC,CAAE,CAAC,CAAA;;;wBAE9E,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;wBACrC,sBAAO,IAAI,EAAA;;;;KACZ;IAED;;;OAGG;IACK,2BAAO,GAAf;QACE,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzF,cAAc,GAAG,IAAI,sBAAS,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;SACnD;IACH,CAAC;IACH,gBAAC;AAAD,CAAC,AA9DD,IA8DC"}
|
|
@@ -1,41 +1,33 @@
|
|
|
1
1
|
import { Route, RouterConfig } from './Router';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @export
|
|
3
|
+
* A class that resolves routes based on the provided configuration.
|
|
6
4
|
* @class RouteResolver
|
|
7
|
-
* @typedef {RouteResolver}
|
|
8
5
|
*/
|
|
9
6
|
export default class RouteResolver {
|
|
10
7
|
readonly config: RouterConfig;
|
|
11
8
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
15
|
-
* @type {{ [method: string]: Routes }\}
|
|
9
|
+
* An object that maps HTTP methods to their corresponding routes.
|
|
10
|
+
* @property {object} routes - The routes object.
|
|
11
|
+
* @property {Routes} routes.method - The routes for the specified HTTP method.
|
|
16
12
|
*/
|
|
17
13
|
private routes;
|
|
18
14
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* @
|
|
22
|
-
* @param {RouterConfig} config
|
|
15
|
+
* Constructs a new instance of the Router class with the given configuration.
|
|
16
|
+
* @param {RouterConfig} config - The configuration object for the router.
|
|
17
|
+
* @returns None
|
|
23
18
|
*/
|
|
24
19
|
constructor(config: RouterConfig);
|
|
25
20
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @
|
|
29
|
-
* @
|
|
30
|
-
* @param {string} path
|
|
31
|
-
* @returns {(Route | undefined)}
|
|
21
|
+
* Resolves a route based on the given HTTP method and path.
|
|
22
|
+
* @param {string} method - The HTTP method of the request.
|
|
23
|
+
* @param {string} path - The path of the request.
|
|
24
|
+
* @returns {Route | undefined} - The resolved route or undefined if no route is found.
|
|
32
25
|
*/
|
|
33
26
|
resolveRoute(method: string, path: string): Route | undefined;
|
|
34
27
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @
|
|
38
|
-
* @param {RouterConfig} config
|
|
28
|
+
* Builds the routes for the router based on the given configuration.
|
|
29
|
+
* @param {RouterConfig} config - The router configuration object.
|
|
30
|
+
* @returns None
|
|
39
31
|
*/
|
|
40
32
|
private buildRoutes;
|
|
41
33
|
}
|
|
@@ -12,26 +12,22 @@ var __values = (this && this.__values) || function(o) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @class Routes
|
|
18
|
-
* @typedef {Routes}
|
|
15
|
+
* Represents a collection of routes that can be added and resolved.
|
|
19
16
|
*/
|
|
20
17
|
var Routes = /** @class */ (function () {
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
19
|
+
* Initializes a new instance of the class.
|
|
24
20
|
* @constructor
|
|
25
21
|
*/
|
|
26
22
|
function Routes() {
|
|
27
23
|
this.next = {};
|
|
28
24
|
}
|
|
29
25
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @
|
|
33
|
-
* @
|
|
34
|
-
* @
|
|
26
|
+
* Adds a route to the routing system.
|
|
27
|
+
* @param {Route} route - The route to add.
|
|
28
|
+
* @param {string[]} parts - The parts of the route path.
|
|
29
|
+
* @returns None
|
|
30
|
+
* @throws {Error} If a duplicate route is detected.
|
|
35
31
|
*/
|
|
36
32
|
Routes.prototype.addRoute = function (route, parts) {
|
|
37
33
|
var first = parts.shift();
|
|
@@ -52,11 +48,9 @@ var Routes = /** @class */ (function () {
|
|
|
52
48
|
}
|
|
53
49
|
};
|
|
54
50
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
58
|
-
* @param {string[]} parts
|
|
59
|
-
* @returns {Route}
|
|
51
|
+
* Resolves a route based on the given parts.
|
|
52
|
+
* @param {string[]} parts - An array of route parts.
|
|
53
|
+
* @returns {Route} The resolved route.
|
|
60
54
|
*/
|
|
61
55
|
Routes.prototype.resolveRoute = function (parts) {
|
|
62
56
|
var _a;
|
|
@@ -72,18 +66,14 @@ var Routes = /** @class */ (function () {
|
|
|
72
66
|
return Routes;
|
|
73
67
|
}());
|
|
74
68
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* @export
|
|
69
|
+
* A class that resolves routes based on the provided configuration.
|
|
78
70
|
* @class RouteResolver
|
|
79
|
-
* @typedef {RouteResolver}
|
|
80
71
|
*/
|
|
81
72
|
var RouteResolver = /** @class */ (function () {
|
|
82
73
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* @
|
|
86
|
-
* @param {RouterConfig} config
|
|
74
|
+
* Constructs a new instance of the Router class with the given configuration.
|
|
75
|
+
* @param {RouterConfig} config - The configuration object for the router.
|
|
76
|
+
* @returns None
|
|
87
77
|
*/
|
|
88
78
|
function RouteResolver(config) {
|
|
89
79
|
this.config = config;
|
|
@@ -91,12 +81,10 @@ var RouteResolver = /** @class */ (function () {
|
|
|
91
81
|
this.buildRoutes(config);
|
|
92
82
|
}
|
|
93
83
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* @
|
|
97
|
-
* @
|
|
98
|
-
* @param {string} path
|
|
99
|
-
* @returns {(Route | undefined)}
|
|
84
|
+
* Resolves a route based on the given HTTP method and path.
|
|
85
|
+
* @param {string} method - The HTTP method of the request.
|
|
86
|
+
* @param {string} path - The path of the request.
|
|
87
|
+
* @returns {Route | undefined} - The resolved route or undefined if no route is found.
|
|
100
88
|
*/
|
|
101
89
|
RouteResolver.prototype.resolveRoute = function (method, path) {
|
|
102
90
|
var _a;
|
|
@@ -105,10 +93,9 @@ var RouteResolver = /** @class */ (function () {
|
|
|
105
93
|
return (_a = this.routes[method]) === null || _a === void 0 ? void 0 : _a.resolveRoute(parts);
|
|
106
94
|
};
|
|
107
95
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* @
|
|
111
|
-
* @param {RouterConfig} config
|
|
96
|
+
* Builds the routes for the router based on the given configuration.
|
|
97
|
+
* @param {RouterConfig} config - The router configuration object.
|
|
98
|
+
* @returns None
|
|
112
99
|
*/
|
|
113
100
|
RouteResolver.prototype.buildRoutes = function (config) {
|
|
114
101
|
var e_1, _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["../../../src/Server/RouteResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA
|
|
1
|
+
{"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["../../../src/Server/RouteResolver.ts"],"names":[],"mappings":"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"}
|