@triproject/nestjs-core 1.0.29 → 1.0.30
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/bootstrap.js +39 -1
- package/dist/config.js +257 -1
- package/dist/controllers/controller.js +53 -1
- package/dist/drivers/cache/cache.js +79 -1
- package/dist/drivers/cache/cache.module.js +30 -1
- package/dist/drivers/cache/index.js +14 -1
- package/dist/drivers/cache/redis.js +76 -1
- package/dist/drivers/db/db.helper.d.ts +1 -1
- package/dist/drivers/db/db.helper.js +276 -1
- package/dist/drivers/db/db.module.js +64 -1
- package/dist/drivers/db/db.service.js +52 -1
- package/dist/drivers/db/index.js +14 -1
- package/dist/drivers/db/migration.js +119 -1
- package/dist/drivers/db/repository.js +258 -1
- package/dist/drivers/encryptions/encryption.js +55 -1
- package/dist/drivers/encryptions/encryption.module.js +34 -1
- package/dist/drivers/encryptions/index.js +14 -1
- package/dist/drivers/encryptions/jwt.js +62 -1
- package/dist/drivers/encryptions/password-hash.js +48 -1
- package/dist/drivers/encryptions/snap.signature.js +111 -1
- package/dist/drivers/logger/app.logger.js +121 -2
- package/dist/drivers/logger/cloudwatch.js +73 -1
- package/dist/drivers/logger/index.js +12 -1
- package/dist/drivers/logger/logger.contract.js +29 -1
- package/dist/drivers/logger/logger.driver.js +49 -1
- package/dist/drivers/logger/slack.logger.js +42 -1
- package/dist/drivers/mail/index.js +14 -1
- package/dist/drivers/mail/mail-template.js +39 -6
- package/dist/drivers/mail/mail.config.js +10 -1
- package/dist/drivers/mail/mail.js +58 -13
- package/dist/drivers/mail/mail.module.js +36 -1
- package/dist/drivers/mail/mail.queue.js +45 -1
- package/dist/drivers/mail/mailer.js +64 -1
- package/dist/drivers/message-broker/index.js +14 -1
- package/dist/drivers/message-broker/kafka.js +104 -1
- package/dist/drivers/message-broker/message-broker.contract.js +24 -1
- package/dist/drivers/message-broker/message-broker.module.js +28 -1
- package/dist/drivers/message-broker/message.broker.js +67 -1
- package/dist/drivers/message-broker/rabbitmq.js +115 -1
- package/dist/drivers/notifications/index.js +14 -1
- package/dist/drivers/notifications/notification.config.js +10 -1
- package/dist/drivers/notifications/notification.module.js +34 -1
- package/dist/drivers/notifications/notification.queue.js +45 -1
- package/dist/drivers/notifications/push-notification.js +81 -1
- package/dist/drivers/notifications/slack.js +74 -1
- package/dist/drivers/queues/app.queue.js +77 -1
- package/dist/drivers/queues/index.js +14 -1
- package/dist/drivers/queues/queue.module.js +51 -1
- package/dist/drivers/secret-manager/aws-secret-manager.js +40 -1
- package/dist/drivers/secret-manager/index.js +50 -1
- package/dist/drivers/storage/csv.storage.js +71 -1
- package/dist/drivers/storage/excel.storage.js +57 -1
- package/dist/drivers/storage/index.js +14 -1
- package/dist/drivers/storage/local.storage.js +94 -1
- package/dist/drivers/storage/minio.storage.js +82 -1
- package/dist/drivers/storage/s3-storage.js +122 -1
- package/dist/drivers/storage/storage.contract.js +31 -1
- package/dist/drivers/storage/storage.module.js +32 -1
- package/dist/drivers/storage/storage.service.js +59 -1
- package/dist/helpers/exception.helper.js +132 -1
- package/dist/helpers/http.helper.js +163 -1
- package/dist/helpers/swagger.helper.js +474 -1
- package/dist/index.js +14 -1
- package/dist/types.d.js +4 -1
- package/dist/utils/redlock.js +51 -1
- package/dist/utils/throttle.js +68 -1
- package/dist/utils/totp.js +56 -1
- package/package.json +1 -1
|
@@ -1,2 +1,121 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "AppLogger", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return AppLogger;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _common = require("@nestjs/common"), _helpers = require("@triproject/helpers"), _util = require("util"), _config = require("../../config"), _loggercontract = require("./logger.contract"), _loggerdriver = require("./logger.driver");
|
|
11
|
+
let AppLogger = class AppLogger extends _common.ConsoleLogger {
|
|
12
|
+
context;
|
|
13
|
+
LOG_STACKS = 5;
|
|
14
|
+
constructor(context = ''){
|
|
15
|
+
super(context), this.context = context;
|
|
16
|
+
}
|
|
17
|
+
excludeContexts = [
|
|
18
|
+
'RoutesResolver',
|
|
19
|
+
'InstanceLoader',
|
|
20
|
+
'RouterExplorer',
|
|
21
|
+
'Nest Application',
|
|
22
|
+
'Module',
|
|
23
|
+
'NestApplication',
|
|
24
|
+
'NestFactory'
|
|
25
|
+
];
|
|
26
|
+
_excludeContext(context) {
|
|
27
|
+
return this.excludeContexts.includes(context);
|
|
28
|
+
}
|
|
29
|
+
_sanitizePolicyData(object) {
|
|
30
|
+
if (object) if (Array.isArray(object)) return object.map((d)=>'object' != typeof d ? d : this._sanitizePolicyData(d));
|
|
31
|
+
else return Object.keys(object).reduce((acc, key)=>{
|
|
32
|
+
let value = object[key];
|
|
33
|
+
return _helpers.sanitizeRequests.includes(key) ? value = '***' : 'object' == typeof value && (value = this._sanitizePolicyData(value)), {
|
|
34
|
+
...acc,
|
|
35
|
+
[key]: value
|
|
36
|
+
};
|
|
37
|
+
}, {});
|
|
38
|
+
}
|
|
39
|
+
_formatBgLevel(level, ...args) {
|
|
40
|
+
let msg = args.join(' ╱ ');
|
|
41
|
+
switch(level){
|
|
42
|
+
case 'log':
|
|
43
|
+
default:
|
|
44
|
+
return (0, _loggercontract.logInfoBg)(msg);
|
|
45
|
+
case 'warn':
|
|
46
|
+
return (0, _loggercontract.logWarnBg)(msg);
|
|
47
|
+
case 'error':
|
|
48
|
+
case 'fatal':
|
|
49
|
+
return (0, _loggercontract.logErrorBg)(msg);
|
|
50
|
+
case 'debug':
|
|
51
|
+
return (0, _loggercontract.logDebugBg)(msg);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
_formatException(error) {
|
|
55
|
+
let stacks = (error?.stack ?? '')?.split('\n').map((o)=>o.trim().replace?.(error.name + ': ', ''));
|
|
56
|
+
return [
|
|
57
|
+
'development',
|
|
58
|
+
'local',
|
|
59
|
+
'staging'
|
|
60
|
+
].includes(_config.NODE_ENV) || (stacks = stacks.slice(0, this.LOG_STACKS)), (error?.name ?? 'UnknownErrorException') + ' ' + stacks.join(`\n`);
|
|
61
|
+
}
|
|
62
|
+
_parseMessage(arg) {
|
|
63
|
+
return arg instanceof Error ? [
|
|
64
|
+
'error',
|
|
65
|
+
this._formatException(arg)
|
|
66
|
+
] : 'object' == typeof arg ? [
|
|
67
|
+
'object',
|
|
68
|
+
JSON.stringify(this._sanitizePolicyData(arg), null, 2)
|
|
69
|
+
] : [
|
|
70
|
+
'string',
|
|
71
|
+
arg?.toString()
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
_mapLog(level, ...args) {
|
|
75
|
+
if (this._excludeContext(this.context) || void 0 !== args[1] && this.excludeContexts.some((d)=>args[1] === d)) return;
|
|
76
|
+
let message = [];
|
|
77
|
+
for (let arg of args?.flat()?.flat())arg && message.push(this._parseMessage(arg));
|
|
78
|
+
return {
|
|
79
|
+
level,
|
|
80
|
+
env: _config.NODE_ENV.toUpperCase(),
|
|
81
|
+
context: this.context ?? 'App Logger',
|
|
82
|
+
timestamp: (0, _helpers.dateUtil)().utc().toISOString(),
|
|
83
|
+
host: _loggerdriver.loggerDriver.host?.substring(0, 20),
|
|
84
|
+
message
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
_formatConsoleError(error) {
|
|
88
|
+
return error.split('\n').map((d)=>d.endsWith('Exception') ? d.replace(/(.*)Exception(.*)/, (0, _loggercontract.logErrorBg)('$1Exception') + (0, _loggercontract.logError)('$2')) : (0, _loggercontract.logError)(d)).join('\n│ ');
|
|
89
|
+
}
|
|
90
|
+
_console(logMeta) {
|
|
91
|
+
return console.log('\n' + (this._formatBgLevel(logMeta.level, logMeta.timestamp, logMeta.host?.substring(0, 20), 'LOG' === logMeta.level.toUpperCase() ? 'INFO' : logMeta.level.toUpperCase(), logMeta?.context) + (0, _util.styleText)('reset', " ") + logMeta.message.map(([type, value])=>{
|
|
92
|
+
if ('function' != typeof value) return 'error' === type ? (0, _loggercontract.logError)(this._formatConsoleError(value)) : 'object' === type ? (0, _loggercontract.logWarn)((0, _loggercontract.logWarnBg)('Object') + ' ' + value.split('\n').map(_loggercontract.logWarn).join('\n ')) : value;
|
|
93
|
+
}).filter((d)=>d).join('\n ')));
|
|
94
|
+
}
|
|
95
|
+
log(...args) {
|
|
96
|
+
let logMeta = this._mapLog('log', ...args);
|
|
97
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.log(logMeta));
|
|
98
|
+
}
|
|
99
|
+
error(...args) {
|
|
100
|
+
if ('DEVELOPMENT' === _config.NODE_ENV.toUpperCase()) return void console.error('\x1b[31m', ...args);
|
|
101
|
+
let logMeta = this._mapLog('error', ...args);
|
|
102
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.error(logMeta));
|
|
103
|
+
}
|
|
104
|
+
fatal(...args) {
|
|
105
|
+
if ('DEVELOPMENT' === _config.NODE_ENV.toUpperCase()) return void console.error('\x1b[31m', ...args);
|
|
106
|
+
let logMeta = this._mapLog('fatal', ...args);
|
|
107
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.fatal(logMeta));
|
|
108
|
+
}
|
|
109
|
+
warn(...args) {
|
|
110
|
+
let logMeta = this._mapLog('warn', ...args);
|
|
111
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.warn(logMeta));
|
|
112
|
+
}
|
|
113
|
+
debug(...args) {
|
|
114
|
+
let logMeta = this._mapLog('debug', ...args);
|
|
115
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.debug(logMeta));
|
|
116
|
+
}
|
|
117
|
+
info(...args) {
|
|
118
|
+
let logMeta = this._mapLog('log', ...args);
|
|
119
|
+
logMeta && (this._console(logMeta), _loggerdriver.loggerDriver.log(logMeta));
|
|
120
|
+
}
|
|
121
|
+
};
|
|
@@ -1 +1,73 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "Cloudwatch", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return Cloudwatch;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _clientcloudwatchlogs = require("@aws-sdk/client-cloudwatch-logs"), _exceptionhelper = require("../../helpers/exception.helper"), _secretmanager = require("../secret-manager");
|
|
11
|
+
let Cloudwatch = class Cloudwatch {
|
|
12
|
+
client;
|
|
13
|
+
sequenceToken;
|
|
14
|
+
DEFAULT_LOG_CONFIG;
|
|
15
|
+
constructor(){
|
|
16
|
+
(0, _secretmanager.getSecret)().then((secret)=>{
|
|
17
|
+
if (!(secret.CLOUDWATCH_REGION && secret.ALLOWED_ORIGINS && secret.CLOUDWATCH_ACCESS_KEY_ID && secret.CLOUDWATCH_SECRET_ACCESS_KEY && secret.ENABLE_CLOUDWATCH_LOGS)) throw new _exceptionhelper.AppUnprocessableEntityException('CloudWatch configuration environment variables are missing.');
|
|
18
|
+
this.client = new _clientcloudwatchlogs.CloudWatchLogsClient({
|
|
19
|
+
region: secret.CLOUDWATCH_REGION,
|
|
20
|
+
credentials: {
|
|
21
|
+
accessKeyId: secret.CLOUDWATCH_ACCESS_KEY_ID,
|
|
22
|
+
secretAccessKey: secret.CLOUDWATCH_SECRET_ACCESS_KEY
|
|
23
|
+
}
|
|
24
|
+
}), secret.CLOUDWATCH_LOG_GROUP && secret.CLOUDWATCH_LOG_STREAM && (this.DEFAULT_LOG_CONFIG = {
|
|
25
|
+
logGroupName: secret.CLOUDWATCH_LOG_GROUP,
|
|
26
|
+
logStreamName: secret.CLOUDWATCH_LOG_STREAM
|
|
27
|
+
}), this._ensureLogStream();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async _ensureLogStream() {
|
|
31
|
+
if (this.client && this.DEFAULT_LOG_CONFIG) try {
|
|
32
|
+
let describeCommand = new _clientcloudwatchlogs.DescribeLogStreamsCommand(this.DEFAULT_LOG_CONFIG), response = await this.client.send(describeCommand), logStream = response.logStreams?.[0];
|
|
33
|
+
if (logStream) this.sequenceToken = logStream.uploadSequenceToken;
|
|
34
|
+
else {
|
|
35
|
+
let createCommand = new _clientcloudwatchlogs.CreateLogStreamCommand(this.DEFAULT_LOG_CONFIG);
|
|
36
|
+
await this.client.send(createCommand);
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error('Error ensuring log stream:', error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async _send(message) {
|
|
43
|
+
if (this.client && this.DEFAULT_LOG_CONFIG) try {
|
|
44
|
+
let command = new _clientcloudwatchlogs.PutLogEventsCommand({
|
|
45
|
+
...this.DEFAULT_LOG_CONFIG,
|
|
46
|
+
logEvents: [
|
|
47
|
+
{
|
|
48
|
+
timestamp: Date.now(),
|
|
49
|
+
message: JSON.stringify(message, null, 2)
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
sequenceToken: this.sequenceToken
|
|
53
|
+
}), response = await this.client.send(command);
|
|
54
|
+
this.sequenceToken = response.nextSequenceToken;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error('Error sending log to CloudWatch:', error), 'InvalidSequenceTokenException' === error.name && (await this._ensureLogStream(), await this._send(message));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
log(message) {
|
|
60
|
+
this._send(message);
|
|
61
|
+
}
|
|
62
|
+
error(message) {
|
|
63
|
+
this._send(message);
|
|
64
|
+
}
|
|
65
|
+
fatal(message) {
|
|
66
|
+
this._send(message);
|
|
67
|
+
}
|
|
68
|
+
warn(message) {
|
|
69
|
+
this._send(message);
|
|
70
|
+
}
|
|
71
|
+
debug(message) {}
|
|
72
|
+
verbose(message) {}
|
|
73
|
+
};
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var from, to;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), from = require("./app.logger"), to = exports, Object.keys(from).forEach(function(k) {
|
|
6
|
+
"default" === k || Object.prototype.hasOwnProperty.call(to, k) || Object.defineProperty(to, k, {
|
|
7
|
+
enumerable: !0,
|
|
8
|
+
get: function() {
|
|
9
|
+
return from[k];
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -1 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
});
|
|
5
|
+
var target = exports, all = {
|
|
6
|
+
get logDebugBg () {
|
|
7
|
+
return logDebugBg;
|
|
8
|
+
},
|
|
9
|
+
get logError () {
|
|
10
|
+
return logError;
|
|
11
|
+
},
|
|
12
|
+
get logErrorBg () {
|
|
13
|
+
return logErrorBg;
|
|
14
|
+
},
|
|
15
|
+
get logInfoBg () {
|
|
16
|
+
return logInfoBg;
|
|
17
|
+
},
|
|
18
|
+
get logWarn () {
|
|
19
|
+
return logWarn;
|
|
20
|
+
},
|
|
21
|
+
get logWarnBg () {
|
|
22
|
+
return logWarnBg;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
26
|
+
enumerable: !0,
|
|
27
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
28
|
+
});
|
|
29
|
+
let _util = require("util"), bgLog = (option, log)=>(0, _util.styleText)('reset', (0, _util.styleText)('bold', (0, _util.styleText)(option, (0, _util.styleText)('black', ` ${log} `)))), logWarnBg = (log)=>bgLog('bgYellow', log), logErrorBg = (log)=>bgLog('bgRed', log), logInfoBg = (log)=>bgLog('bgGreen', log), logDebugBg = (log)=>bgLog('bgMagenta', log), logWarn = (log)=>(0, _util.styleText)('yellow', log), logError = (log)=>(0, _util.styleText)('red', log);
|
|
@@ -1 +1,49 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var obj;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), Object.defineProperty(exports, "loggerDriver", {
|
|
6
|
+
enumerable: !0,
|
|
7
|
+
get: function() {
|
|
8
|
+
return loggerDriver;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
let _os = (obj = require("os")) && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
}, _secretmanager = require("../secret-manager");
|
|
14
|
+
let LoggerDriver = class LoggerDriver {
|
|
15
|
+
host = _os.default.hostname();
|
|
16
|
+
slackError;
|
|
17
|
+
cloudwatch;
|
|
18
|
+
constructor(){
|
|
19
|
+
(0, _secretmanager.getSecret)().then((secret)=>{
|
|
20
|
+
if (secret.SLACK_ERROR_WEBHOOK_URL) {
|
|
21
|
+
let { SlackLogger } = require('./slack.logger');
|
|
22
|
+
this.slackError = new SlackLogger(secret.SLACK_ERROR_WEBHOOK_URL);
|
|
23
|
+
}
|
|
24
|
+
if (secret.ENABLE_CLOUDWATCH_LOGS) {
|
|
25
|
+
let { Cloudwatch } = require('./cloudwatch');
|
|
26
|
+
this.cloudwatch = new Cloudwatch();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
error(message) {
|
|
31
|
+
this?.slackError && this.slackError?.error(message), this?.cloudwatch && this.cloudwatch?.log(message);
|
|
32
|
+
}
|
|
33
|
+
fatal(message) {
|
|
34
|
+
this?.slackError && this.slackError?.fatal(message), this?.cloudwatch && this.cloudwatch?.log(message);
|
|
35
|
+
}
|
|
36
|
+
log(message) {
|
|
37
|
+
this?.cloudwatch && this.cloudwatch?.log(message);
|
|
38
|
+
}
|
|
39
|
+
warn(message) {
|
|
40
|
+
this?.cloudwatch && this.cloudwatch?.log(message);
|
|
41
|
+
}
|
|
42
|
+
debug(message) {
|
|
43
|
+
this?.cloudwatch && this.cloudwatch?.log(message);
|
|
44
|
+
}
|
|
45
|
+
verbose(message) {
|
|
46
|
+
this?.cloudwatch && this.cloudwatch?.log(message);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
let loggerDriver = new LoggerDriver();
|
|
@@ -1 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "SlackLogger", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return SlackLogger;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _common = require("@nestjs/common"), _slack = require("../notifications/slack");
|
|
11
|
+
function _ts_metadata(k, v) {
|
|
12
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
|
|
13
|
+
}
|
|
14
|
+
let SlackLogger = class SlackLogger extends _slack.Slack {
|
|
15
|
+
constructor(webhookUrl){
|
|
16
|
+
super({
|
|
17
|
+
webhookUrl
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
error(message) {
|
|
21
|
+
this.send(`:x: ${message}`);
|
|
22
|
+
}
|
|
23
|
+
fatal(message) {
|
|
24
|
+
this.send(`:skull: ${message}`);
|
|
25
|
+
}
|
|
26
|
+
log(message) {}
|
|
27
|
+
warn(message) {}
|
|
28
|
+
debug(message) {}
|
|
29
|
+
verbose(message) {}
|
|
30
|
+
};
|
|
31
|
+
SlackLogger = function(decorators, target, key, desc) {
|
|
32
|
+
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
|
|
33
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
|
|
34
|
+
else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
|
|
35
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
36
|
+
}([
|
|
37
|
+
(0, _common.Injectable)(),
|
|
38
|
+
_ts_metadata("design:type", Function),
|
|
39
|
+
_ts_metadata("design:paramtypes", [
|
|
40
|
+
String
|
|
41
|
+
])
|
|
42
|
+
], SlackLogger);
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
function _export_star(from, to) {
|
|
3
|
+
return Object.keys(from).forEach(function(k) {
|
|
4
|
+
"default" === k || Object.prototype.hasOwnProperty.call(to, k) || Object.defineProperty(to, k, {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return from[k];
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
}), from;
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(exports, "__esModule", {
|
|
13
|
+
value: !0
|
|
14
|
+
}), _export_star(require("./mail"), exports), _export_star(require("./mail-template"), exports), _export_star(require("./mail.config"), exports), _export_star(require("./mail.module"), exports), _export_star(require("./mail.queue"), exports), _export_star(require("./mailer"), exports);
|
|
@@ -1,18 +1,41 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "MailTemplate", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return MailTemplate;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _common = require("@nestjs/common"), _config = require("../../config");
|
|
11
|
+
let MailTemplate = class MailTemplate {
|
|
12
|
+
THEME_COLOR = '#3968FE';
|
|
13
|
+
MAX_WIDTH = '530px';
|
|
14
|
+
logo() {
|
|
15
|
+
return `<div style="padding:1em 1.3em 0 1.3em;">
|
|
2
16
|
<a href="${_config.LANDING_PAGE_URL}" title="${_config.APP_NAME}" style="underline:none;color:${this.THEME_COLOR};text-decoration:none;">
|
|
3
|
-
${_config.APP_LOGO_URL
|
|
17
|
+
${_config.APP_LOGO_URL ? `<img src="${_config.APP_LOGO_URL}" alt="${_config.APP_NAME}" width="100" />` : `<b style="font-size:1.5em;letter-spacing:0.1em;line-height:1.6;">${_config.APP_NAME}</b>`}
|
|
4
18
|
</a>
|
|
5
|
-
</div
|
|
19
|
+
</div>`;
|
|
20
|
+
}
|
|
21
|
+
header() {
|
|
22
|
+
return `<div style="
|
|
6
23
|
width:100%;
|
|
7
24
|
max-width:${this.MAX_WIDTH};margin:1.5em auto 0;
|
|
8
25
|
position:relative;
|
|
9
26
|
font-size:14px;padding:0.5em 0;">
|
|
10
27
|
${this.logo()}
|
|
11
|
-
</div
|
|
28
|
+
</div>`;
|
|
29
|
+
}
|
|
30
|
+
get FOOTER() {
|
|
31
|
+
return `<div style="font-size:12px;color:#868686;text-align:center;padding:0 1.5em">
|
|
12
32
|
<div style="border-top:1px solid #eee;padding:1.5em 0 2em;text-align:center">
|
|
13
33
|
${new Date().getFullYear()} © ${_config.APP_NAME}
|
|
14
34
|
</div>
|
|
15
|
-
</div
|
|
35
|
+
</div>`;
|
|
36
|
+
}
|
|
37
|
+
html(content) {
|
|
38
|
+
return `<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
16
39
|
<html>
|
|
17
40
|
<head>
|
|
18
41
|
<meta http-equiv="Content-Type" CONTENT="text/html charset=UTF-8" />
|
|
@@ -38,4 +61,14 @@
|
|
|
38
61
|
</tr>
|
|
39
62
|
</tbody>
|
|
40
63
|
</table>
|
|
41
|
-
</html>`.replace(/ +/g,
|
|
64
|
+
</html>`.replace(/ +/g, ' ');
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
MailTemplate = function(decorators, target, key, desc) {
|
|
68
|
+
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
|
|
69
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
|
|
70
|
+
else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
|
|
71
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
72
|
+
}([
|
|
73
|
+
(0, _common.Injectable)()
|
|
74
|
+
], MailTemplate);
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "mailerQueue", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return mailerQueue;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let mailerQueue = 'MAILER:QUEUE';
|
|
@@ -1,16 +1,45 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "Mail", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return Mail;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let Mail = class Mail {
|
|
11
|
+
CONTENT = '';
|
|
12
|
+
caption(content) {
|
|
13
|
+
return this.CONTENT += `<div style="margin:0 0 1.5em 0;">${content.replace(/((http:|https:)[^\s]+[\w])/g, '<a href="$1" target="_blank" style="color:#3D96FF;font-weight:500">$1</a>')}</div>`, this;
|
|
14
|
+
}
|
|
15
|
+
p(content, style = '') {
|
|
16
|
+
return this.CONTENT += `<p style="
|
|
2
17
|
font-family: sans-serif;
|
|
3
18
|
font-weight: 400;
|
|
4
19
|
font-size: 1.2em;
|
|
5
20
|
margin: 1.25em 0;
|
|
6
|
-
${style}">${content.replace(/((http:|https:)[^\s]+[\w])/g,'<a href="$1" target="_blank" style="color:#3D96FF;font-weight:500">$1</a>')}</p>`,
|
|
7
|
-
|
|
21
|
+
${style}">${content.replace(/((http:|https:)[^\s]+[\w])/g, '<a href="$1" target="_blank" style="color:#3D96FF;font-weight:500">$1</a>')}</p>`, this;
|
|
22
|
+
}
|
|
23
|
+
ln(content) {
|
|
24
|
+
return this.CONTENT += `${content}\n`, this;
|
|
25
|
+
}
|
|
26
|
+
a(title, href) {
|
|
27
|
+
return this.CONTENT += `<a href="${href ?? title}" title="${title}" style="color:#3D96FF;font-weight:500">${title}</a>`, this;
|
|
28
|
+
}
|
|
29
|
+
otp(code) {
|
|
30
|
+
return this.CONTENT += `<p style="padding:1em 2em;text-align:center;font-weight:bold;font-size:30px;background-color:#eee;letter-spacing: 0.2em;border-radius:5px;">
|
|
8
31
|
${code}
|
|
9
|
-
</p>`,
|
|
32
|
+
</p>`, this;
|
|
33
|
+
}
|
|
34
|
+
title(title, style = '') {
|
|
35
|
+
return this.CONTENT += `<h1 style="
|
|
10
36
|
font-family: sans-serif;
|
|
11
37
|
font-weight: 600;
|
|
12
38
|
font-size: 18px;
|
|
13
|
-
${style}">${title}</h1>`,
|
|
39
|
+
${style}">${title}</h1>`, this;
|
|
40
|
+
}
|
|
41
|
+
action(title, href) {
|
|
42
|
+
return this.CONTENT += `<p style="margin: 2em 0"><a href="${href}" title="${title}" style="
|
|
14
43
|
display:block;
|
|
15
44
|
background: #3968FE;
|
|
16
45
|
color: white;
|
|
@@ -21,18 +50,34 @@
|
|
|
21
50
|
font-weight: bold;
|
|
22
51
|
text-decoration: none;
|
|
23
52
|
font-family: sans-serif;">
|
|
24
|
-
${title}</a></p>`,this
|
|
53
|
+
${title}</a></p>`, this;
|
|
54
|
+
}
|
|
55
|
+
listDetail(list, title = '') {
|
|
56
|
+
let parsedList = list.map((li)=>`<div style="margin-bottom:8px;display:flex;justify-CONTENT:space-between;${li?.style ?? ''}">
|
|
25
57
|
<div style="margin-right:0.75em">${li.name}</div>
|
|
26
58
|
<div style="text-align:right;font-weight:bold">${li.value}</div>
|
|
27
|
-
</div>`).join(
|
|
28
|
-
|
|
29
|
-
|
|
59
|
+
</div>`).join(' ');
|
|
60
|
+
return this.CONTENT += `<p style="text-align:center;">
|
|
61
|
+
${title && `<div style="background-color:#F6F6F6;padding:8px 10px;border-radius:5px;font-weight:bold;margin-bottom:1em">${title}</div>`}
|
|
62
|
+
<div style="margin-top:5px;font-size:95%;${title ? 'padding: 0 0.75em' : ''}">
|
|
30
63
|
${parsedList}
|
|
31
64
|
</div>
|
|
32
|
-
</p>`,this
|
|
65
|
+
</p>`, this;
|
|
66
|
+
}
|
|
67
|
+
list(list, type = 'bulleted') {
|
|
68
|
+
let parsedList = list.map((li)=>`<li style="margin-bottom:8px;">
|
|
33
69
|
<span>${li}</span>
|
|
34
|
-
</li>`).join(
|
|
35
|
-
|
|
70
|
+
</li>`).join('');
|
|
71
|
+
return this.CONTENT += `<p style="text-align:center;">
|
|
72
|
+
<ul style="list-style-type:${'numbered' === type ? 'decimal' : 'disc'}; padding-left: 20px; margin-top:5px; font-size:100%;">
|
|
36
73
|
${parsedList}
|
|
37
74
|
</ul>
|
|
38
|
-
</p>`,
|
|
75
|
+
</p>`, this;
|
|
76
|
+
}
|
|
77
|
+
hr() {
|
|
78
|
+
return this.CONTENT += '<hr style="margin: 2em 0">', this;
|
|
79
|
+
}
|
|
80
|
+
toString() {
|
|
81
|
+
return this.CONTENT;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
@@ -1 +1,36 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "MailModule", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return MailModule;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _bull = require("@nestjs/bull"), _common = require("@nestjs/common"), _mailtemplate = require("./mail-template"), _mailconfig = require("./mail.config"), _mailqueue = require("./mail.queue"), _mailer = require("./mailer");
|
|
11
|
+
let MailModule = class MailModule {
|
|
12
|
+
};
|
|
13
|
+
MailModule = function(decorators, target, key, desc) {
|
|
14
|
+
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
|
|
15
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
}([
|
|
19
|
+
(0, _common.Global)(),
|
|
20
|
+
(0, _common.Module)({
|
|
21
|
+
providers: [
|
|
22
|
+
_mailer.Mailer,
|
|
23
|
+
_mailtemplate.MailTemplate,
|
|
24
|
+
_mailqueue.MailQueue
|
|
25
|
+
],
|
|
26
|
+
exports: [
|
|
27
|
+
_mailer.Mailer,
|
|
28
|
+
_mailtemplate.MailTemplate
|
|
29
|
+
],
|
|
30
|
+
imports: [
|
|
31
|
+
_bull.BullModule.registerQueue({
|
|
32
|
+
name: _mailconfig.mailerQueue
|
|
33
|
+
})
|
|
34
|
+
]
|
|
35
|
+
})
|
|
36
|
+
], MailModule);
|
|
@@ -1 +1,45 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: !0
|
|
4
|
+
}), Object.defineProperty(exports, "MailQueue", {
|
|
5
|
+
enumerable: !0,
|
|
6
|
+
get: function() {
|
|
7
|
+
return MailQueue;
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
let _bull = require("@nestjs/bull"), _appqueue = require("../queues/app.queue"), _mailconfig = require("./mail.config"), _mailer = require("./mailer");
|
|
11
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
12
|
+
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
|
|
13
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
}
|
|
17
|
+
function _ts_metadata(k, v) {
|
|
18
|
+
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
|
|
19
|
+
}
|
|
20
|
+
let MailQueue = class MailQueue extends _appqueue.AppQueue {
|
|
21
|
+
mailer;
|
|
22
|
+
constructor(mailer){
|
|
23
|
+
super(), this.mailer = mailer;
|
|
24
|
+
}
|
|
25
|
+
async addLog({ data }) {
|
|
26
|
+
await this.mailer.send(data, !1);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
_ts_decorate([
|
|
30
|
+
(0, _bull.Process)({
|
|
31
|
+
name: _mailconfig.mailerQueue,
|
|
32
|
+
concurrency: 4
|
|
33
|
+
}),
|
|
34
|
+
_ts_metadata("design:type", Function),
|
|
35
|
+
_ts_metadata("design:paramtypes", [
|
|
36
|
+
"u" < typeof Job ? Object : Job
|
|
37
|
+
]),
|
|
38
|
+
_ts_metadata("design:returntype", Promise)
|
|
39
|
+
], MailQueue.prototype, "addLog", null), MailQueue = _ts_decorate([
|
|
40
|
+
(0, _bull.Processor)(_mailconfig.mailerQueue),
|
|
41
|
+
_ts_metadata("design:type", Function),
|
|
42
|
+
_ts_metadata("design:paramtypes", [
|
|
43
|
+
void 0 === _mailer.Mailer ? Object : _mailer.Mailer
|
|
44
|
+
])
|
|
45
|
+
], MailQueue);
|