skyeye-svc-common-utils 2.0.0-dev0.18 → 2.0.0-dev0.19
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/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/azure/cognitiveSearch/QueryType.d.ts +8 -0
- package/dist/lib/azure/cognitiveSearch/QueryType.js +13 -0
- package/dist/lib/azure/cognitiveSearch/QueryType.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.d.ts +42 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.js +166 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.d.ts +16 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.js +3 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.d.ts +68 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.js +125 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.d.ts +9 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.js +14 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.d.ts +88 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.js +104 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.d.ts +9 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.js +3 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/index.d.ts +7 -0
- package/dist/lib/azure/cognitiveSearch/index.js +24 -0
- package/dist/lib/azure/cognitiveSearch/index.js.map +1 -0
- package/dist/lib/azure/index.d.ts +7 -0
- package/dist/lib/azure/index.js +24 -0
- package/dist/lib/azure/index.js.map +1 -0
- package/dist/lib/fetch/index.d.ts +2 -0
- package/dist/lib/fetch/index.js +19 -0
- package/dist/lib/fetch/index.js.map +1 -0
- package/dist/lib/fetch/sendRequest.d.ts +7 -0
- package/dist/lib/fetch/sendRequest.js +25 -0
- package/dist/lib/fetch/sendRequest.js.map +1 -0
- package/dist/lib/fetch/sendRequest.test.d.ts +1 -0
- package/dist/lib/fetch/sendRequest.test.js +27 -0
- package/dist/lib/fetch/sendRequest.test.js.map +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.d.ts +9 -0
- package/dist/lib/fetch/sendRequestWithTimeout.js +53 -0
- package/dist/lib/fetch/sendRequestWithTimeout.js.map +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.d.ts +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.js +43 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/logger/index.d.ts +2 -0
- package/dist/lib/logger/index.js +19 -0
- package/dist/lib/logger/index.js.map +1 -0
- package/dist/lib/logger/logger.d.ts +16 -0
- package/dist/lib/logger/logger.js +120 -0
- package/dist/lib/logger/logger.js.map +1 -0
- package/dist/lib/logger/morganLogger.d.ts +4 -0
- package/dist/lib/logger/morganLogger.js +27 -0
- package/dist/lib/logger/morganLogger.js.map +1 -0
- package/dist/lib/teams/LogMessage.d.ts +51 -0
- package/dist/lib/teams/LogMessage.js +33 -0
- package/dist/lib/teams/LogMessage.js.map +1 -0
- package/dist/lib/teams/broadcastLogMessage.d.ts +8 -0
- package/dist/lib/teams/broadcastLogMessage.js +81 -0
- package/dist/lib/teams/broadcastLogMessage.js.map +1 -0
- package/dist/lib/teams/broadcastLogMessage.test.d.ts +1 -0
- package/dist/lib/teams/broadcastLogMessage.test.js +25 -0
- package/dist/lib/teams/broadcastLogMessage.test.js.map +1 -0
- package/dist/lib/teams/index.d.ts +2 -0
- package/dist/lib/teams/index.js +19 -0
- package/dist/lib/teams/index.js.map +1 -0
- package/dist/test/setup-tests.d.ts +0 -0
- package/dist/test/setup-tests.js +3 -0
- package/dist/test/setup-tests.js.map +1 -0
- package/dist/types/ServiceResponse.d.ts +16 -0
- package/dist/types/ServiceResponse.js +3 -0
- package/dist/types/ServiceResponse.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/baseClass/appDataSource.d.ts +7 -0
- package/dist/utils/baseClass/appDataSource.js +31 -0
- package/dist/utils/baseClass/appDataSource.js.map +1 -0
- package/dist/utils/baseClass/baseController.js +8 -8
- package/dist/utils/baseClass/baseController.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/middleware/loadConfig.d.ts +128 -0
- package/dist/utils/middleware/loadConfig.js +143 -0
- package/dist/utils/middleware/loadConfig.js.map +1 -0
- package/dist/utils/middleware/startdbConnection.js +2 -4
- package/dist/utils/middleware/startdbConnection.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -2
- package/src/utils/baseClass/appDataSource.ts +23 -0
- package/src/utils/baseClass/baseController.ts +9 -9
- package/dist/utils/baseClass/dataSourceManager.d.ts +0 -11
- package/dist/utils/baseClass/dataSourceManager.js +0 -59
- package/dist/utils/baseClass/dataSourceManager.js.map +0 -1
- package/src/utils/baseClass/dataSourceManager.ts +0 -49
- package/src/utils/middleware/startdbConnection.ts +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/lib/logger/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const morgan_1 = __importDefault(require("morgan"));
|
|
7
|
+
const rotating_file_stream_1 = __importDefault(require("rotating-file-stream"));
|
|
8
|
+
const appConst_1 = require("../../utils/appConst");
|
|
9
|
+
const dateformat_1 = __importDefault(require("dateformat"));
|
|
10
|
+
const teams_1 = require("../teams");
|
|
11
|
+
/**
|
|
12
|
+
* @description
|
|
13
|
+
* @param {Date} time - optional, default as today
|
|
14
|
+
* @param {number} index - indexing of the log files
|
|
15
|
+
* @returns {string} filename of log files
|
|
16
|
+
*/
|
|
17
|
+
function fileNameGenerator(time, index) {
|
|
18
|
+
if (!time) {
|
|
19
|
+
time = new Date();
|
|
20
|
+
}
|
|
21
|
+
const indexStr = index ? ('-' + JSON.stringify(index)) : '';
|
|
22
|
+
return `backend-access-${(0, dateformat_1.default)(time, 'yyyy-mm-dd')}${indexStr}.log`;
|
|
23
|
+
}
|
|
24
|
+
const morganOption = process.env.LOG_LEVEL === teams_1.zLogLevel.enum.disabled ?
|
|
25
|
+
{} : { stream: (0, rotating_file_stream_1.default)(fileNameGenerator, { interval: '1d', path: appConst_1.loggerSettings.path }) };
|
|
26
|
+
exports.default = (0, morgan_1.default)('combined', morganOption);
|
|
27
|
+
//# sourceMappingURL=morganLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morganLogger.js","sourceRoot":"","sources":["../../../src/lib/logger/morganLogger.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,gFAAuC;AACvC,mDAAsD;AACtD,4DAAoC;AACpC,oCAAqC;AAGrC;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAU,EAAE,KAAa;IAChD,IAAI,CAAC,IAAI,EAAE;QAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;KAAE;IACjC,MAAM,QAAQ,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,kBAAkB,IAAA,oBAAU,EAAC,IAAI,EAAC,YAAY,CAAC,GAAG,QAAQ,MAAM,CAAC;AAC5E,CAAC;AAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,iBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAA,8BAAG,EAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AAE3F,kBAAe,IAAA,gBAAM,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Environment } from '../../utils';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* @description we classified the logs into 4 levels and one supporting level:
|
|
5
|
+
* - `verbose`: The most fine-grained information only used in rare cases where
|
|
6
|
+
* you need the full visibility of what is happening in your application
|
|
7
|
+
* and inside the third-party libraries that you use
|
|
8
|
+
* - `info`: The standard log level indicating that something happened;
|
|
9
|
+
* the application entered a certain state. It should be purely informative and
|
|
10
|
+
* not looking into them on a regular basis
|
|
11
|
+
* - `warn`: the log level that indicates that something unexpected happened in
|
|
12
|
+
* the application, a problem, or a situation that might disturb one of the
|
|
13
|
+
* processes. But that doesn’t mean that the application failed
|
|
14
|
+
* - `error`: error, states as `FATAL` in the modern log leveling to alleviate DRY.
|
|
15
|
+
* It tells that the application encountered an event or entered a state in which
|
|
16
|
+
* one of the crucial business functionality is no longer working
|
|
17
|
+
* - `disabled`: supporting enum for disabling the functionality of logger
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```markdown
|
|
21
|
+
* - verbose: annotate each step in the algorithm or each individual query
|
|
22
|
+
* with parameters in your code
|
|
23
|
+
* - info: request of authorization API which states whether a user sign-on success or not
|
|
24
|
+
* - warn`: a parsing error occurred that resulted in a certain document not being processed
|
|
25
|
+
* - error: when the application is not able to connect to a crucial data store like a database
|
|
26
|
+
* or one of the sub-service is unavailable
|
|
27
|
+
* ```
|
|
28
|
+
* @see https://sematext.com/blog/logging-levels/
|
|
29
|
+
*/
|
|
30
|
+
export declare const zLogLevel: z.ZodEnum<["verbose", "info", "warn", "error", "disabled"]>;
|
|
31
|
+
/**
|
|
32
|
+
* @description typedef of `zLogLevel`
|
|
33
|
+
*/
|
|
34
|
+
export type LogLevel = z.infer<typeof zLogLevel>;
|
|
35
|
+
/**
|
|
36
|
+
* @description definition of the context that a log should contains
|
|
37
|
+
* @property {LogLevel} level - log level
|
|
38
|
+
* @property {string} time - when does the log be generated
|
|
39
|
+
* @property {string} appName - the service which generates the logs
|
|
40
|
+
* @property {Environment} environment - log happened in which environment
|
|
41
|
+
* @property {string} message - log message
|
|
42
|
+
* @property {string} version - current app version
|
|
43
|
+
*/
|
|
44
|
+
export type LogMessage = {
|
|
45
|
+
level: LogLevel;
|
|
46
|
+
time: string;
|
|
47
|
+
appName: string;
|
|
48
|
+
environment: Environment;
|
|
49
|
+
message: string;
|
|
50
|
+
version: string;
|
|
51
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zLogLevel = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* @description we classified the logs into 4 levels and one supporting level:
|
|
7
|
+
* - `verbose`: The most fine-grained information only used in rare cases where
|
|
8
|
+
* you need the full visibility of what is happening in your application
|
|
9
|
+
* and inside the third-party libraries that you use
|
|
10
|
+
* - `info`: The standard log level indicating that something happened;
|
|
11
|
+
* the application entered a certain state. It should be purely informative and
|
|
12
|
+
* not looking into them on a regular basis
|
|
13
|
+
* - `warn`: the log level that indicates that something unexpected happened in
|
|
14
|
+
* the application, a problem, or a situation that might disturb one of the
|
|
15
|
+
* processes. But that doesn’t mean that the application failed
|
|
16
|
+
* - `error`: error, states as `FATAL` in the modern log leveling to alleviate DRY.
|
|
17
|
+
* It tells that the application encountered an event or entered a state in which
|
|
18
|
+
* one of the crucial business functionality is no longer working
|
|
19
|
+
* - `disabled`: supporting enum for disabling the functionality of logger
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```markdown
|
|
23
|
+
* - verbose: annotate each step in the algorithm or each individual query
|
|
24
|
+
* with parameters in your code
|
|
25
|
+
* - info: request of authorization API which states whether a user sign-on success or not
|
|
26
|
+
* - warn`: a parsing error occurred that resulted in a certain document not being processed
|
|
27
|
+
* - error: when the application is not able to connect to a crucial data store like a database
|
|
28
|
+
* or one of the sub-service is unavailable
|
|
29
|
+
* ```
|
|
30
|
+
* @see https://sematext.com/blog/logging-levels/
|
|
31
|
+
*/
|
|
32
|
+
exports.zLogLevel = zod_1.z.enum(['verbose', 'info', 'warn', 'error', 'disabled']);
|
|
33
|
+
//# sourceMappingURL=logMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logMessage.js","sourceRoot":"","sources":["../../../src/lib/teams/logMessage.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACU,QAAA,SAAS,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LogLevel } from './logMessage';
|
|
2
|
+
/**
|
|
3
|
+
* @description broadcast log message to specific Microsoft Teams channels
|
|
4
|
+
* @param {LogLevel} level - level of the log
|
|
5
|
+
* @param {string} message - log message
|
|
6
|
+
* @returns {void} the function is deposable, thus it won't return any of information
|
|
7
|
+
*/
|
|
8
|
+
export declare function broadcastLogMessage(level: LogLevel, message: string): Promise<void>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.broadcastLogMessage = void 0;
|
|
13
|
+
const loadConfig_1 = require("../../utils/middleware/loadConfig");
|
|
14
|
+
const fetch_1 = require("../fetch");
|
|
15
|
+
/**
|
|
16
|
+
* @description broadcast log message to specific Microsoft Teams channels
|
|
17
|
+
* @param {LogLevel} level - level of the log
|
|
18
|
+
* @param {string} message - log message
|
|
19
|
+
* @returns {void} the function is deposable, thus it won't return any of information
|
|
20
|
+
*/
|
|
21
|
+
function broadcastLogMessage(level, message) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
// we only broadcast two levels of log.
|
|
24
|
+
if (level !== 'error' && level !== 'warn') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* When the keyVaultName is empty, loadConfig() should be called in order to fetch the value as possible
|
|
29
|
+
* since we are not using lazy-loading here. It would be better to transform into a lazy-loading mechanism.
|
|
30
|
+
*/
|
|
31
|
+
if (loadConfig_1.appConfig === undefined) {
|
|
32
|
+
try {
|
|
33
|
+
yield (0, loadConfig_1.loadConfig)();
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const time = new Date().toISOString();
|
|
40
|
+
const logMessage = {
|
|
41
|
+
level,
|
|
42
|
+
message,
|
|
43
|
+
time,
|
|
44
|
+
environment: loadConfig_1.appConfig.environment,
|
|
45
|
+
appName: loadConfig_1.appConfig.appName,
|
|
46
|
+
version: loadConfig_1.appConfig.version
|
|
47
|
+
};
|
|
48
|
+
const messageCard = (() => {
|
|
49
|
+
return {
|
|
50
|
+
'@type': 'MessageCard',
|
|
51
|
+
'@context': 'http://schema.org/extensions',
|
|
52
|
+
'summary': 'Teams broadcasting of Logs',
|
|
53
|
+
'sections': [{
|
|
54
|
+
'activityTitle': `# ***Service Error Log - ${logMessage.level}***`,
|
|
55
|
+
'facts': [
|
|
56
|
+
{ 'name': 'Time', 'value': logMessage.time },
|
|
57
|
+
{ 'name': 'Environment', 'value': logMessage.environment },
|
|
58
|
+
{ 'name': 'Service', 'value': logMessage.appName },
|
|
59
|
+
{ 'name': 'Version', 'value': logMessage.version },
|
|
60
|
+
{ 'name': 'Message', 'value': logMessage.message }
|
|
61
|
+
],
|
|
62
|
+
'markdown': true
|
|
63
|
+
}],
|
|
64
|
+
'potentialAction': [
|
|
65
|
+
{
|
|
66
|
+
'@type': 'OpenUri',
|
|
67
|
+
'name': 'View Documentation',
|
|
68
|
+
'targets': [{ 'os': 'default', 'uri': '' }]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
};
|
|
72
|
+
})();
|
|
73
|
+
const url = level === 'error' ?
|
|
74
|
+
loadConfig_1.appConfig.telemetry.teamsChannelWebHook.errorChannel
|
|
75
|
+
:
|
|
76
|
+
loadConfig_1.appConfig.telemetry.teamsChannelWebHook.warnChannel;
|
|
77
|
+
yield (0, fetch_1.sendRequestWithTimeout)(url, { method: 'POST', body: JSON.stringify(messageCard) });
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
exports.broadcastLogMessage = broadcastLogMessage;
|
|
81
|
+
//# sourceMappingURL=broadcastLogMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastLogMessage.js","sourceRoot":"","sources":["../../../src/lib/teams/broadcastLogMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,kEAA0E;AAC1E,oCAAkD;AAGlD;;;;;GAKG;AACH,SAAsB,mBAAmB,CAAC,KAAe,EAAE,OAAe;;QACtE,uCAAuC;QACvC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE;YAAE,OAAO;SAAE;QAEtD;;;WAGG;QACH,IAAI,sBAAS,KAAK,SAAS,EAAE;YACzB,IAAI;gBACA,MAAM,IAAA,uBAAU,GAAE,CAAC;aACtB;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,CAAC;aACb;SACJ;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,UAAU,GAAe;YAC3B,KAAK;YACL,OAAO;YACP,IAAI;YACJ,WAAW,EAAE,sBAAS,CAAC,WAAW;YAClC,OAAO,EAAE,sBAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,sBAAS,CAAC,OAAO;SAC7B,CAAC;QAEF,MAAM,WAAW,GAAW,CAAC,GAAW,EAAE;YACtC,OAAO;gBACH,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,8BAA8B;gBAC1C,SAAS,EAAE,4BAA4B;gBACvC,UAAU,EAAE,CAAC;wBACT,eAAe,EAAE,4BAA4B,UAAU,CAAC,KAAK,KAAK;wBAClE,OAAO,EAAE;4BACL,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;4BAC5C,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE;4BAC1D,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;4BAClD,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;4BAClD,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;yBACrD;wBACD,UAAU,EAAE,IAAI;qBACnB,CAAC;gBACF,iBAAiB,EAAE;oBACf;wBACI,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,oBAAoB;wBAC5B,SAAS,EAAE,CAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAE;qBAChD;iBACJ;aACJ,CAAA;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC;YAC3B,sBAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY;YACpD,CAAC;gBACD,sBAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC;QAExD,MAAM,IAAA,8BAAsB,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;CAAA;AA1DD,kDA0DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const broadcastLogMessage_1 = require("./broadcastLogMessage");
|
|
13
|
+
const utils_1 = require("../../utils");
|
|
14
|
+
const loadConfig_1 = require("../../utils/middleware/loadConfig");
|
|
15
|
+
beforeAll(() => { return (0, loadConfig_1.loadConfig)(); });
|
|
16
|
+
jest.setTimeout(utils_1.QAConst.jestDefaultTimeoutMsec);
|
|
17
|
+
describe('/teams/broadcastLogMessage()', () => {
|
|
18
|
+
test(`broadcasting a log which level is error should be sent to the channel "Log Channel [Error]"`, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
+
yield (0, broadcastLogMessage_1.broadcastLogMessage)('error', 'this is an error message from jest test case');
|
|
20
|
+
}));
|
|
21
|
+
test(`broadcasting a log which level is warn should be sent to the channel "Log Channel [Warn]"`, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
yield (0, broadcastLogMessage_1.broadcastLogMessage)('warn', 'this is a warn message from jest test case');
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=broadcastLogMessage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastLogMessage.test.js","sourceRoot":"","sources":["../../../src/lib/teams/broadcastLogMessage.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA4D;AAC5D,uCAAsC;AACtC,kEAA+D;AAE/D,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,IAAA,uBAAU,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,CAAC,UAAU,CAAC,eAAO,CAAC,sBAAsB,CAAC,CAAC;AAEhD,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,6FAA6F,EAAE,GAAS,EAAE;QAC3G,MAAM,IAAA,yCAAmB,EAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;IACvF,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,2FAA2F,EAAE,GAAS,EAAE;QACzG,MAAM,IAAA,yCAAmB,EAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;IACpF,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./broadcastLogMessage"), exports);
|
|
18
|
+
__exportStar(require("./logMessage"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/teams/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+CAA6B"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-tests.js","sourceRoot":"","sources":["../../src/test/setup-tests.ts"],"names":[],"mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description all of the request/response should be transformed into
|
|
3
|
+
* ServiceResponse to carried/forward etc. in the general service scope
|
|
4
|
+
* @property {boolean} isSuccess - whether request is success or not
|
|
5
|
+
* @property {string} message - optional, additional message
|
|
6
|
+
* @property {any} data - data to be carried
|
|
7
|
+
* @property {number} totalCount - data count
|
|
8
|
+
* @property {any} aggregation - aggregation result of the data
|
|
9
|
+
*/
|
|
10
|
+
export type ServiceResponse = {
|
|
11
|
+
isSuccess: boolean;
|
|
12
|
+
message?: string;
|
|
13
|
+
data?: any;
|
|
14
|
+
totalCount?: number;
|
|
15
|
+
aggregation?: any;
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceResponse.js","sourceRoot":"","sources":["../../src/types/ServiceResponse.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ServiceResponse';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ServiceResponse"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppDataSource = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
class AppDataSource {
|
|
15
|
+
constructor() { }
|
|
16
|
+
static getInstance() {
|
|
17
|
+
return AppDataSource.instance;
|
|
18
|
+
}
|
|
19
|
+
static startConnection(options) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
if (!AppDataSource.instance) {
|
|
22
|
+
AppDataSource.instance = new typeorm_1.DataSource(options);
|
|
23
|
+
}
|
|
24
|
+
if (!AppDataSource.instance.isInitialized) {
|
|
25
|
+
yield AppDataSource.instance.initialize();
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.AppDataSource = AppDataSource;
|
|
31
|
+
//# sourceMappingURL=appDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDataSource.js","sourceRoot":"","sources":["../../../src/utils/baseClass/appDataSource.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAwD;AAGxD,MAAa,aAAa;IAItB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACrB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAClC,CAAC;IAEM,MAAM,CAAO,eAAe,CAAC,OAA0B;;YAC1D,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC1B,aAAa,CAAC,QAAQ,GAAG,IAAI,oBAAU,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACxC,MAAM,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9C,CAAC;QACL,CAAC;KAAA;CACJ;AAnBD,sCAmBC"}
|
|
@@ -16,14 +16,14 @@ const models_1 = require("../../models");
|
|
|
16
16
|
const appConst_1 = require("../appConst");
|
|
17
17
|
const appConfig_1 = require("../appConfig");
|
|
18
18
|
const async_mutex_1 = require("async-mutex");
|
|
19
|
-
const
|
|
19
|
+
const appDataSource_1 = require("./appDataSource");
|
|
20
20
|
class BaseController {
|
|
21
21
|
startTransaction() {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
let queryRunner;
|
|
24
24
|
try {
|
|
25
|
-
|
|
26
|
-
queryRunner =
|
|
25
|
+
// Use queryRunner if transaction is needed
|
|
26
|
+
queryRunner = appDataSource_1.AppDataSource.getInstance().createQueryRunner();
|
|
27
27
|
yield queryRunner.startTransaction();
|
|
28
28
|
return Promise.resolve(queryRunner);
|
|
29
29
|
}
|
|
@@ -66,13 +66,13 @@ class BaseController {
|
|
|
66
66
|
logger_1.logger.error(`BaseController/endTransaction: ${err}`);
|
|
67
67
|
}
|
|
68
68
|
finally {
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
try {
|
|
70
|
+
if (!baseControllerParameter.queryRunner.isReleased) {
|
|
71
71
|
yield baseControllerParameter.queryRunner.release();
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
logger_1.logger.error(`BaseController/endTransaction Release Error: ${err}`);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../src/utils/baseClass/baseController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAsE;AACtE,6CAA0C;AAE1C,yCAAuD;AAEvD,0CAA6C;AAC7C,4CAA+C;AAC/C,6CAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../src/utils/baseClass/baseController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAsE;AACtE,6CAA0C;AAE1C,yCAAuD;AAEvD,0CAA6C;AAC7C,4CAA+C;AAC/C,6CAAoC;AACpC,mDAAgD;AAGhD,MAAsB,cAAc;IAI1B,gBAAgB;;YAClB,IAAI,WAAwB,CAAC;YAE7B,IAAI,CAAC;gBACD,2CAA2C;gBAC3C,WAAW,GAAG,6BAAa,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;gBAC9D,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBAErC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBACzC,IAAI,CAAC;wBACD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;oBAChC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,eAAM,CAAC,KAAK,CAAC,kDAAkD,GAAG,EAAE,CAAC,CAAC;oBAC1E,CAAC;gBACL,CAAC;gBAED,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;KAAA;IAEK,cAAc,CAAC,uBAAgD;;YACjE,IAAI,CAAC;gBACD,IAAG,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;oBACtC,eAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;oBAC3E,OAAO;gBACX,CAAC;gBAED,IAAI,uBAAuB,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBACjD,eAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACtF,CAAC;gBAED,IAAI,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;oBAC1D,IAAI,uBAAuB,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;wBACpD,MAAM,uBAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;oBAClE,CAAC;yBAAM,CAAC;wBACJ,MAAM,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;oBACpE,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,eAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBAC1F,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,eAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC;oBACD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;wBAC9C,MAAM,uBAAuB,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC5D,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,eAAM,CAAC,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAEY,WAAW,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;;YACpE,eAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAErC,IAAI,uBAAuB,GAA4B,IAAI,gCAAuB,EAAE,CAAC;YACrF,uBAAuB,CAAC,eAAe,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAE3H,IAAI,CAAC;gBACD,uBAAuB,CAAC,QAAQ,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,2BAAe,CAAC,SAAS,EAAE,CAAC;oBAC5B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,GAAS,EAAE;wBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;4BACtD,uBAAuB,CAAC,WAAW,GAAG,WAAW,CAAC;4BAClD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;wBAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAA,0BAAY,EAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;wBAC5E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;4BACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1D,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnD,IAAI,CAAC,GAAG,CAAC,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBAAA,CAAC;oBACR,CAAC,CAAA,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC1D,OAAO,IAAA,0BAAY,EAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;oBAC5E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;wBAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;YAED,eAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,WAAW,CAAC,IAAS,EAAE,QAAa;;YAC7C,IAAI,uBAAuB,GAA4B,IAAI,gCAAuB,EAAE,CAAC;YACrF,uBAAuB,CAAC,eAAe,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAE3H,IAAI,CAAC;gBACD,uBAAuB,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAE7C,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzF,IAAI,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC1C,MAAM,UAAU,GAAa,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,yBAAc,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;wBAChF,uBAAuB,CAAC,QAAQ,GAAG,MAAM,IAAA,uBAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACL,CAAC;gBAED,IAAI,2BAAe,CAAC,SAAS,EAAE,CAAC;oBAC5B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,GAAS,EAAE;wBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;4BACtD,uBAAuB,CAAC,WAAW,GAAG,WAAW,CAAC;4BAClD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;4BACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;4BACrD,uBAAuB,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;4BAE9D,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnD,MAAM,GAAG,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBAAA,CAAC;oBACR,CAAC,CAAA,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC9D,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;oBACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;wBAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;wBACrD,uBAAuB,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;wBAE9D,MAAM,GAAG,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,eAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;gBACnD,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;gBACrD,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;YACnE,CAAC;QACL,CAAC;KAAA;;AArJL,wCAsJC;AApJU,oBAAK,GAAU,IAAI,mBAAK,EAAE,CAAC;AAoJrC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./appConfig"), exports);
|
|
18
|
+
__exportStar(require("./appConst"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Environment } from '../appConst';
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* @property {string} appName - service's app name from package.json
|
|
6
|
+
* @property {string} version - service's version from package.json
|
|
7
|
+
* @property {enum} environment - current environment
|
|
8
|
+
* @property {string} keyVaultName - Azure key vault name
|
|
9
|
+
* @property {string} keyVaultSecretName - secret name of Azure key vault
|
|
10
|
+
* @todo migration to single typedef
|
|
11
|
+
*/
|
|
12
|
+
declare const zEnvFileAppConfig: z.ZodObject<{
|
|
13
|
+
appName: z.ZodString;
|
|
14
|
+
version: z.ZodString;
|
|
15
|
+
environment: z.ZodEnum<["test", "dev", "development", "preview", "staging", "beta", "production"]>;
|
|
16
|
+
keyVaultName: z.ZodString;
|
|
17
|
+
keyVaultSecretName: z.ZodString;
|
|
18
|
+
}, "strict", z.ZodTypeAny, {
|
|
19
|
+
appName?: string;
|
|
20
|
+
version?: string;
|
|
21
|
+
environment?: "dev" | "development" | "test" | "preview" | "staging" | "beta" | "production";
|
|
22
|
+
keyVaultName?: string;
|
|
23
|
+
keyVaultSecretName?: string;
|
|
24
|
+
}, {
|
|
25
|
+
appName?: string;
|
|
26
|
+
version?: string;
|
|
27
|
+
environment?: "dev" | "development" | "test" | "preview" | "staging" | "beta" | "production";
|
|
28
|
+
keyVaultName?: string;
|
|
29
|
+
keyVaultSecretName?: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* @description typedef of environment File App Config
|
|
33
|
+
*/
|
|
34
|
+
type EnvFileAppConfig = z.infer<typeof zEnvFileAppConfig>;
|
|
35
|
+
/**
|
|
36
|
+
* @todo migration to single typedef
|
|
37
|
+
*/
|
|
38
|
+
declare const zSecretFileAppConfig: z.ZodObject<{
|
|
39
|
+
telemetry: z.ZodObject<{
|
|
40
|
+
teamsChannelWebHook: z.ZodObject<{
|
|
41
|
+
errorChannel: z.ZodString;
|
|
42
|
+
warnChannel: z.ZodString;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
errorChannel?: string;
|
|
45
|
+
warnChannel?: string;
|
|
46
|
+
}, {
|
|
47
|
+
errorChannel?: string;
|
|
48
|
+
warnChannel?: string;
|
|
49
|
+
}>;
|
|
50
|
+
elasticKeyVault: z.ZodObject<{
|
|
51
|
+
secretToken: z.ZodString;
|
|
52
|
+
serverUrl: z.ZodString;
|
|
53
|
+
}, "strip", z.ZodTypeAny, {
|
|
54
|
+
secretToken?: string;
|
|
55
|
+
serverUrl?: string;
|
|
56
|
+
}, {
|
|
57
|
+
secretToken?: string;
|
|
58
|
+
serverUrl?: string;
|
|
59
|
+
}>;
|
|
60
|
+
}, "strip", z.ZodTypeAny, {
|
|
61
|
+
teamsChannelWebHook?: {
|
|
62
|
+
errorChannel?: string;
|
|
63
|
+
warnChannel?: string;
|
|
64
|
+
};
|
|
65
|
+
elasticKeyVault?: {
|
|
66
|
+
secretToken?: string;
|
|
67
|
+
serverUrl?: string;
|
|
68
|
+
};
|
|
69
|
+
}, {
|
|
70
|
+
teamsChannelWebHook?: {
|
|
71
|
+
errorChannel?: string;
|
|
72
|
+
warnChannel?: string;
|
|
73
|
+
};
|
|
74
|
+
elasticKeyVault?: {
|
|
75
|
+
secretToken?: string;
|
|
76
|
+
serverUrl?: string;
|
|
77
|
+
};
|
|
78
|
+
}>;
|
|
79
|
+
serviceConfig: z.ZodNullable<z.ZodAny>;
|
|
80
|
+
}, "strip", z.ZodTypeAny, {
|
|
81
|
+
telemetry?: {
|
|
82
|
+
teamsChannelWebHook?: {
|
|
83
|
+
errorChannel?: string;
|
|
84
|
+
warnChannel?: string;
|
|
85
|
+
};
|
|
86
|
+
elasticKeyVault?: {
|
|
87
|
+
secretToken?: string;
|
|
88
|
+
serverUrl?: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
serviceConfig?: any;
|
|
92
|
+
}, {
|
|
93
|
+
telemetry?: {
|
|
94
|
+
teamsChannelWebHook?: {
|
|
95
|
+
errorChannel?: string;
|
|
96
|
+
warnChannel?: string;
|
|
97
|
+
};
|
|
98
|
+
elasticKeyVault?: {
|
|
99
|
+
secretToken?: string;
|
|
100
|
+
serverUrl?: string;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
serviceConfig?: any;
|
|
104
|
+
}>;
|
|
105
|
+
/**
|
|
106
|
+
* @description typedef of secret file
|
|
107
|
+
*/
|
|
108
|
+
type SecretFileAppConfig = z.infer<typeof zSecretFileAppConfig>;
|
|
109
|
+
/**
|
|
110
|
+
* @todo migration to single typedef
|
|
111
|
+
*/
|
|
112
|
+
type AppConfig = EnvFileAppConfig & SecretFileAppConfig;
|
|
113
|
+
/**
|
|
114
|
+
* @description configuration carrier (or, instance). We can classified all the configurations into 2 categories:
|
|
115
|
+
* - Environment File App Config: configuration from the environment file (.env) and some other settings
|
|
116
|
+
* - Secret File App Config: loaded from the Azure Key Vault
|
|
117
|
+
*/
|
|
118
|
+
export declare let appConfig: AppConfig;
|
|
119
|
+
/**
|
|
120
|
+
* @todo move to loadConfig since all the environment fields should be loaded from appConfig
|
|
121
|
+
*/
|
|
122
|
+
export declare const environment: Environment;
|
|
123
|
+
/**
|
|
124
|
+
* @description preload for app configuration, once it is been called, the appConfig will be loaded and be freezed
|
|
125
|
+
* @param packagePath - optional, path of `package.json` in order to load app name and version
|
|
126
|
+
*/
|
|
127
|
+
export declare const loadConfig: (packagePath?: string) => Promise<void>;
|
|
128
|
+
export {};
|