skyeye-svc-common-utils 2.0.0-dev0.17 → 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.
Files changed (100) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.js +1 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/azure/cognitiveSearch/QueryType.d.ts +8 -0
  5. package/dist/lib/azure/cognitiveSearch/QueryType.js +13 -0
  6. package/dist/lib/azure/cognitiveSearch/QueryType.js.map +1 -0
  7. package/dist/lib/azure/cognitiveSearch/SearchClient.d.ts +42 -0
  8. package/dist/lib/azure/cognitiveSearch/SearchClient.js +166 -0
  9. package/dist/lib/azure/cognitiveSearch/SearchClient.js.map +1 -0
  10. package/dist/lib/azure/cognitiveSearch/SearchFacets.d.ts +16 -0
  11. package/dist/lib/azure/cognitiveSearch/SearchFacets.js +3 -0
  12. package/dist/lib/azure/cognitiveSearch/SearchFacets.js.map +1 -0
  13. package/dist/lib/azure/cognitiveSearch/SearchFilter.d.ts +68 -0
  14. package/dist/lib/azure/cognitiveSearch/SearchFilter.js +125 -0
  15. package/dist/lib/azure/cognitiveSearch/SearchFilter.js.map +1 -0
  16. package/dist/lib/azure/cognitiveSearch/SearchMode.d.ts +9 -0
  17. package/dist/lib/azure/cognitiveSearch/SearchMode.js +14 -0
  18. package/dist/lib/azure/cognitiveSearch/SearchMode.js.map +1 -0
  19. package/dist/lib/azure/cognitiveSearch/SearchOption.d.ts +88 -0
  20. package/dist/lib/azure/cognitiveSearch/SearchOption.js +104 -0
  21. package/dist/lib/azure/cognitiveSearch/SearchOption.js.map +1 -0
  22. package/dist/lib/azure/cognitiveSearch/SearchOrder.d.ts +9 -0
  23. package/dist/lib/azure/cognitiveSearch/SearchOrder.js +3 -0
  24. package/dist/lib/azure/cognitiveSearch/SearchOrder.js.map +1 -0
  25. package/dist/lib/azure/cognitiveSearch/index.d.ts +7 -0
  26. package/dist/lib/azure/cognitiveSearch/index.js +24 -0
  27. package/dist/lib/azure/cognitiveSearch/index.js.map +1 -0
  28. package/dist/lib/azure/index.d.ts +7 -0
  29. package/dist/lib/azure/index.js +24 -0
  30. package/dist/lib/azure/index.js.map +1 -0
  31. package/dist/lib/fetch/index.d.ts +2 -0
  32. package/dist/lib/fetch/index.js +19 -0
  33. package/dist/lib/fetch/index.js.map +1 -0
  34. package/dist/lib/fetch/sendRequest.d.ts +7 -0
  35. package/dist/lib/fetch/sendRequest.js +25 -0
  36. package/dist/lib/fetch/sendRequest.js.map +1 -0
  37. package/dist/lib/fetch/sendRequest.test.d.ts +1 -0
  38. package/dist/lib/fetch/sendRequest.test.js +27 -0
  39. package/dist/lib/fetch/sendRequest.test.js.map +1 -0
  40. package/dist/lib/fetch/sendRequestWithTimeout.d.ts +9 -0
  41. package/dist/lib/fetch/sendRequestWithTimeout.js +53 -0
  42. package/dist/lib/fetch/sendRequestWithTimeout.js.map +1 -0
  43. package/dist/lib/fetch/sendRequestWithTimeout.test.d.ts +1 -0
  44. package/dist/lib/fetch/sendRequestWithTimeout.test.js +43 -0
  45. package/dist/lib/fetch/sendRequestWithTimeout.test.js.map +1 -0
  46. package/dist/lib/index.d.ts +4 -0
  47. package/dist/lib/index.js +21 -0
  48. package/dist/lib/index.js.map +1 -0
  49. package/dist/lib/logger/index.d.ts +2 -0
  50. package/dist/lib/logger/index.js +19 -0
  51. package/dist/lib/logger/index.js.map +1 -0
  52. package/dist/lib/logger/logger.d.ts +16 -0
  53. package/dist/lib/logger/logger.js +120 -0
  54. package/dist/lib/logger/logger.js.map +1 -0
  55. package/dist/lib/logger/morganLogger.d.ts +4 -0
  56. package/dist/lib/logger/morganLogger.js +27 -0
  57. package/dist/lib/logger/morganLogger.js.map +1 -0
  58. package/dist/lib/teams/LogMessage.d.ts +51 -0
  59. package/dist/lib/teams/LogMessage.js +33 -0
  60. package/dist/lib/teams/LogMessage.js.map +1 -0
  61. package/dist/lib/teams/broadcastLogMessage.d.ts +8 -0
  62. package/dist/lib/teams/broadcastLogMessage.js +81 -0
  63. package/dist/lib/teams/broadcastLogMessage.js.map +1 -0
  64. package/dist/lib/teams/broadcastLogMessage.test.d.ts +1 -0
  65. package/dist/lib/teams/broadcastLogMessage.test.js +25 -0
  66. package/dist/lib/teams/broadcastLogMessage.test.js.map +1 -0
  67. package/dist/lib/teams/index.d.ts +2 -0
  68. package/dist/lib/teams/index.js +19 -0
  69. package/dist/lib/teams/index.js.map +1 -0
  70. package/dist/test/setup-tests.d.ts +0 -0
  71. package/dist/test/setup-tests.js +3 -0
  72. package/dist/test/setup-tests.js.map +1 -0
  73. package/dist/types/ServiceResponse.d.ts +16 -0
  74. package/dist/types/ServiceResponse.js +3 -0
  75. package/dist/types/ServiceResponse.js.map +1 -0
  76. package/dist/types/index.d.ts +1 -0
  77. package/dist/types/index.js +18 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/dist/utils/baseClass/appDataSource.d.ts +7 -0
  80. package/dist/utils/baseClass/appDataSource.js +31 -0
  81. package/dist/utils/baseClass/appDataSource.js.map +1 -0
  82. package/dist/utils/baseClass/baseController.js +8 -8
  83. package/dist/utils/baseClass/baseController.js.map +1 -1
  84. package/dist/utils/index.d.ts +2 -0
  85. package/dist/utils/index.js +19 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/middleware/loadConfig.d.ts +128 -0
  88. package/dist/utils/middleware/loadConfig.js +143 -0
  89. package/dist/utils/middleware/loadConfig.js.map +1 -0
  90. package/dist/utils/middleware/startdbConnection.js +3 -5
  91. package/dist/utils/middleware/startdbConnection.js.map +1 -1
  92. package/package.json +2 -2
  93. package/src/index.ts +1 -2
  94. package/src/utils/baseClass/appDataSource.ts +23 -0
  95. package/src/utils/baseClass/baseController.ts +9 -9
  96. package/dist/utils/baseClass/dataSourceManager.d.ts +0 -11
  97. package/dist/utils/baseClass/dataSourceManager.js +0 -59
  98. package/dist/utils/baseClass/dataSourceManager.js.map +0 -1
  99. package/src/utils/baseClass/dataSourceManager.ts +0 -49
  100. package/src/utils/middleware/startdbConnection.ts +0 -20
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SearchOption = void 0;
4
+ const SearchFilter_1 = require("./SearchFilter");
5
+ const SearchMode_1 = require("./SearchMode");
6
+ /**
7
+ * @classdesc the class is to wrap an option when retrieving the data from
8
+ * @azure/search-documents/query
9
+ * @property searchOptionType - to store the interface of the option, noted that
10
+ * when calling the query, you should use SearchOption.value() instead of using
11
+ * this attribute.
12
+ */
13
+ class SearchOption {
14
+ constructor(searchOptionType) {
15
+ /**
16
+ * @description as an adaptor to transform the type for @azure/search-documents
17
+ * @returns {Object} object which can be accepted by @azure/search-documents
18
+ */
19
+ this.value = () => {
20
+ let value = {};
21
+ value.includeTotalCount = this.searchOptionType.count;
22
+ value.select = this.searchOptionType.select;
23
+ value.skip = this.searchOptionType.skip;
24
+ value.top = this.searchOptionType.top;
25
+ value.searchMode = this.searchOptionType.searchMode;
26
+ value.searchFields = this.searchOptionType.searchFields;
27
+ value.scoringProfile = this.searchOptionType.scoringProfile;
28
+ value.highlightFields = this.searchOptionType.highlightFields;
29
+ value.highlightPreTag = this.searchOptionType.highlightPreTag;
30
+ value.highlightPostTag = this.searchOptionType.highlightPostTag;
31
+ value.queryType = this.searchOptionType.queryType;
32
+ if (!!this.searchOptionType.filter) {
33
+ value.filter = this.composeFilter();
34
+ }
35
+ if (!!this.searchOptionType.select && this.searchOptionType.select.length) {
36
+ value.select = this.searchOptionType.select;
37
+ }
38
+ if (!!this.searchOptionType.orderBy && this.searchOptionType.orderBy.length) {
39
+ value.orderBy = this.composeOrder();
40
+ }
41
+ if (!!this.searchOptionType.facets && this.searchOptionType.facets.length) {
42
+ value.facets = this.composeFacets();
43
+ }
44
+ return value;
45
+ };
46
+ // override the default settings if the value is empty from the given OptionType
47
+ this.searchOptionType = Object.assign(Object.assign({}, SearchOption.defaultSearchOption), searchOptionType);
48
+ }
49
+ /**
50
+ * @description to compose flatten-filter string for @azure/search-documents
51
+ * @returns {string} flatten-filter string
52
+ */
53
+ composeFilter() {
54
+ if (typeof (this.searchOptionType.filter) === 'string') {
55
+ return this.searchOptionType.filter;
56
+ }
57
+ return this.searchOptionType.filterCombinationType === "and" /* CombinationType.and */ ?
58
+ (0, SearchFilter_1.AND)(...this.searchOptionType.filter)
59
+ :
60
+ (0, SearchFilter_1.OR)(...this.searchOptionType.filter);
61
+ }
62
+ /**
63
+ * @description to compose flatten-order string for @azure/search-documents
64
+ * @returns {Array<string>} flatten-order string
65
+ */
66
+ composeOrder() {
67
+ return this.searchOptionType.orderBy.map((s) => `${s.attr} ${s.orderBy}`);
68
+ }
69
+ /**
70
+ * @description to compose flatten-facets string for @azure/search-documents
71
+ * @returns {Array<string>} flatten-facets string
72
+ */
73
+ composeFacets() {
74
+ return this.searchOptionType.facets.map((s) => {
75
+ let res = `${s.attr}`;
76
+ if (s.count !== null && s.count !== undefined) {
77
+ res += `,count:${s.count}`;
78
+ }
79
+ if (!!s.sort) {
80
+ res += `,sort:${s.sort}`;
81
+ }
82
+ if (s.interval !== null && s.interval !== undefined) {
83
+ res += `,interval:${s.interval}`;
84
+ }
85
+ if (!!s.timeoffset) {
86
+ res += `,timeoffset:${s.timeoffset}`;
87
+ }
88
+ return res;
89
+ });
90
+ }
91
+ }
92
+ exports.SearchOption = SearchOption;
93
+ /**
94
+ * @description when initializing a SearchOption, the defaultSearchOption
95
+ * will override the undefined props
96
+ */
97
+ SearchOption.defaultSearchOption = {
98
+ count: false,
99
+ top: 50,
100
+ skip: 0,
101
+ searchMode: SearchMode_1.SearchMode.all,
102
+ filterCombinationType: "and" /* CombinationType.and */
103
+ };
104
+ //# sourceMappingURL=SearchOption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchOption.js","sourceRoot":"","sources":["../../../../src/lib/azure/cognitiveSearch/SearchOption.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description SearchOrder as a type to depict the orderBy props
3
+ * @property {string} attr - the search field which is used to be sorted
4
+ * @property {'desc' | 'asc'} orderBy - descent or ascent
5
+ */
6
+ export type SearchOrder = {
7
+ attr: string;
8
+ orderBy: 'desc' | 'asc';
9
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SearchOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchOrder.js","sourceRoot":"","sources":["../../../../src/lib/azure/cognitiveSearch/SearchOrder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export * from './QueryType';
2
+ export * from './SearchClient';
3
+ export * from './SearchFacets';
4
+ export * from './SearchFilter';
5
+ export * from './SearchMode';
6
+ export * from './SearchOption';
7
+ export * from './SearchOrder';
@@ -0,0 +1,24 @@
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("./QueryType"), exports);
18
+ __exportStar(require("./SearchClient"), exports);
19
+ __exportStar(require("./SearchFacets"), exports);
20
+ __exportStar(require("./SearchFilter"), exports);
21
+ __exportStar(require("./SearchMode"), exports);
22
+ __exportStar(require("./SearchOption"), exports);
23
+ __exportStar(require("./SearchOrder"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/azure/cognitiveSearch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,iDAA+B;AAC/B,iDAA+B;AAC/B,+CAA6B;AAC7B,iDAA+B;AAC/B,gDAA8B"}
@@ -0,0 +1,7 @@
1
+ export * from './cognitiveSearch';
2
+ export * from './azureBlobStorage';
3
+ export * from './azureKeyVault';
4
+ export * from './azureServiceBusClient';
5
+ export * from './azureServiceBusQueue';
6
+ export * from './azureStorageQueue';
7
+ export * from './azureTableStorage';
@@ -0,0 +1,24 @@
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("./cognitiveSearch"), exports);
18
+ __exportStar(require("./azureBlobStorage"), exports);
19
+ __exportStar(require("./azureKeyVault"), exports);
20
+ __exportStar(require("./azureServiceBusClient"), exports);
21
+ __exportStar(require("./azureServiceBusQueue"), exports);
22
+ __exportStar(require("./azureStorageQueue"), exports);
23
+ __exportStar(require("./azureTableStorage"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/azure/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,kDAAgC;AAChC,0DAAwC;AACxC,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC"}
@@ -0,0 +1,2 @@
1
+ export * from './sendRequest';
2
+ export * from './sendRequestWithTimeout';
@@ -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("./sendRequest"), exports);
18
+ __exportStar(require("./sendRequestWithTimeout"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/fetch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2DAAyC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description wrapper of node-fetch
3
+ * @param {string} url - request endpoint
4
+ * @param {any} options - fetch options
5
+ * @returns {any} response
6
+ */
7
+ export declare const sendRequest: (url: string, options: any) => Promise<import("node-fetch").Response>;
@@ -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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.sendRequest = void 0;
16
+ const node_fetch_1 = __importDefault(require("node-fetch"));
17
+ /**
18
+ * @description wrapper of node-fetch
19
+ * @param {string} url - request endpoint
20
+ * @param {any} options - fetch options
21
+ * @returns {any} response
22
+ */
23
+ const sendRequest = (url, options) => __awaiter(void 0, void 0, void 0, function* () { return yield (0, node_fetch_1.default)(url, options); });
24
+ exports.sendRequest = sendRequest;
25
+ //# sourceMappingURL=sendRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendRequest.js","sourceRoot":"","sources":["../../../src/lib/fetch/sendRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA+B;AAG/B;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAO,GAAW,EAAE,OAAY,EAAE,EAAE,kDAAC,OAAA,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE,OAAO,CAAC,CAAA,GAAA,CAAC;AAA7E,QAAA,WAAW,eAAkE"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
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 sendRequest_1 = require("./sendRequest");
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('/fetch/sendRequest()', () => {
18
+ test(`By given google's homepage, sendRequest() should response 200 status code by GET request`, () => __awaiter(void 0, void 0, void 0, function* () {
19
+ const resp = yield (0, sendRequest_1.sendRequest)('https://www.google.com', { method: 'GET' });
20
+ expect(resp.status).toEqual(200);
21
+ }));
22
+ test(`By given google's homepage, sendRequest() should response 405 status code by POST request`, () => __awaiter(void 0, void 0, void 0, function* () {
23
+ const resp = yield (0, sendRequest_1.sendRequest)('https://www.google.com', { method: 'POST' });
24
+ expect(resp.status).toEqual(405);
25
+ }));
26
+ });
27
+ //# sourceMappingURL=sendRequest.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendRequest.test.js","sourceRoot":"","sources":["../../../src/lib/fetch/sendRequest.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+CAA4C;AAC5C,uCAAsC;AACtC,kEAA+D;AAG/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,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,0FAA0F,EAAE,GAAS,EAAE;QACxG,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAW,EAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,2FAA2F,EAAE,GAAS,EAAE;QACzG,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAW,EAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description send a request which will automatically abort within a given time
3
+ * if the request is not response yet
4
+ * @param {string} url - url of request endpoint
5
+ * @param {any} options - fetch option
6
+ * @param {number} abortWithinMs - automatically abort after given millisecond
7
+ * @returns {any} response
8
+ */
9
+ export declare function sendRequestWithTimeout(url: string, options: any, abortWithinMs?: number): Promise<any>;
@@ -0,0 +1,53 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.sendRequestWithTimeout = void 0;
16
+ const node_fetch_1 = __importDefault(require("node-fetch"));
17
+ const abort_controller_1 = require("@azure/abort-controller");
18
+ const appConst_1 = require("../../utils/appConst");
19
+ /**
20
+ * @description to store the current processing request, it should only be called
21
+ * by function sendRequestWithTimeout
22
+ */
23
+ const abortedSet = new Set();
24
+ /**
25
+ * @description send a request which will automatically abort within a given time
26
+ * if the request is not response yet
27
+ * @param {string} url - url of request endpoint
28
+ * @param {any} options - fetch option
29
+ * @param {number} abortWithinMs - automatically abort after given millisecond
30
+ * @returns {any} response
31
+ */
32
+ function sendRequestWithTimeout(url, options, abortWithinMs = appConst_1.thirdPartyRegulation.requestLimitationMsec) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const controller = new abort_controller_1.AbortController();
35
+ const timeout = setTimeout(() => {
36
+ abortedSet.add(url);
37
+ controller.abort();
38
+ }, abortWithinMs);
39
+ try {
40
+ const response = yield (0, node_fetch_1.default)(url, Object.assign({ signal: controller.signal }, options));
41
+ clearTimeout(timeout);
42
+ return response;
43
+ }
44
+ catch (err) {
45
+ if (abortedSet.has(url) && err.name === 'AbortError') {
46
+ abortedSet.delete(url);
47
+ }
48
+ throw err;
49
+ }
50
+ });
51
+ }
52
+ exports.sendRequestWithTimeout = sendRequestWithTimeout;
53
+ //# sourceMappingURL=sendRequestWithTimeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendRequestWithTimeout.js","sourceRoot":"","sources":["../../../src/lib/fetch/sendRequestWithTimeout.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA+B;AAC/B,8DAA0D;AAC1D,mDAA4D;AAG5D;;;GAGG;AACH,MAAM,UAAU,GAAgB,IAAI,GAAG,EAAU,CAAC;AAElD;;;;;;;GAOG;AACH,SAAsB,sBAAsB,CACxC,GAAW,EACX,OAAY,EACZ,gBAAwB,+BAAoB,CAAC,qBAAqB;;QAElE,MAAM,UAAU,GAAG,IAAI,kCAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,EAAE,aAAa,CAAC,CAAC;QAClB,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,kBAAI,MAAM,EAAE,UAAU,CAAC,MAAM,IAAK,OAAO,EAAE,CAAC;YAC5E,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,QAAQ,CAAC;SACnB;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAK,GAAa,CAAC,IAAI,KAAK,YAAY,EAAE;gBAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAAE;YAC5F,MAAM,GAAG,CAAC;SACb;IACL,CAAC;CAAA;AAlBD,wDAkBC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
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 sendRequestWithTimeout_1 = require("./sendRequestWithTimeout");
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('/fetch/sendRequestWithTimeout()', () => {
18
+ test(`By given google's homepage, request should response 200 status code by GET request within 1000 ms`, () => __awaiter(void 0, void 0, void 0, function* () {
19
+ const resp = yield (0, sendRequestWithTimeout_1.sendRequestWithTimeout)('http://www.google.com', { method: 'GET' }, 1000);
20
+ expect(resp.status).toEqual(200);
21
+ }));
22
+ test(`By given google's homepage, request should be aborted by GET request within 1 ms`, () => __awaiter(void 0, void 0, void 0, function* () {
23
+ try {
24
+ yield (0, sendRequestWithTimeout_1.sendRequestWithTimeout)('http://www.google.com', { method: 'GET' }, 1);
25
+ }
26
+ catch (err) {
27
+ expect(err.name).toEqual('AbortError');
28
+ }
29
+ }));
30
+ test(`By given google's homepage, request should response 405 status code by POST request within 1000 ms`, () => __awaiter(void 0, void 0, void 0, function* () {
31
+ const resp = yield (0, sendRequestWithTimeout_1.sendRequestWithTimeout)('https://www.google.com', { method: 'POST' }, 1000);
32
+ expect(resp.status).toEqual(405);
33
+ }));
34
+ test(`By given google's homepage, request should be aborted by POST request within 1 ms`, () => __awaiter(void 0, void 0, void 0, function* () {
35
+ try {
36
+ yield (0, sendRequestWithTimeout_1.sendRequestWithTimeout)('http://www.google.com', { method: 'POST' }, 1);
37
+ }
38
+ catch (err) {
39
+ expect(err.name).toEqual('AbortError');
40
+ }
41
+ }));
42
+ });
43
+ //# sourceMappingURL=sendRequestWithTimeout.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendRequestWithTimeout.test.js","sourceRoot":"","sources":["../../../src/lib/fetch/sendRequestWithTimeout.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qEAAkE;AAClE,uCAAsC;AACtC,kEAA+D;AAG/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,iCAAiC,EAAE,GAAG,EAAE;IAC7C,IAAI,CAAC,mGAAmG,EAAE,GAAS,EAAE;QACjH,MAAM,IAAI,GAAG,MAAM,IAAA,+CAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5F,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,kFAAkF,EAAE,GAAS,EAAE;QAChG,IAAI;YACA,MAAM,IAAA,+CAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;SAC/E;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAE,GAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACrD;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,oGAAoG,EAAE,GAAS,EAAE;QAClH,MAAM,IAAI,GAAG,MAAM,IAAA,+CAAsB,EAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,mFAAmF,EAAE,GAAS,EAAE;QACjG,IAAI;YACA,MAAM,IAAA,+CAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;SAChF;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAE,GAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACrD;IACL,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './azure';
2
+ export * from './fetch';
3
+ export * from './logger';
4
+ export * from './teams';
@@ -0,0 +1,21 @@
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("./azure"), exports);
18
+ __exportStar(require("./fetch"), exports);
19
+ __exportStar(require("./logger"), exports);
20
+ __exportStar(require("./teams"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from './logger';
2
+ export * from './morganLogger';
@@ -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("./logger"), exports);
18
+ __exportStar(require("./morganLogger"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/logger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,iDAA+B"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @description only be used in the override native `console` with function `verbose`
3
+ */
4
+ interface ConsoleExtension {
5
+ verbose: Function;
6
+ }
7
+ /**
8
+ * @description custom logger will be controlled by two environment values:
9
+ * - `NODE_ENV`: The environment decides the default log level
10
+ * - `LOG_LEVEL`: if there's any pre-defined LOG_LEVEL, it will then override
11
+ * the default log level. Noted that you may expect in some services, i.e. Azure Function,
12
+ * you may not able to use the local storage. Set LOG_LEVEL = `disabled` can close
13
+ * custom logger.
14
+ */
15
+ export declare const logger: import("winston").Logger | (Console & ConsoleExtension);
16
+ export {};
@@ -0,0 +1,120 @@
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
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.logger = void 0;
27
+ const winston_1 = require("winston");
28
+ const fs_1 = __importDefault(require("fs"));
29
+ const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
30
+ const appConst_1 = require("../../utils/appConst");
31
+ const teams_1 = require("../teams");
32
+ /**
33
+ * @description make `verbose()` as an alias of `console.debug()`
34
+ */
35
+ const customConsole = Object.assign(Object.assign({}, console), { verbose: (message, ...optionalParams) => {
36
+ console.debug(message, ...optionalParams);
37
+ } });
38
+ /**
39
+ * @description custom logger will be controlled by two environment values:
40
+ * - `NODE_ENV`: The environment decides the default log level
41
+ * - `LOG_LEVEL`: if there's any pre-defined LOG_LEVEL, it will then override
42
+ * the default log level. Noted that you may expect in some services, i.e. Azure Function,
43
+ * you may not able to use the local storage. Set LOG_LEVEL = `disabled` can close
44
+ * custom logger.
45
+ */
46
+ exports.logger = (() => {
47
+ // since const environment value is loaded in compile time, we fetch directly here
48
+ const environment = appConst_1.zEnvironment.safeParse(process.env.NODE_ENV).success ?
49
+ process.env.NODE_ENV : appConst_1.zEnvironment.enum.development;
50
+ const customLogLevel = process.env.LOG_LEVEL;
51
+ // Use default console if the LOG_LEVEL is specified as `disabled`
52
+ if (customLogLevel === teams_1.zLogLevel.enum.disabled) {
53
+ return customConsole;
54
+ }
55
+ fs_1.default.existsSync(appConst_1.loggerSettings.path) || fs_1.default.mkdirSync(appConst_1.loggerSettings.path, { recursive: true });
56
+ const logLevel = (() => {
57
+ // override the Log level if there's non-empty env
58
+ if (teams_1.zLogLevel.safeParse(customLogLevel).success) {
59
+ return customLogLevel;
60
+ }
61
+ switch (environment) {
62
+ case appConst_1.zEnvironment.enum.test:
63
+ case appConst_1.zEnvironment.enum.dev:
64
+ case appConst_1.zEnvironment.enum.development:
65
+ return teams_1.zLogLevel.enum.verbose;
66
+ case appConst_1.zEnvironment.enum.preview:
67
+ case appConst_1.zEnvironment.enum.staging:
68
+ case appConst_1.zEnvironment.enum.beta:
69
+ case appConst_1.zEnvironment.enum.production:
70
+ return teams_1.zLogLevel.enum.info;
71
+ }
72
+ })();
73
+ const self = (0, winston_1.createLogger)({
74
+ level: logLevel,
75
+ format: winston_1.format.combine(winston_1.format.json(), winston_1.format.timestamp(), winston_1.format.printf((_a) => {
76
+ var { timestamp, level, message } = _a, metadata = __rest(_a, ["timestamp", "level", "message"]);
77
+ return JSON.stringify(Object.assign({ timestamp,
78
+ level,
79
+ message }, (metadata || {})));
80
+ })),
81
+ transports: [
82
+ new winston_daily_rotate_file_1.default({
83
+ filename: `${appConst_1.loggerSettings.path}backend-error-%DATE%.log`,
84
+ level: 'error',
85
+ datePattern: 'YYYY-MM-DD'
86
+ }),
87
+ new winston_daily_rotate_file_1.default({
88
+ filename: `${appConst_1.loggerSettings.path}backend-combined-%DATE%.log`,
89
+ datePattern: 'YYYY-MM-DD'
90
+ })
91
+ ]
92
+ });
93
+ // if (environment !== zEnvironment.enum.production) {
94
+ self.add(new winston_1.transports.Console({ format: winston_1.format.combine(winston_1.format.json(), winston_1.format.timestamp(), winston_1.format.printf((_a) => {
95
+ var { timestamp, level, message } = _a, metadata = __rest(_a, ["timestamp", "level", "message"]);
96
+ return JSON.stringify(Object.assign({ timestamp,
97
+ level,
98
+ message }, (metadata || {})));
99
+ })) }));
100
+ // }
101
+ // we broadcast the messages on Teams only if the environment is not `test` nor `development`.
102
+ if (appConst_1.loggerSettings.teamsChannelDisabled && environment !== appConst_1.zEnvironment.enum.test && environment !== appConst_1.zEnvironment.enum.development) {
103
+ self.on('data', (context) => __awaiter(void 0, void 0, void 0, function* () {
104
+ switch (context.level) {
105
+ case teams_1.zLogLevel.enum.verbose:
106
+ case teams_1.zLogLevel.enum.info:
107
+ return;
108
+ case teams_1.zLogLevel.enum.warn:
109
+ (0, teams_1.broadcastLogMessage)(teams_1.zLogLevel.enum.warn, context.message.startsWith('\t') ? context.message.substring(1) : context.message);
110
+ return;
111
+ case teams_1.zLogLevel.enum.error:
112
+ (0, teams_1.broadcastLogMessage)(teams_1.zLogLevel.enum.error, context.message.startsWith('\t') ? context.message.substring(1) : context.message);
113
+ return;
114
+ }
115
+ ;
116
+ }));
117
+ }
118
+ return self;
119
+ })();
120
+ //# sourceMappingURL=logger.js.map